[
  {
    "path": ".bowerrc",
    "content": "{\n  \"directory\": \"lib\",\n  \"scripts\": {\n    \"postinstall\": \"unify update\",\n    \"preuninstall\": \"unify update -un %\"\n  }\n}"
  },
  {
    "path": ".gitignore",
    "content": "[Oo]bj\r\n[Bb]in\r\n*.suo\r\n*.user\r\n*.dll\r\n*.xap\r\n.idea\r\nnode_modules\r\nbower_components/\r\nlib/\r\nsrc/_Version.ts\r\ntest/lib/\r\ntest/.build/\r\ntest/**/*.js\r\ntest/**/*.js.map\r\ntest/runner.js\r\ntest/runner.js.map\r\ntestsite/lib/\r\ntestsite/.build/\r\nstress/.build/\r\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: node_js\r\nnode_js:\r\n  - \"4\"\r\nbefore_install:\r\n  - npm install -g gulp\r\n  - npm install -g bower\r\n  - npm install -g fayde-unify\r\ninstall: npm install\r\nbefore_script: gulp reset\r\nscript:\r\n  - gulp version\r\n  - gulp\r\n  - gulp test"
  },
  {
    "path": "CHANGELOG.md",
    "content": "## 0.19.19 (Mar 15, 2017)\n\nBUG FIXES\n\n  * Safely synchronizing Border properties with minerva.\n  * Add missing Closed visual transition to ToolTip.\n  * Safely detaching animations if animation storage is non-existent.\n\n## 0.19.18 (Sep 05, 2016)\n\nBUG FIXES\n\n  * transform: Null checks for null raw transforms in TransformGroup. ([#262](https://github.com/wsick/Fayde/pull/262))\n  * brush: Ensuring gradient brushes do not crash with unspecified Color Stop. ([#261](https://github.com/wsick/Fayde/pull/261))\n  * scroll: Fixing touch-based scrolling ([#266](https://github.com/wsick/Fayde/pull/266))\n  * scroll: Adding missing touch event handlers ([#263](https://github.com/wsick/Fayde/pull/263) [#264](https://github.com/wsick/Fayde/pull/264) [#265](https://github.com/wsick/Fayde/pull/265))\n\n## 0.19.17 (Mar 10, 2016)\n\nBUG FIXES\n\n  * scroll: Fixing page down/page up scrolling crash. [GH-250]\n\n## 0.19.16 (Feb 20, 2016)\n\nBUG FIXES\n\n  * scroll: Resetting scrolling if ItemsSource changes. [GH-247]\n\n## 0.19.15 (Feb 6, 2016)\n\nINTERNAL\n\n  * build: Building with new scaffold\n\n## 0.19.14 (Feb 2, 2016)\n\nSAFETY\n\n  * markup: Throw XamlParseException from xaml loader for xml parsererror. [GH-236]\n\n## 0.19.13 (Jan 14, 2016)\n\nFEATURES\n\n  * controls: Add Watermark to ComboBox. [GH-229]\n  * brush: Add conversion from SolidColorBrush to Color. [GH-232] \n\nSAFETY\n  \n  * brush: Force gradient color stops into [0.0, 1.0] range. [GH-232]\n\n## 0.19.12 (Jan 4, 2016)\n\nSAFETY\n\n  * markup: Report FrameworkTemplate syntax errors. [GH-227]\n\n## 0.19.11 (Dec 21, 2015)\n\nFEATURES\n\n  * navigation: ViewModelProvider can redirect to another route. [GH-215]\n\n## 0.19.10 (Dec 14, 2015)\n\nBUG FIXES\n\n  * compatibility: Scrollbars appearing in Edge, Firefox. [GH-202]\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\r\n\r\nCopyright (c) 2014 BSick7\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n"
  },
  {
    "path": "README.md",
    "content": "## Fayde\n\n[![Build Status](https://travis-ci.org/wsick/Fayde.svg?branch=master)](https://travis-ci.org/wsick/Fayde)\n[![Bower](https://img.shields.io/bower/v/fayde.svg)](http://bower.io/search/?q=fayde)\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/wsick/Fayde?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\nInspired by Silverlight; XAML engine using Javascript and rendering to the HTML5 Canvas.\n\nPlease check out the [wiki](https://github.com/wsick/Fayde/wiki) for more information.\n\nDependencies\n=======\n\n* nodejs\n* gulp\n* bower\n* yeoman (used for scaffolding new applications)\n\nHow to use\n=======\n\nInstall the Fayde application generator for yeoman.  Then use yeoman to generate a new application.\n\n    $ npm install -g generator-fayde\n    $ mkdir <project directory name>\n    $ cd <project directory name>\n    $ yo fayde\n\nContributing\n=======\n\n### Prerequisites\n\n```\n$ npm install -g gulp\n$ npm install -g bower\n$ npm install -g fayde-unify\n```\n\n### Setup\n\n```\n$ git clone git@github.com:wsick/fayde.git\n$ cd fayde\n$ npm install\n$ gulp reset # cleans bower libs, bower installs, then symlinks to test and stress bootstrappers\n```\n\n### Unit Tests\n\n```\n$ gulp test\n```\n\n### Stress Tests\nLaunches default browser with runnable stress tests.\n```\n$ gulp stress\n```\n"
  },
  {
    "path": "Tools/ThirdParty/WatiN/WatiN.Core.XML",
    "content": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>WatiN.Core</name>\r\n    </assembly>\r\n    <members>\r\n        <member name=\"T:WatiN.Core.Exceptions.WatiNException\">\r\n            <summary>\r\n            Base class for Exceptions thrown by WatiN.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.ElementNotFoundException\">\r\n            <summary>\r\n            Thrown if the searched for element can't be found.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Exceptions.ElementExceptionBase.Element\">\r\n            <summary>\r\n            Element around which the exception is being thrown.\r\n            Be advised that this property may be null.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.ProximityTextConstraint\">\r\n            <summary>\r\n            Use this class to find a form field by text on the page that is 'nearby' the field.\r\n            This constraint class is kindly donated by Seven Simple Machines.\r\n            </summary>\r\n            <example>\r\n            This shows how to find a text field near the text \"User name:\".\r\n            <code>\r\n            ie.TextField(Find.Near(\"User name:\")).TypeText(\"jsmythe\")\r\n            </code>\r\n            </example>\r\n            <remarks>\r\n            <para>In building web applications, often the form elements and the text used to label them is \r\n            not intrinsically connected (with a &lt;label&gt; tag for instance). In addition the HTML\r\n            that is rendered in ASP.NET can have changing id/name at each change to the ASPX page. \r\n            This makes it hard to find form elements and keep the test cases effective without a lot\r\n            of re-coding and fixing.</para>\r\n            <para>As a human we can look at a web page and (usually) know what information should go into\r\n            a form field based on the label. This is because we visually associate nearby text to the\r\n            field. This class uses the same concept by measuring proximity of the text to field elements\r\n            and giving a \"best guess\" to the element desired.</para>\r\n            <para>Some caveats:</para>\r\n            <list type=\"number\">\r\n            <item>Currently this class assume left-to-right layout. A future enhancement could look at \r\n            the current CultureInfo or support setting a culture on the constructor.</item>\r\n            <item>This will <em>always</em> find a form element (if any exist on the page) for the given text\r\n            if the text can be found. This isn't exactly what we as humans do. A future enhancement could\r\n            change the algorithm to identify the closest text that appears to label the field for all fields.</item>\r\n            <item>This only supports &lt;input&gt; and &lt;textarea&gt; elements (text fields, check box, \r\n            radio button, etc.)</item>\r\n            <item>The text to look for must be only text - it may not contain HTML elements. If it does,\r\n            the search method will throw an exception to warn you.</item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.Constraint\">\r\n            <summary>\r\n            Describes a constraint that determines whether an object satisfies a given property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Constraints may maintain state across multiple match attempts so as to implement\r\n            rules such as finding the Nth match.  The constraint itself should remain immutable.\r\n            </para>\r\n            <para>\r\n            Constraints can be combined using &amp;&amp;, ||, and ! operators.\r\n            </para>\r\n            <para>\r\n            Constraints can also be printed to a string using the <see cref=\"M:WatiN.Core.Constraints.Constraint.ToString\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            If you want to find a Button by it's English or Dutch value this example shows you how to use\r\n            the Or method to do this:\r\n            </para>\r\n            <code> \r\n            IE ie = new IE(\"www.yourwebsite.com/yourpage.htm\");\r\n            \r\n            Button myButton = ie.Button(Find.ByValue(\"Cancel\").Or(Find.ByValue(\"Annuleren\")));\r\n            </code>\r\n            <para>\r\n            You can also use the | or || operators, resulting in a bit more readable code.\r\n            </para>\r\n            <code> \r\n            IE ie = new IE(\"www.yourwebsite.com/yourpage.htm\");\r\n            \r\n            Button myButton = ie.Button(Find.ByValue(\"Cancel\") || Find.ByValue(\"Annuleren\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.Matches(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <summary>\r\n            Returns true if the constraint matches an object described by an attribute bag.\r\n            </summary>\r\n            <param name=\"attributeBag\">The attribute bag</param>\r\n            <param name=\"context\">The constraint matching context</param>\r\n            <returns>True if the constraint matches</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"attributeBag\"/> or <paramref name=\"context\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.op_BitwiseAnd(WatiN.Core.Constraints.Constraint,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Combines two contraints to produce a new constraint that is satisfied only when\r\n            both constraints are satisfied.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The operation is short-circuiting: if the first constraint is not satisfied for\r\n            a given value then the second constraint is not evaluated.\r\n            </para>\r\n            <para>\r\n            This makes the Find.ByName() &amp; Find.By() syntax possible and is needed for the &amp;&amp; operator.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"first\">The first constraint</param>\r\n            <param name=\"second\">The second constraint</param>\r\n            <returns>The combined constraint</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"first\"/> or <paramref name=\"second\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.op_BitwiseOr(WatiN.Core.Constraints.Constraint,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Combines two contraints to produce a new constraint that is satisfied only when\r\n            either (or both) constraint is satisfied.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The operation is short-circuiting: if the first constraint is satisfied for\r\n            a given value then the second constraint is not evaluated.\r\n            </para>\r\n            <para>\r\n            This makes the Find.ByName() | Find.By() syntax possible and is needed for the || operator.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"first\">The first constraint</param>\r\n            <param name=\"second\">The second constraint</param>\r\n            <returns>The combined constraint</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"first\"/> or <paramref name=\"second\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.op_LogicalNot(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Returns a new constraint that evaluates to the opposite value of the specified constraint.\r\n            </summary>\r\n            <remarks>\r\n            This makes the ! Find.ByName() syntax possible.\r\n            </remarks>\r\n            <param name=\"constraint\">The constraint</param>\r\n            <returns>The inverse constraint</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"constraint\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.op_True(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Syntax sugar to make the Find.ByName() &amp;&amp; Find.By() syntax possible.\r\n            </summary>\r\n            <param name=\"constraint\">The constraint</param>\r\n            <returns>Always false</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.op_False(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Syntax sugar to make the Find.ByName() || Find.By() syntax possible.\r\n            </summary>\r\n            <param name=\"constraint\">The constraint</param>\r\n            <returns>Always false</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.And(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Combines this constraint with another one to produce a new constraint that is satisfied\r\n            only when both constraints are satisfied.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The operation is short-circuiting: if the first constraint is not satisfied for\r\n            a given value then the second constraint is not evaluated.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"constraint\">The other constraint</param>\r\n            <returns>The combined constraint</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"constraint\"/> is null</exception>\r\n            <seealso cref=\"M:WatiN.Core.Constraints.Constraint.Or(WatiN.Core.Constraints.Constraint)\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.Or(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Combines this constraint with another one to produce a new constraint that is satisfied only when\r\n            either (or both) constraint is satisfied.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The operation is short-circuiting: if the first constraint is satisfied for\r\n            a given value then the second constraint is not evaluated.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"constraint\">The other constraint</param>\r\n            <returns>The combined constraint</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"constraint\"/> is null</exception>\r\n            <seealso cref=\"M:WatiN.Core.Constraints.Constraint.And(WatiN.Core.Constraints.Constraint)\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.Not\">\r\n            <summary>\r\n            Returns a new constraint that evaluates to the opposite value of this constraint.\r\n            </summary>\r\n            <returns>The inverse constraint</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.ToString\">\r\n            <summary>\r\n            Returns a human-readable description of the constraint.\r\n            </summary>\r\n            <returns>The description</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <summary>\r\n            Writes a human-readable description of the constraint to a text writer.\r\n            </summary>\r\n            <param name=\"writer\">The text writer for the description, not null</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <summary>\r\n            Returns true if the constraint matches an object described by an attribute bag.\r\n            </summary>\r\n            <param name=\"attributeBag\">The attribute bag, not null</param>\r\n            <param name=\"context\">The constraint matching context, not null</param>\r\n            <returns>True if the constraint matches</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.EnterMatch\">\r\n            <summary>\r\n            Tracks when a constraint's Match method has been entered by the current thread.\r\n            </summary>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.ReEntryException\">Thrown if reentrance has been detected</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.Constraint.ExitMatch\">\r\n            <summary>\r\n            Tracks when a constraint's Match method has been exited by the current thread.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ProximityTextConstraint.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new promixity constraint.\r\n            </summary>\r\n            <param name=\"labelText\">The text that represents the label for the form element.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"labelText\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ProximityTextConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ProximityTextConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ProximityTextConstraint.ProximityCache.CalculateSquaredDistance(System.Int32,System.Int32,System.Int32,System.Int32)\">\r\n            <summary>\r\n            Quick method to calculate squared distance between two points.\r\n            </summary>\r\n            <param name=\"x1\">X-coordinate of the first point</param>\r\n            <param name=\"y1\">Y-coordinate of the first point</param>\r\n            <param name=\"x2\">X-coordinate of the second point</param>\r\n            <param name=\"y2\">Y-coordinate of the second point</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ProximityTextConstraint.ProximityCache.DistanceBetweenRectangles(System.Drawing.Rectangle,System.Drawing.Rectangle)\">\r\n            <summary>\r\n            Returns the shortest distance between two rectangles.\r\n            </summary>\r\n            <param name=\"r1\">The first rectangle</param>\r\n            <param name=\"r2\">The seconed rectangle</param>\r\n            <returns>The shoutest distance between the nearest faces or vetices</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElement.GetAttributeValue(System.String)\">\r\n            <summary>\r\n            This methode can be used if the attribute isn't available as a property of\r\n            Element or a subclass of Element.\r\n            </summary>\r\n            <param name=\"attributeName\">The attribute name. This could be different then named in\r\n            the HTML. It should be the name of the property exposed by the element DOM object.</param>\r\n            <returns>The value of the attribute if available; otherwise <c>null</c> is returned.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElement.Select\">\r\n            <summary>\r\n            Should fire the (on)Select event on the element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElement.SubmitForm\">\r\n            <summary>\r\n            Called when to submit the form.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElement.SetFileUploadFile(WatiN.Core.DialogHandlers.DialogWatcher,System.String)\">\r\n            <summary>\r\n            Called when the file upload dialog should be filled in\r\n            </summary>\r\n            <param name=\"dialogWatcher\">To inject a dialog handler into to handle the file upload dialog.</param>\r\n            <param name=\"fileName\">The file name to enter into the dialog filename field.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElement.WaitUntilReady\">\r\n            <summary>\r\n            Waits until the element is fully loaded in the DOM and/or ready to be used.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElement.GetElementBounds\">\r\n            <summary>\r\n            Gets the bounds of the element.\r\n            </summary>\r\n            <returns>The element bounds in screen coordinates</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElement.GetJavaScriptElementReference\">\r\n            <summary>\r\n            Gets the java script element reference to this element.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.Children\">\r\n            <summary>\r\n            Gets a collection consisting of the immediate children of this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.AllDescendants\">\r\n            <summary>\r\n            Gets a collection consisting of all descendants of this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.TableRows\">\r\n            <summary>\r\n            Gets a collection consisting of the immediate rows within a TABLE or TBODY element.\r\n            </summary>\r\n            <exception cref=\"T:System.InvalidOperationException\">Thrown if applied to an element of the wrong type</exception>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.TableBodies\">\r\n            <summary>\r\n            Gets a collection consisting of the immediate tbodies within a TABLE element.\r\n            </summary>\r\n            <exception cref=\"T:System.InvalidOperationException\">Thrown if applied to an element of the wrong type</exception>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.TableCells\">\r\n            <summary>\r\n            Gets a collection consisting of the immediate cells within a TR element.\r\n            </summary>\r\n            <exception cref=\"T:System.InvalidOperationException\">Thrown if applied to an element of the wrong type</exception>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.Options\">\r\n            <summary>\r\n            Gets a collection consisting of the options within a SELECT element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.TextAfter\">\r\n            <summary>\r\n            Returns the text displayed after this element when it's wrapped\r\n            in a Label element; otherwise it returns <c>null</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.TextBefore\">\r\n            <summary>\r\n            Returns the text displayed before this element when it's wrapped\r\n            in a Label element; otherwise it returns <c>null</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.NextSibling\">\r\n            <summary>\r\n            Gets the next sibling of this element in the Dom of the HTML page.\r\n            </summary>\r\n            <value>The next sibling.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.PreviousSibling\">\r\n            <summary>\r\n            Gets the previous sibling of this element in the Dom of the HTML page.\r\n            </summary>\r\n            <value>The previous sibling.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeElement.Parent\">\r\n            <summary>\r\n            Gets the parent element of this element.\r\n            If the parent type is known you can cast it to that type.\r\n            </summary>\r\n            <value>The parent.</value>\r\n            <example>\r\n            The following example shows you how to use the parent property.\r\n            Assume your web page contains a bit of html that looks something\r\n            like this:\r\n            \r\n            div\r\n              a id=\"watinlink\" href=\"http://watin.sourceforge.net\" /\r\n              a href=\"http://sourceforge.net/projects/watin\" /\r\n            /div\r\n            div\r\n              a id=\"watinfixturelink\" href=\"http://watinfixture.sourceforge.net\" /\r\n              a href=\"http://sourceforge.net/projects/watinfixture\" /\r\n            /div\r\n            Now you want to click on the second link of the watin project. Using the \r\n            parent property the code to do this would be:\r\n            \r\n            <code>\r\n            Div watinDiv = (Div) ie.Link(\"watinlink\").Parent;\r\n            watinDiv.Links[1].Click();\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.JSElement.UsePropertyInsteadOfAttribute\">\r\n            <summary>\r\n            List of html attributes that have to be retrieved as properties in order to get the correct value.\r\n            I.e. for options myOption.getAttribute(\"selected\"); returns nothing if it's selected. \r\n            However  myOption.selected returns true.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.JSElement.WatiNAttributeMap\">\r\n            <summary>\r\n            Mappings from attributnames used by WatiN to attribute/property names used by FireFox\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.JSElement.SetPropertyTransformations\">\r\n            <summary>\r\n            Mappings from attributnames used by WatiN to attribute/property names used by FireFox\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElement.GetProperty(System.String)\">\r\n            <summary>\r\n            Gets the property.\r\n            </summary>\r\n            <param name=\"propertyName\">Name of the property.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElement.SetProperty(System.String,System.String)\">\r\n            <summary>\r\n            Sets the property.\r\n            </summary>\r\n            <param name=\"propertyName\">Name of the property.</param>\r\n            <param name=\"value\">The value.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElement.ExecuteMethod(System.String)\">\r\n            <summary>\r\n            Executes a method with no parameters.\r\n            </summary>\r\n            <param name=\"methodName\">Name of the method to execute.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElement.GetElementByProperty(System.String)\">\r\n            <summary>\r\n            Gets the element by property.\r\n            </summary>\r\n            <param name=\"propertyName\">Name of the property.</param>\r\n            <returns>Returns the element that is returned by the specified property</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElement.GetElementBounds\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElement.GetJavaScriptElementReference\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElement.InnerHtmlToInnerText(System.String)\">\r\n            <summary>\r\n            Makes innerHtml inner text (IE) look a like. It comes close but it seems not to cover all\r\n            conversions cause comparing browser.body.innertext between a IE and FireFox instances will \r\n            certainly fail on newlines and maybe some spaces.\r\n            </summary>\r\n            <param name=\"innerHtml\">The value.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElement.ExecuteEvent(System.String,System.Collections.Specialized.NameValueCollection,System.Boolean)\">\r\n            <summary>\r\n            Executes the event.\r\n            </summary>\r\n            <param name=\"eventName\">Name of the event to fire.</param>\r\n            <param name=\"eventProperties\"></param>\r\n            <param name=\"WaitForEventToComplete\"></param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElement.Pin\">\r\n            <summary>\r\n            This changes/pins the java script variable name <see cref=\"P:WatiN.Core.Native.JSElement.ElementReference\"/> which is used to \r\n            execute commands on FireFox. \r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.JSElement.ClientPort\">\r\n            <summary>\r\n            Gets the FireFox client port.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.JSElement.ElementReference\">\r\n            <summary>\r\n            Gets the name of a variable that stores a reference to the element within FireFox.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.JSElement.TextAfter\">\r\n            <summary>\r\n            This not supported in FireFox\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.JSElement.TextBefore\">\r\n            <summary>\r\n            This not supported in FireFox\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Area\">\r\n            <summary>\r\n            Represents an area of an image map.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Element`1\">\r\n            <summary>\r\n            This is the base class for all other element types in this project, like\r\n            Button, Checkbox etc.. It provides common functionality to all these elements\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Element\">\r\n            <summary>\r\n            This is the base class for all other element types in this project, like\r\n            Button, Checkbox etc.. It provides common functionality to all these elements\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Component\">\r\n            <summary>\r\n            Describes a WatiN component such as an element, document, browser or custom control\r\n            which may be located using various constraints.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Interfaces.IAttributeBag\">\r\n            <summary>\r\n            Provides values for attributes used during constraint matching.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IAttributeBag.GetAttributeValue(System.String)\">\r\n            <summary>\r\n            Gets the value of an attribute that can be used for constraint evaluation.\r\n            </summary>\r\n            <param name=\"attributeName\">The name of the attribute</param>\r\n            <returns>The attribute's associated value or null if none</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"attributeName\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IAttributeBag.GetAdapter``1\">\r\n            <summary>\r\n            Gets an adapter for the object to a particular type, or null if the object\r\n            cannot be adapted to that type.\r\n            </summary>\r\n            <typeparam name=\"T\">The adapter type</typeparam>\r\n            <returns>The adapter, or null if the object cannot be adapted as requested</returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.IHasDescription\">\r\n            <summary>\r\n            An interface for an object that supports user-specified descriptive text.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.IHasDescription.Description\">\r\n            <summary>\r\n            Gets or sets the description of the object, or null if none.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Component.Matches(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Returns true if the component matches the specified constraint.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method uses a new constraint context each time.  Note that doing so will\r\n            prevent stateful constraints such as <see cref=\"T:WatiN.Core.Constraints.IndexConstraint\"/> from working correctly.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"constraint\">The constraint to match</param>\r\n            <returns>True if the component matches the constraint</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"constraint\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Component.Matches(WatiN.Core.Constraints.Constraint,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <summary>\r\n            Returns true if the component matches the specified constraint.\r\n            </summary>\r\n            <param name=\"constraint\">The constraint to match</param>\r\n            <param name=\"context\">The constraint context</param>\r\n            <returns>True if the component matches the constraint</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"constraint\"/> or\r\n            <paramref name=\"context\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Component.GetAttributeValue(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Component.GetAdapter``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Component.GetValue(System.String)\">\r\n            <summary>\r\n            Gets the value of an attribute that can be used for constraint evaluation.\r\n            </summary>\r\n            <param name=\"attributeName\">The name of the attribute</param>\r\n            <returns>The attribute's associated value or null if none</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Component.MatchesImpl(WatiN.Core.Constraints.Constraint,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <summary>\r\n            Returns true if the component matches the specified constraint.\r\n            </summary>\r\n            <param name=\"constraint\">The constraint to match, not null</param>\r\n            <param name=\"context\">The constraint context, not null</param>\r\n            <returns>True if the component matches the constraint</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Component.GetAttributeValueImpl(System.String)\">\r\n            <summary>\r\n            Gets the value of an attribute that can be used for constraint evaluation.\r\n            </summary>\r\n            <param name=\"attributeName\">The name of the attribute, not null</param>\r\n            <returns>The attribute's associated value or null if none</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Component.Description\">\r\n            <summary>\r\n            Gets or sets the description of the component, or null if none.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            This constructor is mainly used from within WatiN.\r\n            </summary>\r\n            <param name=\"domContainer\"><see cref=\"P:WatiN.Core.Element.DomContainer\"/> this element is located in</param>\r\n            <param name=\"nativeElement\">The element</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            This constructor is mainly used from within WatiN.\r\n            </summary>\r\n            <param name=\"domContainer\"><see cref=\"P:WatiN.Core.Element.DomContainer\"/> this element is located in</param>\r\n            <param name=\"elementFinder\">The element finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.GetJavascriptElementReference\">\r\n            <summary>\r\n            Gets the javascript element reference for this <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.As``1\">\r\n            <summary>\r\n            Wraps an element as a control of a particular type.\r\n            </summary>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The control</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.GetAttributeValueImpl(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.ToString\">\r\n            <summary>\r\n            Returns a <see cref=\"T:System.String\"/> that represents the current <see cref=\"T:System.Object\"/>.\r\n            </summary>\r\n            <returns>\r\n            A <see cref=\"T:System.String\"/> that represents the current <see cref=\"T:System.Object\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.DefaultToString\">\r\n            <summary>\r\n            Obtains a default description of the element to be used when <see cref=\"P:WatiN.Core.IHasDescription.Description\"/> is null.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Click\">\r\n            <summary>\r\n            Clicks this element and waits till the event is completely finished (page is loaded \r\n            and ready) .\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.ClickNoWait\">\r\n            <summary>\r\n            Clicks this instance and returns immediately. Use this method when you want to continue without waiting\r\n            for the click event to be finished. Mostly used when a \r\n            HTMLDialog or javascript popup is displayed after clicking the element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.ClickImpl(System.Boolean)\">\r\n            <summary>\r\n            Handles the implementation of Click and ClickNoWait\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Focus\">\r\n            <summary>\r\n            Gives the (input) focus to this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.DoubleClick\">\r\n            <summary>\r\n            Doubleclicks this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyDown\">\r\n            <summary>\r\n            Does a keydown on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyDownNoWait\">\r\n            <summary>\r\n            Does a keydown on this element and does not wait for the page to finish loading.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyDown(System.Char)\">\r\n            <summary>\r\n            Does a keydown on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyDownNoWait(System.Char)\">\r\n            <summary>\r\n            Does a keydown on this element and does not wait for the page to finish loading.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyPress\">\r\n            <summary>\r\n            Does a keypress on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyPressNoWait\">\r\n            <summary>\r\n            Does a keypress on this element and does not wait for the page to finish loading.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyPress(System.Char)\">\r\n            <summary>\r\n            Does a keypress on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyPressNoWait(System.Char)\">\r\n            <summary>\r\n            Does a keypress on this element and does not wait for the page to finish loading.\r\n            </summary>\r\n            <param name=\"character\">The character.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyUp\">\r\n            <summary>\r\n            Does a keyup on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyUpNoWait\">\r\n            <summary>\r\n            Does a keyup on this element and does not wait for the page to finish loading.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyUp(System.Char)\">\r\n            <summary>\r\n            Does a keyup on this element.\r\n            </summary>\r\n            <param name=\"character\">The character.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.KeyUpNoWait(System.Char)\">\r\n            <summary>\r\n            Does a keyup on this element and does not wait for the page to finish loading.\r\n            </summary>\r\n            <param name=\"character\">The character.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Blur\">\r\n            <summary>\r\n            Fires the blur event on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Change\">\r\n            <summary>\r\n            Fires the change event on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.MouseEnter\">\r\n            <summary>\r\n            Fires the mouseenter event on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.MouseDown\">\r\n            <summary>\r\n            Fires the mousedown event on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.MouseUp\">\r\n            <summary>\r\n            Fires the mouseup event on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.FireEvent(System.String)\">\r\n            <summary>\r\n            Fires the specified <paramref name=\"eventName\"/> on this element\r\n            and waits for it to complete.\r\n            </summary>\r\n            <param name=\"eventName\">Name of the event.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.FireEvent(System.String,System.Collections.Specialized.NameValueCollection)\">\r\n            <summary>\r\n            Fires the event. The <paramref name=\"eventProperties\" /> collection\r\n            can be used to set values of the event object in the browser to \r\n            full fill the needs of javascript attached to the event handler.\r\n            </summary>\r\n            <param name=\"eventName\">Name of the event.</param>\r\n            <param name=\"eventProperties\">The event properties that need to be set.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.FireEventNoWait(System.String)\">\r\n            <summary>\r\n            Only fires the specified <paramref name=\"eventName\"/> on this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.FireEventNoWait(System.String,System.Collections.Specialized.NameValueCollection)\">\r\n            <summary>\r\n            Only fires the event but doesn't wait for the action to complete. \r\n            The <paramref name=\"eventProperties\" /> collection\r\n            can be used to set values of the event object in the browser to \r\n            full fill the needs of javascript attached to the event handler.\r\n            </summary>\r\n            <param name=\"eventName\">Name of the event.</param>\r\n            <param name=\"eventProperties\">The event properties that need to be set.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Flash\">\r\n            <summary>\r\n            Flashes this element 5 times.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Flash(System.Int32)\">\r\n            <summary>\r\n            Flashes this element the specified number of flashes.\r\n            </summary>\r\n            <param name=\"numberOfFlashes\">The number of flashes.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Highlight(System.Boolean)\">\r\n            <summary>\r\n            Highlights this element.\r\n            </summary>\r\n            <param name=\"doHighlight\">if set to <c>true</c> the element is highlighted; otherwise it's not.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntilExists\">\r\n            <summary>\r\n            Waits until the element exists or will time out after 30 seconds.\r\n            To change the default time out, set <see cref=\"P:WatiN.Core.Settings.WaitUntilExistsTimeOut\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntilExists(System.Int32)\">\r\n            <summary>\r\n            Waits until the element exists. Wait will time out after <paramref name=\"timeout\"/> seconds.\r\n            </summary>\r\n            <param name=\"timeout\">The timeout in seconds.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntilRemoved\">\r\n            <summary>\r\n            Waits until the element no longer exists or will time out after 30 seconds.\r\n            To change the default time out, set <see cref=\"P:WatiN.Core.Settings.WaitUntilExistsTimeOut\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntilRemoved(System.Int32)\">\r\n            <summary>\r\n            Waits until the element no longer exists. Wait will time out after <paramref name=\"timeout\"/> seconds.\r\n            </summary>\r\n            <param name=\"timeout\">The timeout in seconds.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntil(System.String,System.String)\">\r\n            <summary>\r\n            Waits until the given <paramref name=\"attributename\"/> matches <paramref name=\"expectedValue\"/>.\r\n            Wait will time out after <see cref=\"P:WatiN.Core.Settings.WaitUntilExistsTimeOut\"/> seconds.\r\n            </summary>\r\n            <param name=\"attributename\">The attributename.</param>\r\n            <param name=\"expectedValue\">The expected value.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntil(System.String,System.String,System.Int32)\">\r\n            <summary>\r\n            Waits until the given <paramref name=\"attributename\" /> matches <paramref name=\"expectedValue\" />.\r\n            Wait will time out after <paramref name=\"timeout\"/> seconds.\r\n            </summary>\r\n            <param name=\"attributename\">The attributename.</param>\r\n            <param name=\"expectedValue\">The expected value.</param>\r\n            <param name=\"timeout\">The timeout.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntil(System.String,System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Waits until the given <paramref name=\"attributename\"/> matches <paramref name=\"expectedValue\"/>.\r\n            Wait will time out after <see cref=\"P:WatiN.Core.Settings.WaitUntilExistsTimeOut\"/> seconds.\r\n            </summary>\r\n            <param name=\"attributename\">The attributename.</param>\r\n            <param name=\"expectedValue\">The expected value.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntil(System.String,System.Text.RegularExpressions.Regex,System.Int32)\">\r\n            <summary>\r\n            Waits until the given <paramref name=\"attributename\" /> matches <paramref name=\"expectedValue\" />.\r\n            Wait will time out after <paramref name=\"timeout\"/> seconds.\r\n            </summary>\r\n            <param name=\"attributename\">The attributename.</param>\r\n            <param name=\"expectedValue\">The expected value.</param>\r\n            <param name=\"timeout\">The timeout.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntil(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Waits until the given <paramref name=\"constraint\"/> matches.\r\n            Wait will time out after <see cref=\"P:WatiN.Core.Settings.WaitUntilExistsTimeOut\"/> seconds.\r\n            </summary>\r\n            <param name=\"constraint\">The Constraint.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntil``1(System.Predicate{``0})\">\r\n            <summary>\r\n            Waits until the given <paramref name=\"predicate\"/> matches.\r\n            Wait will time out after <see cref=\"P:WatiN.Core.Settings.WaitUntilExistsTimeOut\"/> seconds.\r\n            </summary>\r\n            <param name=\"predicate\">The Constraint.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitUntil(WatiN.Core.Constraints.Constraint,System.Int32)\">\r\n            <summary>\r\n            Waits until the given <paramref name=\"constraint\" /> matches.\r\n            </summary>\r\n            <param name=\"constraint\">The Constraint.</param>\r\n            <param name=\"timeout\">The timeout in seconds.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Refresh\">\r\n            <summary>\r\n            Call this method to make sure the cached reference to the html element on the web page\r\n            is refreshed on the next call you make to a property or method of this element.\r\n            When you want to check if an element still <see cref=\"P:WatiN.Core.Element.Exists\"/> you don't need \r\n            to call the <see cref=\"M:WatiN.Core.Element.Refresh\"/> method since <see cref=\"P:WatiN.Core.Element.Exists\"/> calls it internally.\r\n            </summary>\r\n            <example>\r\n            The following code shows in which situation you can make use of the refresh mode.\r\n            The code selects an option of a selectlist and then checks if this option\r\n            is selected.\r\n            <code>\r\n            SelectList select = ie.SelectList(id);\r\n            \r\n            // Lets assume calling Select causes a postback, \r\n            // which would invalidate the reference to the html selectlist.\r\n            select.Select(val);\r\n            \r\n            // Refresh will clear the cached reference to the html selectlist.\r\n            select.Refresh(); \r\n            \r\n            // B.t.w. executing:\r\n            // select = ie.SelectList(id); \r\n            // would have the same effect as calling: \r\n            // select.Refresh().\r\n            \r\n            // Assert against a freshly fetched reference to the html selectlist.\r\n            Assert.AreEqual(val, select.SelectedItem);\r\n            </code>\r\n            If you need to use refresh on an element retrieved from a collection of elements you \r\n            need to rewrite your code a bit.\r\n            <code>\r\n            SelectList select = ie.Spans[1].SelectList(id);\r\n            select.Refresh(); // this will not have the expected effect\r\n            </code>\r\n            Rewrite your code as follows:\r\n            <code>\r\n            SelectList select = ie.Span(Find.ByIndex(1)).SelectList(id);\r\n            select.Refresh(); // this will have the expected effect\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.FindNativeElement\">\r\n            <summary>\r\n            Finds the native element.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method caches the native element unless its reference becomes invalid\r\n            in which case it will search for the element again.\r\n            </para>\r\n            <para>\r\n            Unlike the <see cref=\"P:WatiN.Core.Element.NativeElement\"/> property, this method does not wait\r\n            for the native element to be found.  If the native element is not found then\r\n            this method returns null.\r\n            </para>\r\n            </remarks>\r\n            <returns>The native element, or null if not found.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.RefreshNativeElement\">\r\n            <summary>\r\n            Clears the cached native element and finds it again.\r\n            </summary>\r\n            <returns>The native element, or null if not found.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.ClearCachedNativeElement\">\r\n            <summary>\r\n            Clears the cached native element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.GetCachedNativeElement\">\r\n            <summary>\r\n            Gets the cached native element immediately.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.WaitForComplete\">\r\n            <summary>\r\n            Waits till the page load is complete. This should only be used on rare occasions\r\n            because WatiN calls this function for you when it handles events (like Click etc..)\r\n            To change the default time out, set <see cref=\"P:WatiN.Core.Settings.WaitForCompleteTimeOut\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Ancestor``1\">\r\n             <summary>\r\n             Gets the closest ancestor of the specified type.\r\n             </summary>\r\n             <returns>An instance of the ancestorType. If no ancestor of ancestorType is found <code>null</code> is returned.</returns>\r\n            <example>\r\n             The following example returns the Div a textfield is located in.\r\n             <code>\r\n             IE ie = new IE(\"http://www.example.com\");\r\n             Div mainDiv = ie.TextField(\"firstname\").Ancestor&lt;Div&gt;;\r\n             </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Ancestor``1(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets the closest ancestor of the specified Type and constraint.\r\n            </summary>\r\n            <param name=\"findBy\">The constraint to match with.</param>\r\n            <returns>\r\n            An instance of the ancestorType. If no ancestor of ancestorType is found <code>null</code> is returned.\r\n            </returns>\r\n            <example>\r\n            The following example returns the Div a textfield is located in.\r\n            <code>\r\n            IE ie = new IE(\"http://www.example.com\");\r\n            Div mainDiv = ie.TextField(\"firstname\").Ancestor&lt;Div&gt;(Find.ByText(\"First name\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Ancestor``1(System.Predicate{``0})\">\r\n            <summary>\r\n            Gets the closest ancestor of the specified Type and constraint.\r\n            </summary>\r\n            <param name=\"predicate\">The constraint to match with.</param>\r\n            <returns>\r\n            An instance of the ancestorType. If no ancestor of ancestorType is found <code>null</code> is returned.\r\n            </returns>\r\n            <example>\r\n            The following example returns the Div a textfield is located in.\r\n            <code>\r\n            IE ie = new IE(\"http://www.example.com\");\r\n            Div mainDiv = ie.TextField(\"firstname\").Ancestor&lt;Div&gt;(div => div.Text == \"First name\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Ancestor(System.Type)\">\r\n             <summary>\r\n             Gets the closest ancestor of the specified type.\r\n             </summary>\r\n             <param name=\"ancestorType\">The ancestorType.</param>\r\n             <returns>An instance of the ancestorType. If no ancestor of ancestorType is found <code>null</code> is returned.</returns>\r\n            <example>\r\n             The following example returns the Div a textfield is located in.\r\n             <code>\r\n             IE ie = new IE(\"http://www.example.com\");\r\n             Div mainDiv = ie.TextField(\"firstname\").Ancestor(typeof(Div));\r\n             </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Ancestor(WatiN.Core.Constraints.Constraint)\">\r\n             <summary>\r\n             Gets the closest ancestor of the specified AttributConstraint.\r\n             </summary>\r\n             <param name=\"findBy\">The AttributConstraint to match with.</param>\r\n             <returns>An Element. If no ancestor of ancestorType is found <code>null</code> is returned.</returns>\r\n            <example>\r\n             The following example returns the Div a textfield is located in.\r\n             <code>\r\n             IE ie = new IE(\"http://www.example.com\");\r\n             Div mainDiv = ie.TextField(\"firstname\").Ancestor(Find.ByText(\"First name\"));\r\n             </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Ancestor(System.Type,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets the closest ancestor of the specified Type and Constraint.\r\n            </summary>\r\n            <param name=\"ancestorType\">Type of the ancestor.</param>\r\n            <param name=\"findBy\">The Constraint to match with.</param>\r\n            <returns>\r\n            An instance of the ancestorType. If no ancestor of ancestorType is found <code>null</code> is returned.\r\n            </returns>\r\n            <example>\r\n            The following example returns the Div a textfield is located in.\r\n            <code>\r\n            IE ie = new IE(\"http://www.example.com\");\r\n            Div mainDiv = ie.TextField(\"firstname\").Ancestor(typeof(Div), Find.ByText(\"First name\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Ancestor(System.String,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets the closest ancestor of the specified Tag and AttributConstraint.\r\n            </summary>\r\n            <param name=\"tagName\">The tag of the ancestor.</param>\r\n            <param name=\"findBy\">The AttributConstraint to match with.</param>\r\n            <returns>\r\n            <returns>An typed instance of the element matching the Tag and the AttributeConstriant.\r\n            If no specific type is available, an element of type ElementContainer will be returned. \r\n            If there is no ancestor that matches Tag and Constraint, <code>null</code> is returned.</returns>\r\n            </returns>\r\n            <example>\r\n            The following example returns the Div a textfield is located in.\r\n            <code>\r\n            IE ie = new IE(\"http://www.example.com\");\r\n            Div mainDiv = ie.TextField(\"firstname\").Ancestor(\"Div\", Find.ByText(\"First name\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Ancestor(System.String,System.Predicate{WatiN.Core.Element})\">\r\n            <summary>\r\n            Gets the closest ancestor of the specified Tag and AttributConstraint.\r\n            </summary>\r\n            <param name=\"tagName\">The tag of the ancestor.</param>\r\n            <param name=\"predicate\">The constraint to match with.</param>\r\n            <returns>\r\n            <returns>An typed instance of the element matching the Tag and the AttributeConstriant.\r\n            If no specific type is available, an element of type ElementContainer will be returned. \r\n            If there is no ancestor that matches Tag and Constraint, <code>null</code> is returned.</returns>\r\n            </returns>\r\n            <example>\r\n            The following example returns the Div a textfield is located in.\r\n            <code>\r\n            IE ie = new IE(\"http://www.example.com\");\r\n            Div mainDiv = ie.TextField(\"firstname\").Ancestor(\"Div\", Find.ByText(\"First name\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.Ancestor(System.String)\">\r\n             <summary>\r\n             Gets the closest ancestor of the specified Tag.\r\n             </summary>\r\n             <param name=\"tagName\">The tag of the ancestor.</param>\r\n             <returns>An typed instance of the element matching the Tag. If no specific type is\r\n             available, an element of type ElementContainer will be returned. \r\n             If there is no ancestor that matches Tag, <code>null</code> is returned.</returns>\r\n            <example>\r\n             The following example returns the Div a textfield is located in.\r\n             <code>\r\n             IE ie = new IE(\"http://www.example.com\");\r\n             Div mainDiv = ie.TextField(\"firstname\").Ancestor(\"Div\");\r\n             </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element.CreateElementFinder``1(WatiN.Core.NativeElementCollectionFactory,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Creates an element finder for elements within specialized collections.\r\n            </summary>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"nativeElementCollection\">The native element collection</param>\r\n            <param name=\"findBy\">The constraint, or null if none</param>\r\n            <returns>The native element finder</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"nativeElementCollection\"/> is null</exception>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.ClassName\">\r\n            <summary>\r\n            Gets the name of the stylesheet class assigned to this ellement (if any).\r\n            </summary>\r\n            <value>The name of the class.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.Complete\">\r\n            <summary>\r\n            Gets a value indicating whether this <see cref=\"T:WatiN.Core.Element\"/> is completely loaded.\r\n            </summary>\r\n            <value><c>true</c> if complete; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.Enabled\">\r\n            <summary>\r\n            Gets a value indicating whether this <see cref=\"T:WatiN.Core.Element\"/> is enabled.\r\n            </summary>\r\n            <value><c>true</c> if enabled; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.Id\">\r\n            <summary>\r\n            Gets (or sets) the id of this element as specified in the HTML.\r\n            </summary>\r\n            <value>The id.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.Name\">\r\n            <summary>\r\n            Gets (or sets) the name of this element as specified in the HTML.\r\n            </summary>\r\n            <value>The name</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.IdOrName\">\r\n            <summary>\r\n            Gets the id or name (id preferred) of this element as specified in the HTML.\r\n            </summary>\r\n            <value>The id.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.Text\">\r\n            <summary>\r\n            Gets the innertext of this element (and the innertext of all the elements contained\r\n            in this element).\r\n            </summary>\r\n            <value>The innertext.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.TextAfter\">\r\n            <summary>\r\n            Returns the text displayed after this element when it's wrapped\r\n            in a Label element; otherwise it returns <c>null</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.TextBefore\">\r\n            <summary>\r\n            Returns the text displayed before this element when it's wrapped\r\n            in a Label element; otherwise it returns <c>null</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.InnerHtml\">\r\n            <summary>\r\n            Gets the inner HTML of this element.\r\n            </summary>\r\n            <value>The inner HTML.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.OuterText\">\r\n            <summary>\r\n            Gets the outer text.\r\n            </summary>\r\n            <value>The outer text.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.OuterHtml\">\r\n            <summary>\r\n            Gets the outer HTML.\r\n            </summary>\r\n            <value>The outer HTML.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.TagName\">\r\n            <summary>\r\n            Gets the tag name of this element.\r\n            </summary>\r\n            <value>The name of the tag.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.Title\">\r\n            <summary>\r\n            Gets the title.\r\n            </summary>\r\n            <value>The title.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.NextSibling\">\r\n            <summary>\r\n            Gets the next sibling of this element in the Dom of the HTML page.\r\n            </summary>\r\n            <value>The next sibling.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.PreviousSibling\">\r\n            <summary>\r\n            Gets the previous sibling of this element in the Dom of the HTML page.\r\n            </summary>\r\n            <value>The previous sibling.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.Parent\">\r\n            <summary>\r\n            Gets the parent element of this element.\r\n            If the parent type is known you can cast it to that type.\r\n            </summary>\r\n            <value>The parent.</value>\r\n            <example>\r\n            The following example shows you how to use the parent property.\r\n            Assume your web page contains a bit of html that looks something\r\n            like this:\r\n            \r\n            div\r\n              a id=\"watinlink\" href=\"http://watin.sourceforge.net\" /\r\n              a href=\"http://sourceforge.net/projects/watin\" /\r\n            /div\r\n            div\r\n              a id=\"watinfixturelink\" href=\"http://watinfixture.sourceforge.net\" /\r\n              a href=\"http://sourceforge.net/projects/watinfixture\" /\r\n            /div\r\n            Now you want to click on the second link of the watin project. Using the \r\n            parent property the code to do this would be:\r\n            \r\n            <code>\r\n            Div watinDiv = (Div) ie.Link(\"watinlink\").Parent;\r\n            watinDiv.Links[1].Click();\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.DomContainer\">\r\n            <summary>\r\n            Gets the DomContainer for this element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.NativeElement\">\r\n            <summary>\r\n            Gets a reference to the wrapper which incapsulates a native element in the browser.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Element.Exists\">\r\n            <summary>\r\n            Gets a value indicating whether this <see cref=\"T:WatiN.Core.Element\"/> exists.\r\n            </summary>\r\n            <value><c>true</c> if exists; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element`1.WaitUntil(System.Predicate{`0})\">\r\n            <summary>\r\n            Waits until the given expression is <c>true</c>.\r\n            Wait will time out after <see cref=\"P:WatiN.Core.Settings.WaitUntilExistsTimeOut\"/> seconds.\r\n            </summary>\r\n            <param name=\"predicate\">The expression to use.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Element`1.WaitUntil(System.Predicate{`0},System.Int32)\">\r\n            <summary>\r\n            Waits until the given expression is <c>true</c>.\r\n            </summary>\r\n            <param name=\"predicate\">The expression to use.</param>\r\n            <param name=\"timeout\">The timeout.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Area.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Area\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The <see cref=\"T:WatiN.Core.DomContainer\"/> the element is in.</param>\r\n            <param name=\"element\">The element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Area.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Area\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The <see cref=\"T:WatiN.Core.DomContainer\"/> the element is in.</param>\r\n            <param name=\"elementFinder\">The element finder.</param>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Area.Alt\">\r\n            <summary>\r\n            Gets the alt-text of the area element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Area.Url\">\r\n            <summary>\r\n            Gets the target url of the area element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Area.Coords\">\r\n            <summary>\r\n            Gets the coordinates the area element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Area.Shape\">\r\n            <summary>\r\n            Gets the shape of the area element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.DialogHandlers.RefreshWarningDialogHandler\">\r\n            <summary>\r\n            This class handles the Refresh Warning dialog and does press\r\n            the retry or cancel button when the dialog shows up.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IDialogHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Handles the dialog and returns true when handled with succes\r\n            </summary>\r\n            <param name=\"window\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window,System.IntPtr)\">\r\n            <summary>\r\n            Indicates wheter the dialoghandler can handle the given dialog window\r\n            </summary>\r\n            <param name=\"window\"></param>\r\n            <param name=\"mainWindowHwnd\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.BaseDialogHandler.Equals(System.Object)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.BaseDialogHandler.GetHashCode\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.BaseDialogHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.BaseDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window,System.IntPtr)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.RefreshWarningDialogHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.RefreshWarningDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether this instance can handle the specified window by checking <see cref=\"P:WatiN.Core.Native.Windows.Window.StyleInHex\"/>\r\n            equals \"94C801C5\".\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if this instance [can handle dialog] the specified window; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.NoneConstraint\">\r\n            <summary>\r\n            A constraint that matches nothing.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.NoneConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.NoneConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Constraints.NoneConstraint.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the None constraint.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.PredicateConstraint`1\">\r\n            <summary>\r\n            A predicate-based constraint.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.PredicateConstraint`1.#ctor(System.Predicate{`0})\">\r\n            <summary>\r\n            Creates a predicate constraint.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"predicate\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.PredicateConstraint`1.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.PredicateConstraint`1.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Logging.BaseLogWriter\">\r\n            <summary>\r\n            This logger class can be used as a base class for your specific log class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Interfaces.ILogWriter\">\r\n            <summary>\r\n            Implement this interface if you create your own Logger class.\r\n            For example <c>Logger.LogWriter = new MyLogWriter</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.FindByAttribute\">\r\n            <summary>\r\n            Finds a component based on its attributes.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If multiple attributes are specified, then all of them must jointly match the component.\r\n            If no attributes are specified, then the first component of the required type will be used.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <code><![CDATA[\r\n            public class HomePage : Page\r\n            {\r\n                [FindBy(Name = \"signIn\")]\r\n                [Description(\"Sign in button.\")]\r\n                public Button SignInButton;\r\n            }\r\n            ]]></code>\r\n            </example>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ComponentFinderAttribute\">\r\n            <summary>\r\n            Abstract base class for attributes that are used to find components based on a\r\n            declarative description.\r\n            </summary>\r\n            <seealso cref=\"T:WatiN.Core.FindByAttribute\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ComponentFinderAttribute.FindComponent(System.Type,WatiN.Core.IElementContainer)\">\r\n            <summary>\r\n            Finds a component of the specified type within a container.\r\n            </summary>\r\n            <param name=\"componentType\">The component type, not null.</param>\r\n            <param name=\"container\">The container, not null.</param>\r\n            <returns>The component that was found, or null if not found.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FindByAttribute.#ctor\">\r\n            <summary>\r\n            Finds a component based on its attributes.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FindByAttribute.FindComponent(System.Type,WatiN.Core.IElementContainer)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FindByAttribute.GetConstraint\">\r\n            <summary>\r\n            Gets the constraint expressed by this attribute.\r\n            </summary>\r\n            <returns>The constraint</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Alt\">\r\n            <summary>\r\n            Gets or sets the alt text to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByAlt(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.AltRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the alt text to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByAlt(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Class\">\r\n            <summary>\r\n            Gets or sets the (CSS) class name to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByClass(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.ClassRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the (CSS) class name to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByClass(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.For\">\r\n            <summary>\r\n            Gets or sets the id of the linked label element to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByFor(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.ForRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the id of the linked label to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByFor(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Id\">\r\n            <summary>\r\n            Gets or sets the element id to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ById(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.IdRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the element id to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ById(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Name\">\r\n            <summary>\r\n            Gets or sets the element name to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByName(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.NameRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the element name to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByName(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Text\">\r\n            <summary>\r\n            Gets or sets the (inner) text to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByText(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.TextRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the (inner) text to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByText(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Url\">\r\n            <summary>\r\n            Gets or sets the Url to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByUrl(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.UrlRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the Url to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByUrl(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Title\">\r\n            <summary>\r\n            Gets or sets the title to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByTitle(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.TitleRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the title to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByTitle(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Value\">\r\n            <summary>\r\n            Gets or sets the value to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByValue(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.ValueRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the value to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByValue(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Src\">\r\n            <summary>\r\n            Gets or sets the source Url to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.BySrc(System.String)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.SrcRegex\">\r\n            <summary>\r\n            Gets or sets the regular expression for the source Url to find.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.BySrc(System.Text.RegularExpressions.Regex)\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FindByAttribute.Index\">\r\n            <summary>\r\n            Gets or sets the zero-based index of the element to find, or -1 if not constrained by index.\r\n            </summary>\r\n            <seealso cref=\"M:WatiN.Core.Find.ByIndex(System.Int32)\"/>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.DescriptionAttribute\">\r\n            <summary>\r\n            Associates a description with a component.\r\n            </summary>\r\n            <example>\r\n            <code><![CDATA[\r\n            public class HomePage : Page\r\n            {\r\n                [FindBy(Name = \"signIn\")]\r\n                [Description(\"Sign in button.\")]\r\n                public Button SignInButton;\r\n            }\r\n            ]]></code>\r\n            </example>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ComponentDecoratorAttribute\">\r\n            <summary>\r\n            Abstract base class for attributes that decorate components based on declarative metadata.\r\n            </summary>\r\n            <seealso cref=\"T:WatiN.Core.DescriptionAttribute\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ComponentDecoratorAttribute.Decorate(WatiN.Core.Component)\">\r\n            <summary>\r\n            Decorates the component.\r\n            </summary>\r\n            <param name=\"component\">The component, not null</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DescriptionAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Associates a description with a component.\r\n            </summary>\r\n            <param name=\"description\">The description.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"description\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DescriptionAttribute.Decorate(WatiN.Core.Component)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DescriptionAttribute.Description\">\r\n            <summary>\r\n            Gets the description.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.TextField\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML input element of type \r\n            text password textarea hidden and for a HTML textarea element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TextField.DefaultToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TextField.Text\">\r\n            <summary>\r\n            Returns the same as the Value property\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.FileUploadCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.FileUpload\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.BaseElementCollection`2\">\r\n            <summary>\r\n            This class is mainly used by Watin internally as the base class for all \r\n            of the element collections.\r\n            </summary>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <typeparam name=\"TCollection\">The derived collection type</typeparam>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.BaseComponentCollection`2\">\r\n            <summary>\r\n            Represents a read-only list of components that can be enumerated, searched and filtered.\r\n            </summary>\r\n            <typeparam name=\"TComponent\">The component type</typeparam>\r\n            <typeparam name=\"TCollection\">The derived collection type</typeparam>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Interfaces.IComponentCollection`1\">\r\n            <summary>\r\n            Represents a read-only list of components that can be enumerated, searched and filtered.\r\n            </summary>\r\n            <typeparam name=\"T\">The component type</typeparam>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IComponentCollection`1.Exists(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Returns true if there exists an element within the collection\r\n            that matches the given constraint.\r\n            </summary>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <returns>True if a matching element exists</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IComponentCollection`1.Exists(System.Predicate{`0})\">\r\n            <summary>\r\n            Returns true if there exists an element within the collection\r\n            that matches the given predicate.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate to match</param>\r\n            <returns>True if a matching element exists</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IComponentCollection`1.First\">\r\n            <summary>\r\n            Gets the first element in the collection.\r\n            </summary>\r\n            <returns>The first element</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IComponentCollection`1.First(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets the first element in the collection that matches the given constraint.\r\n            </summary>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <returns>True if a matching element exists</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IComponentCollection`1.First(System.Predicate{`0})\">\r\n            <summary>\r\n            Gets the first element in the collection that matches the given predicate.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate to match</param>\r\n            <returns>True if a matching element exists</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IComponentCollection`1.Filter(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Returns a filtered view of the collection consisting only of the elements that\r\n            match the given constraint.\r\n            </summary>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <returns>The filtered element collection</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IComponentCollection`1.Filter(System.Predicate{`0})\">\r\n            <summary>\r\n            Returns a filtered view of the collection consisting only of the elements that\r\n            match the given predicate.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate to match</param>\r\n            <returns>The filtered element collection</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.#ctor\">\r\n            <summary>\r\n            Creates a base collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.CopyTo(`0[],System.Int32)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.Exists(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.Exists(System.Predicate{`0})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.First\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.First(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.First(System.Predicate{`0})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.Filter(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Returned a filtered view of the collection consisting only of the components that\r\n            match the given constraint.\r\n            </summary>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <returns>The filtered component collection</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.Filter(System.Predicate{`0})\">\r\n            <summary>\r\n            Returns a filtered view of the collection consisting only of the components that\r\n            match the given predicate.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate to match</param>\r\n            <returns>The filtered component collection</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.GetEnumerator\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.CreateFilteredCollection(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Creates a filtered instance of the collection.\r\n            </summary>\r\n            <param name=\"findBy\">The constraint, not null</param>\r\n            <returns>The component collection</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.GetComponents\">\r\n            <summary>\r\n            Gets the components of the collection.\r\n            </summary>\r\n            <returns>The collection components</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseComponentCollection`2.CreateConstraintFromPredicate(System.Predicate{`0})\">\r\n            <summary>\r\n            Creates a new constraint from a given component-based predicate.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate</param>\r\n            <returns>The constraint</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.BaseComponentCollection`2.Count\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.BaseComponentCollection`2.Item(System.Int32)\">\r\n            <summary>\r\n            Gets the component at the specified index in the collection.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index</param>\r\n            <returns>The component</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.BaseComponentCollection`2.Length\">\r\n            <summary>\r\n            Gets the number of components in the collection.\r\n            </summary>\r\n            <value>The number of components in the collection</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.BaseComponentCollection`2.Cache\">\r\n            <summary>\r\n            Gets a lazily-populated list of all components within the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.IElementCollection`1\">\r\n            <summary>\r\n            Represents a read-only list of elements that can be enumerated, searched and filtered.\r\n            </summary>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementCollection`1.As``1\">\r\n            <summary>\r\n            Wraps all elements in the collection as controls of a particular type.\r\n            </summary>\r\n            <typeparam name=\"T\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The collection of controls</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementCollection`1.Exists(System.String)\">\r\n            <summary>\r\n            Returns true if there exists an element within the collection\r\n            that matches the given element id.\r\n            </summary>\r\n            <param name=\"elementId\">The element id to match</param>\r\n            <returns>True if a matching element exists</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementCollection`1.Exists(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Returns true if there exists an element within the collection\r\n            that matches the given element id regular expression.\r\n            </summary>\r\n            <param name=\"elementId\">The element id regular expression to match</param>\r\n            <returns>True if a matching element exists</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementCollection`1.Filter(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Returns a filtered view of the collection consisting only of the elements that\r\n            match the given constraint.\r\n            </summary>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <returns>The filtered element collection</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementCollection`1.Filter(System.Predicate{`0})\">\r\n            <summary>\r\n            Returns a filtered view of the collection consisting only of the elements that\r\n            match the given predicate.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate to match</param>\r\n            <returns>The filtered element collection</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseElementCollection`2.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Creates a base collection.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container</param>\r\n            <param name=\"elementFinder\">The element finder</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"domContainer\"/>\r\n            or <paramref name=\"elementFinder\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseElementCollection`2.As``1\">\r\n            <summary>\r\n            Wraps all elements in the collection as controls of a particular type.\r\n            </summary>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The collection of controls</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseElementCollection`2.Exists(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseElementCollection`2.Exists(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseElementCollection`2.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Creates a filtered instance of the collection with the given finder.\r\n            </summary>\r\n            <param name=\"elementFinder\">The element finder, not null</param>\r\n            <returns>The element collection</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseElementCollection`2.CreateFilteredCollection(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.BaseElementCollection`2.GetComponents\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.BaseElementCollection`2.DomContainer\">\r\n            <summary>\r\n            Gets the DOM container to which the collection belongs.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.BaseElementCollection`2.ElementFinder\">\r\n            <summary>\r\n            Gets the underlying element finder.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FileUploadCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.FileUploadCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FileUploadCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ElementContainer`1\">\r\n            <summary>\r\n            Represents an element that can contain other elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.IElementContainer\">\r\n            <summary>\r\n            This interface is used by all classes which provide access to (sub)elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Area(System.String)\">\r\n            <summary>\r\n            Finds an image map area by its id.\r\n            </summary>\r\n            <param name=\"elementId\">The area id</param>\r\n            <returns>The area</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Area(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an image map area by its id using a regular expression.\r\n            </summary>\r\n            <param name=\"elementId\">The area id regular expression</param>\r\n            <returns>The area</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Area(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Finds an image map area by an Constraint.\r\n            </summary>\r\n            <param name=\"findBy\">The Constraint</param>\r\n            <returns>The area</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Button(System.String)\">\r\n            <summary>\r\n            Gets the specified Button by its id.\r\n            </summary>\r\n            <param name=\"elementId\">The id of the element.</param>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.ElementNotFoundException\">Thrown if the given <paramref name=\"elementId\"/> isn't found.</exception>\r\n            <example>\r\n            This example opens a webpage, types some text and submits it by clicking\r\n            the submit button.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(\"http://www.example.net\");\r\n                   ie.TextField(Find.ById(\"textFieldComment\")).TypeText(\"This is a comment to submit\");\r\n                   ie.Button(\"buttonSubmit\").Click;\r\n                   ie.Close;\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Button(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets the specified Button by using the given <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> to find the Button.\r\n            <seealso cref=\"T:WatiN.Core.Find\"/>\r\n            </summary>\r\n            <param name=\"findBy\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> class or one of it's subclasses to find an element by. The <see cref=\"T:WatiN.Core.Find\"/> class provides factory methodes to create specialized instances.</param>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.ElementNotFoundException\">Thrown if the given <paramref name=\"findBy\"/> doesn't match an element in the webpage.</exception>\r\n            <example>\r\n            This example opens a webpage, types some text and submits it by clicking\r\n            the submit button.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(\"http://www.example.net\");\r\n                   Id textFieldId = new Id(\"textFieldComment\");\r\n                   ie.TextField(textFieldId).TypeText(\"This is a comment to submit\");\r\n                   ie.Button(Find.ByText(\"Submit\")).Click;\r\n                   ie.Close;\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Child(System.String)\">\r\n            <summary>\r\n            Child returns a child element with the specified id.\r\n            </summary>\r\n            <param name=\"elementId\">The element id to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.Child(\"id\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Child(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Child returns a child element with an id that matches the specified regular expression.\r\n            </summary>\r\n            <param name=\"elementId\">The element id regular expression to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.Child(new Regex(\"id\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Child(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Child returns a child element that matches the specified <see cref=\"T:WatiN.Core.Constraints.Constraint\"/>.\r\n            </summary>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.Child(Find.ById(\"id\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Child(System.Predicate{WatiN.Core.Element})\">\r\n            <summary>\r\n            Child returns a child element that matches the specified <see cref=\"T:System.Predicate`1\"/>.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.Child(div =&gt; div.Id == \"id\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Children\">\r\n            <summary>\r\n            Gets a collection of all child elements.\r\n            </summary>\r\n            <returns>The child element collection</returns>\r\n            <example>\r\n            <code>\r\n            ie.Children();\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ChildOfType``1(System.String)\">\r\n            <summary>\r\n            ChildOfType returns a child element of the desired type with the specified id.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"M:WatiN.Core.IElementContainer.Div(System.String)\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"elementId\">The element id to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.ChildOfType&lt;Div&gt;(\"id\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ChildOfType``1(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            ChildOfType returns a child element of the desired type with an id that matches the specified regular expression.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"M:WatiN.Core.IElementContainer.Div(System.Text.RegularExpressions.Regex)\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"elementId\">The element id regular expression to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.ChildOfType&lt;Div&gt;(new Regex(\"id\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ChildOfType``1(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            ChildOfType returns a child element of the desired type that matches the specified <see cref=\"T:WatiN.Core.Constraints.Constraint\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"M:WatiN.Core.IElementContainer.Div(WatiN.Core.Constraints.Constraint)\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.ChildOfType&lt;Div&gt;(Find.ById(\"id\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ChildOfType``1(System.Predicate{``0})\">\r\n            <summary>\r\n            ChildOfType returns a child element of the desired type that matches the specified <see cref=\"T:System.Predicate`1\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"M:WatiN.Core.IElementContainer.Div(System.Predicate{WatiN.Core.Div})\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"predicate\">The predicate to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.ChildOfType&lt;Div&gt;(div =&gt; div.Id == \"id\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ChildrenOfType``1\">\r\n            <summary>\r\n            Gets a collection of all child elements of the specified type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"P:WatiN.Core.IElementContainer.Divs\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <returns>The child element collection</returns>\r\n            <example>\r\n            <code>\r\n            ie.ChildrenOfType&lt;Div&gt;();\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ElementOfType``1(System.String)\">\r\n            <summary>\r\n            ElementOfTypes an element of the desired type with the specified id.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"M:WatiN.Core.IElementContainer.Div(System.String)\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"elementId\">The element id to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.ElementOfType&lt;Div&gt;(\"id\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ElementOfType``1(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            ElementOfTypes an element of the desired type with an id that matches the specified regular expression.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"M:WatiN.Core.IElementContainer.Div(System.Text.RegularExpressions.Regex)\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"elementId\">The element id regular expression to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.ElementOfType&lt;Div&gt;(new Regex(\"id\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ElementOfType``1(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            ElementOfTypes an element of the desired type that matches the specified <see cref=\"T:WatiN.Core.Constraints.Constraint\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"M:WatiN.Core.IElementContainer.Div(WatiN.Core.Constraints.Constraint)\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.ElementOfType&lt;Div&gt;(Find.ById(\"id\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ElementOfType``1(System.Predicate{``0})\">\r\n            <summary>\r\n            ElementOfTypes an element of the desired type that matches the specified <see cref=\"T:System.Predicate`1\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"M:WatiN.Core.IElementContainer.Div(System.Predicate{WatiN.Core.Div})\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"predicate\">The predicate to match</param>\r\n            <returns>The element</returns>\r\n            <example>\r\n            <code>\r\n            ie.ElementOfType&lt;Div&gt;(div =&gt; div.Id == \"id\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.ElementsOfType``1\">\r\n            <summary>\r\n            Gets a collection of all elements of the specified type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Ordinarily you should call the element-type specific method such as <see cref=\"P:WatiN.Core.IElementContainer.Divs\"/>.\r\n            This generic method is intended to be used in situations where the type of the element\r\n            may vary and is specified by a type parameter in the calling code.\r\n            </para>\r\n            </remarks>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <returns>The element collection</returns>\r\n            <example>\r\n            <code>\r\n            ie.ElementsOfType&lt;Div&gt;();\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Control``1\">\r\n            <summary>\r\n            Gets a control object of the desired type that appears first within this element container.\r\n            </summary>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The control object</returns>\r\n            <example>\r\n            <code>\r\n            ie.Control&lt;Header&gt;().MyAccountTab.Click();\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Control``1(System.String)\">\r\n            <summary>\r\n            Gets a control object of the desired type with the specified id.\r\n            </summary>\r\n            <param name=\"elementId\">The element id to match</param>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The control object</returns>\r\n            <example>\r\n            <code>\r\n            ie.Control&lt;CalendarControl&gt;(\"fromDateCalendar\").SetDate(DateTime.Date);\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Control``1(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Gets a control object of the desired type with an id that matches the specified regular expression.\r\n            </summary>\r\n            <param name=\"elementId\">The element id regular expression to match</param>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The control object</returns>\r\n            <example>\r\n            <code>\r\n            ie.Control&lt;CalendarControl&gt;(\"fromDateCalendar\").SetDate(DateTime.Date);\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Control``1(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets a control object of the desired type that matches the specified <see cref=\"T:WatiN.Core.Constraints.Constraint\"/>.\r\n            </summary>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The control object</returns>\r\n            <example>\r\n            <code>\r\n            ie.Control&lt;CalendarControl&gt;(Find.ById(\"fromDateCalendar\")).SetDate(DateTime.Date);\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Control``1(System.Predicate{``0})\">\r\n            <summary>\r\n            Gets a control object of the desired type that matches the specified <see cref=\"T:System.Predicate`1\"/>.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate to match</param>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The control</returns>\r\n            <example>\r\n            <code>\r\n            ie.Control&lt;CalendarControl&gt;(control =&gt; control.Name == \"SomeName\").SetDate(DateTime.Date);\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IElementContainer.Controls``1\">\r\n            <summary>\r\n            Gets a collection of all controls of the desired type.\r\n            </summary>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The control collection</returns>\r\n            <example>\r\n            <code>\r\n            ie.Control&lt;CalendarControl&gt;(control =&gt; control.Name == \"SomeName\").SetDate(DateTime.Date);\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.IElementContainer.Areas\">\r\n            <summary>\r\n            Gets the collection of areas.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.IElementContainer.Buttons\">\r\n            <summary>\r\n            Gets a typed collection of <see cref=\"T:WatiN.Core.Button\"/> instances within this <see cref=\"T:WatiN.Core.Document\"/>.\r\n            </summary>\r\n                /// <example>\r\n            This example opens a webpage and writes out the text of each button to the\r\n            debug window.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(\"http://www.example.net\");\r\n                  \r\n                   ButtonCollection buttons = ie.Buttons;\r\n            \r\n                   foreach (Button button in buttons)\r\n                   {\r\n                     System.Diagnostics.Debug.Writeline(button.Text);\r\n                   }\r\n            \r\n                   ie.Close;\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ElementOfType``1(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ElementOfType``1(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ElementOfType``1(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ElementOfType``1(System.Predicate{``0})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ElementsOfType``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Control``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Control``1(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Control``1(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Control``1(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Control``1(System.Predicate{``0})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Controls``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Child(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Child(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Child(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Child(System.Predicate{WatiN.Core.Element})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.Children\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ChildOfType``1(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ChildOfType``1(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ChildOfType``1(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ChildOfType``1(System.Predicate{``0})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ChildrenOfType``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ChildWithTag(System.String,WatiN.Core.Constraints.Constraint,System.String[])\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ChildrenWithTag(System.String,System.String[])\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementContainer`1.ChildrenWithTag(System.Collections.Generic.IList{WatiN.Core.ElementTag})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.DomContainer\">\r\n            <summary>\r\n            This class hosts functionality for classes which are an entry point\r\n            to a document and its elements and/or frames.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Document\">\r\n            <summary>\r\n            This class gives access to all contained elements of the webpage or the\r\n            frames within this webpage.\r\n            </summary>\r\n            <example>\r\n            This example opens a webpage, types some text and submits it by clicking\r\n            the submit button.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(\"http://www.example.net\");\r\n            \r\n                   ie.TextField(Find.ById(\"textFieldComment\")).TypeText(\"This is a comment to submit\");\r\n                   ie.Button(Find.ByText(\"Submit\")).Click;\r\n            \r\n                   ie.Close;\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Document\"/> class.\r\n            Mainly used by WatiN internally. You should override NativeDocument\r\n            and set DomContainer before accessing any method or property of \r\n            this class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.#ctor(WatiN.Core.DomContainer)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Document\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Dispose\">\r\n            <summary>\r\n            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ContainsText(System.String)\">\r\n            <summary>\r\n            Determines whether the text inside the HTML Body element contains the given <paramref name=\"text\"/>.\r\n            </summary>\r\n            <param name=\"text\">The text.</param>\r\n            <returns>\r\n                <c>true</c> if the specified text is contained in <see cref=\"P:WatiN.Core.Document.Html\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ContainsText(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Determines whether the text inside the HTML Body element contains the given <paramref name=\"regex\"/>.\r\n            </summary>\r\n            <param name=\"regex\">The regular expression to match with.</param>\r\n            <returns>\r\n                <c>true</c> if the specified text is contained in <see cref=\"P:WatiN.Core.Document.Html\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.WaitUntilContainsText(System.String)\">\r\n            <summary>\r\n            Waits until the text is inside the HTML Body element contains the given <paramref name=\"text\" />.\r\n            Will time out after <see name=\"Settings.WaitUntilExistsTimeOut\" />\r\n            </summary>\r\n            <param name=\"text\">The text.</param>\r\n            <returns>\r\n                <see name=\"TimeoutException\"/> if the specified text is not found within the time out period.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.WaitUntilContainsText(System.String,System.Int32)\">\r\n            <summary>\r\n            Waits until the text is inside the HTML Body element contains the given <paramref name=\"text\" />.\r\n            </summary>\r\n            <param name=\"text\">The text.</param>\r\n            <param name=\"timeOut\">The number of seconds to wait</param>\r\n            <returns>\r\n                <see name=\"TimeoutException\"/> if the specified text is not found within the time out period.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.WaitUntilContainsText(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Waits until the <paramref name=\"regex\" /> matches some text inside the HTML Body element.\r\n            Will time out after <see name=\"Settings.WaitUntilExistsTimeOut\" />\r\n            </summary>\r\n            <param name=\"regex\">The regular expression to match with.</param>\r\n            <returns>\r\n                <see name=\"TimeoutException\"/> if the specified text is not found within the time out period.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.WaitUntilContainsText(System.Text.RegularExpressions.Regex,System.Int32)\">\r\n            <summary>\r\n            Waits until the <paramref name=\"regex\" /> matches some text inside the HTML Body element.\r\n            </summary>\r\n            <param name=\"regex\">The regular expression to match with.</param>\r\n            <param name=\"timeOut\">The number of seconds to wait</param>\r\n            <returns>\r\n                <see name=\"TimeoutException\"/> if the specified text is not found within the time out period.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.FindText(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Gets the text inside the HTML Body element that matches the regular expression.\r\n            </summary>\r\n            <param name=\"regex\">The regular expression to match with.</param>\r\n            <returns>The matching text, or null if none.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Frame(System.String)\">\r\n            <summary>\r\n            Gets the specified frame by its id.\r\n            </summary>\r\n            <param name=\"id\">The id of the frame.</param>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.FrameNotFoundException\">Thrown if the given <paramref name=\"id\"/> isn't found.</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Frame(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Gets the specified frame by its id.\r\n            </summary>\r\n            <param name=\"id\">The regular expression to match with the id of the frame.</param>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.FrameNotFoundException\">Thrown if the given <paramref name=\"id\"/> isn't found.</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Frame(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets the specified frame by its name.\r\n            </summary>\r\n            <param name=\"findBy\">The name of the frame.</param>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.FrameNotFoundException\">Thrown if the given name isn't found.</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.RunScript(System.String)\">\r\n            <summary>\r\n            Runs the javascript code in IE.\r\n            </summary>\r\n            <param name=\"javaScriptCode\">The javascript code.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.RunScript(System.String,System.String)\">\r\n            <summary>\r\n            Runs the script code in IE.\r\n            </summary>\r\n            <param name=\"scriptCode\">The script code.</param>\r\n            <param name=\"language\">The language.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Eval(System.String)\">\r\n            <summary>\r\n            Evaluates the specified JavaScript code within the scope of this\r\n            document. Returns the value computed by the last expression in the\r\n            code block after implicit conversion to a string.\r\n            </summary>\r\n            <example>\r\n            The following example shows an alert dialog then returns the string \"4\".\r\n            <code>\r\n            Eval(\"window.alert('Hello world!'); 2 + 2\");\r\n            </code>\r\n            </example>\r\n            <param name=\"javaScriptCode\">The JavaScript code</param>\r\n            <returns>The result converted to a string</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.JavaScriptException\">Thrown when the JavaScript code cannot be evaluated\r\n            or throws an exception during evaluation</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Page``1\">\r\n            <summary>\r\n            Gets a page object of the desired type that wraps this document.\r\n            </summary>\r\n            <typeparam name=\"TPage\">The <see cref=\"M:WatiN.Core.Document.Page``1\"/> subclass</typeparam>\r\n            <returns>The page object</returns>\r\n            <example>\r\n            <code>\r\n            browser.Page&lt;SignInPage&gt;&gt;().SignIn(\"somebody\", \"letmein\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ElementOfType``1(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ElementOfType``1(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ElementOfType``1(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ElementOfType``1(System.Predicate{``0})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ElementsOfType``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Control``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Control``1(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Control``1(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Control``1(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Control``1(System.Predicate{``0})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Controls``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Child(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Child(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Child(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Child(System.Predicate{WatiN.Core.Element})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.Children\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ChildOfType``1(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ChildOfType``1(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ChildOfType``1(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ChildOfType``1(System.Predicate{``0})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ChildrenOfType``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ChildWithTag(System.String,WatiN.Core.Constraints.Constraint,System.String[])\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ChildrenWithTag(System.String,System.String[])\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Document.ChildrenWithTag(System.Collections.Generic.IList{WatiN.Core.ElementTag})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.NativeDocument\">\r\n            <summary>\r\n            Gives access to the wrapped INativeDocument interface. This makes it\r\n            possible to get even more control of the webpage by using wrapped element.\r\n            </summary>\r\n            <value>The NativeDocument.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.Html\">\r\n            <summary>\r\n            Gets the HTML of the Body part of the webpage.\r\n            </summary>\r\n            <value>The HTML.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.Body\">\r\n            <summary>\r\n            Gets the Body element of the webpage, or null if none.\r\n            </summary>\r\n            <value>The body, or null if none.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.Text\">\r\n            <summary>\r\n            Gets the inner text of the Body part of the webpage.\r\n            </summary>\r\n            <value>The inner text.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.Uri\">\r\n             <summary>\r\n             Returns a System.Uri instance of the url displayed in the address bar of the browser, \r\n             of the currently displayed web page.\r\n             </summary>\r\n             <example>\r\n             The following example creates a new Internet Explorer instances, navigates to\r\n             the WatiN Project website on SourceForge and writes the Uri of the\r\n             currently displayed webpage to the debug window.\r\n             <code>\r\n             using WatiN.Core;\r\n             using System.Diagnostics;\r\n            \r\n             namespace NewIEExample\r\n             {\r\n                public class WatiNWebsite\r\n                {\r\n                  public WatiNWebsite()\r\n                  {\r\n                    IE ie = new IE(\"http://watin.sourceforge.net\");\r\n                    Debug.WriteLine(ie.Uri.ToString());\r\n                  }\r\n                }\r\n              }\r\n             </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.Url\">\r\n             <summary>\r\n             Returns the url, as displayed in the address bar of the browser, of the currently\r\n             displayed web page.\r\n             </summary>\r\n             <example>\r\n             The following example creates a new Internet Explorer instances, navigates to\r\n             the WatiN Project website on SourceForge and writes the Url of the\r\n             currently displayed webpage to the debug window.\r\n             <code>\r\n             using WatiN.Core;\r\n             using System.Diagnostics;\r\n            \r\n             namespace NewIEExample\r\n             {\r\n                public class WatiNWebsite\r\n                {\r\n                  public WatiNWebsite()\r\n                  {\r\n                    IE ie = new IE(\"http://watin.sourceforge.net\");\r\n                    Debug.WriteLine(ie.Url);\r\n                  }\r\n                }\r\n              }\r\n             </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.Title\">\r\n            <summary>\r\n            Gets the title of the webpage.\r\n            </summary>\r\n            <value>The title.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.ActiveElement\">\r\n            <summary>\r\n            Gets the active element in the webpage.\r\n            </summary>\r\n            <value>The active element or <c>null</c> if no element has the focus.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.Frames\">\r\n            <summary>\r\n            Gets a typed collection of <see cref=\"T:WatiN.Core.Frame\"/> opend within this <see cref=\"T:WatiN.Core.Document\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Document.DomContainer\">\r\n            <summary>\r\n            Gets the document's DOM container.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.OnGetNativeDocument\">\r\n            <summary>\r\n            Gets the native document.\r\n            </summary>\r\n            <returns>The native document.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.StartDialogWatcher\">\r\n            <summary>\r\n            Call this function (from a subclass) as soon as the process is started.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.AddDialogHandler(WatiN.Core.Interfaces.IDialogHandler)\">\r\n            <summary>\r\n            Adds the dialog handler.\r\n            </summary>\r\n            <param name=\"handler\">The dialog handler.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.RemoveDialogHandler(WatiN.Core.Interfaces.IDialogHandler)\">\r\n            <summary>\r\n            Removes the dialog handler.\r\n            </summary>\r\n            <param name=\"handler\">The dialog handler.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.Dispose(System.Boolean)\">\r\n            <summary>\r\n            This method must be called by its inheritor to dispose references\r\n            to internal resources.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.WaitForComplete\">\r\n            <summary>\r\n            Waits for the page to be completely loaded using the Settings.WaitForCompleteTimeOut setting\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.WaitForComplete(System.Int32)\">\r\n            <summary>\r\n            Waits for the page to be completely loaded.\r\n            </summary>\r\n            <param name=\"waitForCompleteTimeOut\">The number of seconds to wait before timing out</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.WaitForComplete(WatiN.Core.Interfaces.IWait)\">\r\n            <summary>\r\n            Waits for the page to be completely loaded\r\n            </summary>\r\n            <param name=\"waitForComplete\">The wait for complete.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.CaptureWebPageToFile(System.String)\">\r\n            <summary>\r\n            Captures the web page to file. The file extension is used to \r\n            determine the image format. The following image formats are\r\n            supported (if the encoder is available on the machine):\r\n            jpg, tif, gif, png, bmp.\r\n            If you want more control over the output, use the <see cref=\"T:WatiN.Core.UtilityClasses.CaptureWebPage\"/> class.\r\n            </summary>\r\n            <param name=\"filename\">The filename.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DomContainer.Recycle\">\r\n            <summary>\r\n            Recycles the DomContainer to its initially created state so that it can be reused.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DomContainer.IsDisposed\">\r\n            <summary>\r\n            <c>true</c> if the <see cref=\"M:WatiN.Core.DomContainer.Dispose(System.Boolean)\"/> method has been called to release resources.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DomContainer.ProcessID\">\r\n            <summary>\r\n            Gets the process ID the Internet Explorer or HTMLDialog is running in.\r\n            </summary>\r\n            <value>The process ID.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DomContainer.NativeDocument\">\r\n            <summary>\r\n            Returns a browser specific <see cref=\"T:WatiN.Core.Native.INativeDocument\"/> instance.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DomContainer.DialogWatcher\">\r\n            <summary>\r\n            Gets the dialog watcher.\r\n            </summary>\r\n            <value>The dialog watcher.</value>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.ISettings.Reset\">\r\n            <summary>\r\n            Resets this instance to the initial defaults.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.ISettings.Clone\">\r\n            <summary>\r\n            Clones this instance.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.AttachToBrowserTimeOut\">\r\n            <summary>\r\n            Get or set the default time out used when calling IE ie = IE.AttachToIE(findBy).\r\n            The default value is 30 seconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.WaitUntilExistsTimeOut\">\r\n            <summary>\r\n            Get or set the default time out used when calling Element.WaitUntilExists().\r\n            The default value is 30 seconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.WaitForCompleteTimeOut\">\r\n            <summary>\r\n            Get or set the default time out used when calling ie.WaitForComplete().\r\n            The default value is 30 seconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.SleepTime\">\r\n            <summary>\r\n            Get or set the default sleep time used when WatiN is waiting for something in a (retry) loop.\r\n            The default value is 100 milliseconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.HighLightElement\">\r\n            <summary>\r\n            Turn highlighting of elements by WatiN on (<c>true</c>) or off (<c>false</c>).\r\n            Highlighting of an element is done when WatiN fires an event on an\r\n            element or executes a methode (like TypeText).\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.HighLightColor\">\r\n            <summary>\r\n            Set or get the color to highlight elements. Will be used if\r\n            HighLightElement is set to <c>true</c>.\r\n            Visit http://msdn.microsoft.com/workshop/author/dhtml/reference/colors/colors_name.asp\r\n            for a full list of supported RGB colors and their names.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.AutoCloseDialogs\">\r\n            <summary>\r\n            Turn auto closing of dialogs on (<c>true</c>) or off (<c>false</c>).\r\n            You need to set this value before creating or attaching to any \r\n            Internet Explorer to have effect.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.AutoStartDialogWatcher\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to auto start the dialog watcher at all.\r\n            This value is evaluated everytime a new IE instance is created\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if dialog watcher should be started when a new IE instance is created; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.AutoMoveMousePointerToTopLeft\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to move the cursor to the top left\r\n            of the screen everytime a new IE instance is created.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> when mouse should be moved to top left; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.MakeNewIeInstanceVisible\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to make a new <see cref=\"T:WatiN.Core.IE\"/> instance visible.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if you want to make a new <see cref=\"T:WatiN.Core.IE\"/> instance visible; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.MakeNewIe8InstanceNoMerge\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to make a new <see cref=\"T:WatiN.Core.IE\"/> instance without session cookie merging.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if you want to make a new <see cref=\"T:WatiN.Core.IE\"/> instance with cookie merging; otherwise, <c>false</c>.\r\n            </value>\r\n            <remarks>read the section on NoMerge at http://blogs.msdn.com/ie/archive/2008/07/28/ie8-and-reliability.aspx</remarks>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Interfaces.ISettings.CloseExistingFireFoxInstances\">\r\n            <summary>\r\n            Gets or sets a value indicating whether existing firefox instances will be closed before creating a new instance.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if existing firefox instances need to be closed otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DefaultSettings.Reset\">\r\n            <summary>\r\n            Resets this instance to the initial defaults.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DefaultSettings.Clone\">\r\n            <summary>\r\n            Clones this instance.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.AttachToBrowserTimeOut\">\r\n            <summary>\r\n            Get or set the default time out used when calling IE ie = IE.AttachToIE(findBy).\r\n            The default value is 30 seconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.WaitUntilExistsTimeOut\">\r\n            <summary>\r\n            Get or set the default time out used when calling Element.WaitUntilExists().\r\n            The default value is 30 seconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.WaitForCompleteTimeOut\">\r\n            <summary>\r\n            Get or set the default time out used when calling ie.WaitForComplete().\r\n            The default value is 30 seconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.SleepTime\">\r\n            <summary>\r\n            Get or set the default sleep time used when WatiN is waiting for something in a (retry) loop.\r\n            The default value is 100 milliseconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.HighLightElement\">\r\n            <summary>\r\n            Turn highlighting of elements by WatiN on (<c>true</c>) or off (<c>false</c>).\r\n            Highlighting of an element is done when WatiN fires an event on an\r\n            element or executes a methode (like TypeText).\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.HighLightColor\">\r\n            <summary>\r\n            Set or get the color to highlight elements. Will be used if\r\n            HighLightElement is set to <c>true</c>.\r\n            Visit http://msdn.microsoft.com/workshop/author/dhtml/reference/colors/colors_name.asp\r\n            for a full list of supported RGB colors and their names.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.AutoCloseDialogs\">\r\n            <summary>\r\n            Turn auto closing of dialogs on (<c>true</c>) or off (<c>false</c>).\r\n            You need to set this value before creating or attaching to any \r\n            Internet Explorer to have effect.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.AutoStartDialogWatcher\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to auto start the dialog watcher at all.\r\n            This value is evaluated everytime a new IE instance is created\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if dialog watcher should be started when a new IE instance is created; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.AutoMoveMousePointerToTopLeft\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to move the cursor to the top left\r\n            of the screen everytime a new IE instance is created.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> when mouse should be moved to top left; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.MakeNewIeInstanceVisible\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to make a new <see cref=\"T:WatiN.Core.IE\"/> instance visible.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if you want to make a new <see cref=\"T:WatiN.Core.IE\"/> instance visible; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DefaultSettings.MakeNewIe8InstanceNoMerge\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to make a new <see cref=\"T:WatiN.Core.IE\"/> instance without session cookie merging.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if you want to make a new <see cref=\"T:WatiN.Core.IE\"/> instance with cookie merging; otherwise, <c>false</c>.\r\n            </value>\r\n            <remarks>read the section on NoMerge at http://blogs.msdn.com/ie/archive/2008/07/28/ie8-and-reliability.aspx</remarks>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.ElementConstraint\">\r\n            <summary>\r\n            An element-based constraint.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ElementConstraint.#ctor(WatiN.Core.Comparers.Comparer{WatiN.Core.Element})\">\r\n            <summary>\r\n            Creates an element constraint.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"comparer\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ElementConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ElementConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Constraints.ElementConstraint.Comparer\">\r\n            <summary>\r\n            Gets the element comparer.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.JSElementCollectionBase\">\r\n            <summary>\r\n            Base element collection common to all browsers that communicate with WatiN using javascript.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.INativeElementCollection\">\r\n            <summary>\r\n            Provides access to the native elements contained within an element or document.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The collection recursively enumerates all elements within a subtree of the document.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElementCollection.GetElements\">\r\n            <summary>\r\n            Gets the native elements within the collection.\r\n            </summary>\r\n            <returns>The enumeration of native elements</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElementCollection.GetElementsByTag(System.String)\">\r\n            <summary>\r\n            Gets the native elements within the collection by tag name.\r\n            </summary>\r\n            <param name=\"tagName\">The tag name to search for</param>\r\n            <returns>The enumeration of native elements</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"tagName\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeElementCollection.GetElementsById(System.String)\">\r\n            <summary>\r\n            Gets the native elements within the collection by id.\r\n            </summary>\r\n            <param name=\"id\">The id to find</param>\r\n            <returns>The enumeration of native elements</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"id\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElementCollectionBase.GetElements\">\r\n            <summary>\r\n            Gets all the native elements.\r\n            </summary>\r\n            <returns>Enumeration of native elements</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElementCollectionBase.GetElementByTagImpl(System.String)\">\r\n            <summary>\r\n            Gets a collection of elements by tag name.\r\n            </summary>\r\n            <param name=\"tagName\">Name of the tag.</param>\r\n            <returns>Collection of elements for the given <paramref name=\"tagName\"/>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElementCollectionBase.GetElementsByIdImpl(System.String)\">\r\n            <summary>\r\n            Gets a collection of elements by id.\r\n            </summary>\r\n            <param name=\"id\">The id of the element.</param>\r\n            <returns>Collection of elements for the given <paramref name=\"id\"/>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElementCollectionBase.Initialize\">\r\n            <summary>\r\n            Initializes this instance.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElementCollectionBase.GetElementsById(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSElementCollectionBase.GetElementsByTag(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.BringToFront\">\r\n            <summary>\r\n            Brings the referenced Internet Explorer to the front (makes it the top window)\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.GetWindowStyle\">\r\n            <summary>\r\n            Gets the window style.\r\n            </summary>\r\n            <returns>The style currently applied to the ie window.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.ShowWindow(WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle)\">\r\n            <summary>\r\n            Make the referenced Internet Explorer full screen, minimized, maximized and more.\r\n            </summary>\r\n            <param name=\"showStyle\">The style to apply.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.PressTab\">\r\n            <summary>\r\n            Sends a Tab key to the IE window to simulate tabbing through\r\n            the elements (and adres bar).\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.GoTo(System.Uri)\">\r\n            <summary>\r\n            Navigates Internet Explorer to the given <paramref name=\"url\" />.\r\n            </summary>\r\n            <param name=\"url\">The URL specified as a wel formed Uri.</param>\r\n            <example>\r\n            The following example creates an Uri and Internet Explorer instance and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using WatiN.Core;\r\n            using System;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   Uri URL = new Uri(\"http://watin.sourceforge.net\");\r\n                   IE ie = new IE();\r\n                   ie.GoTo(URL);\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.GoToNoWait(System.String)\">\r\n            <summary>\r\n            Navigates the browser to the given <paramref name=\"url\" /> \r\n            without waiting for the page load to be finished.\r\n            </summary>\r\n            <param name=\"url\">The URL to GoTo.</param>\r\n            <example>\r\n            The following example creates a new Internet Explorer instance and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE();\r\n                   ie.GoToNoWait(\"http://watin.sourceforge.net\");\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.GoToNoWait(System.Uri)\">\r\n            <summary>\r\n            Navigates the browser to the given <paramref name=\"url\" /> \r\n            without waiting for the page load to be finished.\r\n            </summary>\r\n            <param name=\"url\">The URL to GoTo.</param>\r\n            <example>\r\n            The following example creates a new Internet Explorer instance and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   Uri URL = new Uri(\"http://watin.sourceforge.net\");\r\n                   IE ie = new IE();\r\n                   ie.GoToNoWait(URL);\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.GoTo(System.String)\">\r\n            <summary>\r\n            Navigates Internet Explorer to the given <paramref name=\"url\" />.\r\n            </summary>\r\n            <param name=\"url\">The URL to GoTo.</param>\r\n            <example>\r\n            The following example creates a new Internet Explorer instance and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE();\r\n                   ie.GoTo(\"http://watin.sourceforge.net\");\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.Back\">\r\n            <summary>\r\n            Navigates the browser back to the previously displayed Url (like the back\r\n            button in Internet Explorer).\r\n            </summary>\r\n            <returns><c>true</c> if navigating back to a previous url was possible, otherwise <c>false</c></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.Forward\">\r\n            <summary>\r\n            Navigates the browser forward to the next displayed Url (like the forward\r\n            button in Internet Explorer). \r\n            </summary>\r\n            <returns><c>true</c> if navigating forward to a previous url was possible, otherwise <c>false</c></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.Reopen\">\r\n            <summary>\r\n            Closes and then reopens the browser with a blank page.\r\n            </summary>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge and then reopens the browser.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   LogonDialogHandler logon = new LogonDialogHandler(\"username\", \"password\");\r\n                   IE ie = new IE(new Uri(\"http://watin.sourceforge.net\"), logon);\r\n                   ie.Reopen();\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.Refresh\">\r\n            <summary>\r\n            Reloads the currently displayed webpage (like the Refresh/reload button in \r\n            a browser).\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.Close\">\r\n            <summary>\r\n            Closes the browser.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.OnGetNativeDocument\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.GetAttributeValueImpl(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.AttachTo``1(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Attach to an existing browser instance. \r\n            The first instance that matches the given <paramref name=\"constraint\"/> will be returned.\r\n            </summary>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <returns>An <see cref=\"T:WatiN.Core.Browser\"/> instance of the specified type T.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.BrowserNotFoundException\">\r\n            BrowserNotFoundException will be thrown if a browser window with the given <paramref name=\"constraint\"/> isn't found within 30 seconds.\r\n            To change this default, set <see cref=\"P:WatiN.Core.Settings.AttachToBrowserTimeOut\"/>\r\n            </exception>\r\n            <example>\r\n            The following example searches for an Internet Exlorer instance with \"Example\"\r\n            in it's titlebar (showing up as \"Example - Microsoft Internet Explorer\").\r\n            When found, ieExample will hold a pointer to this Internet Explorer instance and\r\n            can be used to test the Example page.\r\n            <code>\r\n            IE ieExample = IE.AttachTo&lt;IE&gt;(Find.ByTitle(\"Example\"));\r\n            </code>\r\n            A partial match should also work\r\n            <code>\r\n            IE ieExample = IE.AttachTo&lt;IE&gt;(Find.ByTitle(\"Exa\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.AttachTo(System.Type,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Attach to an existing browser instance. \r\n            The first instance that matches the given <paramref name=\"constraint\"/> will be returned.\r\n            </summary>\r\n            <param name=\"browserType\">The WatiN browser type to attach to.</param>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <returns>An <see cref=\"T:WatiN.Core.Browser\"/> instance of the specified type T.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.BrowserNotFoundException\">\r\n            BrowserNotFoundException will be thrown if a browser window with the given <paramref name=\"constraint\"/> isn't found within 30 seconds.\r\n            To change this default, set <see cref=\"P:WatiN.Core.Settings.AttachToBrowserTimeOut\"/>\r\n            </exception>\r\n            <example>\r\n            The following example searches for an Internet Exlorer instance with \"Example\"\r\n            in it's titlebar (showing up as \"Example - Microsoft Internet Explorer\").\r\n            When found, browser will hold a pointer to this Internet Explorer instance and\r\n            can be used to test the Example page.\r\n            <code>\r\n            var browser = Browser.AttachTo(typeof(IE), Find.ByTitle(\"Example\"));\r\n            </code>\r\n            A partial match should also work\r\n            <code>\r\n            var browser = Browser.AttachTo(typeof(IE), Find.ByTitle(\"Exa\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.AttachTo``1(WatiN.Core.Constraints.Constraint,System.Int32)\">\r\n            <summary>\r\n            Attach to an existing browser instance. \r\n            The first instance that matches the given <paramref name=\"constraint\"/> will be returned.\r\n            </summary>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <param name=\"timeout\">The number of seconds to wait before timing out</param>\r\n            <returns>A <see cref=\"T:WatiN.Core.Browser\"/> instance of the specified type.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.BrowserNotFoundException\">\r\n            BrowserNotFoundException will be thrown if a browser window with the given \r\n            <paramref name=\"constraint\"/> isn't found within <paramref name=\"timeout\"/> seconds.\r\n            </exception>\r\n            <example>\r\n            The following example searches for an Internet Exlorer instance with \"Example\"\r\n            in it's titlebar (showing up as \"Example - Microsoft Internet Explorer\").\r\n            It will try to find an Internet Exlorer instance for 60 seconds maxs.\r\n            When found, ieExample will hold a pointer to this Internet Explorer instance and\r\n            can be used to test the Example page.\r\n            <code>\r\n            IE ieExample = IE.AttachTo&lt;IE&gt;(Find.ByTitle(\"Example\"), 60);\r\n            </code>\r\n            A partial match should also work\r\n            <code>\r\n            IE ieExample = IE.AttachTo&lt;IE&gt;(Find.ByTitle(\"Exa\"), 60);\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.AttachTo(System.Type,WatiN.Core.Constraints.Constraint,System.Int32)\">\r\n            <summary>\r\n            Attach to an existing browser instance. \r\n            The first instance that matches the given <paramref name=\"constraint\"/> will be returned.\r\n            </summary>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <param name=\"timeout\">The number of seconds to wait before timing out</param>\r\n            <param name=\"browserType\">The WatiN browser type to attach to.</param>\r\n            <returns>A <see cref=\"T:WatiN.Core.Browser\"/> instance of the specified type.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.BrowserNotFoundException\">\r\n            BrowserNotFoundException will be thrown if a browser window with the given \r\n            <paramref name=\"constraint\"/> isn't found within <paramref name=\"timeout\"/> seconds.\r\n            </exception>\r\n            <example>\r\n            The following example searches for an Internet Exlorer instance with \"Example\"\r\n            in it's titlebar (showing up as \"Example - Microsoft Internet Explorer\").\r\n            It will try to find an Internet Exlorer instance for 60 seconds maxs.\r\n            When found, browser will hold a pointer to this Internet Explorer instance and\r\n            can be used to test the Example page.\r\n            <code>\r\n            var browser = Browser.AttachTo(typeof(IE), Find.ByTitle(\"Example\"), 60);\r\n            </code>\r\n            A partial match should also work\r\n            <code>\r\n            var browser = Browser.AttachTo(typeof(IE), Find.ByTitle(\"Exa\"), 60);\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.AttachToNoWait``1(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Attach to an existing browser instance. \r\n            The first instance that matches the given <paramref name=\"constraint\"/> will be returned.\r\n            </summary>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <returns>An <see cref=\"T:WatiN.Core.Browser\"/> instance of the given type.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.BrowserNotFoundException\">\r\n            BrowserNotFoundException will be thrown if a browser window with the given <paramref name=\"constraint\"/> isn't found within 30 seconds.\r\n            To change this default, set <see cref=\"P:WatiN.Core.Settings.AttachToBrowserTimeOut\"/>\r\n            </exception>\r\n            <example>\r\n            The following example searches for an Internet Exlorer instance with \"Example\"\r\n            in it's titlebar (showing up as \"Example - Microsoft Internet Explorer\").\r\n            When found, ieExample will hold a pointer to this Internet Explorer instance and\r\n            can be used to test the Example page.\r\n            <code>\r\n            IE ieExample = IE.AttachTo&lt;IE&gt;(Find.ByTitle(\"Example\"));\r\n            </code>\r\n            A partial match should also work\r\n            <code>\r\n            IE ieExample = IE.AttachTo&lt;IE&gt;(Find.ByTitle(\"Exa\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.AttachToNoWait(System.Type,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Attach to an existing browser instance. \r\n            The first instance that matches the given <paramref name=\"constraint\"/> will be returned.\r\n            </summary>\r\n            <param name=\"browserType\">The WatiN browser type to attach to.</param>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <returns>An <see cref=\"T:WatiN.Core.Browser\"/> instance of the given type.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.BrowserNotFoundException\">\r\n            BrowserNotFoundException will be thrown if a browser window with the given <paramref name=\"constraint\"/> isn't found within 30 seconds.\r\n            To change this default, set <see cref=\"P:WatiN.Core.Settings.AttachToBrowserTimeOut\"/>\r\n            </exception>\r\n            <example>\r\n            The following example searches for an Internet Exlorer instance with \"Example\"\r\n            in it's titlebar (showing up as \"Example - Microsoft Internet Explorer\").\r\n            When found, browser will hold a pointer to this Internet Explorer instance and\r\n            can be used to test the Example page.\r\n            <code>\r\n            var browser = Browser.AttachTo(typeof(IE), Find.ByTitle(\"Example\"));\r\n            </code>\r\n            A partial match should also work\r\n            <code>\r\n            var browser = Browser.AttachTo(typeof(IE), Find.ByTitle(\"Exa\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.AttachToNoWait``1(WatiN.Core.Constraints.Constraint,System.Int32)\">\r\n            <summary>\r\n            Attach to an existing browser but don't wait until the whole page is loaded. \r\n            The first instance that matches the given <paramref name=\"constraint\"/> will be returned.\r\n            </summary>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <param name=\"timeout\">The number of seconds to wait before timing out</param>\r\n            <returns>An <see cref=\"T:WatiN.Core.Browser\"/> instance of the specified type.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.BrowserNotFoundException\">\r\n            BrowserNotFoundException will be thrown if a browser window with the given \r\n            <paramref name=\"constraint\"/> isn't found within <paramref name=\"timeout\"/> seconds.\r\n            </exception>\r\n            <example>\r\n            The following example searches for an Internet Exlorer instance with \"Example\"\r\n            in it's titlebar (showing up as \"Example - Microsoft Internet Explorer\").\r\n            It will try to find an Internet Exlorer instance for 60 seconds maxs.\r\n            When found, ieExample will hold a pointer to this Internet Explorer instance and\r\n            can be used to test the Example page.\r\n            <code>\r\n            IE ieExample = IE.AttachToNoWait&lt;IE&gt;(Find.ByTitle(\"Example\"), 60);\r\n            </code>\r\n            A partial match should also work\r\n            <code>\r\n            IE ieExample = IE.AttachToNoWait&lt;IE&gt;(Find.ByTitle(\"Exa\"), 60);\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.AttachToNoWait(System.Type,WatiN.Core.Constraints.Constraint,System.Int32)\">\r\n            <summary>\r\n            Attach to an existing browser but don't wait until the whole page is loaded. \r\n            The first instance that matches the given <paramref name=\"constraint\"/> will be returned.\r\n            </summary>\r\n            <param name=\"browserType\">The WatiN browser type to attach to.</param>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <param name=\"timeout\">The number of seconds to wait before timing out</param>\r\n            <returns>An <see cref=\"T:WatiN.Core.Browser\"/> instance of the specified type.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.BrowserNotFoundException\">\r\n            BrowserNotFoundException will be thrown if a browser window with the given \r\n            <paramref name=\"constraint\"/> isn't found within <paramref name=\"timeout\"/> seconds.\r\n            </exception>\r\n            <example>\r\n            The following example searches for an Internet Exlorer instance with \"Example\"\r\n            in it's titlebar (showing up as \"Example - Microsoft Internet Explorer\").\r\n            It will try to find an Internet Exlorer instance for 60 seconds maxs.\r\n            When found, ieExample will hold a pointer to this Internet Explorer instance and\r\n            can be used to test the Example page.\r\n            <code>\r\n            var browser = Browser.AttachToNoWait(typeof(IE), Find.ByTitle(\"Example\"), 60);\r\n            </code>\r\n            A partial match should also work\r\n            <code>\r\n            var browser = Browser.AttachToNoWait(typeof(IE), Find.ByTitle(\"Exa\"), 60);\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.Exists``1(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Does the specified browser type exist.\r\n            </summary>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <returns><c>true</c> if a browser instance matches the given <see cref=\"T:WatiN.Core.Constraints.Constraint\"/>. Otherwise it returns <c>false</c>. </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.Exists(System.Type,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Does the specified browser type exist.\r\n            </summary>\r\n            <param name=\"browserType\">The WatiN browser type to attach to.</param>\r\n            <param name=\"constraint\">The <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> of the browser window to find. \r\n            <c>Find.ByUrl()</c>, <c>Find.ByUri()</c>, <c>Find.ByTitle()</c> and <c>Find.By(\"hwnd\", windowHandle)</c> are supported.</param>\r\n            <returns><c>true</c> if a browser instance matches the given <see cref=\"T:WatiN.Core.Constraints.Constraint\"/>. Otherwise it returns <c>false</c>. </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Browser.RegisterAttachToHelper(System.Type,WatiN.Core.Interfaces.IAttachTo)\">\r\n            <summary>\r\n            Register a specific helper to attacht to .\r\n            </summary>\r\n            <param name=\"browserType\">Type of the browser.</param>\r\n            <param name=\"attachToHelper\">The attach to helper.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FireFox.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.FireFox\"/> class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FireFox.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.FireFox\"/> class.\r\n            </summary>\r\n            <param name=\"url\">The url to go to</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FireFox.#ctor(System.Uri)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.FireFox\"/> class.\r\n            </summary>\r\n            <param name=\"uri\">The url to go to</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FireFox.Finalize\">\r\n            <summary>\r\n            Releases unmanaged resources and performs other cleanup operations before the\r\n            <see cref=\"T:WatiN.Core.FireFox\"/> is reclaimed by garbage collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FireFox.GetExecutablePath\">\r\n            <summary>\r\n            Initalizes the executable path.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FireFox.GetExecutablePathUsingRegistry(Microsoft.Win32.RegistryKey)\">\r\n            <summary>\r\n            Initializes the executable path to FireFox using the registry.\r\n            </summary>\r\n            <param name=\"mozillaKey\">The mozilla key.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FireFox.WaitForComplete(System.Int32)\">\r\n            <summary>\r\n            Waits until the page is completely loaded\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FireFox.Close\">\r\n            <summary>\r\n            Closes the browser.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FireFox.Dispose(System.Boolean)\">\r\n            <summary>\r\n            Releases unmanaged and - optionally - managed resources\r\n            </summary>\r\n            <param name=\"disposing\"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FireFox.CurrentProcess\">\r\n            <summary>\r\n            Gets the current FireFox process (all instances run under 1 process).\r\n            </summary>\r\n            <value>The current FireFox process or null if none is found.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.FireFox.PathToExe\">\r\n            <summary>\r\n            Gets or sets the path to FireFox executable. By default the registry and common\r\n            file locations will be used to find the the firefox executable.\r\n            When manually setting this property make sure to also include the path and name\r\n            of the executable (c:\\somedirectory\\firefox.exe)\r\n            </summary>\r\n            <value>The path to exe.</value>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.UtilityClasses.VariableNameHelper._elementCounter\">\r\n            <summary>\r\n            Used by CreateElementVariableName\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.VariableNameHelper.CreateVariableName\">\r\n            <summary>\r\n            Creates a unique variable name, i.e. doc.watin23\r\n            </summary>\r\n            <returns>A unique variable.</returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.UtilityClasses.EmptyArray`1\">\r\n            <summary>\r\n            Provides a singleton empty array instance.\r\n            </summary>\r\n            <typeparam name=\"T\">The type of array to provide.</typeparam>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.UtilityClasses.EmptyArray`1.Instance\">\r\n            <summary>\r\n            An empty array of type <typeparamref name=\"T\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Find\">\r\n            <summary>\r\n            This class provides factory methods for de most commonly used attributes\r\n            to find an element on a web page.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByAlt(System.String)\">\r\n            <summary>\r\n            Finds an element by its alt text.\r\n            </summary>\r\n            <param name=\"alt\">The alt text to find.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>ie.Image(Find.ByAlt(\"alt text\")).Name</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByAlt(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element by its alt text.\r\n            </summary>\r\n            <param name=\"regex\">The regular expression for the alt text to find.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>ie.Image(Find.ByAlt(new Regex(\"pattern goes here\")))).Name</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByAlt(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element by its alt text.\r\n            </summary>\r\n            <param name=\"compare\">The compare.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            \t<code>Image img = ie.Image(Find.ByAlt(new StringContainsAndCaseInsensitiveComparer(\"alt text\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByAlt(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element by its alt text.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            \t<code>Image img = ie.Image(Find.ByAlt(MyOwnCompareMethod));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByClass(System.String)\">\r\n            <summary>\r\n            Finds an element having an exact match with the (CSS) class name of the element.\r\n            </summary>\r\n            <param name=\"classname\">The class name to find.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>ie.Div(Find.ByClass(\"HighlightedHeader\")).Name</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByClass(System.String,System.Boolean)\">\r\n            <summary>\r\n            Finds an element with the (CSS) class name containing <paramref name=\"classname\"/> when\r\n            <paramref name=\"exactMatch\"/> is set to <code>false</code>.\r\n            </summary>\r\n            <param name=\"classname\">The class name to find.</param>\r\n            <param name=\"exactMatch\">When false, class name should contain given <paramref name=\"classname\"/> otherwise it should match exactly.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            To find the first div with a class attribute containing 'HighlightedHeader'\r\n            <code>ie.Div(Find.ByClass(\"HighlightedHeader\", false)).Name</code>\r\n            To find the first div with a class attribute having an exact match with 'HighlightedHeader'\r\n            <code>ie.Div(Find.ByClass(\"HighlightedHeader\", true)).Name</code>\r\n            or just call\r\n            <code>ie.Div(Find.ByClass(\"HighlightedHeader\")).Name</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByClass(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element by its (CSS) class name text.\r\n            </summary>\r\n            <param name=\"regex\">The regular expression for the class name to find.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>ie.Div(Find.ByClass(new Regex(\"HighlightedHeader\")))).Name</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByClass(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element by its (CSS) class name text.\r\n            </summary>\r\n            <param name=\"compare\">The comparer.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            \t<code>Div div = ie.Div(Find.ByClass(new StringContainsAndCaseInsensitiveComparer(\"Highlighted\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByClass(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element by its (CSS) class name text.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            \t<code>Div div = ie.Div(Find.ByClass(MyOwnCompareMethod));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByFor(System.String)\">\r\n            <summary>\r\n            Finds a Label element by the id of the element it's linked with.\r\n            </summary>\r\n            <param name=\"forId\">Id of the element the label is linked with.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Label(Find.ByFor(\"optionbuttonid\")).Text</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByFor(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds a Label element by the id of the element it's linked with.\r\n            </summary>\r\n            <param name=\"regex\">Regular expression to find the matching Id of the element\r\n             the label is linked with.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Label(Find.ByFor(new Regex(\"pattern goes here\")).Text</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByFor(WatiN.Core.Element)\">\r\n            <summary>\r\n            Finds a Label element by the id of the element it's linked with.\r\n            </summary>\r\n            <param name=\"element\">The element to which the Label element is attached. This element must an Id value.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>\r\n            CheckBox checkbox = ie.CheckBox(\"checkboxid\");\r\n            ie.Label(Find.ByFor(checkbox).Text</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByFor(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds a Label element by the id of the element it's linked with.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>\r\n            Label label = ie.Label(Find.ByFor(new StringContainsAndCaseInsensitiveComparer(\"optionbuttonid\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByFor(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds a Label element by the id of the element it's linked with.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            Label label = ie.Label(Find.ByFor(MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ById(System.String)\">\r\n            <summary>\r\n            Finds an element by its id.\r\n            </summary>\r\n            <param name=\"id\">Element id to find.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ById(\"testlinkid\")).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ById(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element by its id.\r\n            </summary>\r\n            <param name=\"regex\">Regular expression to find a matching Id.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ById(new Regex(\"pattern goes here\"))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ById(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element by its id.\r\n            </summary>\r\n            <param name=\"compare\">The compare.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>Link link = ie.Link(Find.ById(new StringContainsAndCaseInsensitiveComparer(\"linkId1\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ById(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element by its id.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            Link link = ie.Link(Find.ById(MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByIndex(System.Int32)\">\r\n            <summary>\r\n            Finds an element by its index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index.</param>\r\n            <returns></returns>\r\n            <example>\r\n            <code>\r\n            // Returns the 3rd link with class \"link\".\r\n            Link link = ie.Link(Find.ByClass(\"link\") &amp; Find.ByIndex(2));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByName(System.String)\">\r\n            <summary>\r\n            Finds an element by its name.\r\n            </summary>\r\n            <param name=\"name\">Name to find.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ByName(\"testlinkname\")).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByName(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element by its name.\r\n            </summary>\r\n            <param regex=\"regex\">Regular expression to find a matching Name.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ByName(new Regex(\"pattern goes here\")))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByName(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element by its name.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>ie.Link(Find.ByName(new StringContainsAndCaseInsensitiveComparer(\"linkname\")))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByName(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element by its name.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            Link link = ie.Link(Find.ByName(MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByText(System.String)\">\r\n            <summary>\r\n            Finds an element by its (inner) text.\r\n            </summary>\r\n            <param name=\"text\">Element text</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ByText(\"my link\")).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByText(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element by its (inner) text.\r\n            </summary>\r\n            <param name=\"regex\">Regular expression to find a matching Text.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ByText(new Regex(\"pattern goes here\"))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByText(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element by its (inner) text.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>Link link = ie.Link(Find.ByText(new StringContainsAndCaseInsensitiveComparer(\"my li\"))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByText(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element by its (inner) text.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            Link link = ie.Link(Find.ByText(MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByUrl(System.String)\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Url.\r\n            </summary>\r\n            <param name=\"url\">The well-formed url to find.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ByUrl(\"http://watin.sourceforge.net\")).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByUrl(System.String,System.Boolean)\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Url.\r\n            </summary>\r\n            <param name=\"url\">The well-formed url to find.</param>\r\n            <param name=\"ignoreQuery\">Set to true to ignore querystring when matching.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ByUrl(\"http://watin.sourceforge.net\", true)).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByUrl(System.Uri)\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Url.\r\n            </summary>\r\n            <param name=\"uri\">The uri to find.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ByUrl(new Uri(\"watin.sourceforge.net\"))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByUrl(System.Uri,System.Boolean)\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Url.\r\n            </summary>\r\n            <param name=\"uri\">The uri to find.</param>\r\n            <param name=\"ignoreQuery\">Set to true to ignore querystring when matching.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ByUrl(new Uri(\"watin.sourceforge.net\", true))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByUrl(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Url.\r\n            </summary>\r\n            <param name=\"regex\">Regular expression to find a matching Url.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.ByUrl(new Regex(\"pattern goes here\"))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByUrl(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Url.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>ie.Link(Find.ByUrl(new UriComparer(uri, ignoreQuery))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByUrl(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Url.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            Link link = ie.Link(Find.ByUrl(MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByTitle(System.String)\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Title.\r\n            </summary>\r\n            <param name=\"title\">The title to match partially.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>IE ie = IE.AttachToIE(Find.ByTitle(\"WatiN Home Page\"))</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByTitle(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Title.\r\n            </summary>\r\n            <param name=\"regex\">Regular expression to find a matching Title.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>IE ie = IE.AttachToIE(Find.ByTitle(new Regex(\"pattern goes here\")))</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByTitle(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Title.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>IE ie = IE.AttachToIE(Find.ByTitle(new StringContainsAndCaseInsensitiveComparer(\"part of the title\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByTitle(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element, frame, IE instance or HTMLDialog by its Title.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            IE ie = IE.AttachToIE(Find.ByTitle(MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByValue(System.String)\">\r\n            <summary>\r\n            Finds an element by its value attribute.\r\n            </summary>\r\n            <param name=\"value\">The value to find.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>\r\n            Button button = ie.Button(Find.ByValue(\"My Button\"))\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByValue(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element by its value attribute.\r\n            </summary>\r\n            <param name=\"regex\">Regular expression to find a matching Value.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>\r\n            Button button = ie.Button(Find.ByValue(new Regex(\"pattern goes here\")))\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByValue(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element by its value attribute.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>\r\n            Button button = ie.Button(Find.ByValue(new StringContainsAndCaseInsensitiveComparer(\"pattern goes here\")));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByValue(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element by its value attribute.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            Button button = ie.Button(Find.ByValue(MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.BySrc(System.String)\">\r\n            <summary>\r\n            Finds an <see cref=\"T:WatiN.Core.Image\"/> by its source (src) attribute.\r\n            </summary>\r\n            <param name=\"src\">Src to find.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Image(Find.BySrc(\"image.gif\"))</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.BySrc(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an <see cref=\"T:WatiN.Core.Image\"/> by its source (src) attribute.\r\n            </summary>\r\n            <param regex=\"regex\">Regular expression to find a matching Src.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Image(Find.BySrc(new Regex(\"pattern goes here\"))))</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.BySrc(WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an <see cref=\"T:WatiN.Core.Image\"/> by its source (src) attribute.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>Image image = ie.Image(Find.BySrc(new StringContainsAndCaseInsensitiveComparer(\"watin/sourceforge\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.BySrc(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an <see cref=\"T:WatiN.Core.Image\"/> by its source (src) attribute.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            Image image = ie.Image(Find.BySrc(MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.By(System.String,System.String)\">\r\n            <summary>\r\n            Finds an element by an attribute.\r\n            </summary>\r\n            <param name=\"attributeName\">The attribute name to compare the value with.</param>\r\n            <param name=\"value\">The exact matching value of the attribute.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.By(\"id\", \"testlinkid\")).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.By(System.String,System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element by an attribute.\r\n            </summary>\r\n            <param name=\"attributeName\">The attribute name to compare the value with.</param>\r\n            <param name=\"regex\">Regular expression to find a matching value of the given attribute.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.Link(Find.By(\"id\", new Regex(\"pattern goes here\"))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.By(System.String,WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element by an attribute.\r\n            </summary>\r\n            <param name=\"attributeName\">The attribute to compare the value with.</param>\r\n            <param name=\"comparer\">The comparer to be used.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>Link link = ie.Link(Find.By(\"innertext\", new StringContainsAndCaseInsensitiveComparer(\"pattern goes here\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.By(System.String,System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element by an attribute.\r\n            </summary>\r\n            <param name=\"attributeName\">The attribute to compare the value with.</param>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            Link link = ie.Link(Find.By(\"innertext\", MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByStyle(System.String,System.String)\">\r\n            <summary>\r\n            Finds an element by a style attribute.\r\n            </summary>\r\n            <param name=\"styleAttributeName\">Name of the style attribute.</param>\r\n            <param name=\"value\">The exact matching value of the attribute.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>ie.Span(Find.ByStyle(\"background-color\", \"red\"))</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByStyle(System.String,System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element by a style attribute.\r\n            </summary>\r\n            <param name=\"styleAttributeName\">Name of the style attribute.</param>\r\n            <param name=\"value\">Regular expression to find a matching value of the given style attribute.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>ie.Link(Find.ByStyle(\"font-family\", new Regex(\"pattern goes here\")))</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByStyle(System.String,WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Finds an element by a style attribute.\r\n            </summary>\r\n            <param name=\"styleAttributeName\">Name of the style attribute.</param>\r\n            <param name=\"comparer\">The comparer.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            \t<code>Link link = ie.Link(Find.ByStyle(\"font-family\", new StringContainsAndCaseInsensitiveComparer(\"aria\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByStyle(System.String,System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds an element by a style attribute.\r\n            </summary>\r\n            <param name=\"styleAttributeName\">Name of the style attribute.</param>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns>The AttributeConstraint</returns>\r\n            <example>\r\n            <code>\r\n            Link link = ie.Link(Find.ByStyle(\"font-family\", MyOwnCompareMethod));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByElement(WatiN.Core.Comparers.Comparer{WatiN.Core.Element})\">\r\n            <summary>\r\n            Finds an Element by using a specialized Element comparer.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer</param>\r\n            <returns>An ElementConstraint instance</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByElement(System.Predicate{WatiN.Core.Element})\">\r\n            <summary>\r\n            Finds an Element by calling the predicate for each element that\r\n            needs to be evaluated.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate</param>\r\n            <returns>An ElementConstraint instance</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByElement``1(System.Predicate{``0})\">\r\n            <summary>\r\n            Finds an Element by calling the predicate for each element that\r\n            needs to be evaluated.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate</param>\r\n            <returns>An ElementConstraint instance</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByExistenceOfRelatedElement``1(WatiN.Core.ElementSelector{``0})\">\r\n            <summary>\r\n            Finds an Element by determining whether there exists some other element\r\n            in a position relative to it, such as an ancestor or descendant.\r\n            </summary>\r\n            <param name=\"selector\">The relative selector</param>\r\n            <returns>An ElementConstraint instance</returns>\r\n            <example>\r\n            <code>\r\n            // Finds a row by the fact that it contains a table cell with particular text content.\r\n            ie.TableRow(Find.ByExistenceOfRelatedElement&lt;TableRow&gt;(row => row.TableCell(Find.ByText(\"foo\")))\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.First\">\r\n            <summary>\r\n            Finds the first element of the expected type.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.Near(System.String)\">\r\n            <summary>\r\n            Finds a form element by looking for specific text on the page near the field.\r\n            </summary>\r\n            <param name=\"labelText\">The text near the field</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.ProximityTextConstraint\"/></returns>\r\n            <example>\r\n            <code>TextField = ie.TextField(Find.Near(\"User Name\"));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByLabelText(System.String)\">\r\n            <summary>\r\n            Finds a form element by looking for the &lt;label&gt; associated with it by searching the label text.\r\n            </summary>\r\n            <param name=\"labelText\">The text of the label element</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.LabelTextConstraint\"/></returns>\r\n            <example>\r\n            This will look for a checkbox that has a label element with the innerText \"User enabled\"\r\n            <code>var checkbox = ie.CheckBox(Find.ByLabelText(\"User Name:\"));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByLabelText(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds a form element by looking for the &lt;label&gt; associated with it by searching the label text.\r\n            </summary>\r\n            <param name=\"labelText\">The regular expression that should match the text of the label element</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.LabelTextConstraint\"/></returns>\r\n            <example>\r\n            This will look for a checkbox that has a label element with innerText starting with \"User\"\r\n            <code>var checkbox = ie.CheckBox(Find.ByLabelText(new Regex(\"^User\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByLabelText(System.Predicate{System.String})\">\r\n            <summary>\r\n            Finds a form element by looking for the &lt;label&gt; associated with it by searching the label text.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.LabelTextConstraint\"/></returns>\r\n            <example>\r\n            This will look for a checkbox that has a label element with innerText starting with \"User\"\r\n            <code>var checkbox = ie.CheckBox(Find.ByLabelText(text =&gt; text !=null &amp;&amp; text.StartsWith(\"User\")));</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByDefault(System.String)\">\r\n            <summary>\r\n            Finds an element by its default characteristics as defined by <see cref=\"P:WatiN.Core.Settings.FindByDefaultFactory\"/>.\r\n            </summary>\r\n            <param name=\"value\">The string to match against</param>\r\n            <returns>A constraint</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByDefault(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds an element by its default characteristics as defined by <see cref=\"P:WatiN.Core.Settings.FindByDefaultFactory\"/>.\r\n            </summary>\r\n            <param name=\"value\">The regular expression to match against</param>\r\n            <returns>A constraint</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByTextInColumn(System.String,System.Int32)\">\r\n            <summary>\r\n            Finds a <see cref=\"T:WatiN.Core.TableRow\"/> element by the (inner) text of one of its cells.\r\n            </summary>\r\n            <param name=\"text\">Element text</param>\r\n            <param name=\"columnIndex\">The zero-based column index</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.TableRow(Find.ByTextInColumn(\"my link\")).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByTextInColumn(System.Text.RegularExpressions.Regex,System.Int32)\">\r\n            <summary>\r\n            Finds a <see cref=\"T:WatiN.Core.TableRow\"/> element by the (inner) text of one of its cells.\r\n            </summary>\r\n            <param name=\"regex\">Regular expression to find a matching Text.</param>\r\n            <param name=\"columnIndex\">The zero-based column index</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.TableRow(Find.ByTextInColumn(new Regex(\"my link\"))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByTextInColumn(WatiN.Core.Comparers.Comparer{System.String},System.Int32)\">\r\n            <summary>\r\n            Finds a <see cref=\"T:WatiN.Core.TableRow\"/> element by the (inner) text of one of its cells.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer.</param>\r\n            <param name=\"columnIndex\">The zero-based column index</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.TableRow(Find.ByTextInColumn(new StringContainsAndCaseInsensitiveComparer(\"my li\"))).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Find.ByTextInColumn(System.Predicate{System.String},System.Int32)\">\r\n            <summary>\r\n            Finds a <see cref=\"T:WatiN.Core.TableRow\"/> element by the (inner) text of one of its cells.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate method to call to make the comparison.</param>\r\n            <param name=\"columnIndex\">The zero-based column index</param>\r\n            <returns><see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/></returns>\r\n            <example>\r\n            <code>ie.TableRow(Find.ByTextInColumn(MyOwnCompareMethod)).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Find.Any\">\r\n            <summary>\r\n            Finds anything.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Find.None\">\r\n            <summary>\r\n            Finds nothing.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.FileUpload\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML input element \r\n            of type file. \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ElementTagAttribute\">\r\n            <summary>\r\n            Specifies the HTML tags associated with a given <see cref=\"T:WatiN.Core.Element\"/> class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTagAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Associates a tag with an <see cref=\"T:WatiN.Core.Element\"/> class.\r\n            </summary>\r\n            <param name=\"tagName\">The tag name</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"tagName\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTagAttribute.ToElementTag\">\r\n            <summary>\r\n            Creates an <see cref=\"T:WatiN.Core.ElementTag\"/> object from the contents of the attribute.\r\n            </summary>\r\n            <returns>The element tag</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementTagAttribute.TagName\">\r\n            <summary>\r\n            Gets the tag name.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementTagAttribute.InputType\">\r\n            <summary>\r\n            Gets or sets the \"type\" attribute value to qualify which variations of an INPUT tag are supported.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementTagAttribute.Index\">\r\n            <summary>\r\n            Gets or sets the \"index\" attribute value to force a specific order of the ElementTag in a list of ElementTags.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.DialogHandlers.SecurityAlertDialogHandler\">\r\n            <summary>\r\n            This class handles the Security Warning dialog and does press\r\n            the OK button when the dialog shows up.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.SecurityAlertDialogHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Handles the dialog if the <paramref name=\"window\" /> is a\r\n            security alert dialog.\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.SecurityAlertDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether the specified window is a security alert dialog by checking <see cref=\"P:WatiN.Core.Native.Windows.Window.StyleInHex\"/>.\r\n            Valid value is \"94C80AC4\" or \"94C808C4\".\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if the specified window is a security alert dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileUploadDialogHandler.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.FileUploadDialogHandler\"/> class.\r\n            </summary>\r\n            <param name=\"fileName\">Name of the file which should be uploaded.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileUploadDialogHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Handles the File upload dialog.\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileUploadDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether this instance can handle the specified window.\r\n            It check <see cref=\"P:WatiN.Core.Native.Windows.Window.StyleInHex\"/> for the value \"96CC20C4\"\r\n            , \"96CC02C4\" or \"97CC02C4\".\r\n            </summary>\r\n            <param name=\"window\">The window to validate.</param>\r\n            <returns>\r\n            \t<c>true</c> if this instance can handle the dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.Windows.NativeMethods\">\r\n            <summary>\r\n            Class that contains native win32 API support.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Windows.NativeMethods.GetForegroundWindow\">\r\n            <summary>\r\n            The GetForegroundWindow function returns a handle to the foreground window.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Windows.NativeMethods.ShowWindow(System.IntPtr,System.Int32)\">\r\n             <summary>Shows a Window</summary>\r\n             <remarks>\r\n             <para>To perform certain special effects when showing or hiding a \r\n             window, use AnimateWindow.</para>\r\n            <para>The first time an application calls ShowWindow, it should use \r\n            the WinMain function's nCmdShow parameter as its nCmdShow parameter. \r\n            Subsequent calls to ShowWindow must use one of the values in the \r\n            given list, instead of the one specified by the WinMain function's \r\n            nCmdShow parameter.</para>\r\n            <para>As noted in the discussion of the nCmdShow parameter, the \r\n            nCmdShow value is ignored in the first call to ShowWindow if the \r\n            program that launched the application specifies startup information \r\n            in the structure. In this case, ShowWindow uses the information \r\n            specified in the STARTUPINFO structure to show the window. On \r\n            subsequent calls, the application must call ShowWindow with nCmdShow \r\n            set to SW_SHOWDEFAULT to use the startup information provided by the \r\n            program that launched the application. This behavior is designed for \r\n            the following situations: </para>\r\n            <list type=\"\">\r\n                <item>Applications create their main window by calling CreateWindow \r\n                with the WS_VISIBLE flag set. </item>\r\n                <item>Applications create their main window by calling CreateWindow \r\n                with the WS_VISIBLE flag cleared, and later call ShowWindow with the \r\n                SW_SHOW flag set to make it visible.</item>\r\n            </list></remarks>\r\n             <param name=\"hWnd\">Handle to the window.</param>\r\n             <param name=\"nCmdShow\">Specifies how the window is to be shown. \r\n             This parameter is ignored the first time an application calls \r\n             ShowWindow, if the program that launched the application provides a \r\n             STARTUPINFO structure. Otherwise, the first time ShowWindow is called, \r\n             the value should be the value obtained by the WinMain function in its \r\n             nCmdShow parameter. In subsequent calls, this parameter can be one of \r\n             the WindowShowStyle members.</param>\r\n             <returns>\r\n             If the window was previously visible, the return value is nonzero. \r\n             If the window was previously hidden, the return value is zero.\r\n             </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Windows.NativeMethods.GetWindowText(System.IntPtr)\">\r\n            <summary>\r\n            This method incapsulates all the details of getting\r\n            the full length text in a StringBuffer and returns\r\n            the StringBuffer contents as a string.\r\n            </summary>\r\n            <param name=\"hwnd\">The handle to the window</param>\r\n            <returns>Text of the window</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Windows.NativeMethods.GetClassName(System.IntPtr)\">\r\n            <summary>\r\n            This method incapsulates all the details of getting\r\n            the full length classname in a StringBuffer and returns\r\n            the StringBuffer contents as a string.\r\n            </summary>\r\n            <param name=\"hwnd\">The handle to the window</param>\r\n            <returns>Text of the window</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Windows.NativeMethods.CompareClassNames(System.IntPtr,System.String)\">\r\n            <summary>\r\n            Compares the class names.\r\n            </summary>\r\n            <param name=\"hWnd\">The hWND of the window if which the class name should be retrieved.</param>\r\n            <param name=\"expectedClassName\">Expected name of the class.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle\">\r\n            <summary>\r\n            Enumeration of the different ways of showing a window using \r\n            ShowWindow\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.Hide\">\r\n            <summary>Hides the window and activates another window.</summary>\r\n            <remarks>See SW_HIDE</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.ShowNormal\">\r\n            <summary>Activates and displays a window. If the window is minimized \r\n            or maximized, the system restores it to its original size and \r\n            position. An application should specify this flag when displaying \r\n            the window for the first time.</summary>\r\n            <remarks>See SW_SHOWNORMAL</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.ShowMinimized\">\r\n            <summary>Activates the window and displays it as a minimized window.</summary>\r\n            <remarks>See SW_SHOWMINIMIZED</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.ShowMaximized\">\r\n            <summary>Activates the window and displays it as a maximized window.</summary>\r\n            <remarks>See SW_SHOWMAXIMIZED</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.Maximize\">\r\n            <summary>Maximizes the specified window.</summary>\r\n            <remarks>See SW_MAXIMIZE</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.ShowNormalNoActivate\">\r\n            <summary>Displays a window in its most recent size and position. \r\n            This value is similar to \"ShowNormal\", except the window is not \r\n            actived.</summary>\r\n            <remarks>See SW_SHOWNOACTIVATE</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.Show\">\r\n            <summary>Activates the window and displays it in its current size \r\n            and position.</summary>\r\n            <remarks>See SW_SHOW</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.Minimize\">\r\n            <summary>Minimizes the specified window and activates the next \r\n            top-level window in the Z order.</summary>\r\n            <remarks>See SW_MINIMIZE</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.ShowMinNoActivate\">\r\n            <summary>Displays the window as a minimized window. This value is \r\n            similar to \"ShowMinimized\", except the window is not activated.</summary>\r\n            <remarks>See SW_SHOWMINNOACTIVE</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.ShowNoActivate\">\r\n            <summary>Displays the window in its current size and position. This \r\n            value is similar to \"Show\", except the window is not activated.</summary>\r\n            <remarks>See SW_SHOWNA</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.Restore\">\r\n            <summary>Activates and displays the window. If the window is \r\n            minimized or maximized, the system restores it to its original size \r\n            and position. An application should specify this flag when restoring \r\n            a minimized window.</summary>\r\n            <remarks>See SW_RESTORE</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.ShowDefault\">\r\n            <summary>Sets the show state based on the SW_ value specified in the \r\n            STARTUPINFO structure passed to the CreateProcess function by the \r\n            program that started the application.</summary>\r\n            <remarks>See SW_SHOWDEFAULT</remarks>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.ForceMinimized\">\r\n            <summary>Windows 2000/XP: Minimizes a window, even if the thread \r\n            that owns the window is hung. This flag should only be used when \r\n            minimizing windows from a different thread.</summary>\r\n            <remarks>See SW_FORCEMINIMIZE</remarks>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ElementFinder\">\r\n            <summary>\r\n            Expresses an algorithm for finding elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFinder.#ctor(System.Collections.Generic.IList{WatiN.Core.ElementTag},WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Creates an element finder.\r\n            </summary>\r\n            <param name=\"elementTags\">The element tags considered by the finder, or null if all tags considered</param>\r\n            <param name=\"findBy\">The constraint used by the finder to filter elements, or null if no additional constraint</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFinder.Exists\">\r\n            <summary>\r\n            Returns true if there exists at least one element that matches the finder's constraint.\r\n            </summary>\r\n            <returns>True if there is at least one matching element</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFinder.FindFirst\">\r\n            <summary>\r\n            Finds the first element that matches the finder's constraint.\r\n            </summary>\r\n            <returns>The first matching element, or null if none</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFinder.FindAll\">\r\n            <summary>\r\n            Finds all elements that match the finder's constraint.\r\n            </summary>\r\n            <returns>An enumeration of all matching elements</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFinder.Filter(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Creates a new finder filtered by an additional constraint.\r\n            </summary>\r\n            <param name=\"constraint\">The additional constraint</param>\r\n            <returns>The filtered element finder</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"constraint\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFinder.ElementTagsToString\">\r\n            <summary>\r\n            Returns a string representation of the element tags.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFinder.ConstraintToString\">\r\n            <summary>\r\n            Returns a string representation of the constraint.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFinder.FilterImpl(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Creates a new finder filtered by an additional constraint.\r\n            </summary>\r\n            <param name=\"findBy\">The additional constraint, not null</param>\r\n            <returns>The filtered element finder</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFinder.FindAllImpl\">\r\n            <summary>\r\n            Finds all elements that match the finder's constraint.\r\n            </summary>\r\n            <returns>An enumeration of all matching elements</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementFinder.ElementTags\">\r\n            <summary>\r\n            Gets the read-only list of tags considered by the finder.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementFinder.ElementTagNames\">\r\n            <summary>\r\n            Gets a list of unique tag names from <see cref=\"P:WatiN.Core.ElementFinder.ElementTags\"/>.\r\n            </summary>\r\n            <value>The element tag names, which may contain null to signify that any tag is allowed</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementFinder.Constraint\">\r\n            <summary>\r\n            Gets the constraint used by the finder to filter elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.ConstraintContext\">\r\n            <summary>\r\n            Retains temporary state for each constraint involved in a matching operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The constraint context is used whenever a constraint needs to store information\r\n            across successive matches.  Consequently the constraint object itself remains\r\n            immutable and may be shared across multiple usage.\r\n            </para>\r\n            <para>\r\n            The constraint context is initially empty at the beginning of each match operation.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ConstraintContext.#ctor\">\r\n            <summary>\r\n            Creates an empty constraint context.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ConstraintContext.SetData(WatiN.Core.Constraints.Constraint,System.Object)\">\r\n            <summary>\r\n            Saves constraint-specific data in the context.\r\n            </summary>\r\n            <param name=\"constraint\">The constraint that wishes to store its state</param>\r\n            <param name=\"value\">The value to be stored, or null if none</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"constraint\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ConstraintContext.GetData(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets previously saved constraint-specific data from the context.\r\n            </summary>\r\n            <param name=\"constraint\">The constraint that wishes to retrieve its state</param>\r\n            <returns>The saved data, or null if none saved</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"constraint\"/> is null</exception>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.RadioButton\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML input element of type \r\n            radio.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.RadioCheck`1\">\r\n            <summary>\r\n            Base class for <see cref=\"T:WatiN.Core.CheckBox\"/> and <see cref=\"T:WatiN.Core.RadioButton\"/> provides\r\n            support for common functionality.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.RadioCheck`1.DefaultToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.IndexConstraint\">\r\n            <summary>\r\n            A constraint that matches the element with the Nth zero-based index.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This constraint works by counting the number of times the match method\r\n            is called and returning true when the counter reaches N, starting from zero.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.IndexConstraint.#ctor(System.Int32)\">\r\n            <summary>\r\n            Creates an index constraint.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to match</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.IndexConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.IndexConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.AlwaysTrueComparer`1\">\r\n            <summary>\r\n            This comparer will always return <c>true</c> no matter what value it is given to\r\n            compare with.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.Comparer`1\">\r\n            <summary>\r\n            Use this class as the base to create your own comparer classes with. \r\n            Overide the <see cref=\"M:WatiN.Core.Comparers.Comparer`1.Compare(`0)\"/> method and implement the desired compare logic.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.Comparer`1.Compare(`0)\">\r\n            <summary>\r\n            Compares the specified value. You need to override this method\r\n            and provide your own implementation for the comparison with the \r\n            given <paramref name=\"value\"/>.\r\n            </summary>\r\n            <param name=\"value\">The value.</param>\r\n            <returns>Should return <c>true</c> or <c>false</c>, which is the default.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.AlwaysTrueComparer`1.Compare(`0)\">\r\n            <summary>\r\n            Accepts a value bit it will be ignored\r\n            </summary>\r\n            <param name=\"ignoredValue\">The ignored value.</param>\r\n            <returns>Will always return <c>true</c></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.AlwaysTrueComparer`1.ToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Comparers.AlwaysTrueComparer`1.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the comparer.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.INativeDocument\">\r\n            <summary>\r\n            Behaviour common to all types of browser documents.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeDocument.RunScript(System.String,System.String)\">\r\n            <summary>\r\n            Runs the script.\r\n            </summary>\r\n            <param name=\"scriptCode\">\r\n            The script code to run.\r\n            </param>\r\n            <param name=\"language\">\r\n            The language the script was written in.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeDocument.GetPropertyValue(System.String)\">\r\n            <summary>\r\n            Gets the value for the corresponding <paramref name=\"propertyName\"/>.\r\n            </summary>\r\n            <param name=\"propertyName\">\r\n            Name of the property.\r\n            </param>\r\n            <returns>\r\n            The value for the corresponding <paramref name=\"propertyName\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeDocument.GetTextBounds(System.String)\">\r\n            <summary>\r\n            Gets the bounds of all matching text substrings within the document.\r\n            </summary>\r\n            <param name=\"text\">\r\n            The text to find\r\n            </param>\r\n            <returns>\r\n            The text bounds in screen coordinates\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeDocument.ContainsText(System.String)\">\r\n            <summary>\r\n            Determines whether the text inside the HTML Body element contains the given <paramref name=\"text\" />.\r\n            </summary>\r\n            <param name=\"text\">The text.</param>\r\n            <returns>\r\n                <c>true</c> if the specified text is contained in Html; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeDocument.AllElements\">\r\n            <summary>\r\n            Gets the collection of all elements in the document.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeDocument.ContainingFrameElement\">\r\n            <summary>\r\n            Gets the containing frame element, or null if none.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeDocument.Body\">\r\n            <summary>\r\n            Gets the body element for the current docuemnt.\r\n            </summary>\r\n            <value>The body element.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeDocument.Url\">\r\n            <summary>\r\n            Gets the URL for the current document.\r\n            </summary>\r\n            <value>The URL for the current document.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeDocument.Title\">\r\n            <summary>\r\n            Gets the title of the current docuemnt.\r\n            </summary>\r\n            <value>The title of the current document.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeDocument.ActiveElement\">\r\n            <summary>\r\n            Gets the active element.\r\n            </summary>\r\n            <value>The active element.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeDocument.JavaScriptVariableName\">\r\n            <summary>\r\n            Gets the name of the java script variable.\r\n            </summary>\r\n            <value>The name of the java script variable.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeDocument.Frames\">\r\n            <summary>\r\n            Gets the list of frames.\r\n            </summary>\r\n            <value>The list of frames of the current document.</value>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEDocument.GetTextBounds(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEDocument.HtmlDocument\">\r\n            <summary>\r\n            Gets the underlying <see cref=\"T:mshtml.IHTMLDocument2\"/> object.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEDocument.AllElements\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEDocument.ContainingFrameElement\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.JavaScriptEngineType\">\r\n            <summary>\r\n            Defines the different types of javascript engine.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.JavaScriptEngineType.Unknown\">\r\n            <summary>\r\n            Unkown javascript engine\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.JavaScriptEngineType.JScript\">\r\n            <summary>\r\n            JScript engine used by internet explorer http://en.wikipedia.org/wiki/JScript.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.JavaScriptEngineType.WebKit\">\r\n            <summary>\r\n            WebKit javascript engine used be Safari, Chrome and others http://en.wikipedia.org/wiki/WebKit\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.JavaScriptEngineType.Mozilla\">\r\n            <summary>\r\n            Mozilla javascript engine.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Control`1\">\r\n            <summary>\r\n            A control class describes the content and behaviors of a unit of interacting\r\n            elements within a page (a user control).  Each application control can be modeled\r\n            as a subclass of <see cref=\"T:WatiN.Core.Control`1\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A control class wraps a subtree of DOM elements and provides access to its\r\n            contents and behaviors by defining properties and methods to represent them.\r\n            In the typical case, the properties of a control class provide access to its\r\n            elements and state.  Likewise, the methods of a control class perform actions\r\n            or transactions.  The control class encapsulates the mechanisms used\r\n            to access and manipulate the underlying DOM elements which enables test cases to\r\n            become more focused on verifying application functionality.\r\n            </para>\r\n            <para>\r\n            For example, a rich text box may be implemented in HTML using a complex combination\r\n            of buttons, text areas and perhaps even frames.  Manipulating each UI element separately\r\n            in a test is awkward and distracting.  So instead we can create a control class to\r\n            describe the high-level contents and behaviors of the rich text box.  The class can have\r\n            a \"Text\" property that enables the text to be read and written and an \"Bold()\" method to\r\n            change the current font weight to Bold.  This moves the complexity of manipulating the\r\n            rich text box into a single cohesive class that can be reused as often as needed.\r\n            </para>\r\n            <para>\r\n            This feature can be used to create a model of a web site (a site map) which helps to\r\n            improve readability and encourage reuse across tests.\r\n            </para>\r\n            <para>\r\n            How to create a control class:\r\n            <list type=\"bullet\">\r\n            <item>Identify the type of HTML element that functions as a container for the\r\n            control on the web page.  Typically this will be a DIV that contains all of the other\r\n            relevant sub-elements but it could be of some other type as well.</item>\r\n            <item>Create a subclass of Control using the appropriate generic element type.  For example, if the\r\n            element is a DIV, then create a subclass of Control&lt;Div&gt;.</item>\r\n            <item>Optionally override <see cref=\"T:WatiN.Core.Constraints.ElementConstraint\"/> to supply a custom constraint to help identify the\r\n            underlying element for the control based on its properties, such as its CSS class.  If the constraint\r\n            is sufficiently specific in nature then the <code>browser.Control&lt;MyCustomControl&gt;()</code> syntax\r\n            can be used to find the control unambiguously (ie. wraps only DIVs that satisfy the constraint, not just any DIV).</item>\r\n            <item>Add properties to provide access to the sub-elements of the control.  When the control\r\n            is used, the <see cref=\"P:WatiN.Core.Control`1.Element\"/> property will be set to the containing element\r\n            (ie. the DIV or other element as specified).  Use this property to locate the sub-elements of\r\n            the control.</item>\r\n            <item>Define additional properties and methods as desired to model the state and\r\n            behaviors of the control.</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            Tips:\r\n            <list type=\"bullet\">\r\n            <item>Consider breaking down composite controls into multiple parts.  For example, when modeling\r\n            a data grid, create a control class derived from <code>Control&lt;Table&gt;</code> to wrap the table and\r\n            within it create a second nested control class derived from <code>Control&lt;TableRow&gt;</code> to wrap the rows\r\n            within the table.  Then define a property of type <code>ControlCollection&lt;MyDataGridRowControl&gt;</code>\r\n            using <code>TableRowCollection.As&lt;MyDataGridRowControl&gt;</code> to provide custom access to the\r\n            rows within the table.</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            Consider a calendar user control that is represented as an HTML table with\r\n            clickable cells.  The same calendar user control may appear in many web pages\r\n            and need to be accessed by many tests.  Moreover, selecting dates in such a\r\n            control could be somewhat tedious as it involved clicking on links to set the\r\n            month and day.\r\n            </para>\r\n            <para>\r\n            Here's how we might build a control class to wrap this calendar:\r\n            </para>\r\n            <code>\r\n            public class CalendarControl : Control&lt;Div&gt;\r\n            {\r\n                private SelectList MonthSelectList { get { return Element.Select(Find.ByName(\"month\")); } }\r\n                private SelectList YearSelectList { get { return Element.Select(Find.ByName(\"year\")); } }\r\n                private Div DateLabelDiv { get { return Element.Div(Find.ByClass(\"dateLabel\")); } }\r\n            \r\n                /// Gets or sets the date of the calendar control.\r\n                public DateTime Date\r\n                {\r\n                    get\r\n                    {\r\n                        return DateTime.Parse(DateLabelDiv.Text);\r\n                    }\r\n                    set\r\n                    {\r\n                        MonthSelectList.SelectByValue(value.Month.ToString());\r\n                        YearSelectList.SelectByValue(value.Year.ToString());\r\n                \r\n                        Element.Link(Find.ByText(value.Day)).Click();\r\n                    }\r\n                }\r\n            \r\n                public override Constraint ElementConstraint\r\n                {\r\n                    // Only find Divs that have the \"calendar\" class.\r\n                    get { return Find.ByClass(\"calendar\"); }\r\n                }\r\n            }\r\n            </code>\r\n            <para>\r\n            Within the control class, you may also use the <see cref=\"T:WatiN.Core.FindByAttribute\"/> and <see cref=\"T:WatiN.Core.DescriptionAttribute\"/>\r\n            attributes to declaratively refer to elements of the control.  Here is part of the same example\r\n            above using attributes instead of properties.\r\n            </para>\r\n            <code>\r\n            public class CalendarControl : Control&lt;Div&gt;\r\n            {\r\n                [FindBy(Name = \"month\"), Description(\"Month drop down.\")]\r\n                private SelectList MonthSelectList;\r\n                \r\n                [FindBy(Name = \"year\"), Description(\"Year drop down.\")]\r\n                private SelectList YearSelectList;\r\n                \r\n                [FindBy(Name = \"dateLabel\"), Description(\"Date label.\")]\r\n                private Div DateLabelDiv;\r\n                \r\n                // etc...\r\n            }\r\n            </code>\r\n            <para>\r\n            Finally, within the test we use the calendar control like this:\r\n            </para>\r\n            <code>\r\n            browser.Control&lt;CalendarControl&gt;&gt;(Find.ById(\"fromDate\")).Date = DateTime.Now;\r\n            </code>\r\n            </example>\r\n            <typeparam name=\"TElement\">The control element type</typeparam>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Control\">\r\n            <summary>\r\n            This class supports the <see cref=\"T:WatiN.Core.Control`1\"/> type and is not intended\r\n            to be used directly from your application.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Refer to <see cref=\"T:WatiN.Core.Control`1\"/> for details about how to create custom control classes.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:WatiN.Core.Control`1\"/>\r\n            <seealso cref=\"T:WatiN.Core.Page\"/>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Composite\">\r\n            <summary>\r\n            A composite component is container abstraction which has fields or properties\r\n            representing other components.  The most common composites are <see cref=\"T:WatiN.Core.Page\"/>\r\n            and <see cref=\"T:WatiN.Core.Control`1\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Composite.InitializeContents(WatiN.Core.IElementContainer)\">\r\n            <summary>\r\n            Initializes the fields and properties of the composite using reflection to\r\n            find elements within the container.\r\n            </summary>\r\n            <param name=\"container\">The element container within which to find elements, or null if not available</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control.Refresh\">\r\n            <summary>\r\n            Returns true if the element wrapped by the control exists.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control.CreateControl``1(WatiN.Core.Element)\">\r\n            <summary>\r\n            Creates a control object of the desired type that wraps the specified <see cref=\"P:WatiN.Core.Control.Element\"/>.\r\n            </summary>\r\n            <param name=\"element\">The <see cref=\"P:WatiN.Core.Control.Element\"/> that the control should wrap</param>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <returns>The control object</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"element\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control.CreateControl(System.Type,WatiN.Core.Element)\">\r\n            <summary>\r\n            Creates a control object of the desired type that wraps the specified <see cref=\"P:WatiN.Core.Control.Element\"/>.\r\n            </summary>\r\n            <param name=\"controlType\">The control type</param>\r\n            <param name=\"element\">The <see cref=\"P:WatiN.Core.Control.Element\"/> that the control should wrap</param>\r\n            <returns>The control object</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"controlType\"/> or <paramref name=\"element\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if <paramref name=\"controlType\"/> is not a subclass of <see cref=\"T:WatiN.Core.Control\"/>\r\n            or if it does not have a default constructor</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control.FindControl``1(WatiN.Core.IElementContainer,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets a control of the desired type within an element container.\r\n            </summary>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <param name=\"elementContainer\">The element container to search within</param>\r\n            <param name=\"findBy\">The constraint to match</param>\r\n            <returns>The control object</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"elementContainer\"/> or\r\n            <paramref name=\"findBy\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control.FindControls``1(WatiN.Core.IElementContainer)\">\r\n            <summary>\r\n            Gets a collection of controls of the desired type within an element container.\r\n            </summary>\r\n            <typeparam name=\"TControl\">The <see cref=\"T:WatiN.Core.Control`1\"/> subclass</typeparam>\r\n            <param name=\"elementContainer\">The element container to search within</param>\r\n            <returns>The control object</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"elementContainer\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control.ToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control.GetAdapter``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control.GetAttributeValueImpl(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Control.Element\">\r\n            <summary>\r\n            Gets the element wrapped by the control.\r\n            </summary>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.WatiNException\">Thrown if the control object does not have a reference\r\n            to an element or if the element does not satisfy the control's constraints</exception>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Control.Exists\">\r\n            <summary>\r\n            Returns true if the element wrapped by the control exists.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Control.ElementConstraint\">\r\n            <summary>\r\n            Gets a constraint that is used to help locate the element that belongs to the control.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default implementation returns <see cref=\"P:WatiN.Core.Find.Any\"/>.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to enforce additional constraints regarding how\r\n            the element is located.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control`1.VerifyElementProperties(`0)\">\r\n            <summary>\r\n            Verifies that the element represents the correct kind of element for the control.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default implementation verifies that <paramref name=\"element\"/> satisfies <see cref=\"T:WatiN.Core.Constraints.ElementConstraint\"/>.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to customize how verification takes place.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"element\">The element to verify, not null</param>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.WatiNException\">Thrown if the element's properties fail verification</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Control`1.InitializeContents\">\r\n            <summary>\r\n            Initializes the contents of the control object.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Control`1.Element\">\r\n            <summary>\r\n            Gets the element wrapped by the control.\r\n            </summary>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.WatiNException\">Thrown if the control object does not have a reference\r\n            to an element or if the element does not satisfy the control's constraints</exception>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ListItemCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.ListItem\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ListItemCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.ListItemCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ListItemCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.TableBodyCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.TableBody\"/> instances within a Document or Element. \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableBodyCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ParaCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Para\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ParaCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.ParaCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ParaCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.MissingAlertException\">\r\n            <summary>\r\n            Thrown if no more alerts are available when calling PopUpWatcher.PopAlert.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.ReturnDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether this instance can handle the specified window by checking <see cref=\"P:WatiN.Core.Native.Windows.Window.StyleInHex\"/>.\r\n            equals \"94C803C5\" and if the window has a button with Id 1.\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if this instance [can handle dialog] the specified window; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.DialogHandlers.LogonDialogHandler\">\r\n             <summary>\r\n             This class handles the logon dialog by passing in the username and password\r\n             and clicking the OK button.\r\n             </summary>\r\n             <example>\r\n             The following code shows the use of this dialog handler\r\n             <code>\r\n             IE ie = new IE();\r\n            \r\n             ie.DialogWatcher.Add(new LogonDialogHandler(@\"domain\\username\", \"password\"));\r\n            \r\n             ie.GoTo(\"https://www.somesecuresite.com\");\r\n             </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.LogonDialogHandler.#ctor(System.String,System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.LogonDialogHandler\"/> class.\r\n            </summary>\r\n            <param name=\"userName\">Name of the user. Is required.</param>\r\n            <param name=\"password\">The password. If no password is required, it can be left blank (<c>null</c> or <c>String.Empty</c>). </param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.LogonDialogHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Handles the logon dialog by filling in the username and password.\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.LogonDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether the specified window is a logon dialog.\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if the specified window is a logon dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEUtils.RunScript(System.Text.StringBuilder,mshtml.IHTMLWindow2)\">\r\n            <summary>\r\n            Runs the javascript code in IE.\r\n            </summary>\r\n            <param name=\"scriptCode\">The javascript code.</param>\r\n            <param name=\"window\">The parent window of the document.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEUtils.RunScript(System.String,mshtml.IHTMLWindow2)\">\r\n            <summary>\r\n            Runs the javascript code in IE.\r\n            </summary>\r\n            <param name=\"scriptCode\">The javascript code.</param>\r\n            <param name=\"window\">The parent window of the document.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEUtils.RunScript(System.String,System.String,mshtml.IHTMLWindow2)\">\r\n            <summary>\r\n            Runs the script code in IE.\r\n            </summary>\r\n            <param name=\"scriptCode\">The script code.</param>\r\n            <param name=\"language\">The language.</param>\r\n            <param name=\"window\">The parent window of the document.</param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.Chrome.ChromeElementCollection\">\r\n            <summary>\r\n            Chrome implementation of the <see cref=\"T:WatiN.Core.Native.INativeElementCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeElementCollection.#ctor(WatiN.Core.Native.ClientPortBase,System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.Chrome.ChromeElementCollection\"/> class.\r\n            </summary>\r\n            <param name=\"clientPort\">\r\n            The client port.\r\n            </param>\r\n            <param name=\"containerReference\">\r\n            The container reference.\r\n            </param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.DialogHandlers.DialogHandlerHelper\">\r\n             <summary>\r\n             This dialoghandler can be used when it isn't clear which DialogHandler should be used to handle a dialog. \r\n             The property <see cref=\"P:WatiN.Core.DialogHandlers.DialogHandlerHelper.CandidateDialogHandlers\"/> will contain a list of dialoghandlers which can handle this dialog,\r\n             bases on calling their <see cref=\"M:WatiN.Core.Interfaces.IDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window,System.IntPtr)\"/> method.\r\n             </summary>\r\n             <example>\r\n             Following an example on how to use this Dialoghandler. After the using helper.CandidateDialogHandlers will contain \"AlertDialogHandler\".\r\n            <code>\r\n             var helper = new DialogHandlerHelper()\r\n             using (new UseDialogOnce(ie.DialogWatcher, helper)\r\n             {\r\n                 ie.Button(\"showAlert\").Click();\r\n             }\r\n            </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DialogHandlers.DialogHandlerHelper.CandidateDialogHandlers\">\r\n            <summary>\r\n            Returns a list of type names of dialoghandlers which can handle this dialog, \r\n            bases on calling their <see cref=\"M:WatiN.Core.Interfaces.IDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window,System.IntPtr)\"/> method.\r\n            </summary>\r\n            <value>The candidate dialog handlers.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ListItem\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML li elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ListItem.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.ListItem\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"nativeElement\">The HTML li element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ListItem.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.ListItem\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The HTML li element.</param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.TableRowCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.TableRow\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableRowCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.TableRowCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableRowCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.IE\">\r\n            <summary>\r\n            This is the main class to access a webpage in Internet Explorer to \r\n            get to all the elements and (i)frames on the page.\r\n            \r\n            </summary>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(\"http://watin.sourceforge.net\");\r\n                   ie.Link(Find.ByText(\"RSS Feeds\")).Click;\r\n                   ie.Close;\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.InternetExplorers\">\r\n            <summary>\r\n            Creates a collection of new IE instances associated with open Internet Explorer windows.\r\n            </summary>\r\n            <returns>An IE instance which is complete loaded.</returns>\r\n            <example>\r\n            This code snippet illustrates the use of this method to found out the number of open\r\n            Internet Explorer windows.\r\n            <code>int IECount = IE.InternetExplorers.Length;</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.InternetExplorersNoWait\">\r\n            <summary>\r\n            Creates a collection of new IE instances associated with open Internet Explorer windows. Use this\r\n            method if you don't want WatiN to wait until a document is fully loaded before returning it.\r\n            This might be handy in situations where you encounter Internet Explorer instances which are always\r\n            busy loading and that way blocks itteration through the collection.\r\n            </summary>\r\n            <returns>An IE instance which might not have been complete loaded yet.</returns>\r\n            <example>\r\n            This code snippet illustrates the use of this method to itterate through all internet explorer instances.\r\n            <code>\r\n            foreach (IE ie in IE.InternetExplorersNoWait)\r\n            {\r\n            // do something but be aware that the page might not be completely loaded yet.\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor\">\r\n            <summary>\r\n            Opens a new Internet Explorer with a blank page. \r\n            <note>\r\n            When the <see cref=\"T:WatiN.Core.IE\"/>\r\n            instance is destroyed the created Internet Explorer window will also be closed.\r\n            </note>\r\n            </summary>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE();\r\n                   ie.GoTo(\"http://watin.sourceforge.net\");\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Opens a new Internet Explorer with a blank page. \r\n            <note>\r\n            When the <see cref=\"T:WatiN.Core.IE\"/>\r\n            instance is destroyed the created Internet Explorer window will also be closed.\r\n            </note>\r\n            </summary>\r\n            <param name=\"createInNewProcess\">if set to <c>true</c> the IE instance is created in a new process.</param>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE();\r\n                   ie.GoTo(\"http://watin.sourceforge.net\");\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.String)\">\r\n            <summary>\r\n            Opens a new Internet Explorer and navigates to the given <paramref name=\"url\"/>.\r\n            <note>\r\n            When the <see cref=\"T:WatiN.Core.IE\"/>\r\n            instance is destroyed the created Internet Explorer window will also be closed.\r\n            </note>\r\n            </summary>\r\n            <param name=\"url\">The URL to open</param>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public OpenWatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(\"http://watin.sourceforge.net\");\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.String,System.Boolean)\">\r\n            <summary>\r\n            Opens a new Internet Explorer and navigates to the given <paramref name=\"url\"/>.\r\n            <note>\r\n            When the <see cref=\"T:WatiN.Core.IE\"/>\r\n            instance is destroyed the created Internet Explorer window will also be closed.\r\n            </note>\r\n            </summary>\r\n            <param name=\"url\">The URL to open</param>\r\n            <param name=\"createInNewProcess\">if set to <c>true</c> the IE instance is created in a new process.</param>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public OpenWatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(\"http://watin.sourceforge.net\");\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.Uri)\">\r\n            <summary>\r\n            Opens a new Internet Explorer and navigates to the given <paramref name=\"uri\"/>.\r\n            <note>\r\n            When the <see cref=\"T:WatiN.Core.IE\"/>\r\n            instance is destroyed the created Internet Explorer window will also be closed.\r\n            </note>\r\n            </summary>\r\n            <param name=\"uri\">The Uri to open</param>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using System;\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public OpenWatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(new Uri(\"http://watin.sourceforge.net\"));\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.Uri,System.Boolean)\">\r\n            <summary>\r\n            Opens a new Internet Explorer and navigates to the given <paramref name=\"uri\"/>.\r\n            <note>\r\n            When the <see cref=\"T:WatiN.Core.IE\"/>\r\n            instance is destroyed the created Internet Explorer window will also be closed.\r\n            </note>\r\n            </summary>\r\n            <param name=\"uri\">The Uri to open</param>\r\n            <param name=\"createInNewProcess\">if set to <c>true</c> the IE instance is created in a new process.</param>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge.\r\n            <code>\r\n            using System;\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public OpenWatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(new Uri(\"http://watin.sourceforge.net\"));\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.String,WatiN.Core.DialogHandlers.LogonDialogHandler)\">\r\n            <summary>\r\n            Opens a new Internet Explorer and navigates to the given <paramref name=\"url\"/>.\r\n            </summary>\r\n            <param name=\"url\">The Url to open</param>\r\n            <param name=\"logonDialogHandler\">A <see cref=\"T:WatiN.Core.DialogHandlers.LogonDialogHandler\"/> class instanciated with the logon credentials.</param>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge leaving the created Internet Explorer open.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   LogonDialogHandler logon = new LogonDialogHandler(\"username\", \"password\");\r\n                   IE ie = new IE(\"http://watin.sourceforge.net\", logon);\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.String,WatiN.Core.DialogHandlers.LogonDialogHandler,System.Boolean)\">\r\n            <summary>\r\n            Opens a new Internet Explorer and navigates to the given <paramref name=\"url\"/>.\r\n            </summary>\r\n            <param name=\"url\">The Url to open</param>\r\n            <param name=\"logonDialogHandler\">A <see cref=\"T:WatiN.Core.DialogHandlers.LogonDialogHandler\"/> class instanciated with the logon credentials.</param>\r\n            <param name=\"createInNewProcess\">if set to <c>true</c> the IE instance is created in a new process.</param>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge leaving the created Internet Explorer open.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   LogonDialogHandler logon = new LogonDialogHandler(\"username\", \"password\");\r\n                   IE ie = new IE(\"http://watin.sourceforge.net\", logon);\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.Uri,WatiN.Core.DialogHandlers.LogonDialogHandler)\">\r\n            <summary>\r\n            Opens a new Internet Explorer and navigates to the given <paramref name=\"uri\"/>.\r\n            </summary>\r\n            <param name=\"uri\">The Uri to open</param>\r\n            <param name=\"logonDialogHandler\">A <see cref=\"T:WatiN.Core.DialogHandlers.LogonDialogHandler\"/> class instanciated with the logon credentials.</param>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge leaving the created Internet Explorer open.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   LogonDialogHandler logon = new LogonDialogHandler(\"username\", \"password\");\r\n                   IE ie = new IE(new Uri(\"http://watin.sourceforge.net\"), logon);\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.Uri,WatiN.Core.DialogHandlers.LogonDialogHandler,System.Boolean)\">\r\n            <summary>\r\n            Opens a new Internet Explorer and navigates to the given <paramref name=\"uri\"/>.\r\n            </summary>\r\n            <param name=\"uri\">The Uri to open</param>\r\n            <param name=\"logonDialogHandler\">A <see cref=\"T:WatiN.Core.DialogHandlers.LogonDialogHandler\"/> class instanciated with the logon credentials.</param>\r\n            <param name=\"createInNewProcess\">if set to <c>true</c> the IE instance is created in a new process.</param>\r\n            <remarks>\r\n            You could also use one of the overloaded constructors.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge leaving the created Internet Explorer open.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   LogonDialogHandler logon = new LogonDialogHandler(\"username\", \"password\");\r\n                   IE ie = new IE(new Uri(\"http://watin.sourceforge.net\"), logon);\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(WatiN.Core.Native.InternetExplorer.IEBrowser)\">\r\n            <summary>\r\n            (Re)Use existing <see cref=\"T:WatiN.Core.Native.InternetExplorer.IEBrowser\"/> object. \r\n            </summary>\r\n            <param name=\"ieBrowser\">An object implementing <see cref=\"T:WatiN.Core.Native.InternetExplorer.IEBrowser\"/>.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.#ctor(System.Object)\">\r\n            <summary>\r\n            Use existing InternetExplorer object. The param is of type\r\n            object because otherwise all projects using WatiN should also\r\n            reference the Interop.SHDocVw assembly.\r\n            </summary>\r\n            <param name=\"iwebBrowser2\">An object implementing IWebBrowser2 (like Interop.SHDocVw.InternetExplorer object)</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.Close\">\r\n            <summary>\r\n            Closes the referenced Internet Explorer. Almost\r\n            all other functionality in this class and the element classes will give\r\n            exceptions when used after closing the browser.\r\n            </summary>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge. \r\n            <code>\r\n            using WatiN.Core;\r\n            using System.Diagnostics;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   IE ie = new IE(\"http://watin.sourceforge.net\");\r\n                   Debug.WriteLine(ie.Html);\r\n                   ie.Close;\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.Reopen(System.Uri,WatiN.Core.DialogHandlers.LogonDialogHandler,System.Boolean)\">\r\n            <summary>\r\n            Closes then reopens Internet Explorer and navigates to the given <paramref name=\"uri\"/>.\r\n            </summary>\r\n            <param name=\"uri\">The Uri to open</param>\r\n            <param name=\"logonDialogHandler\">A <see cref=\"T:WatiN.Core.DialogHandlers.LogonDialogHandler\"/> class instanciated with the logon credentials.</param>\r\n            <param name=\"createInNewProcess\">if set to <c>true</c> the IE instance is created in a new process.</param>\r\n            <remarks>\r\n            You could also use one of the overloaded methods.\r\n            </remarks>\r\n            <example>\r\n            The following example creates a new Internet Explorer instances and navigates to\r\n            the WatiN Project website on SourceForge leaving the created Internet Explorer open.\r\n            <code>\r\n            using WatiN.Core;\r\n            \r\n            namespace NewIEExample\r\n            {\r\n               public class WatiNWebsite\r\n               {\r\n                 public WatiNWebsite()\r\n                 {\r\n                   LogonDialogHandler logon = new LogonDialogHandler(\"username\", \"password\");\r\n                   IE ie = new IE(new Uri(\"http://watin.sourceforge.net\"), logon);\r\n                   ie.Reopen();\r\n                 }\r\n               }\r\n             }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.ForceClose\">\r\n            <summary>\r\n            Closes <i>all</i> running instances of Internet Explorer by killing the\r\n            process these instances run in. \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.ClearCookies\">\r\n            <summary>\r\n            Clears all browser cookies.\r\n            </summary>\r\n            <remarks>\r\n            Internet Explorer maintains an internal cookie cache that does not immediately\r\n            expire when cookies are cleared.  This is the case even when the cookies are\r\n            cleared using the Internet Options dialog.  If cookies have been used by\r\n            the current browser session it may be necessary to <see cref=\"M:WatiN.Core.Browser.Reopen\"/> the\r\n            browser to ensure the internal cookie cache is flushed.  Therefore it is\r\n            recommended to clear cookies at the beginning of the test before navigating\r\n            to any pages (other than \"about:blank\") to avoid having to reopen the browser.\r\n            </remarks>\r\n            <example>\r\n            <code>\r\n            // Clear cookies first.\r\n            IE ie = new IE();\r\n            ie.ClearCookies();\r\n            \r\n            // Then go to the site and sign in.\r\n            ie.GoTo(\"http://www.example.com/\");\r\n            ie.Link(Find.ByText(\"Sign In\")).Click();\r\n            </code>\r\n            </example>\r\n            <seealso cref=\"M:WatiN.Core.Browser.Reopen\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.ClearCookies(System.String)\">\r\n            <summary>\r\n            Clears the browser cookies associated with a particular site and to\r\n            any of the site's subdomains.\r\n            </summary>\r\n            <remarks>\r\n            Internet Explorer maintains an internal cookie cache that does not immediately\r\n            expire when cookies are cleared.  This is the case even when the cookies are\r\n            cleared using the Internet Options dialog.  If cookies have been used by\r\n            the current browser session it may be necessary to <see cref=\"M:WatiN.Core.Browser.Reopen\"/> the\r\n            browser to ensure the internal cookie cache is flushed.  Therefore it is\r\n            recommended to clear cookies at the beginning of the test before navigating\r\n            to any pages (other than \"about:blank\") to avoid having to reopen the browser.\r\n            </remarks>\r\n            <param name=\"url\">The site url associated with the cookie.</param>\r\n            <example>\r\n            <code>\r\n            // Clear cookies first.\r\n            IE ie = new IE();\r\n            ie.ClearCookies(\"http://www.example.com/\");\r\n            \r\n            // Then go to the site and sign in.\r\n            ie.GoTo(\"http://www.example.com/\");\r\n            ie.Link(Find.ByText(\"Sign In\")).Click();\r\n            </code>\r\n            </example>\r\n            <seealso cref=\"M:WatiN.Core.Browser.Reopen\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.ClearCache\">\r\n            <summary>\r\n            Clears the browser cache but leaves cookies alone.\r\n            </summary>\r\n            <example>\r\n            <code>\r\n            // Clear the cache and cookies.\r\n            IE ie = new IE();\r\n            ie.ClearCache();\r\n            ie.ClearCookies();\r\n            \r\n            // Then go to the site and sign in.\r\n            ie.GoTo(\"http://www.example.com/\");\r\n            ie.Link(Find.ByText(\"Sign In\")).Click();\r\n            </code>\r\n            </example>\r\n            <seealso cref=\"M:WatiN.Core.Browser.Reopen\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.GetCookie(System.String,System.String)\">\r\n            <summary>\r\n            Gets the value of a cookie.\r\n            </summary>\r\n            <remarks>\r\n            This method cannot retrieve the value of cookies protected by the <c>httponly</c> security option.\r\n            </remarks>\r\n            <param name=\"url\">The site url associated with the cookie.</param>\r\n            <param name=\"cookieName\">The cookie name.</param>\r\n            <returns>The cookie data of the form:\r\n            &lt;name&gt;=&lt;value&gt;[; &lt;name&gt;=&lt;value&gt;]...\r\n            [; expires=&lt;date:DAY, DD-MMM-YYYY HH:MM:SS GMT&gt;][; domain=&lt;domain_name&gt;]\r\n            [; path=&lt;some_path&gt;][; secure][; httponly].  Returns null if there are no associated cookies.</returns>\r\n            <seealso cref=\"M:WatiN.Core.IE.ClearCookies\"/>\r\n            <seealso cref=\"M:WatiN.Core.IE.SetCookie(System.String,System.String)\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.SetCookie(System.String,System.String)\">\r\n            <summary>\r\n            Sets the value of a cookie.\r\n            </summary>\r\n            <remarks>\r\n            If no expiration date is specified, the cookie expires when the session ends.\r\n            </remarks>\r\n            <param name=\"url\">The site url associated with the cookie.</param>\r\n            <param name=\"cookieData\">The cookie data of the form:\r\n            &lt;name&gt;=&lt;value&gt;[; &lt;name&gt;=&lt;value&gt;]...\r\n            [; expires=&lt;date:DAY, DD-MMM-YYYY HH:MM:SS GMT&gt;][; domain=&lt;domain_name&gt;]\r\n            [; path=&lt;some_path&gt;][; secure][; httponly].</param>\r\n            <seealso cref=\"M:WatiN.Core.IE.ClearCookies\"/>\r\n            <seealso cref=\"M:WatiN.Core.IE.GetCookie(System.String,System.String)\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.WaitForComplete(System.Int32)\">\r\n            <summary>\r\n            Waits till the webpage, it's frames and all it's elements are loaded. This\r\n            function is called by WatiN after each action (like clicking a link) so you\r\n            should have to use this function on rare occasions.\r\n            </summary>\r\n            <param name=\"waitForCompleteTimeOut\">The number of seconds to wait before timing out</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.Dispose(System.Boolean)\">\r\n            <summary>\r\n            This method must be called by its inheritor to dispose references\r\n            to internal resources.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.HtmlDialog(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Find a HtmlDialog by an attribute. Currently \r\n            Find.ByUrl and Find.ByTitle are supported.\r\n            </summary>\r\n            <param name=\"findBy\">The url of the html page shown in the dialog</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IE.HtmlDialog(WatiN.Core.Constraints.Constraint,System.Int32)\">\r\n            <summary>\r\n            Find a HtmlDialog by an attribute within the given <paramref name=\"timeout\" /> period.\r\n            Currently Find.ByUrl and Find.ByTitle are supported.\r\n            </summary>\r\n            <param name=\"findBy\">The url of the html page shown in the dialog</param>\r\n            <param name=\"timeout\">Number of seconds before the search times out.</param>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.IE.InternetExplorer\">\r\n            <summary>\r\n            Use this method to gain access to the IWebBrowser2 interface of Internet Explorer.\r\n            Do this by referencing the Interop.SHDocVw assembly (supplied in the WatiN distribution)\r\n            and cast the return value of this method to type SHDocVw.IWebBrowser2.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.IE.AutoClose\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to auto close IE after destroying\r\n            a reference to the corresponding IE instance.\r\n            </summary>\r\n            <value><c>true</c> when to auto close IE (this is the default); otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.IE.HtmlDialogs\">\r\n            <summary>\r\n            Returns a collection of open HTML dialogs (modal as well as modeless).\r\n            </summary>\r\n            <value>The HTML dialogs.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.IE.HtmlDialogsNoWait\">\r\n            <summary>\r\n            Returns a collection of open HTML dialogs (modal as well as modeless).\r\n            When itterating through this collection WaitForComplete will not be\r\n            called on a HTML dialog before returning it from the collection.\r\n            </summary>\r\n            <value>The HTML dialogs.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.FormCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Form\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FormCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.FormCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FormCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.ElementDisabledException\">\r\n            <summary>\r\n            Thrown if an element is disabled and the current action (like clicking a\r\n            disabled link) is not allowed.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.UriComparer\">\r\n            <summary>\r\n            Class that supports comparing a <see cref=\"T:System.Uri\"/> instance with a string value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.UriComparer.#ctor(System.Uri)\">\r\n            <summary>\r\n            Constructor, querystring will not be ignored in comparisons.\r\n            </summary>\r\n            <param name=\"uri\">Uri for comparison.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.UriComparer.#ctor(System.Uri,System.Boolean)\">\r\n            <summary>\r\n            Constructor, querystring can be ignored or not ignored in comparisons.\r\n            </summary>\r\n            <param name=\"uri\">Uri for comparison.</param>\r\n            <param name=\"ignoreQuery\">Set to true to ignore querystrings in comparison.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.UriComparer.Compare(System.String)\">\r\n            <summary>\r\n            Compares the specified value. \r\n            </summary>\r\n            <param name=\"value\">The url to compare with.</param>\r\n            <returns>\r\n            Should return <c>true</c> or <c>false</c>, which is the default.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.UriComparer.Compare(System.Uri)\">\r\n            <summary>\r\n            Compares the specified Uri.\r\n            </summary>\r\n            <param name=\"url\">The Uri.</param>\r\n            <returns><c>true</c> when equal; otherwise <c>false</c></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.UriComparer.ToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.StringContainsAndCaseInsensitiveComparer\">\r\n            <summary>\r\n            Class that supports a simple matching of two strings.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.StringComparer\">\r\n            <summary>\r\n            Class that supports an exact comparison of two string values.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.StringComparer.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Comparers.StringComparer\"/> class.\r\n            The string comparison done by <see cref=\"M:WatiN.Core.Comparers.StringComparer.Compare(System.String)\"/> will ignore any case differences.\r\n            </summary>\r\n            <param name=\"expectedValue\">The value used to compare against.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.StringComparer.#ctor(System.String,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Comparers.StringComparer\"/> class and allows\r\n            to specify the behavior regarding case sensitive comparisons.\r\n            </summary>\r\n            <param name=\"comparisonValue\">The value used to compare against.</param>\r\n            <param name=\"ignoreCase\">if set to <c>false</c> <see cref=\"M:WatiN.Core.Comparers.StringComparer.Compare(System.String)\"/>\r\n            will also check the casing of the <see cref=\"T:System.String\"/>.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"comparisonValue\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.StringComparer.Compare(System.String)\">\r\n            <summary>\r\n            Compares the specified value. \r\n            </summary>\r\n            <param name=\"value\">The value to compare with.</param>\r\n            <returns>The result of the comparison.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.StringComparer.AreEqual(System.String,System.String)\">\r\n            <summary>\r\n            Compare the two values with <seealso cref=\"T:System.Globalization.CultureInfo\"/> set to InvariantCulture.\r\n            </summary>\r\n            <param name=\"lhs\">The left hand side value.</param>\r\n            <param name=\"rhs\">The right hand side value.</param>\r\n            <returns><c>true</c> or <c>false</c></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.StringComparer.AreEqual(System.String,System.String,System.Boolean)\">\r\n            <summary>\r\n            Compare the two values with <seealso cref=\"T:System.Globalization.CultureInfo\"/> set to InvariantCulture.\r\n            </summary>\r\n            <param name=\"lhs\">The left hand side value.</param>\r\n            <param name=\"rhs\">The right hand side value.</param>\r\n            <param name=\"ignoreCase\">if set to <c>true</c> it compares case insensitive.</param>\r\n            <returns><c>true</c> or <c>false</c></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.StringComparer.ToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Comparers.StringComparer.ComparisonValue\">\r\n            <summary>\r\n            Gets the value to compare against.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.StringContainsAndCaseInsensitiveComparer.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Comparers.StringContainsAndCaseInsensitiveComparer\"/> class.\r\n            </summary>\r\n            <param name=\"comparisonValue\">The value used to compare against.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.StringContainsAndCaseInsensitiveComparer.Compare(System.String)\">\r\n            <summary>\r\n            Checks if the given <paramref name=\"value\"/> contains the string to compare against.\r\n            Comparison is done case insensitive.\r\n            </summary>\r\n            <param name=\"value\">The value to compare with.</param>\r\n            <returns>The result of the comparison.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.StringContainsAndCaseInsensitiveComparer.ToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.PageAttribute\">\r\n            <summary>\r\n            Specifies metadata about a <see cref=\"T:WatiN.Core.Page\"/> class.\r\n            </summary>\r\n            <seealso cref=\"T:WatiN.Core.Page\"/>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.PageAttribute.UrlRegex\">\r\n            <summary>\r\n            Gets or sets a regular expression that is expected to match the Url of the page.\r\n            </summary>\r\n            <remarks>\r\n            The regular expression should generally exclude host name and domain information\r\n            since it may vary between production and testing environments.  It only needs\r\n            to match enough of the Url to reliably detect that page navigation has proceeded\r\n            as planned.\r\n            </remarks>\r\n            <value>The url regular expression or null if none</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.PageAttribute.IsSecure\">\r\n            <summary>\r\n            Gets or sets whether the web page url is always expected to be access using the HTTPS protocol.\r\n            </summary>\r\n            <remarks>\r\n            When set to <c>true</c>, page url validation will check that the HTTPS protocol appears in\r\n            the page url.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Windows.Window.ProcessID\">\r\n            <summary>\r\n            Gets the process ID in which the window is running.\r\n            </summary>\r\n            <value>The process ID.</value>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.WaitForCompleteBase.DoWait\">\r\n            <summary>\r\n            This method calls InitTimeOut and waits till IE is ready\r\n            processing or the timeout period has expired.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.WaitForCompleteBase.InitialSleep\">\r\n            <summary>\r\n            Waits an initial small sleep time (10ms default) to allow the browser some\r\n            time to perform any immediately pending asynchronous operations that might\r\n            cause it to enter a busy state.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.WaitForCompleteBase.WaitForCompleteOrTimeout\">\r\n            <summary>\r\n            This method waits till IE is ready processing \r\n            or the timeout period has expired. You should\r\n            call InitTimeout prior to calling this method.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.WaitForCompleteBase.InitTimeout\">\r\n            <summary>\r\n            This method is called to initialise the start time for\r\n            determining a time out. It's set to the current time.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.WaitForCompleteBase.IsTimedOut\">\r\n            <summary>\r\n            This method evaluates the time between the last call to InitTimeOut\r\n            and the current time. If the timespan is more than 30 seconds, the\r\n            return value will be true.\r\n            </summary>\r\n            <returns>If the timespan is more than 30 seconds, the\r\n            return value will be true</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.WaitForCompleteBase.ThrowExceptionWhenTimeout(System.String)\">\r\n            <summary>\r\n            This method checks the return value of IsTimedOut. When true, it will\r\n            throw a TimeoutException with the timeoutMessage param as message.\r\n            </summary>\r\n            <param name=\"timeoutMessage\">The message to present when the TimeoutException is thrown</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEWaitForComplete.WaitUntilNotNull(WatiN.Core.UtilityClasses.DoFunc{System.Nullable{System.Boolean}},WatiN.Core.UtilityClasses.BuildTimeOutExceptionMessage)\">\r\n            <summary>\r\n            Waits until the method returns true or false.\r\n            </summary>\r\n            <param name=\"func\">The function to evaluate.</param>\r\n            <param name=\"exceptionMessage\">A function to build an exception message.</param>\r\n            <returns>The last function result.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.TimeoutException\">Thrown if a timeout occurs.</exception>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.Chrome.ChromeBrowser\">\r\n            <summary>\r\n            Native driver the communicates with the Chrome browser using a\r\n            telnet session <see cref=\"T:WatiN.Core.Native.ClientPortBase\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.JSBrowserBase\">\r\n            <summary>\r\n            Defines behaviour common to most javascript controlled browsers.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.INativeBrowser\">\r\n            <summary>\r\n            Provides access to native services offered by a web browser.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeBrowser.NavigateTo(System.Uri)\">\r\n            <summary>\r\n            Navigates to the specified <paramref name=\"url\"/>.\r\n            </summary>\r\n            <param name=\"url\">The URL to navigate to.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeBrowser.NavigateToNoWait(System.Uri)\">\r\n            <summary>\r\n            Navigates to the specified <paramref name=\"url\"/> without waiting for the page to finish loading.\r\n            </summary>\r\n            <param name=\"url\">The URL to navigate to.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeBrowser.GoBack\">\r\n            <summary>\r\n            Navigates the browser back to the previously display Url\r\n            </summary>\r\n            <returns><c>True</c> if succeded otherwise <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeBrowser.GoForward\">\r\n            <summary>\r\n            Navigates the browser forward to the next displayed Url (like the forward\r\n            button in Internet Explorer). \r\n            </summary>\r\n            <returns><c>True</c> if succeded otherwise <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeBrowser.Reopen\">\r\n            <summary>\r\n            Closes and then reopens the browser with a blank page.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.INativeBrowser.Refresh\">\r\n            <summary>\r\n            Reloads the currently displayed webpage (like the Refresh/reload button in \r\n            a browser).\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.INativeBrowser.hWnd\">\r\n            <summary>\r\n            Gets the window handle of the current browser.\r\n            </summary>\r\n            <value>Window handle of the current browser.</value>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.#ctor(WatiN.Core.Native.ClientPortBase)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.JSBrowserBase\"/> class.\r\n            </summary>\r\n            <param name=\"clientPort\">The client port.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.GoBack\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.GoForward\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.Reopen\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.NavigateTo(System.Uri)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.NavigateToNoWait(System.Uri)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.Reload(System.Boolean)\">\r\n            <summary>\r\n            Reloads this instance.\r\n            </summary>\r\n            <param name=\"forceGet\">When it is <c>true</c>, causes the page to always be reloaded from the server. \r\n            If it is <c>false</c>, the browser may reload the page from its cache.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.Refresh\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.Close\">\r\n            <summary>\r\n            Closes the browser.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.JSBrowserBase.LoadUri(System.Uri,System.Boolean)\">\r\n            <summary>\r\n            Load a URL into the document. see: http://developer.mozilla.org/en/docs/XUL:browser#m-loadURI\r\n            </summary>\r\n            <param name=\"url\">The URL to laod.</param>\r\n            <param name=\"waitForComplete\">If false, makes to execution of LoadUri asynchronous.</param>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.JSBrowserBase.ClientPort\">\r\n            <summary>\r\n            Gets the client port used to communicate with the instance of FireFox.\r\n            </summary>\r\n            <value>The client port.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.JSBrowserBase.BrowserVariableName\">\r\n            <summary>\r\n            Gets the name of the browser variable.\r\n            </summary>\r\n            <value>The name of the browser variable.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.JSBrowserBase.hWnd\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeBrowser.#ctor(WatiN.Core.Native.ClientPortBase)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.Chrome.ChromeBrowser\"/> class.\r\n            </summary>\r\n            <param name=\"clientPort\">The client port.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeBrowser.LoadUri(System.Uri,System.Boolean)\">\r\n            <summary>\r\n            Load a URL into the document.\r\n            </summary>\r\n            <param name=\"url\">The URL to laod.</param>\r\n            <param name=\"waitForComplete\">If false, makes to execution of LoadUri asynchronous.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeBrowser.ReAttachToTab(System.Uri)\">\r\n            <summary>\r\n            Reattaches to the first tab. This is required every time the document\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.HtmlColor\">\r\n            <summary>\r\n            This class helps converting all kinds of html color formats\r\n            to one uniform <see cref=\"T:WatiN.Core.HtmlColor\"/> object. IE and FireFox return\r\n            differently formatted results when retrieving a color, for instance backgroundColor. This class\r\n            provides a way to keep your tests browser agnostic when it comes to checking color values.\r\n            </summary>\r\n            <example>\r\n            Following some examples of valid use of this class. These all create the same\r\n            <see cref=\"T:WatiN.Core.HtmlColor\"/> object:\r\n            <code>\r\n            var blue = new HtmlCode(\"blue\");\r\n            var blue = new HtmlCode(\"#0000FF\");\r\n            var blue = new HtmlCode(\"#00F\");\r\n            var blue = new HtmlCode(\"rgb(0,0,255)\");\r\n            </code>\r\n            The class provides factory properties for creating the 16 color names defined\r\n            by the W3C.\r\n            <code>\r\n            var blue = HtmlCode.Blue;\r\n            </code>\r\n            The power of this class lies in the fact that you can use it in your test\r\n            expectations no matter what color format the browser returns.\r\n            <code>\r\n            var backgroundColor = browser.Div(\"with_background_color\").Style.BackgroundColor;\r\n            Assert.That(new HtmlColor(backgroundColor), Is.EqualTo(HtmlColor.Yellow));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.HtmlColor.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.HtmlColor\"/> class.\r\n            </summary>\r\n            <param name=\"value\">The value.</param>\r\n            <exception cref=\"T:System.FormatException\">Will be thrown if the value can't be converted\r\n            to a color.</exception>\r\n            <example>\r\n            Following some examples of valid use of this class. These all create the same\r\n            <see cref=\"T:WatiN.Core.HtmlColor\"/> object:\r\n            <code>\r\n            var blue = new HtmlCode(\"blue\");\r\n            var blue = new HtmlCode(\"#0000FF\");\r\n            var blue = new HtmlCode(\"#00F\");\r\n            var blue = new HtmlCode(\"rgb(0,0,255)\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.HtmlColor.Equals(System.Object)\">\r\n            <summary>\r\n            Determines whether the specified <see cref=\"T:System.Object\"/> is equal to the current <see cref=\"T:WatiN.Core.HtmlColor\"/>.\r\n            </summary>\r\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with the current <see cref=\"T:WatiN.Core.HtmlColor\"/>.</param>\r\n            <returns>\r\n            true if the specified <see cref=\"T:System.Object\"/> is equal to the current <see cref=\"T:WatiN.Core.HtmlColor\"/>; otherwise, false.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.HtmlColor.GetHashCode\">\r\n            <summary>\r\n            Serves as a hash function for a particular type.\r\n            </summary>\r\n            <returns>\r\n            A hash code for the current <see cref=\"T:WatiN.Core.HtmlColor\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.HtmlColor.ToString\">\r\n            <summary>\r\n            Returns a <see cref=\"T:System.String\"/> that represents the current <see cref=\"T:WatiN.Core.HtmlColor\"/>.\r\n            </summary>\r\n            <returns>\r\n            A <see cref=\"T:System.String\"/> that represents the current <see cref=\"T:WatiN.Core.HtmlColor\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.HtmlColor.Color\">\r\n            <summary>\r\n            Returns the <see cref=\"T:System.Drawing.Color\"/> wrapped by this class.\r\n            </summary>\r\n            <value>The color.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.HtmlColor.ToName\">\r\n            <summary>\r\n            Returns a descriptive W3C color name (Aqua, Black, Blue, Fuchsia, Gray, Green, Lime, \r\n            Maroon, Navy, Olive, Purple, Red, Silver, Teal, White or Yellow). If it's none\r\n            of these colors, it will return \"unknown\". \r\n            </summary>\r\n            <value>To name.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.HtmlColor.ToHexString\">\r\n            <summary>\r\n            Returns the color in a html hex code formatted string\r\n            </summary>\r\n            <value>To hex string.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.HtmlColor.ToRgbString\">\r\n            <summary>\r\n            Returns the color in a rgb formatted string.\r\n            </summary>\r\n            <value>To RGB string.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.UtilityClasses.SimpleTimer\">\r\n             <summary>\r\n             This class provides a simple way to handle loops that have to time out after \r\n             a specified number of seconds.\r\n             </summary>\r\n             <example>\r\n             This is an example how you could use this class in your code.\r\n             <code>\r\n             // timer should elapse after 30 seconds\r\n             SimpleTimer timeoutTimer = new SimpleTimer(30);\r\n            \r\n             do\r\n             {\r\n               // Your check logic goes here\r\n               \r\n               // wait 200 miliseconds\r\n               Thread.Sleep(200);\r\n             } while (!timeoutTimer.Elapsed);\r\n             </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.SimpleTimer.#ctor(System.TimeSpan)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.UtilityClasses.SimpleTimer\"/> class.\r\n            </summary>\r\n            <param name=\"timeout\">The timeout.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">Thrown if <paramref name=\"timeout\"/> is negative.</exception>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.UtilityClasses.SimpleTimer.Elapsed\">\r\n            <summary>\r\n            Gets a value indicating whether this <see cref=\"T:WatiN.Core.UtilityClasses.SimpleTimer\"/> is elapsed.\r\n            </summary>\r\n            <value><c>true</c> if elapsed; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.UtilityClasses.SimpleTimer.Timeout\">\r\n            <summary>\r\n            The amount of time after which this timer times out. The time out can only be\r\n            set through the constructor.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.RadioButtonCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.RadioButton\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.RadioButtonCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.RadioButtonCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.RadioButtonCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.SelectListItemNotFoundException\">\r\n            <summary>\r\n            Thrown if the searched for selectlist item (option) can't be found.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ElementCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Element\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.ElementCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ElementCollection`1\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Element\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementCollection`1.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.ElementCollection`1\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementCollection`1.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.DialogHandlers.DialogWatcher\">\r\n            <summary>\r\n            This class handles alert/popup dialogs. Every second it checks if a dialog\r\n            is shown. If so, it stores it's message in the alertQueue and closses the dialog\r\n            by clicking the close button in the title bar.  \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.GetDialogWatcher(System.IntPtr)\">\r\n            <summary>\r\n            Gets the dialog watcher for the specified (main) internet explorer window. \r\n            It creates new instance if no dialog watcher for the specified window exists.\r\n            </summary>\r\n            <param name=\"mainWindowHwnd\">The (main) internet explorer window.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.#ctor(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.DialogWatcher\"/> class.\r\n            You are encouraged to use the Factory method <see cref=\"M:WatiN.Core.DialogHandlers.DialogWatcher.GetDialogWatcherFromCache(WatiN.Core.Native.Windows.Window)\"/>\r\n            instead.\r\n            </summary>\r\n            <param name=\"mainWindow\">The main window handle of internet explorer.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.IncreaseReferenceCount\">\r\n            <summary>\r\n            Increases the reference count of this DialogWatcher instance with 1.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.DecreaseReferenceCount\">\r\n            <summary>\r\n            Decreases the reference count of this DialogWatcher instance with 1.\r\n            When reference count becomes zero, the Dispose method will be \r\n            automatically called. This method will throw an <see cref=\"T:WatiN.Core.Exceptions.ReferenceCountException\"/>\r\n            if the reference count is zero.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.Add(WatiN.Core.Interfaces.IDialogHandler)\">\r\n            <summary>\r\n            Adds the specified handler.\r\n            </summary>\r\n            <param name=\"handler\">The handler.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.Remove(WatiN.Core.Interfaces.IDialogHandler)\">\r\n            <summary>\r\n            Removes the specified handler.\r\n            </summary>\r\n            <param name=\"handler\">The handler.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.RemoveAll(WatiN.Core.Interfaces.IDialogHandler)\">\r\n            <summary>\r\n            Removes all instances that match <paramref name=\"handler\"/>.\r\n            This method determines equality by calling Object.Equals.\r\n            </summary>\r\n            <param name=\"handler\">The object implementing IDialogHandler.</param>\r\n            <example>\r\n            If you want to use RemoveAll with your custom dialog handler to\r\n            remove all instances of your dialog handler from a DialogWatcher instance,\r\n            you should override the Equals method in your custom dialog handler class \r\n            like this:\r\n            <code>\r\n            public override bool Equals(object obj)\r\n            {\r\n              if (obj == null) return false;\r\n              \r\n              return (obj is YourDialogHandlerClassNameGoesHere);\r\n            }                               \r\n            </code>\r\n            You could also inherit from <see cref=\"T:WatiN.Core.DialogHandlers.BaseDialogHandler\"/> instead of implementing\r\n            <see cref=\"T:WatiN.Core.Interfaces.IDialogHandler\"/> in your custom dialog handler. <see cref=\"T:WatiN.Core.DialogHandlers.BaseDialogHandler\"/> provides\r\n            overrides for Equals and GetHashCode that work with RemoveAll.\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.Clear\">\r\n            <summary>\r\n            Removes all registered dialog handlers.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.Contains(WatiN.Core.Interfaces.IDialogHandler)\">\r\n            <summary>\r\n            Determines whether this <see cref=\"T:WatiN.Core.DialogHandlers.DialogWatcher\"/> contains the specified dialog handler.\r\n            </summary>\r\n            <param name=\"handler\">The dialog handler.</param>\r\n            <returns>\r\n            \t<c>true</c> if [contains] [the specified handler]; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.Start\">\r\n            <summary>\r\n            Called by the constructor to start watching popups\r\n            on a separate thread.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.HandleWindow(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            If the window is a dialog and visible, it will be passed to\r\n            the registered dialog handlers. I none if these can handle\r\n            it, it will be closed if <see cref=\"P:WatiN.Core.DialogHandlers.DialogWatcher.CloseUnhandledDialogs\"/>\r\n            is <c>true</c>.\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.DialogWatcher.Dispose\">\r\n            <summary>\r\n            Performs application-defined tasks associated with freeing, releasing, or\r\n            resetting unmanaged resources.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DialogHandlers.DialogWatcher.Count\">\r\n            <summary>\r\n            Gets the count of registered dialog handlers.\r\n            </summary>\r\n            <value>The count.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DialogHandlers.DialogWatcher.CloseUnhandledDialogs\">\r\n            <summary>\r\n            Gets or sets a value indicating whether unhandled dialogs should be closed automaticaly.\r\n            The initial value is set to the value of <cref name=\"Settings.AutoCloseDialogs\" />.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if unhandled dialogs should be closed automaticaly; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DialogHandlers.DialogWatcher.MainWindowHwnd\">\r\n            <summary>\r\n            Gets the (main) internet explorer window handle this dialog watcher watches.\r\n            </summary>\r\n            <value>The process id.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DialogHandlers.DialogWatcher.LastException\">\r\n            <summary>\r\n            Get the last stored exception thrown by a dialog handler while \r\n            calling the <see cref=\"M:WatiN.Core.Interfaces.IDialogHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\"/> method of the\r\n            dialog handler.\r\n            </summary>\r\n            <value>The last exception.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.LabelTextConstraint\">\r\n            <summary>\r\n            Use this class to find a form field whose associated label contains a particular value.\r\n            This constraint class is kindly donated by Seven Simple Machines.\r\n            </summary>\r\n            <example>\r\n            This shows how to find a text field with an associated label containing the text \"User name:\".\r\n            <code>ie.TextField( new LabelTextConstraint(\"User name:\") ).TypeText(\"MyUserName\")</code>\r\n            or use\r\n            <code>ie.TextField(Find.ByLabelText(\"User name:\")).TypeText(\"MyUserName\")</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.AttributeConstraint\">\r\n            <summary>\r\n            This is the base class for finding elements by a specified attribute. Use\r\n            this class or one of it's subclasses to implement your own comparison logic.\r\n            </summary>\r\n            <example>\r\n            <code>ie.Link(new Attribute(\"id\", \"testlinkid\")).Url</code>\r\n            or use \r\n            <code>ie.Link(Find.By(\"id\", \"testlinkid\")).Url</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AttributeConstraint.#ctor(System.String,System.String)\">\r\n            <summary>\r\n            Creates an attribute constraint to search for an exact match by string value.\r\n            </summary>\r\n            <param name=\"attributeName\">Name of the attribute as recognised by Internet Explorer.</param>\r\n            <param name=\"comparisonValue\">The value to look for</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"attributeName\"/>\r\n            or <paramref name=\"comparisonValue\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if <paramref name=\"attributeName\"/> is empty</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AttributeConstraint.#ctor(System.String,System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Creates an attribute constraint to search for a match by regular expression.\r\n            </summary>\r\n            <param name=\"attributeName\">Name of the attribute as recognised by Internet Explorer.</param>\r\n            <param name=\"regex\">The regular expression to look for</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"attributeName\"/>\r\n            or <paramref name=\"regex\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if <paramref name=\"attributeName\"/> is empty</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AttributeConstraint.#ctor(System.String,WatiN.Core.Comparers.Comparer{System.String})\">\r\n            <summary>\r\n            Creates an attribute constraint to search for a match using a custom comparer.\r\n            </summary>\r\n            <param name=\"attributeName\">Name of the attribute as recognised by Internet Explorer.</param>\r\n            <param name=\"comparer\">The attribute value comparer</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"attributeName\"/>\r\n            or <paramref name=\"comparer\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if <paramref name=\"attributeName\"/> is empty</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AttributeConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AttributeConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Constraints.AttributeConstraint.AttributeName\">\r\n            <summary>\r\n            Gets the name of the attribute.\r\n            </summary>\r\n            <value>The name of the attribute.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Constraints.AttributeConstraint.Comparer\">\r\n            <summary>\r\n            Gets the comparer used to match the expected attribute value with \r\n            the actual attribute value of an html element on a webpage.\r\n            </summary>\r\n            <value>The comparer.</value>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.LabelTextConstraint.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Constraints.LabelTextConstraint\"/> class;\r\n            </summary>\r\n            <param name=\"labelText\">The text that represents the label for the form element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.LabelTextConstraint.#ctor(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Constraints.LabelTextConstraint\"/> class;\r\n            </summary>\r\n            <param name=\"labelText\">The text that represents the label for the form element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.LabelTextConstraint.#ctor(System.Predicate{System.String})\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Constraints.LabelTextConstraint\"/> class;\r\n            </summary>\r\n            <param name=\"comparer\">The text that represents the label for the form element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.LabelTextConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.LabelTextConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.TypeComparer\">\r\n            <summary>\r\n            Class that supports comparing the given Type with the type of a subclass of <see cref=\"T:WatiN.Core.Element\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.TypeComparer.#ctor(System.Type)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Comparers.TypeComparer\"/> class.\r\n            </summary>\r\n            <param name=\"type\">The type to compare against.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.TypeComparer.Compare(WatiN.Core.Element)\">\r\n            <summary>\r\n            Compares the specified element with the Type .\r\n            </summary>\r\n            <param name=\"element\">The element to compare with.</param>\r\n            <returns>Returns <c>true</c> if the <paramref name=\"element\"/> is the exact type, otherwise it will return <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.TypeComparer.ToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Comparers.TypeComparer.Type\">\r\n            <summary>\r\n            Gets the type to compare against.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.StringEqualsAndCaseInsensitiveComparer\">\r\n            <summary>\r\n            Class that supports a simple matching of two strings. For a match, the given strings\r\n            should be equal (this includes the casing of the strings).\r\n            You can also use <seealso cref=\"M:WatiN.Core.Comparers.StringComparer.#ctor(System.String,System.Boolean)\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.PageMetadata\">\r\n            <summary>\r\n            Provides metadata about a page.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.PageMetadata.#ctor(System.Type)\">\r\n            <summary>\r\n            Creates a page metadata object about a particular subclass of <see cref=\"T:WatiN.Core.Page\"/>.\r\n            </summary>\r\n            <param name=\"pageType\">The page type</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"pageType\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if <paramref name=\"pageType\"/> is not a subclass\r\n            of <see cref=\"T:WatiN.Core.Page\"/></exception>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.PageMetadata.PageType\">\r\n            <summary>\r\n            Gets the subclass of <see cref=\"T:WatiN.Core.Page\"/> that describes the page.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.PageMetadata.UrlRegex\">\r\n            <summary>\r\n            Gets a regular expression that is expected to match the Url of the page, or null if unknown.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.PageMetadata.IsSecure\">\r\n            <summary>\r\n            Returns true if the page is expected to always be accessed using HTTPS.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FFDocument.GetTextBounds(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FFDocument.ClientPort\">\r\n            <summary>\r\n            Gets the FireFox client port.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FFDocument.DocumentReference\">\r\n            <summary>\r\n            Gets the name of a variable that stores a reference to the document within FireFox.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FFDocument.AllElements\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FFDocument.ContainingFrameElement\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FFDocument.Body\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FFDocument.Url\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FFDocument.Title\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ControlCollection`1\">\r\n            <summary>\r\n            A collection of user-defined control objects.\r\n            </summary>\r\n            <typeparam name=\"TControl\">The control subclass</typeparam>\r\n            <seealso cref=\"T:WatiN.Core.Control`1\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ControlCollection`1.CreateControlCollection``1(WatiN.Core.IElementCollection{``0})\">\r\n            <summary>\r\n            Creates a control collection from an element collection.\r\n            </summary>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n            <param name=\"elements\">The element collection to wrap</param>\r\n            <returns>The control collection</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"elements\"/> is null</exception>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Logging.StringLogWriter\">\r\n            <summary>\r\n            This logger class writes it's output to a string\r\n            </summary>\r\n            <example>\r\n            The following code attaches the StringLogWriter to WatiN and writes a\r\n            LogAction.\r\n            <code>\r\n            Logger.LogWriter = new StringLogWriter();\r\n            Logger.LogAction(\"Attached StringLogWriter\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Logging.StringLogWriter.Builder\">\r\n            <summary>\r\n            private StringBuilder keeping the log\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Logging.StringLogWriter.WriteLogLine(System.String)\">\r\n            <summary>\r\n            private method to write the log line\r\n            </summary>\r\n            <param name=\"message\">message to write</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Logging.StringLogWriter.Dispose\">\r\n            <summary>\r\n            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.\r\n            </summary>\r\n            <filterpriority>2</filterpriority>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Logging.StringLogWriter.IncludeTimestamp\">\r\n            <summary>\r\n            flag to indicate inclusion of a timestamp (in \"yyyy-mm-ddThh:nn:ss\" format)\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Logging.StringLogWriter.LogString\">\r\n            <summary>\r\n            data string containing the log\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.TableCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Table\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.TableCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.TableCell\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML td element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableCell.ContainingTable\">\r\n            <summary>\r\n            Gets the table that contains this cell.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableCell.ContainingTableBody\">\r\n            <summary>\r\n            Gets the table body that contains this cell.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableCell.ContainingTableRow\">\r\n            <summary>\r\n            Gets the table row that contains this cell.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableCell.ParentTableRow\">\r\n            <summary>\r\n            Gets the table row that contains this cell.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableCell.Index\">\r\n            <summary>\r\n            Gets the index of the <see cref=\"T:WatiN.Core.TableCell\"/> in the <see cref=\"T:WatiN.Core.TableCellCollection\"/> of the parent <see cref=\"T:WatiN.Core.TableRow\"/>.\r\n            </summary>\r\n            <value>The index of the cell.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Para\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML para element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Frame\">\r\n            <summary>\r\n            This class provides specialized functionality for a Frame or IFrame.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Frame.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeDocument)\">\r\n            <summary>\r\n            This constructor will mainly be used by the constructor of FrameCollection\r\n            to create an instance of a Frame.\r\n            </summary>\r\n            <param name=\"domContainer\">The domContainer</param>\r\n            <param name=\"frameDocument\">The document within the frame</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Frame.GetAttributeValueImpl(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Frame.NativeDocument\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.FrameNotFoundException\">\r\n            <summary>\r\n            Thrown if the searched for frame can't be found.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.VbScriptMsgBoxDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether VbScriptMsgBoxDialogHandler can handle the specified window by checking <see cref=\"P:WatiN.Core.Native.Windows.Window.StyleInHex\"/>.\r\n            Valid value is \"94C803C5\".\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if VbScriptMsgBoxDialogHandler can handle the dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.VbScriptMsgBoxDialogHandler.IfOKButtonThenGetTheRightButtonId(WatiN.Core.Native.Windows.Window,WatiN.Core.DialogHandlers.VbScriptMsgBoxDialogHandler.Button)\">\r\n            <summary>\r\n            When OK is the only button on the msgbox (buttons value = 1)\r\n            then the button Id = 2. In all other situations the button Id\r\n            for OK is 1.\r\n            </summary>\r\n            <param name=\"window\"></param>\r\n            <param name=\"button\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.PromptDialogHandler.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.PromptDialogHandler\"/> class.\r\n            </summary>\r\n            <param name=\"cancel\">if set to <c>true</c> <see cref=\"M:WatiN.Core.DialogHandlers.PromptDialogHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\"/> will click on the Cancel button of the prompt dialog.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.PromptDialogHandler.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.PromptDialogHandler\"/> class.\r\n            </summary>\r\n            <param name=\"input\">The text will be entered in the input field of the prompt dialog after which the OK button will be clicked.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.PromptDialogHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.PromptDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether the window is a prompt dialog by checking the <see cref=\"P:WatiN.Core.Native.Windows.Window.StyleInHex\"/>.\r\n            Valid value is \"94C800C4\".\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if window is a prompt dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.CertificateWarningHandler.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.CertificateWarningHandler\"/> class.\r\n            This handler will click the \"Yes\" button at the certificate warning dialog.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.CertificateWarningHandler.#ctor(WatiN.Core.DialogHandlers.CertificateWarningHandler.ButtonsEnum)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.CertificateWarningHandler\"/> class.\r\n            </summary>\r\n            <param name=\"buttonToPush\">The button to push.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.CertificateWarningHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether the specified window is a certificate dialog by checking <see cref=\"P:WatiN.Core.Native.Windows.Window.StyleInHex\"/>.\r\n            valid value is \"94C808C4\".\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if the specified window is a certificate dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.ClientPortBase\">\r\n            <summary>\r\n            Common client port behaviour.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.IClientPort\">\r\n            <summary>\r\n            Common behavior for a client port used to communicate with a browsers remote automation server.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.IClientPort.Write(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data to the jssh server.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">Arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.IClientPort.WriteAndReadIgnoreError(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data ignoring any errors and reads the response.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">The arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n            <returns>The response to the data written.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.IClientPort.WriteAndRead(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data and reads the response.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">The arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n            <returns>The response to the data written.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.IClientPort.WriteAndReadAsBool(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data and read the response parsing it as a boolean.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">The arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n            <returns>A boolean value from the response to the data written.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.IClientPort.WriteAndReadAsInt(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the and read as int.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">The arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n            <returns>An integer value parsed from the response.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.IClientPort.InitializeDocument\">\r\n            <summary>\r\n            Initializes the document.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.ClientPortBase.VariableNameHelper\">\r\n            <summary>\r\n            Used by CreateElementVariableName\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.ClientPortBase._lastResponse\">\r\n            <summary>\r\n            Gets the last response recieved from the jssh server\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.ClientPortBase\"/> class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.Write(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data to the jssh server.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">Arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.WriteAndReadIgnoreError(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data ignoring any errors and reads the response.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">The arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n            <returns>The response to the data written.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.WriteAndRead(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data and reads the response.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">The arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n            <returns>The response to the data written.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.WriteAndReadAsBool(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data and read the response parsing it as a boolean.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">The arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n            <returns>A boolean value from the response to the data written.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.WriteAndReadAsInt(System.String,System.Object[])\">\r\n            <summary>\r\n            Writes the and read as int.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"args\">The arguments to be passed to <see cref=\"M:System.String.Format(System.String,System.Object[])\"/></param>\r\n            <returns>An integer value parsed from the response.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.InitializeDocument\">\r\n            <summary>\r\n            Initializes the document.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.CreateVariableName\">\r\n            <summary>\r\n            Creates a unique variable name, i.e. doc.watin23\r\n            </summary>\r\n            <returns>A unique variable.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.Dispose\">\r\n            <summary>\r\n            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.\r\n            </summary>\r\n            <filterpriority>2</filterpriority>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.Connect(System.String)\">\r\n            <summary>\r\n            Connects to the Chrome browser and navigates to the specified URL.\r\n            </summary>\r\n            <param name=\"url\">The URL to connect to.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.SendAndRead(System.String,System.Boolean,System.Boolean,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data to the jssh server.\r\n            </summary>\r\n            <param name=\"data\">The data to write.</param>\r\n            <param name=\"resultExpected\"><c>true</c> if a result is expected.</param>\r\n            <param name=\"checkForErrors\"><c>true</c> if error checking should be applied.</param>\r\n            <param name=\"args\">Arguments to format with the data.</param>        \r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.ClientPortBase.AddToLastResponse(System.String)\">\r\n            <summary>\r\n            Adds the specified <paramref name=\"response\"/> to the last response field.\r\n            </summary>\r\n            <param name=\"response\">The response to add.</param>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.DocumentVariableName\">\r\n            <summary>\r\n            Gets the name of the javascript variable that references the DOM:document object.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.JavaScriptEngine\">\r\n            <summary>\r\n            Gets the type of java script engine.\r\n            </summary>\r\n            <value>The type of java script engine.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.BrowserVariableName\">\r\n            <summary>\r\n            Gets the name of the browser variable.\r\n            </summary>\r\n            <value>The name of the browser variable.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.Process\">\r\n            <summary>\r\n            Gets or sets the browser process.\r\n            </summary>\r\n            <value>The browser process.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.LastResponseRaw\">\r\n            <summary>\r\n            Gets or sets the last response without any cleaning applied to it.\r\n            </summary>\r\n            <value>The last response raw.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.Response\">\r\n            <summary>\r\n            Gets or sets the entire response from the remote server so far.\r\n            </summary>\r\n            <value>The response from the remote server so far.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.LastResponse\">\r\n            <summary>\r\n            Gets or sets the last reponse recieved from the jssh server\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.LastResponseAsBool\">\r\n            <summary>\r\n            Gets a value indicating whether the last response was <c>true</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.LastResponseIsNull\">\r\n            <summary>\r\n            Gets a value indicating whether last response is null.\r\n            </summary>\r\n            <value><c>true</c> if last response is null; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.ClientPortBase.LastResponseAsInt\">\r\n            <summary>\r\n            Gets LastResponseAsInt.\r\n            </summary>\r\n            <value>\r\n            The last response as int.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.Chrome.ChromeException\">\r\n            <summary>\r\n            Exceptions thrown by the Chrome web browser.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeException.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.Chrome.ChromeException\"/> class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeException.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.Chrome.ChromeException\"/> class.\r\n            </summary>\r\n            <param name=\"message\">The message.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.Chrome.ChromeException\"/> class.\r\n            </summary>\r\n            <param name=\"message\">The message.</param>\r\n            <param name=\"innerexception\">The innerexception.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.Chrome.ChromeException\"/> class.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">The <paramref name=\"info\"/> parameter is null. </exception>\r\n            <exception cref=\"T:System.Runtime.Serialization.SerializationException\">The class name is null or <see cref=\"P:System.Exception.HResult\"/> is zero (0). </exception>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ComponentFinder\">\r\n            <summary>\r\n            Assists with finding components generically by type.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.UtilityClasses.CaptureWebPage\">\r\n            <summary>\r\n            This class contains functionality to capture an image from a web page and save it to a file.\r\n            The code was written by Doug Weems at http://www.codeproject.com/KB/graphics/IECapture.aspx\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.CaptureWebPage.CaptureWebPageToFile(System.String,System.Boolean,System.Boolean,System.Int32,System.Int32)\">\r\n            <summary>\r\n            Captures an image of the current page on the current browser via _domContainer to disk\r\n            </summary>\r\n            <param name=\"filename\">The filename.</param>\r\n            <param name=\"writeUrl\">Place the url text as an overlay on the screenshot.</param>\r\n            <param name=\"showGuides\">Draws guides on the image to show which part of the page is visible for different resolutions. Off by default</param>\r\n            <param name=\"scalePercentage\">Percentage for scaling, default is 100.</param>\r\n            <param name=\"quality\">\r\n            0-100 - The Quality category specifies the level of compression for an image. When used to construct an \r\n            EncoderParameter, the range of useful values for the quality category is from 0 to 100. The lower the number specified, \r\n            the higher the compression and therefore the lower the quality of the image. Zero would give you the lowest quality image and \r\n            100 the highest.\r\n            </param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Form\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML Form element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Form.DefaultToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.TimeoutException\">\r\n            <summary>\r\n            Thrown if waiting for a webpage or element times out.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Div\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML div element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Div.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Div\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"nativeElement\">The HTML div element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Div.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Div\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The HTML div element.</param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Properties.Resources\">\r\n            <summary>\r\n              A strongly-typed resource class, for looking up localized strings, etc.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Properties.Resources.ResourceManager\">\r\n            <summary>\r\n              Returns the cached ResourceManager instance used by this class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Properties.Resources.Culture\">\r\n            <summary>\r\n              Overrides the current thread's CurrentUICulture property for all\r\n              resource lookups using this strongly typed resource class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Properties.Resources.BaseComponentCollection_CollectionIsReadonly\">\r\n            <summary>\r\n              Looks up a localized string similar to Collection is read-only.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Properties.Resources.BaseComponentCollection_DoesNotSupportSearchingByEquality\">\r\n            <summary>\r\n              Looks up a localized string similar to Collection does not support searching by equality..\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Properties.Resources.Control_HasAlreadyBeenInitialized\">\r\n            <summary>\r\n              Looks up a localized string similar to The control has already been initialized..\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Properties.Resources.IE_Dispose\">\r\n            <summary>\r\n              Looks up a localized string similar to Closing IE instance.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Properties.Resources.PageMetadata_PageTypeIsExpectedToBeASubclassOfPage\">\r\n            <summary>\r\n              Looks up a localized string similar to The page type is expected to be a subclass of Page..\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Properties.Resources.ReEntryException_MessageFormat\">\r\n            <summary>\r\n              Looks up a localized string similar to A match operation has been aborted because it appeared to be re-entrant.  The exception occurred in an instance of &apos;{0}&apos; with constraint: {1}..\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Properties.Resources.sizzle\">\r\n            <summary>\r\n              Looks up a localized string similar to (function(){var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[&apos;&quot;][^&apos;&quot;]*[&apos;&quot;]|[^\\[\\]&apos;&quot;]+)+\\]|\\\\.|[^ &gt;+~,(\\[\\\\]+)+|[&gt;+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,b=0,c=Object.prototype.toString,d=!1,e=!0;[0,0].sort(function(){e=!1;return 0});var f=function(b,d,e,i){e=e||[],d=d||document;var j=d;if(d.nodeType!==1&amp;&amp;d.nodeType!==9)return[];if(!b||typeof b!==&quot;string&quot;)return e;var l,m,n,o,p,r,s,t,u=!0,v=f.isXML(d),w=[],x=b;do{a.exec(&quot;&quot;),l=a.exec(x);if(l){x=l[3],w.push(l[1]);if(l[2]){o=l[3];break}}}while(l);if(w.length&gt;1&amp;&amp; [rest of string was truncated]&quot;;.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.Mozilla.FFBrowser\">\r\n            <summary>\r\n            Wrapper around the XUL:browser class, see: http://developer.mozilla.org/en/docs/XUL:browser\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FFBrowser.#ctor(WatiN.Core.Native.ClientPortBase)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.Mozilla.FFBrowser\"/> class.\r\n            </summary>\r\n            <param name=\"clientPort\">The client port.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FFBrowser.LoadUri(System.Uri,System.Boolean)\">\r\n            <summary>\r\n            Load a URL into the document. see: http://developer.mozilla.org/en/docs/XUL:browser#m-loadURI\r\n            </summary>\r\n            <param name=\"url\">The URL to laod.</param>\r\n            <param name=\"waitForComplete\">If false, makes to execution of LoadUri asynchronous.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.CloseIEDialogHandler.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.CloseIEDialogHandler\"/> class.\r\n            </summary>\r\n            <param name=\"clickOnOK\">if set to <c>true</c> the OK button will be clicked on. Otherwise the Cancel button will be clicked.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.CloseIEDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Checks if <see cref=\"P:WatiN.Core.Native.Windows.Window.StyleInHex\"/> of the <paramref name=\"window\"/> is equal to \"94C801C5\".\r\n            </summary>\r\n            <param name=\"window\">The window to validate</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.PredicateComparer`2\">\r\n            <summary>\r\n            A covariant comparer implementation based on a predicate delegate.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.PredicateComparer`2.#ctor(System.Predicate{`0})\">\r\n            <summary>\r\n            Creates a predicate-based comparer.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"predicate\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.PredicateComparer`2.Compare(`1)\">\r\n            <summary>\r\n            Compares the specified element using the predicate passed in as parameter in the constructor.\r\n            </summary>\r\n            <param name=\"element\">The element to evaluate.</param>\r\n            <returns>The result of the comparison done by the predicate</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.PredicateComparer`2.ToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.SelectListCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.SelectList\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectListCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.SelectListCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectListCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.FrameCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Frame\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FrameCollection.CreateFilteredCollection(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FrameCollection.GetComponents\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Button\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML input element of type \r\n            button, submit, image and reset.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Button.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Initialises a new instance of the <see cref=\"T:WatiN.Core.Button\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The <see cref=\"T:WatiN.Core.DomContainer\"/> the element is in.</param>\r\n            <param name=\"element\">The input button or button element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Button.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initialises a new instance of the <see cref=\"T:WatiN.Core.Button\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The <see cref=\"T:WatiN.Core.DomContainer\"/> the element is in.</param>\r\n            <param name=\"finder\">The input button or button element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Button.DefaultToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Button.Value\">\r\n            <summary>\r\n            The text displayed at the button.\r\n            </summary>\r\n            <value>The displayed text.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Button.Text\">\r\n            <summary>\r\n            The text displayed at the button (alias for the Value property).\r\n            </summary>\r\n            <value>The displayed text.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Page\">\r\n            <summary>\r\n            A page class describes the content and behaviors of a single web page or frame within\r\n            a web site.  Each application page can be modeled as a subclass of <see cref=\"T:WatiN.Core.Page\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A page class typically provides access to the content and behaviors of the page\r\n            by defining properties and methods to represent them.  In the typical case, the properties\r\n            of a page class provide access to its elements and state.  Likewise, the methods of a page\r\n            class perform actions or transactions.  The page class encapsulates the mechanisms used\r\n            to access and manipulate the underlying DOM elements which enables test cases to\r\n            become more focused on verifying application functionality.\r\n            </para>\r\n            <para>\r\n            For example, instead of referring to a text box by its HTML ID everywhere it is used,\r\n            we can create a page class to describe how the text box is accessed and what it represents\r\n            (semantically) in terms of the application.  In this way, we can create an appropriately\r\n            named property to provide access to the text box and clearly indicate\r\n            that it belongs to a given web page in our application.\r\n            </para>\r\n            <para>\r\n            This feature can be used to create a model of a web site (a site map) which helps to\r\n            improve readability and encourage reuse across tests.\r\n            </para>\r\n            <para>\r\n            How to create a page class:\r\n            <list type=\"bullet\">\r\n            <item>Create a subclass of Page.</item>\r\n            <item>Add a [Page] attribute to the newly created page.  Set the UrlRegex\r\n            property to a regular expression that is expected to match part of the page's Url.\r\n            If the page is only accessible via HTTPS then also set the IsSecure property to true.</item>\r\n            <item>Add properties to provide access to the sub-elements of the page.  When the page\r\n            is used, the <see cref=\"P:WatiN.Core.Page.Document\"/> property will be set to the containing document\r\n            (eg. the web browser or a frame).  Use this property to locate the sub-elements of the page.</item>\r\n            <item>Define additional properties and methods as desired to model the state and\r\n            behaviors of the page.</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            Tips:\r\n            <list type=\"bullet\">\r\n            <item>Multiple pages might share the same basic layout.  You can model this structure by\r\n            using a super class to describe the \"master page\" or by defining one or more\r\n            <see cref=\"T:WatiN.Core.Control`1\"/> to capture recurring elements such as the page header or\r\n            footer.</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            Consider a web page that has a username text field, a password text field\r\n            and a sign in button.  Before writing the test for this page, we\r\n            create a new page class to describe how these controls are found.\r\n            We can also add a convenient SignIn method that sets both text fields\r\n            and clicks on the sign in button all at once.\r\n            </para>\r\n            <para>\r\n            Here's how the page class will look:\r\n            </para>\r\n            <code>\r\n            [Page(UrlRegex = \"SignIn.aspx\", IsSecure = true)]\r\n            public class SignInPage : Page\r\n            {\r\n                public TextField UserNameTextField { get { return Document.TextField(Find.ByName(\"username\")); } }\r\n                public TextField PasswordNameTextField { get { return Document.TextField(Find.ByName(\"password\")); } }\r\n                public TextField SignInButton { get { return Document.Button(Find.ByName(\"signin\")); } }\r\n            \r\n                public void SignIn(string userName, string password)\r\n                {\r\n                    // Fill in the username and password fields.\r\n                    UserNameTextField.TypeText(userName);\r\n                    PasswordTextField.TypeText(password);\r\n            \r\n                    // Click the sign in button.\r\n                    SignInButton.Click();\r\n                }\r\n            }\r\n            </code>\r\n            <para>\r\n            Within the page class, you may also use the <see cref=\"T:WatiN.Core.FindByAttribute\"/> and <see cref=\"T:WatiN.Core.DescriptionAttribute\"/>\r\n            attributes to declaratively refer to elements of the page.  Here is part of the same example\r\n            above using attributes instead of properties.\r\n            </para>\r\n            <code>\r\n            [Page(UrlRegex = \"SignIn.aspx\", IsSecure = true)]\r\n            public class SignInPage : Page\r\n            {\r\n                [FindBy(Name = \"username\"), Description(\"User name text field.\")]\r\n                public TextField UserNameTextField;\r\n                \r\n                [FindBy(Name = \"password\"), Description(\"Password text field.\")]\r\n                public TextField PasswordNameTextField;\r\n                \r\n                [FindBy(Name = \"signIn\"), Description(\"Sign in button.\")]\r\n                public TextField SignInButton;\r\n                \r\n                // etc...\r\n            }\r\n            </code>\r\n            <para>\r\n            Finally, within the test we use the functionality of the sign in page like this:\r\n            </para>\r\n            <code>\r\n            browser.Page&lt;SignInPage&gt;&gt;().SignIn(\"somebody\", \"letmein\");\r\n            </code>\r\n            </example>\r\n            <seealso cref=\"T:WatiN.Core.PageAttribute\"/>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.#ctor\">\r\n            <summary>\r\n            Creates an uninitialized page instance.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.VerifyDocumentProperties(WatiN.Core.Document,WatiN.Core.Page.ErrorReporter)\">\r\n            <summary>\r\n            Verifies that the document represents the correct page (has the correct Url, etc.).\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default implementation calls <see cref=\"M:WatiN.Core.Page.VerifyDocumentUrl(System.String,WatiN.Core.Page.ErrorReporter)\"/> to verify the <paramref name=\"document\"/>'s Url.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to customize how document verification takes place.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"document\">The document to verify, not null</param>\r\n            <param name=\"errorReporter\">The error reporter to invoke is the document's properties fail verification</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.VerifyDocumentUrl(System.String,WatiN.Core.Page.ErrorReporter)\">\r\n            <summary>\r\n            Verifies that the document represents a Url that matches the page metadata.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default implementation uses information from the associated <see cref=\"T:WatiN.Core.PageMetadata\"/>\r\n            to validate the <paramref name=\"url\"/>.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to customize how document Url verification takes place.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"url\">The document url to verify, not null</param>\r\n            <param name=\"errorReporter\">The error reporter to invoke is the document's properties fail verification</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.VerifyDocumentIsSecure(System.String,WatiN.Core.Page.ErrorReporter)\">\r\n            <summary>\r\n            Verifies that the document is secure if the page metadata says it should be.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default implementation uses information from the associated <see cref=\"T:WatiN.Core.PageMetadata\"/>\r\n            to validate the <paramref name=\"url\"/>.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to customize how document Url verification takes place.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"url\">The document url to verify, not null</param>\r\n            <param name=\"errorReporter\">The error reporter to invoke is the document's properties fail verification</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.CreatePage``1(WatiN.Core.Document)\">\r\n            <summary>\r\n            Creates an initialized page object from a document.\r\n            </summary>\r\n            <typeparam name=\"TPage\">The page type</typeparam>\r\n            <param name=\"document\">The document or frame represented by the page</param>\r\n            <returns>The page object</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"document\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.CreatePage(System.Type,WatiN.Core.Document)\">\r\n            <summary>\r\n            Creates an initialized page object from a document.\r\n            </summary>\r\n            <param name=\"pageType\">The page type</param>\r\n            <param name=\"document\">The document or frame represented by the page</param>\r\n            <returns>The page object</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"pageType\"/> or <paramref name=\"document\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if <paramref name=\"pageType\"/> is not a subclass of <see cref=\"T:WatiN.Core.Page\"/>\r\n            or if it does not have a default constructor</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.ToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.GetAdapter``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.GetAttributeValueImpl(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Page.InitializeContents\">\r\n            <summary>\r\n            Initializes the contents of the page object.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Page.Metadata\">\r\n            <summary>\r\n            Gets declarative metadata about the page.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Page.Document\">\r\n            <summary>\r\n            Gets the document or frame that holds the page content.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method calls <see cref=\"M:WatiN.Core.Page.VerifyDocumentProperties(WatiN.Core.Document,WatiN.Core.Page.ErrorReporter)\"/> to ensure that\r\n            the current document represents the correct page (has the correct Url, etc.).\r\n            If this verification fails then an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.WatiNException\">Thrown if the page object does not have a reference\r\n            to a document or if the document's properties fail validation.</exception>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Page.IsCurrentDocument\">\r\n            <summary>\r\n            Returns true if the current document represents this page (has the correct Url, etc.).\r\n            The actual check(s) is done by the protected method <see cref=\"M:WatiN.Core.Page.VerifyDocumentProperties(WatiN.Core.Document,WatiN.Core.Page.ErrorReporter)\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Page.ErrorReporter\">\r\n            <summary>\r\n            Reports an error message.\r\n            </summary>\r\n            <param name=\"errorMessage\">The error message to report.</param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.PageVerificationException\">\r\n            <summary>\r\n            Will be thrown when the set expectations using the <see cref=\"T:WatiN.Core.PageAttribute\"/> don't match.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEBrowser.NavigateTo(System.Uri)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEBrowser.NavigateToNoWait(System.Uri)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEBrowser.GoBack\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEBrowser.GoForward\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEBrowser.Reopen\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEBrowser.Refresh\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEBrowser.hWnd\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.OrConstraint\">\r\n            <summary>\r\n            A combined constraint that is satisfied only when at least one of two other constraints is satisifed.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.OrConstraint.#ctor(WatiN.Core.Constraints.Constraint,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Creates a new OR constraint.\r\n            </summary>\r\n            <param name=\"first\">The first constraint</param>\r\n            <param name=\"second\">The second constraint</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"first\"/> or <paramref name=\"second\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.OrConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.OrConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Logging.FileLogWriter\">\r\n            <summary>\r\n            This logger class writes it's output to a file\r\n            </summary>\r\n            <example>\r\n            The following code attaches the FileLogWriter to WatiN and writes a\r\n            LogAction.\r\n            <code>\r\n            Logger.LogWriter = new FileLogWriter(\"LogFile.txt\");\r\n            Logger.LogAction(\"Attached FileLogWriter\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Logging.FileLogWriter.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor method creating a text file for writing\r\n            </summary>\r\n            <param name=\"filename\">full filepath to write the new log</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Logging.FileLogWriter.WriteLogLine(System.String)\">\r\n            <summary>\r\n            private method to write the log line\r\n            </summary>\r\n            <param name=\"message\">message to write</param>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Logging.FileLogWriter.IncludeTimestamp\">\r\n            <summary>\r\n            flag to indicate inclusion of a timestamp (in \"yyyy-mm-ddThh:nn:ss\" format)\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.UtilityClasses.UtilityClass\">\r\n            <summary>\r\n            Class with some utility methods to explore the HTML of a <see cref=\"T:WatiN.Core.Document\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.UtilityClass.#ctor\">\r\n            <summary>\r\n            Prevent creating an instance of this class (contains only static members)\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.UtilityClass.IsNullOrEmpty(System.String)\">\r\n            <summary>\r\n            Determines whether the specified <paramref name=\"value\" /> is null or empty.\r\n            </summary>\r\n            <param name=\"value\">The value.</param>\r\n            <returns>\r\n            \t<c>true</c> if the specified value is null or empty; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.UtilityClass.IsNotNullOrEmpty(System.String)\">\r\n            <summary>\r\n            Determines whether the specified <paramref name=\"value\" /> is null or empty.\r\n            </summary>\r\n            <param name=\"value\">The value.</param>\r\n            <returns>\r\n            \t<c>true</c> if the specified value is null or empty; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.UtilityClass.StringFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Formats the string in the same sense as string.Format but checks \r\n            if args is null before calling string.Format to prevent FormatException\r\n            </summary>\r\n            <param name=\"format\">The format.</param>\r\n            <param name=\"args\">The args.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.UtilityClass.TurnStyleAttributeIntoProperty(System.String)\">\r\n            <summary>\r\n            Turns the style attribute into property syntax.\r\n            </summary>\r\n            <example>\r\n            \"font-size\" will turn into \"fontSize\"\r\n            </example>\r\n            <param name=\"attributeName\">Name of the attribute.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ElementFactory\">\r\n            <summary>\r\n            Creates typed wrappers of native elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFactory.RegisterElementTypes(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Registers all element types within an assembly with WatiN.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method registers new element types with WatiN for elements that are not\r\n            supported out of the box (eg. H1, etc...).  It ensures that the correct element type\r\n            can be returned from find operations that do not specify the type natively.\r\n            </para>\r\n            <para>\r\n            This method does nothing if a given type has already been registered.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"assembly\">The assembly containing the <see cref=\"T:WatiN.Core.Element\"/> subclasses to register</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"assembly\"/> is null</exception>\r\n            <exception cref=\"T:System.InvalidOperationException\">Thrown if the any element type within the assembly\r\n            is not correctly defined because it is missing a constructor or has no element tag attributes specified</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFactory.RegisterElementType(System.Type)\">\r\n            <summary>\r\n            Registers an element type with WatiN.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method registers new element types with WatiN for elements that are not\r\n            supported out of the box (eg. H1, etc...).  It ensures that the correct element type\r\n            can be returned from find operations that do not specify the type natively.\r\n            </para>\r\n            <para>\r\n            This method does nothing if the type has already been registered.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"elementType\">The <see cref=\"T:WatiN.Core.Element\"/> subclass to register</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"elementType\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if <paramref name=\"elementType\"/> is not a subclass\r\n            of <see cref=\"T:WatiN.Core.Element\"/> or if it is abstract</exception>\r\n            <exception cref=\"T:System.InvalidOperationException\">Thrown if the <paramref name=\"elementType\"/>\r\n            is not correctly defined because it is missing a constructor or has no element tag attributes specified</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFactory.CreateElement(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Creates a typed element wrapper for a given native element.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The returned element will be a subclass of <see cref=\"T:WatiN.Core.Element\"/> that is\r\n            appropriate for element's tag.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"domContainer\">The element's DOM container</param>\r\n            <param name=\"nativeElement\">The native element to wrap, or null if none</param>\r\n            <returns>The typed element, or null if none</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFactory.CreateElement``1(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Creates a typed element wrapper for a given native element and ensures it is of\r\n            a particular type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The returned element will be a subclass of <see cref=\"T:WatiN.Core.Element\"/> that is\r\n            appropriate for element's tag.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"domContainer\">The element's DOM container</param>\r\n            <param name=\"nativeElement\">The native element to wrap, or null if none</param>\r\n            <returns>The typed element, or null if none</returns>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFactory.CreateElement``1(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Creates a typed element wrapper for a given element finder and ensures it is of\r\n            a particular type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The returned element will be a subclass of <see cref=\"T:WatiN.Core.Element\"/> that is\r\n            appropriate for element's tag.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"domContainer\">The element's DOM container</param>\r\n            <param name=\"elementFinder\">The element finder to wrap, or null if none</param>\r\n            <returns>The typed element, or null if none</returns>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFactory.CreateUntypedElement(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Creates an untyped element wrapper for a given native element.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The returned element is just a generic element container.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"domContainer\">The element's DOM container</param>\r\n            <param name=\"nativeElement\">The native element to wrap, or null if none</param>\r\n            <returns>The untyped element, or null if none</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFactory.CreateUntypedElement(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Creates an untyped element wrapper for a given element finder.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The returned element is just a generic element container.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"domContainer\">The element's DOM container</param>\r\n            <param name=\"elementFinder\">The element finder to wrap, or null if none</param>\r\n            <returns>The untyped element, or null if none</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFactory.GetElementTags(System.Type)\">\r\n            <summary>\r\n            Gets the list of tags supported by the specified element type class.\r\n            </summary>\r\n            <param name=\"elementType\">The element type</param>\r\n            <returns>The list of supported tags</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"elementType\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if <paramref name=\"elementType\"/> is not a valid element type</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementFactory.GetElementTags``1\">\r\n            <summary>\r\n            Gets the list of tags supported by the specified element type class.\r\n            </summary>\r\n            <returns>The list of supported tags</returns>\r\n            <typeparam name=\"TElement\">The element type</typeparam>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.TableBody\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML tbody element. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            To find rows that contain particular cell values use the <see cref=\"M:WatiN.Core.Find.ByTextInColumn(System.String,System.Int32)\"/>\r\n            constraint as in the following example:\r\n            </para>\r\n            <code>\r\n            // Find a table row with \"some text\" in the 3rd (!) column.\r\n            TableBody tableBody = document.Table(\"my_table\").OwnTableBodies[0];\r\n            table.OwnTableRow(Find.ByTextInColumn(\"some text\", 2));\r\n            </code>\r\n            <para>\r\n            To find rows based on other properties of their contents use the <see cref=\"M:WatiN.Core.Find.ByExistenceOfRelatedElement``1(WatiN.Core.ElementSelector{``0})\"/>\r\n            constraint as in the following example:\r\n            </para>\r\n            <code>\r\n            // Find a table row with \"some text\" in any of its columns.\r\n            TableBody tableBody = document.Table(\"my_table\").OwnTableBodies[0];\r\n            table.OwnTableRow(Find.ByExistenceOfRelatedElement(row =&gt; row.OwnTableCell(\"some text\")));\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableBody.OwnTableRow(System.String)\">\r\n            <summary>\r\n            Finds a table row within the table body itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id</param>\r\n            <returns>The table row</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableBody.OwnTableRow(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds a table row within the table body itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id regular expression</param>\r\n            <returns>The table row</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableBody.OwnTableRow(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Finds a table row within the table body itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"findBy\">The constraint</param>\r\n            <returns>The table row</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableBody.OwnTableRow(System.Predicate{WatiN.Core.TableRow})\">\r\n            <summary>\r\n            Finds a table row within the table body itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"predicate\">The predicate</param>\r\n            <returns>The table row</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableBody.ContainingTable\">\r\n            <summary>\r\n            Gets the table that contains this body.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableBody.OwnTableRows\">\r\n            <summary>\r\n            Gets a collection of all table rows within the table body itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <returns>The table row collection</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableBody.TableRowsDirectChildren\">\r\n            <summary>\r\n            Gets the table rows that are direct children of this <see cref=\"T:WatiN.Core.TableBody\"/>, leaving\r\n            out table rows of any nested tables within this <see cref=\"T:WatiN.Core.TableBody\"/>.\r\n            </summary>\r\n            <value>The table rows collection.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Table\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML table element.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            To find rows that contain particular cell values use the <see cref=\"M:WatiN.Core.Find.ByTextInColumn(System.String,System.Int32)\"/>\r\n            constraint as in the following example:\r\n            </para>\r\n            <code>\r\n            // Find a table row with \"some text\" in the 3rd (!) column.\r\n            Table table = document.Table(\"my_table\");\r\n            table.OwnTableRow(Find.ByTextInColumn(\"some text\", 2));\r\n            </code>\r\n            <para>\r\n            To find rows based on other properties of their contents use the <see cref=\"M:WatiN.Core.Find.ByExistenceOfRelatedElement``1(WatiN.Core.ElementSelector{``0})\"/>\r\n            constraint as in the following example:\r\n            </para>\r\n            <code>\r\n            // Find a table row with \"some text\" in any of its columns.\r\n            Table table = document.Table(\"my_table\");\r\n            table.OwnTableRow(Find.ByExistenceOfRelatedElement(row =&gt; row.OwnTableCell(\"some text\")));\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.OwnTableRow(System.String)\">\r\n            <summary>\r\n            Finds a table row within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id</param>\r\n            <returns>The table row</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.OwnTableRow(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds a table row within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id regular expression</param>\r\n            <returns>The table row</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.OwnTableRow(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Finds a table row within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"findBy\">The constraint</param>\r\n            <returns>The table row</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.OwnTableRow(System.Predicate{WatiN.Core.TableRow})\">\r\n            <summary>\r\n            Finds a table row within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"predicate\">The predicate</param>\r\n            <returns>The table row</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.OwnTableBody(System.String)\">\r\n            <summary>\r\n            Finds a table body within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id</param>\r\n            <returns>The table body</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.OwnTableBody(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds a table body within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id regular expression</param>\r\n            <returns>The table body</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.OwnTableBody(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Finds a table body within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"findBy\">The constraint</param>\r\n            <returns>The table body</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.OwnTableBody(System.Predicate{WatiN.Core.TableBody})\">\r\n            <summary>\r\n            Finds a table body within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"predicate\">The predicate</param>\r\n            <returns>The table body</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRow(System.String,System.Int32)\">\r\n            <summary>\r\n            Finds te first row that has an exact match with <paramref name=\"findText\"/> in <paramref name=\"inColumn\"/> \r\n            defined as a TD html element. If no match is found, null is returned. This method will look for rows in the\r\n            first <see cref=\"T:WatiN.Core.TableBody\"/> including rows in nested tables.\r\n            </summary>\r\n            <param name=\"findText\">The text to find.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRowInOwnTableRows(System.String,System.Int32)\">\r\n            <summary>\r\n            Finds te first row that has an exact match with <paramref name=\"findText\"/> in <paramref name=\"inColumn\"/> \r\n            defined as a TD html element. If no match is found, null is returned. This method will look for rows in all\r\n            <see cref=\"T:WatiN.Core.TableBody\"/> elements but will ignore rows in nested tables.\r\n            </summary>\r\n            <param name=\"findText\">The text to find.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRow(System.Text.RegularExpressions.Regex,System.Int32)\">\r\n            <summary>\r\n            Finds te first row that matches <paramref name=\"findTextRegex\"/> in <paramref name=\"inColumn\"/>\r\n            defined as a TD html element. If no match is found, <c>null</c> is returned. This method will look for rows in the\r\n            first <see cref=\"T:WatiN.Core.TableBody\"/> including rows in nested tables.\r\n            </summary>\r\n            <param name=\"findTextRegex\">The regular expression the cell text must match.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRowInOwnTableRows(System.Text.RegularExpressions.Regex,System.Int32)\">\r\n            <summary>\r\n            Finds te first row that matches <paramref name=\"findTextRegex\"/> in <paramref name=\"inColumn\"/>\r\n            defined as a TD html element. If no match is found, <c>null</c> is returned. This method will look for rows in all\r\n            <see cref=\"T:WatiN.Core.TableBody\"/> elements but will ignore rows in nested tables.\r\n            </summary>\r\n            <param name=\"findTextRegex\">The regular expression the cell text must match.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRow(WatiN.Core.Comparers.Comparer{System.String},System.Int32)\">\r\n            <summary>\r\n            Finds te first row that matches <paramref name=\"comparer\"/> in <paramref name=\"inColumn\"/> \r\n            defined as a TD html element. If no match is found, <c>null</c> is returned. This method will look for rows in the\r\n            first <see cref=\"T:WatiN.Core.TableBody\"/> including rows in nested tables.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer that the cell text must match.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRowInOwnTableRows(WatiN.Core.Comparers.Comparer{System.String},System.Int32)\">\r\n            <summary>\r\n            Finds te first row that matches <paramref name=\"comparer\"/> in <paramref name=\"inColumn\"/> \r\n            defined as a TD html element. If no match is found, <c>null</c> is returned. This method will look for rows in all\r\n            <see cref=\"T:WatiN.Core.TableBody\"/> elements but will ignore rows in nested tables.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer that the cell text must match.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRow(System.Predicate{System.String},System.Int32)\">\r\n            <summary>\r\n            Finds te first row that matches <paramref name=\"predicate\"/> in <paramref name=\"inColumn\"/> \r\n            defined as a TD html element. If no match is found, <c>null</c> is returned. This method will look for rows in the\r\n            first <see cref=\"T:WatiN.Core.TableBody\"/> including rows in nested tables.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate that the cell text must match.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRowInOwnTableRows(System.Predicate{System.String},System.Int32)\">\r\n            <summary>\r\n            Finds te first row that matches <paramref name=\"predicate\"/> in <paramref name=\"inColumn\"/> \r\n            defined as a TD html element. If no match is found, <c>null</c> is returned. This method will look for rows in all\r\n            <see cref=\"T:WatiN.Core.TableBody\"/> elements but will ignore rows in nested tables.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate that the cell text must match.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRow(System.Predicate{WatiN.Core.TableCell},System.Int32)\">\r\n            <summary>\r\n            Finds te first row that matches <paramref name=\"predicate\"/> in <paramref name=\"inColumn\"/> \r\n            defined as a TD html element. If no match is found, <c>null</c> is returned. This method will look for rows in the\r\n            first <see cref=\"T:WatiN.Core.TableBody\"/> including rows in nested tables.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate that the cell text must match.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.FindRowInOwnTableRows(System.Predicate{WatiN.Core.TableCell},System.Int32)\">\r\n            <summary>\r\n            Finds te first row that matches <paramref name=\"predicate\"/> in <paramref name=\"inColumn\"/> \r\n            defined as a TD html element. If no match is found, <c>null</c> is returned.  This method will look for rows in all\r\n            <see cref=\"T:WatiN.Core.TableBody\"/> elements but will ignore rows in nested tables.\r\n            </summary>\r\n            <param name=\"predicate\">The predicate that the cell text must match.</param>\r\n            <param name=\"inColumn\">Index of the column to find the text in.</param>\r\n            <returns>The searched for <see cref=\"T:WatiN.Core.TableRow\"/>; otherwise <c>null</c>.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Table.DefaultToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Table.OwnTableRows\">\r\n            <summary>\r\n            Gets a collection of all table rows within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <returns>The table row collection</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Table.OwnTableBodies\">\r\n            <summary>\r\n            Gets a collection of all table bodies within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <returns>The table body collection</returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.HtmlDialogCollection\">\r\n            <summary>\r\n            A typed collection of open <see cref=\"T:WatiN.Core.HtmlDialog\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.HtmlDialogCollection.CreateFilteredCollection(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.HtmlDialogCollection.GetComponents\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.InvalidAttributeException\">\r\n            <summary>\r\n            Thrown if the specified attribute isn't a valid attribute of the element. \r\n            For example doing <c>TextField.GetAttribute(\"src\")</c> will throw \r\n            this exception.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ElementTag\">\r\n            <summary>\r\n            This struct is mainly used by WatiN internally and defines \r\n            the supported html tags for inheritors of <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.#ctor(System.String)\">\r\n            <summary>\r\n            Creates an element tag.\r\n            </summary>\r\n            <param name=\"tagName\">The tag name, or null to represent any element</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.#ctor(System.String,System.String)\">\r\n            <summary>\r\n            Creates an element tag with an input tag type qualifier.\r\n            </summary>\r\n            <param name=\"tagName\">The tag name, or null to represent any element</param>\r\n            <param name=\"inputType\">The input tag type qualifier, or null if none</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.FromNativeElement(WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Creates an element tag object from a native element.\r\n            </summary>\r\n            <param name=\"nativeElement\">The native element</param>\r\n            <returns>The element tag object</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"nativeElement\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.IsMatch(WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Returns true if this tag object matches the specified element.\r\n            </summary>\r\n            <param name=\"nativeElement\">The element to consider</param>\r\n            <returns>True if the tag matches the specified element</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"nativeElement\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.IsMatch(WatiN.Core.ElementTag)\">\r\n            <summary>\r\n            Returns true if this tag object matches the specified tag.\r\n            </summary>\r\n            <param name=\"elementTag\">The element tag to consider</param>\r\n            <returns>True if the tag matches the specified element tag</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.GetHashCode\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.Equals(System.Object)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.Equals(WatiN.Core.ElementTag)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.ToString\">\r\n            <summary>\r\n            Returns a human-readable string representation of the tag.\r\n            </summary>\r\n            <returns>The tag as a string</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.IsMatch(System.Collections.Generic.IEnumerable{WatiN.Core.ElementTag},WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Returns true if any tag object in the list matches the specified element.\r\n            </summary>\r\n            <param name=\"tags\">The tags against which to match</param>\r\n            <param name=\"nativeElement\">The element to consider</param>\r\n            <returns>True if the tag matches the specified element</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"tags\"/> or <paramref name=\"nativeElement\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.IsMatch(System.Collections.Generic.IEnumerable{WatiN.Core.ElementTag},WatiN.Core.ElementTag)\">\r\n            <summary>\r\n            Returns true if any tag object in the list matches the specified tag.\r\n            </summary>\r\n            <param name=\"tags\">The tags against which to match</param>\r\n            <param name=\"elementTag\">The element tag to consider</param>\r\n            <returns>True if the tag matches the specified element tag</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"tags\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ElementTag.ElementTagsToString(System.Collections.Generic.IList{WatiN.Core.ElementTag})\">\r\n            <summary>\r\n            Converts a list of tags to a human-readable string.\r\n            </summary>\r\n            <param name=\"elementTags\">The list of element tags</param>\r\n            <returns>The element tags as a string</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementTag.TagName\">\r\n            <summary>\r\n            Gets the tag name, or null to represent any element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementTag.InputType\">\r\n            <summary>\r\n            Gets the input tag type qualifier, or null if none.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementTag.IsInputElement\">\r\n            <summary>\r\n            Returns true if the tag represents an input element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementTag.IsAny\">\r\n            <summary>\r\n            Returns true if the tag matches any element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.ElementTag.Any\">\r\n            <summary>\r\n            Returns a special tag object that can match any element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Style\">\r\n            <summary>\r\n            Represent the CSS style rule.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Style.#ctor(WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Style\"/> class.\r\n            </summary>\r\n            <param name=\"nativeElement\">The underlying <see cref=\"T:WatiN.Core.Native.INativeElement\"/>.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Style.ToString\">\r\n            <summary>\r\n            Returns a <see cref=\"T:System.String\"/> that represents the current <see cref=\"T:System.Object\"/>.\r\n            </summary>\r\n            <returns>\r\n            The value of <see cref=\"P:WatiN.Core.Style.CssText\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Style.GetAttributeValue(System.String)\">\r\n            <summary>\r\n            This methode can be used if the attribute isn't available as a property of\r\n            of this <see cref=\"T:WatiN.Core.Style\"/> class.\r\n            </summary>\r\n            <param name=\"attributeName\">The attribute name. This could be different then named in\r\n            the HTML. It should be the name of the property exposed by IE on it's style object.</param>\r\n            <returns>The value of the attribute if available; otherwise <c>null</c> is returned.</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Style.Color\">\r\n            <summary>\r\n            Retrieves the color of the text of the element.\r\n            Visit http://msdn.microsoft.com/workshop/author/dhtml/reference/colors/colors_name.asp\r\n            for a full list of supported RGB colors and their names.\r\n            </summary>\r\n            <value>The color of the text.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Style.BackgroundColor\">\r\n            <summary>\r\n            Retrieves the color behind the content of the element.\r\n            Visit http://msdn.microsoft.com/workshop/author/dhtml/reference/colors/colors_name.asp\r\n            for a full list of supported RGB colors and their names.\r\n            </summary>\r\n            <value>The color of the background.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Style.FontFamily\">\r\n            <summary>\r\n            Retrieves the name of the font used for text in the element.\r\n            </summary>\r\n            <value>The font family.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Style.FontSize\">\r\n            <summary>\r\n            Retrieves a value that indicates the font size used for text in the element. \r\n            </summary>\r\n            <value>The size of the font.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Style.FontStyle\">\r\n            <summary>\r\n            Retrieves the font style of the element as italic, normal, or oblique.\r\n            </summary>\r\n            <value>The fount style.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Style.Height\">\r\n            <summary>\r\n            Retrieves the height of the element.\r\n            </summary>\r\n            <value>The height of the element.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Style.Display\">\r\n            <summary>\r\n            Retrieves wheter the object is rendered.\r\n            </summary>\r\n            <remarks>For a complete list of the values visit \r\n            http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/display.asp .</remarks>\r\n            <value>The display mode.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Style.CssText\">\r\n            <summary>\r\n            Retrieves the CSS text.\r\n            </summary>\r\n            <value>The CSS text.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Logging.DebugLogWriter\">\r\n            <summary>\r\n            This logger class writes it's output to the debug window.\r\n            </summary>\r\n            <example>\r\n            The following code attaches the DebugLogWriter to WatiN and writes a\r\n            LogAction. Open de output window in your debugger to see the result.\r\n            <code>\r\n            Logger.LogWriter = new DebugLogWriter;\r\n            Logger.LogAction(\"Attached DebugLogWriter\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.BrowserNotFoundException\">\r\n            <summary>\r\n            Thrown if the searched for Browser type can't be found.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.HtmlDialogNotFoundException\">\r\n            <summary>\r\n            Thrown if the searched for HtmlDialog can't be found.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.AlertAndConfirmDialogHandler.Pop\">\r\n            <summary>\r\n            Pops the most recent message from a queue of displayed alert and confirm windows.\r\n            Use this method to get the displayed message.\r\n            </summary>\r\n            <returns>The displayed message.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.MissingAlertException\">if no alerts are present</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.AlertAndConfirmDialogHandler.Peek\">\r\n            <summary>\r\n            Peeks at the most recent message from a queue of displayed alert and confirm windows, but does not remove it.\r\n            Use this method to look at the first displayed message but not to remove it.\r\n            </summary>\r\n            <returns>The first displayed message.</returns>\r\n            <exception cref=\"T:WatiN.Core.Exceptions.MissingAlertException\">if no alerts are present</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.AlertAndConfirmDialogHandler.Clear\">\r\n            <summary>\r\n            Clears all the messages from the queue of displayed alert and confirm windows.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.AlertAndConfirmDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            See if the dialog has a static control with a controlID \r\n            of 0xFFFF. This is unique for alert and confirm dialogboxes.\r\n            </summary>\r\n            <param name=\"window\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DialogHandlers.AlertAndConfirmDialogHandler.Count\">\r\n            <summary>\r\n            Gets the count of the messages in the queue of displayed alert and confirm windows.\r\n            </summary>\r\n            <value>The count of the alert and confirm messages in the queue.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DialogHandlers.AlertAndConfirmDialogHandler.Alerts\">\r\n            <summary>\r\n            Gets the alert and confirm messages in the queue of displayed alert and confirm windows.\r\n            </summary>\r\n            <value>The alert and confirm messages in the queue.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.InternetExplorer.WindowsEnumerator\">\r\n            <summary> \r\n            Enumerate top-level and child windows \r\n            </summary> \r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.WindowsEnumerator.GetTopLevelWindows\">\r\n            <summary> \r\n            Get all top-level window information \r\n            </summary> \r\n            <returns>List of window information objects</returns> \r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.WindowsEnumerator.GetChildWindows(System.IntPtr)\">\r\n            <summary> \r\n            Get all child windows for the specific windows handle (hwnd). \r\n            </summary> \r\n            <returns>List of child windows for parent window</returns> \r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElementCollection.GetElements\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElementCollection.GetElementsByTag(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElementCollection.GetElementsById(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.ComponentConstraint\">\r\n            <summary>\r\n            A component-based constraint using a comparer.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ComponentConstraint.#ctor(WatiN.Core.Comparers.Comparer{WatiN.Core.Component})\">\r\n            <summary>\r\n            Creates an component constraint.\r\n            </summary>\r\n            <param name=\"comparer\">The comparer</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"comparer\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ComponentConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.ComponentConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Constraints.ComponentConstraint.Comparer\">\r\n            <summary>\r\n            Gets the component comparer.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.AnyConstraint\">\r\n            <summary>\r\n            A constraint that matches anything.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AnyConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AnyConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Constraints.AnyConstraint.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the Any constraint.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Settings\">\r\n            <summary>\r\n            This class is used to define the default settings used by WatiN. \r\n            Use <c>Settings.Instance</c> to access or change these settings.\r\n            </summary>\r\n            <example>\r\n            The following example shows you how to change the default time out which is used\r\n            by the AttachtToIE(findBy) method to attach to an already existing Internet Explorer window \r\n            or to an Internet Explorer window that will show up within 60 seconds after calling\r\n            the AttachToIE(findBy) method.\r\n            <code>\r\n            public void AttachToIEExample()\r\n            {\r\n              // Change de default time out from 30 to 60 seconds.\r\n              Settings.AttachToBrowserTimeOut = 60;\r\n            \r\n              // Start Internet Explorer manually and type \r\n              // http://watin.sourceforge.net in the navigation bar.\r\n            \r\n              // Now Attach to an existing Internet Explorer window\r\n              IE ie = IE.AttachToIE(Find.ByTitle(\"WatiN\");\r\n            \r\n              System.Diagnostics.Debug.WriteLine(ie.Url);\r\n            }\r\n            </code>\r\n            When you frequently want to change these settings you could also create\r\n            two or more instances of the Settings class, set the desired defaults \r\n            and set the settings class to Settings.\r\n            <code>\r\n            public void ChangeSettings()\r\n            {\r\n              Settings.Instance = LongTimeOut();\r\n              \r\n              // Do something here that requires more time then the defaults\r\n            \r\n              Settings.Instance = ShortTimeOut();\r\n            \r\n              // Do something here if you want a short time out to get\r\n              // the exception quickly incase the item isn't found.  \r\n            }\r\n            \r\n            public Settings LongTimeOut()\r\n            {\r\n              Settings settings = new Settings();\r\n            \r\n              settings.AttachToBrowserTimeOut = 60;\r\n              settings.WaitUntilExistsTimeOut = 60;\r\n              settings.WaitForCompleteTimeOut = 60;\r\n            \r\n              return settings;\r\n            }\r\n            \r\n            public Settings ShortTimeOut()\r\n            {\r\n              Settings settings = new Settings();\r\n            \r\n              settings.AttachToBrowserTimeOut = 5;\r\n              settings.WaitUntilExistsTimeOut = 5;\r\n              settings.WaitForCompleteTimeOut = 5;\r\n            \r\n              return settings;\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Settings.Reset\">\r\n            <summary>\r\n            Resets this instance to the initial defaults.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Settings.Clone\">\r\n            <summary>\r\n            Clones this instance.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.AttachToBrowserTimeOut\">\r\n            <summary>\r\n            Get or set the default time out used when calling IE ie = IE.AttachToIE(findBy).\r\n            The default value is 30 seconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.WaitUntilExistsTimeOut\">\r\n            <summary>\r\n            Get or set the default time out used when calling Element.WaitUntilExists().\r\n            The default value is 30 seconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.WaitForCompleteTimeOut\">\r\n            <summary>\r\n            Get or set the default time out used when calling ie.WaitForComplete().\r\n            The default value is 30 seconds. Setting the time out to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.SleepTime\">\r\n            <summary>\r\n            Get or set the default sleep time before WatiN starts checking if a page is loaded\r\n            in IE. This setting is not applicable to FireFox.\r\n            The default value is 30 milliseconds. Setting this to a negative value will\r\n            throw a <see cref=\"T:System.ArgumentOutOfRangeException\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.HighLightElement\">\r\n            <summary>\r\n            Turn highlighting of elements by WatiN on (<c>true</c>) or off (<c>false</c>).\r\n            Highlighting of an element is done when WatiN fires an event on an\r\n            element or executes a methode (like TypeText).\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.HighLightColor\">\r\n            <summary>\r\n            Set or get the color to highlight elements. Will be used if\r\n            HighLightElement is set to <c>true</c>.\r\n            Visit http://msdn.microsoft.com/workshop/author/dhtml/reference/colors/colors_name.asp\r\n            for a full list of supported RGB colors and their names.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.AutoCloseDialogs\">\r\n            <summary>\r\n            Turn auto closing of dialogs on (<c>true</c>) or off (<c>false</c>).\r\n            You need to set this value before creating or attaching to any \r\n            Internet Explorer to have effect.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.AutoStartDialogWatcher\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to auto start the dialog watcher at all.\r\n            This value is evaluated everytime a new IE instance is created\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if dialog watcher should be started when a new IE instance is created; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.AutoMoveMousePointerToTopLeft\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to move the cursor to the top left\r\n            of the screen everytime a new IE instance is created.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> when mouse should be moved to top left; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.MakeNewIeInstanceVisible\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to make a new <see cref=\"T:WatiN.Core.IE\"/> instance visible.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if you want to make a new <see cref=\"T:WatiN.Core.IE\"/> instance visible; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.FindByDefaultFactory\">\r\n            <summary>\r\n            Gets or sets a factory to find element by their default characteristics.\r\n            </summary>\r\n            <remarks>\r\n            The default value is a <see cref=\"P:WatiN.Core.Settings.FindByDefaultFactory\"/> which finds elements\r\n            by id.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.MakeNewIe8InstanceNoMerge\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to make a new <see cref=\"T:WatiN.Core.IE\"/> instance without session cookie merging.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if you want to make a new <see cref=\"T:WatiN.Core.IE\"/> instance with cookie merging; otherwise, <c>false</c>.\r\n            </value>\r\n            <remarks>read the section on NoMerge at http://blogs.msdn.com/ie/archive/2008/07/28/ie8-and-reliability.aspx</remarks>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Settings.CloseExistingFireFoxInstances\">\r\n            <summary>\r\n            Gets or sets a value indicating whether existing FireFox instances will be closed before creating a new instance.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if existing FireFox instances need to be closed otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.NativeElementFinder\">\r\n            <summary>\r\n            Finds elements within native element containers.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementFinder.#ctor(WatiN.Core.NativeElementFinder.NativeElementCollectionFactory,WatiN.Core.DomContainer,System.Collections.Generic.IList{WatiN.Core.ElementTag},WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Creates an element finder.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container</param>\r\n            <param name=\"factory\">The factory to get the element(s) to search in</param>\r\n            <param name=\"elementTags\">The element tags considered by the finder, or null if all tags considered</param>\r\n            <param name=\"constraint\">The constraint used by the finder to filter elements, or null if no additional constraint</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementFinder.FilterImpl(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementFinder.FindAllImpl\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementFinder.GetElementIdHint(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            If the constraint can only match on element with a particular id, returns the id,\r\n            otherwise returns null.\r\n            </summary>\r\n            <returns>The id or null if the constraint could match elements with no particular id</returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Interfaces.IFindByDefaultFactory\">\r\n            <summary>\r\n            Used to find elements by a default characteristic such as by id or by\r\n            some other application-specific rule.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IFindByDefaultFactory.ByDefault(System.String)\">\r\n            <summary>\r\n            Gets a constraint to find an element by matching its default characteristics\r\n            against the specified string.\r\n            </summary>\r\n            <param name=\"value\">The string to match against</param>\r\n            <returns>A constraint</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Interfaces.IFindByDefaultFactory.ByDefault(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Gets a constraint to find an element by matching its default characteristics\r\n            against the specified regular expression.\r\n            </summary>\r\n            <param name=\"value\">The regular expression to match against</param>\r\n            <returns>A constraint</returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.UtilityClasses.LazyList`1\">\r\n            <summary>\r\n            A lazily populated list that fills itself up gradually from an enumeration on demand.\r\n            </summary>\r\n            <typeparam name=\"T\">The type of element in the list</typeparam>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.LazyList`1.#ctor(System.Collections.Generic.IEnumerable{`0})\">\r\n            <summary>\r\n            Creates a lazily populated list from an enumeration.\r\n            </summary>\r\n            <param name=\"source\">The enumeration of elements from which to populate the list lazily</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.LazyList`1.CopyTo(`0[],System.Int32)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.LazyList`1.GetEnumerator\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.UtilityClasses.LazyList`1.Count\">\r\n            <summary>\r\n            Gets the total number of elements in the list.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.UtilityClasses.LazyList`1.Item(System.Int32)\">\r\n            <summary>\r\n            Gets the element with the specified index in the list.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index</param>\r\n            <returns>The element</returns>\r\n            <exception cref=\"T:System.IndexOutOfRangeException\">Thrown if <paramref name=\"index\"/> is\r\n            out of range</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.#ctor(WatiN.Core.DialogHandlers.FileDownloadOptionEnum)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.FileDownloadHandler\"/> class.\r\n            Use this constructor if you want to Run, Open or Cancel the download.\r\n            </summary>\r\n            <param name=\"option\">The option to choose on the File Download dialog.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DialogHandlers.FileDownloadHandler\"/> class.\r\n            Use this contructor if you want to download and save a file.\r\n            </summary>\r\n            <param name=\"filename\">The filename.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.HandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Handles the dialogs to download (and save) a file\r\n            Mainly used internally by WatiN.\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.IsFileDownloadDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether the specified window is a file download dialog by\r\n            checking the style property of the window. It should match\r\n            <c>window.StyleInHex == \"94C80AC4\"</c>\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if the specified window is a file download dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.IsDownloadProgressDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether the specified window is a download progress dialog by\r\n            checking the style property of the window. It should match\r\n            <c>(window.StyleInHex == \"9CCA0BC4\") || (window.StyleInHex == \"94CA0BC4\")</c>\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if the specified window is a download progress dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.IsFileSaveDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether the specified window is a file save as dialog by\r\n            checking the style property of the window. It should match\r\n            <c>(window.StyleInHex == \"96CC20C4\") || (window.StyleInHex == \"96CC02C4\")</c>\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            \t<c>true</c> if the specified window is a file save as dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.Exists(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines if a dialog still exists by checking the the existance of the \r\n            window.Hwnd and checking if the window is visible.\r\n            </summary>\r\n            <param name=\"dialog\">The dialog.</param>\r\n            <returns><c>true</c> if exists and visible, otherwise <c>false</c></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.ExistsOrNull(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Checks if window is null or <see cref=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.Exists(WatiN.Core.Native.Windows.Window)\"/>.\r\n            </summary>\r\n            <param name=\"dialog\">The dialog.</param>\r\n            <returns><c>true</c> if null or exists, otherwise <c>false</c></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(System.Int32)\">\r\n            <summary>\r\n            Wait until the save/open/run dialog opens.\r\n            This exists because some web servers are slower to start a file than others.\r\n            </summary>\r\n            <param name=\"waitDurationInSeconds\">duration in seconds to wait</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.FileDownloadHandler.WaitUntilDownloadCompleted(System.Int32)\">\r\n            <summary>\r\n            Wait until the download progress window does not exist any more\r\n            </summary>\r\n            <param name=\"waitDurationInSeconds\">duration in seconds to wait</param>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DialogHandlers.FileDownloadHandler.HasHandledFileDownloadDialog\">\r\n            <summary>\r\n            Gets a value indicating whether this instance has handled a file download dialog.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if this instance has handled a file download dialog; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.DialogHandlers.FileDownloadHandler.SaveAsFilename\">\r\n            <summary>\r\n            Gets the full save as filename used when the downloaded file will be saved to disk.\r\n            </summary>\r\n            <value>The save as filename.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.BoolComparer\">\r\n            <summary>\r\n            Class that supports comparing a <see cref=\"T:System.Boolean\"/> instance with a string value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.BoolComparer.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Comparers.BoolComparer\"/> class.\r\n            </summary>\r\n            <param name=\"referenceValue\">If the value is true, then will compare case-insensitively with \"true\"\r\n            otherwise will compare case-insensitively with \"false\"</param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.Chrome.ChromeDocument\">\r\n            <summary>\r\n            The chrome document class, giving access to common document elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeDocument.#ctor(WatiN.Core.Native.ClientPortBase)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Native.Chrome.ChromeDocument\"/> class.\r\n            </summary>\r\n            <param name=\"clientPort\">The client port.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeDocument.RunScript(System.String,System.String)\">\r\n            <summary>\r\n            Runs the script.\r\n            </summary>\r\n            <param name=\"scriptCode\">\r\n            The script code to run.\r\n            </param>\r\n            <param name=\"language\">\r\n            The language the script was written in.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeDocument.GetPropertyValue(System.String)\">\r\n            <summary>\r\n            Gets the value for the corresponding <paramref name=\"propertyName\"/>.\r\n            </summary>\r\n            <param name=\"propertyName\">\r\n            Name of the property.\r\n            </param>\r\n            <returns>\r\n            The value for the corresponding <paramref name=\"propertyName\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Chrome.ChromeDocument.GetTextBounds(System.String)\">\r\n            <summary>\r\n            Gets the bounds of all matching text substrings within the document.\r\n            </summary>\r\n            <param name=\"text\">\r\n            The text to find\r\n            </param>\r\n            <returns>\r\n            The text bounds in screen coordinates\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.ClientPort\">\r\n            <summary>\r\n            Gets the FireFox client port.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.AllElements\">\r\n            <summary>\r\n            Gets the collection of all elements in the document.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.ContainingFrameElement\">\r\n            <summary>\r\n            Gets the containing frame element, or null if none.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.Body\">\r\n            <summary>\r\n            Gets the body element for the current docuemnt.\r\n            </summary>\r\n            <value>The body element.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.Url\">\r\n            <summary>\r\n            Gets the URL for the current document.\r\n            </summary>\r\n            <value>The URL for the current document.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.Title\">\r\n            <summary>\r\n            Gets the title of the current docuemnt.\r\n            </summary>\r\n            <value>The title of the current document.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.ActiveElement\">\r\n            <summary>\r\n            Gets the active element.\r\n            </summary>\r\n            <value>The active element.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.JavaScriptVariableName\">\r\n            <summary>\r\n            Gets the name of the java script variable.\r\n            </summary>\r\n            <value>The name of the java script variable.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.Frames\">\r\n            <summary>\r\n            Gets the list of frames.\r\n            </summary>\r\n            <value>The list of frames of the current document.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Chrome.ChromeDocument.DocumentReference\">\r\n            <summary>\r\n            Gets or sets the document reference.\r\n            </summary>\r\n            <value>The document reference.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.AreaCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Area\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.AreaCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.AreaCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.AreaCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.AndConstraint\">\r\n            <summary>\r\n            A combined constraint that is satisfied only when two other constraints are both satisifed.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AndConstraint.#ctor(WatiN.Core.Constraints.Constraint,WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Creates a new AND constraint.\r\n            </summary>\r\n            <param name=\"first\">The first constraint</param>\r\n            <param name=\"second\">The second constraint</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"first\"/> or <paramref name=\"second\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AndConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.AndConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Constraints.AndConstraint.First\">\r\n            <summary>\r\n            Gets the first constraint that will be evaluated.\r\n            </summary>\r\n            <value>The first <see cref=\"T:WatiN.Core.Constraints.Constraint\"/>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Constraints.AndConstraint.Second\">\r\n            <summary>\r\n            Gets the second constraint that will be evaluated.\r\n            </summary>\r\n            <value>The second <see cref=\"T:WatiN.Core.Constraints.Constraint\"/>.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.List\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML ul and ol elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.List.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.List\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"nativeElement\">The HTML ul or ol element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.List.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.List\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The HTML ul or ol element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.List.OwnListItem(System.String)\">\r\n            <summary>\r\n            Finds a list item within the list itself (excluding content from any lists that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id</param>\r\n            <returns>The list item</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.List.OwnListItem(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds a list item within the list itself (excluding content from any lists that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id regular expression</param>\r\n            <returns>The list item</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.List.OwnListItem(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Finds a list item within the list itself (excluding content from any lists that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"findBy\">The constraint</param>\r\n            <returns>The list item</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.List.OwnListItem(System.Predicate{WatiN.Core.ListItem})\">\r\n            <summary>\r\n            Finds a list item within the list itself (excluding content from any lists that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"predicate\">The predicate</param>\r\n            <returns>The list item</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.List.OwnListItems\">\r\n            <summary>\r\n            Gets a collection of all table rows within the table itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <returns>The table row collection</returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut\">\r\n            <summary>\r\n            This class provides an easy way of retrying an action for a given number of seconds.\r\n            <example>\r\n            The following code shows a basic usage:\r\n            <code>\r\n            var action = new TryFuncUntilTimeOut(5);\r\n            var result = action.Try(() => false == true);\r\n            </code>\r\n            </example>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.#ctor(System.TimeSpan)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut\"/> class.\r\n            </summary>\r\n            <param name=\"timeout\">The timeout in seconds.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.#ctor(WatiN.Core.UtilityClasses.SimpleTimer)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut\"/> class.\r\n            </summary>\r\n            <param name=\"timer\">The timer instance which will be used when executing <see cref=\"M:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try``1(WatiN.Core.UtilityClasses.DoFunc{``0})\"/>.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try``1(WatiN.Core.UtilityClasses.DoFunc{``0})\">\r\n            <summary>\r\n            Tries the specified action until the result of the action is not equal to <c>default{T}</c>\r\n            or the time out is reached.\r\n            </summary>\r\n            <typeparam name=\"T\">The result type of the action</typeparam>\r\n            <param name=\"func\">The action.</param>\r\n            <returns>The result of the action of <c>default{T}</c> when time out occured.</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.SleepTime\">\r\n            <summary>\r\n            Gets or sets the maximum interval between retries of the action.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Timeout\">\r\n            <summary>\r\n            Returns the time out period.\r\n            </summary>\r\n            <value>The timeout.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.LastException\">\r\n            <summary>\r\n            Returns the last exception (thrown by the action) before the time out occured.\r\n            </summary>\r\n            <value>The last exception.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.DidTimeOut\">\r\n            <summary>\r\n            Returns a value indicating whether a time out occured.\r\n            </summary>\r\n            <value><c>true</c> if did time out; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.ExceptionMessage\">\r\n            <summary>\r\n            Gets or sets the exception message. If set a <see cref=\"T:System.TimeoutException\"/> will be thrown\r\n            if the action did time out.\r\n            </summary>\r\n            <value>The exception message.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Option\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML option element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Option.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Option\"/> class.\r\n            </summary>\r\n            <param name=\"domContainer\">The domContainer.</param>\r\n            <param name=\"element\">The option element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Option.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Option\"/> class.\r\n            </summary>\r\n            <param name=\"domContainer\">The domContainer.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Option.Clear\">\r\n            <summary>\r\n            De-selects this option in the selectlist (if selected),\r\n            fires the \"onchange\" event on the selectlist and waits for it\r\n            to complete.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Option.ClearNoWait\">\r\n            <summary>\r\n            De-selects this option in the selectlist (if selected),\r\n            fires the \"onchange\" event on the selectlist and does not wait for it\r\n            to complete.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Option.Select\">\r\n            <summary>\r\n            Selects this option in the selectlist (if not selected),\r\n            fires the \"onchange\" event on the selectlist and waits for it\r\n            to complete.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Option.SelectNoWait\">\r\n            <summary>\r\n            Selects this option in the selectlist (if not selected),\r\n            fires the \"onchange\" event on the selectlist and does not wait for it\r\n            to complete.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Option.DefaultToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Option.Value\">\r\n            <summary>\r\n            Returns the value.\r\n            </summary>\r\n            <value>The value.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Option.Selected\">\r\n            <summary>\r\n            Gets a value indicating whether this <see cref=\"T:WatiN.Core.Option\"/> is selected.\r\n            </summary>\r\n            <value><c>true</c> if selected; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Option.Index\">\r\n            <summary>\r\n            Returns the index of this <see cref=\"T:WatiN.Core.Option\"/> in the <see cref=\"T:WatiN.Core.SelectList\"/>.\r\n            </summary>\r\n            <value>The index.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Option.DefaultSelected\">\r\n            <summary>\r\n            Gets a value indicating whether this <see cref=\"T:WatiN.Core.Option\"/> is selected by default.\r\n            </summary>\r\n            <value><c>true</c> if selected by default; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Option.ParentSelectList\">\r\n            <summary>\r\n            Gets the parent <see cref=\"T:WatiN.Core.SelectList\"/>.\r\n            </summary>\r\n            <value>The parent <see cref=\"T:WatiN.Core.SelectList\"/>.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Logging.ConsoleLogWriter\">\r\n            <summary>\r\n            This logger class writes it's output to the console.\r\n            </summary>\r\n            <example>\r\n            The following code attaches the ConsoleLogWriter to WatiN and writes a\r\n            LogAction.\r\n            <code>\r\n            Logger.LogWriter = new ConsoleLogWriter;\r\n            Logger.LogAction(\"Attached ConsoleLogWriter\");\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ImageCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Image\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ImageCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.ImageCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ImageCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.FindByDefaultFactory\">\r\n            <summary>\r\n            A find by default factory that finds elements by id.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FindByDefaultFactory.ByDefault(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.FindByDefaultFactory.ByDefault(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.ElementReadOnlyException\">\r\n            <summary>\r\n            Thrown if an element is readonly and the current action (like TextField.TypeText) a\r\n            is not allowed.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.CheckBox\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML input element of type \r\n            checkbox.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.CheckBox.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.CheckBox\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The domContainer.</param>\r\n            <param name=\"inputElement\">The input element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.CheckBox.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.CheckBox\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The domContainer.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.Mozilla.FireFoxClientPort\">\r\n            <summary>\r\n            The firefox client port used to communicate with the remote automation server jssh.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Mozilla.FireFoxClientPort.WindowVariableName\">\r\n            <summary>\r\n            Name of the javascript variable that references the DOM:window object.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Mozilla.FireFoxClientPort.GetChildElementsFunctionName\">\r\n            <summary>\r\n            Name of the javascript function to retrieve only child elements (skip text nodes).\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Mozilla.FireFoxClientPort._disposed\">\r\n            <summary>\r\n            <c>true</c> if the <see cref=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.Dispose\"/> method has been called to release resources.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Native.Mozilla.FireFoxClientPort._telnetSocket\">\r\n            <summary>\r\n            Underlying socket used to create a <see cref=\"T:System.Net.Sockets.NetworkStream\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.Finalize\">\r\n            <summary>\r\n            Finalizes an instance of the <see cref=\"T:WatiN.Core.Native.Mozilla.FireFoxClientPort\"/> class. \r\n            Releases unmanaged resources and performs other cleanup operations before the\r\n            <see cref=\"T:WatiN.Core.FireFox\"/> is reclaimed by garbage collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.Connect(System.String)\">\r\n            <summary>\r\n            </summary>\r\n            <param name=\"url\">\r\n            The url.\r\n            </param>\r\n            <exception cref=\"T:WatiN.Core.Native.Mozilla.FireFoxException\">\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.ConnectToExisting\">\r\n            <summary>\r\n            </summary>\r\n            <exception cref=\"T:WatiN.Core.Native.Mozilla.FireFoxException\">\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.Dispose\">\r\n            <summary>\r\n            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.\r\n            </summary>\r\n            <filterpriority>2</filterpriority>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.InitializeDocument\">\r\n            <summary>\r\n            Reloads the javascript variables that are scoped at the document level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.Dispose(System.Boolean)\">\r\n            <summary>\r\n            Releases unmanaged and - optionally - managed resources\r\n            </summary>\r\n            <param name=\"disposing\">\r\n            <c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.SendAndRead(System.String,System.Boolean,System.Boolean,System.Object[])\">\r\n            <summary>\r\n            Writes the specified data to the jssh server.\r\n            </summary>\r\n            <param name=\"data\">\r\n            The data.\r\n            </param>\r\n            <param name=\"resultExpected\">\r\n            </param>\r\n            <param name=\"checkForErrors\">\r\n            </param>\r\n            <param name=\"args\">\r\n            </param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.CheckForError(System.String)\">\r\n            <summary>\r\n            </summary>\r\n            <param name=\"response\">\r\n            The response.\r\n            </param>\r\n            <exception cref=\"T:WatiN.Core.Native.Mozilla.FireFoxException\">\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.CleanTelnetResponse(System.String)\">\r\n            <summary>\r\n            Cleans the response.\r\n            </summary>\r\n            <param name=\"response\">\r\n            The response.\r\n            </param>\r\n            <returns>\r\n            Response from FireFox with out any of the telnet UI characters\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.DefineDefaultJSVariablesForWindow(System.Int32)\">\r\n            <summary>\r\n            Defines the default JS variables used to automate this FireFox window.\r\n            </summary>\r\n            <param name=\"windowIndex\">Index of the window.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.ReadResponse(System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Reads the response from the jssh server.\r\n            </summary>\r\n            <param name=\"resultExpected\">\r\n            The result Expected.\r\n            </param>\r\n            <param name=\"checkForErrors\">\r\n            The check For Errors.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.SendCommand(System.String)\">\r\n            <summary>\r\n            Sends a command to the FireFox remote server.\r\n            </summary>\r\n            <param name=\"data\">\r\n            The data to send.\r\n            </param>\r\n            <exception cref=\"T:WatiN.Core.Native.Mozilla.FireFoxException\">When not connected.</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.CloseExistingFireFoxInstances\">\r\n            <summary>\r\n            </summary>\r\n            <exception cref=\"T:WatiN.Core.Native.Mozilla.FireFoxException\">\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.Mozilla.FireFoxClientPort.WaitForConnectionEstablished\">\r\n            <summary>\r\n            Writes a line to the jssh server.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FireFoxClientPort.Connected\">\r\n            <summary>\r\n            Gets a value indicating whether this <see cref=\"T:WatiN.Core.Native.Mozilla.FireFoxClientPort\"/> is connected.\r\n            </summary>\r\n            <value><c>true</c> if connected; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FireFoxClientPort.DocumentVariableName\">\r\n            <summary>\r\n            Gets the name of the javascript variable that references the DOM:document object.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FireFoxClientPort.JavaScriptEngine\">\r\n            <summary>\r\n            Gets the type of java script engine.\r\n            </summary>\r\n            <value>The type of java script engine.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FireFoxClientPort.BrowserVariableName\">\r\n            <summary>\r\n            Gets the name of the browser variable.\r\n            </summary>\r\n            <value>The name of the browser variable.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FireFoxClientPort.IsMainWindowVisible\">\r\n            <summary>\r\n            Gets a value indicating whether the main FireFox window is visible, it's possible that the\r\n            main FireFox window is not visible if a previous shutdown didn't complete correctly\r\n            in which case the restore / resume previous session dialog may be visible.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.Mozilla.FireFoxClientPort.IsRestoreSessionDialogVisible\">\r\n            <summary>\r\n            Gets a value indicating whether IsRestoreSessionDialogVisible.\r\n            </summary>\r\n            <value>\r\n            The is restore session dialog visible.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ElementSelector`1\">\r\n            <summary>\r\n            A delegate that selects an element in a position relative to another element.\r\n            </summary>\r\n            <typeparam name=\"TElement\">The reference element type</typeparam>\r\n            <param name=\"referenceElement\">The reference element from which the search begins</param>\r\n            <returns>The selected element, possibly a descendant or ancestor of the reference element</returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ListCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.List\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ListCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.ListCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ListCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Body\">\r\n            <summary>\r\n            This class represents an HTML \"body\" element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Body.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Initialises a new instance of the <see cref=\"T:WatiN.Core.Body\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The <see cref=\"T:WatiN.Core.DomContainer\"/> the element is in.</param>\r\n            <param name=\"element\">The input button or button element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Body.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initialises a new instance of the <see cref=\"T:WatiN.Core.Body\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The <see cref=\"T:WatiN.Core.DomContainer\"/> the element is in.</param>\r\n            <param name=\"finder\">The input button or button element.</param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ComponentExtensions\">\r\n            <summary>\r\n            Provides extension methods for <see cref=\"T:WatiN.Core.Component\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ComponentExtensions.WithDescription``1(``0,System.String)\">\r\n            <summary>\r\n            Assigns a description to a component and returns it.\r\n            </summary>\r\n            <typeparam name=\"T\">The component type.</typeparam>\r\n            <param name=\"component\">The component.</param>\r\n            <param name=\"description\">The description, or null if none.</param>\r\n            <returns>The component.</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"component\"/> is null.</exception>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.TableRow\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML tr element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableRow.OwnTableCell(System.String)\">\r\n            <summary>\r\n            Finds a table cell within the table row itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id</param>\r\n            <returns>The table cell</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableRow.OwnTableCell(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Finds a table cell within the table row itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"elementId\">The element id regular expression</param>\r\n            <returns>The table cell</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableRow.OwnTableCell(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Finds a table cell within the table row itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"findBy\">The constraint</param>\r\n            <returns>The table cell</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableRow.OwnTableCell(System.Predicate{WatiN.Core.TableCell})\">\r\n            <summary>\r\n            Finds a table cell within the table row itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <param name=\"predicate\">The predicate</param>\r\n            <returns>The table cell</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableRow.IsHeaderRow\">\r\n            <summary>\r\n            Returns a <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> which can be applied on a <see cref=\"T:WatiN.Core.TableRowCollection\"/>\r\n            to filter out <see cref=\"T:WatiN.Core.TableRow\"/> elements contained in a thead section.\r\n            </summary>\r\n            <returns></returns>\r\n            <seealso cref=\"M:WatiN.Core.TableRow.IsFooterRow\"/>\r\n            <example>\r\n            Following example shows how to get only the rows inside a thead section:\r\n            <code>\r\n            var browser = new IE(\"www.watin.net/examples/tables.htm\");\r\n            var tableRows = browser.Table(\"table_id\").OwnTableRows;\r\n            \r\n            var headerRows = tableRows.Filter(TableRow.IsHeaderRow());\r\n            </code>\r\n            If you don't want header rows in your tablerows collection apply to <see cref=\"T:WatiN.Core.Constraints.NotConstraint\"/>:\r\n            <code>\r\n            var browser = new IE(\"www.watin.net/examples/tables.htm\");\r\n            var tableRows = browser.Table(\"table_id\").OwnTableRows;\r\n            \r\n            var noHeaderRows = tableRows.Filter(!TableRow.IsHeaderRow());\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableRow.IsFooterRow\">\r\n            <summary>\r\n            Returns a <see cref=\"T:WatiN.Core.Constraints.Constraint\"/> which can be applied on a <see cref=\"T:WatiN.Core.TableRowCollection\"/>\r\n            to filter out <see cref=\"T:WatiN.Core.TableRow\"/> elements contained in a tfoot section.\r\n            </summary>\r\n            <returns></returns>\r\n            <seealso cref=\"M:WatiN.Core.TableRow.IsHeaderRow\"/>\r\n            <example>\r\n            Following example shows how to get only the rows inside a tfoot section:\r\n            <code>\r\n            var browser = new IE(\"www.watin.net/examples/tables.htm\");\r\n            var tableRows = browser.Table(\"table_id\").OwnTableRows;\r\n            \r\n            var footerRows = tableRows.Filter(TableRow.IsFooterRow());\r\n            </code>\r\n            If you don't want header rows in your tablerows collection apply to <see cref=\"T:WatiN.Core.Constraints.NotConstraint\"/>:\r\n            <code>\r\n            var browser = new IE(\"www.watin.net/examples/tables.htm\");\r\n            var tableRows = browser.Table(\"table_id\").OwnTableRows;\r\n            \r\n            var noFooterRows = tableRows.Filter(!TableRow.IsFooterRow());\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableRow.ContainingTable\">\r\n            <summary>\r\n            Gets the table that contains this row.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableRow.ContainingTableBody\">\r\n            <summary>\r\n            Gets the table body that contains this row.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableRow.ParentTable\">\r\n            <summary>\r\n            Gets the table that contains this row.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableRow.Index\">\r\n            <summary>\r\n            Gets the index of the <see cref=\"T:WatiN.Core.TableRow\"/> in the <see cref=\"T:WatiN.Core.TableRowCollection\"/> of the parent <see cref=\"T:WatiN.Core.Table\"/>.\r\n            </summary>\r\n            <value>The index of the row.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableRow.OwnTableCells\">\r\n            <summary>\r\n            Gets a collection of all table cells within the table row itself (excluding content from any tables that\r\n            might be nested within it).\r\n            </summary>\r\n            <returns>The table cell collection</returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.TableRow.TableCellsDirectChildren\">\r\n            <summary>\r\n            Gets the table cells that are direct children of this <see cref=\"T:WatiN.Core.TableRow\"/>, leaving\r\n            out table cells of any nested tables within this <see cref=\"T:WatiN.Core.TableRow\"/>.\r\n            </summary>\r\n            <value>The table cells collection.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.LabelCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Label\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.LabelCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.LabelCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.LabelCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.IECollection\">\r\n            <summary>\r\n            A typed collection of open <see cref=\"T:WatiN.Core.IE\"/> instances.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IECollection.CreateFilteredCollection(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IECollection.GetComponents\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.DivCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Div\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DivCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.DivCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DivCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.CheckBoxCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.CheckBox\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.CheckBoxCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.CheckBoxCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.CheckBoxCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.InternetExplorer.WinInet\">\r\n            <summary>\r\n            Provides low-level support for manipulating cookies, clearing caches and\r\n            setting internet options.\r\n            </summary>\r\n            <remarks author=\"jeff.brown\">\r\n            This cookie clearing code is based on the sample code from the following MS KB article:\r\n            http://support.microsoft.com/default.aspx?scid=kb;EN-US;326201\r\n            Beware, the code presented in that article is somewhat buggy so it has been\r\n            completely rewritten here.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.InternetExplorer.WinInet.ClearCookiesCommand\">\r\n            <summary>\r\n            Holds state for the duration of the clear cookies operation because we\r\n            don't have anonymous delegates in .Net 1.1.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.NativeElementCollectionAdapter\">\r\n            <summary>\r\n            Wraps a <see cref=\"T:WatiN.Core.DomContainer\"/> and <see cref=\"T:WatiN.Core.Native.INativeElementCollection\"/> as\r\n            an implementation of <see cref=\"T:WatiN.Core.IElementContainer\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.#ctor(WatiN.Core.DomContainer,WatiN.Core.NativeElementFinder.NativeElementCollectionFactory)\">\r\n            <summary>\r\n            Creates a new adapter.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container</param>\r\n            <param name=\"factory\">The native element collection</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"domContainer\"/> or\r\n            <paramref name=\"factory\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.Child(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.Child(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.Child(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.Child(System.Predicate{WatiN.Core.Element})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.Children\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.ChildOfType``1(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.ChildOfType``1(System.Text.RegularExpressions.Regex)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.ChildOfType``1(WatiN.Core.Constraints.Constraint)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.ChildOfType``1(System.Predicate{``0})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.ChildrenOfType``1\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.ChildWithTag(System.String,WatiN.Core.Constraints.Constraint,System.String[])\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.ChildrenWithTag(System.String,System.String[])\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.NativeElementCollectionAdapter.ChildrenWithTag(System.Collections.Generic.IList{WatiN.Core.ElementTag})\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Logging.LogMessageType\">\r\n            <summary>\r\n            enumeration of the logging types\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Logging.LogMessageType.Action\">\r\n            <summary>\r\n            action logging type\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:WatiN.Core.Logging.LogMessageType.Debug\">\r\n            <summary>\r\n            debug logging type\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Actions.TypeTextAction.TextField\">\r\n            <summary>\r\n            The <see cref=\"P:WatiN.Core.Actions.TypeTextAction.TextField\"/> wrapped by this <see cref=\"T:WatiN.Core.Actions.TypeTextAction\"/> instance.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Span\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML span element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.SelectList\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML select element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.#ctor(WatiN.Core.DomContainer,WatiN.Core.Native.INativeElement)\">\r\n            <summary>\r\n            Returns an initialized instance of a SelectList object.\r\n            Mainly used by the collectionclass SelectLists.\r\n            </summary>\r\n            <param name=\"domContainer\">The <see cref=\"T:WatiN.Core.DomContainer\"/> the element is in.</param>\r\n            <param name=\"element\">The HTML select element.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Returns an instance of a SelectList object.\r\n            Mainly used internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The <see cref=\"T:WatiN.Core.DomContainer\"/> the element is in.</param>\r\n            <param name=\"finder\">The element finder to use.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.ClearList\">\r\n            <summary>\r\n            This method clears the selected items in the select box and waits for the \r\n            onchange event to complete after the list is cleared\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.Select(System.String)\">\r\n            <summary>\r\n            This method selects an item by text.\r\n            Raises NoValueFoundException if the specified value is not found.\r\n            </summary>\r\n            <param name=\"text\">The text.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.Select(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            This method selects an item by text using the supplied regular expression.\r\n            Raises NoValueFoundException if the specified value is not found.\r\n            </summary>\r\n            <param name=\"regex\">The regex.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.SelectByValue(System.String)\">\r\n            <summary>\r\n            Selects an item in a select box, by value.\r\n            Raises NoValueFoundException if the specified value is not found.\r\n            </summary>\r\n            <param name=\"value\">The value.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.SelectByValue(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Selects an item in a select box by value using the supplied regular expression.\r\n            Raises NoValueFoundException if the specified value is not found.\r\n            </summary>\r\n            <param name=\"regex\">The regex.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.Option(System.String)\">\r\n            <summary>\r\n            Returns the <see cref=\"P:WatiN.Core.SelectList.Options\"/> which matches the specified <paramref name=\"text\"/>.\r\n            </summary>\r\n            <param name=\"text\">The text.</param>\r\n            <returns><see cref=\"P:WatiN.Core.SelectList.Options\"/></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.Option(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Returns the <see cref=\"P:WatiN.Core.SelectList.Options\"/> which matches the specified <paramref name=\"text\"/>.\r\n            </summary>\r\n            <param name=\"text\">The text.</param>\r\n            <returns><see cref=\"P:WatiN.Core.SelectList.Options\"/></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.Option(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Returns the <see cref=\"P:WatiN.Core.SelectList.Options\"/> which matches the specified <paramref name=\"findBy\"/>.\r\n            </summary>\r\n            <param name=\"findBy\">The find by to use.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SelectList.Option(System.Predicate{WatiN.Core.Option})\">\r\n            <summary>\r\n            Returns the <see cref=\"P:WatiN.Core.SelectList.Options\"/> which matches the specified expression.\r\n            </summary>\r\n            <param name=\"predicate\">The expression to use.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.SelectList.Multiple\">\r\n            <summary>\r\n            Gets a value indicating whether this <see cref=\"T:WatiN.Core.SelectList\"/> allows multiple select.\r\n            </summary>\r\n            <value><c>true</c> if multiple; otherwise, <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.SelectList.AllContents\">\r\n            <summary>\r\n            Returns all the items in the select list as an array.\r\n            An empty array is returned if the select box has no contents.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.SelectList.Options\">\r\n            <summary>\r\n            Returns all the <see cref=\"T:WatiN.Core.Option\"/> elements in the <see cref=\"T:WatiN.Core.SelectList\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.SelectList.SelectedOptions\">\r\n            <summary>\r\n            Returns the selected option(s) in an array list.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.SelectList.SelectedItems\">\r\n            <summary>\r\n            Returns the selected item(s) in a <see cref=\"T:System.Collections.Specialized.StringCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.SelectList.SelectedItem\">\r\n            <summary>\r\n            Returns the first selected item in the selectlist. Other items may be selected.\r\n            Use SelectedItems to get a StringCollection of all selected items.\r\n            When there's no item selected, the return value will be null.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.SelectList.SelectedOption\">\r\n            <summary>\r\n            Returns the first selected option in the selectlist. Other options may be selected.\r\n            Use SelectedOptions to get an ArrayList of all selected options.\r\n            When there's no option selected, the return value will be null.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.SelectList.HasSelectedItems\">\r\n            <summary>\r\n            Gets a value indicating whether this instance has selected items.\r\n            </summary>\r\n            <value>\r\n            \t<c>true</c> if this instance has selected items; otherwise, <c>false</c>.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.OptionCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Option\"/> elements within a <see cref=\"T:WatiN.Core.SelectList\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.OptionCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.OptionCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.OptionCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.LinkCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Link\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.LinkCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.LinkCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.LinkCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Label\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML label element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Image\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML img element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Exceptions.RunScriptException\">\r\n            <summary>\r\n            Thrown if a (java) script failed to run. The innerexception returns the actual exception.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Comparers.RegexComparer\">\r\n            <summary>\r\n            This class supports matching a regular expression with a string value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.RegexComparer.#ctor(System.Text.RegularExpressions.Regex)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.Comparers.RegexComparer\"/> class.\r\n            </summary>\r\n            <param name=\"regex\">The regex to be used by the <see cref=\"M:WatiN.Core.Comparers.RegexComparer.Compare(System.String)\"/>.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"regex\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.RegexComparer.Compare(System.String)\">\r\n            <summary>\r\n            Matches the given value with the regex. You can override this method\r\n            and provide your own implementation for the comparison with the\r\n            given <paramref name=\"value\"/>.\r\n            </summary>\r\n            <param name=\"value\">The value.</param>\r\n            <returns>\r\n            Should return <c>true</c> or <c>false</c>, which is the default.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Comparers.RegexComparer.ToString\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Comparers.RegexComparer.Regex\">\r\n            <summary>\r\n            Gets the regular expression to compare against.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.ButtonCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Button\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ButtonCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.ButtonCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.ButtonCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.ShellWindows2.GetEnumerator\">\r\n            <exclude />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Native.InternetExplorer.IEElement\">\r\n            <summary>\r\n            Summary description for IEElement.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.GetAttributeValue(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.SetAttributeValue(System.String,System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.SetFocus\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.FireEvent(System.String,System.Collections.Specialized.NameValueCollection)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.FireEventNoWait(System.String,System.Collections.Specialized.NameValueCollection)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.Select\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.SubmitForm\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.SetFileUploadFile(WatiN.Core.DialogHandlers.DialogWatcher,System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.GetStyleAttributeValue(System.String)\">\r\n            <summary>\r\n            This methode can be used if the attribute isn't available as a property of\r\n            of this <see cref=\"T:WatiN.Core.Style\"/> class.\r\n            </summary>\r\n            <param name=\"attributeName\">The attribute name. This could be different then named in\r\n            the HTML. It should be the name of the property exposed by IE on it's style object.</param>\r\n            <returns>The value of the attribute if available; otherwise <c>null</c> is returned.</returns>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.SetStyleAttributeValue(System.String,System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.IsElementReferenceStillValid\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.WaitUntilReady\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.GetElementBounds\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEElement.GetJavaScriptElementReference\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.AsHtmlElement\">\r\n            <summary>\r\n            Gets the underlying <see cref=\"T:mshtml.IHTMLElement\"/> object.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.Children\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.AllDescendants\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.TableRows\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.TableBodies\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.TableCells\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.Options\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.TextAfter\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.TextBefore\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.NextSibling\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.PreviousSibling\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.Parent\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.AsDispHTMLBaseElement\">\r\n            <summary>\r\n            Gets the DispHtmlBaseElement />.\r\n            </summary>\r\n            <value>The DispHtmlBaseElement.</value>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Native.InternetExplorer.IEElement.TagName\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEFireEventHandler.FireEventNoWait(System.String,System.Collections.Specialized.NameValueCollection)\">\r\n            <summary>\r\n            Fires the event on the element but doesn't wait for it to complete\r\n            </summary>\r\n            <param name=\"eventName\">Name of the event to fire</param>\r\n            <param name=\"eventProperties\">The event object properties.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Native.InternetExplorer.IEFireEventHandler.FireEvent(System.String,System.Collections.Specialized.NameValueCollection)\">\r\n            <summary>\r\n            Fires the event on the given element.\r\n            </summary>\r\n            <param name=\"eventName\">Name of the event to fire</param>\r\n            <param name=\"eventProperties\">The event object properties.</param>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.TextFieldCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.TextField\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TextFieldCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.TextFieldCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TextFieldCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.TableCellCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.TableCell\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableCellCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.TableCellCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.TableCellCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.SpanCollection\">\r\n            <summary>\r\n            A typed collection of <see cref=\"T:WatiN.Core.Span\"/> instances within a <see cref=\"T:WatiN.Core.Document\"/> or <see cref=\"T:WatiN.Core.Element\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SpanCollection.#ctor(WatiN.Core.DomContainer,WatiN.Core.ElementFinder)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:WatiN.Core.SpanCollection\"/> class.\r\n            Mainly used by WatiN internally.\r\n            </summary>\r\n            <param name=\"domContainer\">The DOM container.</param>\r\n            <param name=\"finder\">The finder.</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.SpanCollection.CreateFilteredCollection(WatiN.Core.ElementFinder)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Logging.Logger\">\r\n            <summary>\r\n            This class provides some basic means to write actions to a logger class.\r\n            WatiN uses this class to log which actions are done while driving Internet\r\n            Explorer.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Logging.Logger.LogAction(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs the action. These should be messages about \"user\" actions done by WatiN. \r\n            </summary>\r\n            <param name=\"message\">A message containing zero or more format items.</param>\r\n            <param name=\"args\">An object array containing zero or more objects to format</param>\r\n            <example>\r\n            Call this function from your code like this:\r\n            <code>\r\n            Logger.LogAction(\"Some message\");\r\n            </code>\r\n            or\r\n            <code>\r\n            Logger.LogAction(\"Some message with an {0} to {1}, \"item\", \"format\");\r\n            </code>\r\n            \r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Logging.Logger.LogDebug(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs the debug message. These should be technical messages from within WatiN.\r\n            </summary>\r\n            <param name=\"message\">A message containing zero or more format items.</param>\r\n            <param name=\"args\">An object array containing zero or more objects to format</param>\r\n            <example>\r\n            Call this function from your code like this:\r\n            <code>\r\n            Logger.LogDebug(\"Some message\");\r\n            </code>\r\n            or\r\n            <code>\r\n            Logger.LogDebug(\"Some message with an {0} to {1}, \"item\", \"format\");\r\n            </code>\r\n            \r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Logging.Logger.Log(WatiN.Core.Logging.LogMessageType,System.String,System.Object[])\">\r\n            <summary>\r\n            base logging method to send data\r\n            </summary>\r\n            <param name=\"logType\">LogTypes enumeration item</param>\r\n            <param name=\"message\">A message containing zero or more format items.</param>\r\n            <param name=\"args\">An object array containing zero or more objects to format</param>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Logging.Logger.Log(WatiN.Core.Logging.LogMessageType,WatiN.Core.Logging.LogMessageCallback)\">\r\n            <summary>\r\n            Base logging method to send data and create the message only when a logWriter is attached\r\n            </summary>\r\n            <param name=\"logType\">LogTypes enumeration item</param>\r\n            <param name=\"callback\">A delegate to create the log message.</param>\r\n        </member>\r\n        <member name=\"P:WatiN.Core.Logging.Logger.LogWriter\">\r\n            <summary>\r\n            Gets or sets the log writer.\r\n            </summary>\r\n            <value>The log writer.</value>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Link\">\r\n            <summary>\r\n            This class provides specialized functionality for a HTML link element.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.HtmlDialog\">\r\n            <summary>\r\n            This is the main class to access a webpage within a modal or modeless\r\n            HTML dialog.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.HtmlDialog.GetAttributeValueImpl(System.String)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.DialogHandlers.PrintDialogHandler\">\r\n             <summary>\r\n             This class handles the print dialog clicking the Print, \r\n             Cancel or Apply button.\r\n             </summary>\r\n             <example>\r\n             The following code shows the use of this dialog handler\r\n             <code>\r\n             IE ie = new IE();\r\n            \r\n             ie.DialogWatcher.Add(new PrintDialogHandler(PrintDialogHandler.ButtonsEnum.Cancel));\r\n            \r\n             ie.GoTo(\"http://www.someprintdialog.com\");\r\n             </code>\r\n             </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.DialogHandlers.PrintDialogHandler.CanHandleDialog(WatiN.Core.Native.Windows.Window)\">\r\n            <summary>\r\n            Determines whether the specified window is a print dialog by checking the <see cref=\"P:WatiN.Core.Native.Windows.Window.StyleInHex\"/>.\r\n            Valid values are \"96C820C4\" or \"96C800C4\".\r\n            </summary>\r\n            <param name=\"window\">The window.</param>\r\n            <returns>\r\n            <c>true</c> if the specified window is a print dialog; otherwise, <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:WatiN.Core.Constraints.NotConstraint\">\r\n            <summary>\r\n            A constraint that produces the inverse result of another constraint.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.NotConstraint.#ctor(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Creates a new NOT constraint.\r\n            </summary>\r\n            <param name=\"inner\">The inner constraint</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">Thrown if <paramref name=\"inner\"/> is null</exception>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.NotConstraint.WriteDescriptionTo(System.IO.TextWriter)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"M:WatiN.Core.Constraints.NotConstraint.MatchesImpl(WatiN.Core.Interfaces.IAttributeBag,WatiN.Core.Constraints.ConstraintContext)\">\r\n            <inheritdoc />\r\n        </member>\r\n        <member name=\"T:WatiN.Core.IdHinter\">\r\n            <summary>\r\n            This class determines if it is possible to get an element by its Id based on the given Constraint.\r\n            If so it will return an id\r\n            </summary>\r\n            <example>\r\n            Following an example on how to use this class:\r\n            <code>\r\n            var idHint = IdHinter.GetIdHint(Find.ById(\"someId\"));\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:WatiN.Core.IdHinter.GetIdHint(WatiN.Core.Constraints.Constraint)\">\r\n            <summary>\r\n            Gets the id hint. Only returns an Id if <paramref name=\"constraint\"/> is an <see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/> on an exact Id or\r\n            if the <paramref name=\"constraint\"/> is an <see cref=\"T:WatiN.Core.Constraints.AndConstraint\"/> with an <see cref=\"T:WatiN.Core.Constraints.AttributeConstraint\"/> on an exact Id \r\n            and an <see cref=\"T:WatiN.Core.Constraints.AnyConstraint\"/>.\r\n            </summary>\r\n            <param name=\"constraint\">The constraint to get the id Hint from.</param>\r\n            <returns></returns>\r\n        </member>\r\n    </members>\r\n</doc>\r\n"
  },
  {
    "path": "Tools/ThirdParty/log4net/1.0/release/log4net.xml",
    "content": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>log4net</name>\r\n    </assembly>\r\n    <members>\r\n        <member name=\"T:log4net.Appender.AdoNetAppender\">\r\n            <summary>\r\n            Appender that logs to a database.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> appends logging events to a table within a\r\n            database. The appender can be configured to specify the connection \r\n            string by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionString\"/> property. \r\n            The connection type (provider) can be specified by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/>\r\n            property. For more information on database connection strings for\r\n            your specific database see <a href=\"http://www.connectionstrings.com/\">http://www.connectionstrings.com/</a>.\r\n            </para>\r\n            <para>\r\n            Records are written into the database either using a prepared\r\n            statement or a stored procedure. The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property\r\n            is set to <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement\r\n            or to <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored\r\n            procedure.\r\n            </para>\r\n            <para>\r\n            The prepared statement text or the name of the stored procedure\r\n            must be set in the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property.\r\n            </para>\r\n            <para>\r\n            The prepared statement or stored procedure can take a number\r\n            of parameters. Parameters are added using the <see cref=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\"/>\r\n            method. This adds a single <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> to the\r\n            ordered list of parameters. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/>\r\n            type may be subclassed if required to provide database specific\r\n            functionality. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> specifies\r\n            the parameter name, database type, size, and how the value should\r\n            be generated using a <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            An example of a SQL Server table that could be logged to:\r\n            <code lang=\"SQL\">\r\n            CREATE TABLE [dbo].[Log] ( \r\n              [ID] [int] IDENTITY (1, 1) NOT NULL ,\r\n              [Date] [datetime] NOT NULL ,\r\n              [Thread] [varchar] (255) NOT NULL ,\r\n              [Level] [varchar] (20) NOT NULL ,\r\n              [Logger] [varchar] (255) NOT NULL ,\r\n              [Message] [varchar] (4000) NOT NULL \r\n            ) ON [PRIMARY]\r\n            </code>\r\n            </example>\r\n            <example>\r\n            An example configuration to log to the above table:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"AdoNetAppender_SqlServer\" type=\"log4net.Appender.AdoNetAppender\">\r\n              <connectionType value=\"System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"/>\r\n              <connectionString value=\"data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa\"/>\r\n              <commandText value=\"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)\"/>\r\n              <parameter>\r\n                <parameterName value=\"@log_date\"/>\r\n                <dbType value=\"DateTime\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@thread\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%thread\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@log_level\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"50\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%level\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@logger\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%logger\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@message\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"4000\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%message\"/>\r\n              </parameter>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Lance Nehring</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingAppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/> that \r\n            buffers events in a fixed size buffer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This base class should be used by appenders that need to buffer a \r\n            number of events before logging them. For example the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            buffers events and then submits the entire contents of the buffer to \r\n            the underlying database in one go.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>\r\n            method to deliver the buffered events.\r\n            </para>\r\n            <para>The BufferingAppenderSkeleton maintains a fixed size cyclic \r\n            buffer of events. The size of the buffer is set using \r\n            the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> property.\r\n            </para>\r\n            <para>A <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> is used to inspect \r\n            each event as it arrives in the appender. If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> \r\n            triggers, then the current buffer is sent immediately \r\n            (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>). Otherwise the event \r\n            is stored in the buffer. For example, an evaluator can be used to \r\n            deliver the events immediately when an ERROR event arrives.\r\n            </para>\r\n            <para>\r\n            The buffering appender can be configured in a <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode. \r\n            By default the appender is NOT lossy. When the buffer is full all \r\n            the buffered events are sent with <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property is set to <c>true</c> then the \r\n            buffer will not be sent when it is full, and new events arriving \r\n            in the appender will overwrite the oldest event in the buffer. \r\n            In lossy mode the buffer will only be sent when the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/>\r\n            triggers. This can be useful behavior when you need to know about \r\n            ERROR events but not about events with a lower level, configure an \r\n            evaluator that will trigger when an ERROR event arrives, the whole \r\n            buffer will be sent which gives a history of events leading up to\r\n            the ERROR event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the code for common functionality, such \r\n            as support for threshold filtering and support for general filters.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.IAppender\">\r\n            <summary>\r\n            Implement this interface for your own strategies for printing log statements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementors should consider extending the <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>\r\n            class which provides a default implementation of this interface.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.Close\">\r\n            <summary>\n            Closes the appender and releases resources.\n            </summary>\n            <remarks>\n            <para>\n            Releases any resources allocated within the appender such as file handles, \n            network connections, etc.\n            </para>\n            <para>\n            It is a programming error to append to a closed appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Log the logging event in Appender specific way.\n            </summary>\n            <param name=\"loggingEvent\">The event to log</param>\n            <remarks>\n            <para>\n            This method is called to log a message into this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.IAppender.Name\">\r\n            <summary>\n            Gets or sets the name of this appender.\n            </summary>\n            <value>The name of the appender.</value>\n            <remarks>\n            <para>The name uniquely identifies the appender.</para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.IBulkAppender\">\r\n            <summary>\r\n            Interface for appenders that support bulk logging.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface extends the <see cref=\"T:log4net.Appender.IAppender\"/> interface to\r\n            support bulk logging of <see cref=\"T:log4net.Core.LoggingEvent\"/> objects. Appenders\r\n            should only implement this interface if they can bulk log efficiently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Log the array of logging events in Appender specific way.\n            </summary>\n            <param name=\"loggingEvents\">The events to log</param>\n            <remarks>\n            <para>\n            This method is called to log an array of events into this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.IOptionHandler\">\r\n            <summary>\r\n            Interface used to delay activate a configured object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This allows an object to defer activation of its options until all\r\n            options have been set. This is required for components which have\r\n            related options that remain ambiguous until all are set.\r\n            </para>\r\n            <para>\r\n            If a component implements this interface then the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method \r\n            must be called by the container after its all the configured properties have been set \r\n            and before the component can be used.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IOptionHandler.ActivateOptions\">\r\n            <summary>\n            Activate the options that were previously set with calls to properties.\n            </summary>\n            <remarks>\n            <para>\n            This allows an object to defer activation of its options until all\n            options have been set. This is required for components which have\n            related options that remain ambiguous until all are set.\n            </para>\n            <para>\n            If a component implements this interface then this method must be called\n            after its properties have been set before the component can be used.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferSize\">\r\n            <summary>\n            Initial buffer size\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity\">\r\n            <summary>\n            Maximum buffer size before it is recycled\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>Empty default constructor</para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Finalize\">\r\n            <summary>\r\n            Finalizes this appender by calling the implementation's \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If this appender has not been closed then the <c>Finalize</c> method\r\n            will call <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Close\">\r\n            <summary>\r\n            Closes the appender and release resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            <para>\r\n            This method cannot be overridden by subclasses. This method \r\n            delegates the closing of the appender to the <see cref=\"M:log4net.Appender.AppenderSkeleton.OnClose\"/>\r\n            method which must be overridden in the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvent\"/>\r\n            will be passed to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvents\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvents\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvents\"/>\r\n            will be passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.FilterEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Test if the logging event should we output by this appender\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to test</param>\r\n            <returns><c>true</c> if the event should be output, <c>false</c> if the event should be ignored</returns>\r\n            <remarks>\r\n            <para>\r\n            This method checks the logging event against the threshold level set\r\n            on this appender and also against the filters specified on this\r\n            appender.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.AddFilter(log4net.Filter.IFilter)\">\r\n            <summary>\n            Adds a filter to the end of the filter chain.\n            </summary>\n            <param name=\"filter\">the filter to add to this appender</param>\n            <remarks>\n            <para>\n            The Filters are organized in a linked list.\n            </para>\n            <para>\n            Setting this property causes the new filter to be pushed onto the \n            back of the filter chain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ClearFilters\">\r\n            <summary>\n            Clears the filter list for this appender.\n            </summary>\n            <remarks>\n            <para>\n            Clears the filter list for this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.IsAsSevereAsThreshold(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if the message level is below this appender's threshold.\r\n            </summary>\r\n            <param name=\"level\"><see cref=\"T:log4net.Core.Level\"/> to test against.</param>\r\n            <remarks>\r\n            <para>\r\n            If there is no threshold set, then the return value is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the <paramref name=\"level\"/> meets the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> \r\n            requirements of this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.OnClose\">\r\n            <summary>\n            Is called when the appender is closed. Derived classes should override \n            this method if resources need to be released.\n            </summary>\n            <remarks>\n            <para>\n            Releases any resources allocated within the appender such as file handles, \n            network connections, etc.\n            </para>\n            <para>\n            It is a programming error to append to a closed appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Subclasses of <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> should implement this method \r\n            to perform actual logging.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to append.</param>\r\n            <remarks>\r\n            <para>\r\n            A subclass must implement this method to perform\r\n            logging of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            <para>This method will be called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            if all the conditions listed for that method are met.\r\n            </para>\r\n            <para>\r\n            To restrict the logging of events in the appender\r\n            override the <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append a bulk array of logging events.\r\n            </summary>\r\n            <param name=\"loggingEvents\">the array of logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This base class implementation calls the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>\r\n            method for each element in the bulk array.\r\n            </para>\r\n            <para>\r\n            A sub class that can better process a bulk array of events should\r\n            override this method in addition to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\">\r\n            <summary>\r\n            Called before <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> as a precondition.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            before the call to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden in a subclass to extend the checks \r\n            made before the event is passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            A subclass should ensure that they delegate this call to\r\n            this base class if it is overridden.\r\n            </para>\r\n            </remarks>\r\n            <returns><c>true</c> if the call to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> should proceed.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <returns>The event rendered as a string.</returns>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Where possible use the alternative version of this method\r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>.\r\n            That method streams the rendering onto an existing Writer\r\n            which can give better performance if the caller already has\r\n            a <see cref=\"T:System.IO.TextWriter\"/> open and ready for writing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Use this method in preference to <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/>\r\n            where possible. If, however, the caller needs to render the event\r\n            to a string then <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/> does\r\n            provide an efficient mechanism for doing so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_layout\">\r\n            <summary>\r\n            The layout of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_name\">\r\n            <summary>\r\n            The name of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Name\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_threshold\">\r\n            <summary>\r\n            The level threshold of this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            There is no level threshold filtering by default.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_errorHandler\">\r\n            <summary>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_headFilter\">\r\n            <summary>\r\n            The first filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Set to <c>null</c> initially.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_tailFilter\">\r\n            <summary>\r\n            The last filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_closed\">\r\n            <summary>\r\n            Flag indicating if this appender is closed.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_recursiveGuard\">\r\n            <summary>\n            The guard prevents an appender from repeatedly calling its own DoAppend method\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_renderWriter\">\r\n            <summary>\n            StringWriter used to render events\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.declaringType\">\r\n            <summary>\n            The fully qualified type of the AppenderSkeleton class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Threshold\">\r\n            <summary>\r\n            Gets or sets the threshold <see cref=\"T:log4net.Core.Level\"/> of this appender.\r\n            </summary>\r\n            <value>\r\n            The threshold <see cref=\"T:log4net.Core.Level\"/> of the appender. \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            All log events with lower level than the threshold level are ignored \r\n            by the appender.\r\n            </para>\r\n            <para>\r\n            In configuration files this option is specified by setting the\r\n            value of the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> option to a level\r\n            string, such as \"DEBUG\", \"INFO\" and so on.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </summary>\r\n            <value>The <see cref=\"T:log4net.Core.IErrorHandler\"/> of the appender</value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> provides a default \r\n            implementation for the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> property. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.FilterHead\">\r\n            <summary>\n            The filter chain.\n            </summary>\n            <value>The head of the filter chain filter chain.</value>\n            <remarks>\n            <para>\n            Returns the head Filter. The Filters are organized in a linked list\n            and so all Filters on this Appender are available through the result.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.ILayout\"/> for this appender.\r\n            </summary>\r\n            <value>The layout of the appender.</value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Name\">\r\n            <summary>\n            Gets or sets the name of this appender.\n            </summary>\n            <value>The name of the appender.</value>\n            <remarks>\n            <para>\n            The name uniquely identifies the appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\">\r\n            <summary>\r\n            Tests if this appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            In the rather exceptional case, where the appender \r\n            implementation admits a layout but can also work without it, \r\n            then the appender should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This default implementation always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the appender requires a layout object, otherwise <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\">\r\n            <summary>\n            The default buffer size.\n            </summary>\n            <remarks>\n            The default size of the cyclic buffer used to store events.\n            This is set to 512 by default.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Protected default constructor to allow subclassing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <param name=\"eventMustBeFixed\">the events passed through this appender must be\r\n            fixed by the time that they arrive in the derived class' <c>SendBuffer</c> method.</param>\r\n            <remarks>\r\n            <para>\r\n            Protected constructor to allow subclassing.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"eventMustBeFixed\"/> should be set if the subclass\r\n            expects the events delivered to be fixed even if the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to zero, i.e. when no buffering occurs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flushes any events that have been buffered.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will NOT be flushed to the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush(System.Boolean)\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <param name=\"flushLossyBuffer\">set to <c>true</c> to flush the buffer of lossy events</param>\r\n            <remarks>\r\n            <para>\r\n            Flushes events that have been buffered. If <paramref name=\"flushLossyBuffer\"/> is\r\n            <c>false</c> then events will only be flushed if this buffer is non-lossy mode.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will only be flushed if <paramref name=\"flushLossyBuffer\"/> is <c>true</c>.\r\n            In this case the contents of the buffer will be tested against the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\"/> and if triggering will be output. All other buffered\r\n            events will be discarded.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"flushLossyBuffer\"/> is <c>true</c> then the buffer will always\r\n            be emptied by calling this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.OnClose\">\r\n            <summary>\r\n            Close this appender instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close this appender instance. If this appender is marked\r\n            as not <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> then the remaining events in \r\n            the buffer must be sent when the appender is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Stores the <paramref name=\"loggingEvent\"/> in the cyclic buffer.\r\n            </para>\r\n            <para>\r\n            The buffer will be sent (i.e. passed to the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/> \r\n            method) if one of the following conditions is met:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>The cyclic buffer is full and this appender is\r\n            \t\tmarked as not lossy (see <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>)</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>An <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> is set and\r\n            \t\tit is triggered for the <paramref name=\"loggingEvent\"/>\r\n            \t\tspecified.</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Before the event is stored in the buffer it is fixed\r\n            (see <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/>) to ensure that\r\n            any data referenced by the event will be valid when the buffer\r\n            is processed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendFromBuffer(log4net.Core.LoggingEvent,log4net.Util.CyclicBuffer)\">\r\n            <summary>\r\n            Sends the contents of the buffer.\r\n            </summary>\r\n            <param name=\"firstLoggingEvent\">The first logging event.</param>\r\n            <param name=\"buffer\">The buffer containing the events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            The subclass must override <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Sends the events.\n            </summary>\n            <param name=\"events\">The events that need to be send.</param>\n            <remarks>\n            <para>\n            The subclass must override this method to process the buffered events.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_bufferSize\">\r\n            <summary>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </summary>\r\n            <remarks>\r\n            Set to <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\"/> by default.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_cb\">\r\n            <summary>\n            The cyclic buffer used to store the logging events.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_evaluator\">\r\n            <summary>\r\n            The triggering event evaluator that causes the buffer to be sent immediately.\r\n            </summary>\r\n            <remarks>\r\n            The object that is used to determine if an event causes the entire\r\n            buffer to be sent immediately. This field can be <c>null</c>, which \r\n            indicates that event triggering is not to be done. The evaluator\r\n            can be set using the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> property. If this appender\r\n            has the <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\"/> (<see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property) set to \r\n            <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\">\r\n            <summary>\r\n            Indicates if the appender should overwrite events in the cyclic buffer \r\n            when it becomes full, or if the buffer should be flushed when the \r\n            buffer is full.\r\n            </summary>\r\n            <remarks>\r\n            If this field is set to <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must \r\n            be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossyEvaluator\">\r\n            <summary>\n            The triggering event evaluator filters discarded events.\n            </summary>\n            <remarks>\n            The object that is used to determine if an event that is discarded should\n            really be discarded or if it should be sent to the appenders. \n            This field can be <c>null</c>, which indicates that all discarded events will\n            be discarded. \n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_fixFlags\">\r\n            <summary>\n            Value indicating which fields in the event should be fixed\n            </summary>\n            <remarks>\n            By default all fields are fixed\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_eventMustBeFixed\">\r\n            <summary>\n            The events delivered to the subclass must be fixed.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender is lossy.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender is lossy, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This appender uses a buffer to store logging events before \r\n            delivering them. A triggering event causes the whole buffer\r\n            to be send to the remote sink. If the buffer overruns before\r\n            a triggering event then logging events could be lost. Set\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> to <c>false</c> to prevent logging events \r\n            from being lost.\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\">\r\n            <summary>\r\n            Gets or sets the size of the cyclic buffer used to hold the \r\n            logging events.\r\n            </summary>\r\n            <value>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option takes a positive integer\r\n            representing the maximum number of logging events to collect in \r\n            a cyclic buffer. When the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is reached,\r\n            oldest events are deleted as new events are added to the\r\n            buffer. By default the size of the cyclic buffer is 512 events.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to a value less than\r\n            or equal to 1 then no buffering will occur. The logging event\r\n            will be delivered synchronously (depending on the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>\r\n            and <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> properties). Otherwise the event will\r\n            be buffered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the \r\n            buffer to be sent immediately.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the buffer to be\r\n            sent immediately.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is appended to this \r\n            appender. If the evaluator triggers then the current buffer will \r\n            immediately be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\">\r\n            <summary>\r\n            Gets or sets the value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </summary>\r\n            <value>\r\n            The value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is discarded from this \r\n            appender. If the evaluator triggers then the current buffer will immediately \r\n            be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating if only part of the logging event data\r\n            should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the\r\n            event data to be fixed and serialized. This will improve performance.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Fix\">\r\n            <summary>\r\n            Gets or sets a the fields that will be fixed in the event\r\n            </summary>\r\n            <value>\r\n            The event fields that will be fixed before the event is buffered\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.#ctor\">\r\n            <summary> \r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Public default constructor to initialize a new instance of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.OnClose\">\r\n            <summary>\n            Override the parent method to close the database\n            </summary>\n            <remarks>\n            <para>\n            Closes the database command and database connection.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Inserts the events into the database.\n            </summary>\n            <param name=\"events\">The events to insert into the database.</param>\n            <remarks>\n            <para>\n            Insert all the events specified in the <paramref name=\"events\"/>\n            array into the database.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\">\r\n            <summary>\n            Adds a parameter to the command.\n            </summary>\n            <param name=\"parameter\">The parameter to add to the command.</param>\n            <remarks>\n            <para>\n            Adds a parameter to the ordered list of command parameters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(System.Data.IDbTransaction,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Writes the events to the database using the transaction specified.\r\n            </summary>\r\n            <param name=\"dbTran\">The transaction that the events will be executed under.</param>\r\n            <param name=\"events\">The array of events to insert into the database.</param>\r\n            <remarks>\r\n            <para>\r\n            The transaction argument can be <c>null</c> if the appender has been\r\n            configured not to use transactions. See <see cref=\"P:log4net.Appender.AdoNetAppender.UseTransactions\"/>\r\n            property for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.GetLogStatement(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Formats the log message into database statement text.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            This method can be overridden by subclasses to provide \r\n            more control over the format of the database statement.\r\n            </remarks>\r\n            <returns>\r\n            Text that can be passed to a <see cref=\"T:System.Data.IDbCommand\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.CreateConnection(System.Type,System.String)\">\r\n            <summary>\r\n            Creates an <see cref=\"T:System.Data.IDbConnection\"/> instance used to connect to the database.\r\n            </summary>\r\n            <remarks>\r\n            This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary).\r\n            </remarks>\r\n            <param name=\"connectionType\">The <see cref=\"T:System.Type\"/> of the <see cref=\"T:System.Data.IDbConnection\"/> object.</param>\r\n            <param name=\"connectionString\">The connectionString output from the ResolveConnectionString method.</param>\r\n            <returns>An <see cref=\"T:System.Data.IDbConnection\"/> instance with a valid connection string.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionString(System.String@)\">\r\n            <summary>\n            Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey\n            property.\n            </summary>\n            <remarks>\n            ConnectiongStringName is only supported on .NET 2.0 and higher.\n            </remarks>\n            <param name=\"connectionStringContext\">Additional information describing the connection string.</param>\n            <returns>A connection string used to connect to the database.</returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionType\">\r\n            <summary>\r\n            Retrieves the class type of the ADO.NET provider.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the Type of the ADO.NET provider to use to connect to the\r\n            database. This method resolves the type specified in the \r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> property.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to return a different type\r\n            if necessary.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:System.Type\"/> of the ADO.NET provider</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseCommand\">\r\n            <summary>\n            Prepares the database command and initialize the parameters.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseConnection\">\r\n            <summary>\n            Connects to the database.\n            </summary>\t\t\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DisposeCommand(System.Boolean)\">\r\n            <summary>\n            Cleanup the existing command.\n            </summary>\n            <param name=\"ignoreException\">\n            If true, a message will be written using LogLog.Warn if an exception is encountered when calling Dispose.\n            </param>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DiposeConnection\">\r\n            <summary>\r\n            Cleanup the existing connection.\r\n            </summary>\r\n            <remarks>\r\n            Calls the IDbConnection's <see cref=\"M:System.Data.IDbConnection.Close\"/> method.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_usePreparedCommand\">\r\n            <summary>\n            Flag to indicate if we are using a command object\n            </summary>\n            <remarks>\n            <para>\n            Set to <c>true</c> when the appender is to use a prepared\n            statement or stored procedure to insert into the database.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_parameters\">\r\n            <summary>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbConnection\">\r\n            <summary>\r\n            The <see cref=\"T:System.Data.IDbConnection\"/> that will be used\r\n            to insert logging events into a database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbCommand\">\r\n            <summary>\n            The database command.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionString\">\r\n            <summary>\n            Database connection string.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_appSettingsKey\">\r\n            <summary>\n            The appSettings key from App.Config that contains the connection string.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionType\">\r\n            <summary>\r\n            String type name of the <see cref=\"T:System.Data.IDbConnection\"/> type name.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandText\">\r\n            <summary>\n            The text of the command.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandType\">\r\n            <summary>\n            The command type.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_useTransactions\">\r\n            <summary>\n            Indicates whether to use transactions when writing to the database.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_reconnectOnError\">\r\n            <summary>\n            Indicates whether to use transactions when writing to the database.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the AdoNetAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionString\">\r\n            <summary>\r\n            Gets or sets the database connection string that is used to connect to \r\n            the database.\r\n            </summary>\r\n            <value>\r\n            The database connection string used to connect to the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The connections string is specific to the connection type.\r\n            See <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>Connection string for MS Access via ODBC:\r\n            <code>\"DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\\data\\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\\data\\train33.mdb\"</code>\r\n            </example>\r\n            <example>Another connection string for MS Access via ODBC:\r\n            <code>\"Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;UID=;PWD=;\"</code>\r\n            </example>\r\n            <example>Connection string for MS Access via OLE DB:\r\n            <code>\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;User Id=;Password=;\"</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.AppSettingsKey\">\r\n            <summary>\n            The appSettings key from App.Config that contains the connection string.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionType\">\r\n            <summary>\r\n            Gets or sets the type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection\r\n            that should be created.\r\n            </summary>\r\n            <value>\r\n            The type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name of the ADO.NET provider to use.\r\n            </para>\r\n            <para>\r\n            The default is to use the OLE DB provider.\r\n            </para>\r\n            </remarks>\r\n            <example>Use the OLE DB Provider. This is the default value.\r\n            <code>System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the MS SQL Server Provider. \r\n            <code>System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the ODBC Provider. \r\n            <code>Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>ODBC .NET Data Provider</b>.\r\n            </example>\r\n            <example>Use the Oracle Provider. \r\n            <code>System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>.NET Managed Provider for Oracle</b>.\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandText\">\r\n            <summary>\r\n            Gets or sets the command text that is used to insert logging events\r\n            into the database.\r\n            </summary>\r\n            <value>\r\n            The command text used to insert logging events into the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Either the text of the prepared statement or the\r\n            name of the stored procedure to execute to write into\r\n            the database.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property determines if\r\n            this text is a prepared statement or a stored procedure.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandType\">\r\n            <summary>\r\n            Gets or sets the command type to execute.\r\n            </summary>\r\n            <value>\r\n            The command type to execute.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This value may be either <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify\r\n            that the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> is a prepared statement to execute, \r\n            or <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify that the\r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property is the name of a stored procedure\r\n            to execute.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.UseTransactions\">\r\n            <summary>\n            Should transactions be used to insert logging events in the database.\n            </summary>\n            <value>\n            <c>true</c> if transactions should be used to insert logging events in\n            the database, otherwise <c>false</c>. The default value is <c>true</c>.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets a value that indicates whether transactions should be used\n            to insert logging events in the database.\n            </para>\n            <para>\n            When set a single transaction will be used to insert the buffered events\n            into the database. Otherwise each event will be inserted without using\n            an explicit transaction.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ReconnectOnError\">\r\n            <summary>\n            Should this appender try to reconnect to the database on error.\n            </summary>\n            <value>\n            <c>true</c> if the appender should try to reconnect to the database after an\n            error has occurred, otherwise <c>false</c>. The default value is <c>false</c>, \n            i.e. not to try to reconnect.\n            </value>\n            <remarks>\n            <para>\n            The default behaviour is for the appender not to try to reconnect to the\n            database if an error occurs. Subsequent logging events are discarded.\n            </para>\n            <para>\n            To force the appender to attempt to reconnect to the database set this\n            property to <c>true</c>.\n            </para>\n            <note>\n            When the appender attempts to connect to the database there may be a\n            delay of up to the connection timeout specified in the connection string.\n            This delay will block the calling application's thread. \n            Until the connection can be reestablished this potential delay may occur multiple times.\n            </note>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.Connection\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> creates a <see cref=\"T:System.Data.IDbConnection\"/> to insert \r\n            logging events into a database.  Classes deriving from <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            can use this property to get or set this <see cref=\"T:System.Data.IDbConnection\"/>.  Use the \r\n            underlying <see cref=\"T:System.Data.IDbConnection\"/> returned from <see cref=\"P:log4net.Appender.AdoNetAppender.Connection\"/> if \r\n            you require access beyond that which <see cref=\"T:log4net.Appender.AdoNetAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AdoNetAppenderParameter\">\r\n            <summary>\r\n            Parameter type used by the <see cref=\"T:log4net.Appender.AdoNetAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the basic database parameter properties\r\n            as defined by the <see cref=\"T:System.Data.IDbDataParameter\"/> interface.\r\n            </para>\r\n            <para>This type can be subclassed to provide database specific\r\n            functionality. The two methods that are called externally are\r\n            <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\"/> and <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Default constructor for the AdoNetAppenderParameter class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\">\r\n            <summary>\n            Prepare the specified database command object.\n            </summary>\n            <param name=\"command\">The command to prepare.</param>\n            <remarks>\n            <para>\n            Prepares the database command object by adding\n            this parameter to its collection of parameters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Renders the logging event and set the parameter value in the command.\n            </summary>\n            <param name=\"command\">The command containing the parameter.</param>\n            <param name=\"loggingEvent\">The event to be rendered.</param>\n            <remarks>\n            <para>\n            Renders the logging event using this parameters layout\n            object. Sets the value of the parameter on the command object.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_parameterName\">\r\n            <summary>\n            The name of this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_dbType\">\r\n            <summary>\n            The database type for this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_inferType\">\r\n            <summary>\n            Flag to infer type rather than use the DbType\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_precision\">\r\n            <summary>\n            The precision for this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_scale\">\r\n            <summary>\n            The scale for this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_size\">\r\n            <summary>\n            The size for this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_layout\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to render the\r\n            logging event into an object for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.ParameterName\">\r\n            <summary>\n            Gets or sets the name of this parameter.\n            </summary>\n            <value>\n            The name of this parameter.\n            </value>\n            <remarks>\n            <para>\n            The name of this parameter. The parameter name\n            must match up to a named parameter to the SQL stored procedure\n            or prepared statement.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\">\r\n            <summary>\r\n            Gets or sets the database type for this parameter.\r\n            </summary>\r\n            <value>\r\n            The database type for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The database type for this parameter. This property should\r\n            be set to the database type from the <see cref=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\"/>\r\n            enumeration. See <see cref=\"P:System.Data.IDataParameter.DbType\"/>.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the type from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDataParameter.DbType\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Precision\">\r\n            <summary>\r\n            Gets or sets the precision for this parameter.\r\n            </summary>\r\n            <value>\r\n            The precision for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum number of digits used to represent the Value.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the precision from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Precision\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Scale\">\r\n            <summary>\r\n            Gets or sets the scale for this parameter.\r\n            </summary>\r\n            <value>\r\n            The scale for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The number of decimal places to which Value is resolved.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the scale from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Scale\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Size\">\r\n            <summary>\r\n            Gets or sets the size for this parameter.\r\n            </summary>\r\n            <value>\r\n            The size for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum size, in bytes, of the data within the column.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the size from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Size\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to \r\n            render the logging event into an object for this \r\n            parameter.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> used to render the\r\n            logging event into an object for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> that renders the value for this\r\n            parameter.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.RawLayoutConverter\"/> can be used to adapt\r\n            any <see cref=\"T:log4net.Layout.ILayout\"/> into a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            for use in the property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender\">\r\n            <summary>\r\n            Appends logging events to the terminal using ANSI color escape sequences.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            AnsiColorTerminalAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific level of message to be set.\r\n            </para>\r\n            <note>\r\n            This appender expects the terminal to understand the VT100 control set \r\n            in order to interpret the color codes. If the terminal or console does not\r\n            understand the control codes the behavior is not defined.\r\n            </note>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            <para>\r\n            When configuring the ANSI colored terminal appender, a mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red\"/>\r\n                <attributes value=\"Bright,Underscore\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            </list>\r\n            These color values cannot be combined together to make new colors.\r\n            </para>\r\n            <para>\r\n            The attributes can be any combination of the following:\r\n            <list type=\"bullet\">\r\n            <item><term>Bright</term><description>foreground is brighter</description></item>\r\n            <item><term>Dim</term><description>foreground is dimmer</description></item>\r\n            <item><term>Underscore</term><description>message is underlined</description></item>\r\n            <item><term>Blink</term><description>foreground is blinking (does not work on all terminals)</description></item>\r\n            <item><term>Reverse</term><description>foreground and background are reversed</description></item>\r\n            <item><term>Hidden</term><description>output is hidden</description></item>\r\n            <item><term>Strikethrough</term><description>message has a line through it</description></item>\r\n            </list>\r\n            While any of these attributes may be combined together not all combinations\r\n            work well together, for example setting both <i>Bright</i> and <i>Dim</i> attributes makes\r\n            no sense.\r\n            </para>\r\n            </remarks>\r\n            <author>Patrick Wagstrom</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.PostEventCodes\">\r\n            <summary>\n            Ansi code to reset terminal\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.AddMapping(log4net.Appender.AnsiColorTerminalAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colours\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.ActivateOptions\">\r\n            <summary>\n            Initialize the options for this appender\n            </summary>\n            <remarks>\n            <para>\n            Initialize the level to color mappings set on this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_writeToErrorStream\">\r\n            <summary>\n            Flag to write output to the error stream rather than the standard output stream\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to color value\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\">\r\n            <summary>\n            Target is the value of the console output stream.\n            </summary>\n            <value>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </value>\n            <remarks>\n            <para>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes\">\r\n            <summary>\r\n            The enum of possible display attributes\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the ANSI color attributes.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Bright\">\r\n            <summary>\n            text is bright\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Dim\">\r\n            <summary>\n            text is dim\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Underscore\">\r\n            <summary>\n            text is underlined\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Blink\">\r\n            <summary>\n            text is blinking\n            </summary>\n            <remarks>\n            Not all terminals support this attribute\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Reverse\">\r\n            <summary>\n            text and background colors are reversed\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Hidden\">\r\n            <summary>\n            text is hidden\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Strikethrough\">\r\n            <summary>\n            text is displayed with a strikethrough\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiColor\">\r\n            <summary>\r\n            The enum of possible foreground or background color values for \r\n            use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The output can be in one for the following ANSI colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Black\">\r\n            <summary>\n            color is black\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Red\">\r\n            <summary>\n            color is red\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Green\">\r\n            <summary>\n            color is green\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Yellow\">\r\n            <summary>\n            color is yellow\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Blue\">\r\n            <summary>\n            color is blue\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Magenta\">\r\n            <summary>\n            color is magenta\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Cyan\">\r\n            <summary>\n            color is cyan\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.White\">\r\n            <summary>\n            color is white\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the color it should be displayed as.\n            </summary>\n            <remarks>\n            <para>\n            Defines the mapping between a level and the color it should be displayed in.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMappingEntry\">\r\n            <summary>\r\n            An entry in the <see cref=\"T:log4net.Util.LevelMapping\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract base class for types that are stored in the\r\n            <see cref=\"T:log4net.Util.LevelMapping\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.#ctor\">\r\n            <summary>\n            Default protected constructor\n            </summary>\n            <remarks>\n            <para>\n            Default protected constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.ActivateOptions\">\r\n            <summary>\n            Initialize any options defined on this entry\n            </summary>\n            <remarks>\n            <para>\n            Should be overridden by any classes that need to initialise based on their options\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LevelMappingEntry.Level\">\r\n            <summary>\r\n            The level that is the key for this mapping \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this mapping \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set the <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this\r\n            mapping subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> together\r\n            and append the attributes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\">\r\n            <summary>\n            The mapped foreground color for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped foreground color for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\">\r\n            <summary>\n            The mapped background color for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped background color for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\">\r\n            <summary>\n            The color attributes for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The color attributes for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/>, <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> and\r\n            <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\"/> suitable for setting the ansi terminal color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Appender.IAppender\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ReadOnly(log4net.Appender.AppenderCollection)\">\r\n            <summary>\n            Creates a read-only wrapper for a <c>AppenderCollection</c> instance.\n            </summary>\n            <param name=\"list\">list to create a readonly wrapper arround</param>\n            <returns>\n            An <c>AppenderCollection</c> wrapper that is read-only.\n            </returns>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.EmptyCollection\">\r\n            <summary>\n            An empty readonly static AppenderCollection\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor\">\r\n            <summary>\n            Initializes a new instance of the <c>AppenderCollection</c> class\n            that is empty and has the default initial capacity.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Int32)\">\r\n            <summary>\n            Initializes a new instance of the <c>AppenderCollection</c> class\n            that has the specified initial capacity.\n            </summary>\n            <param name=\"capacity\">\n            The number of elements that the new <c>AppenderCollection</c> is initially capable of storing.\n            </param>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>AppenderCollection</c> class\n            that contains elements copied from the specified <c>AppenderCollection</c>.\n            </summary>\n            <param name=\"c\">The <c>AppenderCollection</c> whose elements are copied to the new collection.</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection.Tag)\">\r\n            <summary>\n            Allow subclasses to avoid our default constructors\n            </summary>\n            <param name=\"tag\"></param>\n            <exclude/>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Add(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Appender.IAppender\"/> to the end of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clear\">\r\n            <summary>\n            Removes all elements from the <c>AppenderCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Appender.AppenderCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Contains(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Appender.IAppender\"/> is in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>AppenderCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IndexOf(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Appender.IAppender\"/>\r\n            in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to locate in the <c>AppenderCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>AppenderCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Insert(System.Int32,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Inserts an element into the <c>AppenderCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Remove(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Appender.IAppender\"/> from the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to remove from the <c>AppenderCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Appender.IAppender\"/> was not found in the <c>AppenderCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Appender.AppenderCollection.Enumerator\"/> for the entire <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>AppenderCollection</c> to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>AppenderCollection</c> whose elements should be added to the end of the current <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> array to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> collection to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.TrimToSize\">\r\n            <summary>\n            Sets the capacity to the actual number of elements.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ToArray\">\r\n            <summary>\n            Return the collection elements as an array\n            </summary>\n            <returns>the array</returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Count\">\r\n            <summary>\n            Gets the number of elements actually contained in the <c>AppenderCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsSynchronized\">\r\n            <summary>\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\n            </summary>\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.SyncRoot\">\r\n            <summary>\n            Gets an object that can be used to synchronize access to the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.IAppender\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            \t<para><paramref name=\"index\"/> is less than zero</para>\r\n            \t<para>-or-</para>\r\n            \t<para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsFixedSize\">\r\n            <summary>\n            Gets a value indicating whether the collection has a fixed size.\n            </summary>\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsReadOnly\">\r\n            <summary>\n            Gets a value indicating whether the IList is read-only.\n            </summary>\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Capacity\">\r\n            <summary>\n            Gets or sets the number of elements the <c>AppenderCollection</c> can contain.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Tag\">\r\n            <summary>\n            Type visible only to our subclasses\n            Used to access protected constructor\n            </summary>\n            <exclude/>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.Tag.Default\">\r\n            <summary>\n            A value\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>Enumerator</c> class.\n            </summary>\n            <param name=\"tc\"></param>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Enumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.ReadOnlyAppenderCollection\">\r\n            <exclude/>\n        </member>\r\n        <member name=\"T:log4net.Appender.AspNetTraceAppender\">\r\n            <summary>\r\n            <para>\r\n            Appends log events to the ASP.NET <see cref=\"T:System.Web.TraceContext\"/> system.\r\n            </para>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Diagnostic information and tracing messages that you specify are appended to the output \r\n            of the page that is sent to the requesting browser. Optionally, you can view this information\r\n            from a separate trace viewer (Trace.axd) that displays trace information for every page in a \r\n            given application.\r\n            </para>\r\n            <para>\r\n            Trace statements are processed and displayed only when tracing is enabled. You can control \r\n            whether tracing is displayed to a page, to the trace viewer, or both.\r\n            </para>\r\n            <para>\r\n            The logging event is passed to the <see cref=\"M:System.Web.TraceContext.Write(System.String)\"/> or \r\n            <see cref=\"M:System.Web.TraceContext.Warn(System.String)\"/> method depending on the level of the logging event.\r\n            The event's logger name is the default value for the category parameter of the Write/Warn method. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AspNetTraceAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the logging event to the ASP.NET trace\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Write the logging event to the ASP.NET trace\r\n            <c>HttpContext.Current.Trace</c> \r\n            (<see cref=\"T:System.Web.TraceContext\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AspNetTraceAppender.m_category\">\r\n            <summary>\n            Defaults to %logger\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingForwardingAppender\">\r\n            <summary>\r\n            Buffers events and then forwards them to attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The events are buffered in this appender until conditions are\r\n            met to allow the appender to deliver the events to the attached \r\n            appenders. See <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> for the\r\n            conditions that cause the buffer to be sent.\r\n            </para>\r\n            <para>The forwarding appender can be used to specify different \r\n            thresholds and filters for the same appender at different locations \r\n            within the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IAppenderAttachable\">\r\n            <summary>\n            Interface for attaching appenders to objects.\n            </summary>\n            <remarks>\n            <para>\n            Interface for attaching, removing and retrieving appenders.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\n            Attaches an appender.\n            </summary>\n            <param name=\"appender\">The appender to add.</param>\n            <remarks>\n            <para>\n            Add the specified appender. The implementation may\n            choose to allow or deny duplicate appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.GetAppender(System.String)\">\r\n            <summary>\n            Gets an attached appender with the specified name.\n            </summary>\n            <param name=\"name\">The name of the appender to get.</param>\n            <returns>\n            The appender with the name specified, or <c>null</c> if no appender with the\n            specified name is found.\n            </returns>\n            <remarks>\n            <para>\n            Returns an attached appender with the <paramref name=\"name\"/> specified.\n            If no appender with the specified name is found <c>null</c> will be\n            returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAllAppenders\">\r\n            <summary>\n            Removes all attached appenders.\n            </summary>\n            <remarks>\n            <para>\n            Removes and closes all attached appenders\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.IAppenderAttachable.Appenders\">\r\n            <summary>\n            Gets all attached appenders.\n            </summary>\n            <value>\n            A collection of attached appenders.\n            </value>\n            <remarks>\n            <para>\n            Gets a collection of attached appenders.\n            If there are no attached appenders the\n            implementation should return an empty \n            collection rather than <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.OnClose\">\r\n            <summary>\n            Closes the appender and releases resources.\n            </summary>\n            <remarks>\n            <para>\n            Releases any resources allocated within the appender such as file handles, \n            network connections, etc.\n            </para>\n            <para>\n            It is a programming error to append to a closed appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Send the events.\n            </summary>\n            <param name=\"events\">The events that need to be send.</param>\n            <remarks>\n            <para>\n            Forwards the events to the attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\n            Looks for the appender with the specified name.\n            </summary>\n            <param name=\"name\">The name of the appender to lookup.</param>\n            <returns>\n            The appender with the specified name, or <c>null</c>.\n            </returns>\n            <remarks>\n            <para>\n            Get the named appender attached to this buffering appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\n            Removes all previously added appenders from this appender.\n            </summary>\n            <remarks>\n            <para>\n            This is useful when re-reading configuration information.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ColoredConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific type of message to be set.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes directly to the application's attached console\r\n            not to the <c>System.Console.Out</c> or <c>System.Console.Error</c> <c>TextWriter</c>.\r\n            The <c>System.Console.Out</c> and <c>System.Console.Error</c> streams can be\r\n            programmatically redirected (for example NUnit does this to capture program output).\r\n            This appender will ignore these redirections because it needs to use Win32\r\n            API calls to colorize the output. To respect these redirections the <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            must be used.\r\n            </para>\r\n            <para>\r\n            When configuring the colored console appender, mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red, HighIntensity\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            combination of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            <item><term>HighIntensity</term><description></description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Rick Hobbs</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.AddMapping(log4net.Appender.ColoredConsoleAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colors\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.ActivateOptions\">\r\n            <summary>\n            Initialize the options for this appender\n            </summary>\n            <remarks>\n            <para>\n            Initialize the level to color mappings set on this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_writeToErrorStream\">\r\n            <summary>\n            Flag to write output to the error stream rather than the standard output stream\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to color value\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_consoleOutputWriter\">\r\n            <summary>\n            The console output stream writer to write to\n            </summary>\n            <remarks>\n            <para>\n            This writer is not thread safe.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.Target\">\r\n            <summary>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </summary>\n            <value>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </value>\n            <remarks>\n            <para>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.Colors\">\r\n            <summary>\r\n            The enum of possible color values for use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.ColoredConsoleAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Blue\">\r\n            <summary>\n            color is blue\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Green\">\r\n            <summary>\n            color is green\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Red\">\r\n            <summary>\n            color is red\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.White\">\r\n            <summary>\n            color is white\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Yellow\">\r\n            <summary>\n            color is yellow\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Purple\">\r\n            <summary>\n            color is purple\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Cyan\">\r\n            <summary>\n            color is cyan\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity\">\r\n            <summary>\n            color is intensified\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the color it should be displayed as.\n            </summary>\n            <remarks>\n            <para>\n            Defines the mapping between a level and the color it should be displayed in.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> together.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\">\r\n            <summary>\n            The mapped foreground color for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped foreground color for the specified level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\">\r\n            <summary>\n            The mapped background color for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped background color for the specified level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> suitable for \r\n            setting the console color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.Target\">\r\n            <summary>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </summary>\n            <value>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </value>\n            <remarks>\n            <para>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.DebugAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Debug\"/> class for details on configuring the\r\n            debug system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <see cref=\"M:System.Diagnostics.Debug.Write(System.String,System.String)\"/>\r\n            method. The event's logger name is passed as the value for the category name to the Write method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is <c>true</c> then the <see cref=\"M:System.Diagnostics.Debug.Flush\"/>\r\n            is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.DebugAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.ImmediateFlush\">\r\n            <summary>\n            Gets or sets a value that indicates whether the appender will \n            flush at the end of each write.\n            </summary>\n            <remarks>\n            <para>The default behavior is to flush at the end of each \n            write. If the option is set to<c>false</c>, then the underlying \n            stream can defer writing to physical medium to a later time. \n            </para>\n            <para>\n            Avoiding the flush operation at the end of each append results \n            in a performance gain of 10 to 20 percent. However, there is safety\n            trade-off involved in skipping flushing. Indeed, when flushing is\n            skipped, then it is likely that the last few log events will not\n            be recorded on disk when the application exits. This is a high\n            price to pay even for a 20% performance gain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender\">\r\n            <summary>\r\n            Writes events to the system event log.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges.\r\n            See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog\r\n            </para>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry can be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            The <c>Category</c> of the event log entry can be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            <para>\r\n            When configuring the EventLogAppender a mapping can be\r\n            specified to map a logging level to an event log entry type. For example:\r\n            </para>\r\n            <code lang=\"XML\">\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"ERROR\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Error\" /&gt;\r\n            &lt;/mapping&gt;\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"DEBUG\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Information\" /&gt;\r\n            &lt;/mapping&gt;\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and eventLogEntryType can be any value\r\n            from the <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> enum, i.e.:\r\n            <list type=\"bullet\">\r\n            <item><term>Error</term><description>an error event</description></item>\r\n            <item><term>Warning</term><description>a warning event</description></item>\r\n            <item><term>Information</term><description>an informational event</description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Thomas Voss</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class\r\n            with the specified <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The <see cref=\"T:log4net.Layout.ILayout\"/> to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.AddMapping(log4net.Appender.EventLogAppender.Level2EventLogEntryType)\">\r\n            <summary>\r\n            Add a mapping of level to <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\"/> mapping to this appender.\r\n            Each mapping defines the event log entry type for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.CreateEventSource(System.String,System.String,System.String)\">\r\n            <summary>\n            Create an event log source\n            </summary>\n            <remarks>\n            Uses different API calls under NET_2_0\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Writes the event to the system event log using the \r\n            <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>.</para>\r\n            \r\n            <para>If the event has an <c>EventID</c> property (see <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            set then this integer will be used as the event log event id.</para>\r\n            \r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.GetEntryType(log4net.Core.Level)\">\r\n            <summary>\r\n            Get the equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/>\r\n            </summary>\r\n            <param name=\"level\">the Level to convert to an EventLogEntryType</param>\r\n            <returns>The equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/></returns>\r\n            <remarks>\r\n            Because there are fewer applicable <see cref=\"T:System.Diagnostics.EventLogEntryType\"/>\r\n            values to use in logging levels than there are in the \r\n            <see cref=\"T:log4net.Core.Level\"/> this is a one way mapping. There is\r\n            a loss of information during the conversion.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_logName\">\r\n            <summary>\n            The log name is the section in the event logs where the messages\n            are stored.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_applicationName\">\r\n            <summary>\r\n            Name of the application to use when logging.  This appears in the\r\n            application column of the event log named by <see cref=\"F:log4net.Appender.EventLogAppender.m_logName\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_machineName\">\r\n            <summary>\n            The name of the machine which holds the event log. This is\n            currently only allowed to be '.' i.e. the current machine.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to EventLogEntryType\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_eventId\">\r\n            <summary>\n            The event ID to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_category\">\r\n            <summary>\n            The event category to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the EventLogAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.LogName\">\r\n            <summary>\r\n            The name of the log where messages will be stored.\r\n            </summary>\r\n            <value>\r\n            The string name of the log where messages will be stored.\r\n            </value>\r\n            <remarks>\r\n            <para>This is the name of the log as it appears in the Event Viewer\r\n            tree. The default value is to log into the <c>Application</c>\r\n            log, this is where most applications write their events. However\r\n            if you need a separate log for your application (or applications)\r\n            then you should set the <see cref=\"P:log4net.Appender.EventLogAppender.LogName\"/> appropriately.</para>\r\n            <para>This should not be used to distinguish your event log messages\r\n            from those of other applications, the <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>\r\n            property should be used to distinguish events. This property should be \r\n            used to group together events into a single log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.ApplicationName\">\r\n            <summary>\n            Property used to set the Application name.  This appears in the\n            event logs when logging.\n            </summary>\n            <value>\n            The string used to distinguish events from different sources.\n            </value>\n            <remarks>\n            Sets the event log source property.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.MachineName\">\r\n            <summary>\n            This property is used to return the name of the computer to use\n            when accessing the event logs.  Currently, this is the current\n            computer, denoted by a dot \".\"\n            </summary>\n            <value>\n            The string name of the machine holding the event log that \n            will be logged into.\n            </value>\n            <remarks>\n            This property cannot be changed. It is currently set to '.'\n            i.e. the local machine. This may be changed in future.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The system security context used to write to the EventLog.\r\n            </para>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.EventId\">\r\n            <summary>\r\n            Gets or sets the <c>EventId</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry will normally be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Category\">\r\n            <summary>\r\n            Gets or sets the <c>Category</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>Category</c> of the event log entry will normally be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the color it should be displayed as.\n            </summary>\n            <remarks>\n            <para>\n            Defines the mapping between a level and its event log entry type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender\">\r\n            <summary>\r\n            Appends logging events to a file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Logging events are sent to the file specified by\r\n            the <see cref=\"P:log4net.Appender.FileAppender.File\"/> property.\r\n            </para>\r\n            <para>\r\n            The file can be opened in either append or overwrite mode \r\n            by specifying the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property.\r\n            If the file path is relative it is taken as relative from \r\n            the application base directory. The file encoding can be\r\n            specified by setting the <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> property.\r\n            </para>\r\n            <para>\r\n            The layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            values will be written each time the file is opened and closed\r\n            respectively. If the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is <see langword=\"true\"/>\r\n            then the file may contain multiple copies of the header and footer.\r\n            </para>\r\n            <para>\r\n            This appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> supports pluggable file locking models via\r\n            the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> property.\r\n            The default behavior, implemented by <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> \r\n            is to obtain an exclusive write lock on the file until this appender is closed.\r\n            The alternative models only hold a\r\n            write lock while the appender is writing a logging event (<see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/>)\r\n            or synchronize by using a named system wide Mutex (<see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/>).\r\n            </para>\r\n            <para>\r\n            All locking strategies have issues and you should seriously consider using a different strategy that\r\n            avoids having multiple processes logging to the same file.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Rodrigo B. de Oliveira</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Niall Daley</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TextWriterAppender\">\r\n            <summary>\r\n            Sends logging events to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An Appender that writes to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This appender may be used stand alone if initialized with an appropriate\r\n            writer, however it is typically used as a base class for an appender that\r\n            can open a <see cref=\"T:System.IO.TextWriter\"/> to write to.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.Stream)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and\r\n            sets the output destination to a new <see cref=\"T:System.IO.StreamWriter\"/> initialized \r\n            with the specified <see cref=\"T:System.IO.Stream\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <param name=\"os\">The <see cref=\"T:System.IO.Stream\"/> to output to.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.TextWriter)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and sets\r\n            the output destination to the specified <see cref=\"T:System.IO.StreamWriter\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender</param>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to output to</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> must have been previously opened.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PreAppendCheck\">\r\n            <summary>\n            This method determines if there is a sense in attempting to append.\n            </summary>\n            <remarks>\n            <para>\n            This method checks if an output target has been set and if a\n            layout has been set. \n            </para>\n            </remarks>\n            <returns><c>false</c> if any of the preconditions fail.</returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method writes all the bulk logged events to the output writer\r\n            before flushing the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.OnClose\">\r\n            <summary>\n            Close this appender instance. The underlying stream or writer is also closed.\n            </summary>\n            <remarks>\n            Closed appenders cannot be reused.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooterAndCloseWriter\">\r\n            <summary>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Reset\">\r\n            <summary>\r\n            Clears internal references to the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            and other variables.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Subclasses can override this method for an alternate closing behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PrepareWriter\">\r\n            <summary>\r\n            Called to allow a subclass to lazily initialize the writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called when an event is logged and the <see cref=\"P:log4net.Appender.TextWriterAppender.Writer\"/> or\r\n            <see cref=\"P:log4net.Appender.TextWriterAppender.QuietWriter\"/> have not been set. This allows a subclass to\r\n            attempt to initialize the writer multiple times.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_qtw\">\r\n            <summary>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            or output stream will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logging events are not actually persisted if and when the application \r\n            crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the TextWriterAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\">\r\n            <summary>\n            Gets or set whether the appender will flush at the end \n            of each append operation.\n            </summary>\n            <value>\n            <para>\n            The default behavior is to flush at the end of each \n            append operation.\n            </para>\n            <para>\n            If this option is set to <c>false</c>, then the underlying \n            stream can defer persisting the logging event to a later \n            time.\n            </para>\n            </value>\n            <remarks>\n            Avoiding the flush operation at the end of each append results in\n            a performance gain of 10 to 20 percent. However, there is safety\n            trade-off involved in skipping flushing. Indeed, when flushing is\n            skipped, then it is likely that the last few log events will not\n            be recorded on disk when the application exits. This is a high\n            price to pay even for a 20% performance gain.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.Writer\">\r\n            <summary>\r\n            Sets the <see cref=\"T:System.IO.TextWriter\"/> where the log output will go.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The specified <see cref=\"T:System.IO.TextWriter\"/> must be open and writable.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> will be closed when the appender \r\n            instance is closed.\r\n            </para>\r\n            <para>\r\n            <b>Note:</b> Logging to an unopened <see cref=\"T:System.IO.TextWriter\"/> will fail.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\">\r\n            <summary>\r\n            Gets or set the <see cref=\"T:log4net.Core.IErrorHandler\"/> and the underlying \r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/>, if any, for this appender. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.QuietWriter\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events are written.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String,System.Boolean)\">\r\n            <summary>\n            Construct a new appender using the layout, file and append mode.\n            </summary>\n            <param name=\"layout\">the layout to use with this appender</param>\n            <param name=\"filename\">the full path to the file to write to</param>\n            <param name=\"append\">flag to indicate if the file should be appended to</param>\n            <remarks>\n            <para>\n            Obsolete constructor.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String)\">\r\n            <summary>\n            Construct a new appender using the layout and file specified.\n            The file will be appended to.\n            </summary>\n            <param name=\"layout\">the layout to use with this appender</param>\n            <param name=\"filename\">the full path to the file to write to</param>\n            <remarks>\n            <para>\n            Obsolete constructor.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on the file appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This will cause the file to be opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Reset\">\r\n            <summary>\r\n            Closes any previously opened file and calls the parent's <see cref=\"M:log4net.Appender.TextWriterAppender.Reset\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets the filename and the file stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.PrepareWriter\">\r\n            <summary>\n            Called to initialize the file writer\n            </summary>\n            <remarks>\n            <para>\n            Will be called for each logged message until the file is\n            successfully opened.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Acquires the output file locks once before writing all the events to\r\n            the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseFile\">\r\n            <summary>\r\n            Closes the previously opened file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Layout.ILayout.Footer\"/> to the file and then\r\n            closes the file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SafeOpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\r\n            </summary>\r\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\r\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\r\n            <remarks>\r\n            <para>\r\n            Calls <see cref=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\"/> but guarantees not to throw an exception.\r\n            Errors are passed to the <see cref=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\n            </summary>\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\n            <remarks>\n            <para>\n            If there was already an opened file, then the previous file\n            is closed first.\n            </para>\n            <para>\n            This method will ensure that the directory structure\n            for the <paramref name=\"fileName\"/> specified exists.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\">\r\n            <summary>\r\n            Sets the quiet writer used for file output\r\n            </summary>\r\n            <param name=\"fileStream\">the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This implementation of <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\"/> creates a <see cref=\"T:System.IO.StreamWriter\"/>\r\n            over the <paramref name=\"fileStream\"/> and passes it to the \r\n            <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden by sub classes that want to wrap the\r\n            <see cref=\"T:System.IO.Stream\"/> in some way, for example to encrypt the output\r\n            data using a <c>System.Security.Cryptography.CryptoStream</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\r\n            Sets the quiet writer being used.\r\n            </summary>\r\n            <param name=\"writer\">the writer over the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This method can be overridden by sub classes that want to\r\n            wrap the <see cref=\"T:System.IO.TextWriter\"/> in some way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\n            Convert a path into a fully qualified path.\n            </summary>\n            <param name=\"path\">The path to convert.</param>\n            <returns>The fully qualified path.</returns>\n            <remarks>\n            <para>\n            Converts the path specified to a fully\n            qualified path. If the path is relative it is\n            taken as relative from the application base \n            directory.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_appendToFile\">\r\n            <summary>\n            Flag to indicate if we should append to the file\n            or overwrite the file. The default is to append.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_fileName\">\r\n            <summary>\n            The name of the log file.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_encoding\">\r\n            <summary>\n            The encoding to use for the file stream.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_stream\">\r\n            <summary>\n            The stream to log to. Has added locking semantics\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_lockingModel\">\r\n            <summary>\n            The locking model to use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the FileAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.File\">\r\n            <summary>\n            Gets or sets the path to the file that logging will be written to.\n            </summary>\n            <value>\n            The path to the file that logging will be written to.\n            </value>\n            <remarks>\n            <para>\n            If the path is relative it is taken as relative from \n            the application base directory.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.AppendToFile\">\r\n            <summary>\n            Gets or sets a flag that indicates whether the file should be\n            appended to or overwritten.\n            </summary>\n            <value>\n            Indicates whether the file should be appended to or overwritten.\n            </value>\n            <remarks>\n            <para>\n            If the value is set to false then the file will be overwritten, if \n            it is set to true then the file will be appended to.\n            </para>\n            The default value is true.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default encoding set is <see cref=\"P:System.Text.Encoding.Default\"/>\r\n            which is the encoding for the system's current ANSI code page.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModel\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to lock the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </para>\r\n            <para>\r\n            There are three built in locking models, <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>, <see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/> and <see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/> .\r\n            The first locks the file from the start of logging to the end, the \r\n            second locks only for the minimal amount of time when logging each message\r\n            and the last synchronizes processes using a named system wide Mutex.\r\n            </para>\r\n            <para>\r\n            The default locking model is the <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingStream\">\r\n            <summary>\r\n            Write only <see cref=\"T:System.IO.Stream\"/> that uses the <see cref=\"T:log4net.Appender.FileAppender.LockingModelBase\"/> \r\n            to manage access to an underlying resource.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)\">\r\n            <summary>\n            True asynchronous writes are not supported, the implementation forces a synchronous write.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LogException\">\r\n            <summary>\r\n            Exception base type for log4net.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class with\r\n            the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingModelBase\">\r\n            <summary>\r\n            Locking model base class\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Base class for the locking models available to the <see cref=\"T:log4net.Appender.FileAppender\"/> derived loggers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the output file\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\">\r\n            <summary>\n            Close the file\n            </summary>\n            <remarks>\n            <para>\n            Close the file. No further writes will be made.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CreateStream(System.String,System.Boolean,System.IO.FileShare)\">\r\n            <summary>\n            Helper method that creates a FileStream under CurrentAppender's SecurityContext.\n            </summary>\n            <remarks>\n            <para>\n            Typically called during OpenFile or AcquireLock. \n            </para>\n            <para>\n            If the directory portion of the <paramref name=\"filename\"/> does not exist, it is created\n            via Directory.CreateDirecctory.\n            </para>\n            </remarks>\n            <param name=\"filename\"></param>\n            <param name=\"append\"></param>\n            <param name=\"fileShare\"></param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseStream(System.IO.Stream)\">\r\n            <summary>\n            Helper method to close <paramref name=\"stream\"/> under CurrentAppender's SecurityContext.\n            </summary>\n            <remarks>\n            Does not set <paramref name=\"stream\"/> to null.\n            </remarks>\n            <param name=\"stream\"></param>\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModelBase.CurrentAppender\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The file appender this locking model is attached to and working on\r\n            behalf of.\r\n            </para>\r\n            <para>\r\n            The file appender is used to locate the security context and the error handler to use.\r\n            </para>\r\n            <para>\r\n            The value of this property will be set before <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\"/> is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.ExclusiveLock\">\r\n            <summary>\r\n            Hold an exclusive lock on the output file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Open the file once for writing and hold it open until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/> is called. \r\n            Maintains an exclusive lock on the file during this time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\">\r\n            <summary>\n            Close the file\n            </summary>\n            <remarks>\n            <para>\n            Close the file. No further writes will be made.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\">\r\n            <summary>\n            Acquire the lock on the file\n            </summary>\n            <returns>A stream that is ready to be written to.</returns>\n            <remarks>\n            <para>\n            Does nothing. The lock is already taken\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\">\r\n            <summary>\n            Release the lock on the file\n            </summary>\n            <remarks>\n            <para>\n            Does nothing. The lock will be released when the file is closed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.MinimalLock\">\r\n            <summary>\r\n            Acquires the file lock for each write\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Opens the file once for each <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>/<see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> cycle, \r\n            thus holding the lock for the minimal amount of time. This method of locking\r\n            is considerably slower than <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> but allows \r\n            other processes to move/delete the log file whilst logging continues.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Prepares to open the file when the first message is logged.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\">\r\n            <summary>\n            Close the file\n            </summary>\n            <remarks>\n            <para>\n            Close the file. No further writes will be made.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.InterProcessLock\">\r\n            <summary>\n            Provides cross-process file locking.\n            </summary>\n            <author>Ron Grabowski</author>\n            <author>Steve Wranovsky</author>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/>,\r\n            -<see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\">\r\n            <summary>\n            Close the file\n            </summary>\n            <remarks>\n            <para>\n            Close the file. No further writes will be made.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\">\r\n            <summary>\n            Acquire the lock on the file\n            </summary>\n            <returns>A stream that is ready to be written to.</returns>\n            <remarks>\n            <para>\n            Does nothing. The lock is already taken\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.ForwardingAppender\">\r\n            <summary>\n            This appender forwards logging events to attached appenders.\n            </summary>\n            <remarks>\n            <para>\n            The forwarding appender can be used to specify different thresholds\n            and filters for the same appender at different locations within the hierarchy.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.OnClose\">\r\n            <summary>\n            Closes the appender and releases resources.\n            </summary>\n            <remarks>\n            <para>\n            Releases any resources allocated within the appender such as file handles, \n            network connections, etc.\n            </para>\n            <para>\n            It is a programming error to append to a closed appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Forward the logging event to the attached appenders \n            </summary>\n            <param name=\"loggingEvent\">The event to log.</param>\n            <remarks>\n            <para>\n            Delivers the logging event to all the attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Forward the logging events to the attached appenders \n            </summary>\n            <param name=\"loggingEvents\">The array of events to log.</param>\n            <remarks>\n            <para>\n            Delivers the logging events to all the attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\n            Looks for the appender with the specified name.\n            </summary>\n            <param name=\"name\">The name of the appender to lookup.</param>\n            <returns>\n            The appender with the specified name, or <c>null</c>.\n            </returns>\n            <remarks>\n            <para>\n            Get the named appender attached to this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\n            Removes all previously added appenders from this appender.\n            </summary>\n            <remarks>\n            <para>\n            This is useful when re-reading configuration information.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender\">\r\n            <summary>\r\n            Logs events to a local syslog service.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            This appender uses the POSIX libc library functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c>.\r\n            If these functions are not available on the local system then this appender will not work!\r\n            </note>\r\n            <para>\r\n            The functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c> are specified in SUSv2 and \r\n            POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service.\r\n            </para>\r\n            <para>\r\n            This appender talks to a local syslog service. If you need to log to a remote syslog\r\n            daemon and you cannot configure your local syslog service to do this you may be\r\n            able to use the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> to log via UDP.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class is set up to write \r\n            to a local syslog service.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/> to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.OnClose\">\r\n            <summary>\n            Close the syslog when the appender is closed\n            </summary>\n            <remarks>\n            <para>\n            Close the syslog when the appender is closed\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\n            Translates a log4net level to a syslog severity.\n            </summary>\n            <param name=\"level\">A log4net level.</param>\n            <returns>A syslog severity.</returns>\n            <remarks>\n            <para>\n            Translates a log4net level to a syslog severity.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GeneratePriority(log4net.Appender.LocalSyslogAppender.SyslogFacility,log4net.Appender.LocalSyslogAppender.SyslogSeverity)\">\r\n            <summary>\n            Generate a syslog priority.\n            </summary>\n            <param name=\"facility\">The syslog facility.</param>\n            <param name=\"severity\">The syslog severity.</param>\n            <returns>A syslog priority.</returns>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_identity\">\r\n            <summary>\n            The message identity\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_handleToIdentity\">\r\n            <summary>\n            Marshaled handle to the identity string. We have to hold on to the\n            string as the <c>openlog</c> and <c>syslog</c> APIs just hold the\n            pointer to the ident and dereference it for each log message.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to syslog severity\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.openlog(System.IntPtr,System.Int32,log4net.Appender.LocalSyslogAppender.SyslogFacility)\">\r\n            <summary>\n            Open connection to system logger.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.syslog(System.Int32,System.String,System.String)\">\r\n            <summary>\n            Generate a log message.\n            </summary>\n            <remarks>\n            <para>\n            The libc syslog method takes a format string and a variable argument list similar\n            to the classic printf function. As this type of vararg list is not supported\n            by C# we need to specify the arguments explicitly. Here we have specified the\n            format string with a single message argument. The caller must set the format \n            string to <c>\"%s\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.closelog\">\r\n            <summary>\n            Close descriptor used to write to system logger.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogSeverity\">\r\n            <summary>\r\n            syslog severities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The log4net Level maps to a syslog severity using the\r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\"/> method and the <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/>\r\n            class. The severity is set on <see cref=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\n            system is unusable\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\n            action must be taken immediately\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\n            critical conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\n            error conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\n            warning conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\n            normal but significant condition\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\n            informational\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\n            debug-level messages\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\">\r\n            <summary>\r\n            syslog facilities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog facility defines which subsystem the logging comes from.\r\n            This is set on the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Facility\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\n            kernel messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\">\r\n            <summary>\n            random user-level messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\n            mail system\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\n            system daemons\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\n            security/authorization messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\n            messages generated internally by syslogd\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\n            line printer subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.News\">\r\n            <summary>\n            network news subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\n            UUCP subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\n            clock (cron/at) daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\n            security/authorization  messages (private)\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\n            ftp daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\n            NTP subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\n            log audit\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\n            log alert\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\n            clock daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the syslog severity that is should be logged at.\n            </summary>\n            <remarks>\n            <para>\n            A class to act as a mapping between the level that a logging call is made at and\n            the syslog severity that is should be logged at.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\n            The mapped syslog severity for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped syslog severity for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.MemoryAppender\">\r\n            <summary>\r\n            Stores logging events in an array.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The memory appender stores all the logging events\r\n            that are appended in an in-memory array.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.GetEvents\"/> method to get\r\n            the current list of events that have been appended.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.Clear\"/> method to clear the\r\n            current list of events.\r\n            </para>\r\n            </remarks>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.MemoryAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.GetEvents\">\r\n            <summary>\n            Gets the events that have been logged.\n            </summary>\n            <returns>The events that have been logged</returns>\n            <remarks>\n            <para>\n            Gets the events that have been logged.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Stores the <paramref name=\"loggingEvent\"/> in the events list.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Clear\">\r\n            <summary>\n            Clear the list of events\n            </summary>\n            <remarks>\n            Clear the list of events\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_eventsList\">\r\n            <summary>\n            The list of events that have been appended.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_fixFlags\">\r\n            <summary>\n            Value indicating which fields in the event should be fixed\n            </summary>\n            <remarks>\n            By default all fields are fixed\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating whether only part of the logging event \r\n            data should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the event \r\n            data to be fixed and stored in the appender, hereby improving performance. \r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.Fix\">\r\n            <summary>\r\n            Gets or sets the fields that will be fixed in the event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.NetSendAppender\">\r\n            <summary>\r\n            Logs entries by sending network messages using the \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> native function.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can send messages only to names that are active \r\n            on the network. If you send the message to a user name, \r\n            that user must be logged on and running the Messenger \r\n            service to receive the message.\r\n            </para>\r\n            <para>\r\n            The receiver will get a top most window displaying the \r\n            messages one at a time, therefore this appender should \r\n            not be used to deliver a high volume of messages.\r\n            </para>\r\n            <para>\r\n            The following table lists some possible uses for this appender :\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Action</term>\r\n                    <description>Property Value(s)</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>Send a message to a user account on the local machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a user account on a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a domain user account</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of a domain controller | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to all the names in a workgroup or domain</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;workgroup name | domain name&gt;*\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message from the local machine to a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            <b>Note :</b> security restrictions apply for sending \r\n            network messages, see <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> \r\n            for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            An example configuration section to log information \r\n            using this appender from the local machine, named \r\n            LOCAL_PC, to machine OPERATOR_PC :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"NetSendAppender_Operator\" type=\"log4net.Appender.NetSendAppender\">\r\n                <server value=\"LOCAL_PC\"/>\r\n                <recipient value=\"OPERATOR_PC\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5p %c [%x] - %m%n\"/>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_server\">\r\n            <summary>\n            The DNS or NetBIOS name of the server on which the function is to execute.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_sender\">\r\n            <summary>\n            The sender of the network message.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_recipient\">\r\n            <summary>\n            The message alias to which the message should be sent.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.#ctor\">\r\n            <summary>\n            Initializes the appender.\n            </summary>\n            <remarks>\n            The default constructor initializes all fields to their default values.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using a network message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\">\r\n            <summary>\n            Sends a buffer of information to a registered message alias.\n            </summary>\n            <param name=\"serverName\">The DNS or NetBIOS name of the server on which the function is to execute.</param>\n            <param name=\"msgName\">The message alias to which the message buffer should be sent</param>\n            <param name=\"fromName\">The originator of the message.</param>\n            <param name=\"buffer\">The message text.</param>\n            <param name=\"bufferSize\">The length, in bytes, of the message text.</param>\n            <remarks>\n            <para>\n            The following restrictions apply for sending network messages:\n            </para>\n            <para>\n            <list type=\"table\">\n                <listheader>\n                    <term>Platform</term>\n                    <description>Requirements</description>\n                </listheader>\n                <item>\n                    <term>Windows NT</term>\n                    <description>\n                        <para>\n                        No special group membership is required to send a network message.\n                        </para>\n                        <para>\n                        Admin, Accounts, Print, or Server Operator group membership is required to \n                        successfully send a network message on a remote server.\n                        </para>\n                    </description>\n                </item>\n                <item>\n                    <term>Windows 2000 or later</term>\n                    <description>\n                        <para>\n                        If you send a message on a domain controller that is running Active Directory, \n                        access is allowed or denied based on the access control list (ACL) for the securable \n                        object. The default ACL permits only Domain Admins and Account Operators to send a network message. \n                        </para>\n                        <para>\n                        On a member server or workstation, only Administrators and Server Operators can send a network message. \n                        </para>\n                    </description>\n                </item>\n            </list>\n            </para>\n            <para>\n            For more information see <a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/security_requirements_for_the_network_management_functions.asp\">Security Requirements for the Network Management Functions</a>.\n            </para>\n            </remarks>\n            <returns>\n            <para>\n            If the function succeeds, the return value is zero.\n            </para>\n            </returns>\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Sender\">\r\n            <summary>\n            Gets or sets the sender of the message.\n            </summary>\n            <value>\n            The sender of the message.\n            </value>\n            <remarks>\n            If this property is not specified, the message is sent from the local computer.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Recipient\">\r\n            <summary>\n            Gets or sets the message alias to which the message should be sent.\n            </summary>\n            <value>\n            The recipient of the message.\n            </value>\n            <remarks>\n            This property should always be specified in order to send a message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Server\">\r\n            <summary>\n            Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute.\n            </summary>\n            <value>\n            DNS or NetBIOS name of the remote server on which the function is to execute.\n            </value>\n            <remarks>\n            <para>\n            For Windows NT 4.0 and earlier, the string should begin with \\\\.\n            </para>\n            <para>\n            If this property is not specified, the local computer is used. \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.OutputDebugStringAppender\">\r\n            <summary>\n            Appends log events to the OutputDebugString system.\n            </summary>\n            <remarks>\n            <para>\n            OutputDebugStringAppender appends log events to the\n            OutputDebugString system.\n            </para>\n            <para>\n            The string is passed to the native <c>OutputDebugString</c> \n            function.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.OutputDebugStringAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Write the logging event to the output debug string API\n            </summary>\n            <param name=\"loggingEvent\">the event to log</param>\n            <remarks>\n            <para>\n            Write the logging event to the output debug string API\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.OutputDebugString(System.String)\">\r\n            <summary>\n            Stub for OutputDebugString native method\n            </summary>\n            <param name=\"message\">the string to output</param>\n            <remarks>\n            <para>\n            Stub for OutputDebugString native method\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.OutputDebugStringAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender\">\r\n            <summary>\r\n            Logs events to a remote syslog daemon.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The BSD syslog protocol is used to remotely log to\r\n            a syslog daemon. The syslogd listens for for messages\r\n            on UDP port 514.\r\n            </para>\r\n            <para>\r\n            The syslog UDP protocol is not authenticated. Most syslog daemons\r\n            do not accept remote log messages because of the security implications.\r\n            You may be able to use the LocalSyslogAppender to talk to a local\r\n            syslog service.\r\n            </para>\r\n            <para>\r\n            There is an RFC 3164 that claims to document the BSD Syslog Protocol.\r\n            This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html.\r\n            This appender generates what the RFC calls an \"Original Device Message\",\r\n            i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation\r\n            this format of message will be accepted by all current syslog daemon\r\n            implementations. The daemon will attach the current time and the source\r\n            hostname or IP address to any messages received.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.UdpAppender\">\r\n            <summary>\r\n            Sends logging events as connectionless UDP datagrams to a remote host or a \r\n            multicast group using an <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            UDP guarantees neither that messages arrive, nor that they arrive in the correct order.\r\n            </para>\r\n            <para>\r\n            To view the logging results, a custom application can be developed that listens for logging \r\n            events.\r\n            </para>\r\n            <para>\r\n            When decoding events send via this appender remember to use the same encoding\r\n            to decode the events as was used to send the events. See the <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/>\r\n            property to specify the encoding to use.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            This example shows how to log receive logging events that are sent \r\n            on IP address 244.0.0.1 and port 8080 to the console. The event is \r\n            encoded in the packet as a unicode string and it is decoded as such. \r\n            <code lang=\"C#\">\r\n            IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);\r\n            UdpClient udpClient;\r\n            byte[] buffer;\r\n            string loggingEvent;\r\n            \r\n            try \r\n            {\r\n                udpClient = new UdpClient(8080);\r\n                \r\n                while(true) \r\n                {\r\n                    buffer = udpClient.Receive(ref remoteEndPoint);\r\n                    loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);\r\n                    Console.WriteLine(loggingEvent);\r\n                }\r\n            } \r\n            catch(Exception e) \r\n            {\r\n                Console.WriteLine(e.ToString());\r\n            }\r\n            </code>\r\n            <code lang=\"Visual Basic\">\r\n            Dim remoteEndPoint as IPEndPoint\r\n            Dim udpClient as UdpClient\r\n            Dim buffer as Byte()\r\n            Dim loggingEvent as String\r\n            \r\n            Try \r\n                remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)\r\n                udpClient = new UdpClient(8080)\r\n                            While True\r\n                    buffer = udpClient.Receive(ByRef remoteEndPoint)\r\n                    loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)\r\n                    Console.WriteLine(loggingEvent)\r\n                Wend\r\n            Catch e As Exception\r\n                Console.WriteLine(e.ToString())\r\n            End Try\r\n            </code>\r\n            <para>\r\n            An example configuration section to log information using this appender to the \r\n            IP 224.0.0.1 on port 8080:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"UdpAppender\" type=\"log4net.Appender.UdpAppender\">\r\n                <remoteAddress value=\"224.0.0.1\"/>\r\n                <remotePort value=\"8080\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5level %logger [%ndc] - %message%newline\"/>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Gert Driesen</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.UdpAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The default constructor initializes all fields to their default values.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was specified or \r\n            an invalid remote or local TCP port number was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was not specified.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The TCP port number assigned to <see cref=\"P:log4net.Appender.UdpAppender.LocalPort\"/> or <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/> is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using an UDP datagram.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.OnClose\">\r\n            <summary>\r\n            Closes the UDP connection and releases all resources associated with \r\n            this <see cref=\"T:log4net.Appender.UdpAppender\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Disables the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> and releases all managed \r\n            and unmanaged resources associated with the <see cref=\"T:log4net.Appender.UdpAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.InitializeClientConnection\">\r\n            <summary>\r\n            Initializes the underlying  <see cref=\"T:System.Net.Sockets.UdpClient\"/> connection.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> is initialized and binds to the \r\n            port number from which you intend to communicate.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteAddress\">\r\n            <summary>\n            The IP address of the remote host or multicast group to which \n            the logging event will be sent.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remotePort\">\r\n            <summary>\n            The TCP port number of the remote host or multicast group to \n            which the logging event will be sent.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteEndPoint\">\r\n            <summary>\n            The cached remote endpoint to which the logging events will be sent.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_localPort\">\r\n            <summary>\r\n            The TCP port number from which the <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_client\">\r\n            <summary>\r\n            The <see cref=\"T:System.Net.Sockets.UdpClient\"/> instance that will be used for sending the \r\n            logging events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_encoding\">\r\n            <summary>\n            The encoding to use for the packet.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteAddress\">\r\n            <summary>\r\n            Gets or sets the IP address of the remote host or multicast group to which\r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            The IP address of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Multicast addresses are identified by IP class <b>D</b> addresses (in the range 224.0.0.0 to\r\n            239.255.255.255).  Multicast packets can pass across different networks through routers, so\r\n            it is possible to use multicasts in an Internet scenario as long as your network provider \r\n            supports multicasting.\r\n            </para>\r\n            <para>\r\n            Hosts that want to receive particular multicast messages must register their interest by joining\r\n            the multicast group.  Multicast messages are not sent to networks where no host has joined\r\n            the multicast group.  Class <b>D</b> IP addresses are used for multicast groups, to differentiate\r\n            them from normal host addresses, allowing nodes to easily detect if a message is of interest.\r\n            </para>\r\n            <para>\r\n            Static multicast addresses that are needed globally are assigned by IANA.  A few examples are listed in the table below:\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>IP Address</term>\r\n                    <description>Description</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>224.0.0.1</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all system on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.2</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all routers on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.12</term>\r\n                    <description>\r\n                        <para>\r\n                        The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            A complete list of actually reserved multicast addresses and their owners in the ranges\r\n            defined by RFC 3171 can be found at the <A href=\"http://www.iana.org/assignments/multicast-addresses\">IANA web site</A>. \r\n            </para>\r\n            <para>\r\n            The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative \r\n            addresses.  These addresses can be reused with other local groups.  Routers are typically \r\n            configured with filters to prevent multicast traffic in this range from flowing outside\r\n            of the local network.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemotePort\">\r\n            <summary>\r\n            Gets or sets the TCP port number of the remote host or multicast group to which \r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will send messages to this TCP port number\r\n            on the remote host or multicast group.\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.LocalPort\">\r\n            <summary>\r\n            Gets or sets the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will bind to this port for sending messages.\r\n            </para>\r\n            <para>\r\n            Setting the value to 0 (the default) will cause the udp client not to bind to\r\n            a local port.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Client\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> creates a <see cref=\"T:System.Net.Sockets.UdpClient\"/> to send logging events \r\n            over a network.  Classes deriving from <see cref=\"T:log4net.Appender.UdpAppender\"/> can use this\r\n            property to get or set this <see cref=\"T:System.Net.Sockets.UdpClient\"/>.  Use the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>\r\n            returned from <see cref=\"P:log4net.Appender.UdpAppender.Client\"/> if you require access beyond that which \r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteEndPoint\">\r\n            <summary>\r\n            Gets or sets the cached remote endpoint to which the logging events should be sent.\r\n            </summary>\r\n            <value>\r\n            The cached remote endpoint to which the logging events will be sent.\r\n            </value>\r\n            <remarks>\r\n            The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method will initialize the remote endpoint \r\n            with the values of the <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> and <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/>\r\n            properties.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.DefaultSyslogPort\">\r\n            <summary>\n            Syslog port 514\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class is set up to write \r\n            to a remote syslog daemon.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.AddMapping(log4net.Appender.RemoteSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\"/> mapping to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.ActivateOptions\">\r\n            <summary>\n            Initialize the options for this appender\n            </summary>\n            <remarks>\n            <para>\n            Initialize the level to syslog severity mappings set on this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\n            Translates a log4net level to a syslog severity.\n            </summary>\n            <param name=\"level\">A log4net level.</param>\n            <returns>A syslog severity.</returns>\n            <remarks>\n            <para>\n            Translates a log4net level to a syslog severity.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GeneratePriority(log4net.Appender.RemoteSyslogAppender.SyslogFacility,log4net.Appender.RemoteSyslogAppender.SyslogSeverity)\">\r\n            <summary>\n            Generate a syslog priority.\n            </summary>\n            <param name=\"facility\">The syslog facility.</param>\n            <param name=\"severity\">The syslog severity.</param>\n            <returns>A syslog priority.</returns>\n            <remarks>\n            <para>\n            Generate a syslog priority.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_identity\">\r\n            <summary>\n            The message identity\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to syslog severity\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogSeverity\">\r\n            <summary>\n            syslog severities\n            </summary>\n            <remarks>\n            <para>\n            The syslog severities.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\n            system is unusable\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\n            action must be taken immediately\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\n            critical conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\n            error conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\n            warning conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\n            normal but significant condition\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\n            informational\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\n            debug-level messages\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\">\r\n            <summary>\n            syslog facilities\n            </summary>\n            <remarks>\n            <para>\n            The syslog facilities\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\n            kernel messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\">\r\n            <summary>\n            random user-level messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\n            mail system\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\n            system daemons\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\n            security/authorization messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\n            messages generated internally by syslogd\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\n            line printer subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.News\">\r\n            <summary>\n            network news subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\n            UUCP subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\n            clock (cron/at) daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\n            security/authorization  messages (private)\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\n            ftp daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\n            NTP subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\n            log audit\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\n            log alert\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\n            clock daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the syslog severity that is should be logged at.\n            </summary>\n            <remarks>\n            <para>\n            A class to act as a mapping between the level that a logging call is made at and\n            the syslog severity that is should be logged at.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\n            The mapped syslog severity for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped syslog severity for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender\">\r\n            <summary>\r\n            Delivers logging events to a remote logging sink. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This Appender is designed to deliver events to a remote sink. \r\n            That is any object that implements the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface. It delivers the events using .NET remoting. The\r\n            object to deliver events to is specified by setting the\r\n            appenders <see cref=\"P:log4net.Appender.RemotingAppender.Sink\"/> property.</para>\r\n            <para>\r\n            The RemotingAppender buffers events before sending them. This allows it to \r\n            make more efficient use of the remoting infrastructure.</para>\r\n            <para>\r\n            Once the buffer is full the events are still not sent immediately. \r\n            They are scheduled to be sent using a pool thread. The effect is that \r\n            the send occurs asynchronously. This is very important for a \r\n            number of non obvious reasons. The remoting infrastructure will \r\n            flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.</para>\r\n            <para>\r\n            Because the events are sent asynchronously using pool threads it is possible to close \r\n            this appender before all the queued events have been sent.\r\n            When closing the appender attempts to wait until all the queued events have been sent, but \r\n            this will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If this appender is being closed because the <see cref=\"F:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"F:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for. If the runtime terminates the threads before\r\n            the queued events have been sent then they will be lost. To ensure that all events\r\n            are sent the appender must be closed before the application exits. See \r\n            <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/> for details on how to shutdown\r\n            log4net programmatically.</para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemotingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            The events are not sent immediately. They are scheduled to be sent\r\n            using a pool thread. The effect is that the send occurs asynchronously.\r\n            This is very important for a number of non obvious reasons. The remoting\r\n            infrastructure will flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.\r\n            </remarks>\r\n            <param name=\"events\">The events to send.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.OnClose\">\r\n            <summary>\r\n            Override base class close.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method waits while there are queued work items. The events are\r\n            sent asynchronously using <see cref=\"T:System.Threading.ThreadPool\"/> work items. These items\r\n            will be sent once a thread pool thread is available to send them, therefore\r\n            it is possible to close the appender before all the queued events have been\r\n            sent.</para>\r\n            <para>\r\n            This method attempts to wait until all the queued events have been sent, but this \r\n            method will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If the appender is being closed because the <see cref=\"F:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"F:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.BeginAsyncSend\">\r\n            <summary>\n            A work item is being queued into the thread pool\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.EndAsyncSend\">\r\n            <summary>\n            A work item from the thread pool has completed\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBufferCallback(System.Object)\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This method is designed to be used with the <see cref=\"T:System.Threading.ThreadPool\"/>.\r\n            This method expects to be passed an array of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the state param.\r\n            </remarks>\r\n            <param name=\"state\">the logging events to send</param>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkUrl\">\r\n            <summary>\n            The URL of the remote sink.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkObj\">\r\n            <summary>\n            The local proxy (.NET remoting) for the remote logging sink.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_queuedCallbackCount\">\r\n            <summary>\n            The number of queued callbacks currently waiting or executing\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_workQueueEmptyEvent\">\r\n            <summary>\n            Event used to signal when there are no queued work items\n            </summary>\n            <remarks>\n            This event is set when there are no queued work items. In this\n            state it is safe to close the appender.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.RemotingAppender.Sink\">\r\n            <summary>\r\n            Gets or sets the URL of the well-known object that will accept \r\n            the logging events.\r\n            </summary>\r\n            <value>\r\n            The well-known URL of the remote sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The URL of the remoting sink that will accept logging events.\r\n            The sink must implement the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\">\r\n            <summary>\r\n            Interface used to deliver <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This interface must be implemented by a remoting sink\r\n            if the <see cref=\"T:log4net.Appender.RemotingAppender\"/> is to be used\r\n            to deliver logging events to the sink.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Delivers logging events to the remote sink\n            </summary>\n            <param name=\"events\">Array of events to log.</param>\n            <remarks>\n            <para>\n            Delivers logging events to the remote sink\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender\">\r\n            <summary>\r\n            Appender that rolls log files based on size or date or both.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            RollingFileAppender can roll log files based on size or date or both\r\n            depending on the setting of the <see cref=\"P:log4net.Appender.RollingFileAppender.RollingStyle\"/> property.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\"/> the log file will be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\"/> the log file will be rolled\r\n            once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/> the log file will be\r\n            rolled once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed, but within a date boundary the file will also be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> the log file will be rolled when\r\n            the appender is configured. This effectively means that the log file can be\r\n            rolled once per program execution.\r\n            </para>\r\n            <para>\r\n            A of few additional optional features have been added:\r\n            <list type=\"bullet\">\r\n            <item>Attach date pattern for current log file <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/></item>\r\n            <item>Backup number increments for newer files <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/></item>\r\n            <item>Infinite number of backups by file size <see cref=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\"/></item>\r\n            </list>\r\n            </para>\r\n            \r\n            <note>\r\n            <para>\r\n            For large or infinite numbers of backup files a <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> \r\n            greater than zero is highly recommended, otherwise all the backup files need\r\n            to be renamed each time a new backup is created.\r\n            </para>\r\n            <para>\r\n            When Date/Time based rolling is used setting <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> \r\n            to <see langword=\"true\"/> will reduce the number of file renamings to few or none.\r\n            </para>\r\n            </note>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            Changing <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> or <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> without clearing\r\n            the log file directory of backup files will cause unexpected and unwanted side effects.  \r\n            </para>\r\n            </note>\r\n            \r\n            <para>\r\n            If Date/Time based rolling is enabled this appender will attempt to roll existing files\r\n            in the directory without a Date/Time tag based on the last write date of the base log file.\r\n            The appender only rolls the log file when a message is logged. If Date/Time based rolling \r\n            is enabled then the appender will not roll the log file at the Date/Time boundary but\r\n            at the point when the next message is logged after the boundary has been crossed.\r\n            </para>\r\n            \r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.RollingFileAppender\"/> extends the <see cref=\"T:log4net.Appender.FileAppender\"/> and\r\n            has the same behavior when opening the log file.\r\n            The appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            When rolling a backup file necessitates deleting an older backup file the\r\n            file to be deleted is moved to a temporary name before being deleted.\r\n            </para>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            A maximum number of backup files when rolling on date/time boundaries is not supported.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Edward Smit</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RollingFileAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the RollingFileAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\n            Sets the quiet writer being used.\n            </summary>\n            <remarks>\n            This method can be overridden by sub classes.\n            </remarks>\n            <param name=\"writer\">the writer to set</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Write out a logging event.\n            </summary>\n            <param name=\"loggingEvent\">the event to write to file.</param>\n            <remarks>\n            <para>\n            Handles append time behavior for RollingFileAppender.  This checks\n            if a roll over either by date (checked first) or time (checked second)\n            is need and then appends to the file last.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Write out an array of logging events.\n            </summary>\n            <param name=\"loggingEvents\">the events to write to file.</param>\n            <remarks>\n            <para>\n            Handles append time behavior for RollingFileAppender.  This checks\n            if a roll over either by date (checked first) or time (checked second)\n            is need and then appends to the file last.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.AdjustFileBeforeAppend\">\r\n            <summary>\n            Performs any required rolling before outputting the next event\n            </summary>\n            <remarks>\n            <para>\n            Handles append time behavior for RollingFileAppender.  This checks\n            if a roll over either by date (checked first) or time (checked second)\n            is need and then appends to the file last.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates and opens the file for logging.  If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/>\r\n            is false then the fully qualified name is determined and used.\r\n            </summary>\r\n            <param name=\"fileName\">the name of the file to open</param>\r\n            <param name=\"append\">true to append to existing file</param>\r\n            <remarks>\r\n            <para>This method will ensure that the directory structure\r\n            for the <paramref name=\"fileName\"/> specified exists.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetNextOutputFileName(System.String)\">\r\n            <summary>\r\n            Get the current output file name\r\n            </summary>\r\n            <param name=\"fileName\">the base file name</param>\r\n            <returns>the output file name</returns>\r\n            <remarks>\r\n            The output file name is based on the base fileName specified.\r\n            If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> is set then the output \r\n            file name is the same as the base file passed in. Otherwise\r\n            the output file depends on the date pattern, on the count\r\n            direction or both.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DetermineCurSizeRollBackups\">\r\n            <summary>\n            Determines curSizeRollBackups (only within the current roll point)\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetWildcardPatternForFile(System.String)\">\r\n            <summary>\n            Generates a wildcard pattern that can be used to find all files\n            that are similar to the base file name.\n            </summary>\n            <param name=\"baseFileName\"></param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetExistingFiles(System.String)\">\r\n            <summary>\n            Builds a list of filenames for all files matching the base filename plus a file\n            pattern.\n            </summary>\n            <param name=\"baseFilePath\"></param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverIfDateBoundaryCrossing\">\r\n            <summary>\n            Initiates a roll over if needed for crossing a date boundary since the last run.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ExistingInit\">\r\n            <summary>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            The following is done\r\n            <list type=\"bullet\">\r\n            <item>determine curSizeRollBackups (only within the current roll point)</item>\r\n            <item>initiates a roll over if needed for crossing a date boundary since the last run.</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeFromOneFile(System.String,System.String)\">\r\n            <summary>\n            Does the work of bumping the 'current' file counter higher\n            to the highest count when an incremental file name is seen.\n            The highest count is either the first file (when count direction\n            is greater than 0) or the last file (when count direction less than 0).\n            In either case, we want to know the highest count that is present.\n            </summary>\n            <param name=\"baseFile\"></param>\n            <param name=\"curFileName\"></param>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetBackUpIndex(System.String)\">\r\n            <summary>\n            Attempts to extract a number from the end of the file name that indicates\n            the number of the times the file has been rolled over.\n            </summary>\n            <remarks>\n            Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes.\n            </remarks>\n            <param name=\"curFileName\"></param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeRollBackups(System.String,System.Collections.ArrayList)\">\r\n            <summary>\n            Takes a list of files and a base file name, and looks for \n            'incremented' versions of the base file.  Bumps the max\n            count up to the highest count seen.\n            </summary>\n            <param name=\"baseFile\"></param>\n            <param name=\"arrayFiles\"></param>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ComputeCheckPeriod(System.String)\">\r\n            <summary>\n            Calculates the RollPoint for the datePattern supplied.\n            </summary>\n            <param name=\"datePattern\">the date pattern to calculate the check period for</param>\n            <returns>The RollPoint that is most accurate for the date pattern supplied</returns>\n            <remarks>\n            Essentially the date pattern is examined to determine what the\n            most suitable roll point is. The roll point chosen is the roll point\n            with the smallest period that can be detected using the date pattern\n            supplied. i.e. if the date pattern only outputs the year, month, day \n            and hour then the smallest roll point that can be detected would be\n            and hourly roll point as minutes could not be detected.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Sets initial conditions including date/time roll over information, first check,\r\n            scheduledFilename, and calls <see cref=\"M:log4net.Appender.RollingFileAppender.ExistingInit\"/> to initialize\r\n            the current number of backups.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.CombinePath(System.String,System.String)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"path1\"></param>\n            <param name=\"path2\">.1, .2, .3, etc.</param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverTime(System.Boolean)\">\r\n            <summary>\n            Rollover the file(s) to date/time tagged file(s).\n            </summary>\n            <param name=\"fileIsOpen\">set to true if the file to be rolled is currently open</param>\n            <remarks>\n            <para>\n            Rollover the file(s) to date/time tagged file(s).\n            Resets curSizeRollBackups. \n            If fileIsOpen is set then the new file is opened (through SafeOpenFile).\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollFile(System.String,System.String)\">\r\n            <summary>\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>.\n            </summary>\n            <param name=\"fromFile\">Name of existing file to roll.</param>\n            <param name=\"toFile\">New name for file.</param>\n            <remarks>\n            <para>\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>. It\n            also checks for existence of target file and deletes if it does.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.FileExists(System.String)\">\r\n            <summary>\n            Test if a file exists at a specified path\n            </summary>\n            <param name=\"path\">the path to the file</param>\n            <returns>true if the file exists</returns>\n            <remarks>\n            <para>\n            Test if a file exists at a specified path\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DeleteFile(System.String)\">\r\n            <summary>\n            Deletes the specified file if it exists.\n            </summary>\n            <param name=\"fileName\">The file to delete.</param>\n            <remarks>\n            <para>\n            Delete a file if is exists.\n            The file is first moved to a new filename then deleted.\n            This allows the file to be removed even when it cannot\n            be deleted, but it still can be moved.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverSize\">\r\n            <summary>\n            Implements file roll base on file size.\n            </summary>\n            <remarks>\n            <para>\n            If the maximum number of size based backups is reached\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\n            file is deleted -- its index determined by the sign of countDirection.\n            If <c>countDirection</c> &lt; 0, then files\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\n            are renamed to {<c>File.2</c>, ...,\n            <c>File.curSizeRollBackups</c>}. Moreover, <c>File</c> is\n            renamed <c>File.1</c> and closed.\n            </para>\n            <para>\n            A new file is created to receive further log output.\n            </para>\n            <para>\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\n            <c>File</c> is truncated with no backup files created.\n            </para>\n            <para>\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\n            renamed if needed and no files are deleted.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverRenameFiles(System.String)\">\r\n            <summary>\r\n            Implements file roll.\r\n            </summary>\r\n            <param name=\"baseFileName\">the base name to rename</param>\r\n            <remarks>\r\n            <para>\r\n            If the maximum number of size based backups is reached\r\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\r\n            file is deleted -- its index determined by the sign of countDirection.\r\n            If <c>countDirection</c> &lt; 0, then files\r\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\r\n            are renamed to {<c>File.2</c>, ...,\r\n            <c>File.curSizeRollBackups</c>}. \r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\r\n            <c>File</c> is truncated with no backup files created.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\r\n            renamed if needed and no files are deleted.\r\n            </para>\r\n            <para>\r\n            This is called by <see cref=\"M:log4net.Appender.RollingFileAppender.RollOverSize\"/> to rename the files.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.NextCheckDate(System.DateTime,log4net.Appender.RollingFileAppender.RollPoint)\">\r\n            <summary>\n            Get the start time of the next window for the current rollpoint\n            </summary>\n            <param name=\"currentDateTime\">the current date</param>\n            <param name=\"rollPoint\">the type of roll point we are working with</param>\n            <returns>the start time for the next roll point an interval after the currentDateTime date</returns>\n            <remarks>\n            <para>\n            Returns the date of the next roll point after the currentDateTime date passed to the method.\n            </para>\n            <para>\n            The basic strategy is to subtract the time parts that are less significant\n            than the rollpoint from the current time. This should roll the time back to\n            the start of the time window for the current rollpoint. Then we add 1 window\n            worth of time and get the start time of the next window for the rollpoint.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_dateTime\">\r\n            <summary>\n            This object supplies the current date/time.  Allows test code to plug in\n            a method to control this class when testing date/time based rolling. The default\n            implementation uses the underlying value of DateTime.Now.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_datePattern\">\r\n            <summary>\n            The date pattern. By default, the pattern is set to <c>\".yyyy-MM-dd\"</c> \n            meaning daily rollover.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_scheduledFilename\">\r\n            <summary>\n            The actual formatted filename that is currently being written to\n            or will be the file transferred to on roll over\n            (based on staticLogFileName).\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_nextCheck\">\r\n            <summary>\n            The timestamp when we shall next recompute the filename.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_now\">\r\n            <summary>\n            Holds date of last roll over\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollPoint\">\r\n            <summary>\n            The type of rolling done\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxFileSize\">\r\n            <summary>\n            The default maximum file size is 10MB\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxSizeRollBackups\">\r\n            <summary>\n            There is zero backup files by default\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_curSizeRollBackups\">\r\n            <summary>\n            How many sized based backups have been made so far\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_countDirection\">\r\n            <summary>\n            The rolling file count direction. \n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollingStyle\">\r\n            <summary>\n            The rolling mode used in this appender.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollDate\">\r\n            <summary>\n            Cache flag set if we are rolling by date.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollSize\">\r\n            <summary>\n            Cache flag set if we are rolling by size.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_staticLogFileName\">\r\n            <summary>\n            Value indicating whether to always log to the same file.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_preserveLogFileNameExtension\">\r\n            <summary>\n            Value indicating whether to preserve the file name extension when rolling.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_baseFileName\">\r\n            <summary>\n            FileName provided in configuration.  Used for rolling properly\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.s_date1970\">\r\n            <summary>\n            The 1st of January 1970 in UTC\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DateTimeStrategy\">\r\n            <summary>\r\n            Gets or sets the strategy for determining the current date and time. The default\r\n            implementation is to use LocalDateTime which internally calls through to DateTime.Now. \r\n            </summary>\r\n            <value>\r\n            An implementation of the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> interface which returns the current date and time.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> used to return the current date and time.\r\n            </para>\r\n            <para>\r\n            The default strategy is <see cref=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DatePattern\">\r\n            <summary>\r\n            Gets or sets the date pattern to be used for generating file names\r\n            when rolling over on date.\r\n            </summary>\r\n            <value>\r\n            The date pattern to be used for generating file names when rolling \r\n            over on date.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Takes a string in the same format as expected by \r\n            <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/>.\r\n            </para>\r\n            <para>\r\n            This property determines the rollover schedule when rolling over\r\n            on date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\">\r\n            <summary>\r\n            Gets or sets the maximum number of backup files that are kept before\r\n            the oldest is erased.\r\n            </summary>\r\n            <value>\r\n            The maximum number of backup files that are kept before the oldest is\r\n            erased.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If set to zero, then there will be no backup files and the log file \r\n            will be truncated when it reaches <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/>.  \r\n            </para>\r\n            <para>\r\n            If a negative number is supplied then no deletions will be made.  Note \r\n            that this could result in very slow performance as a large number of \r\n            files are rolled over unless <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> is used.\r\n            </para>\r\n            <para>\r\n            The maximum applies to <b>each</b> time based group of files and \r\n            <b>not</b> the total.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size in bytes that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property is equivalent to <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/> except\r\n            that it is required for differentiating the setter taking a\r\n            <see cref=\"T:System.Int64\"/> argument from the setter taking a <see cref=\"T:System.String\"/> \r\n            argument.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB (10*1024*1024).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property allows you to specify the maximum size with the\r\n            suffixes \"KB\", \"MB\" or \"GB\" so that the size is interpreted being \r\n            expressed respectively in kilobytes, megabytes or gigabytes. \r\n            </para>\r\n            <para>\r\n            For example, the value \"10KB\" will be interpreted as 10240 bytes.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB.\r\n            </para>\r\n            <para>\r\n            If you have the option to set the maximum file size programmatically\r\n            consider using the <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/> property instead as this\r\n            allows you to set the size in bytes as a <see cref=\"T:System.Int64\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.CountDirection\">\r\n            <summary>\r\n            Gets or sets the rolling file count direction. \r\n            </summary>\r\n            <value>\r\n            The rolling file count direction.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Indicates if the current file is the lowest numbered file or the\r\n            highest numbered file.\r\n            </para>\r\n            <para>\r\n            By default newer files have lower numbers (<see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &lt; 0),\r\n            i.e. log.1 is most recent, log.5 is the 5th backup, etc...\r\n            </para>\r\n            <para>\r\n            <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 does the opposite i.e.\r\n            log.1 is the first backup made, log.5 is the 5th backup made, etc.\r\n            For infinite backups use <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 to reduce \r\n            rollover costs.\r\n            </para>\r\n            <para>The default file count direction is -1.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.RollingStyle\">\r\n            <summary>\r\n            Gets or sets the rolling style.\r\n            </summary>\r\n            <value>The rolling style.</value>\r\n            <remarks>\r\n            <para>\r\n            The default rolling style is <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/>.\r\n            </para>\r\n            <para>\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> this appender's\r\n            <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is set to <c>false</c>, otherwise\r\n            the appender would append to a single file rather than rolling\r\n            the file each time it is opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension\">\r\n            <summary>\n            Gets or sets a value indicating whether to preserve the file name extension when rolling.\n            </summary>\n            <value>\n            <c>true</c> if the file name extension should be preserved.\n            </value>\n            <remarks>\n            <para>\n            By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup.\n            However, under Windows the new file name will loose any program associations as the\n            extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or\n            file.curSizeRollBackup.log to maintain any program associations.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\">\r\n            <summary>\n            Gets or sets a value indicating whether to always log to\n            the same file.\n            </summary>\n            <value>\n            <c>true</c> if always should be logged to the same file, otherwise <c>false</c>.\n            </value>\n            <remarks>\n            <para>\n            By default file.log is always the current file.  Optionally\n            file.log.yyyy-mm-dd for current formatted datePattern can by the currently\n            logging file (or file.log.curSizeRollBackup or even\n            file.log.yyyy-mm-dd.curSizeRollBackup).\n            </para>\n            <para>\n            This will make time based rollovers with a large number of backups \n            much faster as the appender it won't have to rename all the backups!\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollingMode\">\r\n            <summary>\n            Style of rolling to use\n            </summary>\n            <remarks>\n            <para>\n            Style of rolling to use\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\">\r\n            <summary>\n            Roll files once per program execution\n            </summary>\n            <remarks>\n            <para>\n            Roll files once per program execution.\n            Well really once each time this appender is\n            configured.\n            </para>\n            <para>\n            Setting this option also sets <c>AppendToFile</c> to\n            <c>false</c> on the <c>RollingFileAppender</c>, otherwise\n            this appender would just be a normal file appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\">\r\n            <summary>\n            Roll files based only on the size of the file\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\">\r\n            <summary>\n            Roll files based only on the date\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\">\r\n            <summary>\n            Roll files based on both the size and date of the file\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollPoint\">\r\n            <summary>\n            The code assumes that the following 'time' constants are in a increasing sequence.\n            </summary>\n            <remarks>\n            <para>\n            The code assumes that the following 'time' constants are in a increasing sequence.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.InvalidRollPoint\">\r\n            <summary>\n            Roll the log not based on the date\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMinute\">\r\n            <summary>\n            Roll the log for each minute\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfHour\">\r\n            <summary>\n            Roll the log for each hour\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.HalfDay\">\r\n            <summary>\n            Roll the log twice a day (midday and midnight)\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfDay\">\r\n            <summary>\n            Roll the log each day (midnight)\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfWeek\">\r\n            <summary>\n            Roll the log each week\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMonth\">\r\n            <summary>\n            Roll the log each month\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.IDateTime\">\r\n            <summary>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            Used primarily to allow test classes to plug themselves in so they can\r\n            supply test date/times.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.IDateTime.Now\">\r\n            <summary>\n            Gets the <i>current</i> time.\n            </summary>\n            <value>The <i>current</i> time.</value>\n            <remarks>\n            <para>\n            Gets the <i>current</i> time.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> that returns the current time.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.LocalDateTime.Now\">\r\n            <summary>\n            Gets the <b>current</b> time.\n            </summary>\n            <value>The <b>current</b> time.</value>\n            <remarks>\n            <para>\n            Gets the <b>current</b> time.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender\">\r\n            <summary>\r\n            Send an e-mail when a specific logging event occurs, typically on errors \r\n            or fatal errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            <note type=\"caution\">\r\n            Authentication and setting the server Port are only available on the MS .NET 1.1 runtime.\r\n            For these features to be enabled you need to ensure that you are using a version of\r\n            the log4net assembly that is built against the MS .NET 1.1 framework and that you are\r\n            running the your application on the MS .NET 1.1 runtime. On all other platforms only sending\r\n            unauthenticated messages to a server listening on port 25 (the default) is supported.\r\n            </note>\r\n            <para>\r\n            Authentication is supported by setting the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property to\r\n            either <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> or <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>.\r\n            If using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> authentication then the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/>\r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> properties must also be set.\r\n            </para>\r\n            <para>\r\n            To set the SMTP server port use the <see cref=\"P:log4net.Appender.SmtpAppender.Port\"/> property. The default port is 25.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Sends the contents of the cyclic buffer as an e-mail message.\n            </summary>\n            <param name=\"events\">The logging events to send.</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendEmail(System.String)\">\r\n            <summary>\n            Send the email message\n            </summary>\n            <param name=\"messageBody\">the body text to include in the mail</param>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.To\">\r\n            <summary>\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions).\n            </summary>\n            <value>\n            <para>\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\n            </para>\n            <para>\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\n            </para>\n            </value>\n            <remarks>\n            <para>\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\n            </para>\n            <para>\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Cc\">\r\n            <summary>\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses \n            that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions).\n            </summary>\n            <value>\n            <para>\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\n            </para>\n            <para>\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\n            </para>\n            </value>\n            <remarks>\n            <para>\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\n            </para>\n            <para>\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Bcc\">\r\n            <summary>\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses\n            that will be blind carbon copied.\n            </summary>\n            <value>\n            A semicolon-delimited list of e-mail addresses.\n            </value>\n            <remarks>\n            <para>\n            A semicolon-delimited list of recipient e-mail addresses.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.From\">\r\n            <summary>\n            Gets or sets the e-mail address of the sender.\n            </summary>\n            <value>\n            The e-mail address of the sender.\n            </value>\n            <remarks>\n            <para>\n            The e-mail address of the sender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Subject\">\r\n            <summary>\n            Gets or sets the subject line of the e-mail message.\n            </summary>\n            <value>\n            The subject line of the e-mail message.\n            </value>\n            <remarks>\n            <para>\n            The subject line of the e-mail message.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.SmtpHost\">\r\n            <summary>\n            Gets or sets the name of the SMTP relay mail server to use to send \n            the e-mail messages.\n            </summary>\n            <value>\n            The name of the e-mail relay server. If SmtpServer is not set, the \n            name of the local SMTP server is used.\n            </value>\n            <remarks>\n            <para>\n            The name of the e-mail relay server. If SmtpServer is not set, the \n            name of the local SMTP server is used.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.LocationInfo\">\r\n            <summary>\n            Obsolete\n            </summary>\n            <remarks>\n            Use the BufferingAppenderSkeleton Fix methods instead \n            </remarks>\n            <remarks>\n            <para>\n            Obsolete property.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Authentication\">\r\n            <summary>\r\n            The mode to use to authentication with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            Valid Authentication mode values are: <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>, \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, and <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>. \r\n            The default value is <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>. When using \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> you must specify the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> \r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> to use to authenticate.\r\n            When using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/> the Windows credentials for the current\r\n            thread, if impersonating, or the process will be used to authenticate. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Username\">\r\n            <summary>\r\n            The username to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the username will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Password\">\r\n            <summary>\r\n            The password to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the password will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Port\">\r\n            <summary>\n            The port on which the SMTP server is listening\n            </summary>\n            <remarks>\n            <note type=\"caution\">Server Port is only available on the MS .NET 1.1 runtime.</note>\n            <para>\n            The port on which the SMTP server is listening. The default\n            port is <c>25</c>. The Port can only be changed when running on\n            the MS .NET 1.1 runtime.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Priority\">\r\n            <summary>\r\n            Gets or sets the priority of the e-mail message\r\n            </summary>\r\n            <value>\r\n            One of the <see cref=\"T:System.Web.Mail.MailPriority\"/> values.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Sets the priority of the e-mails generated by this\r\n            appender. The default priority is <see cref=\"F:System.Web.Mail.MailPriority.Normal\"/>.\r\n            </para>\r\n            <para>\r\n            If you are using this appender to report errors then\r\n            you may want to set the priority to <see cref=\"F:System.Web.Mail.MailPriority.High\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender.SmtpAuthentication\">\r\n            <summary>\r\n            Values for the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            SMTP authentication modes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\">\r\n            <summary>\n            No authentication\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\">\r\n            <summary>\n            Basic authentication.\n            </summary>\n            <remarks>\n            Requires a username and password to be supplied\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\">\r\n            <summary>\n            Integrated authentication\n            </summary>\n            <remarks>\n            Uses the Windows credentials from the current thread or process to authenticate.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpPickupDirAppender\">\r\n            <summary>\r\n            Send an email when a specific logging event occurs, typically on errors \r\n            or fatal errors. Rather than sending via smtp it writes a file into the\r\n            directory specified by <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>. This allows services such\r\n            as the IIS SMTP agent to manage sending the messages.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The configuration for this appender is identical to that of the <c>SMTPAppender</c>,\r\n            except that instead of specifying the <c>SMTPAppender.SMTPHost</c> you specify\r\n            <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>.\r\n            </para>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpPickupDirAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            </remarks>\r\n            <author>Niall Daley</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Sends the contents of the cyclic buffer as an e-mail message.\n            </summary>\n            <param name=\"events\">The logging events to send.</param>\n            <remarks>\n            <para>\n            Sends the contents of the cyclic buffer as an e-mail message.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on this appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\n            Convert a path into a fully qualified path.\n            </summary>\n            <param name=\"path\">The path to convert.</param>\n            <returns>The fully qualified path.</returns>\n            <remarks>\n            <para>\n            Converts the path specified to a fully\n            qualified path. If the path is relative it is\n            taken as relative from the application base \n            directory.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpPickupDirAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.To\">\r\n            <summary>\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses.\n            </summary>\n            <value>\n            A semicolon-delimited list of e-mail addresses.\n            </value>\n            <remarks>\n            <para>\n            A semicolon-delimited list of e-mail addresses.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.From\">\r\n            <summary>\n            Gets or sets the e-mail address of the sender.\n            </summary>\n            <value>\n            The e-mail address of the sender.\n            </value>\n            <remarks>\n            <para>\n            The e-mail address of the sender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.Subject\">\r\n            <summary>\n            Gets or sets the subject line of the e-mail message.\n            </summary>\n            <value>\n            The subject line of the e-mail message.\n            </value>\n            <remarks>\n            <para>\n            The subject line of the e-mail message.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\">\r\n            <summary>\n            Gets or sets the path to write the messages to.\n            </summary>\n            <remarks>\n            <para>\n            Gets or sets the path to write the messages to. This should be the same\n            as that used by the agent sending the messages.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender\">\r\n            <summary>\r\n            Appender that allows clients to connect via Telnet to receive log messages\r\n            </summary>\r\n            <remarks>\t\r\n            <para>\r\n            The TelnetAppender accepts socket connections and streams logging messages\r\n            back to the client.  \r\n            The output is provided in a telnet-friendly way so that a log can be monitored \r\n            over a TCP/IP socket.\r\n            This allows simple remote monitoring of application logging.\r\n            </para>\r\n            <para>\r\n            The default <see cref=\"P:log4net.Appender.TelnetAppender.Port\"/> is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <author>Keith Long</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.TelnetAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the TelnetAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.OnClose\">\r\n            <summary>\n            Overrides the parent method to close the socket handler\n            </summary>\n            <remarks>\n            <para>\n            Closes all the outstanding connections.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Create the socket handler and wait for connections\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Writes the logging event to each connected client.\n            </summary>\n            <param name=\"loggingEvent\">The event to log.</param>\n            <remarks>\n            <para>\n            Writes the logging event to each connected client.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.Port\">\r\n            <summary>\r\n            Gets or sets the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> \r\n            or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler\">\r\n            <summary>\n            Helper class to manage connected clients\n            </summary>\n            <remarks>\n            <para>\n            The SocketHandler class is used to accept connections from\n            clients.  It is threaded so that clients can connect/disconnect\n            asynchronously.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.#ctor(System.Int32)\">\r\n            <summary>\n            Opens a new server port on <paramref ref=\"port\"/>\n            </summary>\n            <param name=\"port\">the local port to listen on for connections</param>\n            <remarks>\n            <para>\n            Creates a socket handler on the specified local server port.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Send(System.String)\">\r\n            <summary>\n            Sends a string message to each of the connected clients\n            </summary>\n            <param name=\"message\">the text to send</param>\n            <remarks>\n            <para>\n            Sends a string message to each of the connected clients\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.AddClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\n            Add a client to the internal clients list\n            </summary>\n            <param name=\"client\">client to add</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.RemoveClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\n            Remove a client from the internal clients list\n            </summary>\n            <param name=\"client\">client to remove</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.OnConnect(System.IAsyncResult)\">\r\n            <summary>\n            Callback used to accept a connection on the server socket\n            </summary>\n            <param name=\"asyncResult\">The result of the asynchronous operation</param>\n            <remarks>\n            <para>\n            On connection adds to the list of connections \n            if there are two many open connections you will be disconnected\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Dispose\">\r\n            <summary>\n            Close all network connections\n            </summary>\n            <remarks>\n            <para>\n            Make sure we close all network connections\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.SocketHandler.HasConnections\">\r\n            <summary>\n            Test if this handler has active connections\n            </summary>\n            <value>\n            <c>true</c> if this handler has active connections\n            </value>\n            <remarks>\n            <para>\n            This property will be <c>true</c> while this handler has\n            active connections, that is at least one connection that \n            the handler will attempt to send a message to.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\">\r\n            <summary>\n            Class that represents a client connected to this handler\n            </summary>\n            <remarks>\n            <para>\n            Class that represents a client connected to this handler\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.#ctor(System.Net.Sockets.Socket)\">\r\n            <summary>\r\n            Create this <see cref=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\"/> for the specified <see cref=\"T:System.Net.Sockets.Socket\"/>\r\n            </summary>\r\n            <param name=\"socket\">the client's socket</param>\r\n            <remarks>\r\n            <para>\r\n            Opens a stream writer on the socket.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Send(System.String)\">\r\n            <summary>\n            Write a string to the client\n            </summary>\n            <param name=\"message\">string to send</param>\n            <remarks>\n            <para>\n            Write a string to the client\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Dispose\">\r\n            <summary>\n            Cleanup the clients connection\n            </summary>\n            <remarks>\n            <para>\n            Close the socket connection.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.TraceAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Trace\"/> class for details on configuring the\r\n            trace system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <c>System.Diagnostics.Trace.Write(string,string)</c>\r\n            method. The event's logger name is the default value for the category parameter \r\n            of the Write method. \r\n            </para>\r\n            <para>\r\n            <b>Compact Framework</b><br/>\r\n            The Compact Framework does not support the <see cref=\"T:System.Diagnostics.Trace\"/>\r\n            class for any operation except <c>Assert</c>. When using the Compact Framework this\r\n            appender will write to the <see cref=\"T:System.Diagnostics.Debug\"/> system rather than\r\n            the Trace system. This appender will therefore behave like the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TraceAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_category\">\r\n            <summary>\n            Defaults to %logger\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.ImmediateFlush\">\r\n            <summary>\n            Gets or sets a value that indicates whether the appender will \n            flush at the end of each write.\n            </summary>\n            <remarks>\n            <para>The default behavior is to flush at the end of each \n            write. If the option is set to<c>false</c>, then the underlying \n            stream can defer writing to physical medium to a later time. \n            </para>\n            <para>\n            Avoiding the flush operation at the end of each append results \n            in a performance gain of 10 to 20 percent. However, there is safety\n            trade-off involved in skipping flushing. Indeed, when flushing is\n            skipped, then it is likely that the last few log events will not\n            be recorded on disk when the application exits. This is a high\n            price to pay even for a 20% performance gain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasDomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a domain to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.DomainAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's domain to its repository by\r\n            specifying this attribute with the name of the target domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required domains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasRepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a repository to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.RepositoryAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's repository to its repository by\r\n            specifying this attribute with the name of the target repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required repositories.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.AliasRepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The repository to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.AliasRepositoryAttribute.Name\">\r\n            <summary>\n            Gets or sets the repository to alias to this assemby's repository.\n            </summary>\n            <value>\n            The repository to alias to this assemby's repository.\n            </value>\n            <remarks>\n            <para>\n            The name of the repository to alias to this assemby's repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.AliasDomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasDomainAttribute\"/> class with \r\n            the specified domain to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The domain to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> instead of <see cref=\"T:log4net.Config.AliasDomainAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.BasicConfigurator\">\r\n            <summary>\r\n            Use this class to quickly configure a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Allows very simple programmatic configuration of log4net.\r\n            </para>\r\n            <para>\r\n            Only one appender can be configured using this configurator.\r\n            The appender is set at the root of the hierarchy and all logging\r\n            events will be delivered to that appender.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Config.BasicConfigurator.declaringType\">\r\n            <summary>\n            The fully qualified type of the BasicConfigurator class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.BasicConfigurator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure\">\r\n            <summary>\r\n            Initializes the log4net system with a default configuration.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net logging system using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\n            Initializes the log4net system using the specified appender.\n            </summary>\n            <param name=\"appender\">The appender to use to log all logging events.</param>\n            <remarks>\n            <para>\n            Initializes the log4net system using the specified appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\n            Initializes the log4net system using the specified appenders.\n            </summary>\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\n            <remarks>\n            <para>\n            Initializes the log4net system using the specified appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> with a default configuration.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the specified repository using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appender\">The appender to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appenders.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.ConfiguratorAttribute\">\r\n            <summary>\n            Base class for all log4net configuration attributes.\n            </summary>\n            <remarks>\n            This is an abstract class that must be extended by \n            specific configurators. This attribute allows the\n            configurator to be parameterized by an assembly level\n            attribute.\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.#ctor(System.Int32)\">\r\n            <summary>\n            Constructor used by subclasses.\n            </summary>\n            <param name=\"priority\">the ordering priority for this configurator</param>\n            <remarks>\n            <para>\n            The <paramref name=\"priority\"/> is used to order the configurator\n            attributes before they are invoked. Higher priority configurators are executed\n            before lower priority ones.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Abstract method implemented by a subclass. When this method is called\r\n            the subclass should configure the <paramref name=\"targetRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compare this instance to another ConfiguratorAttribute\r\n            </summary>\r\n            <param name=\"obj\">the object to compare to</param>\r\n            <returns>see <see cref=\"M:System.IComparable.CompareTo(System.Object)\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the priorities of the two <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> instances.\r\n            Sorts by priority in descending order. Objects with the same priority are\r\n            randomly ordered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging domain for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            Assemblies are mapped to logging domains. Each domain has its own\r\n            logging repository. This attribute specified on the assembly controls\r\n            the configuration of the domain. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the domain that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the repository objects to create for the domain. If \r\n            this attribute is not specified and a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> is not specified\r\n            then the assembly will be part of the default shared logging domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.RepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging repository for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Assemblies are mapped to logging repository. This attribute specified \r\n            on the assembly controls\r\n            the configuration of the repository. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the repository that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> object \r\n            to create for the assembly. If this attribute is not specified or a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> \r\n            is not specified then the assembly will be part of the default shared logging repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class \r\n            with the name of the repository.\r\n            </summary>\r\n            <param name=\"name\">The name of the repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize the attribute with the name for the assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.Name\">\r\n            <summary>\n            Gets or sets the name of the logging repository.\n            </summary>\n            <value>\n            The string name to use as the name of the repository associated with this\n            assembly.\n            </value>\n            <remarks>\n            <para>\n            This value does not have to be unique. Several assemblies can share the\n            same repository. They will share the logging configuration of the repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.RepositoryType\">\r\n            <summary>\r\n            Gets or sets the type of repository to create for this assembly.\r\n            </summary>\r\n            <value>\r\n            The type of repository to create for this assembly.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type of the repository to create for the assembly.\r\n            The type must implement the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            interface.\r\n            </para>\r\n            <para>\r\n            This will be the type of repository created when \r\n            the repository is created. If multiple assemblies reference the\r\n            same repository then the repository is only created once using the\r\n            <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/> of the first assembly to call into the \r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class \r\n            with the name of the domain.\r\n            </summary>\r\n            <param name=\"name\">The name of the domain.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.#ctor\">\r\n            <summary>\n            Private constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure\">\r\n            <summary>\n            Automatically configures the log4net system based on the \n            application's configuration settings.\n            </summary>\n            <remarks>\n            <para>\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\n            </para>\n            Each application has a configuration file. This has the\n            same name as the application with '.config' appended.\n            This file is XML and calling this function prompts the\n            configurator to look in that file for a section called\n            <c>log4net</c> that contains the configuration data.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Configures log4net using a <c>log4net</c> element\n            </summary>\n            <remarks>\n            <para>\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\n            </para>\n            Loads the log4net configuration from the XML element\n            supplied as <paramref name=\"element\"/>.\n            </remarks>\n            <param name=\"element\">The element to parse.</param>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\n            Configures log4net using the specified configuration file.\n            </summary>\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\n            <remarks>\n            <para>\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\n            </para>\n            <para>\n            The configuration file must be valid XML. It must contain\n            at least one element called <c>log4net</c> that holds\n            the log4net configuration data.\n            </para>\n            <para>\n            The log4net configuration file can possible be specified in the application's\n            configuration file (either <c>MyAppName.exe.config</c> for a\n            normal application on <c>Web.config</c> for an ASP.NET application).\n            </para>\n            <example>\n            The following example configures log4net using a configuration file, of which the \n            location is stored in the application's configuration file :\n            </example>\n            <code lang=\"C#\">\n            using log4net.Config;\n            using System.IO;\n            using System.Configuration;\n            \n            ...\n            \n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\n            </code>\n            <para>\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\n            </para>\n            <code lang=\"XML\" escaped=\"true\">\n            <configuration>\n            \t<appSettings>\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\n            \t</appSettings>\n            </configuration>\n            </code>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\n            Configures log4net using the specified configuration file.\n            </summary>\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\n            <remarks>\n            <para>\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\n            </para>\n            <para>\n            The configuration data must be valid XML. It must contain\n            at least one element called <c>log4net</c> that holds\n            the log4net configuration data.\n            </para>\n            <para>\n            Note that this method will NOT close the stream parameter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            <para>\r\n            If neither of the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>\r\n            properties are set the configuration is loaded from the application's .config file.\r\n            If set the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property takes priority over the\r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property. The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property\r\n            specifies a path to a file to load the config from. The path is relative to the\r\n            application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property is used as a postfix to the assembly file name.\r\n            The config file must be located in the  application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            For example in a console application setting the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> to\r\n            <c>config</c> has the same effect as not specifying the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or \r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> properties.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\"/> property can be set to cause the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            to watch the configuration file for changes.\r\n            </para>\r\n            <note>\r\n            <para>\r\n            Log4net will only look for assembly level configuration attributes once.\r\n            When using the log4net assembly level attributes to control the configuration \r\n            of log4net you must ensure that the first call to any of the \r\n            <see cref=\"T:log4net.Core.LoggerManager\"/> methods is made from the assembly with the configuration\r\n            attributes. \r\n            </para>\r\n            <para>\r\n            If you cannot guarantee the order in which log4net calls will be made from \r\n            different assemblies you must use programmatic configuration instead, i.e.\r\n            call the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/> method directly.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository using the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            The <paramref name=\"targetRepository\"/> specified must extend the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>\r\n            class otherwise the <see cref=\"T:log4net.Config.XmlConfigurator\"/> will not be able to\r\n            configure it.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"targetRepository\"/> does not extend <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\n            Attempt to load configuration from the local file system\n            </summary>\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\n            <param name=\"targetRepository\">The repository to configure.</param>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configure the specified repository using a <see cref=\"T:System.IO.FileInfo\"/>\r\n            </summary>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <param name=\"configFile\">the FileInfo pointing to the config file</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromUri(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\n            Attempt to load configuration from a URI\n            </summary>\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\n            <param name=\"targetRepository\">The repository to configure.</param>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfiguratorAttribute.declaringType\">\r\n            <summary>\n            The fully qualified type of the XmlConfiguratorAttribute class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\">\r\n            <summary>\r\n            Gets or sets the filename of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The filename of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified, this is the name of the configuration file to use with\r\n            the <see cref=\"T:log4net.Config.XmlConfigurator\"/>. This file path is relative to the\r\n            <b>application base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>).\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\">\r\n            <summary>\r\n            Gets or sets the extension of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The extension of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified this is the extension for the configuration file.\r\n            The path to the config file is built by using the <b>application \r\n            base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>),\r\n            the <b>assembly file name</b> and the config file extension.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> is set to <c>MyExt</c> then\r\n            possible config file names would be: <c>MyConsoleApp.exe.MyExt</c> or\r\n            <c>MyClassLibrary.dll.MyExt</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\">\r\n            <summary>\n            Gets or sets a value indicating whether to watch the configuration file.\n            </summary>\n            <value>\n            <c>true</c> if the configuration should be watched, <c>false</c> otherwise.\n            </value>\n            <remarks>\n            <para>\n            If this flag is specified and set to <c>true</c> then the framework\n            will watch the configuration file and will reload the config each time \n            the file is modified.\n            </para>\n            <para>\n            The config file can only be watched if it is loaded from local disk.\n            In a No-Touch (Smart Client) deployment where the application is downloaded\n            from a web server the config file may not reside on the local disk\n            and therefore it may not be able to watch it.\n            </para>\n            <note>\n            Watching configuration is not supported on the SSCLI.\n            </note>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Config.Log4NetConfigurationSectionHandler\">\r\n            <summary>\n            Class to register for the log4net section of the configuration file\n            </summary>\n            <remarks>\n            The log4net section of the configuration file needs to have a section\n            handler registered. This is the section handler used. It simply returns\n            the XML element that is the root of the section.\n            </remarks>\n            <example>\n            Example of registering the log4net section handler :\n            <code lang=\"XML\" escaped=\"true\">\n            <configuration>\n            \t<configSections>\n            \t\t<section name=\"log4net\" type=\"log4net.Config.Log4NetConfigurationSectionHandler, log4net\" />\n            \t</configSections>\n            \t<log4net>\n            \t\tlog4net configuration XML goes here\n            \t</log4net>\n            </configuration>\n            </code>\n            </example>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)\">\r\n            <summary>\r\n            Parses the configuration section.\r\n            </summary>\r\n            <param name=\"parent\">The configuration settings in a corresponding parent configuration section.</param>\r\n            <param name=\"configContext\">The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.</param>\r\n            <param name=\"section\">The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</param>\r\n            <returns>The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:System.Xml.XmlNode\"/> containing the configuration data,\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.PluginAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a plugin to attach to \r\n            the repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Specifies the type of a plugin to create and attach to the\r\n            assembly's repository. The plugin type must implement the\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPluginFactory\">\r\n            <summary>\n            Interface used to create plugins.\n            </summary>\n            <remarks>\n            <para>\n            Interface used to create  a plugin.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPluginFactory.CreatePlugin\">\r\n            <summary>\n            Creates the plugin object.\n            </summary>\n            <returns>the new plugin instance</returns>\n            <remarks>\n            <para>\n            Create and return a new plugin instance.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"typeName\">The type name of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            <para>\r\n            Where possible use the constructor that takes a <see cref=\"T:System.Type\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"type\">The type of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.CreatePlugin\">\r\n            <summary>\r\n            Creates the plugin object defined by this attribute.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the instance of the <see cref=\"T:log4net.Plugin.IPlugin\"/> object as \r\n            specified by this attribute.\r\n            </para>\r\n            </remarks>\r\n            <returns>The plugin object.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.ToString\">\r\n            <summary>\r\n            Returns a representation of the properties of this object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Overrides base class <see cref=\"M:System.Object.ToString\"/> method to \r\n            return a representation of the properties of this object.\r\n            </para>\r\n            </remarks>\r\n            <returns>A representation of the properties of this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.Type\">\r\n            <summary>\n            Gets or sets the type for the plugin.\n            </summary>\n            <value>\n            The type for the plugin.\n            </value>\n            <remarks>\n            <para>\n            The type for the plugin.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.TypeName\">\r\n            <summary>\r\n            Gets or sets the type name for the plugin.\r\n            </summary>\r\n            <value>\r\n            The type name for the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name for the plugin.\r\n            </para>\r\n            <para>\r\n            Where possible use the <see cref=\"P:log4net.Config.PluginAttribute.Type\"/> property instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.SecurityContextProviderAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Construct provider attribute with type specified\r\n            </summary>\r\n            <param name=\"providerType\">the type of the provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the SecurityContextProvider\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a provider instance from the <see cref=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\"/> specified.\r\n            Sets this as the default security context provider <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.SecurityContextProviderAttribute.declaringType\">\r\n            <summary>\n            The fully qualified type of the SecurityContextProviderAttribute class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\">\r\n            <summary>\r\n            Gets or sets the type of the provider to use.\r\n            </summary>\r\n            <value>\r\n            the type of the provider to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.#ctor\">\r\n            <summary>\n            Private constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure\">\r\n            <summary>\r\n            Automatically configures the log4net system based on the \r\n            application's configuration settings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Configures log4net using a <c>log4net</c> element\n            </summary>\n            <remarks>\n            <para>\n            Loads the log4net configuration from the XML element\n            supplied as <paramref name=\"element\"/>.\n            </para>\n            </remarks>\n            <param name=\"element\">The element to parse.</param>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Uri)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration URI.\r\n            </summary>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\n            Configures log4net using the specified configuration data stream.\n            </summary>\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\n            <remarks>\n            <para>\n            The configuration data must be valid XML. It must contain\n            at least one element called <c>log4net</c> that holds\n            the log4net configuration data.\n            </para>\n            <para>\n            Note that this method will NOT close the stream parameter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Uri)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            URI.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.InternalConfigureFromXml(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the specified repository using a <c>log4net</c> element.\r\n            </summary>\r\n            <param name=\"repository\">The hierarchy to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </para>\r\n            <para>\r\n            This method is ultimately called by one of the Configure methods \r\n            to load the configuration from an <see cref=\"T:System.Xml.XmlElement\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.m_repositoryName2ConfigAndWatchHandler\">\r\n            <summary>\n            Maps repository names to ConfigAndWatchHandler instances to allow a particular\n            ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is \n            reconfigured.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.declaringType\">\r\n            <summary>\n            The fully qualified type of the XmlConfigurator class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\">\r\n            <summary>\r\n            Class used to watch config files.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"T:System.IO.FileSystemWatcher\"/> to monitor\r\n            changes to a specified file. Because multiple change notifications\r\n            may be raised when the file is modified, a timer is used to\r\n            compress the notifications into a single event. The timer\r\n            waits for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> time before delivering\r\n            the event notification. If any further <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            change notifications arrive while the timer is waiting it\r\n            is reset and waits again for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> to\r\n            elapse.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\">\r\n            <summary>\n            The default amount of time to wait after receiving notification\n            before reloading the config file.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_configFile\">\r\n            <summary>\n            Holds the FileInfo used to configure the XmlConfigurator\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_repository\">\r\n            <summary>\n            Holds the repository being configured.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_timer\">\r\n            <summary>\n            The timer used to compress the notification events.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_watcher\">\r\n            <summary>\n            Watches file for changes. This object should be disposed when no longer\n            needed to free system handles on the watched resources.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.#ctor(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class to\r\n            watch a specified config file used to configure a repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The configuration file to watch.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnChanged(System.Object,System.IO.FileSystemEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnRenamed(System.Object,System.IO.RenamedEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.OnWatchedFileChange(System.Object)\">\r\n            <summary>\n            Called by the timer when the configuration has been updated.\n            </summary>\n            <param name=\"state\">null</param>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.Dispose\">\r\n            <summary>\n            Release the handles held by the watcher and timer.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.CompactRepositorySelector\">\r\n            <summary>\r\n            The implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface suitable\r\n            for use with the compact framework\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.IRepositorySelector\"/> implementation is a simple\r\n            mapping between repository name and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            object.\r\n            </para>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not support retrieving assembly\r\n            level attributes therefore unlike the <c>DefaultRepositorySelector</c>\r\n            this selector does not examine the calling assembly for attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IRepositorySelector\">\r\n            <summary>\r\n            Interface used by the <see cref=\"T:log4net.LogManager\"/> to select the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.LogManager\"/> uses a <see cref=\"T:log4net.Core.IRepositorySelector\"/> \r\n            to specify the policy for selecting the correct <see cref=\"T:log4net.Repository.ILoggerRepository\"/> \r\n            to return to the caller.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association. The results of this method must be repeatable, i.e.\r\n            when called again with the same arguments the result must be the\r\n            save value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            Lookup a named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. This is the repository created by\r\n            calling <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to create the domain to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the domain\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository with the name specified.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the name\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same name will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>\r\n            An array of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instances created by \r\n            this <see cref=\"T:log4net.Core.IRepositorySelector\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new repository selector\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">the type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new compact repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"defaultRepositoryType\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">throw if <paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Get the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly\r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <param name=\"repositoryName\">the name of the repository to lookup</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The default \r\n            repository is <c>log4net-default-repository</c>. Other repositories \r\n            must be created using the <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            If the named repository does not exist an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> does not exist</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"repositoryType\"/> is <c>null</c> then the\r\n            default repository type specified to the constructor is used.\r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the repository specified\r\n            </summary>\r\n            <param name=\"repositoryName\">the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is null then the default repository type is used.</param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            If the named repository already exists an exception will be thrown.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"repositoryType\"/> is <c>null</c> then the default \r\n            repository type specified to the constructor is used.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> already exists</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.CompactRepositorySelector.declaringType\">\r\n            <summary>\n            The fully qualified type of the CompactRepositorySelector class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has been created\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <event cref=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">LoggerRepositoryCreatedEvent</event>\r\n            event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.DefaultRepositorySelector\">\r\n            <summary>\r\n            The default implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses attributes defined on the calling assembly to determine how to\r\n            configure the hierarchy for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Creates a new repository selector.\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">The type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"defaultRepositoryType\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\"><paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and the repository \r\n            to create can be overridden by specifying the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> \r\n            attribute on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            The default values are to use the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> \r\n            implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically configured using \r\n            any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> attributes defined on\r\n            the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the named repository. If <paramref name=\"repositoryName\"/> is <c>null</c>\r\n            a <see cref=\"T:System.ArgumentNullException\"/> is thrown. If the repository \r\n            does not exist a <see cref=\"T:log4net.Core.LogException\"/> is thrown.\r\n            </para>\r\n            <para>\r\n            Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/> to create a repository.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> does not exist.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type,System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryName\">The name to assign to the created repository</param>\r\n            <param name=\"readAssemblyAttributes\">Set to <c>true</c> to read and apply the assembly attributes</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is <see langword=\"null\"/> then the default repository type is used.</param>\r\n            <returns>The new repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.AliasRepository(System.String,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Aliases a repository to an existing repository.\r\n            </summary>\r\n            <param name=\"repositoryAlias\">The repository to alias.</param>\r\n            <param name=\"repositoryTarget\">The repository that the repository is aliased to.</param>\r\n            <remarks>\r\n            <para>\r\n            The repository specified will be aliased to the repository when created. \r\n            The repository must not already exist.\r\n            </para>\r\n            <para>\r\n            When the repository is created it must utilize the same repository type as \r\n            the repository it is aliased to, otherwise the aliasing will fail.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"repositoryAlias\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repositoryTarget\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notifies the registered listeners that the repository has been created.\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <see cref=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetInfoForAssembly(System.Reflection.Assembly,System.String@,System.Type@)\">\r\n            <summary>\r\n            Gets the repository name and repository type for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that has a <see cref=\"T:log4net.Config.RepositoryAttribute\"/>.</param>\r\n            <param name=\"repositoryName\">in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.</param>\r\n            <param name=\"repositoryType\">in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ConfigureRepository(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the repository using information from the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly containing <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/>\r\n            attributes which define the configuration for the repository.</param>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadPlugins(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined plugins on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to add the plugins to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadAliases(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined aliases on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to alias to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Core.DefaultRepositorySelector.declaringType\">\r\n            <summary>\n            The fully qualified type of the DefaultRepositorySelector class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ErrorCode\">\r\n            <summary>\r\n            Defined error codes that can be passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Values passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.GenericFailure\">\r\n            <summary>\n            A general error\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.WriteFailure\">\r\n            <summary>\n            Error while writing output\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FlushFailure\">\r\n            <summary>\n            Failed to flush file\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.CloseFailure\">\r\n            <summary>\n            Failed to close file\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FileOpenFailure\">\r\n            <summary>\n            Unable to open output file\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.MissingLayout\">\r\n            <summary>\n            No layout specified\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.AddressParseFailure\">\r\n            <summary>\n            Failed to parse address\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.ExceptionEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers on an Exception type\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the type of the Exception\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to a Type in <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.    /// \r\n            </para>\r\n            </remarks>\r\n            <author>Drew Schaeffer</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ITriggeringEventEvaluator\">\r\n            <summary>\r\n            Test if an <see cref=\"T:log4net.Core.LoggingEvent\"/> triggers an action\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementations of this interface allow certain appenders to decide\r\n            when to perform an appender specific action.\r\n            </para>\r\n            <para>\r\n            The action or behavior triggered is defined by the implementation.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ITriggeringEventEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Test if this event triggers the action\n            </summary>\n            <param name=\"loggingEvent\">The event to check</param>\n            <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns>\n            <remarks>\n            <para>\n            Return <c>true</c> if this event triggers the action\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_type\">\r\n            <summary>\n            The type that causes the trigger to fire.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_triggerOnSubclass\">\r\n            <summary>\r\n            Causes subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/> to cause the trigger to fire.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor\">\r\n            <summary>\n            Default ctor to allow dynamic creation through a configurator.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor(System.Type,System.Boolean)\">\r\n            <summary>\r\n            Constructs an evaluator and initializes to trigger on <paramref name=\"exType\"/>\r\n            </summary>\r\n            <param name=\"exType\">the type that triggers this evaluator.</param>\r\n            <param name=\"triggerOnSubClass\">If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the logging event Exception \r\n            Type is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the Exception Type of the event\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\">\r\n            <summary>\n            The type that triggers this evaluator.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.TriggerOnSubclass\">\r\n            <summary>\r\n            If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IErrorHandler\">\r\n            <summary>\r\n            Appenders may delegate their error handling to an <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Error handling is a particularly tedious to get right because by\r\n            definition errors are hard to predict and to reproduce. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <param name=\"errorCode\">The error code associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IFixingRequired\">\r\n            <summary>\r\n            Interface for objects that require fixing.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface that indicates that the object requires fixing before it\r\n            can be taken outside the context of the appender's \r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            When objects that implement this interface are stored \r\n            in the context properties maps <see cref=\"T:log4net.GlobalContext\"/>\r\n            <see cref=\"P:log4net.GlobalContext.Properties\"/> and <see cref=\"T:log4net.ThreadContext\"/>\r\n            <see cref=\"P:log4net.ThreadContext.Properties\"/> are fixed \r\n            (see <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>) the <see cref=\"M:log4net.Core.IFixingRequired.GetFixedObject\"/>\r\n            method will be called.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IFixingRequired.GetFixedObject\">\r\n            <summary>\n            Get a portable version of this object\n            </summary>\n            <returns>the portable instance of this object</returns>\n            <remarks>\n            <para>\n            Get a portable instance object that represents the current\n            state of this object. The portable object can be stored\n            and logged from any thread with identical results.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.ILogger\">\r\n            <summary>\n            Interface that all loggers implement\n            </summary>\n            <remarks>\n            <para>\n            This interface supports logging events and testing if a level\n            is enabled for logging.\n            </para>\n            <para>\n            These methods will not throw exceptions. Note to implementor, ensure\n            that the implementation of these methods cannot allow an exception\n            to be thrown to the caller.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\n            This generic form is intended to be used by wrappers.\n            </summary>\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\n            the stack boundary into the logging system for this call.</param>\n            <param name=\"level\">The level of the message to be logged.</param>\n            <param name=\"message\">The message object to log.</param>\n            <param name=\"exception\">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>\n            <remarks>\n            <para>\n            Generates a logging event for the specified <paramref name=\"level\"/> using\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            This is the most generic printing method that is intended to be used \n            by wrappers.\n            </summary>\n            <param name=\"logEvent\">The event being logged.</param>\n            <remarks>\n            <para>\n            Logs the specified logging event through this logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"T:log4net.Core.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Name\">\r\n            <summary>\n            Gets the name of the logger.\n            </summary>\n            <value>\n            The name of the logger.\n            </value>\n            <remarks>\n            <para>\n            The name of this logger\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ILoggerWrapper\">\r\n            <summary>\n            Base interface for all wrappers\n            </summary>\n            <remarks>\n            <para>\n            Base interface for all wrappers.\n            </para>\n            <para>\n            All wrappers must implement this interface.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"P:log4net.Core.ILoggerWrapper.Logger\">\r\n            <summary>\r\n            Get the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this object.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this\r\n            object. The <c>Logger</c> object may not \r\n            be the same object as this object because of logger decorators.\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository creation event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Core.IRepositorySelector\"/> which created the repository.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> event args\r\n            that holds the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> \r\n            event is raised every time a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerRepositoryCreationEventArgs.m_repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerRepositoryCreationEventArgs.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </summary>\r\n            <param name=\"repository\">the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerRepositoryCreationEventArgs.LoggerRepository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.Level\">\r\n            <summary>\r\n            Defines the default set of levels recognized by the system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each <see cref=\"T:log4net.Core.LoggingEvent\"/> has an associated <see cref=\"T:log4net.Core.Level\"/>.\r\n            </para>\r\n            <para>\r\n            Levels have a numeric <see cref=\"P:log4net.Core.Level.Value\"/> that defines the relative \r\n            ordering between levels. Two Levels with the same <see cref=\"P:log4net.Core.Level.Value\"/> \r\n            are deemed to be equivalent.\r\n            </para>\r\n            <para>\r\n            The levels that are recognized by log4net are set for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and each repository can have different levels defined. The levels are stored\r\n            in the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> on the repository. Levels are\r\n            looked up by name from the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>.\r\n            </para>\r\n            <para>\r\n            When logging at level INFO the actual level used is not <see cref=\"F:log4net.Core.Level.Info\"/> but\r\n            the value of <c>LoggerRepository.LevelMap[\"INFO\"]</c>. The default value for this is\r\n            <see cref=\"F:log4net.Core.Level.Info\"/>, but this can be changed by reconfiguring the level map.\r\n            </para>\r\n            <para>\r\n            Each level has a <see cref=\"P:log4net.Core.Level.DisplayName\"/> in addition to its <see cref=\"P:log4net.Core.Level.Name\"/>. The \r\n            <see cref=\"P:log4net.Core.Level.DisplayName\"/> is the string that is written into the output log. By default\r\n            the display name is the same as the level name, but this can be used to alias levels\r\n            or to localize the log output.\r\n            </para>\r\n            <para>\r\n            Some of the predefined levels recognized by the system are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Off\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Fatal\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Error\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Warn\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Info\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Debug\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.All\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <param name=\"displayName\">The display name for this level. This may be localized or otherwise different from the name</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.ToString\">\r\n            <summary>\r\n            Returns the <see cref=\"T:System.String\"/> representation of the current \r\n            <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <returns>\r\n            A <see cref=\"T:System.String\"/> representation of the current <see cref=\"T:log4net.Core.Level\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the level <see cref=\"P:log4net.Core.Level.Name\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Equals(System.Object)\">\r\n            <summary>\r\n            Compares levels.\r\n            </summary>\r\n            <param name=\"o\">The object to compare against.</param>\r\n            <returns><c>true</c> if the objects are equal.</returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the levels of <see cref=\"T:log4net.Core.Level\"/> instances, and \r\n            defers to base class if the target object is not a <see cref=\"T:log4net.Core.Level\"/>\r\n            instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.GetHashCode\">\r\n            <summary>\r\n            Returns a hash code\r\n            </summary>\r\n            <returns>A hash code for the current <see cref=\"T:log4net.Core.Level\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a hash code suitable for use in hashing algorithms and data \r\n            structures like a hash table.\r\n            </para>\r\n            <para>\r\n            Returns the hash code of the level <see cref=\"P:log4net.Core.Level.Value\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compares this instance to a specified object and returns an \r\n            indication of their relative values.\r\n            </summary>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> instance or <see langword=\"null\"/> to compare with this instance.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description>This instance is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description>This instance is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description>\r\n            \t\t\t<para>This instance is greater than <paramref name=\"r\"/>.</para>\r\n            \t\t\t<para>-or-</para>\r\n            \t\t\t<para><paramref name=\"r\"/> is <see langword=\"null\"/>.</para>\r\n            \t\t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <paramref name=\"r\"/> must be an instance of <see cref=\"T:log4net.Core.Level\"/> \r\n            or <see langword=\"null\"/>; otherwise, an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\"><paramref name=\"r\"/> is not a <see cref=\"T:log4net.Core.Level\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Equality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have the same value.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is the same as the \r\n            value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Inequality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have different values.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is different from\r\n            the value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Compare(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Compares two specified <see cref=\"T:log4net.Core.Level\"/> instances.\r\n            </summary>\r\n            <param name=\"l\">The first <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <param name=\"r\">The second <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            two values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is greater than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Off\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Off\"/> level designates a higher level than all the rest.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Log4Net_Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Emergency\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fatal\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fatal\"/> level designates very severe error events \r\n            that will presumably lead the application to abort.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Alert\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Alert\"/> level designates very severe error events. \r\n            Take immediate action, alerts.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Critical\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Critical\"/> level designates very severe error events. \r\n            Critical condition, critical.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Severe\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Severe\"/> level designates very severe error events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Error\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Error\"/> level designates error events that might \r\n            still allow the application to continue running.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Warn\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Warn\"/> level designates potentially harmful \r\n            situations.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Notice\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Notice\"/> level designates informational messages \r\n            that highlight the progress of the application at the highest level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Info\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Info\"/> level designates informational messages that \r\n            highlight the progress of the application at coarse-grained level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Debug\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fine\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fine\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Trace\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Trace\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finer\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finer\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Verbose\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Verbose\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finest\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finest\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.All\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.All\"/> level designates the lowest level possible.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Name\">\r\n            <summary>\n            Gets the name of this level.\n            </summary>\n            <value>\n            The name of this level.\n            </value>\n            <remarks>\n            <para>\n            Gets the name of this level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Value\">\r\n            <summary>\n            Gets the value of this level.\n            </summary>\n            <value>\n            The value of this level.\n            </value>\n            <remarks>\n            <para>\n            Gets the value of this level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.Level.DisplayName\">\r\n            <summary>\n            Gets the display name of this level.\n            </summary>\n            <value>\n            The display name of this level.\n            </value>\n            <remarks>\n            <para>\n            Gets the display name of this level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Core.Level\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ReadOnly(log4net.Core.LevelCollection)\">\r\n            <summary>\n            Creates a read-only wrapper for a <c>LevelCollection</c> instance.\n            </summary>\n            <param name=\"list\">list to create a readonly wrapper arround</param>\n            <returns>\n            A <c>LevelCollection</c> wrapper that is read-only.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor\">\r\n            <summary>\n            Initializes a new instance of the <c>LevelCollection</c> class\n            that is empty and has the default initial capacity.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Int32)\">\r\n            <summary>\n            Initializes a new instance of the <c>LevelCollection</c> class\n            that has the specified initial capacity.\n            </summary>\n            <param name=\"capacity\">\n            The number of elements that the new <c>LevelCollection</c> is initially capable of storing.\n            </param>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>LevelCollection</c> class\n            that contains elements copied from the specified <c>LevelCollection</c>.\n            </summary>\n            <param name=\"c\">The <c>LevelCollection</c> whose elements are copied to the new collection.</param>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.Level[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection.Tag)\">\r\n            <summary>\n            Allow subclasses to avoid our default constructors\n            </summary>\n            <param name=\"tag\"></param>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[])\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Add(log4net.Core.Level)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Core.Level\"/> to the end of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clear\">\r\n            <summary>\n            Removes all elements from the <c>LevelCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Core.LevelCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Contains(log4net.Core.Level)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Core.Level\"/> is in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>LevelCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.IndexOf(log4net.Core.Level)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Core.Level\"/>\r\n            in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to locate in the <c>LevelCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>LevelCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Insert(System.Int32,log4net.Core.Level)\">\r\n            <summary>\r\n            Inserts an element into the <c>LevelCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Remove(log4net.Core.Level)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Core.Level\"/> from the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to remove from the <c>LevelCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Core.Level\"/> was not found in the <c>LevelCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>LevelCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Core.LevelCollection.Enumerator\"/> for the entire <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>LevelCollection</c> to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>LevelCollection</c> whose elements should be added to the end of the current <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.Level[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> array to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> collection to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.TrimToSize\">\r\n            <summary>\n            Sets the capacity to the actual number of elements.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Count\">\r\n            <summary>\n            Gets the number of elements actually contained in the <c>LevelCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsSynchronized\">\r\n            <summary>\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\n            </summary>\n            <value>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</value>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.SyncRoot\">\r\n            <summary>\n            Gets an object that can be used to synchronize access to the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.Level\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsFixedSize\">\r\n            <summary>\n            Gets a value indicating whether the collection has a fixed size.\n            </summary>\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsReadOnly\">\r\n            <summary>\n            Gets a value indicating whether the IList is read-only.\n            </summary>\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Capacity\">\r\n            <summary>\n            Gets or sets the number of elements the <c>LevelCollection</c> can contain.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.ILevelCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Tag\">\r\n            <summary>\n            Type visible only to our subclasses\n            Used to access protected constructor\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LevelCollection.Tag.Default\">\r\n            <summary>\n            A value\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>Enumerator</c> class.\n            </summary>\n            <param name=\"tc\"></param>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Enumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers at a threshold level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelEvaluator.m_threshold\">\r\n            <summary>\n            The threshold for triggering\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </summary>\r\n            <param name=\"threshold\">the threshold to trigger at</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the event level\r\n            is equal or higher than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelEvaluator.Threshold\">\r\n            <summary>\r\n            the threshold to trigger at\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that will cause this evaluator to trigger\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelMap\">\r\n            <summary>\r\n            Mapping between string name and Level object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Mapping between string name and <see cref=\"T:log4net.Core.Level\"/> object.\r\n            This mapping is held separately for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The level name is case insensitive.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelMap.m_mapName2Level\">\r\n            <summary>\n            Mapping from level name to Level object. The\n            level name is case insensitive\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.#ctor\">\r\n            <summary>\n            Construct the level map\n            </summary>\n            <remarks>\n            <para>\n            Construct the level map.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Clear\">\r\n            <summary>\n            Clear the internal maps of all levels\n            </summary>\n            <remarks>\n            <para>\n            Clear the internal maps of all levels\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32)\">\r\n            <summary>\r\n            Create a new Level and add it to the map\r\n            </summary>\r\n            <param name=\"name\">the string to display for the Level</param>\r\n            <param name=\"value\">the level value to give to the Level</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new Level and add it to the map\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\">\r\n            <summary>\n            Create a new Level and add it to the map\n            </summary>\n            <param name=\"name\">the string to display for the Level</param>\n            <param name=\"value\">the level value to give to the Level</param>\n            <param name=\"displayName\">the display name to give to the Level</param>\n            <remarks>\n            <para>\n            Create a new Level and add it to the map\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(log4net.Core.Level)\">\r\n            <summary>\n            Add a Level to the map\n            </summary>\n            <param name=\"level\">the Level to add</param>\n            <remarks>\n            <para>\n            Add a Level to the map\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.LookupWithDefault(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup a named level from the map\r\n            </summary>\r\n            <param name=\"defaultLevel\">the name of the level to lookup is taken from this level. \r\n            If the level is not set on the map then this level is added</param>\r\n            <returns>the level in the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a named level from the map. The name of the level to lookup is taken\r\n            from the <see cref=\"P:log4net.Core.Level.Name\"/> property of the <paramref name=\"defaultLevel\"/>\r\n            argument.\r\n            </para>\r\n            <para>\r\n            If no level with the specified name is found then the \r\n            <paramref name=\"defaultLevel\"/> argument is added to the level map\r\n            and returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.Item(System.String)\">\r\n            <summary>\r\n            Lookup a <see cref=\"T:log4net.Core.Level\"/> by name\r\n            </summary>\r\n            <param name=\"name\">The name of the Level to lookup</param>\r\n            <returns>a Level from the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:log4net.Core.Level\"/> from the\r\n            map with the name specified. If the no level is\r\n            found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.AllLevels\">\r\n            <summary>\n            Return all possible levels as a list of Level objects.\n            </summary>\n            <returns>all possible levels as a list of Level objects</returns>\n            <remarks>\n            <para>\n            Return all possible levels as a list of Level objects.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.LocationInfo\">\r\n            <summary>\n            The internal representation of caller location information.\n            </summary>\n            <remarks>\n            <para>\n            This class uses the <c>System.Diagnostics.StackTrace</c> class to generate\n            a call stack. The caller's information is then extracted from this stack.\n            </para>\n            <para>\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \n            .NET Compact Framework 1.0 therefore caller location information is not\n            available on that framework.\n            </para>\n            <para>\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\n            </para>\n            <para>\n            \"StackTrace information will be most informative with Debug build configurations. \n            By default, Debug builds include debug symbols, while Release builds do not. The \n            debug symbols contain most of the file, method name, line number, and column \n            information used in constructing StackFrame and StackTrace objects. StackTrace \n            might not report as many method calls as expected, due to code transformations \n            that occur during optimization.\"\n            </para>\n            <para>\n            This means that in a Release build the caller information may be incomplete or may \n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.NA\">\r\n            <summary>\n            When location information is not available the constant\n            <c>NA</c> is returned. Current value of this string\n            constant is <b>?</b>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.Type)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class based on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.String,System.String,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"className\">The fully qualified class name.</param>\r\n            <param name=\"methodName\">The method name.</param>\r\n            <param name=\"fileName\">The file name.</param>\r\n            <param name=\"lineNumber\">The line number of the method within the file.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class with the specified data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.declaringType\">\r\n            <summary>\n            The fully qualified type of the LocationInfo class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.ClassName\">\r\n            <summary>\n            Gets the fully qualified class name of the caller making the logging \n            request.\n            </summary>\n            <value>\n            The fully qualified class name of the caller making the logging \n            request.\n            </value>\n            <remarks>\n            <para>\n            Gets the fully qualified class name of the caller making the logging \n            request.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FileName\">\r\n            <summary>\n            Gets the file name of the caller.\n            </summary>\n            <value>\n            The file name of the caller.\n            </value>\n            <remarks>\n            <para>\n            Gets the file name of the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.LineNumber\">\r\n            <summary>\n            Gets the line number of the caller.\n            </summary>\n            <value>\n            The line number of the caller.\n            </value>\n            <remarks>\n            <para>\n            Gets the line number of the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.MethodName\">\r\n            <summary>\n            Gets the method name of the caller.\n            </summary>\n            <value>\n            The method name of the caller.\n            </value>\n            <remarks>\n            <para>\n            Gets the method name of the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FullInfo\">\r\n            <summary>\n            Gets all available caller information\n            </summary>\n            <value>\n            All available caller information, in the format\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\n            </value>\n            <remarks>\n            <para>\n            Gets all available caller information, in the format\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.StackFrames\">\r\n            <summary>\n            Gets the stack frames from the stack trace of the caller making the log request\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerManager\">\r\n            <summary>\r\n            Static manager that controls the creation of repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Static manager that controls the creation of repositories\r\n            </para>\r\n            <para>\r\n            This class is used by the wrapper managers (e.g. <see cref=\"T:log4net.LogManager\"/>)\r\n            to provide access to the <see cref=\"T:log4net.Core.ILogger\"/> objects.\r\n            </para>\r\n            <para>\r\n            This manager also holds the <see cref=\"T:log4net.Core.IRepositorySelector\"/> that is used to\r\n            lookup and create repositories. The selector can be set either programmatically using\r\n            the <see cref=\"P:log4net.Core.LoggerManager.RepositorySelector\"/> property, or by setting the <c>log4net.RepositorySelector</c>\r\n            AppSetting in the applications config file to the fully qualified type name of the\r\n            selector to use. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#ctor\">\r\n            <summary>\n            Private constructor to prevent instances. Only static methods should be used.\n            </summary>\n            <remarks>\n            <para>\n            Private constructor to prevent instances. Only static methods should be used.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#cctor\">\r\n            <summary>\n            Hook the shutdown event\n            </summary>\n            <remarks>\n            <para>\n            On the full .NET runtime, the static constructor hooks up the \n            <c>AppDomain.ProcessExit</c> and <c>AppDomain.DomainUnload</c>> events. \n            These are used to shutdown the log4net system as the application exits.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.RegisterAppDomainEvents\">\r\n            <summary>\n            Register for ProcessExit and DomainUnload events on the AppDomain\n            </summary>\n            <remarks>\n            <para>\n            This needs to be in a separate method because the events make\n            a LinkDemand for the ControlAppDomain SecurityPermission. Because\n            this is a LinkDemand it is demanded at JIT time. Therefore we cannot\n            catch the exception in the method itself, we have to catch it in the\n            caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.String,System.String)\">\r\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>\n            The logger found, or <c>null</c> if the named logger does not exist in the\n            specified repository.\n            </returns>\n            <remarks>\n            <para>\n            If the named logger exists (in the specified repository) then it\n            returns a reference to the logger, otherwise it returns\n            <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>\n            The logger found, or <c>null</c> if the named logger does not exist in the\n            specified assembly's repository.\n            </returns>\n            <remarks>\n            <para>\n            If the named logger exists (in the specified assembly's repository) then it\n            returns a reference to the logger, otherwise it returns\n            <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\n            Returns all the currently defined loggers in the specified repository.\n            </summary>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <returns>All the defined loggers.</returns>\n            <remarks>\n            <para>\n            The root logger is <b>not</b> included in the returned array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\n            Returns all the currently defined loggers in the specified assembly's repository.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <returns>All the defined loggers.</returns>\n            <remarks>\n            <para>\n            The root logger is <b>not</b> included in the returned array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.String)\">\r\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n            <remarks>\n            <para>\n            Retrieves a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>\n            By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n            <remarks>\n            <para>\n            Retrieves a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>\n            By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to lookup the repository</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Shutdown\">\r\n            <summary>\n            Shuts down the log4net system.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in all the\n            default repositories.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>\n            The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.String)\">\r\n            <summary>\n            Shuts down the repository for the repository specified.\n            </summary>\n            <param name=\"repository\">The repository to shutdown.</param>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            repository for the <paramref name=\"repository\"/> specified.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>\n            The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\n            Shuts down the repository for the repository specified.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            repository for the repository. The repository is looked up using\n            the <paramref name=\"repositoryAssembly\"/> specified.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>\n            The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all currently defined repositories.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetVersionInfo\">\r\n            <summary>\n            Internal method to get pertinent version info.\n            </summary>\n            <returns>A string of version info.</returns>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnDomainUnload(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"F:System.AppDomain.DomainUnload\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"F:System.AppDomain.DomainUnload\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnProcessExit(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"F:System.AppDomain.ProcessExit\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"F:System.AppDomain.ProcessExit\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.declaringType\">\r\n            <summary>\n            The fully qualified type of the LoggerManager class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.s_repositorySelector\">\r\n            <summary>\n            Initialize the default repository selector\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerManager.RepositorySelector\">\r\n            <summary>\r\n            Gets or sets the repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </summary>\r\n            <value>\r\n            The repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The repository selector (<see cref=\"T:log4net.Core.IRepositorySelector\"/>) is used by \r\n            the <see cref=\"T:log4net.LogManager\"/> to create and select repositories \r\n            (<see cref=\"T:log4net.Repository.ILoggerRepository\"/>).\r\n            </para>\r\n            <para>\r\n            The caller to <see cref=\"T:log4net.LogManager\"/> supplies either a string name \r\n            or an assembly (if not supplied the assembly is inferred using \r\n            <see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            <para>\r\n            This context is used by the selector to lookup a specific repository.\r\n            </para>\r\n            <para>\r\n            For the full .NET Framework, the default repository is <c>DefaultRepositorySelector</c>;\r\n            for the .NET Compact Framework <c>CompactRepositorySelector</c> is the default\r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerWrapperImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class should be used as the base for all wrapper implementations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerWrapperImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\n            Constructs a new wrapper for the specified logger.\n            </summary>\n            <param name=\"logger\">The logger to wrap.</param>\n            <remarks>\n            <para>\n            Constructs a new wrapper for the specified logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerWrapperImpl.m_logger\">\r\n            <summary>\n            The logger that this object is wrapping\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerWrapperImpl.Logger\">\r\n            <summary>\r\n            Gets the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that this object is implementing.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>Logger</c> object may not be the same object as this object \r\n            because of logger decorators.\r\n            </para>\r\n            <para>\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEventData\">\r\n            <summary>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LoggerName\">\r\n            <summary>\n            The logger name.\n            </summary>\n            <remarks>\n            <para>\n            The logger name.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Level\">\r\n            <summary>\n            Level of logging event.\n            </summary>\n            <remarks>\n            <para>\n            Level of logging event. Level cannot be Serializable\n            because it is a flyweight.  Due to its special serialization it\n            cannot be declared final either.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Message\">\r\n            <summary>\n            The application supplied message.\n            </summary>\n            <remarks>\n            <para>\n            The application supplied message of logging event.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ThreadName\">\r\n            <summary>\n            The name of thread\n            </summary>\n            <remarks>\n            <para>\n            The name of thread in which this logging event was generated\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.TimeStamp\">\r\n            <summary>\n            The time the event was logged\n            </summary>\n            <remarks>\n            <para>\n            The TimeStamp is stored in the local time zone for this computer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LocationInfo\">\r\n            <summary>\n            Location information for the caller.\n            </summary>\n            <remarks>\n            <para>\n            Location information for the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.UserName\">\r\n            <summary>\n            String representation of the user\n            </summary>\n            <remarks>\n            <para>\n            String representation of the user's windows name,\n            like DOMAIN\\username\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Identity\">\r\n            <summary>\n            String representation of the identity.\n            </summary>\n            <remarks>\n            <para>\n            String representation of the current thread's principal identity.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ExceptionString\">\r\n            <summary>\n            The string representation of the exception\n            </summary>\n            <remarks>\n            <para>\n            The string representation of the exception\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Domain\">\r\n            <summary>\n            String representation of the AppDomain.\n            </summary>\n            <remarks>\n            <para>\n            String representation of the AppDomain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Properties\">\r\n            <summary>\n            Additional event specific properties\n            </summary>\n            <remarks>\n            <para>\n            A logger or an appender may attach additional\n            properties to specific events. These properties\n            have a string key and an object value.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.FixFlags\">\r\n            <summary>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Mdc\">\r\n            <summary>\n            Fix the MDC\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Ndc\">\r\n            <summary>\n            Fix the NDC\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Message\">\r\n            <summary>\n            Fix the rendered message\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.ThreadName\">\r\n            <summary>\n            Fix the thread name\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.LocationInfo\">\r\n            <summary>\n            Fix the callers location information\n            </summary>\n            <remarks>\n            CAUTION: Very slow to generate\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.UserName\">\r\n            <summary>\n            Fix the callers windows user name\n            </summary>\n            <remarks>\n            CAUTION: Slow to generate\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Domain\">\r\n            <summary>\n            Fix the domain friendly name\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Identity\">\r\n            <summary>\n            Fix the callers principal name\n            </summary>\n            <remarks>\n            CAUTION: May be slow to generate\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Exception\">\r\n            <summary>\n            Fix the exception text\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Properties\">\r\n            <summary>\r\n            Fix the event properties. Active properties must implement <see cref=\"T:log4net.Core.IFixingRequired\"/> in order to be eligible for fixing.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.None\">\r\n            <summary>\n            No fields fixed\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.All\">\r\n            <summary>\n            All fields fixed\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Partial\">\r\n            <summary>\r\n            Partial fields fixed\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This set of partial fields gives good performance. The following fields are fixed:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Message\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.ThreadName\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Exception\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Domain\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Properties\"/></description></item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEvent\">\r\n            <summary>\r\n            The internal representation of logging events. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            When an affirmative decision is made to log then a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> instance is created. This instance \r\n            is passed around to the different log4net components.\r\n            </para>\r\n            <para>\r\n            This class is of concern to those wishing to extend log4net.\r\n            </para>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.HostNameProperty\">\r\n            <summary>\n            The key into the Properties map for the host name value.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.IdentityProperty\">\r\n            <summary>\n            The key into the Properties map for the thread identity value.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.UserNameProperty\">\r\n            <summary>\n            The key into the Properties map for the user name value.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,System.String,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class\r\n            from the supplied parameters.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"loggerName\">The name of the logger of this event.</param>\r\n            <param name=\"level\">The level of this event.</param>\r\n            <param name=\"message\">The message of this event.</param>\r\n            <param name=\"exception\">The exception for this event.</param>\r\n            <remarks>\r\n            <para>\r\n            Except <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>, <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> and <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/>, \r\n            all fields of <c>LoggingEvent</c> are filled when actually needed. Call\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> to cache all data locally\r\n            to prevent inconsistencies.\r\n            </para>\r\n            <para>This method is called by the log4net framework\r\n            to create a logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData,log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <param name=\"fixedData\">The fields in the <paranref name=\"data\"/> struct that have already been fixed.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fixedData\"/> parameter should be used to specify which fields in the\r\n            <paramref name=\"data\"/> struct have been preset. Fields not specified in the <paramref name=\"fixedData\"/>\r\n            will be captured from the environment if requested or fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.EnsureRepository(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\n            Ensure that the repository is set.\n            </summary>\n            <param name=\"repository\">the value for the repository</param>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\">\r\n            <summary>\r\n            Write the rendered message to a TextWriter\r\n            </summary>\r\n            <param name=\"writer\">the writer to write the message to</param>\r\n            <remarks>\r\n            <para>\r\n            Unlike the <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property this method\r\n            does store the message data in the internal cache. Therefore \r\n            if called only once this method should be faster than the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property, however if the message is\r\n            to be accessed multiple times then the property will be more efficient.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            The data in this event must be fixed before it can be serialized.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> method must be called during the\r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method call if this event \r\n            is to be used outside that method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            <para>\r\n            Does a <see cref=\"F:log4net.Core.FixFlags.Partial\"/> fix of the data\r\n            in the logging event before returning the event data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <param name=\"fixFlags\">The set of data to ensure is fixed in the LoggingEventData</param>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionStrRep\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <b>Obsolete. Use <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> instead.</b>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionString\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData\">\r\n            <summary>\r\n            Fix instance fields that hold volatile data.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            Calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> is equivalent to\r\n            calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> passing the parameter\r\n            <c>false</c>.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more\r\n            information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\">\r\n            <summary>\r\n            Fixes instance fields that hold volatile data.\r\n            </summary>\r\n            <param name=\"fastButLoose\">Set to <c>true</c> to not fix data that takes a long time to fix.</param>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fastButLoose\"/> param controls the data that\r\n            is fixed. Some of the data that can be fixed takes a long time to \r\n            generate, therefore if you do not require those settings to be fixed\r\n            they can be ignored by setting the <paramref name=\"fastButLoose\"/> param\r\n            to <c>true</c>. This setting will ignore the <see cref=\"P:log4net.Core.LoggingEvent.LocationInformation\"/>\r\n            and <see cref=\"P:log4net.Core.LoggingEvent.UserName\"/> settings.\r\n            </para>\r\n            <para>\r\n            Set <paramref name=\"fastButLoose\"/> to <c>false</c> to ensure that all \r\n            settings are fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Fix the fields specified by the <see cref=\"T:log4net.Core.FixFlags\"/> parameter\r\n            </summary>\r\n            <param name=\"flags\">the fields to fix</param>\r\n            <remarks>\r\n            <para>\r\n            Only fields specified in the <paramref name=\"flags\"/> will be fixed.\r\n            Fields will not be fixed if they have previously been fixed.\r\n            It is not possible to 'unfix' a field.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\">\r\n            <summary>\r\n            Lookup a composite property in this event\r\n            </summary>\r\n            <param name=\"key\">the key for the property to lookup</param>\r\n            <returns>the value for the property</returns>\r\n            <remarks>\r\n            <para>\r\n            This event has composite properties that combine together properties from\r\n            several different contexts in the following order:\r\n            <list type=\"definition\">\r\n            \t<item>\r\n            \t\t<term>this events properties</term>\r\n            \t\t<description>\r\n            \t\tThis event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\tproperties are specific to this event only.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the thread properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the global properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetProperties\">\r\n            <summary>\r\n            Get all the composite properties in this event\r\n            </summary>\r\n            <returns>the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the properties</returns>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/> for details of the composite properties \r\n            stored by the event.\r\n            </para>\r\n            <para>\r\n            This method returns a single <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the\r\n            properties defined for this event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_data\">\r\n            <summary>\n            The internal logging event data.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_compositeProperties\">\r\n            <summary>\n            The internal logging event data.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_eventProperties\">\r\n            <summary>\n            The internal logging event data.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_callerStackBoundaryDeclaringType\">\r\n            <summary>\n            The fully qualified Type of the calling \n            logger class in the stack frame (i.e. the declaring type of the method).\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_message\">\r\n            <summary>\n            The application supplied message of logging event.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_thrownException\">\r\n            <summary>\n            The exception that was thrown.\n            </summary>\n            <remarks>\n            This is not serialized. The string representation\n            is serialized instead.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_repository\">\r\n            <summary>\n            The repository that generated the logging event\n            </summary>\n            <remarks>\n            This is not serialized.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_fixFlags\">\r\n            <summary>\n            The fix state for this event\n            </summary>\n            <remarks>\n            These flags indicate which fields have been fixed.\n            Not serialized.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_cacheUpdatable\">\r\n            <summary>\n            Indicated that the internal cache is updateable (ie not fixed)\n            </summary>\n            <remarks>\n            This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler\n            changes in the caching strategy.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.StartTime\">\r\n            <summary>\n            Gets the time when the current process started.\n            </summary>\n            <value>\n            This is the time when this process started.\n            </value>\n            <remarks>\n            <para>\n            The TimeStamp is stored in the local time zone for this computer.\n            </para>\n            <para>\n            Tries to get the start time for the current process.\n            Failing that it returns the time of the first call to\n            this property.\n            </para>\n            <para>\n            Note that AppDomains may be loaded and unloaded within the\n            same process without the process terminating and therefore\n            without the process start time being reset.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Level\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.TimeStamp\">\r\n            <summary>\n            Gets the time of the logging event.\n            </summary>\n            <value>\n            The time of the logging event.\n            </value>\n            <remarks>\n            <para>\n            The TimeStamp is stored in the local time zone for this computer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LoggerName\">\r\n            <summary>\n            Gets the name of the logger that logged the event.\n            </summary>\n            <value>\n            The name of the logger that logged the event.\n            </value>\n            <remarks>\n            <para>\n            Gets the name of the logger that logged the event.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LocationInformation\">\r\n            <summary>\r\n            Gets the location information for this logging event.\r\n            </summary>\r\n            <value>\r\n            The location information for this logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Core.LocationInfo\"/> class for more information on\r\n            supported frameworks and the different behavior in Debug and\r\n            Release builds.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.MessageObject\">\r\n            <summary>\r\n            Gets the message object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The message object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the message object used to initialize this event.\r\n            Note that this event may not have a valid message object.\r\n            If the event is serialized the message object will not \r\n            be transferred. To get the text of the message the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined message object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ExceptionObject\">\r\n            <summary>\r\n            Gets the exception object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The exception object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the exception object used to initialize this event.\r\n            Note that this event may not have a valid exception object.\r\n            If the event is serialized the exception object will not \r\n            be transferred. To get the text of the exception the\r\n            <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> method must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined exception object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.RenderedMessage\">\r\n            <summary>\r\n            Gets the message, rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <value>\r\n            The message rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ThreadName\">\r\n            <summary>\n            Gets the name of the current thread.  \n            </summary>\n            <value>\n            The name of the current thread, or the thread ID when \n            the name is not available.\n            </value>\n            <remarks>\n            <para>\n            The collected information is cached for future use.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.UserName\">\r\n            <summary>\n            Gets the name of the current user.\n            </summary>\n            <value>\n            The name of the current user, or <c>NOT AVAILABLE</c> when the \n            underlying runtime has no support for retrieving the name of the \n            current user.\n            </value>\n            <remarks>\n            <para>\n            Calls <c>WindowsIdentity.GetCurrent().Name</c> to get the name of\n            the current windows user.\n            </para>\n            <para>\n            To improve performance, we could cache the string representation of \n            the name, and reuse that as long as the identity stayed constant.  \n            Once the identity changed, we would need to re-assign and re-render \n            the string.\n            </para>\n            <para>\n            However, the <c>WindowsIdentity.GetCurrent()</c> call seems to \n            return different objects every time, so the current implementation \n            doesn't do this type of caching.\n            </para>\n            <para>\n            Timing for these operations:\n            </para>\n            <list type=\"table\">\n              <listheader>\n                <term>Method</term>\n                <description>Results</description>\n              </listheader>\n              <item>\n                <term><c>WindowsIdentity.GetCurrent()</c></term>\n                <description>10000 loops, 00:00:00.2031250 seconds</description>\n              </item>\n              <item>\n                <term><c>WindowsIdentity.GetCurrent().Name</c></term>\n                <description>10000 loops, 00:00:08.0468750 seconds</description>\n              </item>\n            </list>\n            <para>\n            This means we could speed things up almost 40 times by caching the \n            value of the <c>WindowsIdentity.GetCurrent().Name</c> property, since \n            this takes (8.04-0.20) = 7.84375 seconds.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Identity\">\r\n            <summary>\n            Gets the identity of the current thread principal.\n            </summary>\n            <value>\n            The string name of the identity of the current thread principal.\n            </value>\n            <remarks>\n            <para>\n            Calls <c>System.Threading.Thread.CurrentPrincipal.Identity.Name</c> to get\n            the name of the current thread principal.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Domain\">\r\n            <summary>\n            Gets the AppDomain friendly name.\n            </summary>\n            <value>\n            The AppDomain friendly name.\n            </value>\n            <remarks>\n            <para>\n            Gets the AppDomain friendly name.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Properties\">\r\n            <summary>\r\n            Additional event specific properties.\r\n            </summary>\r\n            <value>\r\n            Additional event specific properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A logger or an appender may attach additional\r\n            properties to specific events. These properties\r\n            have a string key and an object value.\r\n            </para>\r\n            <para>\r\n            This property is for events that have been added directly to\r\n            this event. The aggregate properties (which include these\r\n            event properties) can be retrieved using <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/>\r\n            and <see cref=\"M:log4net.Core.LoggingEvent.GetProperties\"/>.\r\n            </para>\r\n            <para>\r\n            Once the properties have been fixed <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> this property\r\n            returns the combined cached properties. This ensures that updates to\r\n            this property are always reflected in the underlying storage. When\r\n            returning the combined properties there may be more keys in the\r\n            Dictionary than expected.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Fix\">\r\n            <summary>\n            The fixed fields in this event\n            </summary>\n            <value>\n            The set of fields that are fixed in this event\n            </value>\n            <remarks>\n            <para>\n            Fields will not be fixed if they have previously been fixed.\n            It is not possible to 'unfix' a field.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.LogImpl\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.ILog\"/> wrapper interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This implementation of the <see cref=\"T:log4net.ILog\"/> interface\r\n            forwards to the <see cref=\"T:log4net.Core.ILogger\"/> held by the base class.\r\n            </para>\r\n            <para>\r\n            This logger has methods to allow the caller to log at the following\r\n            levels:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <item>\r\n                <term>DEBUG</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>DEBUG</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Debug\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>INFO</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>INFO</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Info\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsInfoEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>WARN</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>WARN</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Warn\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsWarnEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>ERROR</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>ERROR</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Error\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsErrorEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>FATAL</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>FATAL</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Fatal\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsFatalEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n            </list>\r\n            <para>\r\n            The values for these levels and their semantic meanings can be changed by \r\n            configuring the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ILog\">\r\n            <summary>\r\n            The ILog interface is use by application to log messages into\r\n            the log4net framework.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use the <see cref=\"T:log4net.LogManager\"/> to obtain logger instances\r\n            that implement this interface. The <see cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            static method is used to get logger instances.\r\n            </para>\r\n            <para>\r\n            This class contains methods for logging at different levels and also\r\n            has properties for determining if those logging levels are\r\n            enabled in the current configuration.\r\n            </para>\r\n            <para>\r\n            This interface can be implemented in different ways. This documentation\r\n            specifies reasonable behavior that a caller can expect from the actual\r\n            implementation, however different implementations reserve the right to\r\n            do things differently.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <seealso cref=\"T:log4net.LogManager\"/>\r\n            <seealso cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Debug\"/> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Info\"/> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Warn\"/> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Error\"/> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Fatal\"/> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsDebugEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Debug\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This function is intended to lessen the computational cost of\r\n            disabled log debug statements.\r\n            </para>\r\n            <para> For some ILog interface <c>log</c>, when you write:</para>\r\n            <code lang=\"C#\">\r\n            log.Debug(\"This is entry number: \" + i );\r\n            </code>\r\n            <para>\r\n            You incur the cost constructing the message, string construction and concatenation in\r\n            this case, regardless of whether the message is logged or not.\r\n            </para>\r\n            <para>\r\n            If you are worried about speed (who isn't), then you should write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (log.IsDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way you will not incur the cost of parameter\r\n            construction if debugging is disabled for <c>log</c>. On\r\n            the other hand, if the <c>log</c> is debug enabled, you\r\n            will incur the cost of evaluating whether the logger is debug\r\n            enabled twice. Once in <see cref=\"P:log4net.ILog.IsDebugEnabled\"/> and once in\r\n            the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/>.  This is an insignificant overhead\r\n            since evaluating a logger takes about 1% of the time it\r\n            takes to actually log. This is the preferred style of logging.\r\n            </para>\r\n            <para>Alternatively if your logger is available statically then the is debug\r\n            enabled state can be stored in a static variable like this:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            private static readonly bool isDebugEnabled = log.IsDebugEnabled;\r\n            </code>\r\n            <para>\r\n            Then when you come to log you can write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (isDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way the debug enabled state is only queried once\r\n            when the class is loaded. Using a <c>private static readonly</c>\r\n            variable is the most efficient because it is a run time constant\r\n            and can be heavily optimized by the JIT compiler.\r\n            </para>\r\n            <para>\r\n            Of course if you use a static readonly variable to\r\n            hold the enabled state of the logger then you cannot\r\n            change the enabled state at runtime to vary the logging\r\n            that is produced. You have to decide if you need absolute\r\n            speed or runtime flexibility.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Info\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Warn\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Error\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Fatal\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\n            Construct a new wrapper for the specified logger.\n            </summary>\n            <param name=\"logger\">The logger to wrap.</param>\n            <remarks>\n            <para>\n            Construct a new wrapper for the specified logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ReloadLevels(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\n            Virtual method called when the configuration of the repository changes\n            </summary>\n            <param name=\"repository\">the repository holding the levels</param>\n            <remarks>\n            <para>\n            Virtual method called when the configuration of the repository changes\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>DEBUG</c> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>DEBUG</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> passed\r\n            as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>INFO</c> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"message\">the message object to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>WARN</c> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>WARN</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>ERROR</c> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>ERROR</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>FATAL</c> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>FATAL</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.LoggerRepositoryConfigurationChanged(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Event handler for the <see cref=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\"/> event\r\n            </summary>\r\n            <param name=\"sender\">the repository</param>\r\n            <param name=\"e\">Empty</param>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LogImpl.ThisDeclaringType\">\r\n            <summary>\n            The fully qualified name of this declaring type not the type of any subclass.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsDebugEnabled\">\r\n            <summary>\n            Checks if this logger is enabled for the <c>DEBUG</c>\n            level.\n            </summary>\n            <value>\n            <c>true</c> if this logger is enabled for <c>DEBUG</c> events,\n            <c>false</c> otherwise.\n            </value>\n            <remarks>\n            <para>\n            This function is intended to lessen the computational cost of\n            disabled log debug statements.\n            </para>\n            <para>\n            For some <c>log</c> Logger object, when you write:\n            </para>\n            <code lang=\"C#\">\n            log.Debug(\"This is entry number: \" + i );\n            </code>\n            <para>\n            You incur the cost constructing the message, concatenation in\n            this case, regardless of whether the message is logged or not.\n            </para>\n            <para>\n            If you are worried about speed, then you should write:\n            </para>\n            <code lang=\"C#\">\n            if (log.IsDebugEnabled())\n            { \n             log.Debug(\"This is entry number: \" + i );\n            }\n            </code>\n            <para>\n            This way you will not incur the cost of parameter\n            construction if debugging is disabled for <c>log</c>. On\n            the other hand, if the <c>log</c> is debug enabled, you\n            will incur the cost of evaluating whether the logger is debug\n            enabled twice. Once in <c>IsDebugEnabled</c> and once in\n            the <c>Debug</c>.  This is an insignificant overhead\n            since evaluating a logger takes about 1% of the time it\n            takes to actually log.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>INFO</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>INFO</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>WARN</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>WARN</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>ERROR</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>ERROR</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>FATAL</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>FATAL</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContext\">\r\n            <summary>\n            A SecurityContext used by log4net when interacting with protected resources\n            </summary>\n            <remarks>\n            <para>\n            A SecurityContext used by log4net when interacting with protected resources\n            for example with operating system services. This can be used to impersonate\n            a principal that has been granted privileges on the system resources.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate this SecurityContext\r\n            </summary>\r\n            <param name=\"state\">State supplied by the caller</param>\r\n            <returns>An <see cref=\"T:System.IDisposable\"/> instance that will\r\n            revoke the impersonation of this SecurityContext, or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Impersonate this security context. Further calls on the current\r\n            thread should now be made in the security context provided\r\n            by this object. When the <see cref=\"T:System.IDisposable\"/> result \r\n            <see cref=\"M:System.IDisposable.Dispose\"/> method is called the security\r\n            context of the thread should be reverted to the state it was in\r\n            before <see cref=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\"/> was called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContextProvider\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.SecurityContextProvider\"/> providers default <see cref=\"T:log4net.Core.SecurityContext\"/> instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A configured component that interacts with potentially protected system\r\n            resources uses a <see cref=\"T:log4net.Core.SecurityContext\"/> to provide the elevated\r\n            privileges required. If the <see cref=\"T:log4net.Core.SecurityContext\"/> object has\r\n            been not been explicitly provided to the component then the component\r\n            will request one from this <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </para>\r\n            <para>\r\n            By default the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is\r\n            an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/> which returns only\r\n            <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects. This is a reasonable default\r\n            where the privileges required are not know by the system.\r\n            </para>\r\n            <para>\r\n            This default behavior can be overridden by subclassing the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            and overriding the <see cref=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\"/> method to return\r\n            the desired <see cref=\"T:log4net.Core.SecurityContext\"/> objects. The default provider\r\n            can be replaced by programmatically setting the value of the \r\n            <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> property.\r\n            </para>\r\n            <para>\r\n            An alternative is to use the <c>log4net.Config.SecurityContextProviderAttribute</c>\r\n            This attribute can be applied to an assembly in the same way as the\r\n            <c>log4net.Config.XmlConfiguratorAttribute\"</c>. The attribute takes\r\n            the type to use as the <see cref=\"T:log4net.Core.SecurityContextProvider\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.SecurityContextProvider.s_defaultProvider\">\r\n            <summary>\n            The default provider\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.#ctor\">\r\n            <summary>\n            Protected default constructor to allow subclassing\n            </summary>\n            <remarks>\n            <para>\n            Protected default constructor to allow subclassing\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\">\r\n            <summary>\r\n            Create a SecurityContext for a consumer\r\n            </summary>\r\n            <param name=\"consumer\">The consumer requesting the SecurityContext</param>\r\n            <returns>An impersonation context</returns>\r\n            <remarks>\r\n            <para>\r\n            The default implementation is to return a <see cref=\"T:log4net.Util.NullSecurityContext\"/>.\r\n            </para>\r\n            <para>\r\n            Subclasses should override this method to provide their own\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\">\r\n            <summary>\r\n            Gets or sets the default SecurityContextProvider\r\n            </summary>\r\n            <value>\r\n            The default SecurityContextProvider\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default provider is used by configured components that\r\n            require a <see cref=\"T:log4net.Core.SecurityContext\"/> and have not had one\r\n            given to them.\r\n            </para>\r\n            <para>\r\n            By default this is an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that returns <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects.\r\n            </para>\r\n            <para>\r\n            The default provider can be set programmatically by setting\r\n            the value of this property to a sub class of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that has the desired behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.TimeEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers after specified number of seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n            <author>Robert Sevcik</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\">\r\n            <summary>\n            The default time threshold for triggering in seconds. Zero means it won't trigger at all.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_interval\">\r\n            <summary>\n            The time threshold for triggering in seconds. Zero means it won't trigger at all.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_lasttime\">\r\n            <summary>\n            The time of last check. This gets updated when the object is created and when the evaluator triggers.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor(System.Int32)\">\r\n            <summary>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </summary>\r\n            <param name=\"interval\">\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.TimeEvaluator.Interval\">\r\n            <summary>\r\n            The time threshold in seconds to trigger after\r\n            </summary>\r\n            <value>\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperCreationHandler\">\r\n            <summary>\r\n            Delegate used to handle creation of new wrappers.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle creation of new wrappers. This delegate\r\n            is called from the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method to construct the wrapper for the specified logger.\r\n            </para>\r\n            <para>\r\n            The delegate to use is supplied to the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperMap\">\r\n            <summary>\r\n            Maps between logger objects and wrapper objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class maintains a mapping between <see cref=\"T:log4net.Core.ILogger\"/> objects and\r\n            <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects. Use the <see cref=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\"/> method to \r\n            lookup the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> for the specified <see cref=\"T:log4net.Core.ILogger\"/>.\r\n            </para>\r\n            <para>\r\n            New wrapper instances are created by the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method. The default behavior is for this method to delegate construction\r\n            of the wrapper to the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/> delegate supplied\r\n            to the constructor. This allows specialization of the behavior without\r\n            requiring subclassing of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.#ctor(log4net.Core.WrapperCreationHandler)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            </summary>\r\n            <param name=\"createWrapperHandler\">The handler to use to create the wrapper objects.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/> class with \r\n            the specified handler to create the wrapper objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Gets the wrapper object for the specified logger.\r\n            </summary>\r\n            <returns>The wrapper object for the specified logger</returns>\r\n            <remarks>\r\n            <para>\r\n            If the logger is null then the corresponding wrapper is null.\r\n            </para>\r\n            <para>\r\n            Looks up the wrapper it it has previously been requested and\r\n            returns it. If the wrapper has never been requested before then\r\n            the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/> virtual method is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Creates the wrapper object for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <returns>The wrapper object for the logger.</returns>\r\n            <remarks>\r\n            <para>\r\n            This implementation uses the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/>\r\n            passed to the constructor to create the wrapper. This method\r\n            can be overridden in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.RepositoryShutdown(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Called when a monitored repository shutdown event is received.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called when a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this\r\n            <see cref=\"T:log4net.Core.WrapperMap\"/> is holding loggers for has signaled its shutdown\r\n            event <see cref=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\"/>. The default\r\n            behavior of this method is to release the references to the loggers\r\n            and their wrappers generated for this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.ILoggerRepository_Shutdown(System.Object,System.EventArgs)\">\r\n            <summary>\n            Event handler for repository shutdown event.\n            </summary>\n            <param name=\"sender\">The sender of the event.</param>\n            <param name=\"e\">The event args.</param>\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_repositories\">\r\n            <summary>\n            Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_createWrapperHandler\">\r\n            <summary>\n            The handler to use to create the extension wrapper objects.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_shutdownHandler\">\r\n            <summary>\n            Internal reference to the delegate used to register for repository shutdown events.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.WrapperMap.Repositories\">\r\n            <summary>\r\n            Gets the map of logger repositories.\r\n            </summary>\r\n            <value>\r\n            Map of logger repositories.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the hashtable that is keyed on <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The\r\n            values are hashtables keyed on <see cref=\"T:log4net.Core.ILogger\"/> with the\r\n            value being the corresponding <see cref=\"T:log4net.Core.ILoggerWrapper\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.IDateFormatter\">\r\n            <summary>\r\n            Render a <see cref=\"T:System.DateTime\"/> as a string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface to abstract the rendering of a <see cref=\"T:System.DateTime\"/>\r\n            instance into a string.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/> method is used to render the\r\n            date to a text writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the specified date as a string.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:System.DateTime\"/> as a string and write it\r\n            to the <see cref=\"T:System.IO.TextWriter\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.AbsoluteTimeDateFormat\">\r\n            <summary>\n            String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is <b>ABSOLUTE</b>.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.DateAndTimeDateFormat\">\r\n            <summary>\n            String constant used to specify DateTimeDateFormat in layouts.  Current value is <b>DATE</b>.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.Iso8601TimeDateFormat\">\r\n            <summary>\n            String constant used to specify ISO8601DateFormat in layouts. Current value is <b>ISO8601</b>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\n            Renders the date into a string. Format is <c>\"HH:mm:ss\"</c>.\n            </summary>\n            <param name=\"dateToFormat\">The date to render into a string.</param>\n            <param name=\"buffer\">The string builder to write to.</param>\n            <remarks>\n            <para>\n            Subclasses should override this method to render the date\n            into a string using a precision up to the second. This method\n            will be called at most once per second and the result will be\n            reused if it is needed again during the same second.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Renders the date into a string. Format is \"HH:mm:ss,fff\".\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to render into a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> method to generate the\r\n            time string up to the seconds and then appends the current\r\n            milliseconds. The results from <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> are\r\n            cached and <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> is called at most once\r\n            per second.\r\n            </para>\r\n            <para>\r\n            Sub classes should override <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/>\r\n            rather than <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeToTheSecond\">\r\n            <summary>\n            Last stored time with precision up to the second.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeBuf\">\r\n            <summary>\n            Last stored time with precision up to the second, formatted\n            as a string.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeString\">\r\n            <summary>\n            Last stored time with precision up to the second, formatted\n            as a string.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.DateTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"dd MMM yyyy HH:mm:ss,fff\"</c>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format \r\n            <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, \r\n            <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Angelika Schnagl</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\n            Formats the date without the milliseconds part\n            </summary>\n            <param name=\"dateToFormat\">The date to format.</param>\n            <param name=\"buffer\">The string builder to write to.</param>\n            <remarks>\n            <para>\n            Formats a DateTime in the format <c>\"dd MMM yyyy HH:mm:ss\"</c>\n            for example, <c>\"06 Nov 1994 15:49:37\"</c>.\n            </para>\n            <para>\n            The base class will append the <c>\",fff\"</c> milliseconds section.\n            This method will only be called at most once per second.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.DateTimeDateFormatter.m_dateTimeFormatInfo\">\r\n            <summary>\n            The format info for the invariant culture.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.Iso8601DateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> as <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> specified as a string: <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\n            Formats the date without the milliseconds part\n            </summary>\n            <param name=\"dateToFormat\">The date to format.</param>\n            <param name=\"buffer\">The string builder to write to.</param>\n            <remarks>\n            <para>\n            Formats the date specified as a string: <c>\"yyyy-MM-dd HH:mm:ss\"</c>.\n            </para>\n            <para>\n            The base class will append the <c>\",fff\"</c> milliseconds section.\n            This method will only be called at most once per second.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.SimpleDateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"T:System.DateTime\"/> <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"format\">The format string.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> class \r\n            with the specified format string.\r\n            </para>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the date using <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to convert to a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the date format string supplied to the constructor to call\r\n            the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method to format the date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.SimpleDateFormatter.m_formatString\">\r\n            <summary>\r\n            The format string used to format the <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.DenyAllFilter\">\r\n            <summary>\r\n            This filter drops all <see cref=\"T:log4net.Core.LoggingEvent\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can add this filter to the end of a filter chain to\r\n            switch from the default \"accept all unless instructed otherwise\"\r\n            filtering behavior to a \"deny all unless instructed otherwise\"\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterSkeleton\">\r\n            <summary>\r\n            Subclass this type to implement customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should extend this class to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.IFilter\">\r\n            <summary>\r\n            Implement this interface to provide customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should implement this interface to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the logging event should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The LoggingEvent to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.IFilter.Next\">\r\n            <summary>\n            Property to get and set the next filter\n            </summary>\n            <value>\n            The next filter in the chain\n            </value>\n            <remarks>\n            <para>\n            Filters are typically composed into chains. This property allows the next filter in \n            the chain to be accessed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterSkeleton.m_next\">\r\n            <summary>\r\n            Points to the next filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Filter.FilterSkeleton.Next\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the filter with the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Typically filter's options become active immediately on set, \r\n            however this method must still be called. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the <see cref=\"T:log4net.Core.LoggingEvent\"/> should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            <para>\r\n            This method is marked <c>abstract</c> and must be implemented\r\n            in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.FilterSkeleton.Next\">\r\n            <summary>\n            Property to get and set the next filter\n            </summary>\n            <value>\n            The next filter in the chain\n            </value>\n            <remarks>\n            <para>\n            Filters are typically composed into chains. This property allows the next filter in \n            the chain to be accessed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Always returns the integer constant <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">the LoggingEvent to filter</param>\r\n            <returns>Always returns <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Ignores the event being logged and just returns\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This can be used to change the default filter\r\n            chain behavior from <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> to <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This filter\r\n            should only be used as the last filter in the chain\r\n            as any further filters will be ignored!\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterDecision\">\r\n            <summary>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Deny\">\r\n            <summary>\n            The log event must be dropped immediately without \n            consulting with the remaining filters, if any, in the chain.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Neutral\">\r\n            <summary>\n            This filter is neutral with respect to the log event. \n            The remaining filters, if any, should be consulted for a final decision.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Accept\">\r\n            <summary>\n            The log event must be logged immediately without \n            consulting with the remaining filters, if any, in the chain.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelMatchFilter\">\r\n            <summary>\r\n            This is a very simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits two options <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> and\r\n            <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If there is an exact match between the value\r\n            of the <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> option and the <see cref=\"T:log4net.Core.Level\"/> of the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the <see cref=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> option value is set\r\n            to <c>true</c>, if it is <c>false</c> then \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            flag to indicate if the filter should <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> on a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_levelToMatch\">\r\n            <summary>\r\n            the <see cref=\"T:log4net.Core.Level\"/> to match against\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Tests if the <see cref=\"T:log4net.Core.Level\"/> of the logging event matches that of the filter\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to filter</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the event matches the level of the\r\n            filter then the result of the function depends on the\r\n            value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If it is true then\r\n            the function will return <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>, it it is false then it\r\n            will return <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelRangeFilter\">\r\n            <summary>\r\n            This is a simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits three options <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            that determine the range of priorities that are matched, and\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>. If there is a match between the range\r\n            of priorities and the <see cref=\"T:log4net.Core.Level\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the \r\n            <see cref=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in case the <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> \r\n            option value is set to <c>true</c>, if it is <c>false</c>\r\n            then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If there is no match, <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when matching a <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMin\">\r\n            <summary>\r\n            the minimum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMax\">\r\n            <summary>\r\n            the maximum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if the event should be logged.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the logging event to check</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the logging event is outside the range\r\n            matched by this filter then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            is returned. If the <see cref=\"T:log4net.Core.Level\"/> is matched then the value of\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> is checked. If it is true then\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMin\">\r\n            <summary>\r\n            Set the minimum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The minimum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMax\">\r\n            <summary>\r\n            Sets the maximum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The maximum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LoggerMatchFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the event's logger name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The works very similar to the <see cref=\"T:log4net.Filter.LevelMatchFilter\"/>. It admits two \r\n            options <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> and <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>. If the \r\n            <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/> starts \r\n            with the value of the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> option, then the \r\n            <see cref=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> option value is set to <c>true</c>, \r\n            if it is <c>false</c> then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_acceptOnMatch\">\r\n            <summary>\n            Flag to indicate the behavior when we have a match\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_loggerToMatch\">\r\n            <summary>\n            The logger name string to substring match against the event\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> equals the beginning of \r\n            the incoming <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> (<see cref=\"M:System.String.StartsWith(System.String)\"/>)\r\n            then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This filter will attempt to match this value against logger name in\r\n            the following way. The match will be done against the beginning of the\r\n            logger name (using <see cref=\"M:System.String.StartsWith(System.String)\"/>). The match is\r\n            case sensitive. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.MdcFilter\">\r\n            <summary>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with layered properties the\r\n            <see cref=\"T:log4net.Filter.PropertyFilter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.PropertyFilter\">\r\n            <summary>\n            Simple filter to match a string an event property\n            </summary>\n            <remarks>\n            <para>\n            Simple filter to match a string in the value for a\n            specific event property\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"T:log4net.Filter.StringMatchFilter\">\r\n            <summary>\n            Simple filter to match a string in the rendered message\n            </summary>\n            <remarks>\n            <para>\n            Simple filter to match a string in the rendered message\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_acceptOnMatch\">\r\n            <summary>\n            Flag to indicate the behavior when we have a match\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringToMatch\">\r\n            <summary>\n            The string to substring match against the message\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringRegexToMatch\">\r\n            <summary>\n            A string regex to match\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_regexToMatch\">\r\n            <summary>\n            A regex object to match (generated from m_stringRegexToMatch)\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\">\r\n            <summary>\r\n            Initialize and precompile the Regex if required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the message then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.StringToMatch\">\r\n            <summary>\r\n            Sets the static string to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The string that will be substring matched against\r\n            the rendered message. If the message contains this\r\n            string then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\">\r\n            <summary>\r\n            Sets the regular expression to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The regular expression pattern that will be matched against\r\n            the rendered message. If the message matches this\r\n            pattern then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.PropertyFilter.m_key\">\r\n            <summary>\n            The key to use to lookup the string from the event properties\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The event property for the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> is matched against \r\n            the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the property value then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.PropertyFilter.Key\">\r\n            <summary>\r\n            The key to lookup in the event properties and then match against.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The key name to use to lookup in the properties map of the\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>. The match will be performed against \r\n            the value of this property if it exists.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.NdcFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with named stacks stored in the\r\n            properties collections the <see cref=\"T:log4net.Filter.PropertyFilter\"/> should \r\n            be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.NdcFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Sets the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> to <c>\"NDC\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AppDomainPatternConverter\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PatternLayoutConverter\">\r\n            <summary>\n            Abstract class that provides the formatting functionality that \n            derived classes need.\n            </summary>\n            <remarks>\n            Conversion specifiers in a conversion patterns are parsed to\n            individual PatternConverters. Each of which is responsible for\n            converting a logging event in a converter specific manner.\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternConverter\">\r\n            <summary>\n            Abstract class that provides the formatting functionality that \n            derived classes need.\n            </summary>\n            <remarks>\n            <para>\n            Conversion specifiers in a conversion patterns are parsed to\n            individual PatternConverters. Each of which is responsible for\n            converting a logging event in a converter specific manner.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferSize\">\r\n            <summary>\n            Initial buffer size\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferMaxCapacity\">\r\n            <summary>\n            Maximum buffer size before it is recycled\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.#ctor\">\r\n            <summary>\r\n            Protected constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternConverter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Evaluate this pattern converter and write the output to a writer.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the appropriate way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\n            Set the next pattern converter in the chains\n            </summary>\n            <param name=\"patternConverter\">the pattern converter that should follow this converter in the chain</param>\n            <returns>the next converter</returns>\n            <remarks>\n            <para>\n            The PatternConverter can merge with its neighbor during this method (or a sub class).\n            Therefore the return value may or may not be the value of the argument passed in.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the pattern converter to the writer with appropriate formatting\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            This method calls <see cref=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\"/> to allow the subclass to perform\r\n            appropriate conversion of the pattern converter. If formatting options have\r\n            been specified via the <see cref=\"P:log4net.Util.PatternConverter.FormattingInfo\"/> then this method will\r\n            apply those formattings before writing the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SpacePad(System.IO.TextWriter,System.Int32)\">\r\n            <summary>\r\n            Fast space padding method.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> to which the spaces will be appended.</param>\r\n            <param name=\"length\">The number of spaces to be padded.</param>\r\n            <remarks>\r\n            <para>\r\n            Fast space padding method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.m_option\">\r\n            <summary>\n            The option string to the converter\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionary)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionary\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionaryEnumerator)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteObject(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Object)\">\r\n            <summary>\r\n            Write an object to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the Object to a writer. If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the object to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Next\">\r\n            <summary>\n            Get the next pattern converter in the chain\n            </summary>\n            <value>\n            the next pattern converter in the chain\n            </value>\n            <remarks>\n            <para>\n            Get the next pattern converter in the chain\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.FormattingInfo\">\r\n            <summary>\n            Gets or sets the formatting info for this converter\n            </summary>\n            <value>\n            The formatting info for this converter\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the formatting info for this converter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Option\">\r\n            <summary>\n            Gets or sets the option value for this converter\n            </summary>\n            <summary>\n            The option for this converter\n            </summary>\n            <remarks>\n            <para>\n            Gets or sets the option value for this converter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Properties\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.Pattern.PatternLayoutConverter\"/> class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.PatternLayoutConverter.m_ignoresException\">\r\n            <summary>\n            Flag indicating if this converter handles exceptions\n            </summary>\n            <remarks>\n            <c>false</c> if this converter handles exceptions\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.Pattern.PatternLayoutConverter.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this converter handles the logging event exception\r\n            </summary>\r\n            <value><c>false</c> if this converter handles the logging event exception</value>\r\n            <remarks>\r\n            <para>\r\n            If this converter handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then this property should be set to\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the property should be set to <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this converter does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AppDomainPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetCachePatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetPatternLayoutConverter\">\r\n            <summary>\r\n            Abstract class that provides access to the current HttpContext (<see cref=\"P:System.Web.HttpContext.Current\"/>) that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            This class handles the case when HttpContext.Current is null by writing\r\n            <see cref=\"P:log4net.Util.SystemInfo.NotAvailableText\"/> to the writer.\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetPatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetCachePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Cache will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetContextPatternConverter\">\r\n            <summary>\r\n            Converter for items in the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetContextPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net HttpContext item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetRequestPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetRequestPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetSessionPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetSessionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Session will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.DatePatternConverter\">\r\n            <summary>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Render the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,yyyy\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter pattern based on the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the DatePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ExceptionPatternConverter\">\r\n            <summary>\n            Write the exception text to the output\n            </summary>\n            <remarks>\n            <para>\n            If an exception object is stored in the logging event\n            it will be rendered into the pattern output with a\n            trailing newline.\n            </para>\n            <para>\n            If there is no exception then nothing will be output\n            and no trailing newline will be appended.\n            It is typical to put a newline before the exception\n            and to have the exception as the last data in the pattern.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the exception text to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            If an exception object is stored in the logging event\r\n            it will be rendered into the pattern output with a\r\n            trailing newline.\r\n            </para>\r\n            <para>\r\n            If there is no exception or the exception property specified\r\n            by the Option value does not exist then nothing will be output\r\n            and no trailing newline will be appended.\r\n            It is typical to put a newline before the exception\r\n            and to have the exception as the last data in the pattern.\r\n            </para>\r\n            <para>\r\n            Recognized values for the Option parameter are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>Message</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>Source</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>StackTrace</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>TargetSite</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>HelpLink</description>\r\n            \t</item>\t\t\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FileLocationPatternConverter\">\r\n            <summary>\r\n            Writes the caller location file name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FileLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location file name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FullLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FullLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.IdentityPatternConverter\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.IdentityPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <paramref name=\"loggingEvent\"/> \r\n            <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LevelPatternConverter\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the display name of the event <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LevelPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.Level.DisplayName\"/> of the <paramref name=\"loggingEvent\"/> <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LineLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LineLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LoggerPatternConverter\">\r\n            <summary>\r\n            Converter for logger name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NamedPatternConverter\">\r\n            <summary>\r\n            Converter to output and truncate <c>'.'</c> separated strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This abstract class supports truncating a <c>'.'</c> separated string\r\n            to show a specified number of elements from the right hand side.\r\n            This is used to truncate class names that are fully qualified.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> method to\r\n            return the fully qualified string.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Get the fully qualified string data\n            </summary>\n            <param name=\"loggingEvent\">the event being logged</param>\n            <returns>the fully qualified name</returns>\n            <remarks>\n            <para>\n            Overridden by subclasses to get the fully qualified name before the\n            precision is applied to it.\n            </para>\n            <para>\n            Return the fully qualified <c>'.'</c> (dot/period) separated string.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            Render the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> to the precision\r\n            specified by the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.NamedPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the NamedPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LoggerPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the logger\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified logger name</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MessagePatternConverter\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MessagePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MethodLocationPatternConverter\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MethodLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NdcPatternConverter\">\r\n            <summary>\r\n            Converter to include event NDC\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the value of the event property named <c>NDC</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NdcPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event NDC to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            As the thread context stacks are now stored in named event properties\r\n            this converter simply looks up the value of the <c>NDC</c> property.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PropertyPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.RelativeTimePatternConverter\">\r\n            <summary>\n            Converter to output the relative time of the event\n            </summary>\n            <remarks>\n            <para>\n            Converter to output the time of the event relative to the start of the program.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the relative time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the relative time of the event in milliseconds.\r\n            That is the number of milliseconds between the event <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>\r\n            and the <see cref=\"P:log4net.Core.LoggingEvent.StartTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.TimeDifferenceInMillis(System.DateTime,System.DateTime)\">\r\n            <summary>\n            Helper method to get the time difference between two DateTime objects\n            </summary>\n            <param name=\"start\">start time (in the current local time zone)</param>\n            <param name=\"end\">end time (in the current local time zone)</param>\n            <returns>the time difference in milliseconds</returns>\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTraceDetailPatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            </para>\r\n            </remarks>\r\n            <author>Adam Davies</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTracePatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            </para>\r\n            </remarks>\r\n            <author>Michael Cromwell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the strack frames to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.GetMethodInformation(System.Reflection.MethodBase)\">\r\n            <summary>\n            Returns the Name of the method\n            </summary>\n            <param name=\"method\"></param>\n            <remarks>This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter</remarks>\n            <returns>string</returns>\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTracePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the StackTracePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTraceDetailPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the StackTraceDetailPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ThreadPatternConverter\">\r\n            <summary>\r\n            Converter to include event thread name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ThreadPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the ThreadName to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.TypeNamePatternConverter\">\r\n            <summary>\r\n            Pattern converter for the class name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.TypeNamePatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the class\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified type name for the caller location</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UserNamePatternConverter\">\r\n            <summary>\n            Converter to include event user name\n            </summary>\n            <author>Douglas de la Torre</author>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UserNamePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            Uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> \r\n            in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UtcDatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone, this is converted\r\n            to Universal time before it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.UtcDatePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the UtcDatePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.ExceptionLayout\">\r\n            <summary>\r\n            A Layout that renders only the Exception text from the logging event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A Layout that renders only the Exception text from the logging event.\r\n            </para>\r\n            <para>\r\n            This Layout should only be used with appenders that utilize multiple\r\n            layouts (e.g. <see cref=\"T:log4net.Appender.AdoNetAppender\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.LayoutSkeleton\">\r\n            <summary>\r\n            Extend this abstract class to create your own log layout format.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the base implementation of the <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            interface. Most layout objects should extend this class.\r\n            </para>\r\n            </remarks>\r\n            <remarks>\r\n            <note type=\"inheritinfo\">\r\n            <para>\r\n            Subclasses must implement the <see cref=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>\r\n            method.\r\n            </para>\r\n            <para>\r\n            Subclasses should set the <see cref=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\"/> in their default\r\n            constructor.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.ILayout\">\r\n            <summary>\r\n            Interface implemented by layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An <see cref=\"T:log4net.Layout.ILayout\"/> object is used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            as text. The <see cref=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> method is called by an\r\n            appender to transform the <see cref=\"T:log4net.Core.LoggingEvent\"/> into a string.\r\n            </para>\r\n            <para>\r\n            The layout can also supply <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            text that is appender before any events and after all the events respectively.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called by an appender to format\r\n            the <paramref name=\"loggingEvent\"/> as text and output to a writer.\r\n            </para>\r\n            <para>\r\n            If the caller does not have a <see cref=\"T:System.IO.TextWriter\"/> and prefers the\r\n            event to be formatted as a <see cref=\"T:System.String\"/> then the following\r\n            code can be used to format the event into a <see cref=\"T:System.IO.StringWriter\"/>.\r\n            </para>\r\n            <code lang=\"C#\">\r\n            StringWriter writer = new StringWriter();\r\n            Layout.Format(writer, loggingEvent);\r\n            string formattedEvent = writer.ToString();\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.ContentType\">\r\n            <summary>\n            The content type output by this layout. \n            </summary>\n            <value>The content type</value>\n            <remarks>\n            <para>\n            The content type output by this layout.\n            </para>\n            <para>\n            This is a MIME type e.g. <c>\"text/plain\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Header\">\r\n            <summary>\n            The header for the layout format.\n            </summary>\n            <value>the layout header</value>\n            <remarks>\n            <para>\n            The Header text will be appended before any logging events\n            are formatted and appended.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Footer\">\r\n            <summary>\n            The footer for the layout format.\n            </summary>\n            <value>the layout footer</value>\n            <remarks>\n            <para>\n            The Footer text will be appended after all the logging events\n            have been formatted and appended.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handle exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_header\">\r\n            <summary>\r\n            The header text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Header\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_footer\">\r\n            <summary>\r\n            The footer text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Footer\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_ignoresException\">\r\n            <summary>\n            Flag indicating if this layout handles exceptions\n            </summary>\n            <remarks>\n            <para>\n            <c>false</c> if this layout handles exceptions\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.#ctor\">\r\n            <summary>\n            Empty default constructor\n            </summary>\n            <remarks>\n            <para>\n            Empty default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This method must be implemented by the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Implement this method to create your own layout format.\n            </summary>\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\n            <param name=\"loggingEvent\">The event to format</param>\n            <remarks>\n            <para>\n            This method is called by an appender to format\n            the <paramref name=\"loggingEvent\"/> as text.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Convenience method for easily formatting the logging event into a string variable.\n            </summary>\n            <param name=\"loggingEvent\"></param>\n            <remarks>\n            Creates a new StringWriter instance to store the formatted logging event.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.ContentType\">\r\n            <summary>\n            The content type output by this layout. \n            </summary>\n            <value>The content type is <c>\"text/plain\"</c></value>\n            <remarks>\n            <para>\n            The content type output by this layout.\n            </para>\n            <para>\n            This base class uses the value <c>\"text/plain\"</c>.\n            To change this value a subclass must override this\n            property.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Header\">\r\n            <summary>\n            The header for the layout format.\n            </summary>\n            <value>the layout header</value>\n            <remarks>\n            <para>\n            The Header text will be appended before any logging events\n            are formatted and appended.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Footer\">\r\n            <summary>\n            The footer for the layout format.\n            </summary>\n            <value>the layout footer</value>\n            <remarks>\n            <para>\n            The Footer text will be appended after all the logging events\n            have been formatted and appended.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handles exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this layout does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Constructs a ExceptionLayout\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> component activation\r\n            framework.\r\n            </para>\r\n            <para>\r\n            This method does nothing as options become effective immediately.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the exception text from the logging event\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Write the exception string to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            The exception string is retrieved from <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.IRawLayout\">\r\n            <summary>\r\n            Interface for raw layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to an object.\r\n            </para>\r\n            <para>\r\n            This interface should not be confused with the\r\n            <see cref=\"T:log4net.Layout.ILayout\"/> interface. This interface is used in\r\n            only certain specialized situations where a raw object is\r\n            required rather than a formatted string. The <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            is not generally useful than this interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.IRawLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Implement this method to create your own layout format.\n            </summary>\n            <param name=\"loggingEvent\">The event to format</param>\n            <returns>returns the formatted event</returns>\n            <remarks>\n            <para>\n            Implement this method to create your own layout format.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.Layout2RawLayoutAdapter\">\r\n            <summary>\r\n            Adapts any <see cref=\"T:log4net.Layout.ILayout\"/> to a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Where an <see cref=\"T:log4net.Layout.IRawLayout\"/> is required this adapter\r\n            allows a <see cref=\"T:log4net.Layout.ILayout\"/> to be specified.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Layout2RawLayoutAdapter.m_layout\">\r\n            <summary>\n            The layout to adapt\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\n            Construct a new adapter\n            </summary>\n            <param name=\"layout\">the layout to adapt</param>\n            <remarks>\n            <para>\n            Create the adapter for the specified <paramref name=\"layout\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Format the logging event as an object.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the formatted event</returns>\r\n            <remarks>\r\n            <para>\r\n            Format the logging event as an object.\r\n            </para>\r\n            <para>\r\n            Uses the <see cref=\"T:log4net.Layout.ILayout\"/> object supplied to \r\n            the constructor to perform the formatting.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.PatternLayout\">\r\n            <summary>\r\n            A flexible layout configurable with pattern string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The goal of this class is to <see cref=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as a string. The results\r\n            depend on the <i>conversion pattern</i>.\r\n            </para>\r\n            <para>\r\n            The conversion pattern is closely related to the conversion\r\n            pattern of the printf function in C. A conversion pattern is\r\n            composed of literal text and format control expressions called\r\n            <i>conversion specifiers</i>.\r\n            </para>\r\n            <para>\r\n            <i>You are free to insert any literal text within the conversion\r\n            pattern.</i>\r\n            </para>\r\n            <para>\r\n            Each conversion specifier starts with a percent sign (%) and is\r\n            followed by optional <i>format modifiers</i> and a <i>conversion\r\n            pattern name</i>. The conversion pattern name specifies the type of\r\n            data, e.g. logger, level, date, thread name. The format\r\n            modifiers control such things as field width, padding, left and\r\n            right justification. The following is a simple example.\r\n            </para>\r\n            <para>\r\n            Let the conversion pattern be <b>\"%-5level [%thread]: %message%newline\"</b> and assume\r\n            that the log4net environment was set to use a PatternLayout. Then the\r\n            statements\r\n            </para>\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(typeof(TestApp));\r\n            log.Debug(\"Message 1\");\r\n            log.Warn(\"Message 2\");   \r\n            </code>\r\n            <para>would yield the output</para>\r\n            <code>\r\n            DEBUG [main]: Message 1\r\n            WARN  [main]: Message 2  \r\n            </code>\r\n            <para>\r\n            Note that there is no explicit separator between text and\r\n            conversion specifiers. The pattern parser knows when it has reached\r\n            the end of a conversion specifier when it reads a conversion\r\n            character. In the example above the conversion specifier\r\n            <b>%-5level</b> means the level of the logging event should be left\r\n            justified to a width of five characters.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>a</term>\r\n                    <description>Equivalent to <b>appdomain</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n            \t\t\tUsed to output the friendly name of the AppDomain where the \r\n            \t\t\tlogging event was generated. \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-cache</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all cache items in the case of <b>%aspnet-cache</b> or just one named item if used as <b>%aspnet-cache{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-context</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all context items in the case of <b>%aspnet-context</b> or just one named item if used as <b>%aspnet-context{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-request</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all request parameters in the case of <b>%aspnet-request</b> or just one named param if used as <b>%aspnet-request{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-session</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all session items in the case of <b>%aspnet-session</b> or just one named item if used as <b>%aspnet-session{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>c</term>\r\n                    <description>Equivalent to <b>logger</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>C</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>class</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>d</term>\r\n                    <description>Equivalent to <b>date</b></description>\r\n                </item>\r\n                <item>\r\n            \t\t<term>date</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>exception</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the exception passed in with the log message.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf an exception object is stored in the logging event\r\n            \t\t\tit will be rendered into the pattern output with a\r\n            \t\t\ttrailing newline.\r\n            \t\t\tIf there is no exception then nothing will be output\r\n            \t\t\tand no trailing newline will be appended.\r\n            \t\t\tIt is typical to put a newline before the exception\r\n            \t\t\tand to have the exception as the last data in the pattern.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>F</term>\r\n                    <description>Equivalent to <b>file</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>file</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the file name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>identity</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>l</term>\r\n                    <description>Equivalent to <b>location</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>L</term>\r\n                    <description>Equivalent to <b>line</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>location</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output location information of the caller which generated\r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information depends on the CLI implementation but\r\n            \t\t\tusually consists of the fully qualified name of the calling\r\n            \t\t\tmethod followed by the callers source the file name and line\r\n            \t\t\tnumber between parentheses.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information can be very useful. However, its\r\n            \t\t\tgeneration is <b>extremely</b> slow. Its use should be avoided\r\n            \t\t\tunless execution speed is not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>level</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the level of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>line</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the line number from where the logging request\r\n            \t\t\twas issued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>logger</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the logger of the logging event. The\r\n            \t\t\tlogger conversion specifier can be optionally followed by\r\n            \t\t\t<i>precision specifier</i>, that is a decimal constant in\r\n            \t\t\tbrackets.\r\n                        </para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the logger name will be\r\n            \t\t\tprinted. By default the logger name is printed in full.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the logger name \"a.b.c\" the pattern\r\n            \t\t\t<b>%logger{2}</b> will output \"b.c\".\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>m</term>\r\n                    <description>Equivalent to <b>message</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>M</term>\r\n                    <description>Equivalent to <b>method</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>message</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the application supplied message associated with \r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>mdc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe MDC (old name for the ThreadContext.Properties) is now part of the\r\n            \t\t\tcombined event properties. This pattern is supported for compatibility\r\n            \t\t\tbut is equivalent to <b>property</b>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>method</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the method name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>n</term>\r\n                    <description>Equivalent to <b>newline</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>newline</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ndc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the NDC (nested diagnostic context) associated\r\n            \t\t\twith the thread that generated the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>p</term>\r\n                    <description>Equivalent to <b>level</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>P</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>properties</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>property</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the an event specific property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are added to events by loggers or appenders. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the event properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\t\t\t\tproperties are specific to this event only.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n            \t\t\t\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>r</term>\r\n                    <description>Equivalent to <b>timestamp</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>stacktrace</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktrace{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n            \t\t\ttype3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>stacktracedetail</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktracedetail{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n                        type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>t</term>\r\n                    <description>Equivalent to <b>thread</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>timestamp</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the number of milliseconds elapsed since the start\r\n            \t\t\tof the application until the creation of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>thread</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the name of the thread that generated the\r\n            \t\t\tlogging event. Uses the thread number if no name is available.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>type</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the fully qualified type name of the caller\r\n            \t\t\tissuing the logging request. This conversion specifier\r\n            \t\t\tcan be optionally followed by <i>precision specifier</i>, that\r\n            \t\t\tis a decimal constant in brackets.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the class name will be\r\n            \t\t\tprinted. By default the class name is output in fully qualified form.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the class name \"log4net.Layout.PatternLayout\", the\r\n            \t\t\tpattern <b>%type{1}</b> will output \"PatternLayout\".\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating the caller class information is\r\n            \t\t\tslow. Thus, its use should be avoided unless execution speed is\r\n            \t\t\tnot an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n                </item>\r\n                <item>\r\n                    <term>u</term>\r\n                    <description>Equivalent to <b>identity</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>username</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller WindowsIdentity information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>utcdate</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>w</term>\r\n                    <description>Equivalent to <b>username</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>x</term>\r\n                    <description>Equivalent to <b>ndc</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>X</term>\r\n                    <description>Equivalent to <b>mdc</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            The single letter patterns are deprecated in favor of the \r\n            longer more descriptive pattern names.\r\n            </para>\r\n            <para>\r\n            By default the relevant information is output as is. However,\r\n            with the aid of format modifiers it is possible to change the\r\n            minimum field width, the maximum field width and justification.\r\n            </para>\r\n            <para>\r\n            The optional format modifier is placed between the percent sign\r\n            and the conversion pattern name.\r\n            </para>\r\n            <para>\r\n            The first optional format modifier is the <i>left justification\r\n            flag</i> which is just the minus (-) character. Then comes the\r\n            optional <i>minimum field width</i> modifier. This is a decimal\r\n            constant that represents the minimum number of characters to\r\n            output. If the data item requires fewer characters, it is padded on\r\n            either the left or the right until the minimum width is\r\n            reached. The default is to pad on the left (right justify) but you\r\n            can specify right padding with the left justification flag. The\r\n            padding character is space. If the data item is larger than the\r\n            minimum field width, the field is expanded to accommodate the\r\n            data. The value is never truncated.\r\n            </para>\r\n            <para>\r\n            This behavior can be changed using the <i>maximum field\r\n            width</i> modifier which is designated by a period followed by a\r\n            decimal constant. If the data item is longer than the maximum\r\n            field, then the extra characters are removed from the\r\n            <i>beginning</i> of the data item and not from the end. For\r\n            example, it the maximum field width is eight and the data item is\r\n            ten characters long, then the first two characters of the data item\r\n            are dropped. This behavior deviates from the printf function in C\r\n            where truncation is done from the end.\r\n            </para>\r\n            <para>\r\n            Below are various format modifier examples for the logger\r\n            conversion specifier.\r\n            </para>\r\n            <div class=\"tablediv\">\r\n            \t<table class=\"dtTABLE\" cellspacing=\"0\">\r\n            \t\t<tr>\r\n            \t\t\t<th>Format modifier</th>\r\n            \t\t\t<th>left justify</th>\r\n            \t\t\t<th>minimum width</th>\r\n            \t\t\t<th>maximum width</th>\r\n            \t\t\t<th>comment</th>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%20logger</td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is less than 20\r\n            \t\t\t\tcharacters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger \r\n            \t\t\t\tname is less than 20 characters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%.30logger</td>\r\n            \t\t\t<td align=\"center\">NA</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tTruncate from the beginning if the logger \r\n            \t\t\t\tname is longer than 30 characters.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\"><nobr>%20.30logger</nobr></td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20.30logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t</table>\r\n            </div>\r\n            <para>\r\n            <b>Note about caller location information.</b><br/>\r\n            The following patterns <c>%type %file %line %method %location %class %C %F %L %l %M</c> \r\n            all generate caller location information.\r\n            Location information uses the <c>System.Diagnostics.StackTrace</c> class to generate\r\n            a call stack. The caller's information is then extracted from this stack.\r\n            </para>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \r\n            .NET Compact Framework 1.0 therefore caller location information is not\r\n            available on that framework.\r\n            </para>\r\n            </note>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\r\n            </para>\r\n            <para>\r\n            \"StackTrace information will be most informative with Debug build configurations. \r\n            By default, Debug builds include debug symbols, while Release builds do not. The \r\n            debug symbols contain most of the file, method name, line number, and column \r\n            information used in constructing StackFrame and StackTrace objects. StackTrace \r\n            might not report as many method calls as expected, due to code transformations \r\n            that occur during optimization.\"\r\n            </para>\r\n            <para>\r\n            This means that in a Release build the caller information may be incomplete or may \r\n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            instance using the <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            This is a more detailed pattern.\r\n            <code><b>%timestamp [%thread] %level %logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <example>\r\n            A similar pattern except that the relative time is\r\n            right padded if less than 6 digits, thread name is right padded if\r\n            less than 15 characters and truncated if longer and the logger\r\n            name is left padded if shorter than 30 characters and truncated if\r\n            longer.\r\n            <code><b>%-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DefaultConversionPattern\">\r\n            <summary>\n            Default pattern string for log output. \n            </summary>\n            <remarks>\n            <para>\n            Default pattern string for log output. \n            Currently set to the string <b>\"%message%newline\"</b> \n            which just prints the application supplied message. \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\">\r\n            <summary>\n            A detailed conversion pattern\n            </summary>\n            <remarks>\n            <para>\n            A conversion pattern which includes Time, Thread, Logger, and Nested Context.\n            Current value is <b>%timestamp [%thread] %level %logger %ndc - %message%newline</b>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.s_globalRulesRegistry\">\r\n            <summary>\n            Internal map of converter identifiers to converter types.\n            </summary>\n            <remarks>\n            <para>\n            This static map is overridden by the m_converterRegistry instance map\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_pattern\">\r\n            <summary>\n            the pattern\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_head\">\r\n            <summary>\n            the head of the pattern converter chain\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_instanceRulesRegistry\">\r\n            <summary>\n            patterns defined on this PatternLayout only\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#cctor\">\r\n            <summary>\n            Initialize the global registry\n            </summary>\n            <remarks>\n            <para>\n            Defines the builtin global rules.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor\">\r\n            <summary>\r\n            Constructs a PatternLayout using the DefaultConversionPattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default pattern just produces the application supplied message.\r\n            </para>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            As per the <see cref=\"T:log4net.Core.IOptionHandler\"/> contract the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>\r\n            method must be called after the properties on this object have been\r\n            configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternLayout using the supplied conversion pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to use</param>\r\n            <remarks>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            When using this constructor the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method \r\n            need not be called. This may not be the case when using a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the pattern parser instance\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/> that will format the event</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the conversion string. Sets the\r\n            global and instance rules on the <see cref=\"T:log4net.Util.PatternParser\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string as specified by the conversion pattern.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Parse the <see cref=\"T:log4net.Core.LoggingEvent\"/> using the patter format\r\n            specified in the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\r\n            <param name=\"type\">the type of the converter</param>\r\n            <remarks>\r\n            <para>\r\n            Add a named pattern converter to this instance. This\r\n            converter will be used in the formatting of the event.\r\n            This method must be called before <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"type\"/> specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.PatternLayout.ConversionPattern\">\r\n            <summary>\n            The pattern formatting string\n            </summary>\n            <remarks>\n            <para>\n            The <b>ConversionPattern</b> option. This is the string which\n            controls formatting and consists of a mix of literal content and\n            conversion specifiers.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.RawLayoutConverter\">\r\n            <summary>\r\n            Type converter for the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to convert objects to the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface.\r\n            Supports converting from the <see cref=\"T:log4net.Layout.ILayout\"/> interface to\r\n            the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface using the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertFrom\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from arbitrary types\r\n            to a single target type. See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.CanConvertFrom(System.Type)\">\r\n            <summary>\n            Can the source type be converted to the type supported by this object\n            </summary>\n            <param name=\"sourceType\">the type to convert</param>\n            <returns>true if the conversion is possible</returns>\n            <remarks>\n            <para>\n            Test if the <paramref name=\"sourceType\"/> can be converted to the\n            type supported by this converter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.ConvertFrom(System.Object)\">\r\n            <summary>\n            Convert the source object to the type supported by this object\n            </summary>\n            <param name=\"source\">the object to convert</param>\n            <returns>the converted object</returns>\n            <remarks>\n            <para>\n            Converts the <paramref name=\"source\"/> to the type supported\n            by this converter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the sourceType be converted to an <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <param name=\"sourceType\">the source to be to be converted</param>\r\n            <returns><c>true</c> if the source type can be converted to <see cref=\"T:log4net.Layout.IRawLayout\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the <paramref name=\"sourceType\"/> can be converted to a\r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/>. Only <see cref=\"T:log4net.Layout.ILayout\"/> is supported\r\n            as the <paramref name=\"sourceType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the value to a <see cref=\"T:log4net.Layout.IRawLayout\"/> object\r\n            </summary>\r\n            <param name=\"source\">the value to convert</param>\r\n            <returns>the <see cref=\"T:log4net.Layout.IRawLayout\"/> object</returns>\r\n            <remarks>\r\n            <para>\r\n            Convert the <paramref name=\"source\"/> object to a \r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/> object. If the <paramref name=\"source\"/> object\r\n            is a <see cref=\"T:log4net.Layout.ILayout\"/> then the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>\r\n            is used to adapt between the two interfaces, otherwise an\r\n            exception is thrown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawPropertyLayout\">\r\n            <summary>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.#ctor\">\r\n            <summary>\n            Constructs a RawPropertyLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Lookup the property for <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns property value</returns>\r\n            <remarks>\r\n            <para>\r\n            Looks up and returns the object value of the property\r\n            named <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>. If there is no property defined\r\n            with than name then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.RawPropertyLayout.Key\">\r\n            <summary>\r\n            The name of the value to lookup in the LoggingEvent Properties collection.\r\n            </summary>\r\n            <value>\r\n            Value to lookup in the LoggingEvent Properties collection\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            String name of the property to lookup in the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.#ctor\">\r\n            <summary>\n            Constructs a RawTimeStampLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in local time. To format the time stamp\r\n            in universal time use <see cref=\"T:log4net.Layout.RawUtcTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawUtcTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.#ctor\">\r\n            <summary>\n            Constructs a RawUtcTimeStampLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in universal time. To format the time stamp\r\n            in local time use <see cref=\"T:log4net.Layout.RawTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.SimpleLayout\">\r\n            <summary>\n            A very simple layout\n            </summary>\n            <remarks>\n            <para>\n            SimpleLayout consists of the level of the log statement,\n            followed by \" - \" and then the log message itself. For example,\n            <code>\n            DEBUG - Hello world\n            </code>\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.#ctor\">\r\n            <summary>\n            Constructs a SimpleLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Produces a simple formatted output.\n            </summary>\n            <param name=\"loggingEvent\">the event being logged</param>\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\n            <remarks>\n            <para>\n            Formats the event as the level of the even,\n            followed by \" - \" and then the log message itself. The\n            output is terminated by a newline.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayout\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The output of the <see cref=\"T:log4net.Layout.XmlLayout\"/> consists of a series of \r\n            log4net:event elements. It does not output a complete well-formed XML \r\n            file. The output is designed to be included as an <em>external entity</em>\r\n            in a separate file to form a correct XML file.\r\n            </para>\r\n            <para>\r\n            For example, if <c>abc</c> is the name of the file where\r\n            the <see cref=\"T:log4net.Layout.XmlLayout\"/> output goes, then a well-formed XML file would \r\n            be:\r\n            </para>\r\n            <code lang=\"XML\">\r\n            &lt;?xml version=\"1.0\" ?&gt;\r\n            \r\n            &lt;!DOCTYPE log4net:events SYSTEM \"log4net-events.dtd\" [&lt;!ENTITY data SYSTEM \"abc\"&gt;]&gt;\r\n                        &lt;log4net:events version=\"1.2\" xmlns:log4net=\"http://logging.apache.org/log4net/schemas/log4net-events-1.2&gt;\r\n                &amp;data;\r\n            &lt;/log4net:events&gt;\r\n            </code>\r\n            <para>\r\n            This approach enforces the independence of the <see cref=\"T:log4net.Layout.XmlLayout\"/> \r\n            and the appender where it is embedded.\r\n            </para>\r\n            <para>\r\n            The <c>version</c> attribute helps components to correctly\r\n            interpret output generated by <see cref=\"T:log4net.Layout.XmlLayout\"/>. The value of \r\n            this attribute should be \"1.2\" for release 1.2 and later.\r\n            </para>\r\n            <para>\r\n            Alternatively the <c>Header</c> and <c>Footer</c> properties can be\r\n            configured to output the correct XML header, open tag and close tag.\r\n            When setting the <c>Header</c> and <c>Footer</c> properties it is essential\r\n            that the underlying data store not be appendable otherwise the data\r\n            will become invalid XML.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutBase\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract class that must be subclassed by an implementation \r\n            to conform to a specific schema.\r\n            </para>\r\n            <para>\r\n            Deriving classes must implement the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor\">\r\n            <summary>\r\n            Protected constructor to support subclasses\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.XmlLayoutBase\"/> class\r\n            with no location info.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor(System.Boolean)\">\r\n            <summary>\n            Protected constructor to support subclasses\n            </summary>\n            <remarks>\n            <para>\n            The <paramref name=\"locationInfo\" /> parameter determines whether \n            location information will be output by the layout. If \n            <paramref name=\"locationInfo\" /> is set to <c>true</c>, then the \n            file name and line number of the statement at the origin of the log \n            statement will be output. \n            </para>\n            <para>\n            If you are embedding this layout within an SMTPAppender\n            then make sure to set the <b>LocationInfo</b> option of that \n            appender as well.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:log4net.Core.LoggingEvent\"/> and write it to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This method creates an <see cref=\"T:System.Xml.XmlTextWriter\"/> that writes to the\r\n            <paramref name=\"writer\"/>. The <see cref=\"T:System.Xml.XmlTextWriter\"/> is passed \r\n            to the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method. Subclasses should override the\r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method rather than this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Subclasses should override this method to format\r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> as XML.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_locationInfo\">\r\n            <summary>\n            Flag to indicate if location information should be included in\n            the XML events.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_invalidCharReplacement\">\r\n            <summary>\n            The string to replace invalid chars with\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\">\r\n            <summary>\r\n            Gets a value indicating whether to include location information in \r\n            the XML events.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if location information should be included in the XML \r\n            events; otherwise, <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If <see cref=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\"/> is set to <c>true</c>, then the file \r\n            name and line number of the statement at the origin of the log \r\n            statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an <c>SMTPAppender</c>\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\">\r\n            <summary>\n            The string to replace characters that can not be expressed in XML with.\n            <remarks>\n            <para>\n            Not all characters may be expressed in XML. This property contains the\n            string to replace those that can not with. This defaults to a ?. Set it\n            to the empty string to simply remove offending characters. For more\n            details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets\n            Character replacement will occur in  the log message, the property names \n            and the property values.\n            </para>\n            </remarks>\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.ContentType\">\r\n            <summary>\n            Gets the content type output by this layout. \n            </summary>\n            <value>\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\n            </value>\n            <remarks>\n            <para>\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor\">\r\n            <summary>\n            Constructs an XmlLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor(System.Boolean)\">\r\n            <summary>\n            Constructs an XmlLayout.\n            </summary>\n            <remarks>\n            <para>\n            The <b>LocationInfo</b> option takes a boolean value. By\n            default, it is set to false which means there will be no location\n            information output by this layout. If the the option is set to\n            true, then the file name and line number of the statement\n            at the origin of the log statement will be output. \n            </para>\n            <para>\n            If you are embedding this layout within an SmtpAppender\n            then make sure to set the <b>LocationInfo</b> option of that \n            appender as well.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Builds a cache of the element names\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Override the base class <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method\r\n            to write the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the <see cref=\"T:System.Xml.XmlWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayout.m_prefix\">\r\n            <summary>\n            The prefix to use for all generated element names\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Prefix\">\r\n            <summary>\n            The prefix to use for all element names\n            </summary>\n            <remarks>\n            <para>\n            The default prefix is <b>log4net</b>. Set this property\n            to change the prefix. If the prefix is set to an empty string\n            then no prefix will be written.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeMessage\">\r\n            <summary>\r\n            Set whether or not to base64 encode the message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the log message will be written as text to the xml\r\n            output. This can cause problems when the message contains binary\r\n            data. By setting this to true the contents of the message will be\r\n            base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the log message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeProperties\">\r\n            <summary>\r\n            Set whether or not to base64 encode the property values.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the properties will be written as text to the xml\r\n            output. This can cause problems when one or more properties contain\r\n            binary data. By setting this to true the values of the properties\r\n            will be base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the property values.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutSchemaLog4j\">\r\n            <summary>\n            Layout that formats the log events as XML elements compatible with the log4j schema\n            </summary>\n            <remarks>\n            <para>\n            Formats the log events according to the http://logging.apache.org/log4j schema.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutSchemaLog4j.s_date1970\">\r\n            <summary>\n            The 1st of January 1970 in UTC\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor\">\r\n            <summary>\n            Constructs an XMLLayoutSchemaLog4j\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor(System.Boolean)\">\r\n            <summary>\n            Constructs an XMLLayoutSchemaLog4j.\n            </summary>\n            <remarks>\n            <para>\n            The <b>LocationInfo</b> option takes a boolean value. By\n            default, it is set to false which means there will be no location\n            information output by this layout. If the the option is set to\n            true, then the file name and line number of the statement\n            at the origin of the log statement will be output. \n            </para>\n            <para>\n            If you are embedding this layout within an SMTPAppender\n            then make sure to set the <b>LocationInfo</b> option of that \n            appender as well.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Actually do the writing of the xml\n            </summary>\n            <param name=\"writer\">the writer to use</param>\n            <param name=\"loggingEvent\">the event to write</param>\n            <remarks>\n            <para>\n            Generate XML that is compatible with the log4j schema.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutSchemaLog4j.Version\">\r\n            <summary>\n            The version of the log4j schema to use.\n            </summary>\n            <remarks>\n            <para>\n            Only version 1.2 of the log4j schema is supported.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.DefaultRenderer\">\r\n            <summary>\r\n            The default object Renderer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default renderer supports rendering objects and collections to strings.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\"/> method for details of the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.IObjectRenderer\">\r\n            <summary>\r\n            Implement this interface in order to render objects as strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Certain types require special case conversion to\r\n            string form. This conversion is done by an object renderer.\r\n            Object renderers implement the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.IObjectRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a \r\n            string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            <para>\r\n            The default renderer supports rendering objects to strings as follows:\r\n            </para>\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Rendered String</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term><c>null</c></term>\r\n            \t\t<description>\r\n            \t\t<para>\"(null)\"</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Array\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tFor a one dimensional array this is the\r\n            \t\tarray type name, an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace. \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>int[] {1, 2, 3}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tIf the array is not one dimensional the \r\n            \t\t<c>Array.ToString()</c> is returned.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.IEnumerable\"/>, <see cref=\"T:System.Collections.ICollection\"/> &amp; <see cref=\"T:System.Collections.IEnumerator\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>{a, b, c}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tAll collection classes that implement <see cref=\"T:System.Collections.ICollection\"/> its subclasses, \r\n            \t\tor generic equivalents all implement the <see cref=\"T:System.Collections.IEnumerable\"/> interface.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.DictionaryEntry\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as the key, an equals sign ('='), and the value (using the appropriate\r\n            \t\trenderer). \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>key=value</c>.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\t<para><c>Object.ToString()</c></para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderArray(log4net.ObjectRenderer.RendererMap,System.Array,System.IO.TextWriter)\">\r\n            <summary>\n            Render the array argument into a string\n            </summary>\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\n            <param name=\"array\">the array to render</param>\n            <param name=\"writer\">The writer to render to</param>\n            <remarks>\n            <para>\n            For a one dimensional array this is the\n            array type name, an open brace, followed by a comma\n            separated list of the elements (using the appropriate\n            renderer), followed by a close brace. For example:\n            <c>int[] {1, 2, 3}</c>.\n            </para>\n            <para>\n            If the array is not one dimensional the \n            <c>Array.ToString()</c> is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderEnumerator(log4net.ObjectRenderer.RendererMap,System.Collections.IEnumerator,System.IO.TextWriter)\">\r\n            <summary>\n            Render the enumerator argument into a string\n            </summary>\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\n            <param name=\"enumerator\">the enumerator to render</param>\n            <param name=\"writer\">The writer to render to</param>\n            <remarks>\n            <para>\n            Rendered as an open brace, followed by a comma\n            separated list of the elements (using the appropriate\n            renderer), followed by a close brace. For example:\n            <c>{a, b, c}</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderDictionaryEntry(log4net.ObjectRenderer.RendererMap,System.Collections.DictionaryEntry,System.IO.TextWriter)\">\r\n            <summary>\n            Render the DictionaryEntry argument into a string\n            </summary>\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\n            <param name=\"entry\">the DictionaryEntry to render</param>\n            <param name=\"writer\">The writer to render to</param>\n            <remarks>\n            <para>\n            Render the key, an equals sign ('='), and the value (using the appropriate\n            renderer). For example: <c>key=value</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.RendererMap\">\r\n            <summary>\r\n            Map class objects to an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a mapping between types that require special\r\n            rendering and the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> that\r\n            is used to render them.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/> method is used to render an\r\n            <c>object</c> using the appropriate renderers defined in this map.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.#ctor\">\r\n            <summary>\n            Default Constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <returns>the object rendered as a string</returns>\r\n            <remarks>\r\n            <para>\r\n            This is a convenience method used to render an object to a string.\r\n            The alternative method <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            should be used when streaming output to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Find the appropriate renderer for the type of the\r\n            <paramref name=\"obj\"/> parameter. This is accomplished by calling the\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> method. Once a renderer is found, it is\r\n            applied on the object <paramref name=\"obj\"/> and the result is returned\r\n            as a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Object)\">\r\n            <summary>\r\n            Gets the renderer for the specified object type\r\n            </summary>\r\n            <param name=\"obj\">the object to lookup the renderer for</param>\r\n            <returns>the renderer for <paramref name=\"obj\"/></returns>\r\n            <remarks>\r\n            <param>\r\n            Gets the renderer for the specified object type.\r\n            </param>\r\n            <param>\r\n            Syntactic sugar method that calls <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> \r\n            with the type of the object parameter.\r\n            </param>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\">\r\n            <summary>\r\n            Gets the renderer for the specified type\r\n            </summary>\r\n            <param name=\"type\">the type to lookup the renderer for</param>\r\n            <returns>the renderer for the specified type</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the renderer for the specified type.\r\n            If no specific renderer has been defined the\r\n            <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.SearchTypeAndInterfaces(System.Type)\">\r\n            <summary>\n            Internal function to recursively search interfaces\n            </summary>\n            <param name=\"type\">the type to lookup the renderer for</param>\n            <returns>the renderer for the specified type</returns>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Clear\">\r\n            <summary>\r\n            Clear the map of renderers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the custom renderers defined by using\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\"/>. The <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/>\r\n            cannot be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\r\n            Register an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> for <paramref name=\"typeToRender\"/>. \r\n            </summary>\r\n            <param name=\"typeToRender\">the type that will be rendered by <paramref name=\"renderer\"/></param>\r\n            <param name=\"renderer\">the renderer for <paramref name=\"typeToRender\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Register an object renderer for a specific source type.\r\n            This renderer will be returned from a call to <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/>\r\n            specifying the same <paramref name=\"typeToRender\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\">\r\n            <summary>\n            Get the default renderer instance\n            </summary>\n            <value>the default renderer</value>\n            <remarks>\n            <para>\n            Get the default renderer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPlugin\">\r\n            <summary>\r\n            Interface implemented by logger repository plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Plugins define additional behavior that can be associated\r\n            with a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The <see cref=\"T:log4net.Plugin.PluginMap\"/> held by the <see cref=\"P:log4net.Repository.ILoggerRepository.PluginMap\"/>\r\n            property is used to store the plugins for a repository.\r\n            </para>\r\n            <para>\r\n            The <c>log4net.Config.PluginAttribute</c> can be used to\r\n            attach plugins to repositories created using configuration\r\n            attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches the plugin to the specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Shutdown\">\r\n            <summary>\n            Is called when the plugin is to shutdown.\n            </summary>\n            <remarks>\n            <para>\n            This method is called to notify the plugin that \n            it should stop operating and should detach from\n            the repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Plugin.IPlugin.Name\">\r\n            <summary>\r\n            Gets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ReadOnly(log4net.Plugin.PluginCollection)\">\r\n            <summary>\n            Creates a read-only wrapper for a <c>PluginCollection</c> instance.\n            </summary>\n            <param name=\"list\">list to create a readonly wrapper arround</param>\n            <returns>\n            A <c>PluginCollection</c> wrapper that is read-only.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor\">\r\n            <summary>\n            Initializes a new instance of the <c>PluginCollection</c> class\n            that is empty and has the default initial capacity.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Int32)\">\r\n            <summary>\n            Initializes a new instance of the <c>PluginCollection</c> class\n            that has the specified initial capacity.\n            </summary>\n            <param name=\"capacity\">\n            The number of elements that the new <c>PluginCollection</c> is initially capable of storing.\n            </param>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>PluginCollection</c> class\n            that contains elements copied from the specified <c>PluginCollection</c>.\n            </summary>\n            <param name=\"c\">The <c>PluginCollection</c> whose elements are copied to the new collection.</param>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection.Tag)\">\r\n            <summary>\n            Allow subclasses to avoid our default constructors\n            </summary>\n            <param name=\"tag\"></param>\n            <exclude/>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the end of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clear\">\r\n            <summary>\n            Removes all elements from the <c>PluginCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Plugin.PluginCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Contains(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Plugin.IPlugin\"/> is in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>PluginCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IndexOf(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to locate in the <c>PluginCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>PluginCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Insert(System.Int32,log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Inserts an element into the <c>PluginCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Plugin.IPlugin\"/> from the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the <c>PluginCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Plugin.IPlugin\"/> was not found in the <c>PluginCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>PluginCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Plugin.PluginCollection.Enumerator\"/> for the entire <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>PluginCollection</c> to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>PluginCollection</c> whose elements should be added to the end of the current <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> array to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> collection to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.TrimToSize\">\r\n            <summary>\n            Sets the capacity to the actual number of elements.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Count\">\r\n            <summary>\n            Gets the number of elements actually contained in the <c>PluginCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsSynchronized\">\r\n            <summary>\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\n            </summary>\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.SyncRoot\">\r\n            <summary>\n            Gets an object that can be used to synchronize access to the collection.\n            </summary>\n            <value>\n            An object that can be used to synchronize access to the collection.\n            </value>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </value>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsFixedSize\">\r\n            <summary>\n            Gets a value indicating whether the collection has a fixed size.\n            </summary>\n            <value><c>true</c> if the collection has a fixed size; otherwise, <c>false</c>. The default is <c>false</c>.</value>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsReadOnly\">\r\n            <summary>\n            Gets a value indicating whether the IList is read-only.\n            </summary>\n            <value><c>true</c> if the collection is read-only; otherwise, <c>false</c>. The default is <c>false</c>.</value>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Capacity\">\r\n            <summary>\n            Gets or sets the number of elements the <c>PluginCollection</c> can contain.\n            </summary>\n            <value>\n            The number of elements the <c>PluginCollection</c> can contain.\n            </value>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Tag\">\r\n            <summary>\n            Type visible only to our subclasses\n            Used to access protected constructor\n            </summary>\n            <exclude/>\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginCollection.Tag.Default\">\r\n            <summary>\n            A value\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>Enumerator</c> class.\n            </summary>\n            <param name=\"tc\"></param>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Enumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n            <value>\n            The current element in the collection.\n            </value>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.ReadOnlyPluginCollection\">\r\n            <exclude/>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginMap\">\r\n            <summary>\n            Map of repository plugins.\n            </summary>\n            <remarks>\n            <para>\n            This class is a name keyed map of the plugins that are\n            attached to a repository.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository that the plugins should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Plugin.PluginMap\"/> class with a \r\n            repository that the plugins should be attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to add to the map.</param>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> will be attached to the repository when added.\r\n            </para>\r\n            <para>\r\n            If there already exists a plugin with the same name \r\n            attached to the repository then the old plugin will\r\n            be <see cref=\"M:log4net.Plugin.IPlugin.Shutdown\"/> and replaced with\r\n            the new plugin.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes a <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the map.</param>\r\n            <remarks>\r\n            <para>\r\n            Remove a specific plugin from this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.Item(System.String)\">\r\n            <summary>\r\n            Gets a <see cref=\"T:log4net.Plugin.IPlugin\"/> by name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Plugin.IPlugin\"/> to lookup.</param>\r\n            <returns>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map with the name specified, or \r\n            <c>null</c> if no plugin is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a plugin by name. If the plugin is not found <c>null</c>\r\n            will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.AllPlugins\">\r\n            <summary>\r\n            Gets all possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <value>All possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.</value>\r\n            <remarks>\r\n            <para>\r\n            Get a collection of all the plugins defined in this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginSkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            interface. This base class can be used by implementors\r\n            of the <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.#ctor(System.String)\">\r\n            <summary>\n            Constructor\n            </summary>\n            <param name=\"name\">the name of the plugin</param>\n            <remarks>\n            Initializes a new Plugin with the specified name.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Shutdown\">\r\n            <summary>\n            Is called when the plugin is to shutdown.\n            </summary>\n            <remarks>\n            <para>\n            This method is called to notify the plugin that \n            it should stop operating and should detach from\n            the repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_name\">\r\n            <summary>\n            The name of this plugin.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_repository\">\r\n            <summary>\n            The repository this plugin is attached to.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.Name\">\r\n            <summary>\r\n            Gets or sets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            <para>\r\n            The name of the plugin must not change one the \r\n            plugin has been attached to a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.LoggerRepository\">\r\n            <summary>\r\n            The repository for this plugin\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is attached to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is \r\n            attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin\">\r\n            <summary>\r\n            Plugin that listens for events from the <see cref=\"T:log4net.Appender.RemotingAppender\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This plugin publishes an instance of <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/> \r\n            on a specified <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/>. This listens for logging events delivered from\r\n            a remote <see cref=\"T:log4net.Appender.RemotingAppender\"/>.\r\n            </para>\r\n            <para>\r\n            When an event is received it is relogged within the attached repository\r\n            as if it had been raised locally.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> property must be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor(System.String)\">\r\n            <summary>\r\n            Construct with sink Uri.\r\n            </summary>\r\n            <param name=\"sinkUri\">The name to publish the sink under in the remoting infrastructure. \r\n            See <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> for more details.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class\r\n            with specified name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Shutdown\">\r\n            <summary>\n            Is called when the plugin is to shutdown.\n            </summary>\n            <remarks>\n            <para>\n            When the plugin is shutdown the remote logging\n            sink is disconnected.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.declaringType\">\r\n            <summary>\n            The fully qualified type of the RemoteLoggingServerPlugin class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\">\r\n            <summary>\r\n            Gets or sets the URI of this sink.\r\n            </summary>\r\n            <value>\r\n            The URI of this sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the name under which the object is marshaled.\r\n            <see cref=\"M:System.Runtime.Remoting.RemotingServices.Marshal(System.MarshalByRefObject,System.String,System.Type)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\">\r\n            <summary>\r\n            Delivers <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to listen for logging events\r\n            and deliver them to the local repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository to log to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\"/> for the\r\n            specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Logs the events to the repository.\r\n            </summary>\r\n            <param name=\"events\">The events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            The events passed are logged to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.InitializeLifetimeService\">\r\n            <summary>\n            Obtains a lifetime service object to control the lifetime \n            policy for this instance.\n            </summary>\n            <returns><c>null</c> to indicate that this instance should live forever.</returns>\n            <remarks>\n            <para>\n            Obtains a lifetime service object to control the lifetime \n            policy for this instance. This object should live forever\n            therefore this implementation returns <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.m_repository\">\r\n            <summary>\r\n            The underlying <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that events should\r\n            be logged to.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This default implementation of the <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            interface is used to create the default subclass\r\n            of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ILoggerFactory\">\r\n            <summary>\r\n            Interface abstracts creation of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to \r\n            create new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> objects.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\"/> method is called\r\n            to create a named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            <para>\r\n            Implement this interface to create new subclasses of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\">\r\n            <summary>\r\n            Default internal subclass of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This subclass has no additional behavior over the\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class but does allow instances\r\n            to be created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Logger\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.Core.ILogger\"/> used by <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to provide implementation of <see cref=\"T:log4net.Core.ILogger\"/>\r\n            interface. Applications should use <see cref=\"T:log4net.LogManager\"/> to get\r\n            logger instances.\r\n            </para>\r\n            <para>\r\n            This is one of the central classes in the log4net implementation. One of the\r\n            distinctive features of log4net are hierarchical loggers and their\r\n            evaluation. The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> organizes the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            instances into a rooted tree hierarchy.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class is abstract. Only concrete subclasses of\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> can be created. The <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            is used to create instances of this type for the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.#ctor(System.String)\">\r\n            <summary>\r\n            This constructor created a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance and\r\n            sets its name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is protected and designed to be used by\r\n            a subclass that is not abstract.\r\n            </para>\r\n            <para>\r\n            Loggers are constructed by <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> \r\n            objects. See <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> for the default\r\n            logger creator.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\n            Logger instance.\n            </summary>\n            <param name=\"newAppender\">An appender to add to this logger</param>\n            <remarks>\n            <para>\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\n            Logger instance.\n            </para>\n            <para>\n            If <paramref name=\"newAppender\"/> is already in the list of\n            appenders, then it won't be added again.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.GetAppender(System.String)\">\r\n            <summary>\n            Look for the appender named as <c>name</c>\n            </summary>\n            <param name=\"name\">The name of the appender to lookup</param>\n            <returns>The appender with the name specified, or <c>null</c>.</returns>\n            <remarks>\n            <para>\n            Returns the named appender, or null if the appender is not found.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAllAppenders\">\r\n            <summary>\n            Remove all previously added appenders from this Logger instance.\n            </summary>\n            <remarks>\n            <para>\n            Remove all previously added appenders from this Logger instance.\n            </para>\n            <para>\n            This is useful when re-reading configuration information.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the named appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\n            This generic form is intended to be used by wrappers.\n            </summary>\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\n            the stack boundary into the logging system for this call.</param>\n            <param name=\"level\">The level of the message to be logged.</param>\n            <param name=\"message\">The message object to log.</param>\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\n            <remarks>\n            <para>\n            Generate a logging event for the specified <paramref name=\"level\"/> using\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\n            </para>\n            <para>\n            This method must not throw any exception to the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            This is the most generic printing method that is intended to be used \n            by wrappers.\n            </summary>\n            <param name=\"logEvent\">The event being logged.</param>\n            <remarks>\n            <para>\n            Logs the specified logging event through this logger.\n            </para>\n            <para>\n            This method must not throw any exception to the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CallAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Deliver the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Call the appenders in the hierarchy starting at\r\n            <c>this</c>. If no appenders could be found, emit a\r\n            warning.\r\n            </para>\r\n            <para>\r\n            This method calls all the appenders inherited from the\r\n            hierarchy circumventing any evaluation of whether to log or not\r\n            to log the particular log request.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CloseNestedAppenders\">\r\n            <summary>\r\n            Closes all attached appenders implementing the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to ensure that the appenders are correctly shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\n            This is the most generic printing method. This generic form is intended to be used by wrappers\n            </summary>\n            <param name=\"level\">The level of the message to be logged.</param>\n            <param name=\"message\">The message object to log.</param>\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\n            <remarks>\n            <para>\n            Generate a logging event for the specified <paramref name=\"level\"/> using\n            the <paramref name=\"message\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\n            Creates a new logging event and logs the event without further checks.\n            </summary>\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\n            the stack boundary into the logging system for this call.</param>\n            <param name=\"level\">The level of the message to be logged.</param>\n            <param name=\"message\">The message object to log.</param>\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\n            <remarks>\n            <para>\n            Generates a logging event and delivers it to the attached\n            appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Creates a new logging event and logs the event without further checks.\n            </summary>\n            <param name=\"logEvent\">The event being logged.</param>\n            <remarks>\n            <para>\n            Delivers the logging event to the attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.declaringType\">\r\n            <summary>\n            The fully qualified type of the Logger class.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_name\">\r\n            <summary>\n            The name of this logger.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_level\">\r\n            <summary>\n            The assigned level of this logger. \n            </summary>\n            <remarks>\n            <para>\n            The <c>level</c> variable need not be \n            assigned a value in which case it is inherited \n            form the hierarchy.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_parent\">\r\n            <summary>\n            The parent of this logger.\n            </summary>\n            <remarks>\n            <para>\n            The parent of this logger. \n            All loggers have at least one ancestor which is the root logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_hierarchy\">\r\n            <summary>\n            Loggers need to know what Hierarchy they are in.\n            </summary>\n            <remarks>\n            <para>\n            Loggers need to know what Hierarchy they are in.\n            The hierarchy that this logger is a member of is stored\n            here.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Helper implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_additive\">\r\n            <summary>\n            Flag indicating if child loggers inherit their parents appenders\n            </summary>\n            <remarks>\n            <para>\n            Additivity is set to true by default, that is children inherit\n            the appenders of their ancestors by default. If this variable is\n            set to <c>false</c> then the appenders found in the\n            ancestors of this logger are not used. However, the children\n            of this logger will inherit its appenders, unless the children\n            have their additivity flag set to <c>false</c> too. See\n            the user manual for more details.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderLock\">\r\n            <summary>\n            Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Parent\">\r\n            <summary>\n            Gets or sets the parent logger in the hierarchy.\n            </summary>\n            <value>\n            The parent logger in the hierarchy.\n            </value>\n            <remarks>\n            <para>\n            Part of the Composite pattern that makes the hierarchy.\n            The hierarchy is parent linked rather than child linked.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Additivity\">\r\n            <summary>\n            Gets or sets a value indicating if child loggers inherit their parent's appenders.\n            </summary>\n            <value>\n            <c>true</c> if child loggers inherit their parent's appenders.\n            </value>\n            <remarks>\n            <para>\n            Additivity is set to <c>true</c> by default, that is children inherit\n            the appenders of their ancestors by default. If this variable is\n            set to <c>false</c> then the appenders found in the\n            ancestors of this logger are not used. However, the children\n            of this logger will inherit its appenders, unless the children\n            have their additivity flag set to <c>false</c> too. See\n            the user manual for more details.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.EffectiveLevel\">\r\n            <summary>\n            Gets the effective level for this logger.\n            </summary>\n            <returns>The nearest level in the logger hierarchy.</returns>\n            <remarks>\n            <para>\n            Starting from this logger, searches the logger hierarchy for a\n            non-null level and returns it. Otherwise, returns the level of the\n            root logger.\n            </para>\n            <para>The Logger class is designed so that this method executes as\n            quickly as possible.</para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>The hierarchy that this logger belongs to.</value>\r\n            <remarks>\r\n            <para>\r\n            This logger must be attached to a single <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>, if any, for this Logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> of this logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> can be <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Appenders\">\r\n            <summary>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <returns>A collection of the appenders in this logger</returns>\r\n            <remarks>\r\n            <para>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>. If no appenders \r\n            can be found, then a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Name\">\r\n            <summary>\n            Gets the logger name.\n            </summary>\n            <value>\n            The name of the logger.\n            </value>\n            <remarks>\n            <para>\n            The name of this logger\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl.#ctor(System.String)\">\r\n            <summary>\r\n            Construct a new Logger\r\n            </summary>\r\n            <param name=\"name\">the name of the logger</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\"/> class\r\n            with the specified name. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger creation event notifications.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> in which the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> has been created.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event args that hold the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event is raised every time a\r\n            <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.LoggerCreationEventArgs.m_log\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerCreationEventArgs.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"log\">The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event argument \r\n            class,with the specified <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy\">\r\n            <summary>\r\n            Hierarchical organization of loggers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <i>The casual user should not have to deal with this class\r\n            directly.</i>\r\n            </para>\r\n            <para>\r\n            This class is specialized in retrieving loggers by name and\r\n            also maintaining the logger hierarchy. Implements the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            The structure of the logger hierarchy is maintained by the\r\n            <see cref=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\"/> method. The hierarchy is such that children\r\n            link to their parent but parents do not have any references to their\r\n            children. Moreover, loggers can be instantiated in any order, in\r\n            particular descendant before ancestor.\r\n            </para>\r\n            <para>\r\n            In case a descendant is created before a particular ancestor,\r\n            then it creates a provision node for the ancestor and adds itself\r\n            to the provision node. Other descendants of the same ancestor add\r\n            themselves to the previously created provision node.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositorySkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            Skeleton implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            All <see cref=\"T:log4net.Repository.ILoggerRepository\"/> types can extend this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.ILoggerRepository\">\r\n            <summary>\r\n            Interface implemented by logger repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is implemented by logger repositories. e.g. \r\n            <see cref=\"N:log4net.Repository.Hierarchy\"/>.\r\n            </para>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.LogManager\"/>\r\n            to obtain <see cref=\"T:log4net.ILog\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Exists(System.String)\">\r\n            <summary>\n            Check if the named logger exists in the repository. If so return\n            its reference, otherwise returns <c>null</c>.\n            </summary>\n            <param name=\"name\">The name of the logger to lookup</param>\n            <returns>The Logger object with the name specified</returns>\n            <remarks>\n            <para>\n            If the names logger exists it is returned, otherwise\n            <c>null</c> is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetCurrentLoggers\">\r\n            <summary>\n            Returns all the currently defined loggers as an Array.\n            </summary>\n            <returns>All the defined loggers</returns>\n            <remarks>\n            <para>\n            Returns all the currently defined loggers as an Array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetLogger(System.String)\">\r\n            <summary>\n            Returns a named logger instance\n            </summary>\n            <param name=\"name\">The name of the logger to retrieve</param>\n            <returns>The logger object with the name specified</returns>\n            <remarks>\n            <para>\n            Returns a named logger instance.\n            </para>\n            <para>\n            If a logger of that name already exists, then it will be\n            returned.  Otherwise, a new logger will be instantiated and\n            then linked with its existing ancestors as well as children.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Shutdown\">\r\n            <summary>Shutdown the repository</summary>\r\n            <remarks>\r\n            <para>\r\n            Shutting down a repository will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the\r\n            application exists. Otherwise, pending logging events might be\r\n            lost.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.ILoggerRepository.Shutdown\"/> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.ResetConfiguration\">\r\n            <summary>\n            Reset the repositories configuration to a default state\n            </summary>\n            <remarks>\n            <para>\n            Reset all values contained in this instance to their\n            default state.\n            </para>\n            <para>\n            Existing loggers are not removed. They are just reset.\n            </para>\n            <para>\n            This method should be used sparingly and with care as it will\n            block all logging until it is completed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the <see cref=\"T:log4net.Core.LoggingEvent\"/> through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetAppenders\">\r\n            <summary>\n            Returns all the Appenders that are configured as an Array.\n            </summary>\n            <returns>All the Appenders</returns>\n            <remarks>\n            <para>\n            Returns all the Appenders that are configured as an Array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Name\">\r\n            <summary>\n            The name of the repository\n            </summary>\n            <value>\n            The name of the repository\n            </value>\n            <remarks>\n            <para>\n            The name of the repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Threshold\">\r\n            <summary>\n            The threshold for all events in this repository\n            </summary>\n            <value>\n            The threshold for all events in this repository\n            </value>\n            <remarks>\n            <para>\n            The threshold for all events in this repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Configured\">\r\n            <summary>\n            Flag indicates if this repository has been configured.\n            </summary>\n            <value>\n            Flag indicates if this repository has been configured.\n            </value>\n            <remarks>\n            <para>\n            Flag indicates if this repository has been configured.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.ConfigurationMessages\">\r\n            <summary>\n            Collection of internal messages captured during the most \n            recent configuration process.\n            </summary>\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\">\r\n            <summary>\n            Event to notify that the repository has been shutdown.\n            </summary>\n            <value>\n            Event to notify that the repository has been shutdown.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository has been shutdown.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationReset\">\r\n            <summary>\n            Event to notify that the repository has had its configuration reset.\n            </summary>\n            <value>\n            Event to notify that the repository has had its configuration reset.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository's configuration has been\n            reset to default.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\">\r\n            <summary>\n            Event to notify that the repository has had its configuration changed.\n            </summary>\n            <value>\n            Event to notify that the repository has had its configuration changed.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository's configuration has been changed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Properties\">\r\n            <summary>\n            Repository specific properties\n            </summary>\n            <value>\n            Repository specific properties\n            </value>\n            <remarks>\n            <para>\n            These properties can be specified on a repository specific basis.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor\">\r\n            <summary>\n            Default Constructor\n            </summary>\n            <remarks>\n            <para>\n            Initializes the repository with default (empty) properties.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\n            Construct the repository using specific properties\n            </summary>\n            <param name=\"properties\">the properties to set for this repository</param>\n            <remarks>\n            <para>\n            Initializes the repository with specified properties.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Exists(System.String)\">\r\n            <summary>\n            Test if logger exists\n            </summary>\n            <param name=\"name\">The name of the logger to lookup</param>\n            <returns>The Logger object with the name specified</returns>\n            <remarks>\n            <para>\n            Check if the named logger exists in the repository. If so return\n            its reference, otherwise returns <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetCurrentLoggers\">\r\n            <summary>\n            Returns all the currently defined loggers in the repository\n            </summary>\n            <returns>All the defined loggers</returns>\n            <remarks>\n            <para>\n            Returns all the currently defined loggers in the repository as an Array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetLogger(System.String)\">\r\n            <summary>\n            Return a new logger instance\n            </summary>\n            <param name=\"name\">The name of the logger to retrieve</param>\n            <returns>The logger object with the name specified</returns>\n            <remarks>\n            <para>\n            Return a new logger instance.\n            </para>\n            <para>\n            If a logger of that name already exists, then it will be\n            returned. Otherwise, a new logger will be instantiated and\n            then linked with its existing ancestors as well as children.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Shutdown\">\r\n            <summary>\r\n            Shutdown the repository\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Shutdown the repository. Can be overridden in a subclass.\r\n            This base class implementation notifies the <see cref=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\"/>\r\n            listeners and all attached plugins of the shutdown event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.ResetConfiguration\">\r\n            <summary>\n            Reset the repositories configuration to a default state\n            </summary>\n            <remarks>\n            <para>\n            Reset all values contained in this instance to their\n            default state.\n            </para>\n            <para>\n            Existing loggers are not removed. They are just reset.\n            </para>\n            <para>\n            This method should be used sparingly and with care as it will\n            block all logging until it is completed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetAppenders\">\r\n            <summary>\n            Returns all the Appenders that are configured as an Array.\n            </summary>\n            <returns>All the Appenders</returns>\n            <remarks>\n            <para>\n            Returns all the Appenders that are configured as an Array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.LoggerRepositorySkeleton.declaringType\">\r\n            <summary>\n            The fully qualified type of the LoggerRepositorySkeleton class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.AddRenderer(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\n            Adds an object renderer for a specific class. \n            </summary>\n            <param name=\"typeToRender\">The type that will be rendered by the renderer supplied.</param>\n            <param name=\"rendererInstance\">The object renderer used to render the object.</param>\n            <remarks>\n            <para>\n            Adds an object renderer for a specific class. \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnShutdown(System.EventArgs)\">\r\n            <summary>\n            Notify the registered listeners that the repository is shutting down\n            </summary>\n            <param name=\"e\">Empty EventArgs</param>\n            <remarks>\n            <para>\n            Notify any listeners that this repository is shutting down.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationReset(System.EventArgs)\">\r\n            <summary>\n            Notify the registered listeners that the repository has had its configuration reset\n            </summary>\n            <param name=\"e\">Empty EventArgs</param>\n            <remarks>\n            <para>\n            Notify any listeners that this repository's configuration has been reset.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationChanged(System.EventArgs)\">\r\n            <summary>\n            Notify the registered listeners that the repository has had its configuration changed\n            </summary>\n            <param name=\"e\">Empty EventArgs</param>\n            <remarks>\n            <para>\n            Notify any listeners that this repository's configuration has changed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.RaiseConfigurationChanged(System.EventArgs)\">\r\n            <summary>\n            Raise a configuration changed event on this repository\n            </summary>\n            <param name=\"e\">EventArgs.Empty</param>\n            <remarks>\n            <para>\n            Applications that programmatically change the configuration of the repository should\n            raise this event notification to notify listeners.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Name\">\r\n            <summary>\r\n            The name of the repository\r\n            </summary>\r\n            <value>\r\n            The string name of the repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this repository. The name is\r\n            used to store and lookup the repositories \r\n            stored by the <see cref=\"T:log4net.Core.IRepositorySelector\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Threshold\">\r\n            <summary>\n            The threshold for all events in this repository\n            </summary>\n            <value>\n            The threshold for all events in this repository\n            </value>\n            <remarks>\n            <para>\n            The threshold for all events in this repository\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Configured\">\r\n            <summary>\n            Flag indicates if this repository has been configured.\n            </summary>\n            <value>\n            Flag indicates if this repository has been configured.\n            </value>\n            <remarks>\n            <para>\n            Flag indicates if this repository has been configured.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.ConfigurationMessages\">\r\n            <summary>\n            Contains a list of internal messages captures during the \n            last configuration.\n            </summary>\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\">\r\n            <summary>\n            Event to notify that the repository has been shutdown.\n            </summary>\n            <value>\n            Event to notify that the repository has been shutdown.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository has been shutdown.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationReset\">\r\n            <summary>\n            Event to notify that the repository has had its configuration reset.\n            </summary>\n            <value>\n            Event to notify that the repository has had its configuration reset.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository's configuration has been\n            reset to default.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationChanged\">\r\n            <summary>\n            Event to notify that the repository has had its configuration changed.\n            </summary>\n            <value>\n            Event to notify that the repository has had its configuration changed.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository's configuration has been changed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Properties\">\r\n            <summary>\n            Repository specific properties\n            </summary>\n            <value>\n            Repository specific properties\n            </value>\n            <remarks>\n            These properties can be specified on a repository specific basis\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Repository.IBasicRepositoryConfigurator\">\r\n            <summary>\r\n            Basic Configurator interface for repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by basic configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            with a default <see cref=\"T:log4net.Appender.IAppender\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.BasicConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\n            Initialize the repository using the specified appender\n            </summary>\n            <param name=\"appender\">the appender to use to log all logging events</param>\n            <remarks>\n            <para>\n            Configure the repository to route all logging events to the\n            specified appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\n            Initialize the repository using the specified appenders\n            </summary>\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\n            <remarks>\n            <para>\n            Configure the repository to route all logging events to the\n            specified appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Repository.IXmlRepositoryConfigurator\">\r\n            <summary>\r\n            Configure repository using XML\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by Xml configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IXmlRepositoryConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Initialize the repository using the specified config\n            </summary>\n            <param name=\"element\">the element containing the root of the config</param>\n            <remarks>\n            <para>\n            The schema for the XML configuration data is defined by\n            the implementation.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Construct with properties\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with a logger factory\r\n            </summary>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with properties and a logger factory\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Exists(System.String)\">\r\n            <summary>\n            Test if a logger exists\n            </summary>\n            <param name=\"name\">The name of the logger to lookup</param>\n            <returns>The Logger object with the name specified</returns>\n            <remarks>\n            <para>\n            Check if the named logger exists in the hierarchy. If so return\n            its reference, otherwise returns <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetCurrentLoggers\">\r\n            <summary>\n            Returns all the currently defined loggers in the hierarchy as an Array\n            </summary>\n            <returns>All the defined loggers</returns>\n            <remarks>\n            <para>\n            Returns all the currently defined loggers in the hierarchy as an Array.\n            The root logger is <b>not</b> included in the returned\n            enumeration.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\">\r\n            <summary>\n            Return a new logger instance named as the first parameter using\n            the default factory.\n            </summary>\n            <remarks>\n            <para>\n            Return a new logger instance named as the first parameter using\n            the default factory.\n            </para>\n            <para>\n            If a logger of that name already exists, then it will be\n            returned.  Otherwise, a new logger will be instantiated and\n            then linked with its existing ancestors as well as children.\n            </para>\n            </remarks>\n            <param name=\"name\">The name of the logger to retrieve</param>\n            <returns>The logger object with the name specified</returns>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Shutdown\">\r\n            <summary>\n            Shutting down a hierarchy will <i>safely</i> close and remove\n            all appenders in all loggers including the root logger.\n            </summary>\n            <remarks>\n            <para>\n            Shutting down a hierarchy will <i>safely</i> close and remove\n            all appenders in all loggers including the root logger.\n            </para>\n            <para>\n            Some appenders need to be closed before the\n            application exists. Otherwise, pending logging events might be\n            lost.\n            </para>\n            <para>\n            The <c>Shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.ResetConfiguration\">\r\n            <summary>\r\n            Reset all values contained in this hierarchy instance to their default.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this hierarchy instance to their\r\n            default.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this hierarchy.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are currently configured\r\n            </summary>\r\n            <returns>An array containing all the currently configured appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the <see cref=\"T:log4net.Appender.IAppender\"/> instances that are currently configured.\r\n            All the loggers are searched for appenders. The appenders may also be containers\r\n            for appenders and these are also searched for additional loggers.\r\n            </para>\r\n            <para>\r\n            The list returned is unordered but does not contain duplicates.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppender(System.Collections.ArrayList,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/>.\r\n            The appender may also be a container.\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"appender\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppenders(System.Collections.ArrayList,log4net.Core.IAppenderAttachable)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/> container\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"container\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender)\">\r\n            <summary>\n            Initialize the log4net system using the specified appender\n            </summary>\n            <param name=\"appender\">the appender to use to log all logging events</param>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\n            Initialize the log4net system using the specified appenders\n            </summary>\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.BasicRepositoryConfigure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IXmlRepositoryConfigurator#Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Initialize the log4net system using the specified config\n            </summary>\n            <param name=\"element\">the element containing the root of the config</param>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.XmlRepositoryConfigure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.IsDisabled(log4net.Core.Level)\">\r\n            <summary>\r\n            Test if this hierarchy is disabled for the specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"level\">The level to check against.</param>\r\n            <returns>\r\n            <c>true</c> if the repository is disabled for the level argument, <c>false</c> otherwise.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If this hierarchy has not been configured then this method will\r\n            always return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This method will return <c>true</c> if this repository is\r\n            disabled for <c>level</c> object passed as parameter and\r\n            <c>false</c> otherwise.\r\n            </para>\r\n            <para>\r\n            See also the <see cref=\"P:log4net.Repository.ILoggerRepository.Threshold\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Clear\">\r\n            <summary>\n            Clear all logger definitions from the internal hashtable\n            </summary>\n            <remarks>\n            <para>\n            This call will clear all logger definitions from the internal\n            hashtable. Invoking this method will irrevocably mess up the\n            logger hierarchy.\n            </para>\n            <para>\n            You should <b>really</b> know what you are doing before\n            invoking this method.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\n            Return a new logger instance named as the first parameter using\n            <paramref name=\"factory\"/>.\n            </summary>\n            <param name=\"name\">The name of the logger to retrieve</param>\n            <param name=\"factory\">The factory that will make the new logger instance</param>\n            <returns>The logger object with the name specified</returns>\n            <remarks>\n            <para>\n            If a logger of that name already exists, then it will be\n            returned. Otherwise, a new logger will be instantiated by the\n            <paramref name=\"factory\"/> parameter and linked with its existing\n            ancestors as well as children.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.OnLoggerCreationEvent(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\n            Sends a logger creation event to all registered listeners\n            </summary>\n            <param name=\"logger\">The newly created logger</param>\n            <remarks>\n            Raises the logger creation event.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateParents(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\n            Updates all the parents of the specified logger\n            </summary>\n            <param name=\"log\">The logger to update the parents for</param>\n            <remarks>\n            <para>\n            This method loops through all the <i>potential</i> parents of\n            <paramref name=\"log\"/>. There 3 possible cases:\n            </para>\n            <list type=\"number\">\n            \t<item>\n            \t\t<term>No entry for the potential parent of <paramref name=\"log\"/> exists</term>\n            \t\t<description>\n            \t\tWe create a ProvisionNode for this potential \n            \t\tparent and insert <paramref name=\"log\"/> in that provision node.\n            \t\t</description>\n            \t</item>\n            \t<item>\n            \t\t<term>The entry is of type Logger for the potential parent.</term>\n            \t\t<description>\n            \t\tThe entry is <paramref name=\"log\"/>'s nearest existing parent. We \n            \t\tupdate <paramref name=\"log\"/>'s parent field with this entry. We also break from \n            \t\the loop because updating our parent's parent is our parent's \n            \t\tresponsibility.\n            \t\t</description>\n            \t</item>\n            \t<item>\n            \t\t<term>The entry is of type ProvisionNode for this potential parent.</term>\n            \t\t<description>\n            \t\tWe add <paramref name=\"log\"/> to the list of children for this \n            \t\tpotential parent.\n            \t\t</description>\n            \t</item>\n            </list>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateChildren(log4net.Repository.Hierarchy.ProvisionNode,log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Replace a <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> with a <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> in the hierarchy.\r\n            </summary>\r\n            <param name=\"pn\"></param>\r\n            <param name=\"log\"></param>\r\n            <remarks>\r\n            <para>\r\n            We update the links for all the children that placed themselves\r\n            in the provision node 'pn'. The second argument 'log' is a\r\n            reference for the newly created Logger, parent of all the\r\n            children in 'pn'.\r\n            </para>\r\n            <para>\r\n            We loop on all the children 'c' in 'pn'.\r\n            </para>\r\n            <para>\r\n            If the child 'c' has been already linked to a child of\r\n            'log' then there is no need to update 'c'.\r\n            </para>\r\n            <para>\r\n            Otherwise, we set log's parent field to c's parent and set\r\n            c's parent field to log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddLevel(log4net.Repository.Hierarchy.Hierarchy.LevelEntry)\">\r\n            <summary>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"levelEntry\">the level values</param>\r\n            <remarks>\r\n            <para>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </para>\r\n            <para>\r\n            Supports setting levels via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"propertyEntry\">the property value</param>\r\n            <remarks>\r\n            <para>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument.\r\n            </para>\r\n            <para>\r\n            Supports setting property values via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Hierarchy.declaringType\">\r\n            <summary>\n            The fully qualified type of the Hierarchy class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\">\r\n            <summary>\n            Event used to notify that a logger has been created.\n            </summary>\n            <remarks>\n            <para>\n            Event raised when a logger is created.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.EmittedNoAppenderWarning\">\r\n            <summary>\n            Has no appender warning been emitted\n            </summary>\n            <remarks>\n            <para>\n            Flag to indicate if we have already issued a warning\n            about not having an appender warning.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.Root\">\r\n            <summary>\n            Get the root of this hierarchy\n            </summary>\n            <remarks>\n            <para>\n            Get the root of this hierarchy.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LoggerFactory\">\r\n            <summary>\r\n            Gets or sets the default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> instance.\r\n            </summary>\r\n            <value>The default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/></value>\r\n            <remarks>\r\n            <para>\r\n            The logger factory is used to create logger instances.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\">\r\n            <summary>\n            A class to hold the value, name and display name for a level\n            </summary>\n            <remarks>\n            <para>\n            A class to hold the value, name and display name for a level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.ToString\">\r\n            <summary>\n            Override <c>Object.ToString</c> to return sensible debug info\n            </summary>\n            <returns>string info about this object</returns>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Value\">\r\n            <summary>\n            Value of the level\n            </summary>\n            <remarks>\n            <para>\n            If the value is not set (defaults to -1) the value will be looked\n            up for the current level with the same name.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Name\">\r\n            <summary>\n            Name of the level\n            </summary>\n            <value>\n            The name of the level\n            </value>\n            <remarks>\n            <para>\n            The name of the level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.DisplayName\">\r\n            <summary>\n            Display name for the level\n            </summary>\n            <value>\n            The display name of the level\n            </value>\n            <remarks>\n            <para>\n            The display name of the level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerKey\">\r\n            <summary>\r\n            Used internally to accelerate hash table searches.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to improve performance of \r\n            string keyed hashtables.\r\n            </para>\r\n            <para>\r\n            The hashcode of the string is cached for reuse.\r\n            The string is stored as an interned value.\r\n            When comparing two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> objects for equality \r\n            the reference equality of the interned strings is compared.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.#ctor(System.String)\">\r\n            <summary>\r\n            Construct key with string name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> class \r\n            with the specified name.\r\n            </para>\r\n            <para>\r\n            Stores the hashcode of the string and interns\r\n            the string key to optimize comparisons.\r\n            </para>\r\n            <note>\r\n            The Compact Framework 1.0 the <see cref=\"M:System.String.Intern(System.String)\"/>\r\n            method does not work. On the Compact Framework\r\n            the string keys are not interned nor are they\r\n            compared by reference.\r\n            </note>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.GetHashCode\">\r\n            <summary>\n            Returns a hash code for the current instance.\n            </summary>\n            <returns>A hash code for the current instance.</returns>\n            <remarks>\n            <para>\n            Returns the cached hashcode.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.Equals(System.Object)\">\r\n            <summary>\r\n            Determines whether two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> instances \r\n            are equal.\r\n            </summary>\r\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the references of the interned strings.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ProvisionNode\">\r\n            <summary>\r\n            Provision nodes are used where no logger instance has been specified\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> instances are used in the \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> when there is no specified \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> for that node.\r\n            </para>\r\n            <para>\r\n            A provision node holds a list of child loggers on behalf of\r\n            a logger that does not exist.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ProvisionNode.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Create a new provision node with child node\r\n            </summary>\r\n            <param name=\"log\">A child logger to add to this node.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> class \r\n            with the specified child logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.RootLogger\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> sits at the root of the logger hierarchy tree. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> is a regular <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> except \r\n            that it provides several guarantees.\r\n            </para>\r\n            <para>\r\n            First, it cannot be assigned a <c>null</c>\r\n            level. Second, since the root logger cannot have a parent, the\r\n            <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\"/> property always returns the value of the\r\n            level field without walking the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.RootLogger.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Construct a <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/>\r\n            </summary>\r\n            <param name=\"level\">The level to assign to the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> class with\r\n            the specified logging level.\r\n            </para>\r\n            <para>\r\n            The root logger names itself as \"root\". However, the root\r\n            logger cannot be retrieved by name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.RootLogger.declaringType\">\r\n            <summary>\n            The fully qualified type of the RootLogger class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\">\r\n            <summary>\r\n            Gets the assigned level value without walking the logger hierarchy.\r\n            </summary>\r\n            <value>The assigned level value without walking the logger hierarchy.</value>\r\n            <remarks>\r\n            <para>\r\n            Because the root logger cannot have a parent and its level\r\n            must not be <c>null</c> this property just returns the\r\n            value of <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> for the root logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> of the root logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting the level of the root logger to a <c>null</c> reference\r\n            may have catastrophic results. We prevent this here.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\">\r\n            <summary>\r\n            Initializes the log4net environment using an XML DOM.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> using an XML DOM.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.#ctor(log4net.Repository.Hierarchy.Hierarchy)\">\r\n            <summary>\r\n            Construct the configurator for a hierarchy\r\n            </summary>\r\n            <param name=\"hierarchy\">The hierarchy to build.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\"/> class\r\n            with the specified <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Configure the hierarchy by parsing a DOM tree of XML elements.\n            </summary>\n            <param name=\"element\">The root element to parse.</param>\n            <remarks>\n            <para>\n            Configure the hierarchy by parsing a DOM tree of XML elements.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindAppenderByReference(System.Xml.XmlElement)\">\r\n            <summary>\n            Parse appenders by IDREF.\n            </summary>\n            <param name=\"appenderRef\">The appender ref element.</param>\n            <returns>The instance of the appender that the ref refers to.</returns>\n            <remarks>\n            <para>\n            Parse an XML element that represents an appender and return \n            the appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(System.Xml.XmlElement)\">\r\n            <summary>\n            Parses an appender element.\n            </summary>\n            <param name=\"appenderElement\">The appender element.</param>\n            <returns>The appender instance or <c>null</c> when parsing failed.</returns>\n            <remarks>\n            <para>\n            Parse an XML element that represents an appender and return\n            the appender instance.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLogger(System.Xml.XmlElement)\">\r\n            <summary>\n            Parses a logger element.\n            </summary>\n            <param name=\"loggerElement\">The logger element.</param>\n            <remarks>\n            <para>\n            Parse an XML element that represents a logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRoot(System.Xml.XmlElement)\">\r\n            <summary>\n            Parses the root logger element.\n            </summary>\n            <param name=\"rootElement\">The root element.</param>\n            <remarks>\n            <para>\n            Parse an XML element that represents the root logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseChildrenOfLoggerElement(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\n            Parses the children of a logger element.\n            </summary>\n            <param name=\"catElement\">The category element.</param>\n            <param name=\"log\">The logger instance.</param>\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\n            <remarks>\n            <para>\n            Parse the child elements of a &lt;logger&gt; element.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRenderer(System.Xml.XmlElement)\">\r\n            <summary>\n            Parses an object renderer.\n            </summary>\n            <param name=\"element\">The renderer element.</param>\n            <remarks>\n            <para>\n            Parse an XML element that represents a renderer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLevel(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\n            Parses a level element.\n            </summary>\n            <param name=\"element\">The level element.</param>\n            <param name=\"log\">The logger object to set the level on.</param>\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\n            <remarks>\n            <para>\n            Parse an XML element that represents a level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(System.Xml.XmlElement,System.Object)\">\r\n            <summary>\n            Sets a parameter on an object.\n            </summary>\n            <param name=\"element\">The parameter element.</param>\n            <param name=\"target\">The object to set the parameter on.</param>\n            <remarks>\n            The parameter name must correspond to a writable property\n            on the object. The value of the parameter is a string,\n            therefore this function will attempt to set a string\n            property first. If unable to set a string property it\n            will inspect the property and its argument type. It will\n            attempt to call a static method called <c>Parse</c> on the\n            type of the property. This method will take a single\n            string argument and return a value that can be used to\n            set the property.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.HasAttributesOrElements(System.Xml.XmlElement)\">\r\n            <summary>\n            Test if an element has no attributes or child elements\n            </summary>\n            <param name=\"element\">the element to inspect</param>\n            <returns><c>true</c> if the element has any attributes or child elements, <c>false</c> otherwise</returns>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.IsTypeConstructible(System.Type)\">\r\n            <summary>\r\n            Test if a <see cref=\"T:System.Type\"/> is constructible with <c>Activator.CreateInstance</c>.\r\n            </summary>\r\n            <param name=\"type\">the type to inspect</param>\r\n            <returns><c>true</c> if the type is creatable using a default constructor, <c>false</c> otherwise</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindMethodInfo(System.Type,System.String)\">\r\n            <summary>\n            Look for a method on the <paramref name=\"targetType\"/> that matches the <paramref name=\"name\"/> supplied\n            </summary>\n            <param name=\"targetType\">the type that has the method</param>\n            <param name=\"name\">the name of the method</param>\n            <returns>the method info found</returns>\n            <remarks>\n            <para>\n            The method must be a public instance method on the <paramref name=\"targetType\"/>.\n            The method must be named <paramref name=\"name\"/> or \"Add\" followed by <paramref name=\"name\"/>.\n            The method must take a single parameter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\n            Converts a string value to a target type.\n            </summary>\n            <param name=\"type\">The type of object to convert the string to.</param>\n            <param name=\"value\">The string value to use as the value of the object.</param>\n            <returns>\n            <para>\n            An object of type <paramref name=\"type\"/> with value <paramref name=\"value\"/> or \n            <c>null</c> when the conversion could not be performed.\n            </para>\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(System.Xml.XmlElement,System.Type,System.Type)\">\r\n            <summary>\n            Creates an object as specified in XML.\n            </summary>\n            <param name=\"element\">The XML element that contains the definition of the object.</param>\n            <param name=\"defaultTargetType\">The object type to use if not explicitly specified.</param>\n            <param name=\"typeConstraint\">The type that the returned object must be or must inherit from.</param>\n            <returns>The object or <c>null</c></returns>\n            <remarks>\n            <para>\n            Parse an XML element and create an object instance based on the configuration\n            data.\n            </para>\n            <para>\n            The type of the instance may be specified in the XML. If not\n            specified then the <paramref name=\"defaultTargetType\"/> is used\n            as the type. However the type is specified it must support the\n            <paramref name=\"typeConstraint\"/> type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_appenderBag\">\r\n            <summary>\n            key: appenderName, value: appender.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_hierarchy\">\r\n            <summary>\n            The Hierarchy being configured.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.declaringType\">\r\n            <summary>\n            The fully qualified type of the XmlHierarchyConfigurator class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Repository.ConfigurationChangedEventArgs\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Repository.ConfigurationChangedEventArgs.#ctor(System.Collections.ICollection)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"configurationMessages\"></param>\n        </member>\r\n        <member name=\"P:log4net.Repository.ConfigurationChangedEventArgs.ConfigurationMessages\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryShutdownEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository shutdown event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository shutdown event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationResetEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository configuration reset event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration reset.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository configuration reset event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationChangedEventHandler\">\r\n            <summary>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration changed.</param>\r\n            <param name=\"e\">Empty event arguments.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.AppDomainPatternConverter\">\r\n            <summary>\n            Write the name of the current AppDomain to the output\n            </summary>\n            <remarks>\n            <para>\n            Write the name of the current AppDomain to the output writer\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.AppDomainPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write the name of the current AppDomain to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Writes name of the current AppDomain to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The date and time is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date and time passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the DatePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter\">\r\n            <summary>\r\n            Write an <see cref=\"T:System.Environment.SpecialFolder\"/> folder path to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an special path environment folder path to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output. <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            should be a value in the <see cref=\"T:System.Environment.SpecialFolder\"/> enumeration.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an special path environment folder path to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the special path environment folder path to the output <paramref name=\"writer\"/>.\r\n            The name of the special path environment folder path to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the EnvironmentFolderPathPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentPatternConverter\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an environment variable to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the environment variable to the output <paramref name=\"writer\"/>.\r\n            The name of the environment variable to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the EnvironmentPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.IdentityPatternConverter\">\r\n            <summary>\n            Write the current thread identity to the output\n            </summary>\n            <remarks>\n            <para>\n            Write the current thread identity to the output writer\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.IdentityPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write the current thread identity to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Writes the current thread identity to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.IdentityPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the IdentityPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\">\r\n            <summary>\r\n            Pattern converter for literal string instances in the pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the literal string value specified in the \r\n            <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property to \r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Set the next converter in the chain\r\n            </summary>\r\n            <param name=\"pc\">The next pattern converter in the chain</param>\r\n            <returns>The next pattern converter</returns>\r\n            <remarks>\r\n            <para>\r\n            Special case the building of the pattern converter chain\r\n            for <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> instances. Two adjacent\r\n            literals in the pattern can be represented by a single combined\r\n            pattern converter. This implementation detects when a \r\n            <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> is added to the chain\r\n            after this converter and combines its value with this converter's\r\n            literal value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the literal to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            Override the formatting behavior to ignore the FormattingInfo\r\n            because we have a literal instead.\r\n            </para>\r\n            <para>\r\n            Writes the value of <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Convert this pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            This method is not used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.NewLinePatternConverter\">\r\n            <summary>\r\n            Writes a newline to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the system dependent line terminator to the output.\r\n            This behavior can be overridden by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <listheader>\r\n                <term>Option Value</term>\r\n                <description>Output</description>\r\n              </listheader>\r\n              <item>\r\n                <term>DOS</term>\r\n                <description>DOS or Windows line terminator <c>\"\\r\\n\"</c></description>\r\n              </item>\r\n              <item>\r\n                <term>UNIX</term>\r\n                <description>UNIX line terminator <c>\"\\n\"</c></description>\r\n              </item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.ProcessIdPatternConverter\">\r\n            <summary>\n            Write the current process ID to the output\n            </summary>\n            <remarks>\n            <para>\n            Write the current process ID to the output writer\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write the current process ID to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Write the current process ID to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the ProcessIdPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This pattern converter reads the thread and global properties.\r\n            The thread properties take priority over global properties.\r\n            See <see cref=\"P:log4net.ThreadContext.Properties\"/> for details of the \r\n            thread properties. See <see cref=\"P:log4net.GlobalContext.Properties\"/> for\r\n            details of the global properties.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified then that will be used to\r\n            lookup a single property. If no <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified\r\n            then all properties will be dumped as a list of key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.PropertyPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.RandomStringPatternConverter\">\r\n            <summary>\r\n            A Pattern converter that generates a string of random characters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The converter generates a string of random characters. By default\r\n            the string is length 4. This can be changed by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the string value of the length required.\r\n            </para>\r\n            <para>\r\n            The random characters in the string are limited to uppercase letters\r\n            and numbers only.\r\n            </para>\r\n            <para>\r\n            The random number generator used by this class is not cryptographically secure.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.s_random\">\r\n            <summary>\n            Shared random number generator\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.m_length\">\r\n            <summary>\n            Length of random string to generate. Default length 4.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write a randoim string to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Write a randoim string to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the RandomStringPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UserNamePatternConverter\">\r\n            <summary>\n            Write the current threads username to the output\n            </summary>\n            <remarks>\n            <para>\n            Write the current threads username to the output writer\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UserNamePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write the current threads username to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Write the current threads username to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UserNamePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the UserNamePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the UTC date time to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UtcDatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date and time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date is in Universal time when it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UtcDatePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the UtcDatePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.BooleanConverter\">\r\n            <summary>\r\n            Type converter for Boolean.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <c>bool</c> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the source object to the type supported by this object\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Boolean.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Boolean\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            <summary>\r\n            Exception base type for conversion errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object,System.Exception)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConverterRegistry\">\r\n            <summary>\r\n            Register of type converters for specific types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a registry of type converters used to convert between\r\n            types.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\"/> and \r\n            <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\"/> methods to register new converters.\r\n            The <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\"/> and <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\"/> methods\r\n            lookup appropriate converters to use.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n            <remarks>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/> class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#cctor\">\r\n            <summary>\n            Static constructor.\n            </summary>\n            <remarks>\n            <para>\n            This constructor defines the intrinsic type converters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\">\r\n            <summary>\n            Adds a converter for a specific type.\n            </summary>\n            <param name=\"destinationType\">The type being converted to.</param>\n            <param name=\"converter\">The type converter to use to convert to the destination type.</param>\n            <remarks>\n            <para>\n            Adds a converter instance for a specific type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\">\r\n            <summary>\r\n            Adds a converter for a specific type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <param name=\"converterType\">The type of the type converter to use to convert to the destination type.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a converter <see cref=\"T:System.Type\"/> for a specific type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\">\r\n            <summary>\n            Gets the type converter to use to convert values to the destination type.\n            </summary>\n            <param name=\"sourceType\">The type being converted from.</param>\n            <param name=\"destinationType\">The type being converted to.</param>\n            <returns>\n            The type converter instance to use for type conversions or <c>null</c> \n            if no type converter is found.\n            </returns>\n            <remarks>\n            <para>\n            Gets the type converter to use to convert values to the destination type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\">\r\n            <summary>\n            Gets the type converter to use to convert values to the destination type.\n            </summary>\n            <param name=\"destinationType\">The type being converted to.</param>\n            <returns>\n            The type converter instance to use for type conversions or <c>null</c> \n            if no type converter is found.\n            </returns>\n            <remarks>\n            <para>\n            Gets the type converter to use to convert values to the destination type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConverterFromAttribute(System.Type)\">\r\n            <summary>\n            Lookups the type converter to use as specified by the attributes on the \n            destination type.\n            </summary>\n            <param name=\"destinationType\">The type being converted to.</param>\n            <returns>\n            The type converter instance to use for type conversions or <c>null</c> \n            if no type converter is found.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.CreateConverterInstance(System.Type)\">\r\n            <summary>\r\n            Creates the instance of the type converter.\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The type specified for the type converter must implement \r\n            the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> or <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces \r\n            and must have a public default (no argument) constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.declaringType\">\r\n            <summary>\n            The fully qualified type of the ConverterRegistry class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.s_type2converter\">\r\n            <summary>\r\n            Mapping from <see cref=\"T:System.Type\"/> to type converter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.EncodingConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an encoding</param>\r\n            <returns>the encoding</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Text.Encoding.GetEncoding(System.String)\"/> method to \r\n            convert the <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Text.Encoding\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertTo\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from a single type to arbitrary types.\r\n            See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.CanConvertTo(System.Type)\">\r\n            <summary>\n            Returns whether this converter can convert the object to the specified type\n            </summary>\n            <param name=\"targetType\">A Type that represents the type you want to convert to</param>\n            <returns>true if the conversion is possible</returns>\n            <remarks>\n            <para>\n            Test if the type supported by this converter can be converted to the\n            <paramref name=\"targetType\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\n            Converts the given value object to the specified type, using the arguments\n            </summary>\n            <param name=\"source\">the object to convert</param>\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\n            <returns>the converted object</returns>\n            <remarks>\n            <para>\n            Converts the <paramref name=\"source\"/> (which must be of the type supported\n            by this converter) to the <paramref name=\"targetType\"/> specified..\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IPAddressConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an IPAddress</param>\r\n            <returns>the IPAddress</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Net.IPAddress.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Net.IPAddress\"/>.\r\n            If that fails then the string is resolved as a DNS hostname.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.IPAddressConverter.validIpAddressChars\">\r\n            <summary>\n            Valid characters in an IPv4 or IPv6 address string. (Does not support subnets)\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternLayoutConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Layout.PatternLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternLayout</param>\r\n            <returns>the PatternLayout</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Layout.PatternLayout\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternStringConverter\">\r\n            <summary>\r\n            Convert between string and <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Util.PatternString\"/> type, \r\n            and from a <see cref=\"T:log4net.Util.PatternString\"/> type to a string.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Util.PatternString\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\">\r\n            <summary>\r\n            Can the target type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"targetType\">A <see cref=\"T:System.Type\"/> that represents the type you want to convert to</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"targetType\"/> is\r\n            assignable from a <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts the given value object to the specified type, using the arguments\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Util.PatternString.Format\"/> method to convert the\r\n            <see cref=\"T:log4net.Util.PatternString\"/> argument to a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            <paramref name=\"targetType\"/>. To check for this condition use the \r\n            <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\"/> method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternString</param>\r\n            <returns>the PatternString</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Util.PatternString\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a Type</param>\r\n            <returns>the Type</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Type\"/>.\r\n            Additional effort is made to locate partially specified types\r\n            by searching the loaded assemblies.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\">\r\n            <summary>\n            Attribute used to associate a type converter\n            </summary>\n            <remarks>\n            <para>\n            Class and Interface level attribute that specifies a type converter\n            to use with the associated type.\n            </para>\n            <para>\n            To associate a type converter with a target type apply a\n            <c>TypeConverterAttribute</c> to the target type. Specify the\n            type of the type converter on the attribute.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.TypeConverterAttribute.m_typeName\">\r\n            <summary>\n            The string type name of the type converter\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type name\r\n            </summary>\r\n            <param name=\"typeName\">The string type name of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TypeConverters.TypeConverterAttribute.ConverterTypeName\">\r\n            <summary>\r\n            The string type name of the type converter \r\n            </summary>\r\n            <value>\r\n            The string type name of the type converter \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.AppenderAttachedImpl\">\r\n            <summary>\r\n            A straightforward implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the default implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/>\r\n            interface. Implementors of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            should aggregate an instance of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.AppenderAttachedImpl\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.CallAppend(log4net.Appender.IAppender,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Calls the DoAppende method on the <see cref=\"T:log4net.Appender.IAppender\"/> with \r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> objects supplied.\r\n            </summary>\r\n            <param name=\"appender\">The appender</param>\r\n            <param name=\"loggingEvents\">The events</param>\r\n            <remarks>\r\n            <para>\r\n            If the <paramref name=\"appender\"/> supports the <see cref=\"T:log4net.Appender.IBulkAppender\"/>\r\n            interface then the <paramref name=\"loggingEvents\"/> will be passed \r\n            through using that interface. Otherwise the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the array will be passed one at a time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\n            Attaches an appender.\n            </summary>\n            <param name=\"newAppender\">The appender to add.</param>\n            <remarks>\n            <para>\n            If the appender is already in the list it won't be added again.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.GetAppender(System.String)\">\r\n            <summary>\n            Gets an attached appender with the specified name.\n            </summary>\n            <param name=\"name\">The name of the appender to get.</param>\n            <returns>\n            The appender with the name specified, or <c>null</c> if no appender with the\n            specified name is found.\n            </returns>\n            <remarks>\n            <para>\n            Lookup an attached appender by name.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAllAppenders\">\r\n            <summary>\n            Removes all attached appenders.\n            </summary>\n            <remarks>\n            <para>\n            Removes and closes all attached appenders\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderList\">\r\n            <summary>\n            List of appenders\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderArray\">\r\n            <summary>\n            Array of appenders, used to cache the m_appenderList\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.declaringType\">\r\n            <summary>\n            The fully qualified type of the AppenderAttachedImpl class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.AppenderAttachedImpl.Appenders\">\r\n            <summary>\n            Gets all attached appenders.\n            </summary>\n            <returns>\n            A collection of attached appenders, or <c>null</c> if there\n            are no attached appenders.\n            </returns>\n            <remarks>\n            <para>\n            The read only collection of all currently attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.CompositeProperties\">\r\n            <summary>\r\n            This class aggregates several PropertiesDictionary collections together.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Provides a dictionary style lookup over an ordered list of\r\n            <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CompositeProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Add(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\n            Add a Properties Dictionary to this composite collection\n            </summary>\n            <param name=\"properties\">the properties to add</param>\n            <remarks>\n            <para>\n            Properties dictionaries added first take precedence over dictionaries added\n            later.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Flatten\">\r\n            <summary>\n            Flatten this composite collection into a single properties dictionary\n            </summary>\n            <returns>the flattened dictionary</returns>\n            <remarks>\n            <para>\n            Reduces the collection of ordered dictionaries to a single dictionary\n            containing the resultant values for the keys.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.CompositeProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Looks up the value for the <paramref name=\"key\"/> specified.\r\n            The <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections are searched\r\n            in the order in which they were added to this collection. The value\r\n            returned is the value held by the first collection that contains\r\n            the specified key.\r\n            </para>\r\n            <para>\r\n            If none of the collections contain the specified key then\r\n            <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ContextPropertiesBase\">\r\n            <summary>\n            Base class for Context Properties implementations\n            </summary>\n            <remarks>\n            <para>\n            This class defines a basic property get set accessor\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"P:log4net.Util.ContextPropertiesBase.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of a property\n            </summary>\n            <value>\n            The value for the property with the specified key\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the value of a property\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ConverterInfo\">\r\n            <summary>\n            Wrapper class used to map converter names to converter types\n            </summary>\n            <remarks>\n            <para>\n            Pattern converter info class used during configuration by custom\n            PatternString and PatternLayer converters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.#ctor\">\r\n            <summary>\n            default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"entry\"></param>\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Name\">\r\n            <summary>\n            Gets or sets the name of the conversion pattern\n            </summary>\n            <remarks>\n            <para>\n            The name of the pattern in the format string\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Type\">\r\n            <summary>\r\n            Gets or sets the type of the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The value specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Properties\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.CountingQuietTextWriter\">\r\n            <summary>\r\n            Subclass of <see cref=\"T:log4net.Util.QuietTextWriter\"/> that maintains a count of \r\n            the number of bytes written.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer counts the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.QuietTextWriter\">\r\n            <summary>\r\n            <see cref=\"T:System.IO.TextWriter\"/> that does not leak exceptions\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/> does not throw exceptions when things go wrong. \r\n            Instead, it delegates error handling to its <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TextWriterAdapter\">\r\n            <summary>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TextWriterAdapter.m_writer\">\r\n            <summary>\n            The writer to forward messages to\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to forward to</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Close\">\r\n            <summary>\n            Closes the writer and releases any system resources associated with the writer\n            </summary>\n            <remarks>\n            <para>\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Dispose(System.Boolean)\">\r\n            <summary>\n            Dispose this writer\n            </summary>\n            <param name=\"disposing\">flag indicating if we are being disposed</param>\n            <remarks>\n            <para>\n            Dispose this writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Flush\">\r\n            <summary>\n            Flushes any buffered output\n            </summary>\n            <remarks>\n            <para>\n            Clears all buffers for the writer and causes any buffered data to be written \n            to the underlying device\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char)\">\r\n            <summary>\n            Writes a character to the wrapped TextWriter\n            </summary>\n            <param name=\"value\">the value to write to the TextWriter</param>\n            <remarks>\n            <para>\n            Writes a character to the wrapped TextWriter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\n            Writes a character buffer to the wrapped TextWriter\n            </summary>\n            <param name=\"buffer\">the data buffer</param>\n            <param name=\"index\">the start index</param>\n            <param name=\"count\">the number of characters to write</param>\n            <remarks>\n            <para>\n            Writes a character buffer to the wrapped TextWriter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.String)\">\r\n            <summary>\n            Writes a string to the wrapped TextWriter\n            </summary>\n            <param name=\"value\">the value to write to the TextWriter</param>\n            <remarks>\n            <para>\n            Writes a string to the wrapped TextWriter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Writer\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Encoding\">\r\n            <summary>\r\n            The Encoding in which the output is written\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.TextWriterAdapter.Encoding\"/>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The Encoding in which the output is written\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.FormatProvider\">\r\n            <summary>\n            Gets an object that controls formatting\n            </summary>\n            <value>\n            The format provider\n            </value>\n            <remarks>\n            <para>\n            Gets an object that controls formatting\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.NewLine\">\r\n            <summary>\n            Gets or sets the line terminator string used by the TextWriter\n            </summary>\n            <value>\n            The line terminator to use\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the line terminator string used by the TextWriter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\n            Constructor\n            </summary>\n            <param name=\"writer\">the writer to actually write to</param>\n            <param name=\"errorHandler\">the error handler to report error to</param>\n            <remarks>\n            <para>\n            Create a new QuietTextWriter using a writer and error handler\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char)\">\r\n            <summary>\n            Writes a character to the underlying writer\n            </summary>\n            <param name=\"value\">the char to write</param>\n            <remarks>\n            <para>\n            Writes a character to the underlying writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\n            Writes a buffer to the underlying writer\n            </summary>\n            <param name=\"buffer\">the buffer to write</param>\n            <param name=\"index\">the start index to write from</param>\n            <param name=\"count\">the number of characters to write</param>\n            <remarks>\n            <para>\n            Writes a buffer to the underlying writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.String)\">\r\n            <summary>\n            Writes a string to the output.\n            </summary>\n            <param name=\"value\">The string data to write to the output.</param>\n            <remarks>\n            <para>\n            Writes a string to the output.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Close\">\r\n            <summary>\n            Closes the underlying output writer.\n            </summary>\n            <remarks>\n            <para>\n            Closes the underlying output writer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_errorHandler\">\r\n            <summary>\n            The error handler instance to pass all errors to\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_closed\">\r\n            <summary>\n            Flag to indicate if this writer is closed\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.ErrorHandler\">\r\n            <summary>\n            Gets or sets the error handler that all errors are passed to.\n            </summary>\n            <value>\n            The error handler that all errors are passed to.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the error handler that all errors are passed to.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.Closed\">\r\n            <summary>\n            Gets a value indicating whether this writer is closed.\n            </summary>\n            <value>\n            <c>true</c> if this writer is closed, otherwise <c>false</c>.\n            </value>\n            <remarks>\n            <para>\n            Gets a value indicating whether this writer is closed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to actually write to.</param>\r\n            <param name=\"errorHandler\">The <see cref=\"T:log4net.Core.IErrorHandler\"/> to report errors to.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.CountingQuietTextWriter\"/> class \r\n            with the specified <see cref=\"T:System.IO.TextWriter\"/> and <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"value\">the char to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a buffer to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"buffer\">the buffer to write</param>\r\n            <param name=\"index\">the start index to write from</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the output and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"str\">The string data to write to the output.</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.CountingQuietTextWriter.m_countBytes\">\r\n            <summary>\n            Total number of bytes written.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.CountingQuietTextWriter.Count\">\r\n            <summary>\n            Gets or sets the total number of bytes written.\n            </summary>\n            <value>\n            The total number of bytes written.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the total number of bytes written.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.CyclicBuffer\">\r\n            <summary>\n            A fixed size rolling buffer of logging events.\n            </summary>\n            <remarks>\n            <para>\n            An array backed fixed size leaky bucket.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.#ctor(System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"maxSize\">The maximum number of logging events in the buffer.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CyclicBuffer\"/> class with \r\n            the specified maximum number of buffered logging events.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"maxSize\"/> argument is not a positive integer.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Appends a <paramref name=\"loggingEvent\"/> to the buffer.\n            </summary>\n            <param name=\"loggingEvent\">The event to append to the buffer.</param>\n            <returns>The event discarded from the buffer, if the buffer is full, otherwise <c>null</c>.</returns>\n            <remarks>\n            <para>\n            Append an event to the buffer. If the buffer still contains free space then\n            <c>null</c> is returned. If the buffer is full then an event will be dropped\n            to make space for the new event, the event dropped is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopOldest\">\r\n            <summary>\n            Get and remove the oldest event in the buffer.\n            </summary>\n            <returns>The oldest logging event in the buffer</returns>\n            <remarks>\n            <para>\n            Gets the oldest (first) logging event in the buffer and removes it \n            from the buffer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopAll\">\r\n            <summary>\n            Pops all the logging events from the buffer into an array.\n            </summary>\n            <returns>An array of all the logging events in the buffer.</returns>\n            <remarks>\n            <para>\n            Get all the events in the buffer and clear the buffer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Clear\">\r\n            <summary>\n            Clear the buffer\n            </summary>\n            <remarks>\n            <para>\n            Clear the buffer of all events. The events in the buffer are lost.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Item(System.Int32)\">\r\n            <summary>\n            Gets the <paramref name=\"i\"/>th oldest event currently in the buffer.\n            </summary>\n            <value>The <paramref name=\"i\"/>th oldest event currently in the buffer.</value>\n            <remarks>\n            <para>\n            If <paramref name=\"i\"/> is outside the range 0 to the number of events\n            currently in the buffer, then <c>null</c> is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.MaxSize\">\r\n            <summary>\n            Gets the maximum size of the buffer.\n            </summary>\n            <value>The maximum size of the buffer.</value>\n            <remarks>\n            <para>\n            Gets the maximum size of the buffer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Length\">\r\n            <summary>\r\n            Gets the number of logging events in the buffer.\r\n            </summary>\r\n            <value>The number of logging events in the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            This number is guaranteed to be in the range 0 to <see cref=\"P:log4net.Util.CyclicBuffer.MaxSize\"/>\r\n            (inclusive).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyCollection\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.ICollection\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyCollection\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyCollection.s_instance\">\r\n            <summary>\n            The singleton instance of the empty collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Instance\">\r\n            <summary>\n            Gets the singleton instance of the empty collection.\n            </summary>\n            <returns>The singleton instance of the empty collection.</returns>\n            <remarks>\n            <para>\n            Gets the singleton instance of the empty collection.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyCollection.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyCollection.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyDictionary\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionary\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Add(System.Object,System.Object)\">\r\n            <summary>\r\n            Adds an element with the provided key and value to the \r\n            <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The <see cref=\"T:System.Object\"/> to use as the key of the element to add.</param>\r\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to use as the value of the element to add.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no new values can be added. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Clear\">\r\n            <summary>\r\n            Removes all elements from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\">\r\n            <summary>\r\n            Determines whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> contains an element \r\n            with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key to locate in the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</param>\r\n            <returns><c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\"/> method always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Remove(System.Object)\">\r\n            <summary>\r\n            Removes the element with the specified key from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to remove.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyDictionary.s_instance\">\r\n            <summary>\n            The singleton instance of the empty dictionary.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <b>true</b>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyDictionary.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyDictionary.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> has a fixed size.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsFixedSize\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> is read-only.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsReadOnly\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Keys\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Values\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Item(System.Object)\">\r\n            <summary>\r\n            Gets or sets the element with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to get or set.</param>\r\n            <value><c>null</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be looked up or stored. \r\n            If the index getter is called then <c>null</c> is returned.\r\n            A <see cref=\"T:System.InvalidOperationException\"/> is thrown if the setter is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.FormattingInfo\">\r\n            <summary>\r\n            Contain the information obtained when parsing formatting modifiers \r\n            in conversion modifiers.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Holds the formatting information extracted from the format string by\r\n            the <see cref=\"T:log4net.Util.PatternParser\"/>. This is used by the <see cref=\"T:log4net.Util.PatternConverter\"/>\r\n            objects when rendering the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor\">\r\n            <summary>\r\n            Defaut Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor(System.Int32,System.Int32,System.Boolean)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class\r\n            with the specified parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Min\">\r\n            <summary>\n            Gets or sets the minimum value.\n            </summary>\n            <value>\n            The minimum value.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the minimum value.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Max\">\r\n            <summary>\n            Gets or sets the maximum value.\n            </summary>\n            <value>\n            The maximum value.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the maximum value.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.LeftAlign\">\r\n            <summary>\n            Gets or sets a flag indicating whether left align is enabled\n            or not.\n            </summary>\n            <value>\n            A flag indicating whether left align is enabled or not.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets a flag indicating whether left align is enabled or not.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.GlobalContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.GlobalContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class implements a properties collection that is thread safe and supports both\r\n            storing properties and capturing a read only copy of the current propertied.\r\n            </para>\r\n            <para>\r\n            This class is optimized to the scenario where the properties are read frequently\r\n            and are modified infrequently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_readOnlyProperties\">\r\n            <summary>\n            The read only copy of the properties.\n            </summary>\n            <remarks>\n            <para>\n            This variable is declared <c>volatile</c> to prevent the compiler and JIT from\n            reordering reads and writes of this thread performed on different threads.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_syncRoot\">\r\n            <summary>\n            Lock object used to synchronize updates within this instance\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.GlobalContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Remove(System.String)\">\r\n            <summary>\n            Remove a property from the global context\n            </summary>\n            <param name=\"key\">the key for the entry to remove</param>\n            <remarks>\n            <para>\n            Removing an entry from the global context properties is relatively expensive compared\n            with reading a value. \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Clear\">\r\n            <summary>\n            Clear the global context properties\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.GetReadOnlyProperties\">\r\n            <summary>\n            Get a readonly immutable copy of the properties\n            </summary>\n            <returns>the current global context properties</returns>\n            <remarks>\n            <para>\n            This implementation is fast because the GlobalContextProperties class\n            stores a readonly copy of the properties.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.GlobalContextProperties.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of a property\n            </summary>\n            <value>\n            The value for the property with the specified key\n            </value>\n            <remarks>\n            <para>\n            Reading the value for a key is faster than setting the value.\n            When the value is written a new read only copy of \n            the properties is created.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMapping\">\r\n            <summary>\r\n            Manages a mapping from levels to <see cref=\"T:log4net.Util.LevelMappingEntry\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Manages an ordered mapping from <see cref=\"T:log4net.Core.Level\"/> instances \r\n            to <see cref=\"T:log4net.Util.LevelMappingEntry\"/> subclasses.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialise a new instance of <see cref=\"T:log4net.Util.LevelMapping\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Add(log4net.Util.LevelMappingEntry)\">\r\n            <summary>\r\n            Add a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> to this mapping\r\n            </summary>\r\n            <param name=\"entry\">the entry to add</param>\r\n            <remarks>\r\n            <para>\r\n            If a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> has previously been added\r\n            for the same <see cref=\"T:log4net.Core.Level\"/> then that entry will be \r\n            overwritten.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Lookup(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup the mapping for the specified level\r\n            </summary>\r\n            <param name=\"level\">the level to lookup</param>\r\n            <returns>the <see cref=\"T:log4net.Util.LevelMappingEntry\"/> for the level or <c>null</c> if no mapping found</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup the value for the specified level. Finds the nearest\r\n            mapping value for the level that is equal to or less than the\r\n            <paramref name=\"level\"/> specified.\r\n            </para>\r\n            <para>\r\n            If no mapping could be found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.ActivateOptions\">\r\n            <summary>\r\n            Initialize options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Caches the sorted list of <see cref=\"T:log4net.Util.LevelMappingEntry\"/> in an array\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogicalThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.LogicalThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            <para>\r\n            This class stores its properties in a slot on the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> named\r\n            <c>log4net.Util.LogicalThreadContextProperties</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.m_disabled\">\r\n            <summary>\n            Flag used to disable this context if we don't have permission to access the CallContext.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogicalThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Remove(System.String)\">\r\n            <summary>\n            Remove a property\n            </summary>\n            <param name=\"key\">the key for the entry to remove</param>\n            <remarks>\n            <para>\n            Remove the value for the specified <paramref name=\"key\"/> from the context.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Clear\">\r\n            <summary>\n            Clear all the context properties\n            </summary>\n            <remarks>\n            <para>\n            Clear all the context properties\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\n            Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread.\n            </summary>\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\n            <returns>the properties for this thread</returns>\n            <remarks>\n            <para>\n            The collection returned is only to be used on the calling thread. If the\n            caller needs to share the collection between different threads then the \n            caller must clone the collection before doings so.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetCallContextData\">\r\n            <summary>\r\n            Gets the call context get data.\r\n            </summary>\r\n            <returns>The peroperties dictionary stored in the call context</returns>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.GetData(System.String)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.SetCallContextData(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Sets the call context data.\r\n            </summary>\r\n            <param name=\"properties\">The properties.</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.SetData(System.String,System.Object)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.declaringType\">\r\n            <summary>\n            The fully qualified type of the LogicalThreadContextProperties class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogicalThreadContextProperties.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of a property\n            </summary>\n            <value>\n            The value for the property with the specified key\n            </value>\n            <remarks>\n            <para>\n            Get or set the property value for the <paramref name=\"key\"/> specified.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventHandler\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"source\"></param>\n            <param name=\"e\"></param>\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog\">\r\n            <summary>\n            Outputs log statements from within the log4net assembly.\n            </summary>\n            <remarks>\n            <para>\n            Log4net components cannot make log4net logging calls. However, it is\n            sometimes useful for the user to learn about what log4net is\n            doing.\n            </para>\n            <para>\n            All log4net internal debug calls go to the standard output stream\n            whereas internal error messages are sent to the standard error output \n            stream.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.ToString\">\r\n            <summary>\n            Formats Prefix, Source, and Message in the same format as the value\n            sent to Console.Out and Trace.Write.\n            </summary>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#ctor(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogLog\"/> class. \r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"prefix\"></param>\r\n            <param name=\"message\"></param>\r\n            <param name=\"exception\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#cctor\">\r\n            <summary>\n            Static constructor that initializes logging by reading \n            settings from the application configuration file.\n            </summary>\n            <remarks>\n            <para>\n            The <c>log4net.Internal.Debug</c> application setting\n            controls internal debugging. This setting should be set\n            to <c>true</c> to enable debugging.\n            </para>\n            <para>\n            The <c>log4net.Internal.Quiet</c> application setting\n            suppresses all internal logging including error messages. \n            This setting should be set to <c>true</c> to enable message\n            suppression.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.OnLogReceived(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\n            Raises the LogReceived event when an internal messages is received.\n            </summary>\n            <param name=\"source\"></param>\n            <param name=\"prefix\"></param>\n            <param name=\"message\"></param>\n            <param name=\"exception\"></param>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String)\">\r\n            <summary>\n            Writes log4net internal debug messages to the \n            standard output stream.\n            </summary>\n            <param name=\"source\"></param>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            All internal debug messages are prepended with \n            the string \"log4net: \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String,System.Exception)\">\r\n            <summary>\n            Writes log4net internal debug messages to the \n            standard output stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <param name=\"exception\">An exception to log.</param>\n            <remarks>\n            <para>\n            All internal debug messages are prepended with \n            the string \"log4net: \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String)\">\r\n            <summary>\n            Writes log4net internal warning messages to the \n            standard error stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            All internal warning messages are prepended with \n            the string \"log4net:WARN \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String,System.Exception)\">\r\n            <summary>\n            Writes log4net internal warning messages to the \n            standard error stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <param name=\"exception\">An exception to log.</param>\n            <remarks>\n            <para>\n            All internal warning messages are prepended with \n            the string \"log4net:WARN \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String)\">\r\n            <summary>\n            Writes log4net internal error messages to the \n            standard error stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            All internal error messages are prepended with \n            the string \"log4net:ERROR \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String,System.Exception)\">\r\n            <summary>\n            Writes log4net internal error messages to the \n            standard error stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <param name=\"exception\">An exception to log.</param>\n            <remarks>\n            <para>\n            All internal debug messages are prepended with \n            the string \"log4net:ERROR \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitOutLine(System.String)\">\r\n            <summary>\n            Writes output to the standard output stream.  \n            </summary>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            Writes to both Console.Out and System.Diagnostics.Trace.\n            Note that the System.Diagnostics.Trace is not supported\n            on the Compact Framework.\n            </para>\n            <para>\n            If the AppDomain is not configured with a config file then\n            the call to System.Diagnostics.Trace may fail. This is only\n            an issue if you are programmatically creating your own AppDomains.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitErrorLine(System.String)\">\r\n            <summary>\n            Writes output to the standard error stream.  \n            </summary>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            Writes to both Console.Error and System.Diagnostics.Trace.\n            Note that the System.Diagnostics.Trace is not supported\n            on the Compact Framework.\n            </para>\n            <para>\n            If the AppDomain is not configured with a config file then\n            the call to System.Diagnostics.Trace may fail. This is only\n            an issue if you are programmatically creating your own AppDomains.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_debugEnabled\">\r\n            <summary>\n             Default debug level\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_quietMode\">\r\n            <summary>\n            In quietMode not even errors generate any output.\n            </summary>\n        </member>\r\n        <member name=\"E:log4net.Util.LogLog.LogReceived\">\r\n            <summary>\n            The event raised when an internal message has been received.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Source\">\r\n            <summary>\n            The Type that generated the internal message.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.TimeStamp\">\r\n            <summary>\n            The DateTime stamp of when the internal message was received.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Prefix\">\r\n            <summary>\n            A string indicating the severity of the internal message.\n            </summary>\n            <remarks>\n            \"log4net: \", \n            \"log4net:ERROR \", \n            \"log4net:WARN \"\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Message\">\r\n            <summary>\n            The internal log message.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Exception\">\r\n            <summary>\n            The Exception related to the message.\n            </summary>\n            <remarks>\n            Optional. Will be null if no Exception was passed.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.InternalDebugging\">\r\n            <summary>\n            Gets or sets a value indicating whether log4net internal logging\n            is enabled or disabled.\n            </summary>\n            <value>\n            <c>true</c> if log4net internal logging is enabled, otherwise \n            <c>false</c>.\n            </value>\n            <remarks>\n            <para>\n            When set to <c>true</c>, internal debug level logging will be \n            displayed.\n            </para>\n            <para>\n            This value can be set by setting the application setting \n            <c>log4net.Internal.Debug</c> in the application configuration\n            file.\n            </para>\n            <para>\n            The default value is <c>false</c>, i.e. debugging is\n            disabled.\n            </para>\n            </remarks>\n            <example>\n            <para>\n            The following example enables internal debugging using the \n            application configuration file :\n            </para>\n            <code lang=\"XML\" escaped=\"true\">\n            <configuration>\n            \t<appSettings>\n            \t\t<add key=\"log4net.Internal.Debug\" value=\"true\" />\n            \t</appSettings>\n            </configuration>\n            </code>\n            </example>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.QuietMode\">\r\n            <summary>\r\n            Gets or sets a value indicating whether log4net should generate no output\r\n            from internal logging, not even for errors. \r\n            </summary>\r\n            <value>\r\n            <c>true</c> if log4net should generate no output at all from internal \r\n            logging, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            When set to <c>true</c> will cause internal logging at all levels to be \r\n            suppressed. This means that no warning or error reports will be logged. \r\n            This option overrides the <see cref=\"P:log4net.Util.LogLog.InternalDebugging\"/> setting and \r\n            disables all debug also.\r\n            </para>\r\n            <para>This value can be set by setting the application setting\r\n            <c>log4net.Internal.Quiet</c> in the application configuration file.\r\n            </para>\r\n            <para>\r\n            The default value is <c>false</c>, i.e. internal logging is not\r\n            disabled.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            The following example disables internal logging using the \r\n            application configuration file :\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net.Internal.Quiet\" value=\"true\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.EmitInternalMessages\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsDebugEnabled\">\r\n            <summary>\n            Test if LogLog.Debug is enabled for output.\n            </summary>\n            <value>\n            <c>true</c> if Debug is enabled\n            </value>\n            <remarks>\n            <para>\n            Test if LogLog.Debug is enabled for output.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsWarnEnabled\">\r\n            <summary>\n            Test if LogLog.Warn is enabled for output.\n            </summary>\n            <value>\n            <c>true</c> if Warn is enabled\n            </value>\n            <remarks>\n            <para>\n            Test if LogLog.Warn is enabled for output.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsErrorEnabled\">\r\n            <summary>\n            Test if LogLog.Error is enabled for output.\n            </summary>\n            <value>\n            <c>true</c> if Error is enabled\n            </value>\n            <remarks>\n            <para>\n            Test if LogLog.Error is enabled for output.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog.LogReceivedAdapter\">\r\n            <summary>\n            Subscribes to the LogLog.LogReceived event and stores messages\n            to the supplied IList instance.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.#ctor(System.Collections.IList)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"items\"></param>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.Dispose\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.LogReceivedAdapter.Items\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventArgs\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.LogReceivedEventArgs.#ctor(log4net.Util.LogLog)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"loglog\"></param>\n        </member>\r\n        <member name=\"P:log4net.Util.LogReceivedEventArgs.LogLog\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.NativeError\">\r\n            <summary>\n            Represents a native error code and message.\n            </summary>\n            <remarks>\n            <para>\n            Represents a Win32 platform native error.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </summary>\r\n            <param name=\"number\">The number of the native error.</param>\r\n            <param name=\"message\">The message of the native error.</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetLastError\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last Windows error.\r\n            </summary>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last windows error.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/> error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetError(System.Int32)\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class.\r\n            </summary>\r\n            <param name=\"number\">the error number for the native error</param>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the specified \r\n            error number.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the specified error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetErrorMessage(System.Int32)\">\r\n            <summary>\n            Retrieves the message corresponding with a Win32 message identifier.\n            </summary>\n            <param name=\"messageId\">Message identifier for the requested message.</param>\n            <returns>\n            The message corresponding with the specified message identifier.\n            </returns>\n            <remarks>\n            <para>\n            The message will be searched for in system message-table resource(s)\n            using the native <c>FormatMessage</c> function.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.ToString\">\r\n            <summary>\n            Return error information string\n            </summary>\n            <returns>error information string</returns>\n            <remarks>\n            <para>\n            Return error information string\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.FormatMessage(System.Int32,System.IntPtr@,System.Int32,System.Int32,System.String@,System.Int32,System.IntPtr)\">\r\n            <summary>\r\n            Formats a message string.\r\n            </summary>\r\n            <param name=\"dwFlags\">Formatting options, and how to interpret the <paramref name=\"lpSource\"/> parameter.</param>\r\n            <param name=\"lpSource\">Location of the message definition.</param>\r\n            <param name=\"dwMessageId\">Message identifier for the requested message.</param>\r\n            <param name=\"dwLanguageId\">Language identifier for the requested message.</param>\r\n            <param name=\"lpBuffer\">If <paramref name=\"dwFlags\"/> includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the <c>LocalAlloc</c> function, and places the pointer to the buffer at the address specified in <paramref name=\"lpBuffer\"/>.</param>\r\n            <param name=\"nSize\">If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer.</param>\r\n            <param name=\"Arguments\">Pointer to an array of values that are used as insert values in the formatted message.</param>\r\n            <remarks>\r\n            <para>\r\n            The function requires a message definition as input. The message definition can come from a \r\n            buffer passed into the function. It can come from a message table resource in an \r\n            already-loaded module. Or the caller can ask the function to search the system's message \r\n            table resource(s) for the message definition. The function finds the message definition \r\n            in a message table resource based on a message identifier and a language identifier. \r\n            The function copies the formatted message text to an output buffer, processing any embedded \r\n            insert sequences if requested.\r\n            </para>\r\n            <para>\r\n            To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <para>\r\n            If the function succeeds, the return value is the number of TCHARs stored in the output \r\n            buffer, excluding the terminating null character.\r\n            </para>\r\n            <para>\r\n            If the function fails, the return value is zero. To get extended error information, \r\n            call <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/>.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Number\">\r\n            <summary>\n            Gets the number of the native error.\n            </summary>\n            <value>\n            The number of the native error.\n            </value>\n            <remarks>\n            <para>\n            Gets the number of the native error.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Message\">\r\n            <summary>\n            Gets the message of the native error.\n            </summary>\n            <value>\n            The message of the native error.\n            </value>\n            <remarks>\n            <para>\n            </para>\n            Gets the message of the native error.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.NullDictionaryEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance.\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullDictionaryEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullDictionaryEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Key\">\r\n            <summary>\r\n            Gets the current key from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an exception because the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>\r\n            never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Key\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Value\">\r\n            <summary>\r\n            Gets the current value from the enumerator.\r\n            </summary>\r\n            <value>The current value from the enumerator.</value>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Value\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Entry\">\r\n            <summary>\r\n            Gets the current entry from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current entry.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Entry\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Instance\">\r\n            <summary>\r\n            Get the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullSecurityContext\">\r\n            <summary>\r\n            A SecurityContext used when a SecurityContext is not required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Util.NullSecurityContext\"/> is a no-op implementation of the\r\n            <see cref=\"T:log4net.Core.SecurityContext\"/> base class. It is used where a <see cref=\"T:log4net.Core.SecurityContext\"/>\r\n            is required but one has not been provided.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullSecurityContext.Instance\">\r\n            <summary>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.#ctor\">\r\n            <summary>\n            Private constructor\n            </summary>\n            <remarks>\n            <para>\n            Private constructor for singleton pattern.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\n            Impersonate this SecurityContext\n            </summary>\n            <param name=\"state\">State supplied by the caller</param>\n            <returns><c>null</c></returns>\n            <remarks>\n            <para>\n            No impersonation is done and <c>null</c> is always returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.OnlyOnceErrorHandler\">\r\n            <summary>\n            Implements log4net's default error handling policy which consists \n            of emitting a message for the first error in an appender and \n            ignoring all subsequent errors.\n            </summary>\n            <remarks>\n            <para>\n            The error message is processed using the LogLog sub-system.\n            </para>\n            <para>\n            This policy aims at protecting an otherwise working application\n            from being flooded with error messages when logging fails.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n            <author>Ron Grabowski</author>\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"prefix\">The prefix to use for each message.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class\r\n            with the specified prefix.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Reset\">\r\n            <summary>\n            Reset the error handler back to its initial disabled state.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Log an Error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <param name=\"e\">The exception.</param>\r\n            <param name=\"errorCode\">The internal error code.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the error information to <see cref=\"T:log4net.Util.LogLog\"/>'s Error method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\n            Log an Error\n            </summary>\n            <param name=\"message\">The error message.</param>\n            <param name=\"e\">The exception.</param>\n            <remarks>\n            <para>\n            Prints the message and the stack trace of the exception on the standard\n            error output stream.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String)\">\r\n            <summary>\n            Log an error\n            </summary>\n            <param name=\"message\">The error message.</param>\n            <remarks>\n            <para>\n            Print a the error message passed as parameter on the standard\n            error output stream.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_enabledDate\">\r\n            <summary>\n            The date the error was recorded.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_firstTime\">\r\n            <summary>\n            Flag to indicate if it is the first error\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_message\">\r\n            <summary>\n            The message recorded during the first error.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_exception\">\r\n            <summary>\n            The exception recorded during the first error.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_errorCode\">\r\n            <summary>\n            The error code recorded during the first error.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_prefix\">\r\n            <summary>\n            String to prefix each message with\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.declaringType\">\r\n            <summary>\n            The fully qualified type of the OnlyOnceErrorHandler class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.IsEnabled\">\r\n            <summary>\r\n            Is error logging enabled\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Is error logging enabled. Logging is only enabled for the\r\n            first error delivered to the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.EnabledDate\">\r\n            <summary>\n            The date the first error that trigged this error handler occured.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorMessage\">\r\n            <summary>\n            The message from the first error that trigged this error handler.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.Exception\">\r\n            <summary>\n            The exception from the first error that trigged this error handler.\n            </summary>\n            <remarks>\n            May be <see langword=\"null\" />.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorCode\">\r\n            <summary>\r\n            The error code from the first error that trigged this error handler.\r\n            </summary>\r\n            <remarks>\r\n            Defaults to <see cref=\"F:log4net.Core.ErrorCode.GenericFailure\"/>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.OptionConverter\">\r\n            <summary>\n            A convenience class to convert property values to specific types.\n            </summary>\n            <remarks>\n            <para>\n            Utility functions for converting types and parsing values.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OptionConverter\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToBoolean(System.String,System.Boolean)\">\r\n            <summary>\r\n            Converts a string to a <see cref=\"T:System.Boolean\"/> value.\r\n            </summary>\r\n            <param name=\"argValue\">String to convert.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Boolean\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            If <paramref name=\"argValue\"/> is \"true\", then <c>true</c> is returned. \r\n            If <paramref name=\"argValue\"/> is \"false\", then <c>false</c> is returned. \r\n            Otherwise, <paramref name=\"defaultValue\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToFileSize(System.String,System.Int64)\">\r\n            <summary>\r\n            Parses a file size into a number.\r\n            </summary>\r\n            <param name=\"argValue\">String to parse.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Int64\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parses a file size of the form: number[KB|MB|GB] into a\r\n            long value. It is scaled with the appropriate multiplier.\r\n            </para>\r\n            <para>\r\n            <paramref name=\"defaultValue\"/> is returned when <paramref name=\"argValue\"/>\r\n            cannot be converted to a <see cref=\"T:System.Int64\"/> value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\n            Converts a string to an object.\n            </summary>\n            <param name=\"target\">The target type to convert to.</param>\n            <param name=\"txt\">The string to convert to an object.</param>\n            <returns>\n            The object converted from a string or <c>null</c> when the \n            conversion failed.\n            </returns>\n            <remarks>\n            <para>\n            Converts a string to an object. Uses the converter registry to try\n            to convert the string value into the specified target type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.CanConvertTypeTo(System.Type,System.Type)\">\r\n            <summary>\n            Checks if there is an appropriate type conversion from the source type to the target type.\n            </summary>\n            <param name=\"sourceType\">The type to convert from.</param>\n            <param name=\"targetType\">The type to convert to.</param>\n            <returns><c>true</c> if there is a conversion from the source type to the target type.</returns>\n            <remarks>\n            Checks if there is an appropriate type conversion from the source type to the target type.\n            <para>\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertTypeTo(System.Object,System.Type)\">\r\n            <summary>\n            Converts an object to the target type.\n            </summary>\n            <param name=\"sourceInstance\">The object to convert to the target type.</param>\n            <param name=\"targetType\">The type to convert to.</param>\n            <returns>The converted object.</returns>\n            <remarks>\n            <para>\n            Converts an object to the target type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.InstantiateByClassName(System.String,System.Type,System.Object)\">\r\n            <summary>\n            Instantiates an object given a class name.\n            </summary>\n            <param name=\"className\">The fully qualified class name of the object to instantiate.</param>\n            <param name=\"superClass\">The class to which the new object should belong.</param>\n            <param name=\"defaultValue\">The object to return in case of non-fulfillment.</param>\n            <returns>\n            An instance of the <paramref name=\"className\"/> or <paramref name=\"defaultValue\"/>\n            if the object could not be instantiated.\n            </returns>\n            <remarks>\n            <para>\n            Checks that the <paramref name=\"className\"/> is a subclass of\n            <paramref name=\"superClass\"/>. If that test fails or the object could\n            not be instantiated, then <paramref name=\"defaultValue\"/> is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.SubstituteVariables(System.String,System.Collections.IDictionary)\">\r\n            <summary>\n            Performs variable substitution in string <paramref name=\"value\"/> from the \n            values of keys found in <paramref name=\"props\"/>.\n            </summary>\n            <param name=\"value\">The string on which variable substitution is performed.</param>\n            <param name=\"props\">The dictionary to use to lookup variables.</param>\n            <returns>The result of the substitutions.</returns>\n            <remarks>\n            <para>\n            The variable substitution delimiters are <b>${</b> and <b>}</b>.\n            </para>\n            <para>\n            For example, if props contains <c>key=value</c>, then the call\n            </para>\n            <para>\n            <code lang=\"C#\">\n            string s = OptionConverter.SubstituteVariables(\"Value of key is ${key}.\");\n            </code>\n            </para>\n            <para>\n            will set the variable <c>s</c> to \"Value of key is value.\".\n            </para>\n            <para>\n            If no value could be found for the specified key, then substitution \n            defaults to an empty string.\n            </para>\n            <para>\n            For example, if system properties contains no value for the key\n            \"nonExistentKey\", then the call\n            </para>\n            <para>\n            <code lang=\"C#\">\n            string s = OptionConverter.SubstituteVariables(\"Value of nonExistentKey is [${nonExistentKey}]\");\n            </code>\n            </para>\n            <para>\n            will set <s>s</s> to \"Value of nonExistentKey is []\".\t \n            </para>\n            <para>\n            An Exception is thrown if <paramref name=\"value\"/> contains a start \n            delimiter \"${\" which is not balanced by a stop delimiter \"}\". \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ParseEnum(System.Type,System.String,System.Boolean)\">\r\n            <summary>\n            Converts the string representation of the name or numeric value of one or \n            more enumerated constants to an equivalent enumerated object.\n            </summary>\n            <param name=\"enumType\">The type to convert to.</param>\n            <param name=\"value\">The enum string value.</param>\n            <param name=\"ignoreCase\">If <c>true</c>, ignore case; otherwise, regard case.</param>\n            <returns>An object of type <paramref name=\"enumType\" /> whose value is represented by <paramref name=\"value\" />.</returns>\n        </member>\r\n        <member name=\"F:log4net.Util.OptionConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the OptionConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser\">\r\n            <summary>\r\n            Most of the work of the <see cref=\"T:log4net.Layout.PatternLayout\"/> class\r\n            is delegated to the PatternParser class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>PatternParser</c> processes a pattern string and\r\n            returns a chain of <see cref=\"T:log4net.Util.PatternConverter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternParser\"/> class \r\n            with the specified pattern string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.Parse\">\r\n            <summary>\n            Parses the pattern into a chain of pattern converters.\n            </summary>\n            <returns>The head of a chain of pattern converters.</returns>\n            <remarks>\n            <para>\n            Parses the pattern into a chain of pattern converters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.BuildCache\">\r\n            <summary>\n            Build the unified cache of converters from the static and instance maps\n            </summary>\n            <returns>the list of all the converter names</returns>\n            <remarks>\n            <para>\n            Build the unified cache of converters from the static and instance maps\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ParseInternal(System.String,System.String[])\">\r\n            <summary>\n            Internal method to parse the specified pattern to find specified matches\n            </summary>\n            <param name=\"pattern\">the pattern to parse</param>\n            <param name=\"matches\">the converter names to match in the pattern</param>\n            <remarks>\n            <para>\n            The matches param must be sorted such that longer strings come before shorter ones.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessLiteral(System.String)\">\r\n            <summary>\n            Process a parsed literal\n            </summary>\n            <param name=\"text\">the literal text</param>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessConverter(System.String,System.String,log4net.Util.FormattingInfo)\">\r\n            <summary>\n            Process a parsed converter pattern\n            </summary>\n            <param name=\"converterName\">the name of the converter</param>\n            <param name=\"option\">the optional option for the converter</param>\n            <param name=\"formattingInfo\">the formatting info for the converter</param>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.AddConverter(log4net.Util.PatternConverter)\">\r\n            <summary>\n            Resets the internal state of the parser and adds the specified pattern converter \n            to the chain.\n            </summary>\n            <param name=\"pc\">The pattern converter to add.</param>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_head\">\r\n            <summary>\n            The first pattern converter in the chain\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_tail\">\r\n            <summary>\n             the last pattern converter in the chain\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_pattern\">\r\n            <summary>\n            The pattern\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_patternConverters\">\r\n            <summary>\n            Internal map of converter identifiers to converter types\n            </summary>\n            <remarks>\n            <para>\n            This map overrides the static s_globalRulesRegistry map.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.declaringType\">\r\n            <summary>\n            The fully qualified type of the PatternParser class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternParser.PatternConverters\">\r\n            <summary>\n            Get the converter registry used by this parser\n            </summary>\n            <value>\n            The converter registry used by this parser\n            </value>\n            <remarks>\n            <para>\n            Get the converter registry used by this parser\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser.StringLengthComparer\">\r\n            <summary>\r\n            Sort strings by length\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:System.Collections.IComparer\"/> that orders strings by string length.\r\n            The longest strings are placed first\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternString\">\r\n            <summary>\r\n            This class implements a patterned string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This string has embedded patterns that are resolved and expanded\r\n            when the string is formatted.\r\n            </para>\r\n            <para>\r\n            This class functions similarly to the <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            in that it accepts a pattern and renders it to a string. Unlike the \r\n            <see cref=\"T:log4net.Layout.PatternLayout\"/> however the <c>PatternString</c>\r\n            does not render the properties of a specific <see cref=\"T:log4net.Core.LoggingEvent\"/> but\r\n            of the process in general.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output the friendly name of the current AppDomain.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>date</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the current date and time in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>env</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the a specific environment variable. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%env{COMPUTERNAME}</b> would include the value\r\n            \t\t\tof the <c>COMPUTERNAME</c> environment variable.\r\n                        </para>\r\n                        <para>\r\n                        The <c>env</c> pattern is not supported on the .NET Compact Framework.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>identity</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>newline</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern name offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>processid</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the system process ID for the current process.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>property</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output a specific context property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are stored in logging contexts. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>random</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output a random string of characters. The string is made up of\r\n                        uppercase letters and numbers. By default the string is 4 characters long.\r\n                        The length of the string can be specified within braces directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%random{8}</b> would output an 8 character string.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>username</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>utcdate</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Util.PatternString\"/>\r\n            instance using <see cref=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\"/> or\r\n            <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/>.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.PatternLayout\"/> for details on the \r\n            <i>format modifiers</i> supported by the patterns.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.s_globalRulesRegistry\">\r\n            <summary>\n            Internal map of converter identifiers to converter types.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_pattern\">\r\n            <summary>\n            the pattern\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_head\">\r\n            <summary>\n            the head of the pattern converter chain\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_instanceRulesRegistry\">\r\n            <summary>\n            patterns defined on this PatternString only\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#cctor\">\r\n            <summary>\n            Initialize the global registry\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternString\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to use with this PatternString</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/> with the pattern specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.ActivateOptions\">\r\n            <summary>\r\n            Initialize object options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Returns PatternParser used to parse the conversion string. Subclasses\r\n            may override this to return a subclass of PatternParser which recognize\r\n            custom conversion pattern name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format(System.IO.TextWriter)\">\r\n            <summary>\n            Produces a formatted string as specified by the conversion pattern.\n            </summary>\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\n            <remarks>\n            <para>\n            Format the pattern to the <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format\">\r\n            <summary>\n            Format the pattern as a string\n            </summary>\n            <returns>the pattern formatted as a string</returns>\n            <remarks>\n            <para>\n            Format the pattern to a string.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternString\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\">\r\n            <summary>\n            Add a converter to this PatternString\n            </summary>\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\n            <param name=\"type\">the type of the converter</param>\n            <remarks>\n            <para>\n            Add a converter to this PatternString\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternString.ConversionPattern\">\r\n            <summary>\n            Gets or sets the pattern formatting string\n            </summary>\n            <value>\n            The pattern formatting string\n            </value>\n            <remarks>\n            <para>\n            The <b>ConversionPattern</b> option. This is the string which\n            controls formatting and consists of a mix of literal content and\n            conversion specifiers.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PropertiesDictionary\">\r\n            <summary>\n            String keyed object map.\n            </summary>\n            <remarks>\n            <para>\n            While this collection is serializable only member \n            objects that are serializable will\n            be serialized along with this collection.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"T:log4net.Util.ReadOnlyPropertiesDictionary\">\r\n            <summary>\n            String keyed object map that is read only.\n            </summary>\n            <remarks>\n            <para>\n            This collection is readonly and cannot be modified.\n            </para>\n            <para>\n            While this collection is serializable only member \n            objects that are serializable will\n            be serialized along with this collection.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Util.ReadOnlyPropertiesDictionary.m_hashtable\">\r\n            <summary>\n            The Hashtable used to store the properties data\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Copy Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Deserialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetKeys\">\r\n            <summary>\n            Gets the key names.\n            </summary>\n            <returns>An array of all the keys.</returns>\n            <remarks>\n            <para>\n            Gets the key names.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Contains(System.String)\">\r\n            <summary>\n            Test if the dictionary contains a specified key\n            </summary>\n            <param name=\"key\">the key to look for</param>\n            <returns>true if the dictionary contains the specified key</returns>\n            <remarks>\n            <para>\n            Test if the dictionary contains a specified key\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Clear\">\r\n            <summary>\n            Remove all properties from the properties collection\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <param name=\"value\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of the  property with the specified key.\n            </summary>\n            <value>\n            The value of the property with the specified key.\n            </value>\n            <param name=\"key\">The key of the property to get or set.</param>\n            <remarks>\n            <para>\n            The property value will only be serialized if it is serializable.\n            If it cannot be serialized it will be silently ignored if\n            a serialization operation is performed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.InnerHashtable\">\r\n            <summary>\n            The hashtable used to store the properties\n            </summary>\n            <value>\n            The internal collection used to store the properties\n            </value>\n            <remarks>\n            <para>\n            The hashtable used to store the properties\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#$Item$(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Count\">\r\n            <summary>\n            The number of properties in this collection\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Because this class is sealed the serialization constructor is private.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Remove(System.String)\">\r\n            <summary>\n            Remove the entry with the specified key from this dictionary\n            </summary>\n            <param name=\"key\">the key for the entry to remove</param>\n            <remarks>\n            <para>\n            Remove the entry with the specified key from this dictionary\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n            <returns>an enumerator</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over the contest of this collection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the entry with the specified key from this dictionary\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to lookup in the collection</param>\r\n            <returns><c>true</c> if the collection contains the specified key</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this collection contains a specified key.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Clear\">\r\n            <summary>\n            Remove all properties from the properties collection\n            </summary>\n            <remarks>\n            <para>\n            Remove all properties from the properties collection\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key</param>\r\n            <param name=\"value\">the value to store for the key</param>\r\n            <remarks>\r\n            <para>\r\n            Store a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of the  property with the specified key.\n            </summary>\n            <value>\n            The value of the property with the specified key.\n            </value>\n            <param name=\"key\">The key of the property to get or set.</param>\n            <remarks>\n            <para>\n            The property value will only be serialized if it is serializable.\n            If it cannot be serialized it will be silently ignored if\n            a serialization operation is performed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n            <value>\r\n            <c>false</c>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This collection is modifiable. This property always\r\n            returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#$Item$(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n            <value>\r\n            The value for the key specified.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PropertyEntry\">\r\n            <summary>\n            A class to hold the key and data for a property set in the config file\n            </summary>\n            <remarks>\n            <para>\n            A class to hold the key and data for a property set in the config file\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PropertyEntry.ToString\">\r\n            <summary>\n            Override <c>Object.ToString</c> to return sensible debug info\n            </summary>\n            <returns>string info about this object</returns>\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Key\">\r\n            <summary>\n            Property Key\n            </summary>\n            <value>\n            Property Key\n            </value>\n            <remarks>\n            <para>\n            Property Key.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Value\">\r\n            <summary>\n            Property Value\n            </summary>\n            <value>\n            Property Value\n            </value>\n            <remarks>\n            <para>\n            Property Value.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ProtectCloseTextWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.TextWriter\"/> that ignores the <see cref=\"M:log4net.Util.ProtectCloseTextWriter.Close\"/> message\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer is used in special cases where it is necessary \r\n            to protect a writer from being closed by a client.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\n            Constructor\n            </summary>\n            <param name=\"writer\">the writer to actually write to</param>\n            <remarks>\n            <para>\n            Create a new ProtectCloseTextWriter using a writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Attach(System.IO.TextWriter)\">\r\n            <summary>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to attach to</param>\r\n            <remarks>\r\n            <para>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Close\">\r\n            <summary>\n            Does not close the underlying output writer.\n            </summary>\n            <remarks>\n            <para>\n            Does not close the underlying output writer.\n            This method does nothing.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ReaderWriterLock\">\r\n            <summary>\r\n            Defines a lock that supports single writers and multiple readers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <c>ReaderWriterLock</c> is used to synchronize access to a resource. \r\n            At any given time, it allows either concurrent read access for \r\n            multiple threads, or write access for a single thread. In a \r\n            situation where a resource is changed infrequently, a \r\n            <c>ReaderWriterLock</c> provides better throughput than a simple \r\n            one-at-a-time lock, such as <see cref=\"T:System.Threading.Monitor\"/>.\r\n            </para>\r\n            <para>\r\n            If a platform does not support a <c>System.Threading.ReaderWriterLock</c> \r\n            implementation then all readers and writers are serialized. Therefore \r\n            the caller must not rely on multiple simultaneous readers.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReaderWriterLock\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\">\r\n            <summary>\r\n            Acquires a reader lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\"/> blocks if a different thread has the writer \r\n            lock, or if at least one thread is waiting for the writer lock.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\">\r\n            <summary>\r\n            Decrements the lock count\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\"/> decrements the lock count. When the count \r\n            reaches zero, the lock is released.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireWriterLock\">\r\n            <summary>\n            Acquires the writer lock\n            </summary>\n            <remarks>\n            <para>\n            This method blocks if another thread has a reader lock or writer lock.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseWriterLock\">\r\n            <summary>\n            Decrements the lock count on the writer lock\n            </summary>\n            <remarks>\n            <para>\n            ReleaseWriterLock decrements the writer lock count. \n            When the count reaches zero, the writer lock is released.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ReusableStringWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused.\r\n            This uses a single buffer for string operations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.#ctor(System.IFormatProvider)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </summary>\r\n            <param name=\"formatProvider\">the format provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Dispose(System.Boolean)\">\r\n            <summary>\n            Override Dispose to prevent closing of writer\n            </summary>\n            <param name=\"disposing\">flag</param>\n            <remarks>\n            <para>\n            Override Dispose to prevent closing of writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\">\r\n            <summary>\n            Reset this string writer so that it can be reused.\n            </summary>\n            <param name=\"maxCapacity\">the maximum buffer capacity before it is trimmed</param>\n            <param name=\"defaultSize\">the default size to make the buffer</param>\n            <remarks>\n            <para>\n            Reset this string writer so that it can be reused.\n            The internal buffers are cleared and reset.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.SystemInfo\">\r\n            <summary>\n            Utility class for system specific information.\n            </summary>\n            <remarks>\n            <para>\n            Utility class of static methods for system specific information.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n            <author>Alexey Solofnenko</author>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#ctor\">\r\n            <summary>\n            Private constructor to prevent instances.\n            </summary>\n            <remarks>\n            <para>\n            Only static methods are exposed from this type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#cctor\">\r\n            <summary>\n            Initialize default values for private static fields.\n            </summary>\n            <remarks>\n            <para>\n            Only static methods are exposed from this type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyLocationInfo(System.Reflection.Assembly)\">\r\n            <summary>\n            Gets the assembly location path for the specified assembly.\n            </summary>\n            <param name=\"myAssembly\">The assembly to get the location for.</param>\n            <returns>The location of the assembly.</returns>\n            <remarks>\n            <para>\n            This method does not guarantee to return the correct path\n            to the assembly. If only tries to give an indication as to\n            where the assembly was loaded from.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyQualifiedName(System.Type)\">\r\n            <summary>\r\n            Gets the fully qualified name of the <see cref=\"T:System.Type\"/>, including \r\n            the name of the assembly from which the <see cref=\"T:System.Type\"/> was \r\n            loaded.\r\n            </summary>\r\n            <param name=\"type\">The <see cref=\"T:System.Type\"/> to get the fully qualified name for.</param>\r\n            <returns>The fully qualified name for the <see cref=\"T:System.Type\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            This is equivalent to the <c>Type.AssemblyQualifiedName</c> property,\r\n            but this method works on the .NET Compact Framework 1.0 as well as\r\n            the full .NET runtime.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyShortName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the short name of the <see cref=\"T:System.Reflection.Assembly\"/>.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the name for.</param>\r\n            <returns>The short name of the <see cref=\"T:System.Reflection.Assembly\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            The short name of the assembly is the <see cref=\"P:System.Reflection.Assembly.FullName\"/> \r\n            without the version, culture, or public key. i.e. it is just the \r\n            assembly's file name without the extension.\r\n            </para>\r\n            <para>\r\n            Use this rather than <c>Assembly.GetName().Name</c> because that\r\n            is not available on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            Because of a FileIOPermission security demand we cannot do\r\n            the obvious Assembly.GetName().Name. We are allowed to get\r\n            the <see cref=\"P:System.Reflection.Assembly.FullName\"/> of the assembly so we \r\n            start from there and strip out just the assembly name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyFileName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the file name for.</param>\r\n            <returns>The file name of the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Type,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeType\">A sibling type to use to load the type.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified, it will be loaded from the assembly\r\n            containing the specified relative type. If the type is not found in the assembly \r\n            then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\t\t\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the\r\n            assembly that is directly calling this method. If the type is not found \r\n            in the assembly then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Reflection.Assembly,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeAssembly\">An assembly to load the type from.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the specified\r\n            assembly. If the type is not found in the assembly then all the loaded assemblies \r\n            will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.NewGuid\">\r\n            <summary>\n            Generate a new guid\n            </summary>\n            <returns>A new Guid</returns>\n            <remarks>\n            <para>\n            Generate a new guid\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateArgumentOutOfRangeException(System.String,System.Object,System.String)\">\r\n            <summary>\r\n            Create an <see cref=\"T:System.ArgumentOutOfRangeException\"/>\r\n            </summary>\r\n            <param name=\"parameterName\">The name of the parameter that caused the exception</param>\r\n            <param name=\"actualValue\">The value of the argument that causes this exception</param>\r\n            <param name=\"message\">The message that describes the error</param>\r\n            <returns>the ArgumentOutOfRangeException object</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new instance of the <see cref=\"T:System.ArgumentOutOfRangeException\"/> class \r\n            with a specified error message, the parameter name, and the value \r\n            of the argument.\r\n            </para>\r\n            <para>\r\n            The Compact Framework does not support the 3 parameter constructor for the\r\n            <see cref=\"T:System.ArgumentOutOfRangeException\"/> type. This method provides an\r\n            implementation that works for all platforms.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int32@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int32\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int64@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int64\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int16@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int16\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetAppSetting(System.String)\">\r\n            <summary>\n            Lookup an application setting\n            </summary>\n            <param name=\"key\">the application settings key to lookup</param>\n            <returns>the value for the key, or <c>null</c></returns>\n            <remarks>\n            <para>\n            Configuration APIs are not supported under the Compact Framework\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.ConvertToFullPath(System.String)\">\r\n            <summary>\n            Convert a path into a fully qualified local file path.\n            </summary>\n            <param name=\"path\">The path to convert.</param>\n            <returns>The fully qualified path.</returns>\n            <remarks>\n            <para>\n            Converts the path specified to a fully\n            qualified path. If the path is relative it is\n            taken as relative from the application base \n            directory.\n            </para>\n            <para>\n            The path specified must be a local file path, a URI is not supported.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateCaseInsensitiveHashtable\">\r\n            <summary>\r\n            Creates a new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity. \r\n            </summary>\r\n            <returns>A new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity</returns>\r\n            <remarks>\r\n            <para>\r\n            The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.EmptyTypes\">\r\n            <summary>\n            Gets an empty array of types.\n            </summary>\n            <remarks>\n            <para>\n            The <c>Type.EmptyTypes</c> field is not available on\n            the .NET Compact Framework 1.0.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.declaringType\">\r\n            <summary>\n            The fully qualified type of the SystemInfo class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_hostName\">\r\n            <summary>\n            Cache the host name for the current machine\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_appFriendlyName\">\r\n            <summary>\n            Cache the application friendly name\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_nullText\">\r\n            <summary>\n            Text to output when a <c>null</c> is encountered.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_notAvailableText\">\r\n            <summary>\n            Text to output when an unsupported feature is requested.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_processStartTime\">\r\n            <summary>\n            Start time for the current process.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NewLine\">\r\n            <summary>\n            Gets the system dependent line terminator.\n            </summary>\n            <value>\n            The system dependent line terminator.\n            </value>\n            <remarks>\n            <para>\n            Gets the system dependent line terminator.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationBaseDirectory\">\r\n            <summary>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The base directory path for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ConfigurationFileLocation\">\r\n            <summary>\r\n            Gets the path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not have a concept of a configuration\r\n            file. For this runtime, we use the entry assembly location as the root for\r\n            the configuration file name.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.EntryAssemblyLocation\">\r\n            <summary>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the entry assembly.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.CurrentThreadId\">\r\n            <summary>\n            Gets the ID of the current thread.\n            </summary>\n            <value>The ID of the current thread.</value>\n            <remarks>\n            <para>\n            On the .NET framework, the <c>AppDomain.GetCurrentThreadId</c> method\n            is used to obtain the thread ID for the current thread. This is the \n            operating system ID for the thread.\n            </para>\n            <para>\n            On the .NET Compact Framework 1.0 it is not possible to get the \n            operating system thread ID for the current thread. The native method \n            <c>GetCurrentThreadId</c> is implemented inline in a header file\n            and cannot be called.\n            </para>\n            <para>\n            On the .NET Framework 2.0 the <c>Thread.ManagedThreadId</c> is used as this\n            gives a stable id unrelated to the operating system thread ID which may \n            change if the runtime is using fibers.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.HostName\">\r\n            <summary>\r\n            Get the host name or machine name for the current machine\r\n            </summary>\r\n            <value>\r\n            The hostname or machine name\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the host name or machine name for the current machine\r\n            </para>\r\n            <para>\r\n            The host name (<see cref=\"M:System.Net.Dns.GetHostName\"/>) or\r\n            the machine name (<c>Environment.MachineName</c>) for\r\n            the current machine, or if neither of these are available\r\n            then <c>NOT AVAILABLE</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\">\r\n            <summary>\n            Get this application's friendly name\n            </summary>\n            <value>\n            The friendly name of this application as a string\n            </value>\n            <remarks>\n            <para>\n            If available the name of the application is retrieved from\n            the <c>AppDomain</c> using <c>AppDomain.CurrentDomain.FriendlyName</c>.\n            </para>\n            <para>\n            Otherwise the file name of the entry assembly is used.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ProcessStartTime\">\r\n            <summary>\n            Get the start time for the current process.\n            </summary>\n            <remarks>\n            <para>\n            This is the time at which the log4net library was loaded into the\n            AppDomain. Due to reports of a hang in the call to <c>System.Diagnostics.Process.StartTime</c>\n            this is not the start time for the current process.\n            </para>\n            <para>\n            The log4net library should be loaded by an application early during its\n            startup, therefore this start time should be a good approximation for\n            the actual start time.\n            </para>\n            <para>\n            Note that AppDomains may be loaded and unloaded within the\n            same process without the process terminating, however this start time\n            will be set per AppDomain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NullText\">\r\n            <summary>\n            Text to output when a <c>null</c> is encountered.\n            </summary>\n            <remarks>\n            <para>\n            Use this value to indicate a <c>null</c> has been encountered while\n            outputting a string representation of an item.\n            </para>\n            <para>\n            The default value is <c>(null)</c>. This value can be overridden by specifying\n            a value for the <c>log4net.NullText</c> appSetting in the application's\n            .config file.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NotAvailableText\">\r\n            <summary>\n            Text to output when an unsupported feature is requested.\n            </summary>\n            <remarks>\n            <para>\n            Use this value when an unsupported feature is requested.\n            </para>\n            <para>\n            The default value is <c>NOT AVAILABLE</c>. This value can be overridden by specifying\n            a value for the <c>log4net.NotAvailableText</c> appSetting in the application's\n            .config file.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.SystemStringFormat\">\r\n            <summary>\n            Utility class that represents a format string.\n            </summary>\n            <remarks>\n            <para>\n            Utility class that represents a format string.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.#ctor(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Initialise the <see cref=\"T:log4net.Util.SystemStringFormat\"/>\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.ToString\">\r\n            <summary>\n            Format the string and arguments\n            </summary>\n            <returns>the formatted string</returns>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Replaces the format item in a specified <see cref=\"T:System.String\"/> with the text equivalent \r\n            of the value of a corresponding <see cref=\"T:System.Object\"/> instance in a specified array.\r\n            A specified parameter supplies culture-specific formatting information.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n            <returns>\r\n            A copy of format in which the format items have been replaced by the <see cref=\"T:System.String\"/> \r\n            equivalent of the corresponding instances of <see cref=\"T:System.Object\"/> in args.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            This method does not throw exceptions. If an exception thrown while formatting the result the\r\n            exception and arguments are returned in the result string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormatError(System.Exception,System.String,System.Object[])\">\r\n            <summary>\n            Process an error during StringFormat\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderArray(System.Array,System.Text.StringBuilder)\">\r\n            <summary>\n            Dump the contents of an array into a string builder\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderObject(System.Object,System.Text.StringBuilder)\">\r\n            <summary>\n            Dump an object to a string\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemStringFormat.declaringType\">\r\n            <summary>\n            The fully qualified type of the SystemStringFormat class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextProperties.s_threadLocalSlot\">\r\n            <summary>\n            The thread local data slot to use to store a PropertiesDictionary.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Remove(System.String)\">\r\n            <summary>\n            Remove a property\n            </summary>\n            <param name=\"key\">the key for the entry to remove</param>\n            <remarks>\n            <para>\n            Remove a property\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Clear\">\r\n            <summary>\n            Clear all properties\n            </summary>\n            <remarks>\n            <para>\n            Clear all properties\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\n            Get the <c>PropertiesDictionary</c> for this thread.\n            </summary>\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\n            <returns>the properties for this thread</returns>\n            <remarks>\n            <para>\n            The collection returned is only to be used on the calling thread. If the\n            caller needs to share the collection between different threads then the \n            caller must clone the collection before doing so.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextProperties.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of a property\n            </summary>\n            <value>\n            The value for the property with the specified key\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the value of a property\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack\">\r\n            <summary>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.m_stack\">\r\n            <summary>\n            The stack store.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held in this stack.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears all the contextual information held in this stack.\r\n            Only call this if you think that this tread is being reused after\r\n            a previous call execution which may not have completed correctly.\r\n            You do not need to use this method if you always guarantee to call\r\n            the <see cref=\"M:System.IDisposable.Dispose\"/> method of the <see cref=\"T:System.IDisposable\"/>\r\n            returned from <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> even in exceptional circumstances,\r\n            for example by using the <c>using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))</c> \r\n            syntax.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Pop\">\r\n            <summary>\n            Removes the top context from this stack.\n            </summary>\n            <returns>The message in the context that was removed from the top of this stack.</returns>\n            <remarks>\n            <para>\n            Remove the top context from this stack, and return\n            it to the caller. If this stack is empty then an\n            empty string (not <see langword=\"null\"/>) is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message into this stack.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Pushes a new context onto this stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up this stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an ThreadContext Stack message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.GetFullMessage\">\r\n            <summary>\n            Gets the current context information for this stack.\n            </summary>\n            <returns>The current context information.</returns>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.ToString\">\r\n            <summary>\n            Gets the current context information for this stack.\n            </summary>\n            <returns>Gets the current context information</returns>\n            <remarks>\n            <para>\n            Gets the current context information for this stack.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.log4net#Core#IFixingRequired#GetFixedObject\">\r\n            <summary>\n            Get a portable version of this object\n            </summary>\n            <returns>the portable instance of this object</returns>\n            <remarks>\n            <para>\n            Get a cross thread portable version of this object\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.Count\">\r\n            <summary>\r\n            The number of messages in the stack\r\n            </summary>\r\n            <value>\r\n            The current number of messages in the stack\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The current number of messages in the stack. That is\r\n            the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> has been called\r\n            minus the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Pop\"/> has been called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.InternalStack\">\r\n            <summary>\r\n            Gets and sets the internal stack used by this <see cref=\"T:log4net.Util.ThreadContextStack\"/>\r\n            </summary>\r\n            <value>The internal storage stack</value>\r\n            <remarks>\r\n            <para>\r\n            This property is provided only to support backward compatability \r\n            of the <see cref=\"T:log4net.NDC\"/>. Tytpically the internal stack should not\r\n            be modified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.StackFrame\">\r\n            <summary>\n            Inner class used to represent a single context frame in the stack.\n            </summary>\n            <remarks>\n            <para>\n            Inner class used to represent a single context frame in the stack.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.StackFrame.#ctor(System.String,log4net.Util.ThreadContextStack.StackFrame)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">The message for this context.</param>\r\n            <param name=\"parent\">The parent context in the chain.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.StackFrame\"/> class\r\n            with the specified message and parent context.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.Message\">\r\n            <summary>\n            Get the message.\n            </summary>\n            <value>The message.</value>\n            <remarks>\n            <para>\n            Get the message.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.FullMessage\">\r\n            <summary>\n            Gets the full text of the context down to the root level.\n            </summary>\n            <value>\n            The full text of the context down to the root level.\n            </value>\n            <remarks>\n            <para>\n            Gets the full text of the context down to the root level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\">\r\n            <summary>\r\n            Struct returned from the <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This struct implements the <see cref=\"T:System.IDisposable\"/> and is designed to be used\r\n            with the <see langword=\"using\"/> pattern to remove the stack frame at the end of the scope.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameStack\">\r\n            <summary>\n            The ThreadContextStack internal stack\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameDepth\">\r\n            <summary>\n            The depth to trim the stack to when this instance is disposed\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.#ctor(System.Collections.Stack,System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"frameStack\">The internal stack used by the ThreadContextStack.</param>\r\n            <param name=\"frameDepth\">The depth to return the stack to when this object is disposed.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\"/> class with\r\n            the specified stack and return depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.Dispose\">\r\n            <summary>\n            Returns the stack to the correct depth.\n            </summary>\n            <remarks>\n            <para>\n            Returns the stack to the correct depth.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStacks\">\r\n            <summary>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStacks.#ctor(log4net.Util.ContextPropertiesBase)\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStacks\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStacks.declaringType\">\r\n            <summary>\n            The fully qualified type of the ThreadContextStacks class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStacks.Item(System.String)\">\r\n            <summary>\n            Gets the named thread context stack\n            </summary>\n            <value>\n            The named stack\n            </value>\n            <remarks>\n            <para>\n            Gets the named thread context stack\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.Transform\">\r\n            <summary>\n            Utility class for transforming strings.\n            </summary>\n            <remarks>\n            <para>\n            Utility class for transforming strings.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.Transform\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.WriteEscapedXmlString(System.Xml.XmlWriter,System.String,System.String)\">\r\n            <summary>\r\n            Write a string to an <see cref=\"T:System.Xml.XmlWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"textData\">the string to write</param>\r\n            <param name=\"invalidCharReplacement\">The string to replace non XML compliant chars with</param>\r\n            <remarks>\r\n            <para>\r\n            The test is escaped either using XML escape entities\r\n            or using CDATA sections.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.MaskXmlInvalidCharacters(System.String,System.String)\">\r\n            <summary>\n            Replace invalid XML characters in text string\n            </summary>\n            <param name=\"textData\">the XML text input string</param>\n            <param name=\"mask\">the string to use in place of invalid characters</param>\n            <returns>A string that does not contain invalid XML characters.</returns>\n            <remarks>\n            <para>\n            Certain Unicode code points are not allowed in the XML InfoSet, for\n            details see: <a href=\"http://www.w3.org/TR/REC-xml/#charsets\">http://www.w3.org/TR/REC-xml/#charsets</a>.\n            </para>\n            <para>\n            This method replaces any illegal characters in the input string\n            with the mask string specified.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.CountSubstrings(System.String,System.String)\">\r\n            <summary>\n            Count the number of times that the substring occurs in the text\n            </summary>\n            <param name=\"text\">the text to search</param>\n            <param name=\"substring\">the substring to find</param>\n            <returns>the number of times the substring occurs in the text</returns>\n            <remarks>\n            <para>\n            The substring is assumed to be non repeating within itself.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.Transform.INVALIDCHARS\">\r\n            <summary>\n            Characters illegal in XML 1.0\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext\">\r\n            <summary>\r\n            Impersonate a Windows Account\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.SecurityContext\"/> impersonates a Windows account.\r\n            </para>\r\n            <para>\r\n            How the impersonation is done depends on the value of <see cref=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\"/>.\r\n            This allows the context to either impersonate a set of user credentials specified \r\n            using username, domain name and password or to revert to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\">\r\n            <summary>\r\n            Initialize the SecurityContext based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The security context will try to Logon the specified user account and\r\n            capture a primary token for impersonation.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, \r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> or <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/> properties were not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <param name=\"state\">caller provided state</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> instance that will revoke the impersonation of this SecurityContext\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Depending on the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property either\r\n            impersonate a user using credentials supplied or revert \r\n            to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.LogonUser(System.String,System.String,System.String)\">\r\n            <summary>\r\n            Create a <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> given the userName, domainName and password.\r\n            </summary>\r\n            <param name=\"userName\">the user name</param>\r\n            <param name=\"domainName\">the domain name</param>\r\n            <param name=\"password\">the password</param>\r\n            <returns>the <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> for the account specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the Windows API call LogonUser to get a principal token for the account. This\r\n            token is used to initialize the WindowsIdentity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Credentials\">\r\n            <summary>\r\n            Gets or sets the impersonation mode for this security context\r\n            </summary>\r\n            <value>\r\n            The impersonation mode for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Impersonate either a user with user credentials or\r\n            revert this thread to the credentials of the process.\r\n            The value is one of the <see cref=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\"/>\r\n            enum.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            the user's credentials are established using the\r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/>\r\n            values.\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\"/>\r\n            no other properties need to be set. If the calling thread is \r\n            impersonating then it will be reverted back to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.UserName\">\r\n            <summary>\r\n            Gets or sets the Windows username for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows username for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.DomainName\">\r\n            <summary>\r\n            Gets or sets the Windows domain name for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows domain name for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value for <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> is the local machine name\r\n            taken from the <see cref=\"P:System.Environment.MachineName\"/> property.\r\n            </para>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Password\">\r\n            <summary>\r\n            Sets the password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <value>\r\n            The password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\">\r\n            <summary>\r\n            The impersonation modes for the <see cref=\"T:log4net.Util.WindowsSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property for\r\n            details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\">\r\n            <summary>\n            Impersonate a user using the credentials supplied\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\">\r\n            <summary>\n            Revert this the thread to the credentials of the process\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext\">\r\n            <summary>\r\n            Adds <see cref=\"T:System.IDisposable\"/> to <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Helper class to expose the <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            through the <see cref=\"T:System.IDisposable\"/> interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.#ctor(System.Security.Principal.WindowsImpersonationContext)\">\r\n            <summary>\n            Constructor\n            </summary>\n            <param name=\"impersonationContext\">the impersonation context being wrapped</param>\n            <remarks>\n            <para>\n            Constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.Dispose\">\r\n            <summary>\n            Revert the impersonation\n            </summary>\n            <remarks>\n            <para>\n            Revert the impersonation\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.GlobalContext\">\r\n            <summary>\r\n            The log4net Global Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>GlobalContext</c> provides a location for global debugging \r\n            information to be stored.\r\n            </para>\r\n            <para>\r\n            The global context has a properties map and these properties can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputing these properties.\r\n            </para>\r\n            <para>\r\n            By default the <c>log4net:HostName</c> property is set to the name of \r\n            the current machine.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <code lang=\"C#\">\r\n            GlobalContext.Properties[\"hostname\"] = Environment.MachineName;\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.GlobalContext.#ctor\">\r\n            <summary>\n            Private Constructor. \n            </summary>\n            <remarks>\n            Uses a private access modifier to prevent instantiation of this class.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.GlobalContext.s_properties\">\r\n            <summary>\n            The global context properties instance\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.GlobalContext.Properties\">\r\n            <summary>\n            The global properties map.\n            </summary>\n            <value>\n            The global properties map.\n            </value>\n            <remarks>\n            <para>\n            The global properties map.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.AssemblyInfo\">\r\n            <summary>\n            Provides information about the environment the assembly has\n            been built for.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.Version\">\r\n            <summary>Version of the assembly</summary>\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFrameworkVersion\">\r\n            <summary>Version of the framework targeted</summary>\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFramework\">\r\n            <summary>Type of framework targeted</summary>\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.ClientProfile\">\r\n            <summary>Does it target a client profile?</summary>\n        </member>\r\n        <member name=\"P:log4net.AssemblyInfo.Info\">\r\n            <summary>\n            Identifies the version and target for this assembly.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.LogicalThreadContext\">\r\n            <summary>\r\n            The log4net Logical Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> provides a location for <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> specific debugging \r\n            information to be stored.\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> or <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context provides a diagnostic context for the current call context. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context is managed on a per <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> basis.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            LogicalThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a LogicalThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(LogicalThreadContext.Stacks[\"LDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a LogicalThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogicalThreadContext.#ctor\">\r\n            <summary>\n            Private Constructor. \n            </summary>\n            <remarks>\n            <para>\n            Uses a private access modifier to prevent instantiation of this class.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_properties\">\r\n            <summary>\n            The thread context properties instance\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_stacks\">\r\n            <summary>\n            The thread context stacks instance\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> \r\n            or <see cref=\"T:log4net.GlobalContext\"/> properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Stacks\">\r\n            <summary>\n            The thread stacks\n            </summary>\n            <value>\n            stack map\n            </value>\n            <remarks>\n            <para>\n            The logical thread stacks.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.LogManager\">\r\n            <summary>\r\n            This class is used by client applications to request logger instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class has static methods that are used by a client to request\r\n            a logger instance. The <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method is \r\n            used to retrieve a logger.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.ILog\"/> interface for more details.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <seealso cref=\"T:log4net.ILog\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.LogManager\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String)\">\r\n            <overloads>Returns the named logger if it exists.</overloads>\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <remarks>\n            <para>\n            If the named logger exists (in the default repository) then it\n            returns a reference to the logger, otherwise it returns <c>null</c>.\n            </para>\n            </remarks>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>The logger found, or <c>null</c> if no logger could be found.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String,System.String)\">\r\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <remarks>\n            <para>\n            If the named logger exists (in the specified repository) then it\n            returns a reference to the logger, otherwise it returns\n            <c>null</c>.\n            </para>\n            </remarks>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>\n            The logger found, or <c>null</c> if the logger doesn't exist in the specified \n            repository.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <remarks>\n            <para>\n            If the named logger exists (in the repository for the specified assembly) then it\n            returns a reference to the logger, otherwise it returns\n            <c>null</c>.\n            </para>\n            </remarks>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>\n            The logger, or <c>null</c> if the logger doesn't exist in the specified\n            assembly's repository.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers\">\r\n            <overloads>Get the currently defined loggers.</overloads>\n            <summary>\n            Returns all the currently defined loggers in the default repository.\n            </summary>\n            <remarks>\n            <para>The root logger is <b>not</b> included in the returned array.</para>\n            </remarks>\n            <returns>All the defined loggers.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\n            Returns all the currently defined loggers in the specified repository.\n            </summary>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <remarks>\n            The root logger is <b>not</b> included in the returned array.\n            </remarks>\n            <returns>All the defined loggers.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\n            Returns all the currently defined loggers in the specified assembly's repository.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <remarks>\n            The root logger is <b>not</b> included in the returned array.\n            </remarks>\n            <returns>All the defined loggers.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String)\">\r\n            <overloads>Get or create a logger.</overloads>\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <remarks>\n            <para>\n            Retrieves a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.String)\">\r\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <remarks>\n            <para>\n            Retrieve a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>\n            By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <remarks>\n            <para>\n            Retrieve a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>\n            By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Get the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Shutdown\">\r\n            <summary>\n            Shuts down the log4net system.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in all the\n            default repositories.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository\">\r\n            <overloads>Shutdown a logger repository.</overloads>\n            <summary>\n            Shuts down the default repository.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            default repository.\n            </para>\n            <para>Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.String)\">\r\n            <summary>\n            Shuts down the repository for the repository specified.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            <paramref name=\"repository\"/> specified.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n            <param name=\"repository\">The repository to shutdown.</param>\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\n            Shuts down the repository specified.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            repository. The repository is looked up using\n            the <paramref name=\"repositoryAssembly\"/> specified.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>\n            The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration\">\r\n            <overloads>Reset the configuration of a repository</overloads>\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository\">\r\n            <overloads>Get the logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository\">\r\n            <overloads>Get a logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Type)\">\r\n            <overloads>Create a domain</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Type)\">\r\n            <overloads>Create a logger repository.</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets the list of currently defined repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get an array of all the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects that have been created.\r\n            </para>\r\n            </remarks>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLogger(log4net.Core.ILogger)\">\r\n            <summary>\n            Looks up the wrapper object for the logger specified.\n            </summary>\n            <param name=\"logger\">The logger to get the wrapper for.</param>\n            <returns>The wrapper for the logger specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLoggers(log4net.Core.ILogger[])\">\r\n            <summary>\n            Looks up the wrapper objects for the loggers specified.\n            </summary>\n            <param name=\"loggers\">The loggers to get the wrappers for.</param>\n            <returns>The wrapper objects for the loggers specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapperCreationHandler(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects used by\r\n            this manager.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <returns>The wrapper for the logger specified.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.LogManager.s_wrapperMap\">\r\n            <summary>\r\n            The wrapper map to use to hold the <see cref=\"T:log4net.Core.LogImpl\"/> objects.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.MDC\">\r\n            <summary>\r\n            Implementation of Mapped Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The MDC class is similar to the <see cref=\"T:log4net.NDC\"/> class except that it is\r\n            based on a map instead of a stack. It provides <i>mapped\r\n            diagnostic contexts</i>. A <i>Mapped Diagnostic Context</i>, or\r\n            MDC in short, is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The MDC is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.MDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Get(System.String)\">\r\n            <summary>\r\n            Gets the context value identified by the <paramref name=\"key\"/> parameter.\r\n            </summary>\r\n            <param name=\"key\">The key to lookup in the MDC.</param>\r\n            <returns>The string value held for the key, or a <c>null</c> reference if no corresponding value is found.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            If the <paramref name=\"key\"/> parameter does not look up to a\r\n            previously defined context then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Set(System.String,System.String)\">\r\n            <summary>\r\n            Add an entry to the MDC\r\n            </summary>\r\n            <param name=\"key\">The key to store the value under.</param>\r\n            <param name=\"value\">The value to store.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Puts a context value (the <paramref name=\"value\"/> parameter) as identified\r\n            with the <paramref name=\"key\"/> parameter into the current thread's\r\n            context map.\r\n            </para>\r\n            <para>\r\n            If a value is already defined for the <paramref name=\"key\"/>\r\n            specified then the value will be replaced. If the <paramref name=\"value\"/> \r\n            is specified as <c>null</c> then the key value mapping will be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Remove(System.String)\">\r\n            <summary>\r\n            Removes the key value mapping for the key specified.\r\n            </summary>\r\n            <param name=\"key\">The key to remove.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the specified entry from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Clear\">\r\n            <summary>\r\n            Clear all entries in the MDC\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove all the entries from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.NDC\">\r\n            <summary>\r\n            Implementation of Nested Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            A Nested Diagnostic Context, or NDC in short, is an instrument\r\n            to distinguish interleaved log output from different sources. Log\r\n            output is typically interleaved when a server handles multiple\r\n            clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            Interleaved log output can still be meaningful if each log entry\r\n            from different contexts had a distinctive stamp. This is where NDCs\r\n            come into play.\r\n            </para>\r\n            <para>\r\n            Note that NDCs are managed on a per thread basis. The NDC class\r\n            is made up of static methods that operate on the context of the\r\n            calling thread.\r\n            </para>\r\n            </remarks>\r\n            <example>How to push a message into the context\r\n            <code lang=\"C#\">\r\n            using(NDC.Push(\"my context message\"))\r\n            {\r\n            \t... all log calls will have 'my context message' included ...\r\n            \r\n            } // at the end of the using block the message is automatically removed \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.NDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held on the current thread.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Clears the stack of NDC data held on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.CloneStack\">\r\n            <summary>\r\n            Creates a clone of the stack of context information.\r\n            </summary>\r\n            <returns>A clone of the context info for this thread.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The results of this method can be passed to the <see cref=\"M:log4net.NDC.Inherit(System.Collections.Stack)\"/> \r\n            method to allow child threads to inherit the context of their \r\n            parent thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Inherit(System.Collections.Stack)\">\r\n            <summary>\r\n            Inherits the contextual information from another thread.\r\n            </summary>\r\n            <param name=\"stack\">The context stack to inherit.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This thread will use the context information from the stack\r\n            supplied. This can be used to initialize child threads with\r\n            the same contextual information as their parent threads. These\r\n            contexts will <b>NOT</b> be shared. Any further contexts that\r\n            are pushed onto the stack will not be visible to the other.\r\n            Call <see cref=\"M:log4net.NDC.CloneStack\"/> to obtain a stack to pass to\r\n            this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Pop\">\r\n            <summary>\r\n            Removes the top context from the stack.\r\n            </summary>\r\n            <returns>\r\n            The message in the context that was removed from the top \r\n            of the stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the top context from the stack, and return\r\n            it to the caller. If the stack is empty then an\r\n            empty string (not <c>null</c>) is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up \r\n            the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Pushes a new context onto the context stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up the context stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.NDC.Push(\"NDC_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an NDC message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Remove\">\r\n            <summary>\r\n            Removes the context information for this thread. It is\r\n            not required to call this method.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This method is not implemented.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.SetMaxDepth(System.Int32)\">\r\n            <summary>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            </summary>\r\n            <param name=\"maxDepth\">The maximum depth of the stack</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            This may truncate the head of the stack. This only affects the \r\n            stack in the current thread. Also it does not prevent it from\r\n            growing, it only sets the maximum depth at the time of the\r\n            call. This can be used to return to a known context depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.NDC.Depth\">\r\n            <summary>\r\n            Gets the current context depth.\r\n            </summary>\r\n            <value>The current context depth.</value>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The number of context values pushed onto the context stack.\r\n            </para>\r\n            <para>\r\n            Used to record the current depth of the context. This can then \r\n            be restored using the <see cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.ThreadContext\">\r\n            <summary>\r\n            The log4net Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> provides a location for thread specific debugging \r\n            information to be stored.\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The thread context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Thread Context provides a diagnostic context for the current thread. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Thread Context is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            ThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a ThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(ThreadContext.Stacks[\"NDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a ThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.ThreadContext.#ctor\">\r\n            <summary>\n            Private Constructor. \n            </summary>\n            <remarks>\n            <para>\n            Uses a private access modifier to prevent instantiation of this class.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_properties\">\r\n            <summary>\n            The thread context properties instance\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_stacks\">\r\n            <summary>\n            The thread context stacks instance\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Stacks\">\r\n            <summary>\n            The thread stacks\n            </summary>\n            <value>\n            stack map\n            </value>\n            <remarks>\n            <para>\n            The thread local stacks.\n            </para>\n            </remarks>\n        </member>\r\n    </members>\r\n</doc>\r\n"
  },
  {
    "path": "Tools/ThirdParty/log4net/1.1/release/log4net.xml",
    "content": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>log4net</name>\r\n    </assembly>\r\n    <members>\r\n        <member name=\"T:log4net.Appender.AdoNetAppender\">\r\n            <summary>\r\n            Appender that logs to a database.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> appends logging events to a table within a\r\n            database. The appender can be configured to specify the connection \r\n            string by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionString\"/> property. \r\n            The connection type (provider) can be specified by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/>\r\n            property. For more information on database connection strings for\r\n            your specific database see <a href=\"http://www.connectionstrings.com/\">http://www.connectionstrings.com/</a>.\r\n            </para>\r\n            <para>\r\n            Records are written into the database either using a prepared\r\n            statement or a stored procedure. The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property\r\n            is set to <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement\r\n            or to <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored\r\n            procedure.\r\n            </para>\r\n            <para>\r\n            The prepared statement text or the name of the stored procedure\r\n            must be set in the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property.\r\n            </para>\r\n            <para>\r\n            The prepared statement or stored procedure can take a number\r\n            of parameters. Parameters are added using the <see cref=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\"/>\r\n            method. This adds a single <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> to the\r\n            ordered list of parameters. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/>\r\n            type may be subclassed if required to provide database specific\r\n            functionality. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> specifies\r\n            the parameter name, database type, size, and how the value should\r\n            be generated using a <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            An example of a SQL Server table that could be logged to:\r\n            <code lang=\"SQL\">\r\n            CREATE TABLE [dbo].[Log] ( \r\n              [ID] [int] IDENTITY (1, 1) NOT NULL ,\r\n              [Date] [datetime] NOT NULL ,\r\n              [Thread] [varchar] (255) NOT NULL ,\r\n              [Level] [varchar] (20) NOT NULL ,\r\n              [Logger] [varchar] (255) NOT NULL ,\r\n              [Message] [varchar] (4000) NOT NULL \r\n            ) ON [PRIMARY]\r\n            </code>\r\n            </example>\r\n            <example>\r\n            An example configuration to log to the above table:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"AdoNetAppender_SqlServer\" type=\"log4net.Appender.AdoNetAppender\">\r\n              <connectionType value=\"System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"/>\r\n              <connectionString value=\"data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa\"/>\r\n              <commandText value=\"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)\"/>\r\n              <parameter>\r\n                <parameterName value=\"@log_date\"/>\r\n                <dbType value=\"DateTime\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@thread\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%thread\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@log_level\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"50\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%level\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@logger\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%logger\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@message\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"4000\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%message\"/>\r\n              </parameter>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Lance Nehring</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingAppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/> that \r\n            buffers events in a fixed size buffer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This base class should be used by appenders that need to buffer a \r\n            number of events before logging them. For example the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            buffers events and then submits the entire contents of the buffer to \r\n            the underlying database in one go.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>\r\n            method to deliver the buffered events.\r\n            </para>\r\n            <para>The BufferingAppenderSkeleton maintains a fixed size cyclic \r\n            buffer of events. The size of the buffer is set using \r\n            the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> property.\r\n            </para>\r\n            <para>A <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> is used to inspect \r\n            each event as it arrives in the appender. If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> \r\n            triggers, then the current buffer is sent immediately \r\n            (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>). Otherwise the event \r\n            is stored in the buffer. For example, an evaluator can be used to \r\n            deliver the events immediately when an ERROR event arrives.\r\n            </para>\r\n            <para>\r\n            The buffering appender can be configured in a <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode. \r\n            By default the appender is NOT lossy. When the buffer is full all \r\n            the buffered events are sent with <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property is set to <c>true</c> then the \r\n            buffer will not be sent when it is full, and new events arriving \r\n            in the appender will overwrite the oldest event in the buffer. \r\n            In lossy mode the buffer will only be sent when the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/>\r\n            triggers. This can be useful behavior when you need to know about \r\n            ERROR events but not about events with a lower level, configure an \r\n            evaluator that will trigger when an ERROR event arrives, the whole \r\n            buffer will be sent which gives a history of events leading up to\r\n            the ERROR event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the code for common functionality, such \r\n            as support for threshold filtering and support for general filters.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.IAppender\">\r\n            <summary>\r\n            Implement this interface for your own strategies for printing log statements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementors should consider extending the <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>\r\n            class which provides a default implementation of this interface.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.Close\">\r\n            <summary>\n            Closes the appender and releases resources.\n            </summary>\n            <remarks>\n            <para>\n            Releases any resources allocated within the appender such as file handles, \n            network connections, etc.\n            </para>\n            <para>\n            It is a programming error to append to a closed appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Log the logging event in Appender specific way.\n            </summary>\n            <param name=\"loggingEvent\">The event to log</param>\n            <remarks>\n            <para>\n            This method is called to log a message into this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.IAppender.Name\">\r\n            <summary>\n            Gets or sets the name of this appender.\n            </summary>\n            <value>The name of the appender.</value>\n            <remarks>\n            <para>The name uniquely identifies the appender.</para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.IBulkAppender\">\r\n            <summary>\r\n            Interface for appenders that support bulk logging.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface extends the <see cref=\"T:log4net.Appender.IAppender\"/> interface to\r\n            support bulk logging of <see cref=\"T:log4net.Core.LoggingEvent\"/> objects. Appenders\r\n            should only implement this interface if they can bulk log efficiently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Log the array of logging events in Appender specific way.\n            </summary>\n            <param name=\"loggingEvents\">The events to log</param>\n            <remarks>\n            <para>\n            This method is called to log an array of events into this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.IOptionHandler\">\r\n            <summary>\r\n            Interface used to delay activate a configured object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This allows an object to defer activation of its options until all\r\n            options have been set. This is required for components which have\r\n            related options that remain ambiguous until all are set.\r\n            </para>\r\n            <para>\r\n            If a component implements this interface then the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method \r\n            must be called by the container after its all the configured properties have been set \r\n            and before the component can be used.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IOptionHandler.ActivateOptions\">\r\n            <summary>\n            Activate the options that were previously set with calls to properties.\n            </summary>\n            <remarks>\n            <para>\n            This allows an object to defer activation of its options until all\n            options have been set. This is required for components which have\n            related options that remain ambiguous until all are set.\n            </para>\n            <para>\n            If a component implements this interface then this method must be called\n            after its properties have been set before the component can be used.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferSize\">\r\n            <summary>\n            Initial buffer size\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity\">\r\n            <summary>\n            Maximum buffer size before it is recycled\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>Empty default constructor</para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Finalize\">\r\n            <summary>\r\n            Finalizes this appender by calling the implementation's \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If this appender has not been closed then the <c>Finalize</c> method\r\n            will call <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Close\">\r\n            <summary>\r\n            Closes the appender and release resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            <para>\r\n            This method cannot be overridden by subclasses. This method \r\n            delegates the closing of the appender to the <see cref=\"M:log4net.Appender.AppenderSkeleton.OnClose\"/>\r\n            method which must be overridden in the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvent\"/>\r\n            will be passed to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvents\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvents\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvents\"/>\r\n            will be passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.FilterEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Test if the logging event should we output by this appender\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to test</param>\r\n            <returns><c>true</c> if the event should be output, <c>false</c> if the event should be ignored</returns>\r\n            <remarks>\r\n            <para>\r\n            This method checks the logging event against the threshold level set\r\n            on this appender and also against the filters specified on this\r\n            appender.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.AddFilter(log4net.Filter.IFilter)\">\r\n            <summary>\n            Adds a filter to the end of the filter chain.\n            </summary>\n            <param name=\"filter\">the filter to add to this appender</param>\n            <remarks>\n            <para>\n            The Filters are organized in a linked list.\n            </para>\n            <para>\n            Setting this property causes the new filter to be pushed onto the \n            back of the filter chain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ClearFilters\">\r\n            <summary>\n            Clears the filter list for this appender.\n            </summary>\n            <remarks>\n            <para>\n            Clears the filter list for this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.IsAsSevereAsThreshold(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if the message level is below this appender's threshold.\r\n            </summary>\r\n            <param name=\"level\"><see cref=\"T:log4net.Core.Level\"/> to test against.</param>\r\n            <remarks>\r\n            <para>\r\n            If there is no threshold set, then the return value is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the <paramref name=\"level\"/> meets the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> \r\n            requirements of this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.OnClose\">\r\n            <summary>\n            Is called when the appender is closed. Derived classes should override \n            this method if resources need to be released.\n            </summary>\n            <remarks>\n            <para>\n            Releases any resources allocated within the appender such as file handles, \n            network connections, etc.\n            </para>\n            <para>\n            It is a programming error to append to a closed appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Subclasses of <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> should implement this method \r\n            to perform actual logging.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to append.</param>\r\n            <remarks>\r\n            <para>\r\n            A subclass must implement this method to perform\r\n            logging of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            <para>This method will be called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            if all the conditions listed for that method are met.\r\n            </para>\r\n            <para>\r\n            To restrict the logging of events in the appender\r\n            override the <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append a bulk array of logging events.\r\n            </summary>\r\n            <param name=\"loggingEvents\">the array of logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This base class implementation calls the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>\r\n            method for each element in the bulk array.\r\n            </para>\r\n            <para>\r\n            A sub class that can better process a bulk array of events should\r\n            override this method in addition to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\">\r\n            <summary>\r\n            Called before <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> as a precondition.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            before the call to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden in a subclass to extend the checks \r\n            made before the event is passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            A subclass should ensure that they delegate this call to\r\n            this base class if it is overridden.\r\n            </para>\r\n            </remarks>\r\n            <returns><c>true</c> if the call to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> should proceed.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <returns>The event rendered as a string.</returns>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Where possible use the alternative version of this method\r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>.\r\n            That method streams the rendering onto an existing Writer\r\n            which can give better performance if the caller already has\r\n            a <see cref=\"T:System.IO.TextWriter\"/> open and ready for writing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Use this method in preference to <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/>\r\n            where possible. If, however, the caller needs to render the event\r\n            to a string then <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/> does\r\n            provide an efficient mechanism for doing so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_layout\">\r\n            <summary>\r\n            The layout of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_name\">\r\n            <summary>\r\n            The name of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Name\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_threshold\">\r\n            <summary>\r\n            The level threshold of this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            There is no level threshold filtering by default.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_errorHandler\">\r\n            <summary>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_headFilter\">\r\n            <summary>\r\n            The first filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Set to <c>null</c> initially.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_tailFilter\">\r\n            <summary>\r\n            The last filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_closed\">\r\n            <summary>\r\n            Flag indicating if this appender is closed.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_recursiveGuard\">\r\n            <summary>\n            The guard prevents an appender from repeatedly calling its own DoAppend method\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_renderWriter\">\r\n            <summary>\n            StringWriter used to render events\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.declaringType\">\r\n            <summary>\n            The fully qualified type of the AppenderSkeleton class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Threshold\">\r\n            <summary>\r\n            Gets or sets the threshold <see cref=\"T:log4net.Core.Level\"/> of this appender.\r\n            </summary>\r\n            <value>\r\n            The threshold <see cref=\"T:log4net.Core.Level\"/> of the appender. \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            All log events with lower level than the threshold level are ignored \r\n            by the appender.\r\n            </para>\r\n            <para>\r\n            In configuration files this option is specified by setting the\r\n            value of the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> option to a level\r\n            string, such as \"DEBUG\", \"INFO\" and so on.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </summary>\r\n            <value>The <see cref=\"T:log4net.Core.IErrorHandler\"/> of the appender</value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> provides a default \r\n            implementation for the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> property. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.FilterHead\">\r\n            <summary>\n            The filter chain.\n            </summary>\n            <value>The head of the filter chain filter chain.</value>\n            <remarks>\n            <para>\n            Returns the head Filter. The Filters are organized in a linked list\n            and so all Filters on this Appender are available through the result.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.ILayout\"/> for this appender.\r\n            </summary>\r\n            <value>The layout of the appender.</value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Name\">\r\n            <summary>\n            Gets or sets the name of this appender.\n            </summary>\n            <value>The name of the appender.</value>\n            <remarks>\n            <para>\n            The name uniquely identifies the appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\">\r\n            <summary>\r\n            Tests if this appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            In the rather exceptional case, where the appender \r\n            implementation admits a layout but can also work without it, \r\n            then the appender should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This default implementation always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the appender requires a layout object, otherwise <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\">\r\n            <summary>\n            The default buffer size.\n            </summary>\n            <remarks>\n            The default size of the cyclic buffer used to store events.\n            This is set to 512 by default.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Protected default constructor to allow subclassing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <param name=\"eventMustBeFixed\">the events passed through this appender must be\r\n            fixed by the time that they arrive in the derived class' <c>SendBuffer</c> method.</param>\r\n            <remarks>\r\n            <para>\r\n            Protected constructor to allow subclassing.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"eventMustBeFixed\"/> should be set if the subclass\r\n            expects the events delivered to be fixed even if the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to zero, i.e. when no buffering occurs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flushes any events that have been buffered.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will NOT be flushed to the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush(System.Boolean)\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <param name=\"flushLossyBuffer\">set to <c>true</c> to flush the buffer of lossy events</param>\r\n            <remarks>\r\n            <para>\r\n            Flushes events that have been buffered. If <paramref name=\"flushLossyBuffer\"/> is\r\n            <c>false</c> then events will only be flushed if this buffer is non-lossy mode.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will only be flushed if <paramref name=\"flushLossyBuffer\"/> is <c>true</c>.\r\n            In this case the contents of the buffer will be tested against the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\"/> and if triggering will be output. All other buffered\r\n            events will be discarded.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"flushLossyBuffer\"/> is <c>true</c> then the buffer will always\r\n            be emptied by calling this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.OnClose\">\r\n            <summary>\r\n            Close this appender instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close this appender instance. If this appender is marked\r\n            as not <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> then the remaining events in \r\n            the buffer must be sent when the appender is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Stores the <paramref name=\"loggingEvent\"/> in the cyclic buffer.\r\n            </para>\r\n            <para>\r\n            The buffer will be sent (i.e. passed to the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/> \r\n            method) if one of the following conditions is met:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>The cyclic buffer is full and this appender is\r\n            \t\tmarked as not lossy (see <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>)</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>An <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> is set and\r\n            \t\tit is triggered for the <paramref name=\"loggingEvent\"/>\r\n            \t\tspecified.</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Before the event is stored in the buffer it is fixed\r\n            (see <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/>) to ensure that\r\n            any data referenced by the event will be valid when the buffer\r\n            is processed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendFromBuffer(log4net.Core.LoggingEvent,log4net.Util.CyclicBuffer)\">\r\n            <summary>\r\n            Sends the contents of the buffer.\r\n            </summary>\r\n            <param name=\"firstLoggingEvent\">The first logging event.</param>\r\n            <param name=\"buffer\">The buffer containing the events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            The subclass must override <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Sends the events.\n            </summary>\n            <param name=\"events\">The events that need to be send.</param>\n            <remarks>\n            <para>\n            The subclass must override this method to process the buffered events.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_bufferSize\">\r\n            <summary>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </summary>\r\n            <remarks>\r\n            Set to <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\"/> by default.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_cb\">\r\n            <summary>\n            The cyclic buffer used to store the logging events.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_evaluator\">\r\n            <summary>\r\n            The triggering event evaluator that causes the buffer to be sent immediately.\r\n            </summary>\r\n            <remarks>\r\n            The object that is used to determine if an event causes the entire\r\n            buffer to be sent immediately. This field can be <c>null</c>, which \r\n            indicates that event triggering is not to be done. The evaluator\r\n            can be set using the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> property. If this appender\r\n            has the <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\"/> (<see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property) set to \r\n            <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\">\r\n            <summary>\r\n            Indicates if the appender should overwrite events in the cyclic buffer \r\n            when it becomes full, or if the buffer should be flushed when the \r\n            buffer is full.\r\n            </summary>\r\n            <remarks>\r\n            If this field is set to <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must \r\n            be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossyEvaluator\">\r\n            <summary>\n            The triggering event evaluator filters discarded events.\n            </summary>\n            <remarks>\n            The object that is used to determine if an event that is discarded should\n            really be discarded or if it should be sent to the appenders. \n            This field can be <c>null</c>, which indicates that all discarded events will\n            be discarded. \n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_fixFlags\">\r\n            <summary>\n            Value indicating which fields in the event should be fixed\n            </summary>\n            <remarks>\n            By default all fields are fixed\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_eventMustBeFixed\">\r\n            <summary>\n            The events delivered to the subclass must be fixed.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender is lossy.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender is lossy, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This appender uses a buffer to store logging events before \r\n            delivering them. A triggering event causes the whole buffer\r\n            to be send to the remote sink. If the buffer overruns before\r\n            a triggering event then logging events could be lost. Set\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> to <c>false</c> to prevent logging events \r\n            from being lost.\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\">\r\n            <summary>\r\n            Gets or sets the size of the cyclic buffer used to hold the \r\n            logging events.\r\n            </summary>\r\n            <value>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option takes a positive integer\r\n            representing the maximum number of logging events to collect in \r\n            a cyclic buffer. When the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is reached,\r\n            oldest events are deleted as new events are added to the\r\n            buffer. By default the size of the cyclic buffer is 512 events.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to a value less than\r\n            or equal to 1 then no buffering will occur. The logging event\r\n            will be delivered synchronously (depending on the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>\r\n            and <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> properties). Otherwise the event will\r\n            be buffered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the \r\n            buffer to be sent immediately.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the buffer to be\r\n            sent immediately.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is appended to this \r\n            appender. If the evaluator triggers then the current buffer will \r\n            immediately be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\">\r\n            <summary>\r\n            Gets or sets the value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </summary>\r\n            <value>\r\n            The value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is discarded from this \r\n            appender. If the evaluator triggers then the current buffer will immediately \r\n            be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating if only part of the logging event data\r\n            should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the\r\n            event data to be fixed and serialized. This will improve performance.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Fix\">\r\n            <summary>\r\n            Gets or sets a the fields that will be fixed in the event\r\n            </summary>\r\n            <value>\r\n            The event fields that will be fixed before the event is buffered\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.#ctor\">\r\n            <summary> \r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Public default constructor to initialize a new instance of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.OnClose\">\r\n            <summary>\n            Override the parent method to close the database\n            </summary>\n            <remarks>\n            <para>\n            Closes the database command and database connection.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Inserts the events into the database.\n            </summary>\n            <param name=\"events\">The events to insert into the database.</param>\n            <remarks>\n            <para>\n            Insert all the events specified in the <paramref name=\"events\"/>\n            array into the database.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\">\r\n            <summary>\n            Adds a parameter to the command.\n            </summary>\n            <param name=\"parameter\">The parameter to add to the command.</param>\n            <remarks>\n            <para>\n            Adds a parameter to the ordered list of command parameters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(System.Data.IDbTransaction,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Writes the events to the database using the transaction specified.\r\n            </summary>\r\n            <param name=\"dbTran\">The transaction that the events will be executed under.</param>\r\n            <param name=\"events\">The array of events to insert into the database.</param>\r\n            <remarks>\r\n            <para>\r\n            The transaction argument can be <c>null</c> if the appender has been\r\n            configured not to use transactions. See <see cref=\"P:log4net.Appender.AdoNetAppender.UseTransactions\"/>\r\n            property for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.GetLogStatement(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Formats the log message into database statement text.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            This method can be overridden by subclasses to provide \r\n            more control over the format of the database statement.\r\n            </remarks>\r\n            <returns>\r\n            Text that can be passed to a <see cref=\"T:System.Data.IDbCommand\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.CreateConnection(System.Type,System.String)\">\r\n            <summary>\r\n            Creates an <see cref=\"T:System.Data.IDbConnection\"/> instance used to connect to the database.\r\n            </summary>\r\n            <remarks>\r\n            This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary).\r\n            </remarks>\r\n            <param name=\"connectionType\">The <see cref=\"T:System.Type\"/> of the <see cref=\"T:System.Data.IDbConnection\"/> object.</param>\r\n            <param name=\"connectionString\">The connectionString output from the ResolveConnectionString method.</param>\r\n            <returns>An <see cref=\"T:System.Data.IDbConnection\"/> instance with a valid connection string.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionString(System.String@)\">\r\n            <summary>\n            Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey\n            property.\n            </summary>\n            <remarks>\n            ConnectiongStringName is only supported on .NET 2.0 and higher.\n            </remarks>\n            <param name=\"connectionStringContext\">Additional information describing the connection string.</param>\n            <returns>A connection string used to connect to the database.</returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionType\">\r\n            <summary>\r\n            Retrieves the class type of the ADO.NET provider.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the Type of the ADO.NET provider to use to connect to the\r\n            database. This method resolves the type specified in the \r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> property.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to return a different type\r\n            if necessary.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:System.Type\"/> of the ADO.NET provider</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseCommand\">\r\n            <summary>\n            Prepares the database command and initialize the parameters.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseConnection\">\r\n            <summary>\n            Connects to the database.\n            </summary>\t\t\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DisposeCommand(System.Boolean)\">\r\n            <summary>\n            Cleanup the existing command.\n            </summary>\n            <param name=\"ignoreException\">\n            If true, a message will be written using LogLog.Warn if an exception is encountered when calling Dispose.\n            </param>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DiposeConnection\">\r\n            <summary>\r\n            Cleanup the existing connection.\r\n            </summary>\r\n            <remarks>\r\n            Calls the IDbConnection's <see cref=\"M:System.Data.IDbConnection.Close\"/> method.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_usePreparedCommand\">\r\n            <summary>\n            Flag to indicate if we are using a command object\n            </summary>\n            <remarks>\n            <para>\n            Set to <c>true</c> when the appender is to use a prepared\n            statement or stored procedure to insert into the database.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_parameters\">\r\n            <summary>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbConnection\">\r\n            <summary>\r\n            The <see cref=\"T:System.Data.IDbConnection\"/> that will be used\r\n            to insert logging events into a database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbCommand\">\r\n            <summary>\n            The database command.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionString\">\r\n            <summary>\n            Database connection string.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_appSettingsKey\">\r\n            <summary>\n            The appSettings key from App.Config that contains the connection string.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionType\">\r\n            <summary>\r\n            String type name of the <see cref=\"T:System.Data.IDbConnection\"/> type name.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandText\">\r\n            <summary>\n            The text of the command.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandType\">\r\n            <summary>\n            The command type.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_useTransactions\">\r\n            <summary>\n            Indicates whether to use transactions when writing to the database.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_reconnectOnError\">\r\n            <summary>\n            Indicates whether to use transactions when writing to the database.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the AdoNetAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionString\">\r\n            <summary>\r\n            Gets or sets the database connection string that is used to connect to \r\n            the database.\r\n            </summary>\r\n            <value>\r\n            The database connection string used to connect to the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The connections string is specific to the connection type.\r\n            See <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>Connection string for MS Access via ODBC:\r\n            <code>\"DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\\data\\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\\data\\train33.mdb\"</code>\r\n            </example>\r\n            <example>Another connection string for MS Access via ODBC:\r\n            <code>\"Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;UID=;PWD=;\"</code>\r\n            </example>\r\n            <example>Connection string for MS Access via OLE DB:\r\n            <code>\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;User Id=;Password=;\"</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.AppSettingsKey\">\r\n            <summary>\n            The appSettings key from App.Config that contains the connection string.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionType\">\r\n            <summary>\r\n            Gets or sets the type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection\r\n            that should be created.\r\n            </summary>\r\n            <value>\r\n            The type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name of the ADO.NET provider to use.\r\n            </para>\r\n            <para>\r\n            The default is to use the OLE DB provider.\r\n            </para>\r\n            </remarks>\r\n            <example>Use the OLE DB Provider. This is the default value.\r\n            <code>System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the MS SQL Server Provider. \r\n            <code>System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the ODBC Provider. \r\n            <code>Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>ODBC .NET Data Provider</b>.\r\n            </example>\r\n            <example>Use the Oracle Provider. \r\n            <code>System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>.NET Managed Provider for Oracle</b>.\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandText\">\r\n            <summary>\r\n            Gets or sets the command text that is used to insert logging events\r\n            into the database.\r\n            </summary>\r\n            <value>\r\n            The command text used to insert logging events into the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Either the text of the prepared statement or the\r\n            name of the stored procedure to execute to write into\r\n            the database.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property determines if\r\n            this text is a prepared statement or a stored procedure.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandType\">\r\n            <summary>\r\n            Gets or sets the command type to execute.\r\n            </summary>\r\n            <value>\r\n            The command type to execute.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This value may be either <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify\r\n            that the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> is a prepared statement to execute, \r\n            or <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify that the\r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property is the name of a stored procedure\r\n            to execute.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.UseTransactions\">\r\n            <summary>\n            Should transactions be used to insert logging events in the database.\n            </summary>\n            <value>\n            <c>true</c> if transactions should be used to insert logging events in\n            the database, otherwise <c>false</c>. The default value is <c>true</c>.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets a value that indicates whether transactions should be used\n            to insert logging events in the database.\n            </para>\n            <para>\n            When set a single transaction will be used to insert the buffered events\n            into the database. Otherwise each event will be inserted without using\n            an explicit transaction.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ReconnectOnError\">\r\n            <summary>\n            Should this appender try to reconnect to the database on error.\n            </summary>\n            <value>\n            <c>true</c> if the appender should try to reconnect to the database after an\n            error has occurred, otherwise <c>false</c>. The default value is <c>false</c>, \n            i.e. not to try to reconnect.\n            </value>\n            <remarks>\n            <para>\n            The default behaviour is for the appender not to try to reconnect to the\n            database if an error occurs. Subsequent logging events are discarded.\n            </para>\n            <para>\n            To force the appender to attempt to reconnect to the database set this\n            property to <c>true</c>.\n            </para>\n            <note>\n            When the appender attempts to connect to the database there may be a\n            delay of up to the connection timeout specified in the connection string.\n            This delay will block the calling application's thread. \n            Until the connection can be reestablished this potential delay may occur multiple times.\n            </note>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.Connection\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> creates a <see cref=\"T:System.Data.IDbConnection\"/> to insert \r\n            logging events into a database.  Classes deriving from <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            can use this property to get or set this <see cref=\"T:System.Data.IDbConnection\"/>.  Use the \r\n            underlying <see cref=\"T:System.Data.IDbConnection\"/> returned from <see cref=\"P:log4net.Appender.AdoNetAppender.Connection\"/> if \r\n            you require access beyond that which <see cref=\"T:log4net.Appender.AdoNetAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AdoNetAppenderParameter\">\r\n            <summary>\r\n            Parameter type used by the <see cref=\"T:log4net.Appender.AdoNetAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the basic database parameter properties\r\n            as defined by the <see cref=\"T:System.Data.IDbDataParameter\"/> interface.\r\n            </para>\r\n            <para>This type can be subclassed to provide database specific\r\n            functionality. The two methods that are called externally are\r\n            <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\"/> and <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Default constructor for the AdoNetAppenderParameter class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\">\r\n            <summary>\n            Prepare the specified database command object.\n            </summary>\n            <param name=\"command\">The command to prepare.</param>\n            <remarks>\n            <para>\n            Prepares the database command object by adding\n            this parameter to its collection of parameters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Renders the logging event and set the parameter value in the command.\n            </summary>\n            <param name=\"command\">The command containing the parameter.</param>\n            <param name=\"loggingEvent\">The event to be rendered.</param>\n            <remarks>\n            <para>\n            Renders the logging event using this parameters layout\n            object. Sets the value of the parameter on the command object.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_parameterName\">\r\n            <summary>\n            The name of this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_dbType\">\r\n            <summary>\n            The database type for this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_inferType\">\r\n            <summary>\n            Flag to infer type rather than use the DbType\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_precision\">\r\n            <summary>\n            The precision for this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_scale\">\r\n            <summary>\n            The scale for this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_size\">\r\n            <summary>\n            The size for this parameter.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_layout\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to render the\r\n            logging event into an object for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.ParameterName\">\r\n            <summary>\n            Gets or sets the name of this parameter.\n            </summary>\n            <value>\n            The name of this parameter.\n            </value>\n            <remarks>\n            <para>\n            The name of this parameter. The parameter name\n            must match up to a named parameter to the SQL stored procedure\n            or prepared statement.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\">\r\n            <summary>\r\n            Gets or sets the database type for this parameter.\r\n            </summary>\r\n            <value>\r\n            The database type for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The database type for this parameter. This property should\r\n            be set to the database type from the <see cref=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\"/>\r\n            enumeration. See <see cref=\"P:System.Data.IDataParameter.DbType\"/>.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the type from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDataParameter.DbType\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Precision\">\r\n            <summary>\r\n            Gets or sets the precision for this parameter.\r\n            </summary>\r\n            <value>\r\n            The precision for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum number of digits used to represent the Value.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the precision from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Precision\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Scale\">\r\n            <summary>\r\n            Gets or sets the scale for this parameter.\r\n            </summary>\r\n            <value>\r\n            The scale for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The number of decimal places to which Value is resolved.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the scale from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Scale\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Size\">\r\n            <summary>\r\n            Gets or sets the size for this parameter.\r\n            </summary>\r\n            <value>\r\n            The size for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum size, in bytes, of the data within the column.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the size from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Size\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to \r\n            render the logging event into an object for this \r\n            parameter.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> used to render the\r\n            logging event into an object for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> that renders the value for this\r\n            parameter.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.RawLayoutConverter\"/> can be used to adapt\r\n            any <see cref=\"T:log4net.Layout.ILayout\"/> into a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            for use in the property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender\">\r\n            <summary>\r\n            Appends logging events to the terminal using ANSI color escape sequences.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            AnsiColorTerminalAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific level of message to be set.\r\n            </para>\r\n            <note>\r\n            This appender expects the terminal to understand the VT100 control set \r\n            in order to interpret the color codes. If the terminal or console does not\r\n            understand the control codes the behavior is not defined.\r\n            </note>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            <para>\r\n            When configuring the ANSI colored terminal appender, a mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red\"/>\r\n                <attributes value=\"Bright,Underscore\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            </list>\r\n            These color values cannot be combined together to make new colors.\r\n            </para>\r\n            <para>\r\n            The attributes can be any combination of the following:\r\n            <list type=\"bullet\">\r\n            <item><term>Bright</term><description>foreground is brighter</description></item>\r\n            <item><term>Dim</term><description>foreground is dimmer</description></item>\r\n            <item><term>Underscore</term><description>message is underlined</description></item>\r\n            <item><term>Blink</term><description>foreground is blinking (does not work on all terminals)</description></item>\r\n            <item><term>Reverse</term><description>foreground and background are reversed</description></item>\r\n            <item><term>Hidden</term><description>output is hidden</description></item>\r\n            <item><term>Strikethrough</term><description>message has a line through it</description></item>\r\n            </list>\r\n            While any of these attributes may be combined together not all combinations\r\n            work well together, for example setting both <i>Bright</i> and <i>Dim</i> attributes makes\r\n            no sense.\r\n            </para>\r\n            </remarks>\r\n            <author>Patrick Wagstrom</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.PostEventCodes\">\r\n            <summary>\n            Ansi code to reset terminal\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.AddMapping(log4net.Appender.AnsiColorTerminalAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colours\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.ActivateOptions\">\r\n            <summary>\n            Initialize the options for this appender\n            </summary>\n            <remarks>\n            <para>\n            Initialize the level to color mappings set on this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_writeToErrorStream\">\r\n            <summary>\n            Flag to write output to the error stream rather than the standard output stream\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to color value\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\">\r\n            <summary>\n            Target is the value of the console output stream.\n            </summary>\n            <value>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </value>\n            <remarks>\n            <para>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes\">\r\n            <summary>\r\n            The enum of possible display attributes\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the ANSI color attributes.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Bright\">\r\n            <summary>\n            text is bright\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Dim\">\r\n            <summary>\n            text is dim\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Underscore\">\r\n            <summary>\n            text is underlined\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Blink\">\r\n            <summary>\n            text is blinking\n            </summary>\n            <remarks>\n            Not all terminals support this attribute\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Reverse\">\r\n            <summary>\n            text and background colors are reversed\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Hidden\">\r\n            <summary>\n            text is hidden\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Strikethrough\">\r\n            <summary>\n            text is displayed with a strikethrough\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiColor\">\r\n            <summary>\r\n            The enum of possible foreground or background color values for \r\n            use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The output can be in one for the following ANSI colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Black\">\r\n            <summary>\n            color is black\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Red\">\r\n            <summary>\n            color is red\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Green\">\r\n            <summary>\n            color is green\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Yellow\">\r\n            <summary>\n            color is yellow\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Blue\">\r\n            <summary>\n            color is blue\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Magenta\">\r\n            <summary>\n            color is magenta\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Cyan\">\r\n            <summary>\n            color is cyan\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.White\">\r\n            <summary>\n            color is white\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the color it should be displayed as.\n            </summary>\n            <remarks>\n            <para>\n            Defines the mapping between a level and the color it should be displayed in.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMappingEntry\">\r\n            <summary>\r\n            An entry in the <see cref=\"T:log4net.Util.LevelMapping\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract base class for types that are stored in the\r\n            <see cref=\"T:log4net.Util.LevelMapping\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.#ctor\">\r\n            <summary>\n            Default protected constructor\n            </summary>\n            <remarks>\n            <para>\n            Default protected constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.ActivateOptions\">\r\n            <summary>\n            Initialize any options defined on this entry\n            </summary>\n            <remarks>\n            <para>\n            Should be overridden by any classes that need to initialise based on their options\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LevelMappingEntry.Level\">\r\n            <summary>\r\n            The level that is the key for this mapping \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this mapping \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set the <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this\r\n            mapping subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> together\r\n            and append the attributes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\">\r\n            <summary>\n            The mapped foreground color for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped foreground color for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\">\r\n            <summary>\n            The mapped background color for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped background color for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\">\r\n            <summary>\n            The color attributes for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The color attributes for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/>, <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> and\r\n            <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\"/> suitable for setting the ansi terminal color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Appender.IAppender\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ReadOnly(log4net.Appender.AppenderCollection)\">\r\n            <summary>\n            Creates a read-only wrapper for a <c>AppenderCollection</c> instance.\n            </summary>\n            <param name=\"list\">list to create a readonly wrapper arround</param>\n            <returns>\n            An <c>AppenderCollection</c> wrapper that is read-only.\n            </returns>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.EmptyCollection\">\r\n            <summary>\n            An empty readonly static AppenderCollection\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor\">\r\n            <summary>\n            Initializes a new instance of the <c>AppenderCollection</c> class\n            that is empty and has the default initial capacity.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Int32)\">\r\n            <summary>\n            Initializes a new instance of the <c>AppenderCollection</c> class\n            that has the specified initial capacity.\n            </summary>\n            <param name=\"capacity\">\n            The number of elements that the new <c>AppenderCollection</c> is initially capable of storing.\n            </param>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>AppenderCollection</c> class\n            that contains elements copied from the specified <c>AppenderCollection</c>.\n            </summary>\n            <param name=\"c\">The <c>AppenderCollection</c> whose elements are copied to the new collection.</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection.Tag)\">\r\n            <summary>\n            Allow subclasses to avoid our default constructors\n            </summary>\n            <param name=\"tag\"></param>\n            <exclude/>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Add(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Appender.IAppender\"/> to the end of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clear\">\r\n            <summary>\n            Removes all elements from the <c>AppenderCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Appender.AppenderCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Contains(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Appender.IAppender\"/> is in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>AppenderCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IndexOf(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Appender.IAppender\"/>\r\n            in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to locate in the <c>AppenderCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>AppenderCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Insert(System.Int32,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Inserts an element into the <c>AppenderCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Remove(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Appender.IAppender\"/> from the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to remove from the <c>AppenderCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Appender.IAppender\"/> was not found in the <c>AppenderCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Appender.AppenderCollection.Enumerator\"/> for the entire <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>AppenderCollection</c> to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>AppenderCollection</c> whose elements should be added to the end of the current <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> array to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> collection to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.TrimToSize\">\r\n            <summary>\n            Sets the capacity to the actual number of elements.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ToArray\">\r\n            <summary>\n            Return the collection elements as an array\n            </summary>\n            <returns>the array</returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Count\">\r\n            <summary>\n            Gets the number of elements actually contained in the <c>AppenderCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsSynchronized\">\r\n            <summary>\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\n            </summary>\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.SyncRoot\">\r\n            <summary>\n            Gets an object that can be used to synchronize access to the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.IAppender\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            \t<para><paramref name=\"index\"/> is less than zero</para>\r\n            \t<para>-or-</para>\r\n            \t<para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsFixedSize\">\r\n            <summary>\n            Gets a value indicating whether the collection has a fixed size.\n            </summary>\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsReadOnly\">\r\n            <summary>\n            Gets a value indicating whether the IList is read-only.\n            </summary>\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Capacity\">\r\n            <summary>\n            Gets or sets the number of elements the <c>AppenderCollection</c> can contain.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Tag\">\r\n            <summary>\n            Type visible only to our subclasses\n            Used to access protected constructor\n            </summary>\n            <exclude/>\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.Tag.Default\">\r\n            <summary>\n            A value\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>Enumerator</c> class.\n            </summary>\n            <param name=\"tc\"></param>\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Enumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.ReadOnlyAppenderCollection\">\r\n            <exclude/>\n        </member>\r\n        <member name=\"T:log4net.Appender.AspNetTraceAppender\">\r\n            <summary>\r\n            <para>\r\n            Appends log events to the ASP.NET <see cref=\"T:System.Web.TraceContext\"/> system.\r\n            </para>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Diagnostic information and tracing messages that you specify are appended to the output \r\n            of the page that is sent to the requesting browser. Optionally, you can view this information\r\n            from a separate trace viewer (Trace.axd) that displays trace information for every page in a \r\n            given application.\r\n            </para>\r\n            <para>\r\n            Trace statements are processed and displayed only when tracing is enabled. You can control \r\n            whether tracing is displayed to a page, to the trace viewer, or both.\r\n            </para>\r\n            <para>\r\n            The logging event is passed to the <see cref=\"M:System.Web.TraceContext.Write(System.String)\"/> or \r\n            <see cref=\"M:System.Web.TraceContext.Warn(System.String)\"/> method depending on the level of the logging event.\r\n            The event's logger name is the default value for the category parameter of the Write/Warn method. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AspNetTraceAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the logging event to the ASP.NET trace\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Write the logging event to the ASP.NET trace\r\n            <c>HttpContext.Current.Trace</c> \r\n            (<see cref=\"T:System.Web.TraceContext\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AspNetTraceAppender.m_category\">\r\n            <summary>\n            Defaults to %logger\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingForwardingAppender\">\r\n            <summary>\r\n            Buffers events and then forwards them to attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The events are buffered in this appender until conditions are\r\n            met to allow the appender to deliver the events to the attached \r\n            appenders. See <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> for the\r\n            conditions that cause the buffer to be sent.\r\n            </para>\r\n            <para>The forwarding appender can be used to specify different \r\n            thresholds and filters for the same appender at different locations \r\n            within the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IAppenderAttachable\">\r\n            <summary>\n            Interface for attaching appenders to objects.\n            </summary>\n            <remarks>\n            <para>\n            Interface for attaching, removing and retrieving appenders.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\n            Attaches an appender.\n            </summary>\n            <param name=\"appender\">The appender to add.</param>\n            <remarks>\n            <para>\n            Add the specified appender. The implementation may\n            choose to allow or deny duplicate appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.GetAppender(System.String)\">\r\n            <summary>\n            Gets an attached appender with the specified name.\n            </summary>\n            <param name=\"name\">The name of the appender to get.</param>\n            <returns>\n            The appender with the name specified, or <c>null</c> if no appender with the\n            specified name is found.\n            </returns>\n            <remarks>\n            <para>\n            Returns an attached appender with the <paramref name=\"name\"/> specified.\n            If no appender with the specified name is found <c>null</c> will be\n            returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAllAppenders\">\r\n            <summary>\n            Removes all attached appenders.\n            </summary>\n            <remarks>\n            <para>\n            Removes and closes all attached appenders\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.IAppenderAttachable.Appenders\">\r\n            <summary>\n            Gets all attached appenders.\n            </summary>\n            <value>\n            A collection of attached appenders.\n            </value>\n            <remarks>\n            <para>\n            Gets a collection of attached appenders.\n            If there are no attached appenders the\n            implementation should return an empty \n            collection rather than <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.OnClose\">\r\n            <summary>\n            Closes the appender and releases resources.\n            </summary>\n            <remarks>\n            <para>\n            Releases any resources allocated within the appender such as file handles, \n            network connections, etc.\n            </para>\n            <para>\n            It is a programming error to append to a closed appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Send the events.\n            </summary>\n            <param name=\"events\">The events that need to be send.</param>\n            <remarks>\n            <para>\n            Forwards the events to the attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\n            Looks for the appender with the specified name.\n            </summary>\n            <param name=\"name\">The name of the appender to lookup.</param>\n            <returns>\n            The appender with the specified name, or <c>null</c>.\n            </returns>\n            <remarks>\n            <para>\n            Get the named appender attached to this buffering appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\n            Removes all previously added appenders from this appender.\n            </summary>\n            <remarks>\n            <para>\n            This is useful when re-reading configuration information.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ColoredConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific type of message to be set.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes directly to the application's attached console\r\n            not to the <c>System.Console.Out</c> or <c>System.Console.Error</c> <c>TextWriter</c>.\r\n            The <c>System.Console.Out</c> and <c>System.Console.Error</c> streams can be\r\n            programmatically redirected (for example NUnit does this to capture program output).\r\n            This appender will ignore these redirections because it needs to use Win32\r\n            API calls to colorize the output. To respect these redirections the <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            must be used.\r\n            </para>\r\n            <para>\r\n            When configuring the colored console appender, mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red, HighIntensity\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            combination of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            <item><term>HighIntensity</term><description></description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Rick Hobbs</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.AddMapping(log4net.Appender.ColoredConsoleAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colors\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.ActivateOptions\">\r\n            <summary>\n            Initialize the options for this appender\n            </summary>\n            <remarks>\n            <para>\n            Initialize the level to color mappings set on this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_writeToErrorStream\">\r\n            <summary>\n            Flag to write output to the error stream rather than the standard output stream\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to color value\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_consoleOutputWriter\">\r\n            <summary>\n            The console output stream writer to write to\n            </summary>\n            <remarks>\n            <para>\n            This writer is not thread safe.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.Target\">\r\n            <summary>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </summary>\n            <value>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </value>\n            <remarks>\n            <para>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.Colors\">\r\n            <summary>\r\n            The enum of possible color values for use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.ColoredConsoleAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Blue\">\r\n            <summary>\n            color is blue\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Green\">\r\n            <summary>\n            color is green\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Red\">\r\n            <summary>\n            color is red\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.White\">\r\n            <summary>\n            color is white\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Yellow\">\r\n            <summary>\n            color is yellow\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Purple\">\r\n            <summary>\n            color is purple\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Cyan\">\r\n            <summary>\n            color is cyan\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity\">\r\n            <summary>\n            color is intensified\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the color it should be displayed as.\n            </summary>\n            <remarks>\n            <para>\n            Defines the mapping between a level and the color it should be displayed in.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> together.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\">\r\n            <summary>\n            The mapped foreground color for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped foreground color for the specified level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\">\r\n            <summary>\n            The mapped background color for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped background color for the specified level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> suitable for \r\n            setting the console color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.Target\">\r\n            <summary>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </summary>\n            <value>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </value>\n            <remarks>\n            <para>\n            Target is the value of the console output stream.\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.DebugAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Debug\"/> class for details on configuring the\r\n            debug system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <see cref=\"M:System.Diagnostics.Debug.Write(System.String,System.String)\"/>\r\n            method. The event's logger name is passed as the value for the category name to the Write method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is <c>true</c> then the <see cref=\"M:System.Diagnostics.Debug.Flush\"/>\r\n            is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.DebugAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.ImmediateFlush\">\r\n            <summary>\n            Gets or sets a value that indicates whether the appender will \n            flush at the end of each write.\n            </summary>\n            <remarks>\n            <para>The default behavior is to flush at the end of each \n            write. If the option is set to<c>false</c>, then the underlying \n            stream can defer writing to physical medium to a later time. \n            </para>\n            <para>\n            Avoiding the flush operation at the end of each append results \n            in a performance gain of 10 to 20 percent. However, there is safety\n            trade-off involved in skipping flushing. Indeed, when flushing is\n            skipped, then it is likely that the last few log events will not\n            be recorded on disk when the application exits. This is a high\n            price to pay even for a 20% performance gain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender\">\r\n            <summary>\r\n            Writes events to the system event log.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges.\r\n            See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog\r\n            </para>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry can be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            The <c>Category</c> of the event log entry can be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            <para>\r\n            When configuring the EventLogAppender a mapping can be\r\n            specified to map a logging level to an event log entry type. For example:\r\n            </para>\r\n            <code lang=\"XML\">\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"ERROR\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Error\" /&gt;\r\n            &lt;/mapping&gt;\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"DEBUG\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Information\" /&gt;\r\n            &lt;/mapping&gt;\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and eventLogEntryType can be any value\r\n            from the <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> enum, i.e.:\r\n            <list type=\"bullet\">\r\n            <item><term>Error</term><description>an error event</description></item>\r\n            <item><term>Warning</term><description>a warning event</description></item>\r\n            <item><term>Information</term><description>an informational event</description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Thomas Voss</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class\r\n            with the specified <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The <see cref=\"T:log4net.Layout.ILayout\"/> to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.AddMapping(log4net.Appender.EventLogAppender.Level2EventLogEntryType)\">\r\n            <summary>\r\n            Add a mapping of level to <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\"/> mapping to this appender.\r\n            Each mapping defines the event log entry type for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.CreateEventSource(System.String,System.String,System.String)\">\r\n            <summary>\n            Create an event log source\n            </summary>\n            <remarks>\n            Uses different API calls under NET_2_0\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Writes the event to the system event log using the \r\n            <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>.</para>\r\n            \r\n            <para>If the event has an <c>EventID</c> property (see <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            set then this integer will be used as the event log event id.</para>\r\n            \r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.GetEntryType(log4net.Core.Level)\">\r\n            <summary>\r\n            Get the equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/>\r\n            </summary>\r\n            <param name=\"level\">the Level to convert to an EventLogEntryType</param>\r\n            <returns>The equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/></returns>\r\n            <remarks>\r\n            Because there are fewer applicable <see cref=\"T:System.Diagnostics.EventLogEntryType\"/>\r\n            values to use in logging levels than there are in the \r\n            <see cref=\"T:log4net.Core.Level\"/> this is a one way mapping. There is\r\n            a loss of information during the conversion.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_logName\">\r\n            <summary>\n            The log name is the section in the event logs where the messages\n            are stored.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_applicationName\">\r\n            <summary>\r\n            Name of the application to use when logging.  This appears in the\r\n            application column of the event log named by <see cref=\"F:log4net.Appender.EventLogAppender.m_logName\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_machineName\">\r\n            <summary>\n            The name of the machine which holds the event log. This is\n            currently only allowed to be '.' i.e. the current machine.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to EventLogEntryType\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_eventId\">\r\n            <summary>\n            The event ID to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_category\">\r\n            <summary>\n            The event category to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the EventLogAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.LogName\">\r\n            <summary>\r\n            The name of the log where messages will be stored.\r\n            </summary>\r\n            <value>\r\n            The string name of the log where messages will be stored.\r\n            </value>\r\n            <remarks>\r\n            <para>This is the name of the log as it appears in the Event Viewer\r\n            tree. The default value is to log into the <c>Application</c>\r\n            log, this is where most applications write their events. However\r\n            if you need a separate log for your application (or applications)\r\n            then you should set the <see cref=\"P:log4net.Appender.EventLogAppender.LogName\"/> appropriately.</para>\r\n            <para>This should not be used to distinguish your event log messages\r\n            from those of other applications, the <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>\r\n            property should be used to distinguish events. This property should be \r\n            used to group together events into a single log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.ApplicationName\">\r\n            <summary>\n            Property used to set the Application name.  This appears in the\n            event logs when logging.\n            </summary>\n            <value>\n            The string used to distinguish events from different sources.\n            </value>\n            <remarks>\n            Sets the event log source property.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.MachineName\">\r\n            <summary>\n            This property is used to return the name of the computer to use\n            when accessing the event logs.  Currently, this is the current\n            computer, denoted by a dot \".\"\n            </summary>\n            <value>\n            The string name of the machine holding the event log that \n            will be logged into.\n            </value>\n            <remarks>\n            This property cannot be changed. It is currently set to '.'\n            i.e. the local machine. This may be changed in future.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The system security context used to write to the EventLog.\r\n            </para>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.EventId\">\r\n            <summary>\r\n            Gets or sets the <c>EventId</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry will normally be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Category\">\r\n            <summary>\r\n            Gets or sets the <c>Category</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>Category</c> of the event log entry will normally be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the color it should be displayed as.\n            </summary>\n            <remarks>\n            <para>\n            Defines the mapping between a level and its event log entry type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender\">\r\n            <summary>\r\n            Appends logging events to a file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Logging events are sent to the file specified by\r\n            the <see cref=\"P:log4net.Appender.FileAppender.File\"/> property.\r\n            </para>\r\n            <para>\r\n            The file can be opened in either append or overwrite mode \r\n            by specifying the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property.\r\n            If the file path is relative it is taken as relative from \r\n            the application base directory. The file encoding can be\r\n            specified by setting the <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> property.\r\n            </para>\r\n            <para>\r\n            The layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            values will be written each time the file is opened and closed\r\n            respectively. If the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is <see langword=\"true\"/>\r\n            then the file may contain multiple copies of the header and footer.\r\n            </para>\r\n            <para>\r\n            This appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> supports pluggable file locking models via\r\n            the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> property.\r\n            The default behavior, implemented by <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> \r\n            is to obtain an exclusive write lock on the file until this appender is closed.\r\n            The alternative models only hold a\r\n            write lock while the appender is writing a logging event (<see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/>)\r\n            or synchronize by using a named system wide Mutex (<see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/>).\r\n            </para>\r\n            <para>\r\n            All locking strategies have issues and you should seriously consider using a different strategy that\r\n            avoids having multiple processes logging to the same file.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Rodrigo B. de Oliveira</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Niall Daley</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TextWriterAppender\">\r\n            <summary>\r\n            Sends logging events to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An Appender that writes to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This appender may be used stand alone if initialized with an appropriate\r\n            writer, however it is typically used as a base class for an appender that\r\n            can open a <see cref=\"T:System.IO.TextWriter\"/> to write to.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.Stream)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and\r\n            sets the output destination to a new <see cref=\"T:System.IO.StreamWriter\"/> initialized \r\n            with the specified <see cref=\"T:System.IO.Stream\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <param name=\"os\">The <see cref=\"T:System.IO.Stream\"/> to output to.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.TextWriter)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and sets\r\n            the output destination to the specified <see cref=\"T:System.IO.StreamWriter\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender</param>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to output to</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> must have been previously opened.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PreAppendCheck\">\r\n            <summary>\n            This method determines if there is a sense in attempting to append.\n            </summary>\n            <remarks>\n            <para>\n            This method checks if an output target has been set and if a\n            layout has been set. \n            </para>\n            </remarks>\n            <returns><c>false</c> if any of the preconditions fail.</returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method writes all the bulk logged events to the output writer\r\n            before flushing the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.OnClose\">\r\n            <summary>\n            Close this appender instance. The underlying stream or writer is also closed.\n            </summary>\n            <remarks>\n            Closed appenders cannot be reused.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooterAndCloseWriter\">\r\n            <summary>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Reset\">\r\n            <summary>\r\n            Clears internal references to the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            and other variables.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Subclasses can override this method for an alternate closing behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PrepareWriter\">\r\n            <summary>\r\n            Called to allow a subclass to lazily initialize the writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called when an event is logged and the <see cref=\"P:log4net.Appender.TextWriterAppender.Writer\"/> or\r\n            <see cref=\"P:log4net.Appender.TextWriterAppender.QuietWriter\"/> have not been set. This allows a subclass to\r\n            attempt to initialize the writer multiple times.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_qtw\">\r\n            <summary>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            or output stream will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logging events are not actually persisted if and when the application \r\n            crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the TextWriterAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\">\r\n            <summary>\n            Gets or set whether the appender will flush at the end \n            of each append operation.\n            </summary>\n            <value>\n            <para>\n            The default behavior is to flush at the end of each \n            append operation.\n            </para>\n            <para>\n            If this option is set to <c>false</c>, then the underlying \n            stream can defer persisting the logging event to a later \n            time.\n            </para>\n            </value>\n            <remarks>\n            Avoiding the flush operation at the end of each append results in\n            a performance gain of 10 to 20 percent. However, there is safety\n            trade-off involved in skipping flushing. Indeed, when flushing is\n            skipped, then it is likely that the last few log events will not\n            be recorded on disk when the application exits. This is a high\n            price to pay even for a 20% performance gain.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.Writer\">\r\n            <summary>\r\n            Sets the <see cref=\"T:System.IO.TextWriter\"/> where the log output will go.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The specified <see cref=\"T:System.IO.TextWriter\"/> must be open and writable.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> will be closed when the appender \r\n            instance is closed.\r\n            </para>\r\n            <para>\r\n            <b>Note:</b> Logging to an unopened <see cref=\"T:System.IO.TextWriter\"/> will fail.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\">\r\n            <summary>\r\n            Gets or set the <see cref=\"T:log4net.Core.IErrorHandler\"/> and the underlying \r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/>, if any, for this appender. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.QuietWriter\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events are written.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String,System.Boolean)\">\r\n            <summary>\n            Construct a new appender using the layout, file and append mode.\n            </summary>\n            <param name=\"layout\">the layout to use with this appender</param>\n            <param name=\"filename\">the full path to the file to write to</param>\n            <param name=\"append\">flag to indicate if the file should be appended to</param>\n            <remarks>\n            <para>\n            Obsolete constructor.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String)\">\r\n            <summary>\n            Construct a new appender using the layout and file specified.\n            The file will be appended to.\n            </summary>\n            <param name=\"layout\">the layout to use with this appender</param>\n            <param name=\"filename\">the full path to the file to write to</param>\n            <remarks>\n            <para>\n            Obsolete constructor.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on the file appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This will cause the file to be opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Reset\">\r\n            <summary>\r\n            Closes any previously opened file and calls the parent's <see cref=\"M:log4net.Appender.TextWriterAppender.Reset\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets the filename and the file stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.PrepareWriter\">\r\n            <summary>\n            Called to initialize the file writer\n            </summary>\n            <remarks>\n            <para>\n            Will be called for each logged message until the file is\n            successfully opened.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Acquires the output file locks once before writing all the events to\r\n            the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseFile\">\r\n            <summary>\r\n            Closes the previously opened file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Layout.ILayout.Footer\"/> to the file and then\r\n            closes the file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SafeOpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\r\n            </summary>\r\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\r\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\r\n            <remarks>\r\n            <para>\r\n            Calls <see cref=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\"/> but guarantees not to throw an exception.\r\n            Errors are passed to the <see cref=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\n            </summary>\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\n            <remarks>\n            <para>\n            If there was already an opened file, then the previous file\n            is closed first.\n            </para>\n            <para>\n            This method will ensure that the directory structure\n            for the <paramref name=\"fileName\"/> specified exists.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\">\r\n            <summary>\r\n            Sets the quiet writer used for file output\r\n            </summary>\r\n            <param name=\"fileStream\">the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This implementation of <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\"/> creates a <see cref=\"T:System.IO.StreamWriter\"/>\r\n            over the <paramref name=\"fileStream\"/> and passes it to the \r\n            <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden by sub classes that want to wrap the\r\n            <see cref=\"T:System.IO.Stream\"/> in some way, for example to encrypt the output\r\n            data using a <c>System.Security.Cryptography.CryptoStream</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\r\n            Sets the quiet writer being used.\r\n            </summary>\r\n            <param name=\"writer\">the writer over the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This method can be overridden by sub classes that want to\r\n            wrap the <see cref=\"T:System.IO.TextWriter\"/> in some way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\n            Convert a path into a fully qualified path.\n            </summary>\n            <param name=\"path\">The path to convert.</param>\n            <returns>The fully qualified path.</returns>\n            <remarks>\n            <para>\n            Converts the path specified to a fully\n            qualified path. If the path is relative it is\n            taken as relative from the application base \n            directory.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_appendToFile\">\r\n            <summary>\n            Flag to indicate if we should append to the file\n            or overwrite the file. The default is to append.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_fileName\">\r\n            <summary>\n            The name of the log file.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_encoding\">\r\n            <summary>\n            The encoding to use for the file stream.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_stream\">\r\n            <summary>\n            The stream to log to. Has added locking semantics\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_lockingModel\">\r\n            <summary>\n            The locking model to use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the FileAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.File\">\r\n            <summary>\n            Gets or sets the path to the file that logging will be written to.\n            </summary>\n            <value>\n            The path to the file that logging will be written to.\n            </value>\n            <remarks>\n            <para>\n            If the path is relative it is taken as relative from \n            the application base directory.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.AppendToFile\">\r\n            <summary>\n            Gets or sets a flag that indicates whether the file should be\n            appended to or overwritten.\n            </summary>\n            <value>\n            Indicates whether the file should be appended to or overwritten.\n            </value>\n            <remarks>\n            <para>\n            If the value is set to false then the file will be overwritten, if \n            it is set to true then the file will be appended to.\n            </para>\n            The default value is true.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default encoding set is <see cref=\"P:System.Text.Encoding.Default\"/>\r\n            which is the encoding for the system's current ANSI code page.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModel\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to lock the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </para>\r\n            <para>\r\n            There are three built in locking models, <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>, <see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/> and <see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/> .\r\n            The first locks the file from the start of logging to the end, the \r\n            second locks only for the minimal amount of time when logging each message\r\n            and the last synchronizes processes using a named system wide Mutex.\r\n            </para>\r\n            <para>\r\n            The default locking model is the <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingStream\">\r\n            <summary>\r\n            Write only <see cref=\"T:System.IO.Stream\"/> that uses the <see cref=\"T:log4net.Appender.FileAppender.LockingModelBase\"/> \r\n            to manage access to an underlying resource.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)\">\r\n            <summary>\n            True asynchronous writes are not supported, the implementation forces a synchronous write.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LogException\">\r\n            <summary>\r\n            Exception base type for log4net.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class with\r\n            the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingModelBase\">\r\n            <summary>\r\n            Locking model base class\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Base class for the locking models available to the <see cref=\"T:log4net.Appender.FileAppender\"/> derived loggers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the output file\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\">\r\n            <summary>\n            Close the file\n            </summary>\n            <remarks>\n            <para>\n            Close the file. No further writes will be made.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CreateStream(System.String,System.Boolean,System.IO.FileShare)\">\r\n            <summary>\n            Helper method that creates a FileStream under CurrentAppender's SecurityContext.\n            </summary>\n            <remarks>\n            <para>\n            Typically called during OpenFile or AcquireLock. \n            </para>\n            <para>\n            If the directory portion of the <paramref name=\"filename\"/> does not exist, it is created\n            via Directory.CreateDirecctory.\n            </para>\n            </remarks>\n            <param name=\"filename\"></param>\n            <param name=\"append\"></param>\n            <param name=\"fileShare\"></param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseStream(System.IO.Stream)\">\r\n            <summary>\n            Helper method to close <paramref name=\"stream\"/> under CurrentAppender's SecurityContext.\n            </summary>\n            <remarks>\n            Does not set <paramref name=\"stream\"/> to null.\n            </remarks>\n            <param name=\"stream\"></param>\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModelBase.CurrentAppender\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The file appender this locking model is attached to and working on\r\n            behalf of.\r\n            </para>\r\n            <para>\r\n            The file appender is used to locate the security context and the error handler to use.\r\n            </para>\r\n            <para>\r\n            The value of this property will be set before <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\"/> is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.ExclusiveLock\">\r\n            <summary>\r\n            Hold an exclusive lock on the output file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Open the file once for writing and hold it open until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/> is called. \r\n            Maintains an exclusive lock on the file during this time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\">\r\n            <summary>\n            Close the file\n            </summary>\n            <remarks>\n            <para>\n            Close the file. No further writes will be made.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\">\r\n            <summary>\n            Acquire the lock on the file\n            </summary>\n            <returns>A stream that is ready to be written to.</returns>\n            <remarks>\n            <para>\n            Does nothing. The lock is already taken\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\">\r\n            <summary>\n            Release the lock on the file\n            </summary>\n            <remarks>\n            <para>\n            Does nothing. The lock will be released when the file is closed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.MinimalLock\">\r\n            <summary>\r\n            Acquires the file lock for each write\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Opens the file once for each <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>/<see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> cycle, \r\n            thus holding the lock for the minimal amount of time. This method of locking\r\n            is considerably slower than <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> but allows \r\n            other processes to move/delete the log file whilst logging continues.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Prepares to open the file when the first message is logged.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\">\r\n            <summary>\n            Close the file\n            </summary>\n            <remarks>\n            <para>\n            Close the file. No further writes will be made.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.InterProcessLock\">\r\n            <summary>\n            Provides cross-process file locking.\n            </summary>\n            <author>Ron Grabowski</author>\n            <author>Steve Wranovsky</author>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/>,\r\n            -<see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\">\r\n            <summary>\n            Close the file\n            </summary>\n            <remarks>\n            <para>\n            Close the file. No further writes will be made.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\">\r\n            <summary>\n            Acquire the lock on the file\n            </summary>\n            <returns>A stream that is ready to be written to.</returns>\n            <remarks>\n            <para>\n            Does nothing. The lock is already taken\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.ForwardingAppender\">\r\n            <summary>\n            This appender forwards logging events to attached appenders.\n            </summary>\n            <remarks>\n            <para>\n            The forwarding appender can be used to specify different thresholds\n            and filters for the same appender at different locations within the hierarchy.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.OnClose\">\r\n            <summary>\n            Closes the appender and releases resources.\n            </summary>\n            <remarks>\n            <para>\n            Releases any resources allocated within the appender such as file handles, \n            network connections, etc.\n            </para>\n            <para>\n            It is a programming error to append to a closed appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Forward the logging event to the attached appenders \n            </summary>\n            <param name=\"loggingEvent\">The event to log.</param>\n            <remarks>\n            <para>\n            Delivers the logging event to all the attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Forward the logging events to the attached appenders \n            </summary>\n            <param name=\"loggingEvents\">The array of events to log.</param>\n            <remarks>\n            <para>\n            Delivers the logging events to all the attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\n            Looks for the appender with the specified name.\n            </summary>\n            <param name=\"name\">The name of the appender to lookup.</param>\n            <returns>\n            The appender with the specified name, or <c>null</c>.\n            </returns>\n            <remarks>\n            <para>\n            Get the named appender attached to this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\n            Removes all previously added appenders from this appender.\n            </summary>\n            <remarks>\n            <para>\n            This is useful when re-reading configuration information.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender\">\r\n            <summary>\r\n            Logs events to a local syslog service.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            This appender uses the POSIX libc library functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c>.\r\n            If these functions are not available on the local system then this appender will not work!\r\n            </note>\r\n            <para>\r\n            The functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c> are specified in SUSv2 and \r\n            POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service.\r\n            </para>\r\n            <para>\r\n            This appender talks to a local syslog service. If you need to log to a remote syslog\r\n            daemon and you cannot configure your local syslog service to do this you may be\r\n            able to use the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> to log via UDP.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class is set up to write \r\n            to a local syslog service.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/> to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.OnClose\">\r\n            <summary>\n            Close the syslog when the appender is closed\n            </summary>\n            <remarks>\n            <para>\n            Close the syslog when the appender is closed\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\n            Translates a log4net level to a syslog severity.\n            </summary>\n            <param name=\"level\">A log4net level.</param>\n            <returns>A syslog severity.</returns>\n            <remarks>\n            <para>\n            Translates a log4net level to a syslog severity.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GeneratePriority(log4net.Appender.LocalSyslogAppender.SyslogFacility,log4net.Appender.LocalSyslogAppender.SyslogSeverity)\">\r\n            <summary>\n            Generate a syslog priority.\n            </summary>\n            <param name=\"facility\">The syslog facility.</param>\n            <param name=\"severity\">The syslog severity.</param>\n            <returns>A syslog priority.</returns>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_identity\">\r\n            <summary>\n            The message identity\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_handleToIdentity\">\r\n            <summary>\n            Marshaled handle to the identity string. We have to hold on to the\n            string as the <c>openlog</c> and <c>syslog</c> APIs just hold the\n            pointer to the ident and dereference it for each log message.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to syslog severity\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.openlog(System.IntPtr,System.Int32,log4net.Appender.LocalSyslogAppender.SyslogFacility)\">\r\n            <summary>\n            Open connection to system logger.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.syslog(System.Int32,System.String,System.String)\">\r\n            <summary>\n            Generate a log message.\n            </summary>\n            <remarks>\n            <para>\n            The libc syslog method takes a format string and a variable argument list similar\n            to the classic printf function. As this type of vararg list is not supported\n            by C# we need to specify the arguments explicitly. Here we have specified the\n            format string with a single message argument. The caller must set the format \n            string to <c>\"%s\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.closelog\">\r\n            <summary>\n            Close descriptor used to write to system logger.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogSeverity\">\r\n            <summary>\r\n            syslog severities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The log4net Level maps to a syslog severity using the\r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\"/> method and the <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/>\r\n            class. The severity is set on <see cref=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\n            system is unusable\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\n            action must be taken immediately\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\n            critical conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\n            error conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\n            warning conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\n            normal but significant condition\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\n            informational\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\n            debug-level messages\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\">\r\n            <summary>\r\n            syslog facilities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog facility defines which subsystem the logging comes from.\r\n            This is set on the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Facility\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\n            kernel messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\">\r\n            <summary>\n            random user-level messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\n            mail system\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\n            system daemons\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\n            security/authorization messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\n            messages generated internally by syslogd\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\n            line printer subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.News\">\r\n            <summary>\n            network news subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\n            UUCP subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\n            clock (cron/at) daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\n            security/authorization  messages (private)\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\n            ftp daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\n            NTP subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\n            log audit\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\n            log alert\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\n            clock daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the syslog severity that is should be logged at.\n            </summary>\n            <remarks>\n            <para>\n            A class to act as a mapping between the level that a logging call is made at and\n            the syslog severity that is should be logged at.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\n            The mapped syslog severity for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped syslog severity for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.MemoryAppender\">\r\n            <summary>\r\n            Stores logging events in an array.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The memory appender stores all the logging events\r\n            that are appended in an in-memory array.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.GetEvents\"/> method to get\r\n            the current list of events that have been appended.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.Clear\"/> method to clear the\r\n            current list of events.\r\n            </para>\r\n            </remarks>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.MemoryAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.GetEvents\">\r\n            <summary>\n            Gets the events that have been logged.\n            </summary>\n            <returns>The events that have been logged</returns>\n            <remarks>\n            <para>\n            Gets the events that have been logged.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Stores the <paramref name=\"loggingEvent\"/> in the events list.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Clear\">\r\n            <summary>\n            Clear the list of events\n            </summary>\n            <remarks>\n            Clear the list of events\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_eventsList\">\r\n            <summary>\n            The list of events that have been appended.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_fixFlags\">\r\n            <summary>\n            Value indicating which fields in the event should be fixed\n            </summary>\n            <remarks>\n            By default all fields are fixed\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating whether only part of the logging event \r\n            data should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the event \r\n            data to be fixed and stored in the appender, hereby improving performance. \r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.Fix\">\r\n            <summary>\r\n            Gets or sets the fields that will be fixed in the event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.NetSendAppender\">\r\n            <summary>\r\n            Logs entries by sending network messages using the \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> native function.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can send messages only to names that are active \r\n            on the network. If you send the message to a user name, \r\n            that user must be logged on and running the Messenger \r\n            service to receive the message.\r\n            </para>\r\n            <para>\r\n            The receiver will get a top most window displaying the \r\n            messages one at a time, therefore this appender should \r\n            not be used to deliver a high volume of messages.\r\n            </para>\r\n            <para>\r\n            The following table lists some possible uses for this appender :\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Action</term>\r\n                    <description>Property Value(s)</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>Send a message to a user account on the local machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a user account on a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a domain user account</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of a domain controller | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to all the names in a workgroup or domain</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;workgroup name | domain name&gt;*\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message from the local machine to a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            <b>Note :</b> security restrictions apply for sending \r\n            network messages, see <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> \r\n            for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            An example configuration section to log information \r\n            using this appender from the local machine, named \r\n            LOCAL_PC, to machine OPERATOR_PC :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"NetSendAppender_Operator\" type=\"log4net.Appender.NetSendAppender\">\r\n                <server value=\"LOCAL_PC\"/>\r\n                <recipient value=\"OPERATOR_PC\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5p %c [%x] - %m%n\"/>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_server\">\r\n            <summary>\n            The DNS or NetBIOS name of the server on which the function is to execute.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_sender\">\r\n            <summary>\n            The sender of the network message.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_recipient\">\r\n            <summary>\n            The message alias to which the message should be sent.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.#ctor\">\r\n            <summary>\n            Initializes the appender.\n            </summary>\n            <remarks>\n            The default constructor initializes all fields to their default values.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using a network message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\">\r\n            <summary>\n            Sends a buffer of information to a registered message alias.\n            </summary>\n            <param name=\"serverName\">The DNS or NetBIOS name of the server on which the function is to execute.</param>\n            <param name=\"msgName\">The message alias to which the message buffer should be sent</param>\n            <param name=\"fromName\">The originator of the message.</param>\n            <param name=\"buffer\">The message text.</param>\n            <param name=\"bufferSize\">The length, in bytes, of the message text.</param>\n            <remarks>\n            <para>\n            The following restrictions apply for sending network messages:\n            </para>\n            <para>\n            <list type=\"table\">\n                <listheader>\n                    <term>Platform</term>\n                    <description>Requirements</description>\n                </listheader>\n                <item>\n                    <term>Windows NT</term>\n                    <description>\n                        <para>\n                        No special group membership is required to send a network message.\n                        </para>\n                        <para>\n                        Admin, Accounts, Print, or Server Operator group membership is required to \n                        successfully send a network message on a remote server.\n                        </para>\n                    </description>\n                </item>\n                <item>\n                    <term>Windows 2000 or later</term>\n                    <description>\n                        <para>\n                        If you send a message on a domain controller that is running Active Directory, \n                        access is allowed or denied based on the access control list (ACL) for the securable \n                        object. The default ACL permits only Domain Admins and Account Operators to send a network message. \n                        </para>\n                        <para>\n                        On a member server or workstation, only Administrators and Server Operators can send a network message. \n                        </para>\n                    </description>\n                </item>\n            </list>\n            </para>\n            <para>\n            For more information see <a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/security_requirements_for_the_network_management_functions.asp\">Security Requirements for the Network Management Functions</a>.\n            </para>\n            </remarks>\n            <returns>\n            <para>\n            If the function succeeds, the return value is zero.\n            </para>\n            </returns>\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Sender\">\r\n            <summary>\n            Gets or sets the sender of the message.\n            </summary>\n            <value>\n            The sender of the message.\n            </value>\n            <remarks>\n            If this property is not specified, the message is sent from the local computer.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Recipient\">\r\n            <summary>\n            Gets or sets the message alias to which the message should be sent.\n            </summary>\n            <value>\n            The recipient of the message.\n            </value>\n            <remarks>\n            This property should always be specified in order to send a message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Server\">\r\n            <summary>\n            Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute.\n            </summary>\n            <value>\n            DNS or NetBIOS name of the remote server on which the function is to execute.\n            </value>\n            <remarks>\n            <para>\n            For Windows NT 4.0 and earlier, the string should begin with \\\\.\n            </para>\n            <para>\n            If this property is not specified, the local computer is used. \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.OutputDebugStringAppender\">\r\n            <summary>\n            Appends log events to the OutputDebugString system.\n            </summary>\n            <remarks>\n            <para>\n            OutputDebugStringAppender appends log events to the\n            OutputDebugString system.\n            </para>\n            <para>\n            The string is passed to the native <c>OutputDebugString</c> \n            function.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.OutputDebugStringAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Write the logging event to the output debug string API\n            </summary>\n            <param name=\"loggingEvent\">the event to log</param>\n            <remarks>\n            <para>\n            Write the logging event to the output debug string API\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.OutputDebugString(System.String)\">\r\n            <summary>\n            Stub for OutputDebugString native method\n            </summary>\n            <param name=\"message\">the string to output</param>\n            <remarks>\n            <para>\n            Stub for OutputDebugString native method\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.OutputDebugStringAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender\">\r\n            <summary>\r\n            Logs events to a remote syslog daemon.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The BSD syslog protocol is used to remotely log to\r\n            a syslog daemon. The syslogd listens for for messages\r\n            on UDP port 514.\r\n            </para>\r\n            <para>\r\n            The syslog UDP protocol is not authenticated. Most syslog daemons\r\n            do not accept remote log messages because of the security implications.\r\n            You may be able to use the LocalSyslogAppender to talk to a local\r\n            syslog service.\r\n            </para>\r\n            <para>\r\n            There is an RFC 3164 that claims to document the BSD Syslog Protocol.\r\n            This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html.\r\n            This appender generates what the RFC calls an \"Original Device Message\",\r\n            i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation\r\n            this format of message will be accepted by all current syslog daemon\r\n            implementations. The daemon will attach the current time and the source\r\n            hostname or IP address to any messages received.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.UdpAppender\">\r\n            <summary>\r\n            Sends logging events as connectionless UDP datagrams to a remote host or a \r\n            multicast group using an <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            UDP guarantees neither that messages arrive, nor that they arrive in the correct order.\r\n            </para>\r\n            <para>\r\n            To view the logging results, a custom application can be developed that listens for logging \r\n            events.\r\n            </para>\r\n            <para>\r\n            When decoding events send via this appender remember to use the same encoding\r\n            to decode the events as was used to send the events. See the <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/>\r\n            property to specify the encoding to use.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            This example shows how to log receive logging events that are sent \r\n            on IP address 244.0.0.1 and port 8080 to the console. The event is \r\n            encoded in the packet as a unicode string and it is decoded as such. \r\n            <code lang=\"C#\">\r\n            IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);\r\n            UdpClient udpClient;\r\n            byte[] buffer;\r\n            string loggingEvent;\r\n            \r\n            try \r\n            {\r\n                udpClient = new UdpClient(8080);\r\n                \r\n                while(true) \r\n                {\r\n                    buffer = udpClient.Receive(ref remoteEndPoint);\r\n                    loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);\r\n                    Console.WriteLine(loggingEvent);\r\n                }\r\n            } \r\n            catch(Exception e) \r\n            {\r\n                Console.WriteLine(e.ToString());\r\n            }\r\n            </code>\r\n            <code lang=\"Visual Basic\">\r\n            Dim remoteEndPoint as IPEndPoint\r\n            Dim udpClient as UdpClient\r\n            Dim buffer as Byte()\r\n            Dim loggingEvent as String\r\n            \r\n            Try \r\n                remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)\r\n                udpClient = new UdpClient(8080)\r\n                            While True\r\n                    buffer = udpClient.Receive(ByRef remoteEndPoint)\r\n                    loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)\r\n                    Console.WriteLine(loggingEvent)\r\n                Wend\r\n            Catch e As Exception\r\n                Console.WriteLine(e.ToString())\r\n            End Try\r\n            </code>\r\n            <para>\r\n            An example configuration section to log information using this appender to the \r\n            IP 224.0.0.1 on port 8080:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"UdpAppender\" type=\"log4net.Appender.UdpAppender\">\r\n                <remoteAddress value=\"224.0.0.1\"/>\r\n                <remotePort value=\"8080\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5level %logger [%ndc] - %message%newline\"/>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Gert Driesen</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.UdpAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The default constructor initializes all fields to their default values.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was specified or \r\n            an invalid remote or local TCP port number was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was not specified.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The TCP port number assigned to <see cref=\"P:log4net.Appender.UdpAppender.LocalPort\"/> or <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/> is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using an UDP datagram.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.OnClose\">\r\n            <summary>\r\n            Closes the UDP connection and releases all resources associated with \r\n            this <see cref=\"T:log4net.Appender.UdpAppender\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Disables the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> and releases all managed \r\n            and unmanaged resources associated with the <see cref=\"T:log4net.Appender.UdpAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.InitializeClientConnection\">\r\n            <summary>\r\n            Initializes the underlying  <see cref=\"T:System.Net.Sockets.UdpClient\"/> connection.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> is initialized and binds to the \r\n            port number from which you intend to communicate.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteAddress\">\r\n            <summary>\n            The IP address of the remote host or multicast group to which \n            the logging event will be sent.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remotePort\">\r\n            <summary>\n            The TCP port number of the remote host or multicast group to \n            which the logging event will be sent.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteEndPoint\">\r\n            <summary>\n            The cached remote endpoint to which the logging events will be sent.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_localPort\">\r\n            <summary>\r\n            The TCP port number from which the <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_client\">\r\n            <summary>\r\n            The <see cref=\"T:System.Net.Sockets.UdpClient\"/> instance that will be used for sending the \r\n            logging events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_encoding\">\r\n            <summary>\n            The encoding to use for the packet.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteAddress\">\r\n            <summary>\r\n            Gets or sets the IP address of the remote host or multicast group to which\r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            The IP address of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Multicast addresses are identified by IP class <b>D</b> addresses (in the range 224.0.0.0 to\r\n            239.255.255.255).  Multicast packets can pass across different networks through routers, so\r\n            it is possible to use multicasts in an Internet scenario as long as your network provider \r\n            supports multicasting.\r\n            </para>\r\n            <para>\r\n            Hosts that want to receive particular multicast messages must register their interest by joining\r\n            the multicast group.  Multicast messages are not sent to networks where no host has joined\r\n            the multicast group.  Class <b>D</b> IP addresses are used for multicast groups, to differentiate\r\n            them from normal host addresses, allowing nodes to easily detect if a message is of interest.\r\n            </para>\r\n            <para>\r\n            Static multicast addresses that are needed globally are assigned by IANA.  A few examples are listed in the table below:\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>IP Address</term>\r\n                    <description>Description</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>224.0.0.1</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all system on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.2</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all routers on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.12</term>\r\n                    <description>\r\n                        <para>\r\n                        The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            A complete list of actually reserved multicast addresses and their owners in the ranges\r\n            defined by RFC 3171 can be found at the <A href=\"http://www.iana.org/assignments/multicast-addresses\">IANA web site</A>. \r\n            </para>\r\n            <para>\r\n            The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative \r\n            addresses.  These addresses can be reused with other local groups.  Routers are typically \r\n            configured with filters to prevent multicast traffic in this range from flowing outside\r\n            of the local network.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemotePort\">\r\n            <summary>\r\n            Gets or sets the TCP port number of the remote host or multicast group to which \r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will send messages to this TCP port number\r\n            on the remote host or multicast group.\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.LocalPort\">\r\n            <summary>\r\n            Gets or sets the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will bind to this port for sending messages.\r\n            </para>\r\n            <para>\r\n            Setting the value to 0 (the default) will cause the udp client not to bind to\r\n            a local port.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Client\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> creates a <see cref=\"T:System.Net.Sockets.UdpClient\"/> to send logging events \r\n            over a network.  Classes deriving from <see cref=\"T:log4net.Appender.UdpAppender\"/> can use this\r\n            property to get or set this <see cref=\"T:System.Net.Sockets.UdpClient\"/>.  Use the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>\r\n            returned from <see cref=\"P:log4net.Appender.UdpAppender.Client\"/> if you require access beyond that which \r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteEndPoint\">\r\n            <summary>\r\n            Gets or sets the cached remote endpoint to which the logging events should be sent.\r\n            </summary>\r\n            <value>\r\n            The cached remote endpoint to which the logging events will be sent.\r\n            </value>\r\n            <remarks>\r\n            The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method will initialize the remote endpoint \r\n            with the values of the <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> and <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/>\r\n            properties.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.DefaultSyslogPort\">\r\n            <summary>\n            Syslog port 514\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class is set up to write \r\n            to a remote syslog daemon.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.AddMapping(log4net.Appender.RemoteSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\"/> mapping to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.ActivateOptions\">\r\n            <summary>\n            Initialize the options for this appender\n            </summary>\n            <remarks>\n            <para>\n            Initialize the level to syslog severity mappings set on this appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\n            Translates a log4net level to a syslog severity.\n            </summary>\n            <param name=\"level\">A log4net level.</param>\n            <returns>A syslog severity.</returns>\n            <remarks>\n            <para>\n            Translates a log4net level to a syslog severity.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GeneratePriority(log4net.Appender.RemoteSyslogAppender.SyslogFacility,log4net.Appender.RemoteSyslogAppender.SyslogSeverity)\">\r\n            <summary>\n            Generate a syslog priority.\n            </summary>\n            <param name=\"facility\">The syslog facility.</param>\n            <param name=\"severity\">The syslog severity.</param>\n            <returns>A syslog priority.</returns>\n            <remarks>\n            <para>\n            Generate a syslog priority.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_identity\">\r\n            <summary>\n            The message identity\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_levelMapping\">\r\n            <summary>\n            Mapping from level object to syslog severity\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogSeverity\">\r\n            <summary>\n            syslog severities\n            </summary>\n            <remarks>\n            <para>\n            The syslog severities.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\n            system is unusable\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\n            action must be taken immediately\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\n            critical conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\n            error conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\n            warning conditions\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\n            normal but significant condition\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\n            informational\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\n            debug-level messages\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\">\r\n            <summary>\n            syslog facilities\n            </summary>\n            <remarks>\n            <para>\n            The syslog facilities\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\n            kernel messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\">\r\n            <summary>\n            random user-level messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\n            mail system\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\n            system daemons\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\n            security/authorization messages\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\n            messages generated internally by syslogd\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\n            line printer subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.News\">\r\n            <summary>\n            network news subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\n            UUCP subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\n            clock (cron/at) daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\n            security/authorization  messages (private)\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\n            ftp daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\n            NTP subsystem\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\n            log audit\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\n            log alert\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\n            clock daemon\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\n            reserved for local use\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\">\r\n            <summary>\n            A class to act as a mapping between the level that a logging call is made at and\n            the syslog severity that is should be logged at.\n            </summary>\n            <remarks>\n            <para>\n            A class to act as a mapping between the level that a logging call is made at and\n            the syslog severity that is should be logged at.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\n            The mapped syslog severity for the specified level\n            </summary>\n            <remarks>\n            <para>\n            Required property.\n            The mapped syslog severity for the specified level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender\">\r\n            <summary>\r\n            Delivers logging events to a remote logging sink. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This Appender is designed to deliver events to a remote sink. \r\n            That is any object that implements the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface. It delivers the events using .NET remoting. The\r\n            object to deliver events to is specified by setting the\r\n            appenders <see cref=\"P:log4net.Appender.RemotingAppender.Sink\"/> property.</para>\r\n            <para>\r\n            The RemotingAppender buffers events before sending them. This allows it to \r\n            make more efficient use of the remoting infrastructure.</para>\r\n            <para>\r\n            Once the buffer is full the events are still not sent immediately. \r\n            They are scheduled to be sent using a pool thread. The effect is that \r\n            the send occurs asynchronously. This is very important for a \r\n            number of non obvious reasons. The remoting infrastructure will \r\n            flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.</para>\r\n            <para>\r\n            Because the events are sent asynchronously using pool threads it is possible to close \r\n            this appender before all the queued events have been sent.\r\n            When closing the appender attempts to wait until all the queued events have been sent, but \r\n            this will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If this appender is being closed because the <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for. If the runtime terminates the threads before\r\n            the queued events have been sent then they will be lost. To ensure that all events\r\n            are sent the appender must be closed before the application exits. See \r\n            <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/> for details on how to shutdown\r\n            log4net programmatically.</para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemotingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            The events are not sent immediately. They are scheduled to be sent\r\n            using a pool thread. The effect is that the send occurs asynchronously.\r\n            This is very important for a number of non obvious reasons. The remoting\r\n            infrastructure will flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.\r\n            </remarks>\r\n            <param name=\"events\">The events to send.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.OnClose\">\r\n            <summary>\r\n            Override base class close.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method waits while there are queued work items. The events are\r\n            sent asynchronously using <see cref=\"T:System.Threading.ThreadPool\"/> work items. These items\r\n            will be sent once a thread pool thread is available to send them, therefore\r\n            it is possible to close the appender before all the queued events have been\r\n            sent.</para>\r\n            <para>\r\n            This method attempts to wait until all the queued events have been sent, but this \r\n            method will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If the appender is being closed because the <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.BeginAsyncSend\">\r\n            <summary>\n            A work item is being queued into the thread pool\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.EndAsyncSend\">\r\n            <summary>\n            A work item from the thread pool has completed\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBufferCallback(System.Object)\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This method is designed to be used with the <see cref=\"T:System.Threading.ThreadPool\"/>.\r\n            This method expects to be passed an array of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the state param.\r\n            </remarks>\r\n            <param name=\"state\">the logging events to send</param>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkUrl\">\r\n            <summary>\n            The URL of the remote sink.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkObj\">\r\n            <summary>\n            The local proxy (.NET remoting) for the remote logging sink.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_queuedCallbackCount\">\r\n            <summary>\n            The number of queued callbacks currently waiting or executing\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_workQueueEmptyEvent\">\r\n            <summary>\n            Event used to signal when there are no queued work items\n            </summary>\n            <remarks>\n            This event is set when there are no queued work items. In this\n            state it is safe to close the appender.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.RemotingAppender.Sink\">\r\n            <summary>\r\n            Gets or sets the URL of the well-known object that will accept \r\n            the logging events.\r\n            </summary>\r\n            <value>\r\n            The well-known URL of the remote sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The URL of the remoting sink that will accept logging events.\r\n            The sink must implement the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\">\r\n            <summary>\r\n            Interface used to deliver <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This interface must be implemented by a remoting sink\r\n            if the <see cref=\"T:log4net.Appender.RemotingAppender\"/> is to be used\r\n            to deliver logging events to the sink.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Delivers logging events to the remote sink\n            </summary>\n            <param name=\"events\">Array of events to log.</param>\n            <remarks>\n            <para>\n            Delivers logging events to the remote sink\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender\">\r\n            <summary>\r\n            Appender that rolls log files based on size or date or both.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            RollingFileAppender can roll log files based on size or date or both\r\n            depending on the setting of the <see cref=\"P:log4net.Appender.RollingFileAppender.RollingStyle\"/> property.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\"/> the log file will be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\"/> the log file will be rolled\r\n            once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/> the log file will be\r\n            rolled once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed, but within a date boundary the file will also be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> the log file will be rolled when\r\n            the appender is configured. This effectively means that the log file can be\r\n            rolled once per program execution.\r\n            </para>\r\n            <para>\r\n            A of few additional optional features have been added:\r\n            <list type=\"bullet\">\r\n            <item>Attach date pattern for current log file <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/></item>\r\n            <item>Backup number increments for newer files <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/></item>\r\n            <item>Infinite number of backups by file size <see cref=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\"/></item>\r\n            </list>\r\n            </para>\r\n            \r\n            <note>\r\n            <para>\r\n            For large or infinite numbers of backup files a <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> \r\n            greater than zero is highly recommended, otherwise all the backup files need\r\n            to be renamed each time a new backup is created.\r\n            </para>\r\n            <para>\r\n            When Date/Time based rolling is used setting <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> \r\n            to <see langword=\"true\"/> will reduce the number of file renamings to few or none.\r\n            </para>\r\n            </note>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            Changing <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> or <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> without clearing\r\n            the log file directory of backup files will cause unexpected and unwanted side effects.  \r\n            </para>\r\n            </note>\r\n            \r\n            <para>\r\n            If Date/Time based rolling is enabled this appender will attempt to roll existing files\r\n            in the directory without a Date/Time tag based on the last write date of the base log file.\r\n            The appender only rolls the log file when a message is logged. If Date/Time based rolling \r\n            is enabled then the appender will not roll the log file at the Date/Time boundary but\r\n            at the point when the next message is logged after the boundary has been crossed.\r\n            </para>\r\n            \r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.RollingFileAppender\"/> extends the <see cref=\"T:log4net.Appender.FileAppender\"/> and\r\n            has the same behavior when opening the log file.\r\n            The appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            When rolling a backup file necessitates deleting an older backup file the\r\n            file to be deleted is moved to a temporary name before being deleted.\r\n            </para>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            A maximum number of backup files when rolling on date/time boundaries is not supported.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Edward Smit</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RollingFileAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the RollingFileAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\n            Sets the quiet writer being used.\n            </summary>\n            <remarks>\n            This method can be overridden by sub classes.\n            </remarks>\n            <param name=\"writer\">the writer to set</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Write out a logging event.\n            </summary>\n            <param name=\"loggingEvent\">the event to write to file.</param>\n            <remarks>\n            <para>\n            Handles append time behavior for RollingFileAppender.  This checks\n            if a roll over either by date (checked first) or time (checked second)\n            is need and then appends to the file last.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Write out an array of logging events.\n            </summary>\n            <param name=\"loggingEvents\">the events to write to file.</param>\n            <remarks>\n            <para>\n            Handles append time behavior for RollingFileAppender.  This checks\n            if a roll over either by date (checked first) or time (checked second)\n            is need and then appends to the file last.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.AdjustFileBeforeAppend\">\r\n            <summary>\n            Performs any required rolling before outputting the next event\n            </summary>\n            <remarks>\n            <para>\n            Handles append time behavior for RollingFileAppender.  This checks\n            if a roll over either by date (checked first) or time (checked second)\n            is need and then appends to the file last.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates and opens the file for logging.  If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/>\r\n            is false then the fully qualified name is determined and used.\r\n            </summary>\r\n            <param name=\"fileName\">the name of the file to open</param>\r\n            <param name=\"append\">true to append to existing file</param>\r\n            <remarks>\r\n            <para>This method will ensure that the directory structure\r\n            for the <paramref name=\"fileName\"/> specified exists.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetNextOutputFileName(System.String)\">\r\n            <summary>\r\n            Get the current output file name\r\n            </summary>\r\n            <param name=\"fileName\">the base file name</param>\r\n            <returns>the output file name</returns>\r\n            <remarks>\r\n            The output file name is based on the base fileName specified.\r\n            If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> is set then the output \r\n            file name is the same as the base file passed in. Otherwise\r\n            the output file depends on the date pattern, on the count\r\n            direction or both.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DetermineCurSizeRollBackups\">\r\n            <summary>\n            Determines curSizeRollBackups (only within the current roll point)\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetWildcardPatternForFile(System.String)\">\r\n            <summary>\n            Generates a wildcard pattern that can be used to find all files\n            that are similar to the base file name.\n            </summary>\n            <param name=\"baseFileName\"></param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetExistingFiles(System.String)\">\r\n            <summary>\n            Builds a list of filenames for all files matching the base filename plus a file\n            pattern.\n            </summary>\n            <param name=\"baseFilePath\"></param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverIfDateBoundaryCrossing\">\r\n            <summary>\n            Initiates a roll over if needed for crossing a date boundary since the last run.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ExistingInit\">\r\n            <summary>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            The following is done\r\n            <list type=\"bullet\">\r\n            <item>determine curSizeRollBackups (only within the current roll point)</item>\r\n            <item>initiates a roll over if needed for crossing a date boundary since the last run.</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeFromOneFile(System.String,System.String)\">\r\n            <summary>\n            Does the work of bumping the 'current' file counter higher\n            to the highest count when an incremental file name is seen.\n            The highest count is either the first file (when count direction\n            is greater than 0) or the last file (when count direction less than 0).\n            In either case, we want to know the highest count that is present.\n            </summary>\n            <param name=\"baseFile\"></param>\n            <param name=\"curFileName\"></param>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetBackUpIndex(System.String)\">\r\n            <summary>\n            Attempts to extract a number from the end of the file name that indicates\n            the number of the times the file has been rolled over.\n            </summary>\n            <remarks>\n            Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes.\n            </remarks>\n            <param name=\"curFileName\"></param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeRollBackups(System.String,System.Collections.ArrayList)\">\r\n            <summary>\n            Takes a list of files and a base file name, and looks for \n            'incremented' versions of the base file.  Bumps the max\n            count up to the highest count seen.\n            </summary>\n            <param name=\"baseFile\"></param>\n            <param name=\"arrayFiles\"></param>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ComputeCheckPeriod(System.String)\">\r\n            <summary>\n            Calculates the RollPoint for the datePattern supplied.\n            </summary>\n            <param name=\"datePattern\">the date pattern to calculate the check period for</param>\n            <returns>The RollPoint that is most accurate for the date pattern supplied</returns>\n            <remarks>\n            Essentially the date pattern is examined to determine what the\n            most suitable roll point is. The roll point chosen is the roll point\n            with the smallest period that can be detected using the date pattern\n            supplied. i.e. if the date pattern only outputs the year, month, day \n            and hour then the smallest roll point that can be detected would be\n            and hourly roll point as minutes could not be detected.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Sets initial conditions including date/time roll over information, first check,\r\n            scheduledFilename, and calls <see cref=\"M:log4net.Appender.RollingFileAppender.ExistingInit\"/> to initialize\r\n            the current number of backups.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.CombinePath(System.String,System.String)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"path1\"></param>\n            <param name=\"path2\">.1, .2, .3, etc.</param>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverTime(System.Boolean)\">\r\n            <summary>\n            Rollover the file(s) to date/time tagged file(s).\n            </summary>\n            <param name=\"fileIsOpen\">set to true if the file to be rolled is currently open</param>\n            <remarks>\n            <para>\n            Rollover the file(s) to date/time tagged file(s).\n            Resets curSizeRollBackups. \n            If fileIsOpen is set then the new file is opened (through SafeOpenFile).\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollFile(System.String,System.String)\">\r\n            <summary>\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>.\n            </summary>\n            <param name=\"fromFile\">Name of existing file to roll.</param>\n            <param name=\"toFile\">New name for file.</param>\n            <remarks>\n            <para>\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>. It\n            also checks for existence of target file and deletes if it does.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.FileExists(System.String)\">\r\n            <summary>\n            Test if a file exists at a specified path\n            </summary>\n            <param name=\"path\">the path to the file</param>\n            <returns>true if the file exists</returns>\n            <remarks>\n            <para>\n            Test if a file exists at a specified path\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DeleteFile(System.String)\">\r\n            <summary>\n            Deletes the specified file if it exists.\n            </summary>\n            <param name=\"fileName\">The file to delete.</param>\n            <remarks>\n            <para>\n            Delete a file if is exists.\n            The file is first moved to a new filename then deleted.\n            This allows the file to be removed even when it cannot\n            be deleted, but it still can be moved.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverSize\">\r\n            <summary>\n            Implements file roll base on file size.\n            </summary>\n            <remarks>\n            <para>\n            If the maximum number of size based backups is reached\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\n            file is deleted -- its index determined by the sign of countDirection.\n            If <c>countDirection</c> &lt; 0, then files\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\n            are renamed to {<c>File.2</c>, ...,\n            <c>File.curSizeRollBackups</c>}. Moreover, <c>File</c> is\n            renamed <c>File.1</c> and closed.\n            </para>\n            <para>\n            A new file is created to receive further log output.\n            </para>\n            <para>\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\n            <c>File</c> is truncated with no backup files created.\n            </para>\n            <para>\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\n            renamed if needed and no files are deleted.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverRenameFiles(System.String)\">\r\n            <summary>\r\n            Implements file roll.\r\n            </summary>\r\n            <param name=\"baseFileName\">the base name to rename</param>\r\n            <remarks>\r\n            <para>\r\n            If the maximum number of size based backups is reached\r\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\r\n            file is deleted -- its index determined by the sign of countDirection.\r\n            If <c>countDirection</c> &lt; 0, then files\r\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\r\n            are renamed to {<c>File.2</c>, ...,\r\n            <c>File.curSizeRollBackups</c>}. \r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\r\n            <c>File</c> is truncated with no backup files created.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\r\n            renamed if needed and no files are deleted.\r\n            </para>\r\n            <para>\r\n            This is called by <see cref=\"M:log4net.Appender.RollingFileAppender.RollOverSize\"/> to rename the files.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.NextCheckDate(System.DateTime,log4net.Appender.RollingFileAppender.RollPoint)\">\r\n            <summary>\n            Get the start time of the next window for the current rollpoint\n            </summary>\n            <param name=\"currentDateTime\">the current date</param>\n            <param name=\"rollPoint\">the type of roll point we are working with</param>\n            <returns>the start time for the next roll point an interval after the currentDateTime date</returns>\n            <remarks>\n            <para>\n            Returns the date of the next roll point after the currentDateTime date passed to the method.\n            </para>\n            <para>\n            The basic strategy is to subtract the time parts that are less significant\n            than the rollpoint from the current time. This should roll the time back to\n            the start of the time window for the current rollpoint. Then we add 1 window\n            worth of time and get the start time of the next window for the rollpoint.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_dateTime\">\r\n            <summary>\n            This object supplies the current date/time.  Allows test code to plug in\n            a method to control this class when testing date/time based rolling. The default\n            implementation uses the underlying value of DateTime.Now.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_datePattern\">\r\n            <summary>\n            The date pattern. By default, the pattern is set to <c>\".yyyy-MM-dd\"</c> \n            meaning daily rollover.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_scheduledFilename\">\r\n            <summary>\n            The actual formatted filename that is currently being written to\n            or will be the file transferred to on roll over\n            (based on staticLogFileName).\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_nextCheck\">\r\n            <summary>\n            The timestamp when we shall next recompute the filename.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_now\">\r\n            <summary>\n            Holds date of last roll over\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollPoint\">\r\n            <summary>\n            The type of rolling done\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxFileSize\">\r\n            <summary>\n            The default maximum file size is 10MB\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxSizeRollBackups\">\r\n            <summary>\n            There is zero backup files by default\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_curSizeRollBackups\">\r\n            <summary>\n            How many sized based backups have been made so far\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_countDirection\">\r\n            <summary>\n            The rolling file count direction. \n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollingStyle\">\r\n            <summary>\n            The rolling mode used in this appender.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollDate\">\r\n            <summary>\n            Cache flag set if we are rolling by date.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollSize\">\r\n            <summary>\n            Cache flag set if we are rolling by size.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_staticLogFileName\">\r\n            <summary>\n            Value indicating whether to always log to the same file.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_preserveLogFileNameExtension\">\r\n            <summary>\n            Value indicating whether to preserve the file name extension when rolling.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_baseFileName\">\r\n            <summary>\n            FileName provided in configuration.  Used for rolling properly\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.s_date1970\">\r\n            <summary>\n            The 1st of January 1970 in UTC\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DateTimeStrategy\">\r\n            <summary>\r\n            Gets or sets the strategy for determining the current date and time. The default\r\n            implementation is to use LocalDateTime which internally calls through to DateTime.Now. \r\n            DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying\r\n            <see cref=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\"/>.\r\n            </summary>\r\n            <value>\r\n            An implementation of the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> interface which returns the current date and time.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> used to return the current date and time.\r\n            </para>\r\n            <para>\r\n            There are two built strategies for determining the current date and time, \r\n            <see cref=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\"/>\r\n            and <see cref=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The default strategy is <see cref=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DatePattern\">\r\n            <summary>\r\n            Gets or sets the date pattern to be used for generating file names\r\n            when rolling over on date.\r\n            </summary>\r\n            <value>\r\n            The date pattern to be used for generating file names when rolling \r\n            over on date.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Takes a string in the same format as expected by \r\n            <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/>.\r\n            </para>\r\n            <para>\r\n            This property determines the rollover schedule when rolling over\r\n            on date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\">\r\n            <summary>\r\n            Gets or sets the maximum number of backup files that are kept before\r\n            the oldest is erased.\r\n            </summary>\r\n            <value>\r\n            The maximum number of backup files that are kept before the oldest is\r\n            erased.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If set to zero, then there will be no backup files and the log file \r\n            will be truncated when it reaches <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/>.  \r\n            </para>\r\n            <para>\r\n            If a negative number is supplied then no deletions will be made.  Note \r\n            that this could result in very slow performance as a large number of \r\n            files are rolled over unless <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> is used.\r\n            </para>\r\n            <para>\r\n            The maximum applies to <b>each</b> time based group of files and \r\n            <b>not</b> the total.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size in bytes that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property is equivalent to <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/> except\r\n            that it is required for differentiating the setter taking a\r\n            <see cref=\"T:System.Int64\"/> argument from the setter taking a <see cref=\"T:System.String\"/> \r\n            argument.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB (10*1024*1024).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property allows you to specify the maximum size with the\r\n            suffixes \"KB\", \"MB\" or \"GB\" so that the size is interpreted being \r\n            expressed respectively in kilobytes, megabytes or gigabytes. \r\n            </para>\r\n            <para>\r\n            For example, the value \"10KB\" will be interpreted as 10240 bytes.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB.\r\n            </para>\r\n            <para>\r\n            If you have the option to set the maximum file size programmatically\r\n            consider using the <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/> property instead as this\r\n            allows you to set the size in bytes as a <see cref=\"T:System.Int64\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.CountDirection\">\r\n            <summary>\r\n            Gets or sets the rolling file count direction. \r\n            </summary>\r\n            <value>\r\n            The rolling file count direction.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Indicates if the current file is the lowest numbered file or the\r\n            highest numbered file.\r\n            </para>\r\n            <para>\r\n            By default newer files have lower numbers (<see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &lt; 0),\r\n            i.e. log.1 is most recent, log.5 is the 5th backup, etc...\r\n            </para>\r\n            <para>\r\n            <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 does the opposite i.e.\r\n            log.1 is the first backup made, log.5 is the 5th backup made, etc.\r\n            For infinite backups use <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 to reduce \r\n            rollover costs.\r\n            </para>\r\n            <para>The default file count direction is -1.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.RollingStyle\">\r\n            <summary>\r\n            Gets or sets the rolling style.\r\n            </summary>\r\n            <value>The rolling style.</value>\r\n            <remarks>\r\n            <para>\r\n            The default rolling style is <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/>.\r\n            </para>\r\n            <para>\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> this appender's\r\n            <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is set to <c>false</c>, otherwise\r\n            the appender would append to a single file rather than rolling\r\n            the file each time it is opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension\">\r\n            <summary>\n            Gets or sets a value indicating whether to preserve the file name extension when rolling.\n            </summary>\n            <value>\n            <c>true</c> if the file name extension should be preserved.\n            </value>\n            <remarks>\n            <para>\n            By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup.\n            However, under Windows the new file name will loose any program associations as the\n            extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or\n            file.curSizeRollBackup.log to maintain any program associations.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\">\r\n            <summary>\n            Gets or sets a value indicating whether to always log to\n            the same file.\n            </summary>\n            <value>\n            <c>true</c> if always should be logged to the same file, otherwise <c>false</c>.\n            </value>\n            <remarks>\n            <para>\n            By default file.log is always the current file.  Optionally\n            file.log.yyyy-mm-dd for current formatted datePattern can by the currently\n            logging file (or file.log.curSizeRollBackup or even\n            file.log.yyyy-mm-dd.curSizeRollBackup).\n            </para>\n            <para>\n            This will make time based rollovers with a large number of backups \n            much faster as the appender it won't have to rename all the backups!\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollingMode\">\r\n            <summary>\n            Style of rolling to use\n            </summary>\n            <remarks>\n            <para>\n            Style of rolling to use\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\">\r\n            <summary>\n            Roll files once per program execution\n            </summary>\n            <remarks>\n            <para>\n            Roll files once per program execution.\n            Well really once each time this appender is\n            configured.\n            </para>\n            <para>\n            Setting this option also sets <c>AppendToFile</c> to\n            <c>false</c> on the <c>RollingFileAppender</c>, otherwise\n            this appender would just be a normal file appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\">\r\n            <summary>\n            Roll files based only on the size of the file\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\">\r\n            <summary>\n            Roll files based only on the date\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\">\r\n            <summary>\n            Roll files based on both the size and date of the file\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollPoint\">\r\n            <summary>\n            The code assumes that the following 'time' constants are in a increasing sequence.\n            </summary>\n            <remarks>\n            <para>\n            The code assumes that the following 'time' constants are in a increasing sequence.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.InvalidRollPoint\">\r\n            <summary>\n            Roll the log not based on the date\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMinute\">\r\n            <summary>\n            Roll the log for each minute\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfHour\">\r\n            <summary>\n            Roll the log for each hour\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.HalfDay\">\r\n            <summary>\n            Roll the log twice a day (midday and midnight)\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfDay\">\r\n            <summary>\n            Roll the log each day (midnight)\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfWeek\">\r\n            <summary>\n            Roll the log each week\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMonth\">\r\n            <summary>\n            Roll the log each month\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.IDateTime\">\r\n            <summary>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            Used primarily to allow test classes to plug themselves in so they can\r\n            supply test date/times.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.IDateTime.Now\">\r\n            <summary>\n            Gets the <i>current</i> time.\n            </summary>\n            <value>The <i>current</i> time.</value>\n            <remarks>\n            <para>\n            Gets the <i>current</i> time.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> that returns the current time.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.LocalDateTime.Now\">\r\n            <summary>\n            Gets the <b>current</b> time.\n            </summary>\n            <value>The <b>current</b> time.</value>\n            <remarks>\n            <para>\n            Gets the <b>current</b> time.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> that returns the current time as the coordinated universal time (UTC).\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.UniversalDateTime.Now\">\r\n            <summary>\n            Gets the <b>current</b> time.\n            </summary>\n            <value>The <b>current</b> time.</value>\n            <remarks>\n            <para>\n            Gets the <b>current</b> time.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender\">\r\n            <summary>\r\n            Send an e-mail when a specific logging event occurs, typically on errors \r\n            or fatal errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            <note type=\"caution\">\r\n            Authentication and setting the server Port are only available on the MS .NET 1.1 runtime.\r\n            For these features to be enabled you need to ensure that you are using a version of\r\n            the log4net assembly that is built against the MS .NET 1.1 framework and that you are\r\n            running the your application on the MS .NET 1.1 runtime. On all other platforms only sending\r\n            unauthenticated messages to a server listening on port 25 (the default) is supported.\r\n            </note>\r\n            <para>\r\n            Authentication is supported by setting the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property to\r\n            either <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> or <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>.\r\n            If using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> authentication then the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/>\r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> properties must also be set.\r\n            </para>\r\n            <para>\r\n            To set the SMTP server port use the <see cref=\"P:log4net.Appender.SmtpAppender.Port\"/> property. The default port is 25.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Sends the contents of the cyclic buffer as an e-mail message.\n            </summary>\n            <param name=\"events\">The logging events to send.</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendEmail(System.String)\">\r\n            <summary>\n            Send the email message\n            </summary>\n            <param name=\"messageBody\">the body text to include in the mail</param>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.To\">\r\n            <summary>\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions).\n            </summary>\n            <value>\n            <para>\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\n            </para>\n            <para>\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\n            </para>\n            </value>\n            <remarks>\n            <para>\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\n            </para>\n            <para>\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Cc\">\r\n            <summary>\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses \n            that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions).\n            </summary>\n            <value>\n            <para>\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\n            </para>\n            <para>\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\n            </para>\n            </value>\n            <remarks>\n            <para>\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\n            </para>\n            <para>\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Bcc\">\r\n            <summary>\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses\n            that will be blind carbon copied.\n            </summary>\n            <value>\n            A semicolon-delimited list of e-mail addresses.\n            </value>\n            <remarks>\n            <para>\n            A semicolon-delimited list of recipient e-mail addresses.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.From\">\r\n            <summary>\n            Gets or sets the e-mail address of the sender.\n            </summary>\n            <value>\n            The e-mail address of the sender.\n            </value>\n            <remarks>\n            <para>\n            The e-mail address of the sender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Subject\">\r\n            <summary>\n            Gets or sets the subject line of the e-mail message.\n            </summary>\n            <value>\n            The subject line of the e-mail message.\n            </value>\n            <remarks>\n            <para>\n            The subject line of the e-mail message.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.SmtpHost\">\r\n            <summary>\n            Gets or sets the name of the SMTP relay mail server to use to send \n            the e-mail messages.\n            </summary>\n            <value>\n            The name of the e-mail relay server. If SmtpServer is not set, the \n            name of the local SMTP server is used.\n            </value>\n            <remarks>\n            <para>\n            The name of the e-mail relay server. If SmtpServer is not set, the \n            name of the local SMTP server is used.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.LocationInfo\">\r\n            <summary>\n            Obsolete\n            </summary>\n            <remarks>\n            Use the BufferingAppenderSkeleton Fix methods instead \n            </remarks>\n            <remarks>\n            <para>\n            Obsolete property.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Authentication\">\r\n            <summary>\r\n            The mode to use to authentication with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            Valid Authentication mode values are: <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>, \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, and <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>. \r\n            The default value is <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>. When using \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> you must specify the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> \r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> to use to authenticate.\r\n            When using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/> the Windows credentials for the current\r\n            thread, if impersonating, or the process will be used to authenticate. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Username\">\r\n            <summary>\r\n            The username to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the username will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Password\">\r\n            <summary>\r\n            The password to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the password will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Port\">\r\n            <summary>\n            The port on which the SMTP server is listening\n            </summary>\n            <remarks>\n            <note type=\"caution\">Server Port is only available on the MS .NET 1.1 runtime.</note>\n            <para>\n            The port on which the SMTP server is listening. The default\n            port is <c>25</c>. The Port can only be changed when running on\n            the MS .NET 1.1 runtime.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Priority\">\r\n            <summary>\r\n            Gets or sets the priority of the e-mail message\r\n            </summary>\r\n            <value>\r\n            One of the <see cref=\"T:System.Web.Mail.MailPriority\"/> values.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Sets the priority of the e-mails generated by this\r\n            appender. The default priority is <see cref=\"F:System.Web.Mail.MailPriority.Normal\"/>.\r\n            </para>\r\n            <para>\r\n            If you are using this appender to report errors then\r\n            you may want to set the priority to <see cref=\"F:System.Web.Mail.MailPriority.High\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender.SmtpAuthentication\">\r\n            <summary>\r\n            Values for the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            SMTP authentication modes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\">\r\n            <summary>\n            No authentication\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\">\r\n            <summary>\n            Basic authentication.\n            </summary>\n            <remarks>\n            Requires a username and password to be supplied\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\">\r\n            <summary>\n            Integrated authentication\n            </summary>\n            <remarks>\n            Uses the Windows credentials from the current thread or process to authenticate.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpPickupDirAppender\">\r\n            <summary>\r\n            Send an email when a specific logging event occurs, typically on errors \r\n            or fatal errors. Rather than sending via smtp it writes a file into the\r\n            directory specified by <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>. This allows services such\r\n            as the IIS SMTP agent to manage sending the messages.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The configuration for this appender is identical to that of the <c>SMTPAppender</c>,\r\n            except that instead of specifying the <c>SMTPAppender.SMTPHost</c> you specify\r\n            <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>.\r\n            </para>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpPickupDirAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            </remarks>\r\n            <author>Niall Daley</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\n            Sends the contents of the cyclic buffer as an e-mail message.\n            </summary>\n            <param name=\"events\">The logging events to send.</param>\n            <remarks>\n            <para>\n            Sends the contents of the cyclic buffer as an e-mail message.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on this appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\n            Convert a path into a fully qualified path.\n            </summary>\n            <param name=\"path\">The path to convert.</param>\n            <returns>The fully qualified path.</returns>\n            <remarks>\n            <para>\n            Converts the path specified to a fully\n            qualified path. If the path is relative it is\n            taken as relative from the application base \n            directory.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpPickupDirAppender.m_securityContext\">\r\n            <summary>\n            The security context to use for privileged calls\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.To\">\r\n            <summary>\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses.\n            </summary>\n            <value>\n            A semicolon-delimited list of e-mail addresses.\n            </value>\n            <remarks>\n            <para>\n            A semicolon-delimited list of e-mail addresses.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.From\">\r\n            <summary>\n            Gets or sets the e-mail address of the sender.\n            </summary>\n            <value>\n            The e-mail address of the sender.\n            </value>\n            <remarks>\n            <para>\n            The e-mail address of the sender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.Subject\">\r\n            <summary>\n            Gets or sets the subject line of the e-mail message.\n            </summary>\n            <value>\n            The subject line of the e-mail message.\n            </value>\n            <remarks>\n            <para>\n            The subject line of the e-mail message.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\">\r\n            <summary>\n            Gets or sets the path to write the messages to.\n            </summary>\n            <remarks>\n            <para>\n            Gets or sets the path to write the messages to. This should be the same\n            as that used by the agent sending the messages.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender\">\r\n            <summary>\r\n            Appender that allows clients to connect via Telnet to receive log messages\r\n            </summary>\r\n            <remarks>\t\r\n            <para>\r\n            The TelnetAppender accepts socket connections and streams logging messages\r\n            back to the client.  \r\n            The output is provided in a telnet-friendly way so that a log can be monitored \r\n            over a TCP/IP socket.\r\n            This allows simple remote monitoring of application logging.\r\n            </para>\r\n            <para>\r\n            The default <see cref=\"P:log4net.Appender.TelnetAppender.Port\"/> is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <author>Keith Long</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Appender.TelnetAppender.declaringType\">\r\n            <summary>\n            The fully qualified type of the TelnetAppender class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.OnClose\">\r\n            <summary>\n            Overrides the parent method to close the socket handler\n            </summary>\n            <remarks>\n            <para>\n            Closes all the outstanding connections.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Create the socket handler and wait for connections\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Writes the logging event to each connected client.\n            </summary>\n            <param name=\"loggingEvent\">The event to log.</param>\n            <remarks>\n            <para>\n            Writes the logging event to each connected client.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.Port\">\r\n            <summary>\r\n            Gets or sets the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> \r\n            or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler\">\r\n            <summary>\n            Helper class to manage connected clients\n            </summary>\n            <remarks>\n            <para>\n            The SocketHandler class is used to accept connections from\n            clients.  It is threaded so that clients can connect/disconnect\n            asynchronously.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.#ctor(System.Int32)\">\r\n            <summary>\n            Opens a new server port on <paramref ref=\"port\"/>\n            </summary>\n            <param name=\"port\">the local port to listen on for connections</param>\n            <remarks>\n            <para>\n            Creates a socket handler on the specified local server port.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Send(System.String)\">\r\n            <summary>\n            Sends a string message to each of the connected clients\n            </summary>\n            <param name=\"message\">the text to send</param>\n            <remarks>\n            <para>\n            Sends a string message to each of the connected clients\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.AddClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\n            Add a client to the internal clients list\n            </summary>\n            <param name=\"client\">client to add</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.RemoveClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\n            Remove a client from the internal clients list\n            </summary>\n            <param name=\"client\">client to remove</param>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.OnConnect(System.IAsyncResult)\">\r\n            <summary>\n            Callback used to accept a connection on the server socket\n            </summary>\n            <param name=\"asyncResult\">The result of the asynchronous operation</param>\n            <remarks>\n            <para>\n            On connection adds to the list of connections \n            if there are two many open connections you will be disconnected\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Dispose\">\r\n            <summary>\n            Close all network connections\n            </summary>\n            <remarks>\n            <para>\n            Make sure we close all network connections\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.SocketHandler.HasConnections\">\r\n            <summary>\n            Test if this handler has active connections\n            </summary>\n            <value>\n            <c>true</c> if this handler has active connections\n            </value>\n            <remarks>\n            <para>\n            This property will be <c>true</c> while this handler has\n            active connections, that is at least one connection that \n            the handler will attempt to send a message to.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\">\r\n            <summary>\n            Class that represents a client connected to this handler\n            </summary>\n            <remarks>\n            <para>\n            Class that represents a client connected to this handler\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.#ctor(System.Net.Sockets.Socket)\">\r\n            <summary>\r\n            Create this <see cref=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\"/> for the specified <see cref=\"T:System.Net.Sockets.Socket\"/>\r\n            </summary>\r\n            <param name=\"socket\">the client's socket</param>\r\n            <remarks>\r\n            <para>\r\n            Opens a stream writer on the socket.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Send(System.String)\">\r\n            <summary>\n            Write a string to the client\n            </summary>\n            <param name=\"message\">string to send</param>\n            <remarks>\n            <para>\n            Write a string to the client\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Dispose\">\r\n            <summary>\n            Cleanup the clients connection\n            </summary>\n            <remarks>\n            <para>\n            Close the socket connection.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Appender.TraceAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Trace\"/> class for details on configuring the\r\n            trace system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <c>System.Diagnostics.Trace.Write(string,string)</c>\r\n            method. The event's logger name is the default value for the category parameter \r\n            of the Write method. \r\n            </para>\r\n            <para>\r\n            <b>Compact Framework</b><br/>\r\n            The Compact Framework does not support the <see cref=\"T:System.Diagnostics.Trace\"/>\r\n            class for any operation except <c>Assert</c>. When using the Compact Framework this\r\n            appender will write to the <see cref=\"T:System.Diagnostics.Debug\"/> system rather than\r\n            the Trace system. This appender will therefore behave like the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TraceAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_category\">\r\n            <summary>\n            Defaults to %logger\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.ImmediateFlush\">\r\n            <summary>\n            Gets or sets a value that indicates whether the appender will \n            flush at the end of each write.\n            </summary>\n            <remarks>\n            <para>The default behavior is to flush at the end of each \n            write. If the option is set to<c>false</c>, then the underlying \n            stream can defer writing to physical medium to a later time. \n            </para>\n            <para>\n            Avoiding the flush operation at the end of each append results \n            in a performance gain of 10 to 20 percent. However, there is safety\n            trade-off involved in skipping flushing. Indeed, when flushing is\n            skipped, then it is likely that the last few log events will not\n            be recorded on disk when the application exits. This is a high\n            price to pay even for a 20% performance gain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasDomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a domain to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.DomainAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's domain to its repository by\r\n            specifying this attribute with the name of the target domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required domains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasRepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a repository to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.RepositoryAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's repository to its repository by\r\n            specifying this attribute with the name of the target repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required repositories.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.AliasRepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The repository to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.AliasRepositoryAttribute.Name\">\r\n            <summary>\n            Gets or sets the repository to alias to this assemby's repository.\n            </summary>\n            <value>\n            The repository to alias to this assemby's repository.\n            </value>\n            <remarks>\n            <para>\n            The name of the repository to alias to this assemby's repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.AliasDomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasDomainAttribute\"/> class with \r\n            the specified domain to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The domain to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> instead of <see cref=\"T:log4net.Config.AliasDomainAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.BasicConfigurator\">\r\n            <summary>\r\n            Use this class to quickly configure a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Allows very simple programmatic configuration of log4net.\r\n            </para>\r\n            <para>\r\n            Only one appender can be configured using this configurator.\r\n            The appender is set at the root of the hierarchy and all logging\r\n            events will be delivered to that appender.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Config.BasicConfigurator.declaringType\">\r\n            <summary>\n            The fully qualified type of the BasicConfigurator class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.BasicConfigurator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure\">\r\n            <summary>\r\n            Initializes the log4net system with a default configuration.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net logging system using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\n            Initializes the log4net system using the specified appender.\n            </summary>\n            <param name=\"appender\">The appender to use to log all logging events.</param>\n            <remarks>\n            <para>\n            Initializes the log4net system using the specified appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\n            Initializes the log4net system using the specified appenders.\n            </summary>\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\n            <remarks>\n            <para>\n            Initializes the log4net system using the specified appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> with a default configuration.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the specified repository using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appender\">The appender to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appenders.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.ConfiguratorAttribute\">\r\n            <summary>\n            Base class for all log4net configuration attributes.\n            </summary>\n            <remarks>\n            This is an abstract class that must be extended by \n            specific configurators. This attribute allows the\n            configurator to be parameterized by an assembly level\n            attribute.\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.#ctor(System.Int32)\">\r\n            <summary>\n            Constructor used by subclasses.\n            </summary>\n            <param name=\"priority\">the ordering priority for this configurator</param>\n            <remarks>\n            <para>\n            The <paramref name=\"priority\"/> is used to order the configurator\n            attributes before they are invoked. Higher priority configurators are executed\n            before lower priority ones.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Abstract method implemented by a subclass. When this method is called\r\n            the subclass should configure the <paramref name=\"targetRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compare this instance to another ConfiguratorAttribute\r\n            </summary>\r\n            <param name=\"obj\">the object to compare to</param>\r\n            <returns>see <see cref=\"M:System.IComparable.CompareTo(System.Object)\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the priorities of the two <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> instances.\r\n            Sorts by priority in descending order. Objects with the same priority are\r\n            randomly ordered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging domain for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            Assemblies are mapped to logging domains. Each domain has its own\r\n            logging repository. This attribute specified on the assembly controls\r\n            the configuration of the domain. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the domain that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the repository objects to create for the domain. If \r\n            this attribute is not specified and a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> is not specified\r\n            then the assembly will be part of the default shared logging domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.RepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging repository for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Assemblies are mapped to logging repository. This attribute specified \r\n            on the assembly controls\r\n            the configuration of the repository. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the repository that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> object \r\n            to create for the assembly. If this attribute is not specified or a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> \r\n            is not specified then the assembly will be part of the default shared logging repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class \r\n            with the name of the repository.\r\n            </summary>\r\n            <param name=\"name\">The name of the repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize the attribute with the name for the assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.Name\">\r\n            <summary>\n            Gets or sets the name of the logging repository.\n            </summary>\n            <value>\n            The string name to use as the name of the repository associated with this\n            assembly.\n            </value>\n            <remarks>\n            <para>\n            This value does not have to be unique. Several assemblies can share the\n            same repository. They will share the logging configuration of the repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.RepositoryType\">\r\n            <summary>\r\n            Gets or sets the type of repository to create for this assembly.\r\n            </summary>\r\n            <value>\r\n            The type of repository to create for this assembly.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type of the repository to create for the assembly.\r\n            The type must implement the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            interface.\r\n            </para>\r\n            <para>\r\n            This will be the type of repository created when \r\n            the repository is created. If multiple assemblies reference the\r\n            same repository then the repository is only created once using the\r\n            <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/> of the first assembly to call into the \r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class \r\n            with the name of the domain.\r\n            </summary>\r\n            <param name=\"name\">The name of the domain.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.#ctor\">\r\n            <summary>\n            Private constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure\">\r\n            <summary>\n            Automatically configures the log4net system based on the \n            application's configuration settings.\n            </summary>\n            <remarks>\n            <para>\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\n            </para>\n            Each application has a configuration file. This has the\n            same name as the application with '.config' appended.\n            This file is XML and calling this function prompts the\n            configurator to look in that file for a section called\n            <c>log4net</c> that contains the configuration data.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Configures log4net using a <c>log4net</c> element\n            </summary>\n            <remarks>\n            <para>\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\n            </para>\n            Loads the log4net configuration from the XML element\n            supplied as <paramref name=\"element\"/>.\n            </remarks>\n            <param name=\"element\">The element to parse.</param>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\n            Configures log4net using the specified configuration file.\n            </summary>\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\n            <remarks>\n            <para>\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\n            </para>\n            <para>\n            The configuration file must be valid XML. It must contain\n            at least one element called <c>log4net</c> that holds\n            the log4net configuration data.\n            </para>\n            <para>\n            The log4net configuration file can possible be specified in the application's\n            configuration file (either <c>MyAppName.exe.config</c> for a\n            normal application on <c>Web.config</c> for an ASP.NET application).\n            </para>\n            <example>\n            The following example configures log4net using a configuration file, of which the \n            location is stored in the application's configuration file :\n            </example>\n            <code lang=\"C#\">\n            using log4net.Config;\n            using System.IO;\n            using System.Configuration;\n            \n            ...\n            \n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\n            </code>\n            <para>\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\n            </para>\n            <code lang=\"XML\" escaped=\"true\">\n            <configuration>\n            \t<appSettings>\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\n            \t</appSettings>\n            </configuration>\n            </code>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\n            Configures log4net using the specified configuration file.\n            </summary>\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\n            <remarks>\n            <para>\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\n            </para>\n            <para>\n            The configuration data must be valid XML. It must contain\n            at least one element called <c>log4net</c> that holds\n            the log4net configuration data.\n            </para>\n            <para>\n            Note that this method will NOT close the stream parameter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            <para>\r\n            If neither of the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>\r\n            properties are set the configuration is loaded from the application's .config file.\r\n            If set the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property takes priority over the\r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property. The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property\r\n            specifies a path to a file to load the config from. The path is relative to the\r\n            application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property is used as a postfix to the assembly file name.\r\n            The config file must be located in the  application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            For example in a console application setting the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> to\r\n            <c>config</c> has the same effect as not specifying the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or \r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> properties.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\"/> property can be set to cause the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            to watch the configuration file for changes.\r\n            </para>\r\n            <note>\r\n            <para>\r\n            Log4net will only look for assembly level configuration attributes once.\r\n            When using the log4net assembly level attributes to control the configuration \r\n            of log4net you must ensure that the first call to any of the \r\n            <see cref=\"T:log4net.Core.LoggerManager\"/> methods is made from the assembly with the configuration\r\n            attributes. \r\n            </para>\r\n            <para>\r\n            If you cannot guarantee the order in which log4net calls will be made from \r\n            different assemblies you must use programmatic configuration instead, i.e.\r\n            call the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/> method directly.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository using the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            The <paramref name=\"targetRepository\"/> specified must extend the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>\r\n            class otherwise the <see cref=\"T:log4net.Config.XmlConfigurator\"/> will not be able to\r\n            configure it.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"targetRepository\"/> does not extend <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\n            Attempt to load configuration from the local file system\n            </summary>\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\n            <param name=\"targetRepository\">The repository to configure.</param>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configure the specified repository using a <see cref=\"T:System.IO.FileInfo\"/>\r\n            </summary>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <param name=\"configFile\">the FileInfo pointing to the config file</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromUri(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\n            Attempt to load configuration from a URI\n            </summary>\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\n            <param name=\"targetRepository\">The repository to configure.</param>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfiguratorAttribute.declaringType\">\r\n            <summary>\n            The fully qualified type of the XmlConfiguratorAttribute class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\">\r\n            <summary>\r\n            Gets or sets the filename of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The filename of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified, this is the name of the configuration file to use with\r\n            the <see cref=\"T:log4net.Config.XmlConfigurator\"/>. This file path is relative to the\r\n            <b>application base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>).\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\">\r\n            <summary>\r\n            Gets or sets the extension of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The extension of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified this is the extension for the configuration file.\r\n            The path to the config file is built by using the <b>application \r\n            base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>),\r\n            the <b>assembly file name</b> and the config file extension.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> is set to <c>MyExt</c> then\r\n            possible config file names would be: <c>MyConsoleApp.exe.MyExt</c> or\r\n            <c>MyClassLibrary.dll.MyExt</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\">\r\n            <summary>\n            Gets or sets a value indicating whether to watch the configuration file.\n            </summary>\n            <value>\n            <c>true</c> if the configuration should be watched, <c>false</c> otherwise.\n            </value>\n            <remarks>\n            <para>\n            If this flag is specified and set to <c>true</c> then the framework\n            will watch the configuration file and will reload the config each time \n            the file is modified.\n            </para>\n            <para>\n            The config file can only be watched if it is loaded from local disk.\n            In a No-Touch (Smart Client) deployment where the application is downloaded\n            from a web server the config file may not reside on the local disk\n            and therefore it may not be able to watch it.\n            </para>\n            <note>\n            Watching configuration is not supported on the SSCLI.\n            </note>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Config.Log4NetConfigurationSectionHandler\">\r\n            <summary>\n            Class to register for the log4net section of the configuration file\n            </summary>\n            <remarks>\n            The log4net section of the configuration file needs to have a section\n            handler registered. This is the section handler used. It simply returns\n            the XML element that is the root of the section.\n            </remarks>\n            <example>\n            Example of registering the log4net section handler :\n            <code lang=\"XML\" escaped=\"true\">\n            <configuration>\n            \t<configSections>\n            \t\t<section name=\"log4net\" type=\"log4net.Config.Log4NetConfigurationSectionHandler, log4net\" />\n            \t</configSections>\n            \t<log4net>\n            \t\tlog4net configuration XML goes here\n            \t</log4net>\n            </configuration>\n            </code>\n            </example>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)\">\r\n            <summary>\r\n            Parses the configuration section.\r\n            </summary>\r\n            <param name=\"parent\">The configuration settings in a corresponding parent configuration section.</param>\r\n            <param name=\"configContext\">The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.</param>\r\n            <param name=\"section\">The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</param>\r\n            <returns>The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:System.Xml.XmlNode\"/> containing the configuration data,\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.PluginAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a plugin to attach to \r\n            the repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Specifies the type of a plugin to create and attach to the\r\n            assembly's repository. The plugin type must implement the\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPluginFactory\">\r\n            <summary>\n            Interface used to create plugins.\n            </summary>\n            <remarks>\n            <para>\n            Interface used to create  a plugin.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPluginFactory.CreatePlugin\">\r\n            <summary>\n            Creates the plugin object.\n            </summary>\n            <returns>the new plugin instance</returns>\n            <remarks>\n            <para>\n            Create and return a new plugin instance.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"typeName\">The type name of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            <para>\r\n            Where possible use the constructor that takes a <see cref=\"T:System.Type\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"type\">The type of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.CreatePlugin\">\r\n            <summary>\r\n            Creates the plugin object defined by this attribute.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the instance of the <see cref=\"T:log4net.Plugin.IPlugin\"/> object as \r\n            specified by this attribute.\r\n            </para>\r\n            </remarks>\r\n            <returns>The plugin object.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.ToString\">\r\n            <summary>\r\n            Returns a representation of the properties of this object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Overrides base class <see cref=\"M:System.Object.ToString\"/> method to \r\n            return a representation of the properties of this object.\r\n            </para>\r\n            </remarks>\r\n            <returns>A representation of the properties of this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.Type\">\r\n            <summary>\n            Gets or sets the type for the plugin.\n            </summary>\n            <value>\n            The type for the plugin.\n            </value>\n            <remarks>\n            <para>\n            The type for the plugin.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.TypeName\">\r\n            <summary>\r\n            Gets or sets the type name for the plugin.\r\n            </summary>\r\n            <value>\r\n            The type name for the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name for the plugin.\r\n            </para>\r\n            <para>\r\n            Where possible use the <see cref=\"P:log4net.Config.PluginAttribute.Type\"/> property instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.SecurityContextProviderAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Construct provider attribute with type specified\r\n            </summary>\r\n            <param name=\"providerType\">the type of the provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the SecurityContextProvider\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a provider instance from the <see cref=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\"/> specified.\r\n            Sets this as the default security context provider <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.SecurityContextProviderAttribute.declaringType\">\r\n            <summary>\n            The fully qualified type of the SecurityContextProviderAttribute class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\">\r\n            <summary>\r\n            Gets or sets the type of the provider to use.\r\n            </summary>\r\n            <value>\r\n            the type of the provider to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.#ctor\">\r\n            <summary>\n            Private constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure\">\r\n            <summary>\r\n            Automatically configures the log4net system based on the \r\n            application's configuration settings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Configures log4net using a <c>log4net</c> element\n            </summary>\n            <remarks>\n            <para>\n            Loads the log4net configuration from the XML element\n            supplied as <paramref name=\"element\"/>.\n            </para>\n            </remarks>\n            <param name=\"element\">The element to parse.</param>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Uri)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration URI.\r\n            </summary>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\n            Configures log4net using the specified configuration data stream.\n            </summary>\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\n            <remarks>\n            <para>\n            The configuration data must be valid XML. It must contain\n            at least one element called <c>log4net</c> that holds\n            the log4net configuration data.\n            </para>\n            <para>\n            Note that this method will NOT close the stream parameter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Uri)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            URI.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.InternalConfigureFromXml(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the specified repository using a <c>log4net</c> element.\r\n            </summary>\r\n            <param name=\"repository\">The hierarchy to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </para>\r\n            <para>\r\n            This method is ultimately called by one of the Configure methods \r\n            to load the configuration from an <see cref=\"T:System.Xml.XmlElement\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.m_repositoryName2ConfigAndWatchHandler\">\r\n            <summary>\n            Maps repository names to ConfigAndWatchHandler instances to allow a particular\n            ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is \n            reconfigured.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.declaringType\">\r\n            <summary>\n            The fully qualified type of the XmlConfigurator class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\">\r\n            <summary>\r\n            Class used to watch config files.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"T:System.IO.FileSystemWatcher\"/> to monitor\r\n            changes to a specified file. Because multiple change notifications\r\n            may be raised when the file is modified, a timer is used to\r\n            compress the notifications into a single event. The timer\r\n            waits for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> time before delivering\r\n            the event notification. If any further <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            change notifications arrive while the timer is waiting it\r\n            is reset and waits again for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> to\r\n            elapse.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\">\r\n            <summary>\n            The default amount of time to wait after receiving notification\n            before reloading the config file.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_configFile\">\r\n            <summary>\n            Holds the FileInfo used to configure the XmlConfigurator\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_repository\">\r\n            <summary>\n            Holds the repository being configured.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_timer\">\r\n            <summary>\n            The timer used to compress the notification events.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_watcher\">\r\n            <summary>\n            Watches file for changes. This object should be disposed when no longer\n            needed to free system handles on the watched resources.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.#ctor(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class to\r\n            watch a specified config file used to configure a repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The configuration file to watch.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnChanged(System.Object,System.IO.FileSystemEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnRenamed(System.Object,System.IO.RenamedEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.OnWatchedFileChange(System.Object)\">\r\n            <summary>\n            Called by the timer when the configuration has been updated.\n            </summary>\n            <param name=\"state\">null</param>\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.Dispose\">\r\n            <summary>\n            Release the handles held by the watcher and timer.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.CompactRepositorySelector\">\r\n            <summary>\r\n            The implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface suitable\r\n            for use with the compact framework\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.IRepositorySelector\"/> implementation is a simple\r\n            mapping between repository name and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            object.\r\n            </para>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not support retrieving assembly\r\n            level attributes therefore unlike the <c>DefaultRepositorySelector</c>\r\n            this selector does not examine the calling assembly for attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IRepositorySelector\">\r\n            <summary>\r\n            Interface used by the <see cref=\"T:log4net.LogManager\"/> to select the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.LogManager\"/> uses a <see cref=\"T:log4net.Core.IRepositorySelector\"/> \r\n            to specify the policy for selecting the correct <see cref=\"T:log4net.Repository.ILoggerRepository\"/> \r\n            to return to the caller.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association. The results of this method must be repeatable, i.e.\r\n            when called again with the same arguments the result must be the\r\n            save value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            Lookup a named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. This is the repository created by\r\n            calling <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to create the domain to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the domain\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository with the name specified.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the name\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same name will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>\r\n            An array of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instances created by \r\n            this <see cref=\"T:log4net.Core.IRepositorySelector\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new repository selector\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">the type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new compact repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"defaultRepositoryType\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">throw if <paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Get the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly\r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <param name=\"repositoryName\">the name of the repository to lookup</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The default \r\n            repository is <c>log4net-default-repository</c>. Other repositories \r\n            must be created using the <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            If the named repository does not exist an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> does not exist</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"repositoryType\"/> is <c>null</c> then the\r\n            default repository type specified to the constructor is used.\r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the repository specified\r\n            </summary>\r\n            <param name=\"repositoryName\">the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is null then the default repository type is used.</param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            If the named repository already exists an exception will be thrown.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"repositoryType\"/> is <c>null</c> then the default \r\n            repository type specified to the constructor is used.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> already exists</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.CompactRepositorySelector.declaringType\">\r\n            <summary>\n            The fully qualified type of the CompactRepositorySelector class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has been created\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <event cref=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">LoggerRepositoryCreatedEvent</event>\r\n            event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.DefaultRepositorySelector\">\r\n            <summary>\r\n            The default implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses attributes defined on the calling assembly to determine how to\r\n            configure the hierarchy for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Creates a new repository selector.\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">The type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"defaultRepositoryType\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\"><paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and the repository \r\n            to create can be overridden by specifying the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> \r\n            attribute on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            The default values are to use the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> \r\n            implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically configured using \r\n            any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> attributes defined on\r\n            the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the named repository. If <paramref name=\"repositoryName\"/> is <c>null</c>\r\n            a <see cref=\"T:System.ArgumentNullException\"/> is thrown. If the repository \r\n            does not exist a <see cref=\"T:log4net.Core.LogException\"/> is thrown.\r\n            </para>\r\n            <para>\r\n            Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/> to create a repository.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> does not exist.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type,System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryName\">The name to assign to the created repository</param>\r\n            <param name=\"readAssemblyAttributes\">Set to <c>true</c> to read and apply the assembly attributes</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is <see langword=\"null\"/> then the default repository type is used.</param>\r\n            <returns>The new repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.AliasRepository(System.String,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Aliases a repository to an existing repository.\r\n            </summary>\r\n            <param name=\"repositoryAlias\">The repository to alias.</param>\r\n            <param name=\"repositoryTarget\">The repository that the repository is aliased to.</param>\r\n            <remarks>\r\n            <para>\r\n            The repository specified will be aliased to the repository when created. \r\n            The repository must not already exist.\r\n            </para>\r\n            <para>\r\n            When the repository is created it must utilize the same repository type as \r\n            the repository it is aliased to, otherwise the aliasing will fail.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"repositoryAlias\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repositoryTarget\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notifies the registered listeners that the repository has been created.\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <see cref=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetInfoForAssembly(System.Reflection.Assembly,System.String@,System.Type@)\">\r\n            <summary>\r\n            Gets the repository name and repository type for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that has a <see cref=\"T:log4net.Config.RepositoryAttribute\"/>.</param>\r\n            <param name=\"repositoryName\">in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.</param>\r\n            <param name=\"repositoryType\">in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ConfigureRepository(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the repository using information from the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly containing <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/>\r\n            attributes which define the configuration for the repository.</param>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadPlugins(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined plugins on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to add the plugins to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadAliases(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined aliases on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to alias to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Core.DefaultRepositorySelector.declaringType\">\r\n            <summary>\n            The fully qualified type of the DefaultRepositorySelector class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ErrorCode\">\r\n            <summary>\r\n            Defined error codes that can be passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Values passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.GenericFailure\">\r\n            <summary>\n            A general error\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.WriteFailure\">\r\n            <summary>\n            Error while writing output\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FlushFailure\">\r\n            <summary>\n            Failed to flush file\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.CloseFailure\">\r\n            <summary>\n            Failed to close file\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FileOpenFailure\">\r\n            <summary>\n            Unable to open output file\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.MissingLayout\">\r\n            <summary>\n            No layout specified\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.AddressParseFailure\">\r\n            <summary>\n            Failed to parse address\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.ExceptionEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers on an Exception type\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the type of the Exception\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to a Type in <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.    /// \r\n            </para>\r\n            </remarks>\r\n            <author>Drew Schaeffer</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ITriggeringEventEvaluator\">\r\n            <summary>\r\n            Test if an <see cref=\"T:log4net.Core.LoggingEvent\"/> triggers an action\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementations of this interface allow certain appenders to decide\r\n            when to perform an appender specific action.\r\n            </para>\r\n            <para>\r\n            The action or behavior triggered is defined by the implementation.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ITriggeringEventEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Test if this event triggers the action\n            </summary>\n            <param name=\"loggingEvent\">The event to check</param>\n            <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns>\n            <remarks>\n            <para>\n            Return <c>true</c> if this event triggers the action\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_type\">\r\n            <summary>\n            The type that causes the trigger to fire.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_triggerOnSubclass\">\r\n            <summary>\r\n            Causes subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/> to cause the trigger to fire.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor\">\r\n            <summary>\n            Default ctor to allow dynamic creation through a configurator.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor(System.Type,System.Boolean)\">\r\n            <summary>\r\n            Constructs an evaluator and initializes to trigger on <paramref name=\"exType\"/>\r\n            </summary>\r\n            <param name=\"exType\">the type that triggers this evaluator.</param>\r\n            <param name=\"triggerOnSubClass\">If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the logging event Exception \r\n            Type is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the Exception Type of the event\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\">\r\n            <summary>\n            The type that triggers this evaluator.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.TriggerOnSubclass\">\r\n            <summary>\r\n            If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IErrorHandler\">\r\n            <summary>\r\n            Appenders may delegate their error handling to an <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Error handling is a particularly tedious to get right because by\r\n            definition errors are hard to predict and to reproduce. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <param name=\"errorCode\">The error code associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IFixingRequired\">\r\n            <summary>\r\n            Interface for objects that require fixing.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface that indicates that the object requires fixing before it\r\n            can be taken outside the context of the appender's \r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            When objects that implement this interface are stored \r\n            in the context properties maps <see cref=\"T:log4net.GlobalContext\"/>\r\n            <see cref=\"P:log4net.GlobalContext.Properties\"/> and <see cref=\"T:log4net.ThreadContext\"/>\r\n            <see cref=\"P:log4net.ThreadContext.Properties\"/> are fixed \r\n            (see <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>) the <see cref=\"M:log4net.Core.IFixingRequired.GetFixedObject\"/>\r\n            method will be called.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IFixingRequired.GetFixedObject\">\r\n            <summary>\n            Get a portable version of this object\n            </summary>\n            <returns>the portable instance of this object</returns>\n            <remarks>\n            <para>\n            Get a portable instance object that represents the current\n            state of this object. The portable object can be stored\n            and logged from any thread with identical results.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.ILogger\">\r\n            <summary>\n            Interface that all loggers implement\n            </summary>\n            <remarks>\n            <para>\n            This interface supports logging events and testing if a level\n            is enabled for logging.\n            </para>\n            <para>\n            These methods will not throw exceptions. Note to implementor, ensure\n            that the implementation of these methods cannot allow an exception\n            to be thrown to the caller.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\n            This generic form is intended to be used by wrappers.\n            </summary>\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\n            the stack boundary into the logging system for this call.</param>\n            <param name=\"level\">The level of the message to be logged.</param>\n            <param name=\"message\">The message object to log.</param>\n            <param name=\"exception\">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>\n            <remarks>\n            <para>\n            Generates a logging event for the specified <paramref name=\"level\"/> using\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            This is the most generic printing method that is intended to be used \n            by wrappers.\n            </summary>\n            <param name=\"logEvent\">The event being logged.</param>\n            <remarks>\n            <para>\n            Logs the specified logging event through this logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"T:log4net.Core.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Name\">\r\n            <summary>\n            Gets the name of the logger.\n            </summary>\n            <value>\n            The name of the logger.\n            </value>\n            <remarks>\n            <para>\n            The name of this logger\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ILoggerWrapper\">\r\n            <summary>\n            Base interface for all wrappers\n            </summary>\n            <remarks>\n            <para>\n            Base interface for all wrappers.\n            </para>\n            <para>\n            All wrappers must implement this interface.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"P:log4net.Core.ILoggerWrapper.Logger\">\r\n            <summary>\r\n            Get the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this object.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this\r\n            object. The <c>Logger</c> object may not \r\n            be the same object as this object because of logger decorators.\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository creation event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Core.IRepositorySelector\"/> which created the repository.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> event args\r\n            that holds the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> \r\n            event is raised every time a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerRepositoryCreationEventArgs.m_repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerRepositoryCreationEventArgs.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </summary>\r\n            <param name=\"repository\">the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerRepositoryCreationEventArgs.LoggerRepository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.Level\">\r\n            <summary>\r\n            Defines the default set of levels recognized by the system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each <see cref=\"T:log4net.Core.LoggingEvent\"/> has an associated <see cref=\"T:log4net.Core.Level\"/>.\r\n            </para>\r\n            <para>\r\n            Levels have a numeric <see cref=\"P:log4net.Core.Level.Value\"/> that defines the relative \r\n            ordering between levels. Two Levels with the same <see cref=\"P:log4net.Core.Level.Value\"/> \r\n            are deemed to be equivalent.\r\n            </para>\r\n            <para>\r\n            The levels that are recognized by log4net are set for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and each repository can have different levels defined. The levels are stored\r\n            in the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> on the repository. Levels are\r\n            looked up by name from the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>.\r\n            </para>\r\n            <para>\r\n            When logging at level INFO the actual level used is not <see cref=\"F:log4net.Core.Level.Info\"/> but\r\n            the value of <c>LoggerRepository.LevelMap[\"INFO\"]</c>. The default value for this is\r\n            <see cref=\"F:log4net.Core.Level.Info\"/>, but this can be changed by reconfiguring the level map.\r\n            </para>\r\n            <para>\r\n            Each level has a <see cref=\"P:log4net.Core.Level.DisplayName\"/> in addition to its <see cref=\"P:log4net.Core.Level.Name\"/>. The \r\n            <see cref=\"P:log4net.Core.Level.DisplayName\"/> is the string that is written into the output log. By default\r\n            the display name is the same as the level name, but this can be used to alias levels\r\n            or to localize the log output.\r\n            </para>\r\n            <para>\r\n            Some of the predefined levels recognized by the system are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Off\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Fatal\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Error\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Warn\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Info\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Debug\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.All\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <param name=\"displayName\">The display name for this level. This may be localized or otherwise different from the name</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.ToString\">\r\n            <summary>\r\n            Returns the <see cref=\"T:System.String\"/> representation of the current \r\n            <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <returns>\r\n            A <see cref=\"T:System.String\"/> representation of the current <see cref=\"T:log4net.Core.Level\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the level <see cref=\"P:log4net.Core.Level.Name\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Equals(System.Object)\">\r\n            <summary>\r\n            Compares levels.\r\n            </summary>\r\n            <param name=\"o\">The object to compare against.</param>\r\n            <returns><c>true</c> if the objects are equal.</returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the levels of <see cref=\"T:log4net.Core.Level\"/> instances, and \r\n            defers to base class if the target object is not a <see cref=\"T:log4net.Core.Level\"/>\r\n            instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.GetHashCode\">\r\n            <summary>\r\n            Returns a hash code\r\n            </summary>\r\n            <returns>A hash code for the current <see cref=\"T:log4net.Core.Level\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a hash code suitable for use in hashing algorithms and data \r\n            structures like a hash table.\r\n            </para>\r\n            <para>\r\n            Returns the hash code of the level <see cref=\"P:log4net.Core.Level.Value\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compares this instance to a specified object and returns an \r\n            indication of their relative values.\r\n            </summary>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> instance or <see langword=\"null\"/> to compare with this instance.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description>This instance is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description>This instance is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description>\r\n            \t\t\t<para>This instance is greater than <paramref name=\"r\"/>.</para>\r\n            \t\t\t<para>-or-</para>\r\n            \t\t\t<para><paramref name=\"r\"/> is <see langword=\"null\"/>.</para>\r\n            \t\t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <paramref name=\"r\"/> must be an instance of <see cref=\"T:log4net.Core.Level\"/> \r\n            or <see langword=\"null\"/>; otherwise, an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\"><paramref name=\"r\"/> is not a <see cref=\"T:log4net.Core.Level\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Equality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have the same value.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is the same as the \r\n            value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Inequality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have different values.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is different from\r\n            the value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Compare(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Compares two specified <see cref=\"T:log4net.Core.Level\"/> instances.\r\n            </summary>\r\n            <param name=\"l\">The first <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <param name=\"r\">The second <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            two values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is greater than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Off\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Off\"/> level designates a higher level than all the rest.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Log4Net_Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Emergency\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fatal\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fatal\"/> level designates very severe error events \r\n            that will presumably lead the application to abort.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Alert\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Alert\"/> level designates very severe error events. \r\n            Take immediate action, alerts.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Critical\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Critical\"/> level designates very severe error events. \r\n            Critical condition, critical.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Severe\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Severe\"/> level designates very severe error events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Error\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Error\"/> level designates error events that might \r\n            still allow the application to continue running.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Warn\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Warn\"/> level designates potentially harmful \r\n            situations.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Notice\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Notice\"/> level designates informational messages \r\n            that highlight the progress of the application at the highest level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Info\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Info\"/> level designates informational messages that \r\n            highlight the progress of the application at coarse-grained level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Debug\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fine\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fine\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Trace\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Trace\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finer\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finer\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Verbose\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Verbose\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finest\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finest\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.All\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.All\"/> level designates the lowest level possible.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Name\">\r\n            <summary>\n            Gets the name of this level.\n            </summary>\n            <value>\n            The name of this level.\n            </value>\n            <remarks>\n            <para>\n            Gets the name of this level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Value\">\r\n            <summary>\n            Gets the value of this level.\n            </summary>\n            <value>\n            The value of this level.\n            </value>\n            <remarks>\n            <para>\n            Gets the value of this level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.Level.DisplayName\">\r\n            <summary>\n            Gets the display name of this level.\n            </summary>\n            <value>\n            The display name of this level.\n            </value>\n            <remarks>\n            <para>\n            Gets the display name of this level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Core.Level\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ReadOnly(log4net.Core.LevelCollection)\">\r\n            <summary>\n            Creates a read-only wrapper for a <c>LevelCollection</c> instance.\n            </summary>\n            <param name=\"list\">list to create a readonly wrapper arround</param>\n            <returns>\n            A <c>LevelCollection</c> wrapper that is read-only.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor\">\r\n            <summary>\n            Initializes a new instance of the <c>LevelCollection</c> class\n            that is empty and has the default initial capacity.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Int32)\">\r\n            <summary>\n            Initializes a new instance of the <c>LevelCollection</c> class\n            that has the specified initial capacity.\n            </summary>\n            <param name=\"capacity\">\n            The number of elements that the new <c>LevelCollection</c> is initially capable of storing.\n            </param>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>LevelCollection</c> class\n            that contains elements copied from the specified <c>LevelCollection</c>.\n            </summary>\n            <param name=\"c\">The <c>LevelCollection</c> whose elements are copied to the new collection.</param>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.Level[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection.Tag)\">\r\n            <summary>\n            Allow subclasses to avoid our default constructors\n            </summary>\n            <param name=\"tag\"></param>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[])\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Add(log4net.Core.Level)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Core.Level\"/> to the end of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clear\">\r\n            <summary>\n            Removes all elements from the <c>LevelCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Core.LevelCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Contains(log4net.Core.Level)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Core.Level\"/> is in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>LevelCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.IndexOf(log4net.Core.Level)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Core.Level\"/>\r\n            in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to locate in the <c>LevelCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>LevelCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Insert(System.Int32,log4net.Core.Level)\">\r\n            <summary>\r\n            Inserts an element into the <c>LevelCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Remove(log4net.Core.Level)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Core.Level\"/> from the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to remove from the <c>LevelCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Core.Level\"/> was not found in the <c>LevelCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>LevelCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Core.LevelCollection.Enumerator\"/> for the entire <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>LevelCollection</c> to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>LevelCollection</c> whose elements should be added to the end of the current <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.Level[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> array to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> collection to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.TrimToSize\">\r\n            <summary>\n            Sets the capacity to the actual number of elements.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Count\">\r\n            <summary>\n            Gets the number of elements actually contained in the <c>LevelCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsSynchronized\">\r\n            <summary>\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\n            </summary>\n            <value>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</value>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.SyncRoot\">\r\n            <summary>\n            Gets an object that can be used to synchronize access to the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.Level\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsFixedSize\">\r\n            <summary>\n            Gets a value indicating whether the collection has a fixed size.\n            </summary>\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsReadOnly\">\r\n            <summary>\n            Gets a value indicating whether the IList is read-only.\n            </summary>\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Capacity\">\r\n            <summary>\n            Gets or sets the number of elements the <c>LevelCollection</c> can contain.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.ILevelCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Tag\">\r\n            <summary>\n            Type visible only to our subclasses\n            Used to access protected constructor\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LevelCollection.Tag.Default\">\r\n            <summary>\n            A value\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>Enumerator</c> class.\n            </summary>\n            <param name=\"tc\"></param>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Enumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LevelEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers at a threshold level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelEvaluator.m_threshold\">\r\n            <summary>\n            The threshold for triggering\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </summary>\r\n            <param name=\"threshold\">the threshold to trigger at</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the event level\r\n            is equal or higher than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelEvaluator.Threshold\">\r\n            <summary>\r\n            the threshold to trigger at\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that will cause this evaluator to trigger\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelMap\">\r\n            <summary>\r\n            Mapping between string name and Level object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Mapping between string name and <see cref=\"T:log4net.Core.Level\"/> object.\r\n            This mapping is held separately for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The level name is case insensitive.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelMap.m_mapName2Level\">\r\n            <summary>\n            Mapping from level name to Level object. The\n            level name is case insensitive\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.#ctor\">\r\n            <summary>\n            Construct the level map\n            </summary>\n            <remarks>\n            <para>\n            Construct the level map.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Clear\">\r\n            <summary>\n            Clear the internal maps of all levels\n            </summary>\n            <remarks>\n            <para>\n            Clear the internal maps of all levels\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32)\">\r\n            <summary>\r\n            Create a new Level and add it to the map\r\n            </summary>\r\n            <param name=\"name\">the string to display for the Level</param>\r\n            <param name=\"value\">the level value to give to the Level</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new Level and add it to the map\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\">\r\n            <summary>\n            Create a new Level and add it to the map\n            </summary>\n            <param name=\"name\">the string to display for the Level</param>\n            <param name=\"value\">the level value to give to the Level</param>\n            <param name=\"displayName\">the display name to give to the Level</param>\n            <remarks>\n            <para>\n            Create a new Level and add it to the map\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(log4net.Core.Level)\">\r\n            <summary>\n            Add a Level to the map\n            </summary>\n            <param name=\"level\">the Level to add</param>\n            <remarks>\n            <para>\n            Add a Level to the map\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.LookupWithDefault(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup a named level from the map\r\n            </summary>\r\n            <param name=\"defaultLevel\">the name of the level to lookup is taken from this level. \r\n            If the level is not set on the map then this level is added</param>\r\n            <returns>the level in the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a named level from the map. The name of the level to lookup is taken\r\n            from the <see cref=\"P:log4net.Core.Level.Name\"/> property of the <paramref name=\"defaultLevel\"/>\r\n            argument.\r\n            </para>\r\n            <para>\r\n            If no level with the specified name is found then the \r\n            <paramref name=\"defaultLevel\"/> argument is added to the level map\r\n            and returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.Item(System.String)\">\r\n            <summary>\r\n            Lookup a <see cref=\"T:log4net.Core.Level\"/> by name\r\n            </summary>\r\n            <param name=\"name\">The name of the Level to lookup</param>\r\n            <returns>a Level from the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:log4net.Core.Level\"/> from the\r\n            map with the name specified. If the no level is\r\n            found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.AllLevels\">\r\n            <summary>\n            Return all possible levels as a list of Level objects.\n            </summary>\n            <returns>all possible levels as a list of Level objects</returns>\n            <remarks>\n            <para>\n            Return all possible levels as a list of Level objects.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.LocationInfo\">\r\n            <summary>\n            The internal representation of caller location information.\n            </summary>\n            <remarks>\n            <para>\n            This class uses the <c>System.Diagnostics.StackTrace</c> class to generate\n            a call stack. The caller's information is then extracted from this stack.\n            </para>\n            <para>\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \n            .NET Compact Framework 1.0 therefore caller location information is not\n            available on that framework.\n            </para>\n            <para>\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\n            </para>\n            <para>\n            \"StackTrace information will be most informative with Debug build configurations. \n            By default, Debug builds include debug symbols, while Release builds do not. The \n            debug symbols contain most of the file, method name, line number, and column \n            information used in constructing StackFrame and StackTrace objects. StackTrace \n            might not report as many method calls as expected, due to code transformations \n            that occur during optimization.\"\n            </para>\n            <para>\n            This means that in a Release build the caller information may be incomplete or may \n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.NA\">\r\n            <summary>\n            When location information is not available the constant\n            <c>NA</c> is returned. Current value of this string\n            constant is <b>?</b>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.Type)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class based on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.String,System.String,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"className\">The fully qualified class name.</param>\r\n            <param name=\"methodName\">The method name.</param>\r\n            <param name=\"fileName\">The file name.</param>\r\n            <param name=\"lineNumber\">The line number of the method within the file.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class with the specified data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.declaringType\">\r\n            <summary>\n            The fully qualified type of the LocationInfo class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.ClassName\">\r\n            <summary>\n            Gets the fully qualified class name of the caller making the logging \n            request.\n            </summary>\n            <value>\n            The fully qualified class name of the caller making the logging \n            request.\n            </value>\n            <remarks>\n            <para>\n            Gets the fully qualified class name of the caller making the logging \n            request.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FileName\">\r\n            <summary>\n            Gets the file name of the caller.\n            </summary>\n            <value>\n            The file name of the caller.\n            </value>\n            <remarks>\n            <para>\n            Gets the file name of the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.LineNumber\">\r\n            <summary>\n            Gets the line number of the caller.\n            </summary>\n            <value>\n            The line number of the caller.\n            </value>\n            <remarks>\n            <para>\n            Gets the line number of the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.MethodName\">\r\n            <summary>\n            Gets the method name of the caller.\n            </summary>\n            <value>\n            The method name of the caller.\n            </value>\n            <remarks>\n            <para>\n            Gets the method name of the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FullInfo\">\r\n            <summary>\n            Gets all available caller information\n            </summary>\n            <value>\n            All available caller information, in the format\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\n            </value>\n            <remarks>\n            <para>\n            Gets all available caller information, in the format\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.StackFrames\">\r\n            <summary>\n            Gets the stack frames from the stack trace of the caller making the log request\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerManager\">\r\n            <summary>\r\n            Static manager that controls the creation of repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Static manager that controls the creation of repositories\r\n            </para>\r\n            <para>\r\n            This class is used by the wrapper managers (e.g. <see cref=\"T:log4net.LogManager\"/>)\r\n            to provide access to the <see cref=\"T:log4net.Core.ILogger\"/> objects.\r\n            </para>\r\n            <para>\r\n            This manager also holds the <see cref=\"T:log4net.Core.IRepositorySelector\"/> that is used to\r\n            lookup and create repositories. The selector can be set either programmatically using\r\n            the <see cref=\"P:log4net.Core.LoggerManager.RepositorySelector\"/> property, or by setting the <c>log4net.RepositorySelector</c>\r\n            AppSetting in the applications config file to the fully qualified type name of the\r\n            selector to use. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#ctor\">\r\n            <summary>\n            Private constructor to prevent instances. Only static methods should be used.\n            </summary>\n            <remarks>\n            <para>\n            Private constructor to prevent instances. Only static methods should be used.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#cctor\">\r\n            <summary>\n            Hook the shutdown event\n            </summary>\n            <remarks>\n            <para>\n            On the full .NET runtime, the static constructor hooks up the \n            <c>AppDomain.ProcessExit</c> and <c>AppDomain.DomainUnload</c>> events. \n            These are used to shutdown the log4net system as the application exits.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.RegisterAppDomainEvents\">\r\n            <summary>\n            Register for ProcessExit and DomainUnload events on the AppDomain\n            </summary>\n            <remarks>\n            <para>\n            This needs to be in a separate method because the events make\n            a LinkDemand for the ControlAppDomain SecurityPermission. Because\n            this is a LinkDemand it is demanded at JIT time. Therefore we cannot\n            catch the exception in the method itself, we have to catch it in the\n            caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.String,System.String)\">\r\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>\n            The logger found, or <c>null</c> if the named logger does not exist in the\n            specified repository.\n            </returns>\n            <remarks>\n            <para>\n            If the named logger exists (in the specified repository) then it\n            returns a reference to the logger, otherwise it returns\n            <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>\n            The logger found, or <c>null</c> if the named logger does not exist in the\n            specified assembly's repository.\n            </returns>\n            <remarks>\n            <para>\n            If the named logger exists (in the specified assembly's repository) then it\n            returns a reference to the logger, otherwise it returns\n            <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\n            Returns all the currently defined loggers in the specified repository.\n            </summary>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <returns>All the defined loggers.</returns>\n            <remarks>\n            <para>\n            The root logger is <b>not</b> included in the returned array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\n            Returns all the currently defined loggers in the specified assembly's repository.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <returns>All the defined loggers.</returns>\n            <remarks>\n            <para>\n            The root logger is <b>not</b> included in the returned array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.String)\">\r\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n            <remarks>\n            <para>\n            Retrieves a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>\n            By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n            <remarks>\n            <para>\n            Retrieves a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>\n            By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to lookup the repository</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Shutdown\">\r\n            <summary>\n            Shuts down the log4net system.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in all the\n            default repositories.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>\n            The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.String)\">\r\n            <summary>\n            Shuts down the repository for the repository specified.\n            </summary>\n            <param name=\"repository\">The repository to shutdown.</param>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            repository for the <paramref name=\"repository\"/> specified.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>\n            The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\n            Shuts down the repository for the repository specified.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            repository for the repository. The repository is looked up using\n            the <paramref name=\"repositoryAssembly\"/> specified.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>\n            The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all currently defined repositories.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetVersionInfo\">\r\n            <summary>\n            Internal method to get pertinent version info.\n            </summary>\n            <returns>A string of version info.</returns>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnDomainUnload(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"E:System.AppDomain.DomainUnload\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"E:System.AppDomain.DomainUnload\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnProcessExit(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"E:System.AppDomain.ProcessExit\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"E:System.AppDomain.ProcessExit\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.declaringType\">\r\n            <summary>\n            The fully qualified type of the LoggerManager class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.s_repositorySelector\">\r\n            <summary>\n            Initialize the default repository selector\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerManager.RepositorySelector\">\r\n            <summary>\r\n            Gets or sets the repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </summary>\r\n            <value>\r\n            The repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The repository selector (<see cref=\"T:log4net.Core.IRepositorySelector\"/>) is used by \r\n            the <see cref=\"T:log4net.LogManager\"/> to create and select repositories \r\n            (<see cref=\"T:log4net.Repository.ILoggerRepository\"/>).\r\n            </para>\r\n            <para>\r\n            The caller to <see cref=\"T:log4net.LogManager\"/> supplies either a string name \r\n            or an assembly (if not supplied the assembly is inferred using \r\n            <see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            <para>\r\n            This context is used by the selector to lookup a specific repository.\r\n            </para>\r\n            <para>\r\n            For the full .NET Framework, the default repository is <c>DefaultRepositorySelector</c>;\r\n            for the .NET Compact Framework <c>CompactRepositorySelector</c> is the default\r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerWrapperImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class should be used as the base for all wrapper implementations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerWrapperImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\n            Constructs a new wrapper for the specified logger.\n            </summary>\n            <param name=\"logger\">The logger to wrap.</param>\n            <remarks>\n            <para>\n            Constructs a new wrapper for the specified logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerWrapperImpl.m_logger\">\r\n            <summary>\n            The logger that this object is wrapping\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerWrapperImpl.Logger\">\r\n            <summary>\r\n            Gets the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that this object is implementing.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>Logger</c> object may not be the same object as this object \r\n            because of logger decorators.\r\n            </para>\r\n            <para>\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEventData\">\r\n            <summary>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LoggerName\">\r\n            <summary>\n            The logger name.\n            </summary>\n            <remarks>\n            <para>\n            The logger name.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Level\">\r\n            <summary>\n            Level of logging event.\n            </summary>\n            <remarks>\n            <para>\n            Level of logging event. Level cannot be Serializable\n            because it is a flyweight.  Due to its special serialization it\n            cannot be declared final either.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Message\">\r\n            <summary>\n            The application supplied message.\n            </summary>\n            <remarks>\n            <para>\n            The application supplied message of logging event.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ThreadName\">\r\n            <summary>\n            The name of thread\n            </summary>\n            <remarks>\n            <para>\n            The name of thread in which this logging event was generated\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.TimeStamp\">\r\n            <summary>\n            The time the event was logged\n            </summary>\n            <remarks>\n            <para>\n            The TimeStamp is stored in the local time zone for this computer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LocationInfo\">\r\n            <summary>\n            Location information for the caller.\n            </summary>\n            <remarks>\n            <para>\n            Location information for the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.UserName\">\r\n            <summary>\n            String representation of the user\n            </summary>\n            <remarks>\n            <para>\n            String representation of the user's windows name,\n            like DOMAIN\\username\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Identity\">\r\n            <summary>\n            String representation of the identity.\n            </summary>\n            <remarks>\n            <para>\n            String representation of the current thread's principal identity.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ExceptionString\">\r\n            <summary>\n            The string representation of the exception\n            </summary>\n            <remarks>\n            <para>\n            The string representation of the exception\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Domain\">\r\n            <summary>\n            String representation of the AppDomain.\n            </summary>\n            <remarks>\n            <para>\n            String representation of the AppDomain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Properties\">\r\n            <summary>\n            Additional event specific properties\n            </summary>\n            <remarks>\n            <para>\n            A logger or an appender may attach additional\n            properties to specific events. These properties\n            have a string key and an object value.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.FixFlags\">\r\n            <summary>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Mdc\">\r\n            <summary>\n            Fix the MDC\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Ndc\">\r\n            <summary>\n            Fix the NDC\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Message\">\r\n            <summary>\n            Fix the rendered message\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.ThreadName\">\r\n            <summary>\n            Fix the thread name\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.LocationInfo\">\r\n            <summary>\n            Fix the callers location information\n            </summary>\n            <remarks>\n            CAUTION: Very slow to generate\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.UserName\">\r\n            <summary>\n            Fix the callers windows user name\n            </summary>\n            <remarks>\n            CAUTION: Slow to generate\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Domain\">\r\n            <summary>\n            Fix the domain friendly name\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Identity\">\r\n            <summary>\n            Fix the callers principal name\n            </summary>\n            <remarks>\n            CAUTION: May be slow to generate\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Exception\">\r\n            <summary>\n            Fix the exception text\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Properties\">\r\n            <summary>\r\n            Fix the event properties. Active properties must implement <see cref=\"T:log4net.Core.IFixingRequired\"/> in order to be eligible for fixing.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.None\">\r\n            <summary>\n            No fields fixed\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.All\">\r\n            <summary>\n            All fields fixed\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Partial\">\r\n            <summary>\r\n            Partial fields fixed\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This set of partial fields gives good performance. The following fields are fixed:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Message\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.ThreadName\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Exception\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Domain\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Properties\"/></description></item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEvent\">\r\n            <summary>\r\n            The internal representation of logging events. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            When an affirmative decision is made to log then a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> instance is created. This instance \r\n            is passed around to the different log4net components.\r\n            </para>\r\n            <para>\r\n            This class is of concern to those wishing to extend log4net.\r\n            </para>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.HostNameProperty\">\r\n            <summary>\n            The key into the Properties map for the host name value.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.IdentityProperty\">\r\n            <summary>\n            The key into the Properties map for the thread identity value.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.UserNameProperty\">\r\n            <summary>\n            The key into the Properties map for the user name value.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,System.String,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class\r\n            from the supplied parameters.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"loggerName\">The name of the logger of this event.</param>\r\n            <param name=\"level\">The level of this event.</param>\r\n            <param name=\"message\">The message of this event.</param>\r\n            <param name=\"exception\">The exception for this event.</param>\r\n            <remarks>\r\n            <para>\r\n            Except <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>, <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> and <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/>, \r\n            all fields of <c>LoggingEvent</c> are filled when actually needed. Call\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> to cache all data locally\r\n            to prevent inconsistencies.\r\n            </para>\r\n            <para>This method is called by the log4net framework\r\n            to create a logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData,log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <param name=\"fixedData\">The fields in the <paranref name=\"data\"/> struct that have already been fixed.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fixedData\"/> parameter should be used to specify which fields in the\r\n            <paramref name=\"data\"/> struct have been preset. Fields not specified in the <paramref name=\"fixedData\"/>\r\n            will be captured from the environment if requested or fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.EnsureRepository(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\n            Ensure that the repository is set.\n            </summary>\n            <param name=\"repository\">the value for the repository</param>\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\">\r\n            <summary>\r\n            Write the rendered message to a TextWriter\r\n            </summary>\r\n            <param name=\"writer\">the writer to write the message to</param>\r\n            <remarks>\r\n            <para>\r\n            Unlike the <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property this method\r\n            does store the message data in the internal cache. Therefore \r\n            if called only once this method should be faster than the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property, however if the message is\r\n            to be accessed multiple times then the property will be more efficient.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            The data in this event must be fixed before it can be serialized.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> method must be called during the\r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method call if this event \r\n            is to be used outside that method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            <para>\r\n            Does a <see cref=\"F:log4net.Core.FixFlags.Partial\"/> fix of the data\r\n            in the logging event before returning the event data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <param name=\"fixFlags\">The set of data to ensure is fixed in the LoggingEventData</param>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionStrRep\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <b>Obsolete. Use <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> instead.</b>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionString\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData\">\r\n            <summary>\r\n            Fix instance fields that hold volatile data.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            Calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> is equivalent to\r\n            calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> passing the parameter\r\n            <c>false</c>.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more\r\n            information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\">\r\n            <summary>\r\n            Fixes instance fields that hold volatile data.\r\n            </summary>\r\n            <param name=\"fastButLoose\">Set to <c>true</c> to not fix data that takes a long time to fix.</param>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fastButLoose\"/> param controls the data that\r\n            is fixed. Some of the data that can be fixed takes a long time to \r\n            generate, therefore if you do not require those settings to be fixed\r\n            they can be ignored by setting the <paramref name=\"fastButLoose\"/> param\r\n            to <c>true</c>. This setting will ignore the <see cref=\"P:log4net.Core.LoggingEvent.LocationInformation\"/>\r\n            and <see cref=\"P:log4net.Core.LoggingEvent.UserName\"/> settings.\r\n            </para>\r\n            <para>\r\n            Set <paramref name=\"fastButLoose\"/> to <c>false</c> to ensure that all \r\n            settings are fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Fix the fields specified by the <see cref=\"T:log4net.Core.FixFlags\"/> parameter\r\n            </summary>\r\n            <param name=\"flags\">the fields to fix</param>\r\n            <remarks>\r\n            <para>\r\n            Only fields specified in the <paramref name=\"flags\"/> will be fixed.\r\n            Fields will not be fixed if they have previously been fixed.\r\n            It is not possible to 'unfix' a field.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\">\r\n            <summary>\r\n            Lookup a composite property in this event\r\n            </summary>\r\n            <param name=\"key\">the key for the property to lookup</param>\r\n            <returns>the value for the property</returns>\r\n            <remarks>\r\n            <para>\r\n            This event has composite properties that combine together properties from\r\n            several different contexts in the following order:\r\n            <list type=\"definition\">\r\n            \t<item>\r\n            \t\t<term>this events properties</term>\r\n            \t\t<description>\r\n            \t\tThis event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\tproperties are specific to this event only.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the thread properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the global properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetProperties\">\r\n            <summary>\r\n            Get all the composite properties in this event\r\n            </summary>\r\n            <returns>the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the properties</returns>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/> for details of the composite properties \r\n            stored by the event.\r\n            </para>\r\n            <para>\r\n            This method returns a single <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the\r\n            properties defined for this event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_data\">\r\n            <summary>\n            The internal logging event data.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_compositeProperties\">\r\n            <summary>\n            The internal logging event data.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_eventProperties\">\r\n            <summary>\n            The internal logging event data.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_callerStackBoundaryDeclaringType\">\r\n            <summary>\n            The fully qualified Type of the calling \n            logger class in the stack frame (i.e. the declaring type of the method).\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_message\">\r\n            <summary>\n            The application supplied message of logging event.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_thrownException\">\r\n            <summary>\n            The exception that was thrown.\n            </summary>\n            <remarks>\n            This is not serialized. The string representation\n            is serialized instead.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_repository\">\r\n            <summary>\n            The repository that generated the logging event\n            </summary>\n            <remarks>\n            This is not serialized.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_fixFlags\">\r\n            <summary>\n            The fix state for this event\n            </summary>\n            <remarks>\n            These flags indicate which fields have been fixed.\n            Not serialized.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_cacheUpdatable\">\r\n            <summary>\n            Indicated that the internal cache is updateable (ie not fixed)\n            </summary>\n            <remarks>\n            This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler\n            changes in the caching strategy.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.StartTime\">\r\n            <summary>\n            Gets the time when the current process started.\n            </summary>\n            <value>\n            This is the time when this process started.\n            </value>\n            <remarks>\n            <para>\n            The TimeStamp is stored in the local time zone for this computer.\n            </para>\n            <para>\n            Tries to get the start time for the current process.\n            Failing that it returns the time of the first call to\n            this property.\n            </para>\n            <para>\n            Note that AppDomains may be loaded and unloaded within the\n            same process without the process terminating and therefore\n            without the process start time being reset.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Level\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.TimeStamp\">\r\n            <summary>\n            Gets the time of the logging event.\n            </summary>\n            <value>\n            The time of the logging event.\n            </value>\n            <remarks>\n            <para>\n            The TimeStamp is stored in the local time zone for this computer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LoggerName\">\r\n            <summary>\n            Gets the name of the logger that logged the event.\n            </summary>\n            <value>\n            The name of the logger that logged the event.\n            </value>\n            <remarks>\n            <para>\n            Gets the name of the logger that logged the event.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LocationInformation\">\r\n            <summary>\r\n            Gets the location information for this logging event.\r\n            </summary>\r\n            <value>\r\n            The location information for this logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Core.LocationInfo\"/> class for more information on\r\n            supported frameworks and the different behavior in Debug and\r\n            Release builds.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.MessageObject\">\r\n            <summary>\r\n            Gets the message object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The message object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the message object used to initialize this event.\r\n            Note that this event may not have a valid message object.\r\n            If the event is serialized the message object will not \r\n            be transferred. To get the text of the message the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined message object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ExceptionObject\">\r\n            <summary>\r\n            Gets the exception object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The exception object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the exception object used to initialize this event.\r\n            Note that this event may not have a valid exception object.\r\n            If the event is serialized the exception object will not \r\n            be transferred. To get the text of the exception the\r\n            <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> method must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined exception object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.RenderedMessage\">\r\n            <summary>\r\n            Gets the message, rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <value>\r\n            The message rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ThreadName\">\r\n            <summary>\n            Gets the name of the current thread.  \n            </summary>\n            <value>\n            The name of the current thread, or the thread ID when \n            the name is not available.\n            </value>\n            <remarks>\n            <para>\n            The collected information is cached for future use.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.UserName\">\r\n            <summary>\n            Gets the name of the current user.\n            </summary>\n            <value>\n            The name of the current user, or <c>NOT AVAILABLE</c> when the \n            underlying runtime has no support for retrieving the name of the \n            current user.\n            </value>\n            <remarks>\n            <para>\n            Calls <c>WindowsIdentity.GetCurrent().Name</c> to get the name of\n            the current windows user.\n            </para>\n            <para>\n            To improve performance, we could cache the string representation of \n            the name, and reuse that as long as the identity stayed constant.  \n            Once the identity changed, we would need to re-assign and re-render \n            the string.\n            </para>\n            <para>\n            However, the <c>WindowsIdentity.GetCurrent()</c> call seems to \n            return different objects every time, so the current implementation \n            doesn't do this type of caching.\n            </para>\n            <para>\n            Timing for these operations:\n            </para>\n            <list type=\"table\">\n              <listheader>\n                <term>Method</term>\n                <description>Results</description>\n              </listheader>\n              <item>\n                <term><c>WindowsIdentity.GetCurrent()</c></term>\n                <description>10000 loops, 00:00:00.2031250 seconds</description>\n              </item>\n              <item>\n                <term><c>WindowsIdentity.GetCurrent().Name</c></term>\n                <description>10000 loops, 00:00:08.0468750 seconds</description>\n              </item>\n            </list>\n            <para>\n            This means we could speed things up almost 40 times by caching the \n            value of the <c>WindowsIdentity.GetCurrent().Name</c> property, since \n            this takes (8.04-0.20) = 7.84375 seconds.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Identity\">\r\n            <summary>\n            Gets the identity of the current thread principal.\n            </summary>\n            <value>\n            The string name of the identity of the current thread principal.\n            </value>\n            <remarks>\n            <para>\n            Calls <c>System.Threading.Thread.CurrentPrincipal.Identity.Name</c> to get\n            the name of the current thread principal.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Domain\">\r\n            <summary>\n            Gets the AppDomain friendly name.\n            </summary>\n            <value>\n            The AppDomain friendly name.\n            </value>\n            <remarks>\n            <para>\n            Gets the AppDomain friendly name.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Properties\">\r\n            <summary>\r\n            Additional event specific properties.\r\n            </summary>\r\n            <value>\r\n            Additional event specific properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A logger or an appender may attach additional\r\n            properties to specific events. These properties\r\n            have a string key and an object value.\r\n            </para>\r\n            <para>\r\n            This property is for events that have been added directly to\r\n            this event. The aggregate properties (which include these\r\n            event properties) can be retrieved using <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/>\r\n            and <see cref=\"M:log4net.Core.LoggingEvent.GetProperties\"/>.\r\n            </para>\r\n            <para>\r\n            Once the properties have been fixed <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> this property\r\n            returns the combined cached properties. This ensures that updates to\r\n            this property are always reflected in the underlying storage. When\r\n            returning the combined properties there may be more keys in the\r\n            Dictionary than expected.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Fix\">\r\n            <summary>\n            The fixed fields in this event\n            </summary>\n            <value>\n            The set of fields that are fixed in this event\n            </value>\n            <remarks>\n            <para>\n            Fields will not be fixed if they have previously been fixed.\n            It is not possible to 'unfix' a field.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Core.LogImpl\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.ILog\"/> wrapper interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This implementation of the <see cref=\"T:log4net.ILog\"/> interface\r\n            forwards to the <see cref=\"T:log4net.Core.ILogger\"/> held by the base class.\r\n            </para>\r\n            <para>\r\n            This logger has methods to allow the caller to log at the following\r\n            levels:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <item>\r\n                <term>DEBUG</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>DEBUG</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Debug\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>INFO</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>INFO</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Info\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsInfoEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>WARN</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>WARN</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Warn\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsWarnEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>ERROR</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>ERROR</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Error\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsErrorEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>FATAL</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>FATAL</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Fatal\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsFatalEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n            </list>\r\n            <para>\r\n            The values for these levels and their semantic meanings can be changed by \r\n            configuring the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ILog\">\r\n            <summary>\r\n            The ILog interface is use by application to log messages into\r\n            the log4net framework.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use the <see cref=\"T:log4net.LogManager\"/> to obtain logger instances\r\n            that implement this interface. The <see cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            static method is used to get logger instances.\r\n            </para>\r\n            <para>\r\n            This class contains methods for logging at different levels and also\r\n            has properties for determining if those logging levels are\r\n            enabled in the current configuration.\r\n            </para>\r\n            <para>\r\n            This interface can be implemented in different ways. This documentation\r\n            specifies reasonable behavior that a caller can expect from the actual\r\n            implementation, however different implementations reserve the right to\r\n            do things differently.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <seealso cref=\"T:log4net.LogManager\"/>\r\n            <seealso cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Debug\"/> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Info\"/> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Warn\"/> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Error\"/> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Fatal\"/> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsDebugEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Debug\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This function is intended to lessen the computational cost of\r\n            disabled log debug statements.\r\n            </para>\r\n            <para> For some ILog interface <c>log</c>, when you write:</para>\r\n            <code lang=\"C#\">\r\n            log.Debug(\"This is entry number: \" + i );\r\n            </code>\r\n            <para>\r\n            You incur the cost constructing the message, string construction and concatenation in\r\n            this case, regardless of whether the message is logged or not.\r\n            </para>\r\n            <para>\r\n            If you are worried about speed (who isn't), then you should write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (log.IsDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way you will not incur the cost of parameter\r\n            construction if debugging is disabled for <c>log</c>. On\r\n            the other hand, if the <c>log</c> is debug enabled, you\r\n            will incur the cost of evaluating whether the logger is debug\r\n            enabled twice. Once in <see cref=\"P:log4net.ILog.IsDebugEnabled\"/> and once in\r\n            the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/>.  This is an insignificant overhead\r\n            since evaluating a logger takes about 1% of the time it\r\n            takes to actually log. This is the preferred style of logging.\r\n            </para>\r\n            <para>Alternatively if your logger is available statically then the is debug\r\n            enabled state can be stored in a static variable like this:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            private static readonly bool isDebugEnabled = log.IsDebugEnabled;\r\n            </code>\r\n            <para>\r\n            Then when you come to log you can write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (isDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way the debug enabled state is only queried once\r\n            when the class is loaded. Using a <c>private static readonly</c>\r\n            variable is the most efficient because it is a run time constant\r\n            and can be heavily optimized by the JIT compiler.\r\n            </para>\r\n            <para>\r\n            Of course if you use a static readonly variable to\r\n            hold the enabled state of the logger then you cannot\r\n            change the enabled state at runtime to vary the logging\r\n            that is produced. You have to decide if you need absolute\r\n            speed or runtime flexibility.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Info\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Warn\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Error\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Fatal\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\n            Construct a new wrapper for the specified logger.\n            </summary>\n            <param name=\"logger\">The logger to wrap.</param>\n            <remarks>\n            <para>\n            Construct a new wrapper for the specified logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ReloadLevels(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\n            Virtual method called when the configuration of the repository changes\n            </summary>\n            <param name=\"repository\">the repository holding the levels</param>\n            <remarks>\n            <para>\n            Virtual method called when the configuration of the repository changes\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>DEBUG</c> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>DEBUG</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> passed\r\n            as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>INFO</c> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"message\">the message object to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>WARN</c> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>WARN</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>ERROR</c> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>ERROR</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>FATAL</c> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>FATAL</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.LoggerRepositoryConfigurationChanged(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Event handler for the <see cref=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\"/> event\r\n            </summary>\r\n            <param name=\"sender\">the repository</param>\r\n            <param name=\"e\">Empty</param>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LogImpl.ThisDeclaringType\">\r\n            <summary>\n            The fully qualified name of this declaring type not the type of any subclass.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsDebugEnabled\">\r\n            <summary>\n            Checks if this logger is enabled for the <c>DEBUG</c>\n            level.\n            </summary>\n            <value>\n            <c>true</c> if this logger is enabled for <c>DEBUG</c> events,\n            <c>false</c> otherwise.\n            </value>\n            <remarks>\n            <para>\n            This function is intended to lessen the computational cost of\n            disabled log debug statements.\n            </para>\n            <para>\n            For some <c>log</c> Logger object, when you write:\n            </para>\n            <code lang=\"C#\">\n            log.Debug(\"This is entry number: \" + i );\n            </code>\n            <para>\n            You incur the cost constructing the message, concatenation in\n            this case, regardless of whether the message is logged or not.\n            </para>\n            <para>\n            If you are worried about speed, then you should write:\n            </para>\n            <code lang=\"C#\">\n            if (log.IsDebugEnabled())\n            { \n             log.Debug(\"This is entry number: \" + i );\n            }\n            </code>\n            <para>\n            This way you will not incur the cost of parameter\n            construction if debugging is disabled for <c>log</c>. On\n            the other hand, if the <c>log</c> is debug enabled, you\n            will incur the cost of evaluating whether the logger is debug\n            enabled twice. Once in <c>IsDebugEnabled</c> and once in\n            the <c>Debug</c>.  This is an insignificant overhead\n            since evaluating a logger takes about 1% of the time it\n            takes to actually log.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>INFO</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>INFO</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>WARN</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>WARN</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>ERROR</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>ERROR</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>FATAL</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>FATAL</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContext\">\r\n            <summary>\n            A SecurityContext used by log4net when interacting with protected resources\n            </summary>\n            <remarks>\n            <para>\n            A SecurityContext used by log4net when interacting with protected resources\n            for example with operating system services. This can be used to impersonate\n            a principal that has been granted privileges on the system resources.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate this SecurityContext\r\n            </summary>\r\n            <param name=\"state\">State supplied by the caller</param>\r\n            <returns>An <see cref=\"T:System.IDisposable\"/> instance that will\r\n            revoke the impersonation of this SecurityContext, or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Impersonate this security context. Further calls on the current\r\n            thread should now be made in the security context provided\r\n            by this object. When the <see cref=\"T:System.IDisposable\"/> result \r\n            <see cref=\"M:System.IDisposable.Dispose\"/> method is called the security\r\n            context of the thread should be reverted to the state it was in\r\n            before <see cref=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\"/> was called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContextProvider\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.SecurityContextProvider\"/> providers default <see cref=\"T:log4net.Core.SecurityContext\"/> instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A configured component that interacts with potentially protected system\r\n            resources uses a <see cref=\"T:log4net.Core.SecurityContext\"/> to provide the elevated\r\n            privileges required. If the <see cref=\"T:log4net.Core.SecurityContext\"/> object has\r\n            been not been explicitly provided to the component then the component\r\n            will request one from this <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </para>\r\n            <para>\r\n            By default the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is\r\n            an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/> which returns only\r\n            <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects. This is a reasonable default\r\n            where the privileges required are not know by the system.\r\n            </para>\r\n            <para>\r\n            This default behavior can be overridden by subclassing the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            and overriding the <see cref=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\"/> method to return\r\n            the desired <see cref=\"T:log4net.Core.SecurityContext\"/> objects. The default provider\r\n            can be replaced by programmatically setting the value of the \r\n            <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> property.\r\n            </para>\r\n            <para>\r\n            An alternative is to use the <c>log4net.Config.SecurityContextProviderAttribute</c>\r\n            This attribute can be applied to an assembly in the same way as the\r\n            <c>log4net.Config.XmlConfiguratorAttribute\"</c>. The attribute takes\r\n            the type to use as the <see cref=\"T:log4net.Core.SecurityContextProvider\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.SecurityContextProvider.s_defaultProvider\">\r\n            <summary>\n            The default provider\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.#ctor\">\r\n            <summary>\n            Protected default constructor to allow subclassing\n            </summary>\n            <remarks>\n            <para>\n            Protected default constructor to allow subclassing\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\">\r\n            <summary>\r\n            Create a SecurityContext for a consumer\r\n            </summary>\r\n            <param name=\"consumer\">The consumer requesting the SecurityContext</param>\r\n            <returns>An impersonation context</returns>\r\n            <remarks>\r\n            <para>\r\n            The default implementation is to return a <see cref=\"T:log4net.Util.NullSecurityContext\"/>.\r\n            </para>\r\n            <para>\r\n            Subclasses should override this method to provide their own\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\">\r\n            <summary>\r\n            Gets or sets the default SecurityContextProvider\r\n            </summary>\r\n            <value>\r\n            The default SecurityContextProvider\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default provider is used by configured components that\r\n            require a <see cref=\"T:log4net.Core.SecurityContext\"/> and have not had one\r\n            given to them.\r\n            </para>\r\n            <para>\r\n            By default this is an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that returns <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects.\r\n            </para>\r\n            <para>\r\n            The default provider can be set programmatically by setting\r\n            the value of this property to a sub class of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that has the desired behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.TimeEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers after specified number of seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n            <author>Robert Sevcik</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\">\r\n            <summary>\n            The default time threshold for triggering in seconds. Zero means it won't trigger at all.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_interval\">\r\n            <summary>\n            The time threshold for triggering in seconds. Zero means it won't trigger at all.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_lasttime\">\r\n            <summary>\n            The time of last check. This gets updated when the object is created and when the evaluator triggers.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor(System.Int32)\">\r\n            <summary>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </summary>\r\n            <param name=\"interval\">\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.TimeEvaluator.Interval\">\r\n            <summary>\r\n            The time threshold in seconds to trigger after\r\n            </summary>\r\n            <value>\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperCreationHandler\">\r\n            <summary>\r\n            Delegate used to handle creation of new wrappers.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle creation of new wrappers. This delegate\r\n            is called from the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method to construct the wrapper for the specified logger.\r\n            </para>\r\n            <para>\r\n            The delegate to use is supplied to the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperMap\">\r\n            <summary>\r\n            Maps between logger objects and wrapper objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class maintains a mapping between <see cref=\"T:log4net.Core.ILogger\"/> objects and\r\n            <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects. Use the <see cref=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\"/> method to \r\n            lookup the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> for the specified <see cref=\"T:log4net.Core.ILogger\"/>.\r\n            </para>\r\n            <para>\r\n            New wrapper instances are created by the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method. The default behavior is for this method to delegate construction\r\n            of the wrapper to the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/> delegate supplied\r\n            to the constructor. This allows specialization of the behavior without\r\n            requiring subclassing of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.#ctor(log4net.Core.WrapperCreationHandler)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            </summary>\r\n            <param name=\"createWrapperHandler\">The handler to use to create the wrapper objects.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/> class with \r\n            the specified handler to create the wrapper objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Gets the wrapper object for the specified logger.\r\n            </summary>\r\n            <returns>The wrapper object for the specified logger</returns>\r\n            <remarks>\r\n            <para>\r\n            If the logger is null then the corresponding wrapper is null.\r\n            </para>\r\n            <para>\r\n            Looks up the wrapper it it has previously been requested and\r\n            returns it. If the wrapper has never been requested before then\r\n            the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/> virtual method is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Creates the wrapper object for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <returns>The wrapper object for the logger.</returns>\r\n            <remarks>\r\n            <para>\r\n            This implementation uses the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/>\r\n            passed to the constructor to create the wrapper. This method\r\n            can be overridden in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.RepositoryShutdown(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Called when a monitored repository shutdown event is received.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called when a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this\r\n            <see cref=\"T:log4net.Core.WrapperMap\"/> is holding loggers for has signaled its shutdown\r\n            event <see cref=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\"/>. The default\r\n            behavior of this method is to release the references to the loggers\r\n            and their wrappers generated for this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.ILoggerRepository_Shutdown(System.Object,System.EventArgs)\">\r\n            <summary>\n            Event handler for repository shutdown event.\n            </summary>\n            <param name=\"sender\">The sender of the event.</param>\n            <param name=\"e\">The event args.</param>\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_repositories\">\r\n            <summary>\n            Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_createWrapperHandler\">\r\n            <summary>\n            The handler to use to create the extension wrapper objects.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_shutdownHandler\">\r\n            <summary>\n            Internal reference to the delegate used to register for repository shutdown events.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Core.WrapperMap.Repositories\">\r\n            <summary>\r\n            Gets the map of logger repositories.\r\n            </summary>\r\n            <value>\r\n            Map of logger repositories.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the hashtable that is keyed on <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The\r\n            values are hashtables keyed on <see cref=\"T:log4net.Core.ILogger\"/> with the\r\n            value being the corresponding <see cref=\"T:log4net.Core.ILoggerWrapper\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.IDateFormatter\">\r\n            <summary>\r\n            Render a <see cref=\"T:System.DateTime\"/> as a string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface to abstract the rendering of a <see cref=\"T:System.DateTime\"/>\r\n            instance into a string.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/> method is used to render the\r\n            date to a text writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the specified date as a string.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:System.DateTime\"/> as a string and write it\r\n            to the <see cref=\"T:System.IO.TextWriter\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.AbsoluteTimeDateFormat\">\r\n            <summary>\n            String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is <b>ABSOLUTE</b>.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.DateAndTimeDateFormat\">\r\n            <summary>\n            String constant used to specify DateTimeDateFormat in layouts.  Current value is <b>DATE</b>.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.Iso8601TimeDateFormat\">\r\n            <summary>\n            String constant used to specify ISO8601DateFormat in layouts. Current value is <b>ISO8601</b>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\n            Renders the date into a string. Format is <c>\"HH:mm:ss\"</c>.\n            </summary>\n            <param name=\"dateToFormat\">The date to render into a string.</param>\n            <param name=\"buffer\">The string builder to write to.</param>\n            <remarks>\n            <para>\n            Subclasses should override this method to render the date\n            into a string using a precision up to the second. This method\n            will be called at most once per second and the result will be\n            reused if it is needed again during the same second.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Renders the date into a string. Format is \"HH:mm:ss,fff\".\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to render into a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> method to generate the\r\n            time string up to the seconds and then appends the current\r\n            milliseconds. The results from <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> are\r\n            cached and <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> is called at most once\r\n            per second.\r\n            </para>\r\n            <para>\r\n            Sub classes should override <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/>\r\n            rather than <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeToTheSecond\">\r\n            <summary>\n            Last stored time with precision up to the second.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeBuf\">\r\n            <summary>\n            Last stored time with precision up to the second, formatted\n            as a string.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeString\">\r\n            <summary>\n            Last stored time with precision up to the second, formatted\n            as a string.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.DateTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"dd MMM yyyy HH:mm:ss,fff\"</c>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format \r\n            <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, \r\n            <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Angelika Schnagl</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\n            Formats the date without the milliseconds part\n            </summary>\n            <param name=\"dateToFormat\">The date to format.</param>\n            <param name=\"buffer\">The string builder to write to.</param>\n            <remarks>\n            <para>\n            Formats a DateTime in the format <c>\"dd MMM yyyy HH:mm:ss\"</c>\n            for example, <c>\"06 Nov 1994 15:49:37\"</c>.\n            </para>\n            <para>\n            The base class will append the <c>\",fff\"</c> milliseconds section.\n            This method will only be called at most once per second.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.DateTimeDateFormatter.m_dateTimeFormatInfo\">\r\n            <summary>\n            The format info for the invariant culture.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.Iso8601DateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> as <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> specified as a string: <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\n            Formats the date without the milliseconds part\n            </summary>\n            <param name=\"dateToFormat\">The date to format.</param>\n            <param name=\"buffer\">The string builder to write to.</param>\n            <remarks>\n            <para>\n            Formats the date specified as a string: <c>\"yyyy-MM-dd HH:mm:ss\"</c>.\n            </para>\n            <para>\n            The base class will append the <c>\",fff\"</c> milliseconds section.\n            This method will only be called at most once per second.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.SimpleDateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"T:System.DateTime\"/> <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"format\">The format string.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> class \r\n            with the specified format string.\r\n            </para>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the date using <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to convert to a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the date format string supplied to the constructor to call\r\n            the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method to format the date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.SimpleDateFormatter.m_formatString\">\r\n            <summary>\r\n            The format string used to format the <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.DenyAllFilter\">\r\n            <summary>\r\n            This filter drops all <see cref=\"T:log4net.Core.LoggingEvent\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can add this filter to the end of a filter chain to\r\n            switch from the default \"accept all unless instructed otherwise\"\r\n            filtering behavior to a \"deny all unless instructed otherwise\"\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterSkeleton\">\r\n            <summary>\r\n            Subclass this type to implement customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should extend this class to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.IFilter\">\r\n            <summary>\r\n            Implement this interface to provide customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should implement this interface to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the logging event should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The LoggingEvent to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.IFilter.Next\">\r\n            <summary>\n            Property to get and set the next filter\n            </summary>\n            <value>\n            The next filter in the chain\n            </value>\n            <remarks>\n            <para>\n            Filters are typically composed into chains. This property allows the next filter in \n            the chain to be accessed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterSkeleton.m_next\">\r\n            <summary>\r\n            Points to the next filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Filter.FilterSkeleton.Next\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the filter with the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Typically filter's options become active immediately on set, \r\n            however this method must still be called. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the <see cref=\"T:log4net.Core.LoggingEvent\"/> should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            <para>\r\n            This method is marked <c>abstract</c> and must be implemented\r\n            in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.FilterSkeleton.Next\">\r\n            <summary>\n            Property to get and set the next filter\n            </summary>\n            <value>\n            The next filter in the chain\n            </value>\n            <remarks>\n            <para>\n            Filters are typically composed into chains. This property allows the next filter in \n            the chain to be accessed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Always returns the integer constant <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">the LoggingEvent to filter</param>\r\n            <returns>Always returns <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Ignores the event being logged and just returns\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This can be used to change the default filter\r\n            chain behavior from <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> to <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This filter\r\n            should only be used as the last filter in the chain\r\n            as any further filters will be ignored!\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterDecision\">\r\n            <summary>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Deny\">\r\n            <summary>\n            The log event must be dropped immediately without \n            consulting with the remaining filters, if any, in the chain.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Neutral\">\r\n            <summary>\n            This filter is neutral with respect to the log event. \n            The remaining filters, if any, should be consulted for a final decision.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Accept\">\r\n            <summary>\n            The log event must be logged immediately without \n            consulting with the remaining filters, if any, in the chain.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelMatchFilter\">\r\n            <summary>\r\n            This is a very simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits two options <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> and\r\n            <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If there is an exact match between the value\r\n            of the <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> option and the <see cref=\"T:log4net.Core.Level\"/> of the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the <see cref=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> option value is set\r\n            to <c>true</c>, if it is <c>false</c> then \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            flag to indicate if the filter should <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> on a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_levelToMatch\">\r\n            <summary>\r\n            the <see cref=\"T:log4net.Core.Level\"/> to match against\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Tests if the <see cref=\"T:log4net.Core.Level\"/> of the logging event matches that of the filter\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to filter</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the event matches the level of the\r\n            filter then the result of the function depends on the\r\n            value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If it is true then\r\n            the function will return <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>, it it is false then it\r\n            will return <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelRangeFilter\">\r\n            <summary>\r\n            This is a simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits three options <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            that determine the range of priorities that are matched, and\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>. If there is a match between the range\r\n            of priorities and the <see cref=\"T:log4net.Core.Level\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the \r\n            <see cref=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in case the <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> \r\n            option value is set to <c>true</c>, if it is <c>false</c>\r\n            then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If there is no match, <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when matching a <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMin\">\r\n            <summary>\r\n            the minimum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMax\">\r\n            <summary>\r\n            the maximum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if the event should be logged.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the logging event to check</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the logging event is outside the range\r\n            matched by this filter then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            is returned. If the <see cref=\"T:log4net.Core.Level\"/> is matched then the value of\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> is checked. If it is true then\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMin\">\r\n            <summary>\r\n            Set the minimum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The minimum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMax\">\r\n            <summary>\r\n            Sets the maximum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The maximum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LoggerMatchFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the event's logger name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The works very similar to the <see cref=\"T:log4net.Filter.LevelMatchFilter\"/>. It admits two \r\n            options <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> and <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>. If the \r\n            <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/> starts \r\n            with the value of the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> option, then the \r\n            <see cref=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> option value is set to <c>true</c>, \r\n            if it is <c>false</c> then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_acceptOnMatch\">\r\n            <summary>\n            Flag to indicate the behavior when we have a match\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_loggerToMatch\">\r\n            <summary>\n            The logger name string to substring match against the event\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> equals the beginning of \r\n            the incoming <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> (<see cref=\"M:System.String.StartsWith(System.String)\"/>)\r\n            then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This filter will attempt to match this value against logger name in\r\n            the following way. The match will be done against the beginning of the\r\n            logger name (using <see cref=\"M:System.String.StartsWith(System.String)\"/>). The match is\r\n            case sensitive. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.MdcFilter\">\r\n            <summary>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with layered properties the\r\n            <see cref=\"T:log4net.Filter.PropertyFilter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.PropertyFilter\">\r\n            <summary>\n            Simple filter to match a string an event property\n            </summary>\n            <remarks>\n            <para>\n            Simple filter to match a string in the value for a\n            specific event property\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"T:log4net.Filter.StringMatchFilter\">\r\n            <summary>\n            Simple filter to match a string in the rendered message\n            </summary>\n            <remarks>\n            <para>\n            Simple filter to match a string in the rendered message\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_acceptOnMatch\">\r\n            <summary>\n            Flag to indicate the behavior when we have a match\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringToMatch\">\r\n            <summary>\n            The string to substring match against the message\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringRegexToMatch\">\r\n            <summary>\n            A string regex to match\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_regexToMatch\">\r\n            <summary>\n            A regex object to match (generated from m_stringRegexToMatch)\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\">\r\n            <summary>\r\n            Initialize and precompile the Regex if required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the message then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.StringToMatch\">\r\n            <summary>\r\n            Sets the static string to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The string that will be substring matched against\r\n            the rendered message. If the message contains this\r\n            string then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\">\r\n            <summary>\r\n            Sets the regular expression to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The regular expression pattern that will be matched against\r\n            the rendered message. If the message matches this\r\n            pattern then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.PropertyFilter.m_key\">\r\n            <summary>\n            The key to use to lookup the string from the event properties\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The event property for the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> is matched against \r\n            the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the property value then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.PropertyFilter.Key\">\r\n            <summary>\r\n            The key to lookup in the event properties and then match against.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The key name to use to lookup in the properties map of the\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>. The match will be performed against \r\n            the value of this property if it exists.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.NdcFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with named stacks stored in the\r\n            properties collections the <see cref=\"T:log4net.Filter.PropertyFilter\"/> should \r\n            be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.NdcFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Sets the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> to <c>\"NDC\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AppDomainPatternConverter\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PatternLayoutConverter\">\r\n            <summary>\n            Abstract class that provides the formatting functionality that \n            derived classes need.\n            </summary>\n            <remarks>\n            Conversion specifiers in a conversion patterns are parsed to\n            individual PatternConverters. Each of which is responsible for\n            converting a logging event in a converter specific manner.\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternConverter\">\r\n            <summary>\n            Abstract class that provides the formatting functionality that \n            derived classes need.\n            </summary>\n            <remarks>\n            <para>\n            Conversion specifiers in a conversion patterns are parsed to\n            individual PatternConverters. Each of which is responsible for\n            converting a logging event in a converter specific manner.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferSize\">\r\n            <summary>\n            Initial buffer size\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferMaxCapacity\">\r\n            <summary>\n            Maximum buffer size before it is recycled\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.#ctor\">\r\n            <summary>\r\n            Protected constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternConverter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Evaluate this pattern converter and write the output to a writer.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the appropriate way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\n            Set the next pattern converter in the chains\n            </summary>\n            <param name=\"patternConverter\">the pattern converter that should follow this converter in the chain</param>\n            <returns>the next converter</returns>\n            <remarks>\n            <para>\n            The PatternConverter can merge with its neighbor during this method (or a sub class).\n            Therefore the return value may or may not be the value of the argument passed in.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the pattern converter to the writer with appropriate formatting\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            This method calls <see cref=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\"/> to allow the subclass to perform\r\n            appropriate conversion of the pattern converter. If formatting options have\r\n            been specified via the <see cref=\"P:log4net.Util.PatternConverter.FormattingInfo\"/> then this method will\r\n            apply those formattings before writing the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SpacePad(System.IO.TextWriter,System.Int32)\">\r\n            <summary>\r\n            Fast space padding method.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> to which the spaces will be appended.</param>\r\n            <param name=\"length\">The number of spaces to be padded.</param>\r\n            <remarks>\r\n            <para>\r\n            Fast space padding method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.m_option\">\r\n            <summary>\n            The option string to the converter\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionary)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionary\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionaryEnumerator)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteObject(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Object)\">\r\n            <summary>\r\n            Write an object to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the Object to a writer. If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the object to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Next\">\r\n            <summary>\n            Get the next pattern converter in the chain\n            </summary>\n            <value>\n            the next pattern converter in the chain\n            </value>\n            <remarks>\n            <para>\n            Get the next pattern converter in the chain\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.FormattingInfo\">\r\n            <summary>\n            Gets or sets the formatting info for this converter\n            </summary>\n            <value>\n            The formatting info for this converter\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the formatting info for this converter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Option\">\r\n            <summary>\n            Gets or sets the option value for this converter\n            </summary>\n            <summary>\n            The option for this converter\n            </summary>\n            <remarks>\n            <para>\n            Gets or sets the option value for this converter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Properties\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.Pattern.PatternLayoutConverter\"/> class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.PatternLayoutConverter.m_ignoresException\">\r\n            <summary>\n            Flag indicating if this converter handles exceptions\n            </summary>\n            <remarks>\n            <c>false</c> if this converter handles exceptions\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.Pattern.PatternLayoutConverter.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this converter handles the logging event exception\r\n            </summary>\r\n            <value><c>false</c> if this converter handles the logging event exception</value>\r\n            <remarks>\r\n            <para>\r\n            If this converter handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then this property should be set to\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the property should be set to <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this converter does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AppDomainPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetCachePatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetPatternLayoutConverter\">\r\n            <summary>\r\n            Abstract class that provides access to the current HttpContext (<see cref=\"P:System.Web.HttpContext.Current\"/>) that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            This class handles the case when HttpContext.Current is null by writing\r\n            <see cref=\"P:log4net.Util.SystemInfo.NotAvailableText\"/> to the writer.\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetPatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetCachePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Cache will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetContextPatternConverter\">\r\n            <summary>\r\n            Converter for items in the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetContextPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net HttpContext item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetRequestPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetRequestPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetSessionPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetSessionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Session will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.DatePatternConverter\">\r\n            <summary>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Render the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,yyyy\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter pattern based on the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the DatePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ExceptionPatternConverter\">\r\n            <summary>\n            Write the exception text to the output\n            </summary>\n            <remarks>\n            <para>\n            If an exception object is stored in the logging event\n            it will be rendered into the pattern output with a\n            trailing newline.\n            </para>\n            <para>\n            If there is no exception then nothing will be output\n            and no trailing newline will be appended.\n            It is typical to put a newline before the exception\n            and to have the exception as the last data in the pattern.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the exception text to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            If an exception object is stored in the logging event\r\n            it will be rendered into the pattern output with a\r\n            trailing newline.\r\n            </para>\r\n            <para>\r\n            If there is no exception or the exception property specified\r\n            by the Option value does not exist then nothing will be output\r\n            and no trailing newline will be appended.\r\n            It is typical to put a newline before the exception\r\n            and to have the exception as the last data in the pattern.\r\n            </para>\r\n            <para>\r\n            Recognized values for the Option parameter are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>Message</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>Source</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>StackTrace</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>TargetSite</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>HelpLink</description>\r\n            \t</item>\t\t\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FileLocationPatternConverter\">\r\n            <summary>\r\n            Writes the caller location file name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FileLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location file name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FullLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FullLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.IdentityPatternConverter\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.IdentityPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <paramref name=\"loggingEvent\"/> \r\n            <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LevelPatternConverter\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the display name of the event <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LevelPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.Level.DisplayName\"/> of the <paramref name=\"loggingEvent\"/> <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LineLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LineLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LoggerPatternConverter\">\r\n            <summary>\r\n            Converter for logger name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NamedPatternConverter\">\r\n            <summary>\r\n            Converter to output and truncate <c>'.'</c> separated strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This abstract class supports truncating a <c>'.'</c> separated string\r\n            to show a specified number of elements from the right hand side.\r\n            This is used to truncate class names that are fully qualified.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> method to\r\n            return the fully qualified string.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Get the fully qualified string data\n            </summary>\n            <param name=\"loggingEvent\">the event being logged</param>\n            <returns>the fully qualified name</returns>\n            <remarks>\n            <para>\n            Overridden by subclasses to get the fully qualified name before the\n            precision is applied to it.\n            </para>\n            <para>\n            Return the fully qualified <c>'.'</c> (dot/period) separated string.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            Render the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> to the precision\r\n            specified by the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.NamedPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the NamedPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LoggerPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the logger\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified logger name</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MessagePatternConverter\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MessagePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MethodLocationPatternConverter\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MethodLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NdcPatternConverter\">\r\n            <summary>\r\n            Converter to include event NDC\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the value of the event property named <c>NDC</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NdcPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event NDC to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            As the thread context stacks are now stored in named event properties\r\n            this converter simply looks up the value of the <c>NDC</c> property.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PropertyPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.RelativeTimePatternConverter\">\r\n            <summary>\n            Converter to output the relative time of the event\n            </summary>\n            <remarks>\n            <para>\n            Converter to output the time of the event relative to the start of the program.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the relative time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the relative time of the event in milliseconds.\r\n            That is the number of milliseconds between the event <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>\r\n            and the <see cref=\"P:log4net.Core.LoggingEvent.StartTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.TimeDifferenceInMillis(System.DateTime,System.DateTime)\">\r\n            <summary>\n            Helper method to get the time difference between two DateTime objects\n            </summary>\n            <param name=\"start\">start time (in the current local time zone)</param>\n            <param name=\"end\">end time (in the current local time zone)</param>\n            <returns>the time difference in milliseconds</returns>\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTraceDetailPatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            </para>\r\n            </remarks>\r\n            <author>Adam Davies</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTracePatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            </para>\r\n            </remarks>\r\n            <author>Michael Cromwell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the strack frames to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.GetMethodInformation(System.Reflection.MethodBase)\">\r\n            <summary>\n            Returns the Name of the method\n            </summary>\n            <param name=\"method\"></param>\n            <remarks>This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter</remarks>\n            <returns>string</returns>\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTracePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the StackTracePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTraceDetailPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the StackTraceDetailPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ThreadPatternConverter\">\r\n            <summary>\r\n            Converter to include event thread name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ThreadPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the ThreadName to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.TypeNamePatternConverter\">\r\n            <summary>\r\n            Pattern converter for the class name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.TypeNamePatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the class\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified type name for the caller location</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UserNamePatternConverter\">\r\n            <summary>\n            Converter to include event user name\n            </summary>\n            <author>Douglas de la Torre</author>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UserNamePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            Uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> \r\n            in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UtcDatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone, this is converted\r\n            to Universal time before it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.UtcDatePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the UtcDatePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.ExceptionLayout\">\r\n            <summary>\r\n            A Layout that renders only the Exception text from the logging event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A Layout that renders only the Exception text from the logging event.\r\n            </para>\r\n            <para>\r\n            This Layout should only be used with appenders that utilize multiple\r\n            layouts (e.g. <see cref=\"T:log4net.Appender.AdoNetAppender\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.LayoutSkeleton\">\r\n            <summary>\r\n            Extend this abstract class to create your own log layout format.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the base implementation of the <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            interface. Most layout objects should extend this class.\r\n            </para>\r\n            </remarks>\r\n            <remarks>\r\n            <note type=\"inheritinfo\">\r\n            <para>\r\n            Subclasses must implement the <see cref=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>\r\n            method.\r\n            </para>\r\n            <para>\r\n            Subclasses should set the <see cref=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\"/> in their default\r\n            constructor.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.ILayout\">\r\n            <summary>\r\n            Interface implemented by layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An <see cref=\"T:log4net.Layout.ILayout\"/> object is used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            as text. The <see cref=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> method is called by an\r\n            appender to transform the <see cref=\"T:log4net.Core.LoggingEvent\"/> into a string.\r\n            </para>\r\n            <para>\r\n            The layout can also supply <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            text that is appender before any events and after all the events respectively.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called by an appender to format\r\n            the <paramref name=\"loggingEvent\"/> as text and output to a writer.\r\n            </para>\r\n            <para>\r\n            If the caller does not have a <see cref=\"T:System.IO.TextWriter\"/> and prefers the\r\n            event to be formatted as a <see cref=\"T:System.String\"/> then the following\r\n            code can be used to format the event into a <see cref=\"T:System.IO.StringWriter\"/>.\r\n            </para>\r\n            <code lang=\"C#\">\r\n            StringWriter writer = new StringWriter();\r\n            Layout.Format(writer, loggingEvent);\r\n            string formattedEvent = writer.ToString();\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.ContentType\">\r\n            <summary>\n            The content type output by this layout. \n            </summary>\n            <value>The content type</value>\n            <remarks>\n            <para>\n            The content type output by this layout.\n            </para>\n            <para>\n            This is a MIME type e.g. <c>\"text/plain\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Header\">\r\n            <summary>\n            The header for the layout format.\n            </summary>\n            <value>the layout header</value>\n            <remarks>\n            <para>\n            The Header text will be appended before any logging events\n            are formatted and appended.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Footer\">\r\n            <summary>\n            The footer for the layout format.\n            </summary>\n            <value>the layout footer</value>\n            <remarks>\n            <para>\n            The Footer text will be appended after all the logging events\n            have been formatted and appended.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handle exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_header\">\r\n            <summary>\r\n            The header text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Header\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_footer\">\r\n            <summary>\r\n            The footer text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Footer\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_ignoresException\">\r\n            <summary>\n            Flag indicating if this layout handles exceptions\n            </summary>\n            <remarks>\n            <para>\n            <c>false</c> if this layout handles exceptions\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.#ctor\">\r\n            <summary>\n            Empty default constructor\n            </summary>\n            <remarks>\n            <para>\n            Empty default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This method must be implemented by the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Implement this method to create your own layout format.\n            </summary>\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\n            <param name=\"loggingEvent\">The event to format</param>\n            <remarks>\n            <para>\n            This method is called by an appender to format\n            the <paramref name=\"loggingEvent\"/> as text.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Convenience method for easily formatting the logging event into a string variable.\n            </summary>\n            <param name=\"loggingEvent\"></param>\n            <remarks>\n            Creates a new StringWriter instance to store the formatted logging event.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.ContentType\">\r\n            <summary>\n            The content type output by this layout. \n            </summary>\n            <value>The content type is <c>\"text/plain\"</c></value>\n            <remarks>\n            <para>\n            The content type output by this layout.\n            </para>\n            <para>\n            This base class uses the value <c>\"text/plain\"</c>.\n            To change this value a subclass must override this\n            property.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Header\">\r\n            <summary>\n            The header for the layout format.\n            </summary>\n            <value>the layout header</value>\n            <remarks>\n            <para>\n            The Header text will be appended before any logging events\n            are formatted and appended.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Footer\">\r\n            <summary>\n            The footer for the layout format.\n            </summary>\n            <value>the layout footer</value>\n            <remarks>\n            <para>\n            The Footer text will be appended after all the logging events\n            have been formatted and appended.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handles exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this layout does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Constructs a ExceptionLayout\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> component activation\r\n            framework.\r\n            </para>\r\n            <para>\r\n            This method does nothing as options become effective immediately.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the exception text from the logging event\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Write the exception string to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            The exception string is retrieved from <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.IRawLayout\">\r\n            <summary>\r\n            Interface for raw layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to an object.\r\n            </para>\r\n            <para>\r\n            This interface should not be confused with the\r\n            <see cref=\"T:log4net.Layout.ILayout\"/> interface. This interface is used in\r\n            only certain specialized situations where a raw object is\r\n            required rather than a formatted string. The <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            is not generally useful than this interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.IRawLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Implement this method to create your own layout format.\n            </summary>\n            <param name=\"loggingEvent\">The event to format</param>\n            <returns>returns the formatted event</returns>\n            <remarks>\n            <para>\n            Implement this method to create your own layout format.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.Layout2RawLayoutAdapter\">\r\n            <summary>\r\n            Adapts any <see cref=\"T:log4net.Layout.ILayout\"/> to a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Where an <see cref=\"T:log4net.Layout.IRawLayout\"/> is required this adapter\r\n            allows a <see cref=\"T:log4net.Layout.ILayout\"/> to be specified.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Layout2RawLayoutAdapter.m_layout\">\r\n            <summary>\n            The layout to adapt\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\n            Construct a new adapter\n            </summary>\n            <param name=\"layout\">the layout to adapt</param>\n            <remarks>\n            <para>\n            Create the adapter for the specified <paramref name=\"layout\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Format the logging event as an object.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the formatted event</returns>\r\n            <remarks>\r\n            <para>\r\n            Format the logging event as an object.\r\n            </para>\r\n            <para>\r\n            Uses the <see cref=\"T:log4net.Layout.ILayout\"/> object supplied to \r\n            the constructor to perform the formatting.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.PatternLayout\">\r\n            <summary>\r\n            A flexible layout configurable with pattern string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The goal of this class is to <see cref=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as a string. The results\r\n            depend on the <i>conversion pattern</i>.\r\n            </para>\r\n            <para>\r\n            The conversion pattern is closely related to the conversion\r\n            pattern of the printf function in C. A conversion pattern is\r\n            composed of literal text and format control expressions called\r\n            <i>conversion specifiers</i>.\r\n            </para>\r\n            <para>\r\n            <i>You are free to insert any literal text within the conversion\r\n            pattern.</i>\r\n            </para>\r\n            <para>\r\n            Each conversion specifier starts with a percent sign (%) and is\r\n            followed by optional <i>format modifiers</i> and a <i>conversion\r\n            pattern name</i>. The conversion pattern name specifies the type of\r\n            data, e.g. logger, level, date, thread name. The format\r\n            modifiers control such things as field width, padding, left and\r\n            right justification. The following is a simple example.\r\n            </para>\r\n            <para>\r\n            Let the conversion pattern be <b>\"%-5level [%thread]: %message%newline\"</b> and assume\r\n            that the log4net environment was set to use a PatternLayout. Then the\r\n            statements\r\n            </para>\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(typeof(TestApp));\r\n            log.Debug(\"Message 1\");\r\n            log.Warn(\"Message 2\");   \r\n            </code>\r\n            <para>would yield the output</para>\r\n            <code>\r\n            DEBUG [main]: Message 1\r\n            WARN  [main]: Message 2  \r\n            </code>\r\n            <para>\r\n            Note that there is no explicit separator between text and\r\n            conversion specifiers. The pattern parser knows when it has reached\r\n            the end of a conversion specifier when it reads a conversion\r\n            character. In the example above the conversion specifier\r\n            <b>%-5level</b> means the level of the logging event should be left\r\n            justified to a width of five characters.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>a</term>\r\n                    <description>Equivalent to <b>appdomain</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n            \t\t\tUsed to output the friendly name of the AppDomain where the \r\n            \t\t\tlogging event was generated. \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-cache</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all cache items in the case of <b>%aspnet-cache</b> or just one named item if used as <b>%aspnet-cache{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-context</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all context items in the case of <b>%aspnet-context</b> or just one named item if used as <b>%aspnet-context{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-request</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all request parameters in the case of <b>%aspnet-request</b> or just one named param if used as <b>%aspnet-request{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-session</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all session items in the case of <b>%aspnet-session</b> or just one named item if used as <b>%aspnet-session{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>c</term>\r\n                    <description>Equivalent to <b>logger</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>C</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>class</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>d</term>\r\n                    <description>Equivalent to <b>date</b></description>\r\n                </item>\r\n                <item>\r\n            \t\t<term>date</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>exception</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the exception passed in with the log message.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf an exception object is stored in the logging event\r\n            \t\t\tit will be rendered into the pattern output with a\r\n            \t\t\ttrailing newline.\r\n            \t\t\tIf there is no exception then nothing will be output\r\n            \t\t\tand no trailing newline will be appended.\r\n            \t\t\tIt is typical to put a newline before the exception\r\n            \t\t\tand to have the exception as the last data in the pattern.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>F</term>\r\n                    <description>Equivalent to <b>file</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>file</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the file name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>identity</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>l</term>\r\n                    <description>Equivalent to <b>location</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>L</term>\r\n                    <description>Equivalent to <b>line</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>location</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output location information of the caller which generated\r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information depends on the CLI implementation but\r\n            \t\t\tusually consists of the fully qualified name of the calling\r\n            \t\t\tmethod followed by the callers source the file name and line\r\n            \t\t\tnumber between parentheses.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information can be very useful. However, its\r\n            \t\t\tgeneration is <b>extremely</b> slow. Its use should be avoided\r\n            \t\t\tunless execution speed is not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>level</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the level of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>line</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the line number from where the logging request\r\n            \t\t\twas issued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>logger</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the logger of the logging event. The\r\n            \t\t\tlogger conversion specifier can be optionally followed by\r\n            \t\t\t<i>precision specifier</i>, that is a decimal constant in\r\n            \t\t\tbrackets.\r\n                        </para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the logger name will be\r\n            \t\t\tprinted. By default the logger name is printed in full.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the logger name \"a.b.c\" the pattern\r\n            \t\t\t<b>%logger{2}</b> will output \"b.c\".\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>m</term>\r\n                    <description>Equivalent to <b>message</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>M</term>\r\n                    <description>Equivalent to <b>method</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>message</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the application supplied message associated with \r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>mdc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe MDC (old name for the ThreadContext.Properties) is now part of the\r\n            \t\t\tcombined event properties. This pattern is supported for compatibility\r\n            \t\t\tbut is equivalent to <b>property</b>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>method</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the method name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>n</term>\r\n                    <description>Equivalent to <b>newline</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>newline</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ndc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the NDC (nested diagnostic context) associated\r\n            \t\t\twith the thread that generated the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>p</term>\r\n                    <description>Equivalent to <b>level</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>P</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>properties</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>property</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the an event specific property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are added to events by loggers or appenders. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the event properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\t\t\t\tproperties are specific to this event only.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n            \t\t\t\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>r</term>\r\n                    <description>Equivalent to <b>timestamp</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>stacktrace</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktrace{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n            \t\t\ttype3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>stacktracedetail</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktracedetail{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n                        type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>t</term>\r\n                    <description>Equivalent to <b>thread</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>timestamp</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the number of milliseconds elapsed since the start\r\n            \t\t\tof the application until the creation of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>thread</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the name of the thread that generated the\r\n            \t\t\tlogging event. Uses the thread number if no name is available.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>type</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the fully qualified type name of the caller\r\n            \t\t\tissuing the logging request. This conversion specifier\r\n            \t\t\tcan be optionally followed by <i>precision specifier</i>, that\r\n            \t\t\tis a decimal constant in brackets.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the class name will be\r\n            \t\t\tprinted. By default the class name is output in fully qualified form.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the class name \"log4net.Layout.PatternLayout\", the\r\n            \t\t\tpattern <b>%type{1}</b> will output \"PatternLayout\".\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating the caller class information is\r\n            \t\t\tslow. Thus, its use should be avoided unless execution speed is\r\n            \t\t\tnot an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n                </item>\r\n                <item>\r\n                    <term>u</term>\r\n                    <description>Equivalent to <b>identity</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>username</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller WindowsIdentity information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>utcdate</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>w</term>\r\n                    <description>Equivalent to <b>username</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>x</term>\r\n                    <description>Equivalent to <b>ndc</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>X</term>\r\n                    <description>Equivalent to <b>mdc</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            The single letter patterns are deprecated in favor of the \r\n            longer more descriptive pattern names.\r\n            </para>\r\n            <para>\r\n            By default the relevant information is output as is. However,\r\n            with the aid of format modifiers it is possible to change the\r\n            minimum field width, the maximum field width and justification.\r\n            </para>\r\n            <para>\r\n            The optional format modifier is placed between the percent sign\r\n            and the conversion pattern name.\r\n            </para>\r\n            <para>\r\n            The first optional format modifier is the <i>left justification\r\n            flag</i> which is just the minus (-) character. Then comes the\r\n            optional <i>minimum field width</i> modifier. This is a decimal\r\n            constant that represents the minimum number of characters to\r\n            output. If the data item requires fewer characters, it is padded on\r\n            either the left or the right until the minimum width is\r\n            reached. The default is to pad on the left (right justify) but you\r\n            can specify right padding with the left justification flag. The\r\n            padding character is space. If the data item is larger than the\r\n            minimum field width, the field is expanded to accommodate the\r\n            data. The value is never truncated.\r\n            </para>\r\n            <para>\r\n            This behavior can be changed using the <i>maximum field\r\n            width</i> modifier which is designated by a period followed by a\r\n            decimal constant. If the data item is longer than the maximum\r\n            field, then the extra characters are removed from the\r\n            <i>beginning</i> of the data item and not from the end. For\r\n            example, it the maximum field width is eight and the data item is\r\n            ten characters long, then the first two characters of the data item\r\n            are dropped. This behavior deviates from the printf function in C\r\n            where truncation is done from the end.\r\n            </para>\r\n            <para>\r\n            Below are various format modifier examples for the logger\r\n            conversion specifier.\r\n            </para>\r\n            <div class=\"tablediv\">\r\n            \t<table class=\"dtTABLE\" cellspacing=\"0\">\r\n            \t\t<tr>\r\n            \t\t\t<th>Format modifier</th>\r\n            \t\t\t<th>left justify</th>\r\n            \t\t\t<th>minimum width</th>\r\n            \t\t\t<th>maximum width</th>\r\n            \t\t\t<th>comment</th>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%20logger</td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is less than 20\r\n            \t\t\t\tcharacters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger \r\n            \t\t\t\tname is less than 20 characters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%.30logger</td>\r\n            \t\t\t<td align=\"center\">NA</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tTruncate from the beginning if the logger \r\n            \t\t\t\tname is longer than 30 characters.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\"><nobr>%20.30logger</nobr></td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20.30logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t</table>\r\n            </div>\r\n            <para>\r\n            <b>Note about caller location information.</b><br/>\r\n            The following patterns <c>%type %file %line %method %location %class %C %F %L %l %M</c> \r\n            all generate caller location information.\r\n            Location information uses the <c>System.Diagnostics.StackTrace</c> class to generate\r\n            a call stack. The caller's information is then extracted from this stack.\r\n            </para>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \r\n            .NET Compact Framework 1.0 therefore caller location information is not\r\n            available on that framework.\r\n            </para>\r\n            </note>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\r\n            </para>\r\n            <para>\r\n            \"StackTrace information will be most informative with Debug build configurations. \r\n            By default, Debug builds include debug symbols, while Release builds do not. The \r\n            debug symbols contain most of the file, method name, line number, and column \r\n            information used in constructing StackFrame and StackTrace objects. StackTrace \r\n            might not report as many method calls as expected, due to code transformations \r\n            that occur during optimization.\"\r\n            </para>\r\n            <para>\r\n            This means that in a Release build the caller information may be incomplete or may \r\n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            instance using the <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            This is a more detailed pattern.\r\n            <code><b>%timestamp [%thread] %level %logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <example>\r\n            A similar pattern except that the relative time is\r\n            right padded if less than 6 digits, thread name is right padded if\r\n            less than 15 characters and truncated if longer and the logger\r\n            name is left padded if shorter than 30 characters and truncated if\r\n            longer.\r\n            <code><b>%-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DefaultConversionPattern\">\r\n            <summary>\n            Default pattern string for log output. \n            </summary>\n            <remarks>\n            <para>\n            Default pattern string for log output. \n            Currently set to the string <b>\"%message%newline\"</b> \n            which just prints the application supplied message. \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\">\r\n            <summary>\n            A detailed conversion pattern\n            </summary>\n            <remarks>\n            <para>\n            A conversion pattern which includes Time, Thread, Logger, and Nested Context.\n            Current value is <b>%timestamp [%thread] %level %logger %ndc - %message%newline</b>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.s_globalRulesRegistry\">\r\n            <summary>\n            Internal map of converter identifiers to converter types.\n            </summary>\n            <remarks>\n            <para>\n            This static map is overridden by the m_converterRegistry instance map\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_pattern\">\r\n            <summary>\n            the pattern\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_head\">\r\n            <summary>\n            the head of the pattern converter chain\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_instanceRulesRegistry\">\r\n            <summary>\n            patterns defined on this PatternLayout only\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#cctor\">\r\n            <summary>\n            Initialize the global registry\n            </summary>\n            <remarks>\n            <para>\n            Defines the builtin global rules.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor\">\r\n            <summary>\r\n            Constructs a PatternLayout using the DefaultConversionPattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default pattern just produces the application supplied message.\r\n            </para>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            As per the <see cref=\"T:log4net.Core.IOptionHandler\"/> contract the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>\r\n            method must be called after the properties on this object have been\r\n            configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternLayout using the supplied conversion pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to use</param>\r\n            <remarks>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            When using this constructor the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method \r\n            need not be called. This may not be the case when using a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the pattern parser instance\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/> that will format the event</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the conversion string. Sets the\r\n            global and instance rules on the <see cref=\"T:log4net.Util.PatternParser\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string as specified by the conversion pattern.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Parse the <see cref=\"T:log4net.Core.LoggingEvent\"/> using the patter format\r\n            specified in the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\r\n            <param name=\"type\">the type of the converter</param>\r\n            <remarks>\r\n            <para>\r\n            Add a named pattern converter to this instance. This\r\n            converter will be used in the formatting of the event.\r\n            This method must be called before <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"type\"/> specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.PatternLayout.ConversionPattern\">\r\n            <summary>\n            The pattern formatting string\n            </summary>\n            <remarks>\n            <para>\n            The <b>ConversionPattern</b> option. This is the string which\n            controls formatting and consists of a mix of literal content and\n            conversion specifiers.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.RawLayoutConverter\">\r\n            <summary>\r\n            Type converter for the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to convert objects to the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface.\r\n            Supports converting from the <see cref=\"T:log4net.Layout.ILayout\"/> interface to\r\n            the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface using the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertFrom\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from arbitrary types\r\n            to a single target type. See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.CanConvertFrom(System.Type)\">\r\n            <summary>\n            Can the source type be converted to the type supported by this object\n            </summary>\n            <param name=\"sourceType\">the type to convert</param>\n            <returns>true if the conversion is possible</returns>\n            <remarks>\n            <para>\n            Test if the <paramref name=\"sourceType\"/> can be converted to the\n            type supported by this converter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.ConvertFrom(System.Object)\">\r\n            <summary>\n            Convert the source object to the type supported by this object\n            </summary>\n            <param name=\"source\">the object to convert</param>\n            <returns>the converted object</returns>\n            <remarks>\n            <para>\n            Converts the <paramref name=\"source\"/> to the type supported\n            by this converter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the sourceType be converted to an <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <param name=\"sourceType\">the source to be to be converted</param>\r\n            <returns><c>true</c> if the source type can be converted to <see cref=\"T:log4net.Layout.IRawLayout\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the <paramref name=\"sourceType\"/> can be converted to a\r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/>. Only <see cref=\"T:log4net.Layout.ILayout\"/> is supported\r\n            as the <paramref name=\"sourceType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the value to a <see cref=\"T:log4net.Layout.IRawLayout\"/> object\r\n            </summary>\r\n            <param name=\"source\">the value to convert</param>\r\n            <returns>the <see cref=\"T:log4net.Layout.IRawLayout\"/> object</returns>\r\n            <remarks>\r\n            <para>\r\n            Convert the <paramref name=\"source\"/> object to a \r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/> object. If the <paramref name=\"source\"/> object\r\n            is a <see cref=\"T:log4net.Layout.ILayout\"/> then the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>\r\n            is used to adapt between the two interfaces, otherwise an\r\n            exception is thrown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawPropertyLayout\">\r\n            <summary>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.#ctor\">\r\n            <summary>\n            Constructs a RawPropertyLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Lookup the property for <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns property value</returns>\r\n            <remarks>\r\n            <para>\r\n            Looks up and returns the object value of the property\r\n            named <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>. If there is no property defined\r\n            with than name then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.RawPropertyLayout.Key\">\r\n            <summary>\r\n            The name of the value to lookup in the LoggingEvent Properties collection.\r\n            </summary>\r\n            <value>\r\n            Value to lookup in the LoggingEvent Properties collection\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            String name of the property to lookup in the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.#ctor\">\r\n            <summary>\n            Constructs a RawTimeStampLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in local time. To format the time stamp\r\n            in universal time use <see cref=\"T:log4net.Layout.RawUtcTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawUtcTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.#ctor\">\r\n            <summary>\n            Constructs a RawUtcTimeStampLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in universal time. To format the time stamp\r\n            in local time use <see cref=\"T:log4net.Layout.RawTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.SimpleLayout\">\r\n            <summary>\n            A very simple layout\n            </summary>\n            <remarks>\n            <para>\n            SimpleLayout consists of the level of the log statement,\n            followed by \" - \" and then the log message itself. For example,\n            <code>\n            DEBUG - Hello world\n            </code>\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.#ctor\">\r\n            <summary>\n            Constructs a SimpleLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Produces a simple formatted output.\n            </summary>\n            <param name=\"loggingEvent\">the event being logged</param>\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\n            <remarks>\n            <para>\n            Formats the event as the level of the even,\n            followed by \" - \" and then the log message itself. The\n            output is terminated by a newline.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayout\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The output of the <see cref=\"T:log4net.Layout.XmlLayout\"/> consists of a series of \r\n            log4net:event elements. It does not output a complete well-formed XML \r\n            file. The output is designed to be included as an <em>external entity</em>\r\n            in a separate file to form a correct XML file.\r\n            </para>\r\n            <para>\r\n            For example, if <c>abc</c> is the name of the file where\r\n            the <see cref=\"T:log4net.Layout.XmlLayout\"/> output goes, then a well-formed XML file would \r\n            be:\r\n            </para>\r\n            <code lang=\"XML\">\r\n            &lt;?xml version=\"1.0\" ?&gt;\r\n            \r\n            &lt;!DOCTYPE log4net:events SYSTEM \"log4net-events.dtd\" [&lt;!ENTITY data SYSTEM \"abc\"&gt;]&gt;\r\n                        &lt;log4net:events version=\"1.2\" xmlns:log4net=\"http://logging.apache.org/log4net/schemas/log4net-events-1.2&gt;\r\n                &amp;data;\r\n            &lt;/log4net:events&gt;\r\n            </code>\r\n            <para>\r\n            This approach enforces the independence of the <see cref=\"T:log4net.Layout.XmlLayout\"/> \r\n            and the appender where it is embedded.\r\n            </para>\r\n            <para>\r\n            The <c>version</c> attribute helps components to correctly\r\n            interpret output generated by <see cref=\"T:log4net.Layout.XmlLayout\"/>. The value of \r\n            this attribute should be \"1.2\" for release 1.2 and later.\r\n            </para>\r\n            <para>\r\n            Alternatively the <c>Header</c> and <c>Footer</c> properties can be\r\n            configured to output the correct XML header, open tag and close tag.\r\n            When setting the <c>Header</c> and <c>Footer</c> properties it is essential\r\n            that the underlying data store not be appendable otherwise the data\r\n            will become invalid XML.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutBase\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract class that must be subclassed by an implementation \r\n            to conform to a specific schema.\r\n            </para>\r\n            <para>\r\n            Deriving classes must implement the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor\">\r\n            <summary>\r\n            Protected constructor to support subclasses\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.XmlLayoutBase\"/> class\r\n            with no location info.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor(System.Boolean)\">\r\n            <summary>\n            Protected constructor to support subclasses\n            </summary>\n            <remarks>\n            <para>\n            The <paramref name=\"locationInfo\" /> parameter determines whether \n            location information will be output by the layout. If \n            <paramref name=\"locationInfo\" /> is set to <c>true</c>, then the \n            file name and line number of the statement at the origin of the log \n            statement will be output. \n            </para>\n            <para>\n            If you are embedding this layout within an SMTPAppender\n            then make sure to set the <b>LocationInfo</b> option of that \n            appender as well.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:log4net.Core.LoggingEvent\"/> and write it to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This method creates an <see cref=\"T:System.Xml.XmlTextWriter\"/> that writes to the\r\n            <paramref name=\"writer\"/>. The <see cref=\"T:System.Xml.XmlTextWriter\"/> is passed \r\n            to the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method. Subclasses should override the\r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method rather than this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Subclasses should override this method to format\r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> as XML.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_locationInfo\">\r\n            <summary>\n            Flag to indicate if location information should be included in\n            the XML events.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_invalidCharReplacement\">\r\n            <summary>\n            The string to replace invalid chars with\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\">\r\n            <summary>\r\n            Gets a value indicating whether to include location information in \r\n            the XML events.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if location information should be included in the XML \r\n            events; otherwise, <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If <see cref=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\"/> is set to <c>true</c>, then the file \r\n            name and line number of the statement at the origin of the log \r\n            statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an <c>SMTPAppender</c>\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\">\r\n            <summary>\n            The string to replace characters that can not be expressed in XML with.\n            <remarks>\n            <para>\n            Not all characters may be expressed in XML. This property contains the\n            string to replace those that can not with. This defaults to a ?. Set it\n            to the empty string to simply remove offending characters. For more\n            details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets\n            Character replacement will occur in  the log message, the property names \n            and the property values.\n            </para>\n            </remarks>\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.ContentType\">\r\n            <summary>\n            Gets the content type output by this layout. \n            </summary>\n            <value>\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\n            </value>\n            <remarks>\n            <para>\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor\">\r\n            <summary>\n            Constructs an XmlLayout\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor(System.Boolean)\">\r\n            <summary>\n            Constructs an XmlLayout.\n            </summary>\n            <remarks>\n            <para>\n            The <b>LocationInfo</b> option takes a boolean value. By\n            default, it is set to false which means there will be no location\n            information output by this layout. If the the option is set to\n            true, then the file name and line number of the statement\n            at the origin of the log statement will be output. \n            </para>\n            <para>\n            If you are embedding this layout within an SmtpAppender\n            then make sure to set the <b>LocationInfo</b> option of that \n            appender as well.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Builds a cache of the element names\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Override the base class <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method\r\n            to write the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the <see cref=\"T:System.Xml.XmlWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayout.m_prefix\">\r\n            <summary>\n            The prefix to use for all generated element names\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Prefix\">\r\n            <summary>\n            The prefix to use for all element names\n            </summary>\n            <remarks>\n            <para>\n            The default prefix is <b>log4net</b>. Set this property\n            to change the prefix. If the prefix is set to an empty string\n            then no prefix will be written.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeMessage\">\r\n            <summary>\r\n            Set whether or not to base64 encode the message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the log message will be written as text to the xml\r\n            output. This can cause problems when the message contains binary\r\n            data. By setting this to true the contents of the message will be\r\n            base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the log message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeProperties\">\r\n            <summary>\r\n            Set whether or not to base64 encode the property values.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the properties will be written as text to the xml\r\n            output. This can cause problems when one or more properties contain\r\n            binary data. By setting this to true the values of the properties\r\n            will be base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the property values.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutSchemaLog4j\">\r\n            <summary>\n            Layout that formats the log events as XML elements compatible with the log4j schema\n            </summary>\n            <remarks>\n            <para>\n            Formats the log events according to the http://logging.apache.org/log4j schema.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutSchemaLog4j.s_date1970\">\r\n            <summary>\n            The 1st of January 1970 in UTC\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor\">\r\n            <summary>\n            Constructs an XMLLayoutSchemaLog4j\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor(System.Boolean)\">\r\n            <summary>\n            Constructs an XMLLayoutSchemaLog4j.\n            </summary>\n            <remarks>\n            <para>\n            The <b>LocationInfo</b> option takes a boolean value. By\n            default, it is set to false which means there will be no location\n            information output by this layout. If the the option is set to\n            true, then the file name and line number of the statement\n            at the origin of the log statement will be output. \n            </para>\n            <para>\n            If you are embedding this layout within an SMTPAppender\n            then make sure to set the <b>LocationInfo</b> option of that \n            appender as well.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Actually do the writing of the xml\n            </summary>\n            <param name=\"writer\">the writer to use</param>\n            <param name=\"loggingEvent\">the event to write</param>\n            <remarks>\n            <para>\n            Generate XML that is compatible with the log4j schema.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutSchemaLog4j.Version\">\r\n            <summary>\n            The version of the log4j schema to use.\n            </summary>\n            <remarks>\n            <para>\n            Only version 1.2 of the log4j schema is supported.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.DefaultRenderer\">\r\n            <summary>\r\n            The default object Renderer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default renderer supports rendering objects and collections to strings.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\"/> method for details of the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.IObjectRenderer\">\r\n            <summary>\r\n            Implement this interface in order to render objects as strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Certain types require special case conversion to\r\n            string form. This conversion is done by an object renderer.\r\n            Object renderers implement the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.IObjectRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a \r\n            string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            <para>\r\n            The default renderer supports rendering objects to strings as follows:\r\n            </para>\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Rendered String</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term><c>null</c></term>\r\n            \t\t<description>\r\n            \t\t<para>\"(null)\"</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Array\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tFor a one dimensional array this is the\r\n            \t\tarray type name, an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace. \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>int[] {1, 2, 3}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tIf the array is not one dimensional the \r\n            \t\t<c>Array.ToString()</c> is returned.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.IEnumerable\"/>, <see cref=\"T:System.Collections.ICollection\"/> &amp; <see cref=\"T:System.Collections.IEnumerator\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>{a, b, c}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tAll collection classes that implement <see cref=\"T:System.Collections.ICollection\"/> its subclasses, \r\n            \t\tor generic equivalents all implement the <see cref=\"T:System.Collections.IEnumerable\"/> interface.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.DictionaryEntry\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as the key, an equals sign ('='), and the value (using the appropriate\r\n            \t\trenderer). \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>key=value</c>.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\t<para><c>Object.ToString()</c></para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderArray(log4net.ObjectRenderer.RendererMap,System.Array,System.IO.TextWriter)\">\r\n            <summary>\n            Render the array argument into a string\n            </summary>\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\n            <param name=\"array\">the array to render</param>\n            <param name=\"writer\">The writer to render to</param>\n            <remarks>\n            <para>\n            For a one dimensional array this is the\n            array type name, an open brace, followed by a comma\n            separated list of the elements (using the appropriate\n            renderer), followed by a close brace. For example:\n            <c>int[] {1, 2, 3}</c>.\n            </para>\n            <para>\n            If the array is not one dimensional the \n            <c>Array.ToString()</c> is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderEnumerator(log4net.ObjectRenderer.RendererMap,System.Collections.IEnumerator,System.IO.TextWriter)\">\r\n            <summary>\n            Render the enumerator argument into a string\n            </summary>\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\n            <param name=\"enumerator\">the enumerator to render</param>\n            <param name=\"writer\">The writer to render to</param>\n            <remarks>\n            <para>\n            Rendered as an open brace, followed by a comma\n            separated list of the elements (using the appropriate\n            renderer), followed by a close brace. For example:\n            <c>{a, b, c}</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderDictionaryEntry(log4net.ObjectRenderer.RendererMap,System.Collections.DictionaryEntry,System.IO.TextWriter)\">\r\n            <summary>\n            Render the DictionaryEntry argument into a string\n            </summary>\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\n            <param name=\"entry\">the DictionaryEntry to render</param>\n            <param name=\"writer\">The writer to render to</param>\n            <remarks>\n            <para>\n            Render the key, an equals sign ('='), and the value (using the appropriate\n            renderer). For example: <c>key=value</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.RendererMap\">\r\n            <summary>\r\n            Map class objects to an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a mapping between types that require special\r\n            rendering and the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> that\r\n            is used to render them.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/> method is used to render an\r\n            <c>object</c> using the appropriate renderers defined in this map.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.#ctor\">\r\n            <summary>\n            Default Constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <returns>the object rendered as a string</returns>\r\n            <remarks>\r\n            <para>\r\n            This is a convenience method used to render an object to a string.\r\n            The alternative method <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            should be used when streaming output to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Find the appropriate renderer for the type of the\r\n            <paramref name=\"obj\"/> parameter. This is accomplished by calling the\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> method. Once a renderer is found, it is\r\n            applied on the object <paramref name=\"obj\"/> and the result is returned\r\n            as a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Object)\">\r\n            <summary>\r\n            Gets the renderer for the specified object type\r\n            </summary>\r\n            <param name=\"obj\">the object to lookup the renderer for</param>\r\n            <returns>the renderer for <paramref name=\"obj\"/></returns>\r\n            <remarks>\r\n            <param>\r\n            Gets the renderer for the specified object type.\r\n            </param>\r\n            <param>\r\n            Syntactic sugar method that calls <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> \r\n            with the type of the object parameter.\r\n            </param>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\">\r\n            <summary>\r\n            Gets the renderer for the specified type\r\n            </summary>\r\n            <param name=\"type\">the type to lookup the renderer for</param>\r\n            <returns>the renderer for the specified type</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the renderer for the specified type.\r\n            If no specific renderer has been defined the\r\n            <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.SearchTypeAndInterfaces(System.Type)\">\r\n            <summary>\n            Internal function to recursively search interfaces\n            </summary>\n            <param name=\"type\">the type to lookup the renderer for</param>\n            <returns>the renderer for the specified type</returns>\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Clear\">\r\n            <summary>\r\n            Clear the map of renderers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the custom renderers defined by using\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\"/>. The <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/>\r\n            cannot be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\r\n            Register an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> for <paramref name=\"typeToRender\"/>. \r\n            </summary>\r\n            <param name=\"typeToRender\">the type that will be rendered by <paramref name=\"renderer\"/></param>\r\n            <param name=\"renderer\">the renderer for <paramref name=\"typeToRender\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Register an object renderer for a specific source type.\r\n            This renderer will be returned from a call to <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/>\r\n            specifying the same <paramref name=\"typeToRender\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\">\r\n            <summary>\n            Get the default renderer instance\n            </summary>\n            <value>the default renderer</value>\n            <remarks>\n            <para>\n            Get the default renderer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPlugin\">\r\n            <summary>\r\n            Interface implemented by logger repository plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Plugins define additional behavior that can be associated\r\n            with a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The <see cref=\"T:log4net.Plugin.PluginMap\"/> held by the <see cref=\"P:log4net.Repository.ILoggerRepository.PluginMap\"/>\r\n            property is used to store the plugins for a repository.\r\n            </para>\r\n            <para>\r\n            The <c>log4net.Config.PluginAttribute</c> can be used to\r\n            attach plugins to repositories created using configuration\r\n            attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches the plugin to the specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Shutdown\">\r\n            <summary>\n            Is called when the plugin is to shutdown.\n            </summary>\n            <remarks>\n            <para>\n            This method is called to notify the plugin that \n            it should stop operating and should detach from\n            the repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Plugin.IPlugin.Name\">\r\n            <summary>\r\n            Gets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ReadOnly(log4net.Plugin.PluginCollection)\">\r\n            <summary>\n            Creates a read-only wrapper for a <c>PluginCollection</c> instance.\n            </summary>\n            <param name=\"list\">list to create a readonly wrapper arround</param>\n            <returns>\n            A <c>PluginCollection</c> wrapper that is read-only.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor\">\r\n            <summary>\n            Initializes a new instance of the <c>PluginCollection</c> class\n            that is empty and has the default initial capacity.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Int32)\">\r\n            <summary>\n            Initializes a new instance of the <c>PluginCollection</c> class\n            that has the specified initial capacity.\n            </summary>\n            <param name=\"capacity\">\n            The number of elements that the new <c>PluginCollection</c> is initially capable of storing.\n            </param>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>PluginCollection</c> class\n            that contains elements copied from the specified <c>PluginCollection</c>.\n            </summary>\n            <param name=\"c\">The <c>PluginCollection</c> whose elements are copied to the new collection.</param>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection.Tag)\">\r\n            <summary>\n            Allow subclasses to avoid our default constructors\n            </summary>\n            <param name=\"tag\"></param>\n            <exclude/>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the end of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clear\">\r\n            <summary>\n            Removes all elements from the <c>PluginCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Plugin.PluginCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Contains(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Plugin.IPlugin\"/> is in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>PluginCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IndexOf(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to locate in the <c>PluginCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>PluginCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Insert(System.Int32,log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Inserts an element into the <c>PluginCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Plugin.IPlugin\"/> from the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the <c>PluginCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Plugin.IPlugin\"/> was not found in the <c>PluginCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>PluginCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Plugin.PluginCollection.Enumerator\"/> for the entire <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>PluginCollection</c> to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>PluginCollection</c> whose elements should be added to the end of the current <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> array to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> collection to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.TrimToSize\">\r\n            <summary>\n            Sets the capacity to the actual number of elements.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Count\">\r\n            <summary>\n            Gets the number of elements actually contained in the <c>PluginCollection</c>.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsSynchronized\">\r\n            <summary>\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\n            </summary>\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.SyncRoot\">\r\n            <summary>\n            Gets an object that can be used to synchronize access to the collection.\n            </summary>\n            <value>\n            An object that can be used to synchronize access to the collection.\n            </value>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </value>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsFixedSize\">\r\n            <summary>\n            Gets a value indicating whether the collection has a fixed size.\n            </summary>\n            <value><c>true</c> if the collection has a fixed size; otherwise, <c>false</c>. The default is <c>false</c>.</value>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsReadOnly\">\r\n            <summary>\n            Gets a value indicating whether the IList is read-only.\n            </summary>\n            <value><c>true</c> if the collection is read-only; otherwise, <c>false</c>. The default is <c>false</c>.</value>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Capacity\">\r\n            <summary>\n            Gets or sets the number of elements the <c>PluginCollection</c> can contain.\n            </summary>\n            <value>\n            The number of elements the <c>PluginCollection</c> can contain.\n            </value>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Tag\">\r\n            <summary>\n            Type visible only to our subclasses\n            Used to access protected constructor\n            </summary>\n            <exclude/>\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginCollection.Tag.Default\">\r\n            <summary>\n            A value\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\n            Initializes a new instance of the <c>Enumerator</c> class.\n            </summary>\n            <param name=\"tc\"></param>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.Reset\">\r\n            <summary>\n            Sets the enumerator to its initial position, before the first element in the collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Enumerator.Current\">\r\n            <summary>\n            Gets the current element in the collection.\n            </summary>\n            <value>\n            The current element in the collection.\n            </value>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.ReadOnlyPluginCollection\">\r\n            <exclude/>\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginMap\">\r\n            <summary>\n            Map of repository plugins.\n            </summary>\n            <remarks>\n            <para>\n            This class is a name keyed map of the plugins that are\n            attached to a repository.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository that the plugins should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Plugin.PluginMap\"/> class with a \r\n            repository that the plugins should be attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to add to the map.</param>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> will be attached to the repository when added.\r\n            </para>\r\n            <para>\r\n            If there already exists a plugin with the same name \r\n            attached to the repository then the old plugin will\r\n            be <see cref=\"M:log4net.Plugin.IPlugin.Shutdown\"/> and replaced with\r\n            the new plugin.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes a <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the map.</param>\r\n            <remarks>\r\n            <para>\r\n            Remove a specific plugin from this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.Item(System.String)\">\r\n            <summary>\r\n            Gets a <see cref=\"T:log4net.Plugin.IPlugin\"/> by name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Plugin.IPlugin\"/> to lookup.</param>\r\n            <returns>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map with the name specified, or \r\n            <c>null</c> if no plugin is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a plugin by name. If the plugin is not found <c>null</c>\r\n            will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.AllPlugins\">\r\n            <summary>\r\n            Gets all possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <value>All possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.</value>\r\n            <remarks>\r\n            <para>\r\n            Get a collection of all the plugins defined in this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginSkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            interface. This base class can be used by implementors\r\n            of the <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.#ctor(System.String)\">\r\n            <summary>\n            Constructor\n            </summary>\n            <param name=\"name\">the name of the plugin</param>\n            <remarks>\n            Initializes a new Plugin with the specified name.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Shutdown\">\r\n            <summary>\n            Is called when the plugin is to shutdown.\n            </summary>\n            <remarks>\n            <para>\n            This method is called to notify the plugin that \n            it should stop operating and should detach from\n            the repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_name\">\r\n            <summary>\n            The name of this plugin.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_repository\">\r\n            <summary>\n            The repository this plugin is attached to.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.Name\">\r\n            <summary>\r\n            Gets or sets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            <para>\r\n            The name of the plugin must not change one the \r\n            plugin has been attached to a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.LoggerRepository\">\r\n            <summary>\r\n            The repository for this plugin\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is attached to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is \r\n            attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin\">\r\n            <summary>\r\n            Plugin that listens for events from the <see cref=\"T:log4net.Appender.RemotingAppender\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This plugin publishes an instance of <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/> \r\n            on a specified <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/>. This listens for logging events delivered from\r\n            a remote <see cref=\"T:log4net.Appender.RemotingAppender\"/>.\r\n            </para>\r\n            <para>\r\n            When an event is received it is relogged within the attached repository\r\n            as if it had been raised locally.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> property must be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor(System.String)\">\r\n            <summary>\r\n            Construct with sink Uri.\r\n            </summary>\r\n            <param name=\"sinkUri\">The name to publish the sink under in the remoting infrastructure. \r\n            See <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> for more details.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class\r\n            with specified name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Shutdown\">\r\n            <summary>\n            Is called when the plugin is to shutdown.\n            </summary>\n            <remarks>\n            <para>\n            When the plugin is shutdown the remote logging\n            sink is disconnected.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.declaringType\">\r\n            <summary>\n            The fully qualified type of the RemoteLoggingServerPlugin class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\">\r\n            <summary>\r\n            Gets or sets the URI of this sink.\r\n            </summary>\r\n            <value>\r\n            The URI of this sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the name under which the object is marshaled.\r\n            <see cref=\"M:System.Runtime.Remoting.RemotingServices.Marshal(System.MarshalByRefObject,System.String,System.Type)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\">\r\n            <summary>\r\n            Delivers <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to listen for logging events\r\n            and deliver them to the local repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository to log to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\"/> for the\r\n            specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Logs the events to the repository.\r\n            </summary>\r\n            <param name=\"events\">The events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            The events passed are logged to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.InitializeLifetimeService\">\r\n            <summary>\n            Obtains a lifetime service object to control the lifetime \n            policy for this instance.\n            </summary>\n            <returns><c>null</c> to indicate that this instance should live forever.</returns>\n            <remarks>\n            <para>\n            Obtains a lifetime service object to control the lifetime \n            policy for this instance. This object should live forever\n            therefore this implementation returns <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.m_repository\">\r\n            <summary>\r\n            The underlying <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that events should\r\n            be logged to.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This default implementation of the <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            interface is used to create the default subclass\r\n            of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ILoggerFactory\">\r\n            <summary>\r\n            Interface abstracts creation of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to \r\n            create new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> objects.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\"/> method is called\r\n            to create a named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            <para>\r\n            Implement this interface to create new subclasses of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\">\r\n            <summary>\r\n            Default internal subclass of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This subclass has no additional behavior over the\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class but does allow instances\r\n            to be created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Logger\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.Core.ILogger\"/> used by <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to provide implementation of <see cref=\"T:log4net.Core.ILogger\"/>\r\n            interface. Applications should use <see cref=\"T:log4net.LogManager\"/> to get\r\n            logger instances.\r\n            </para>\r\n            <para>\r\n            This is one of the central classes in the log4net implementation. One of the\r\n            distinctive features of log4net are hierarchical loggers and their\r\n            evaluation. The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> organizes the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            instances into a rooted tree hierarchy.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class is abstract. Only concrete subclasses of\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> can be created. The <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            is used to create instances of this type for the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.#ctor(System.String)\">\r\n            <summary>\r\n            This constructor created a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance and\r\n            sets its name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is protected and designed to be used by\r\n            a subclass that is not abstract.\r\n            </para>\r\n            <para>\r\n            Loggers are constructed by <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> \r\n            objects. See <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> for the default\r\n            logger creator.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\n            Logger instance.\n            </summary>\n            <param name=\"newAppender\">An appender to add to this logger</param>\n            <remarks>\n            <para>\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\n            Logger instance.\n            </para>\n            <para>\n            If <paramref name=\"newAppender\"/> is already in the list of\n            appenders, then it won't be added again.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.GetAppender(System.String)\">\r\n            <summary>\n            Look for the appender named as <c>name</c>\n            </summary>\n            <param name=\"name\">The name of the appender to lookup</param>\n            <returns>The appender with the name specified, or <c>null</c>.</returns>\n            <remarks>\n            <para>\n            Returns the named appender, or null if the appender is not found.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAllAppenders\">\r\n            <summary>\n            Remove all previously added appenders from this Logger instance.\n            </summary>\n            <remarks>\n            <para>\n            Remove all previously added appenders from this Logger instance.\n            </para>\n            <para>\n            This is useful when re-reading configuration information.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the named appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\n            This generic form is intended to be used by wrappers.\n            </summary>\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\n            the stack boundary into the logging system for this call.</param>\n            <param name=\"level\">The level of the message to be logged.</param>\n            <param name=\"message\">The message object to log.</param>\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\n            <remarks>\n            <para>\n            Generate a logging event for the specified <paramref name=\"level\"/> using\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\n            </para>\n            <para>\n            This method must not throw any exception to the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            This is the most generic printing method that is intended to be used \n            by wrappers.\n            </summary>\n            <param name=\"logEvent\">The event being logged.</param>\n            <remarks>\n            <para>\n            Logs the specified logging event through this logger.\n            </para>\n            <para>\n            This method must not throw any exception to the caller.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CallAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Deliver the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Call the appenders in the hierarchy starting at\r\n            <c>this</c>. If no appenders could be found, emit a\r\n            warning.\r\n            </para>\r\n            <para>\r\n            This method calls all the appenders inherited from the\r\n            hierarchy circumventing any evaluation of whether to log or not\r\n            to log the particular log request.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CloseNestedAppenders\">\r\n            <summary>\r\n            Closes all attached appenders implementing the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to ensure that the appenders are correctly shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\n            This is the most generic printing method. This generic form is intended to be used by wrappers\n            </summary>\n            <param name=\"level\">The level of the message to be logged.</param>\n            <param name=\"message\">The message object to log.</param>\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\n            <remarks>\n            <para>\n            Generate a logging event for the specified <paramref name=\"level\"/> using\n            the <paramref name=\"message\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\n            Creates a new logging event and logs the event without further checks.\n            </summary>\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\n            the stack boundary into the logging system for this call.</param>\n            <param name=\"level\">The level of the message to be logged.</param>\n            <param name=\"message\">The message object to log.</param>\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\n            <remarks>\n            <para>\n            Generates a logging event and delivers it to the attached\n            appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Creates a new logging event and logs the event without further checks.\n            </summary>\n            <param name=\"logEvent\">The event being logged.</param>\n            <remarks>\n            <para>\n            Delivers the logging event to the attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.declaringType\">\r\n            <summary>\n            The fully qualified type of the Logger class.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_name\">\r\n            <summary>\n            The name of this logger.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_level\">\r\n            <summary>\n            The assigned level of this logger. \n            </summary>\n            <remarks>\n            <para>\n            The <c>level</c> variable need not be \n            assigned a value in which case it is inherited \n            form the hierarchy.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_parent\">\r\n            <summary>\n            The parent of this logger.\n            </summary>\n            <remarks>\n            <para>\n            The parent of this logger. \n            All loggers have at least one ancestor which is the root logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_hierarchy\">\r\n            <summary>\n            Loggers need to know what Hierarchy they are in.\n            </summary>\n            <remarks>\n            <para>\n            Loggers need to know what Hierarchy they are in.\n            The hierarchy that this logger is a member of is stored\n            here.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Helper implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_additive\">\r\n            <summary>\n            Flag indicating if child loggers inherit their parents appenders\n            </summary>\n            <remarks>\n            <para>\n            Additivity is set to true by default, that is children inherit\n            the appenders of their ancestors by default. If this variable is\n            set to <c>false</c> then the appenders found in the\n            ancestors of this logger are not used. However, the children\n            of this logger will inherit its appenders, unless the children\n            have their additivity flag set to <c>false</c> too. See\n            the user manual for more details.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderLock\">\r\n            <summary>\n            Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Parent\">\r\n            <summary>\n            Gets or sets the parent logger in the hierarchy.\n            </summary>\n            <value>\n            The parent logger in the hierarchy.\n            </value>\n            <remarks>\n            <para>\n            Part of the Composite pattern that makes the hierarchy.\n            The hierarchy is parent linked rather than child linked.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Additivity\">\r\n            <summary>\n            Gets or sets a value indicating if child loggers inherit their parent's appenders.\n            </summary>\n            <value>\n            <c>true</c> if child loggers inherit their parent's appenders.\n            </value>\n            <remarks>\n            <para>\n            Additivity is set to <c>true</c> by default, that is children inherit\n            the appenders of their ancestors by default. If this variable is\n            set to <c>false</c> then the appenders found in the\n            ancestors of this logger are not used. However, the children\n            of this logger will inherit its appenders, unless the children\n            have their additivity flag set to <c>false</c> too. See\n            the user manual for more details.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.EffectiveLevel\">\r\n            <summary>\n            Gets the effective level for this logger.\n            </summary>\n            <returns>The nearest level in the logger hierarchy.</returns>\n            <remarks>\n            <para>\n            Starting from this logger, searches the logger hierarchy for a\n            non-null level and returns it. Otherwise, returns the level of the\n            root logger.\n            </para>\n            <para>The Logger class is designed so that this method executes as\n            quickly as possible.</para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>The hierarchy that this logger belongs to.</value>\r\n            <remarks>\r\n            <para>\r\n            This logger must be attached to a single <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>, if any, for this Logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> of this logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> can be <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Appenders\">\r\n            <summary>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <returns>A collection of the appenders in this logger</returns>\r\n            <remarks>\r\n            <para>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>. If no appenders \r\n            can be found, then a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Name\">\r\n            <summary>\n            Gets the logger name.\n            </summary>\n            <value>\n            The name of the logger.\n            </value>\n            <remarks>\n            <para>\n            The name of this logger\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl.#ctor(System.String)\">\r\n            <summary>\r\n            Construct a new Logger\r\n            </summary>\r\n            <param name=\"name\">the name of the logger</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\"/> class\r\n            with the specified name. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger creation event notifications.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> in which the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> has been created.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event args that hold the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event is raised every time a\r\n            <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.LoggerCreationEventArgs.m_log\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerCreationEventArgs.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"log\">The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event argument \r\n            class,with the specified <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy\">\r\n            <summary>\r\n            Hierarchical organization of loggers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <i>The casual user should not have to deal with this class\r\n            directly.</i>\r\n            </para>\r\n            <para>\r\n            This class is specialized in retrieving loggers by name and\r\n            also maintaining the logger hierarchy. Implements the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            The structure of the logger hierarchy is maintained by the\r\n            <see cref=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\"/> method. The hierarchy is such that children\r\n            link to their parent but parents do not have any references to their\r\n            children. Moreover, loggers can be instantiated in any order, in\r\n            particular descendant before ancestor.\r\n            </para>\r\n            <para>\r\n            In case a descendant is created before a particular ancestor,\r\n            then it creates a provision node for the ancestor and adds itself\r\n            to the provision node. Other descendants of the same ancestor add\r\n            themselves to the previously created provision node.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositorySkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            Skeleton implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            All <see cref=\"T:log4net.Repository.ILoggerRepository\"/> types can extend this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.ILoggerRepository\">\r\n            <summary>\r\n            Interface implemented by logger repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is implemented by logger repositories. e.g. \r\n            <see cref=\"N:log4net.Repository.Hierarchy\"/>.\r\n            </para>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.LogManager\"/>\r\n            to obtain <see cref=\"T:log4net.ILog\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Exists(System.String)\">\r\n            <summary>\n            Check if the named logger exists in the repository. If so return\n            its reference, otherwise returns <c>null</c>.\n            </summary>\n            <param name=\"name\">The name of the logger to lookup</param>\n            <returns>The Logger object with the name specified</returns>\n            <remarks>\n            <para>\n            If the names logger exists it is returned, otherwise\n            <c>null</c> is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetCurrentLoggers\">\r\n            <summary>\n            Returns all the currently defined loggers as an Array.\n            </summary>\n            <returns>All the defined loggers</returns>\n            <remarks>\n            <para>\n            Returns all the currently defined loggers as an Array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetLogger(System.String)\">\r\n            <summary>\n            Returns a named logger instance\n            </summary>\n            <param name=\"name\">The name of the logger to retrieve</param>\n            <returns>The logger object with the name specified</returns>\n            <remarks>\n            <para>\n            Returns a named logger instance.\n            </para>\n            <para>\n            If a logger of that name already exists, then it will be\n            returned.  Otherwise, a new logger will be instantiated and\n            then linked with its existing ancestors as well as children.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Shutdown\">\r\n            <summary>Shutdown the repository</summary>\r\n            <remarks>\r\n            <para>\r\n            Shutting down a repository will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the\r\n            application exists. Otherwise, pending logging events might be\r\n            lost.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.ILoggerRepository.Shutdown\"/> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.ResetConfiguration\">\r\n            <summary>\n            Reset the repositories configuration to a default state\n            </summary>\n            <remarks>\n            <para>\n            Reset all values contained in this instance to their\n            default state.\n            </para>\n            <para>\n            Existing loggers are not removed. They are just reset.\n            </para>\n            <para>\n            This method should be used sparingly and with care as it will\n            block all logging until it is completed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the <see cref=\"T:log4net.Core.LoggingEvent\"/> through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetAppenders\">\r\n            <summary>\n            Returns all the Appenders that are configured as an Array.\n            </summary>\n            <returns>All the Appenders</returns>\n            <remarks>\n            <para>\n            Returns all the Appenders that are configured as an Array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Name\">\r\n            <summary>\n            The name of the repository\n            </summary>\n            <value>\n            The name of the repository\n            </value>\n            <remarks>\n            <para>\n            The name of the repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Threshold\">\r\n            <summary>\n            The threshold for all events in this repository\n            </summary>\n            <value>\n            The threshold for all events in this repository\n            </value>\n            <remarks>\n            <para>\n            The threshold for all events in this repository.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Configured\">\r\n            <summary>\n            Flag indicates if this repository has been configured.\n            </summary>\n            <value>\n            Flag indicates if this repository has been configured.\n            </value>\n            <remarks>\n            <para>\n            Flag indicates if this repository has been configured.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.ConfigurationMessages\">\r\n            <summary>\n            Collection of internal messages captured during the most \n            recent configuration process.\n            </summary>\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\">\r\n            <summary>\n            Event to notify that the repository has been shutdown.\n            </summary>\n            <value>\n            Event to notify that the repository has been shutdown.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository has been shutdown.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationReset\">\r\n            <summary>\n            Event to notify that the repository has had its configuration reset.\n            </summary>\n            <value>\n            Event to notify that the repository has had its configuration reset.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository's configuration has been\n            reset to default.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\">\r\n            <summary>\n            Event to notify that the repository has had its configuration changed.\n            </summary>\n            <value>\n            Event to notify that the repository has had its configuration changed.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository's configuration has been changed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Properties\">\r\n            <summary>\n            Repository specific properties\n            </summary>\n            <value>\n            Repository specific properties\n            </value>\n            <remarks>\n            <para>\n            These properties can be specified on a repository specific basis.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor\">\r\n            <summary>\n            Default Constructor\n            </summary>\n            <remarks>\n            <para>\n            Initializes the repository with default (empty) properties.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\n            Construct the repository using specific properties\n            </summary>\n            <param name=\"properties\">the properties to set for this repository</param>\n            <remarks>\n            <para>\n            Initializes the repository with specified properties.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Exists(System.String)\">\r\n            <summary>\n            Test if logger exists\n            </summary>\n            <param name=\"name\">The name of the logger to lookup</param>\n            <returns>The Logger object with the name specified</returns>\n            <remarks>\n            <para>\n            Check if the named logger exists in the repository. If so return\n            its reference, otherwise returns <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetCurrentLoggers\">\r\n            <summary>\n            Returns all the currently defined loggers in the repository\n            </summary>\n            <returns>All the defined loggers</returns>\n            <remarks>\n            <para>\n            Returns all the currently defined loggers in the repository as an Array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetLogger(System.String)\">\r\n            <summary>\n            Return a new logger instance\n            </summary>\n            <param name=\"name\">The name of the logger to retrieve</param>\n            <returns>The logger object with the name specified</returns>\n            <remarks>\n            <para>\n            Return a new logger instance.\n            </para>\n            <para>\n            If a logger of that name already exists, then it will be\n            returned. Otherwise, a new logger will be instantiated and\n            then linked with its existing ancestors as well as children.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Shutdown\">\r\n            <summary>\r\n            Shutdown the repository\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Shutdown the repository. Can be overridden in a subclass.\r\n            This base class implementation notifies the <see cref=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\"/>\r\n            listeners and all attached plugins of the shutdown event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.ResetConfiguration\">\r\n            <summary>\n            Reset the repositories configuration to a default state\n            </summary>\n            <remarks>\n            <para>\n            Reset all values contained in this instance to their\n            default state.\n            </para>\n            <para>\n            Existing loggers are not removed. They are just reset.\n            </para>\n            <para>\n            This method should be used sparingly and with care as it will\n            block all logging until it is completed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetAppenders\">\r\n            <summary>\n            Returns all the Appenders that are configured as an Array.\n            </summary>\n            <returns>All the Appenders</returns>\n            <remarks>\n            <para>\n            Returns all the Appenders that are configured as an Array.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.LoggerRepositorySkeleton.declaringType\">\r\n            <summary>\n            The fully qualified type of the LoggerRepositorySkeleton class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.AddRenderer(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\n            Adds an object renderer for a specific class. \n            </summary>\n            <param name=\"typeToRender\">The type that will be rendered by the renderer supplied.</param>\n            <param name=\"rendererInstance\">The object renderer used to render the object.</param>\n            <remarks>\n            <para>\n            Adds an object renderer for a specific class. \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnShutdown(System.EventArgs)\">\r\n            <summary>\n            Notify the registered listeners that the repository is shutting down\n            </summary>\n            <param name=\"e\">Empty EventArgs</param>\n            <remarks>\n            <para>\n            Notify any listeners that this repository is shutting down.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationReset(System.EventArgs)\">\r\n            <summary>\n            Notify the registered listeners that the repository has had its configuration reset\n            </summary>\n            <param name=\"e\">Empty EventArgs</param>\n            <remarks>\n            <para>\n            Notify any listeners that this repository's configuration has been reset.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationChanged(System.EventArgs)\">\r\n            <summary>\n            Notify the registered listeners that the repository has had its configuration changed\n            </summary>\n            <param name=\"e\">Empty EventArgs</param>\n            <remarks>\n            <para>\n            Notify any listeners that this repository's configuration has changed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.RaiseConfigurationChanged(System.EventArgs)\">\r\n            <summary>\n            Raise a configuration changed event on this repository\n            </summary>\n            <param name=\"e\">EventArgs.Empty</param>\n            <remarks>\n            <para>\n            Applications that programmatically change the configuration of the repository should\n            raise this event notification to notify listeners.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Name\">\r\n            <summary>\r\n            The name of the repository\r\n            </summary>\r\n            <value>\r\n            The string name of the repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this repository. The name is\r\n            used to store and lookup the repositories \r\n            stored by the <see cref=\"T:log4net.Core.IRepositorySelector\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Threshold\">\r\n            <summary>\n            The threshold for all events in this repository\n            </summary>\n            <value>\n            The threshold for all events in this repository\n            </value>\n            <remarks>\n            <para>\n            The threshold for all events in this repository\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Configured\">\r\n            <summary>\n            Flag indicates if this repository has been configured.\n            </summary>\n            <value>\n            Flag indicates if this repository has been configured.\n            </value>\n            <remarks>\n            <para>\n            Flag indicates if this repository has been configured.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.ConfigurationMessages\">\r\n            <summary>\n            Contains a list of internal messages captures during the \n            last configuration.\n            </summary>\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\">\r\n            <summary>\n            Event to notify that the repository has been shutdown.\n            </summary>\n            <value>\n            Event to notify that the repository has been shutdown.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository has been shutdown.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationReset\">\r\n            <summary>\n            Event to notify that the repository has had its configuration reset.\n            </summary>\n            <value>\n            Event to notify that the repository has had its configuration reset.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository's configuration has been\n            reset to default.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationChanged\">\r\n            <summary>\n            Event to notify that the repository has had its configuration changed.\n            </summary>\n            <value>\n            Event to notify that the repository has had its configuration changed.\n            </value>\n            <remarks>\n            <para>\n            Event raised when the repository's configuration has been changed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Properties\">\r\n            <summary>\n            Repository specific properties\n            </summary>\n            <value>\n            Repository specific properties\n            </value>\n            <remarks>\n            These properties can be specified on a repository specific basis\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Repository.IBasicRepositoryConfigurator\">\r\n            <summary>\r\n            Basic Configurator interface for repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by basic configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            with a default <see cref=\"T:log4net.Appender.IAppender\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.BasicConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\n            Initialize the repository using the specified appender\n            </summary>\n            <param name=\"appender\">the appender to use to log all logging events</param>\n            <remarks>\n            <para>\n            Configure the repository to route all logging events to the\n            specified appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\n            Initialize the repository using the specified appenders\n            </summary>\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\n            <remarks>\n            <para>\n            Configure the repository to route all logging events to the\n            specified appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Repository.IXmlRepositoryConfigurator\">\r\n            <summary>\r\n            Configure repository using XML\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by Xml configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IXmlRepositoryConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Initialize the repository using the specified config\n            </summary>\n            <param name=\"element\">the element containing the root of the config</param>\n            <remarks>\n            <para>\n            The schema for the XML configuration data is defined by\n            the implementation.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Construct with properties\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with a logger factory\r\n            </summary>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with properties and a logger factory\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Exists(System.String)\">\r\n            <summary>\n            Test if a logger exists\n            </summary>\n            <param name=\"name\">The name of the logger to lookup</param>\n            <returns>The Logger object with the name specified</returns>\n            <remarks>\n            <para>\n            Check if the named logger exists in the hierarchy. If so return\n            its reference, otherwise returns <c>null</c>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetCurrentLoggers\">\r\n            <summary>\n            Returns all the currently defined loggers in the hierarchy as an Array\n            </summary>\n            <returns>All the defined loggers</returns>\n            <remarks>\n            <para>\n            Returns all the currently defined loggers in the hierarchy as an Array.\n            The root logger is <b>not</b> included in the returned\n            enumeration.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\">\r\n            <summary>\n            Return a new logger instance named as the first parameter using\n            the default factory.\n            </summary>\n            <remarks>\n            <para>\n            Return a new logger instance named as the first parameter using\n            the default factory.\n            </para>\n            <para>\n            If a logger of that name already exists, then it will be\n            returned.  Otherwise, a new logger will be instantiated and\n            then linked with its existing ancestors as well as children.\n            </para>\n            </remarks>\n            <param name=\"name\">The name of the logger to retrieve</param>\n            <returns>The logger object with the name specified</returns>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Shutdown\">\r\n            <summary>\n            Shutting down a hierarchy will <i>safely</i> close and remove\n            all appenders in all loggers including the root logger.\n            </summary>\n            <remarks>\n            <para>\n            Shutting down a hierarchy will <i>safely</i> close and remove\n            all appenders in all loggers including the root logger.\n            </para>\n            <para>\n            Some appenders need to be closed before the\n            application exists. Otherwise, pending logging events might be\n            lost.\n            </para>\n            <para>\n            The <c>Shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.ResetConfiguration\">\r\n            <summary>\r\n            Reset all values contained in this hierarchy instance to their default.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this hierarchy instance to their\r\n            default.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this hierarchy.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are currently configured\r\n            </summary>\r\n            <returns>An array containing all the currently configured appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the <see cref=\"T:log4net.Appender.IAppender\"/> instances that are currently configured.\r\n            All the loggers are searched for appenders. The appenders may also be containers\r\n            for appenders and these are also searched for additional loggers.\r\n            </para>\r\n            <para>\r\n            The list returned is unordered but does not contain duplicates.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppender(System.Collections.ArrayList,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/>.\r\n            The appender may also be a container.\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"appender\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppenders(System.Collections.ArrayList,log4net.Core.IAppenderAttachable)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/> container\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"container\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender)\">\r\n            <summary>\n            Initialize the log4net system using the specified appender\n            </summary>\n            <param name=\"appender\">the appender to use to log all logging events</param>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\n            Initialize the log4net system using the specified appenders\n            </summary>\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.BasicRepositoryConfigure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IXmlRepositoryConfigurator#Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Initialize the log4net system using the specified config\n            </summary>\n            <param name=\"element\">the element containing the root of the config</param>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.XmlRepositoryConfigure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.IsDisabled(log4net.Core.Level)\">\r\n            <summary>\r\n            Test if this hierarchy is disabled for the specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"level\">The level to check against.</param>\r\n            <returns>\r\n            <c>true</c> if the repository is disabled for the level argument, <c>false</c> otherwise.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If this hierarchy has not been configured then this method will\r\n            always return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This method will return <c>true</c> if this repository is\r\n            disabled for <c>level</c> object passed as parameter and\r\n            <c>false</c> otherwise.\r\n            </para>\r\n            <para>\r\n            See also the <see cref=\"P:log4net.Repository.ILoggerRepository.Threshold\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Clear\">\r\n            <summary>\n            Clear all logger definitions from the internal hashtable\n            </summary>\n            <remarks>\n            <para>\n            This call will clear all logger definitions from the internal\n            hashtable. Invoking this method will irrevocably mess up the\n            logger hierarchy.\n            </para>\n            <para>\n            You should <b>really</b> know what you are doing before\n            invoking this method.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\n            Return a new logger instance named as the first parameter using\n            <paramref name=\"factory\"/>.\n            </summary>\n            <param name=\"name\">The name of the logger to retrieve</param>\n            <param name=\"factory\">The factory that will make the new logger instance</param>\n            <returns>The logger object with the name specified</returns>\n            <remarks>\n            <para>\n            If a logger of that name already exists, then it will be\n            returned. Otherwise, a new logger will be instantiated by the\n            <paramref name=\"factory\"/> parameter and linked with its existing\n            ancestors as well as children.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.OnLoggerCreationEvent(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\n            Sends a logger creation event to all registered listeners\n            </summary>\n            <param name=\"logger\">The newly created logger</param>\n            <remarks>\n            Raises the logger creation event.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateParents(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\n            Updates all the parents of the specified logger\n            </summary>\n            <param name=\"log\">The logger to update the parents for</param>\n            <remarks>\n            <para>\n            This method loops through all the <i>potential</i> parents of\n            <paramref name=\"log\"/>. There 3 possible cases:\n            </para>\n            <list type=\"number\">\n            \t<item>\n            \t\t<term>No entry for the potential parent of <paramref name=\"log\"/> exists</term>\n            \t\t<description>\n            \t\tWe create a ProvisionNode for this potential \n            \t\tparent and insert <paramref name=\"log\"/> in that provision node.\n            \t\t</description>\n            \t</item>\n            \t<item>\n            \t\t<term>The entry is of type Logger for the potential parent.</term>\n            \t\t<description>\n            \t\tThe entry is <paramref name=\"log\"/>'s nearest existing parent. We \n            \t\tupdate <paramref name=\"log\"/>'s parent field with this entry. We also break from \n            \t\the loop because updating our parent's parent is our parent's \n            \t\tresponsibility.\n            \t\t</description>\n            \t</item>\n            \t<item>\n            \t\t<term>The entry is of type ProvisionNode for this potential parent.</term>\n            \t\t<description>\n            \t\tWe add <paramref name=\"log\"/> to the list of children for this \n            \t\tpotential parent.\n            \t\t</description>\n            \t</item>\n            </list>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateChildren(log4net.Repository.Hierarchy.ProvisionNode,log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Replace a <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> with a <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> in the hierarchy.\r\n            </summary>\r\n            <param name=\"pn\"></param>\r\n            <param name=\"log\"></param>\r\n            <remarks>\r\n            <para>\r\n            We update the links for all the children that placed themselves\r\n            in the provision node 'pn'. The second argument 'log' is a\r\n            reference for the newly created Logger, parent of all the\r\n            children in 'pn'.\r\n            </para>\r\n            <para>\r\n            We loop on all the children 'c' in 'pn'.\r\n            </para>\r\n            <para>\r\n            If the child 'c' has been already linked to a child of\r\n            'log' then there is no need to update 'c'.\r\n            </para>\r\n            <para>\r\n            Otherwise, we set log's parent field to c's parent and set\r\n            c's parent field to log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddLevel(log4net.Repository.Hierarchy.Hierarchy.LevelEntry)\">\r\n            <summary>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"levelEntry\">the level values</param>\r\n            <remarks>\r\n            <para>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </para>\r\n            <para>\r\n            Supports setting levels via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"propertyEntry\">the property value</param>\r\n            <remarks>\r\n            <para>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument.\r\n            </para>\r\n            <para>\r\n            Supports setting property values via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Hierarchy.declaringType\">\r\n            <summary>\n            The fully qualified type of the Hierarchy class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\">\r\n            <summary>\n            Event used to notify that a logger has been created.\n            </summary>\n            <remarks>\n            <para>\n            Event raised when a logger is created.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.EmittedNoAppenderWarning\">\r\n            <summary>\n            Has no appender warning been emitted\n            </summary>\n            <remarks>\n            <para>\n            Flag to indicate if we have already issued a warning\n            about not having an appender warning.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.Root\">\r\n            <summary>\n            Get the root of this hierarchy\n            </summary>\n            <remarks>\n            <para>\n            Get the root of this hierarchy.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LoggerFactory\">\r\n            <summary>\r\n            Gets or sets the default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> instance.\r\n            </summary>\r\n            <value>The default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/></value>\r\n            <remarks>\r\n            <para>\r\n            The logger factory is used to create logger instances.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\">\r\n            <summary>\n            A class to hold the value, name and display name for a level\n            </summary>\n            <remarks>\n            <para>\n            A class to hold the value, name and display name for a level\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.ToString\">\r\n            <summary>\n            Override <c>Object.ToString</c> to return sensible debug info\n            </summary>\n            <returns>string info about this object</returns>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Value\">\r\n            <summary>\n            Value of the level\n            </summary>\n            <remarks>\n            <para>\n            If the value is not set (defaults to -1) the value will be looked\n            up for the current level with the same name.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Name\">\r\n            <summary>\n            Name of the level\n            </summary>\n            <value>\n            The name of the level\n            </value>\n            <remarks>\n            <para>\n            The name of the level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.DisplayName\">\r\n            <summary>\n            Display name for the level\n            </summary>\n            <value>\n            The display name of the level\n            </value>\n            <remarks>\n            <para>\n            The display name of the level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerKey\">\r\n            <summary>\r\n            Used internally to accelerate hash table searches.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to improve performance of \r\n            string keyed hashtables.\r\n            </para>\r\n            <para>\r\n            The hashcode of the string is cached for reuse.\r\n            The string is stored as an interned value.\r\n            When comparing two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> objects for equality \r\n            the reference equality of the interned strings is compared.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.#ctor(System.String)\">\r\n            <summary>\r\n            Construct key with string name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> class \r\n            with the specified name.\r\n            </para>\r\n            <para>\r\n            Stores the hashcode of the string and interns\r\n            the string key to optimize comparisons.\r\n            </para>\r\n            <note>\r\n            The Compact Framework 1.0 the <see cref=\"M:System.String.Intern(System.String)\"/>\r\n            method does not work. On the Compact Framework\r\n            the string keys are not interned nor are they\r\n            compared by reference.\r\n            </note>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.GetHashCode\">\r\n            <summary>\n            Returns a hash code for the current instance.\n            </summary>\n            <returns>A hash code for the current instance.</returns>\n            <remarks>\n            <para>\n            Returns the cached hashcode.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.Equals(System.Object)\">\r\n            <summary>\r\n            Determines whether two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> instances \r\n            are equal.\r\n            </summary>\r\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the references of the interned strings.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ProvisionNode\">\r\n            <summary>\r\n            Provision nodes are used where no logger instance has been specified\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> instances are used in the \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> when there is no specified \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> for that node.\r\n            </para>\r\n            <para>\r\n            A provision node holds a list of child loggers on behalf of\r\n            a logger that does not exist.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ProvisionNode.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Create a new provision node with child node\r\n            </summary>\r\n            <param name=\"log\">A child logger to add to this node.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> class \r\n            with the specified child logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.RootLogger\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> sits at the root of the logger hierarchy tree. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> is a regular <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> except \r\n            that it provides several guarantees.\r\n            </para>\r\n            <para>\r\n            First, it cannot be assigned a <c>null</c>\r\n            level. Second, since the root logger cannot have a parent, the\r\n            <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\"/> property always returns the value of the\r\n            level field without walking the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.RootLogger.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Construct a <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/>\r\n            </summary>\r\n            <param name=\"level\">The level to assign to the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> class with\r\n            the specified logging level.\r\n            </para>\r\n            <para>\r\n            The root logger names itself as \"root\". However, the root\r\n            logger cannot be retrieved by name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.RootLogger.declaringType\">\r\n            <summary>\n            The fully qualified type of the RootLogger class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\">\r\n            <summary>\r\n            Gets the assigned level value without walking the logger hierarchy.\r\n            </summary>\r\n            <value>The assigned level value without walking the logger hierarchy.</value>\r\n            <remarks>\r\n            <para>\r\n            Because the root logger cannot have a parent and its level\r\n            must not be <c>null</c> this property just returns the\r\n            value of <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> for the root logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> of the root logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting the level of the root logger to a <c>null</c> reference\r\n            may have catastrophic results. We prevent this here.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\">\r\n            <summary>\r\n            Initializes the log4net environment using an XML DOM.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> using an XML DOM.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.#ctor(log4net.Repository.Hierarchy.Hierarchy)\">\r\n            <summary>\r\n            Construct the configurator for a hierarchy\r\n            </summary>\r\n            <param name=\"hierarchy\">The hierarchy to build.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\"/> class\r\n            with the specified <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\n            Configure the hierarchy by parsing a DOM tree of XML elements.\n            </summary>\n            <param name=\"element\">The root element to parse.</param>\n            <remarks>\n            <para>\n            Configure the hierarchy by parsing a DOM tree of XML elements.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindAppenderByReference(System.Xml.XmlElement)\">\r\n            <summary>\n            Parse appenders by IDREF.\n            </summary>\n            <param name=\"appenderRef\">The appender ref element.</param>\n            <returns>The instance of the appender that the ref refers to.</returns>\n            <remarks>\n            <para>\n            Parse an XML element that represents an appender and return \n            the appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(System.Xml.XmlElement)\">\r\n            <summary>\n            Parses an appender element.\n            </summary>\n            <param name=\"appenderElement\">The appender element.</param>\n            <returns>The appender instance or <c>null</c> when parsing failed.</returns>\n            <remarks>\n            <para>\n            Parse an XML element that represents an appender and return\n            the appender instance.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLogger(System.Xml.XmlElement)\">\r\n            <summary>\n            Parses a logger element.\n            </summary>\n            <param name=\"loggerElement\">The logger element.</param>\n            <remarks>\n            <para>\n            Parse an XML element that represents a logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRoot(System.Xml.XmlElement)\">\r\n            <summary>\n            Parses the root logger element.\n            </summary>\n            <param name=\"rootElement\">The root element.</param>\n            <remarks>\n            <para>\n            Parse an XML element that represents the root logger.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseChildrenOfLoggerElement(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\n            Parses the children of a logger element.\n            </summary>\n            <param name=\"catElement\">The category element.</param>\n            <param name=\"log\">The logger instance.</param>\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\n            <remarks>\n            <para>\n            Parse the child elements of a &lt;logger&gt; element.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRenderer(System.Xml.XmlElement)\">\r\n            <summary>\n            Parses an object renderer.\n            </summary>\n            <param name=\"element\">The renderer element.</param>\n            <remarks>\n            <para>\n            Parse an XML element that represents a renderer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLevel(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\n            Parses a level element.\n            </summary>\n            <param name=\"element\">The level element.</param>\n            <param name=\"log\">The logger object to set the level on.</param>\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\n            <remarks>\n            <para>\n            Parse an XML element that represents a level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(System.Xml.XmlElement,System.Object)\">\r\n            <summary>\n            Sets a parameter on an object.\n            </summary>\n            <param name=\"element\">The parameter element.</param>\n            <param name=\"target\">The object to set the parameter on.</param>\n            <remarks>\n            The parameter name must correspond to a writable property\n            on the object. The value of the parameter is a string,\n            therefore this function will attempt to set a string\n            property first. If unable to set a string property it\n            will inspect the property and its argument type. It will\n            attempt to call a static method called <c>Parse</c> on the\n            type of the property. This method will take a single\n            string argument and return a value that can be used to\n            set the property.\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.HasAttributesOrElements(System.Xml.XmlElement)\">\r\n            <summary>\n            Test if an element has no attributes or child elements\n            </summary>\n            <param name=\"element\">the element to inspect</param>\n            <returns><c>true</c> if the element has any attributes or child elements, <c>false</c> otherwise</returns>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.IsTypeConstructible(System.Type)\">\r\n            <summary>\r\n            Test if a <see cref=\"T:System.Type\"/> is constructible with <c>Activator.CreateInstance</c>.\r\n            </summary>\r\n            <param name=\"type\">the type to inspect</param>\r\n            <returns><c>true</c> if the type is creatable using a default constructor, <c>false</c> otherwise</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindMethodInfo(System.Type,System.String)\">\r\n            <summary>\n            Look for a method on the <paramref name=\"targetType\"/> that matches the <paramref name=\"name\"/> supplied\n            </summary>\n            <param name=\"targetType\">the type that has the method</param>\n            <param name=\"name\">the name of the method</param>\n            <returns>the method info found</returns>\n            <remarks>\n            <para>\n            The method must be a public instance method on the <paramref name=\"targetType\"/>.\n            The method must be named <paramref name=\"name\"/> or \"Add\" followed by <paramref name=\"name\"/>.\n            The method must take a single parameter.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\n            Converts a string value to a target type.\n            </summary>\n            <param name=\"type\">The type of object to convert the string to.</param>\n            <param name=\"value\">The string value to use as the value of the object.</param>\n            <returns>\n            <para>\n            An object of type <paramref name=\"type\"/> with value <paramref name=\"value\"/> or \n            <c>null</c> when the conversion could not be performed.\n            </para>\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(System.Xml.XmlElement,System.Type,System.Type)\">\r\n            <summary>\n            Creates an object as specified in XML.\n            </summary>\n            <param name=\"element\">The XML element that contains the definition of the object.</param>\n            <param name=\"defaultTargetType\">The object type to use if not explicitly specified.</param>\n            <param name=\"typeConstraint\">The type that the returned object must be or must inherit from.</param>\n            <returns>The object or <c>null</c></returns>\n            <remarks>\n            <para>\n            Parse an XML element and create an object instance based on the configuration\n            data.\n            </para>\n            <para>\n            The type of the instance may be specified in the XML. If not\n            specified then the <paramref name=\"defaultTargetType\"/> is used\n            as the type. However the type is specified it must support the\n            <paramref name=\"typeConstraint\"/> type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_appenderBag\">\r\n            <summary>\n            key: appenderName, value: appender.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_hierarchy\">\r\n            <summary>\n            The Hierarchy being configured.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.declaringType\">\r\n            <summary>\n            The fully qualified type of the XmlHierarchyConfigurator class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Repository.ConfigurationChangedEventArgs\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Repository.ConfigurationChangedEventArgs.#ctor(System.Collections.ICollection)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"configurationMessages\"></param>\n        </member>\r\n        <member name=\"P:log4net.Repository.ConfigurationChangedEventArgs.ConfigurationMessages\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryShutdownEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository shutdown event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository shutdown event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationResetEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository configuration reset event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration reset.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository configuration reset event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationChangedEventHandler\">\r\n            <summary>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration changed.</param>\r\n            <param name=\"e\">Empty event arguments.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.AppDomainPatternConverter\">\r\n            <summary>\n            Write the name of the current AppDomain to the output\n            </summary>\n            <remarks>\n            <para>\n            Write the name of the current AppDomain to the output writer\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.AppDomainPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write the name of the current AppDomain to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Writes name of the current AppDomain to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The date and time is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date and time passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the DatePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter\">\r\n            <summary>\r\n            Write an <see cref=\"T:System.Environment.SpecialFolder\"/> folder path to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an special path environment folder path to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output. <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            should be a value in the <see cref=\"T:System.Environment.SpecialFolder\"/> enumeration.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an special path environment folder path to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the special path environment folder path to the output <paramref name=\"writer\"/>.\r\n            The name of the special path environment folder path to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the EnvironmentFolderPathPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentPatternConverter\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an environment variable to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the environment variable to the output <paramref name=\"writer\"/>.\r\n            The name of the environment variable to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the EnvironmentPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.IdentityPatternConverter\">\r\n            <summary>\n            Write the current thread identity to the output\n            </summary>\n            <remarks>\n            <para>\n            Write the current thread identity to the output writer\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.IdentityPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write the current thread identity to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Writes the current thread identity to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.IdentityPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the IdentityPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\">\r\n            <summary>\r\n            Pattern converter for literal string instances in the pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the literal string value specified in the \r\n            <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property to \r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Set the next converter in the chain\r\n            </summary>\r\n            <param name=\"pc\">The next pattern converter in the chain</param>\r\n            <returns>The next pattern converter</returns>\r\n            <remarks>\r\n            <para>\r\n            Special case the building of the pattern converter chain\r\n            for <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> instances. Two adjacent\r\n            literals in the pattern can be represented by a single combined\r\n            pattern converter. This implementation detects when a \r\n            <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> is added to the chain\r\n            after this converter and combines its value with this converter's\r\n            literal value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the literal to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            Override the formatting behavior to ignore the FormattingInfo\r\n            because we have a literal instead.\r\n            </para>\r\n            <para>\r\n            Writes the value of <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Convert this pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            This method is not used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.NewLinePatternConverter\">\r\n            <summary>\r\n            Writes a newline to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the system dependent line terminator to the output.\r\n            This behavior can be overridden by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <listheader>\r\n                <term>Option Value</term>\r\n                <description>Output</description>\r\n              </listheader>\r\n              <item>\r\n                <term>DOS</term>\r\n                <description>DOS or Windows line terminator <c>\"\\r\\n\"</c></description>\r\n              </item>\r\n              <item>\r\n                <term>UNIX</term>\r\n                <description>UNIX line terminator <c>\"\\n\"</c></description>\r\n              </item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.ProcessIdPatternConverter\">\r\n            <summary>\n            Write the current process ID to the output\n            </summary>\n            <remarks>\n            <para>\n            Write the current process ID to the output writer\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write the current process ID to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Write the current process ID to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the ProcessIdPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This pattern converter reads the thread and global properties.\r\n            The thread properties take priority over global properties.\r\n            See <see cref=\"P:log4net.ThreadContext.Properties\"/> for details of the \r\n            thread properties. See <see cref=\"P:log4net.GlobalContext.Properties\"/> for\r\n            details of the global properties.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified then that will be used to\r\n            lookup a single property. If no <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified\r\n            then all properties will be dumped as a list of key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.PropertyPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.RandomStringPatternConverter\">\r\n            <summary>\r\n            A Pattern converter that generates a string of random characters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The converter generates a string of random characters. By default\r\n            the string is length 4. This can be changed by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the string value of the length required.\r\n            </para>\r\n            <para>\r\n            The random characters in the string are limited to uppercase letters\r\n            and numbers only.\r\n            </para>\r\n            <para>\r\n            The random number generator used by this class is not cryptographically secure.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.s_random\">\r\n            <summary>\n            Shared random number generator\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.m_length\">\r\n            <summary>\n            Length of random string to generate. Default length 4.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write a randoim string to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Write a randoim string to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the RandomStringPatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UserNamePatternConverter\">\r\n            <summary>\n            Write the current threads username to the output\n            </summary>\n            <remarks>\n            <para>\n            Write the current threads username to the output writer\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UserNamePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\n            Write the current threads username to the output\n            </summary>\n            <param name=\"writer\">the writer to write to</param>\n            <param name=\"state\">null, state is not set</param>\n            <remarks>\n            <para>\n            Write the current threads username to the output <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UserNamePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the UserNamePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the UTC date time to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UtcDatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date and time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date is in Universal time when it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UtcDatePatternConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the UtcDatePatternConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.BooleanConverter\">\r\n            <summary>\r\n            Type converter for Boolean.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <c>bool</c> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the source object to the type supported by this object\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Boolean.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Boolean\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            <summary>\r\n            Exception base type for conversion errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object,System.Exception)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConverterRegistry\">\r\n            <summary>\r\n            Register of type converters for specific types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a registry of type converters used to convert between\r\n            types.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\"/> and \r\n            <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\"/> methods to register new converters.\r\n            The <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\"/> and <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\"/> methods\r\n            lookup appropriate converters to use.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n            <remarks>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/> class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#cctor\">\r\n            <summary>\n            Static constructor.\n            </summary>\n            <remarks>\n            <para>\n            This constructor defines the intrinsic type converters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\">\r\n            <summary>\n            Adds a converter for a specific type.\n            </summary>\n            <param name=\"destinationType\">The type being converted to.</param>\n            <param name=\"converter\">The type converter to use to convert to the destination type.</param>\n            <remarks>\n            <para>\n            Adds a converter instance for a specific type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\">\r\n            <summary>\r\n            Adds a converter for a specific type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <param name=\"converterType\">The type of the type converter to use to convert to the destination type.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a converter <see cref=\"T:System.Type\"/> for a specific type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\">\r\n            <summary>\n            Gets the type converter to use to convert values to the destination type.\n            </summary>\n            <param name=\"sourceType\">The type being converted from.</param>\n            <param name=\"destinationType\">The type being converted to.</param>\n            <returns>\n            The type converter instance to use for type conversions or <c>null</c> \n            if no type converter is found.\n            </returns>\n            <remarks>\n            <para>\n            Gets the type converter to use to convert values to the destination type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\">\r\n            <summary>\n            Gets the type converter to use to convert values to the destination type.\n            </summary>\n            <param name=\"destinationType\">The type being converted to.</param>\n            <returns>\n            The type converter instance to use for type conversions or <c>null</c> \n            if no type converter is found.\n            </returns>\n            <remarks>\n            <para>\n            Gets the type converter to use to convert values to the destination type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConverterFromAttribute(System.Type)\">\r\n            <summary>\n            Lookups the type converter to use as specified by the attributes on the \n            destination type.\n            </summary>\n            <param name=\"destinationType\">The type being converted to.</param>\n            <returns>\n            The type converter instance to use for type conversions or <c>null</c> \n            if no type converter is found.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.CreateConverterInstance(System.Type)\">\r\n            <summary>\r\n            Creates the instance of the type converter.\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The type specified for the type converter must implement \r\n            the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> or <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces \r\n            and must have a public default (no argument) constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.declaringType\">\r\n            <summary>\n            The fully qualified type of the ConverterRegistry class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.s_type2converter\">\r\n            <summary>\r\n            Mapping from <see cref=\"T:System.Type\"/> to type converter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.EncodingConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an encoding</param>\r\n            <returns>the encoding</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Text.Encoding.GetEncoding(System.String)\"/> method to \r\n            convert the <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Text.Encoding\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertTo\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from a single type to arbitrary types.\r\n            See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.CanConvertTo(System.Type)\">\r\n            <summary>\n            Returns whether this converter can convert the object to the specified type\n            </summary>\n            <param name=\"targetType\">A Type that represents the type you want to convert to</param>\n            <returns>true if the conversion is possible</returns>\n            <remarks>\n            <para>\n            Test if the type supported by this converter can be converted to the\n            <paramref name=\"targetType\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\n            Converts the given value object to the specified type, using the arguments\n            </summary>\n            <param name=\"source\">the object to convert</param>\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\n            <returns>the converted object</returns>\n            <remarks>\n            <para>\n            Converts the <paramref name=\"source\"/> (which must be of the type supported\n            by this converter) to the <paramref name=\"targetType\"/> specified..\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IPAddressConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an IPAddress</param>\r\n            <returns>the IPAddress</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Net.IPAddress.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Net.IPAddress\"/>.\r\n            If that fails then the string is resolved as a DNS hostname.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.IPAddressConverter.validIpAddressChars\">\r\n            <summary>\n            Valid characters in an IPv4 or IPv6 address string. (Does not support subnets)\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternLayoutConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Layout.PatternLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternLayout</param>\r\n            <returns>the PatternLayout</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Layout.PatternLayout\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternStringConverter\">\r\n            <summary>\r\n            Convert between string and <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Util.PatternString\"/> type, \r\n            and from a <see cref=\"T:log4net.Util.PatternString\"/> type to a string.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Util.PatternString\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\">\r\n            <summary>\r\n            Can the target type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"targetType\">A <see cref=\"T:System.Type\"/> that represents the type you want to convert to</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"targetType\"/> is\r\n            assignable from a <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts the given value object to the specified type, using the arguments\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Util.PatternString.Format\"/> method to convert the\r\n            <see cref=\"T:log4net.Util.PatternString\"/> argument to a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            <paramref name=\"targetType\"/>. To check for this condition use the \r\n            <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\"/> method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternString</param>\r\n            <returns>the PatternString</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Util.PatternString\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a Type</param>\r\n            <returns>the Type</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Type\"/>.\r\n            Additional effort is made to locate partially specified types\r\n            by searching the loaded assemblies.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\">\r\n            <summary>\n            Attribute used to associate a type converter\n            </summary>\n            <remarks>\n            <para>\n            Class and Interface level attribute that specifies a type converter\n            to use with the associated type.\n            </para>\n            <para>\n            To associate a type converter with a target type apply a\n            <c>TypeConverterAttribute</c> to the target type. Specify the\n            type of the type converter on the attribute.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.TypeConverterAttribute.m_typeName\">\r\n            <summary>\n            The string type name of the type converter\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type name\r\n            </summary>\r\n            <param name=\"typeName\">The string type name of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TypeConverters.TypeConverterAttribute.ConverterTypeName\">\r\n            <summary>\r\n            The string type name of the type converter \r\n            </summary>\r\n            <value>\r\n            The string type name of the type converter \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.AppenderAttachedImpl\">\r\n            <summary>\r\n            A straightforward implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the default implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/>\r\n            interface. Implementors of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            should aggregate an instance of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.AppenderAttachedImpl\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.CallAppend(log4net.Appender.IAppender,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Calls the DoAppende method on the <see cref=\"T:log4net.Appender.IAppender\"/> with \r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> objects supplied.\r\n            </summary>\r\n            <param name=\"appender\">The appender</param>\r\n            <param name=\"loggingEvents\">The events</param>\r\n            <remarks>\r\n            <para>\r\n            If the <paramref name=\"appender\"/> supports the <see cref=\"T:log4net.Appender.IBulkAppender\"/>\r\n            interface then the <paramref name=\"loggingEvents\"/> will be passed \r\n            through using that interface. Otherwise the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the array will be passed one at a time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\n            Attaches an appender.\n            </summary>\n            <param name=\"newAppender\">The appender to add.</param>\n            <remarks>\n            <para>\n            If the appender is already in the list it won't be added again.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.GetAppender(System.String)\">\r\n            <summary>\n            Gets an attached appender with the specified name.\n            </summary>\n            <param name=\"name\">The name of the appender to get.</param>\n            <returns>\n            The appender with the name specified, or <c>null</c> if no appender with the\n            specified name is found.\n            </returns>\n            <remarks>\n            <para>\n            Lookup an attached appender by name.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAllAppenders\">\r\n            <summary>\n            Removes all attached appenders.\n            </summary>\n            <remarks>\n            <para>\n            Removes and closes all attached appenders\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderList\">\r\n            <summary>\n            List of appenders\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderArray\">\r\n            <summary>\n            Array of appenders, used to cache the m_appenderList\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.declaringType\">\r\n            <summary>\n            The fully qualified type of the AppenderAttachedImpl class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.AppenderAttachedImpl.Appenders\">\r\n            <summary>\n            Gets all attached appenders.\n            </summary>\n            <returns>\n            A collection of attached appenders, or <c>null</c> if there\n            are no attached appenders.\n            </returns>\n            <remarks>\n            <para>\n            The read only collection of all currently attached appenders.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.CompositeProperties\">\r\n            <summary>\r\n            This class aggregates several PropertiesDictionary collections together.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Provides a dictionary style lookup over an ordered list of\r\n            <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CompositeProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Add(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\n            Add a Properties Dictionary to this composite collection\n            </summary>\n            <param name=\"properties\">the properties to add</param>\n            <remarks>\n            <para>\n            Properties dictionaries added first take precedence over dictionaries added\n            later.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Flatten\">\r\n            <summary>\n            Flatten this composite collection into a single properties dictionary\n            </summary>\n            <returns>the flattened dictionary</returns>\n            <remarks>\n            <para>\n            Reduces the collection of ordered dictionaries to a single dictionary\n            containing the resultant values for the keys.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.CompositeProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Looks up the value for the <paramref name=\"key\"/> specified.\r\n            The <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections are searched\r\n            in the order in which they were added to this collection. The value\r\n            returned is the value held by the first collection that contains\r\n            the specified key.\r\n            </para>\r\n            <para>\r\n            If none of the collections contain the specified key then\r\n            <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ContextPropertiesBase\">\r\n            <summary>\n            Base class for Context Properties implementations\n            </summary>\n            <remarks>\n            <para>\n            This class defines a basic property get set accessor\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"P:log4net.Util.ContextPropertiesBase.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of a property\n            </summary>\n            <value>\n            The value for the property with the specified key\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the value of a property\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ConverterInfo\">\r\n            <summary>\n            Wrapper class used to map converter names to converter types\n            </summary>\n            <remarks>\n            <para>\n            Pattern converter info class used during configuration by custom\n            PatternString and PatternLayer converters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.#ctor\">\r\n            <summary>\n            default constructor\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"entry\"></param>\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Name\">\r\n            <summary>\n            Gets or sets the name of the conversion pattern\n            </summary>\n            <remarks>\n            <para>\n            The name of the pattern in the format string\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Type\">\r\n            <summary>\r\n            Gets or sets the type of the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The value specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Properties\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.CountingQuietTextWriter\">\r\n            <summary>\r\n            Subclass of <see cref=\"T:log4net.Util.QuietTextWriter\"/> that maintains a count of \r\n            the number of bytes written.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer counts the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.QuietTextWriter\">\r\n            <summary>\r\n            <see cref=\"T:System.IO.TextWriter\"/> that does not leak exceptions\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/> does not throw exceptions when things go wrong. \r\n            Instead, it delegates error handling to its <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TextWriterAdapter\">\r\n            <summary>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TextWriterAdapter.m_writer\">\r\n            <summary>\n            The writer to forward messages to\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to forward to</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Close\">\r\n            <summary>\n            Closes the writer and releases any system resources associated with the writer\n            </summary>\n            <remarks>\n            <para>\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Dispose(System.Boolean)\">\r\n            <summary>\n            Dispose this writer\n            </summary>\n            <param name=\"disposing\">flag indicating if we are being disposed</param>\n            <remarks>\n            <para>\n            Dispose this writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Flush\">\r\n            <summary>\n            Flushes any buffered output\n            </summary>\n            <remarks>\n            <para>\n            Clears all buffers for the writer and causes any buffered data to be written \n            to the underlying device\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char)\">\r\n            <summary>\n            Writes a character to the wrapped TextWriter\n            </summary>\n            <param name=\"value\">the value to write to the TextWriter</param>\n            <remarks>\n            <para>\n            Writes a character to the wrapped TextWriter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\n            Writes a character buffer to the wrapped TextWriter\n            </summary>\n            <param name=\"buffer\">the data buffer</param>\n            <param name=\"index\">the start index</param>\n            <param name=\"count\">the number of characters to write</param>\n            <remarks>\n            <para>\n            Writes a character buffer to the wrapped TextWriter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.String)\">\r\n            <summary>\n            Writes a string to the wrapped TextWriter\n            </summary>\n            <param name=\"value\">the value to write to the TextWriter</param>\n            <remarks>\n            <para>\n            Writes a string to the wrapped TextWriter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Writer\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Encoding\">\r\n            <summary>\r\n            The Encoding in which the output is written\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.TextWriterAdapter.Encoding\"/>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The Encoding in which the output is written\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.FormatProvider\">\r\n            <summary>\n            Gets an object that controls formatting\n            </summary>\n            <value>\n            The format provider\n            </value>\n            <remarks>\n            <para>\n            Gets an object that controls formatting\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.NewLine\">\r\n            <summary>\n            Gets or sets the line terminator string used by the TextWriter\n            </summary>\n            <value>\n            The line terminator to use\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the line terminator string used by the TextWriter\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\n            Constructor\n            </summary>\n            <param name=\"writer\">the writer to actually write to</param>\n            <param name=\"errorHandler\">the error handler to report error to</param>\n            <remarks>\n            <para>\n            Create a new QuietTextWriter using a writer and error handler\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char)\">\r\n            <summary>\n            Writes a character to the underlying writer\n            </summary>\n            <param name=\"value\">the char to write</param>\n            <remarks>\n            <para>\n            Writes a character to the underlying writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\n            Writes a buffer to the underlying writer\n            </summary>\n            <param name=\"buffer\">the buffer to write</param>\n            <param name=\"index\">the start index to write from</param>\n            <param name=\"count\">the number of characters to write</param>\n            <remarks>\n            <para>\n            Writes a buffer to the underlying writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.String)\">\r\n            <summary>\n            Writes a string to the output.\n            </summary>\n            <param name=\"value\">The string data to write to the output.</param>\n            <remarks>\n            <para>\n            Writes a string to the output.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Close\">\r\n            <summary>\n            Closes the underlying output writer.\n            </summary>\n            <remarks>\n            <para>\n            Closes the underlying output writer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_errorHandler\">\r\n            <summary>\n            The error handler instance to pass all errors to\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_closed\">\r\n            <summary>\n            Flag to indicate if this writer is closed\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.ErrorHandler\">\r\n            <summary>\n            Gets or sets the error handler that all errors are passed to.\n            </summary>\n            <value>\n            The error handler that all errors are passed to.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the error handler that all errors are passed to.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.Closed\">\r\n            <summary>\n            Gets a value indicating whether this writer is closed.\n            </summary>\n            <value>\n            <c>true</c> if this writer is closed, otherwise <c>false</c>.\n            </value>\n            <remarks>\n            <para>\n            Gets a value indicating whether this writer is closed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to actually write to.</param>\r\n            <param name=\"errorHandler\">The <see cref=\"T:log4net.Core.IErrorHandler\"/> to report errors to.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.CountingQuietTextWriter\"/> class \r\n            with the specified <see cref=\"T:System.IO.TextWriter\"/> and <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"value\">the char to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a buffer to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"buffer\">the buffer to write</param>\r\n            <param name=\"index\">the start index to write from</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the output and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"str\">The string data to write to the output.</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.CountingQuietTextWriter.m_countBytes\">\r\n            <summary>\n            Total number of bytes written.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.CountingQuietTextWriter.Count\">\r\n            <summary>\n            Gets or sets the total number of bytes written.\n            </summary>\n            <value>\n            The total number of bytes written.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the total number of bytes written.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.CyclicBuffer\">\r\n            <summary>\n            A fixed size rolling buffer of logging events.\n            </summary>\n            <remarks>\n            <para>\n            An array backed fixed size leaky bucket.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.#ctor(System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"maxSize\">The maximum number of logging events in the buffer.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CyclicBuffer\"/> class with \r\n            the specified maximum number of buffered logging events.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"maxSize\"/> argument is not a positive integer.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\n            Appends a <paramref name=\"loggingEvent\"/> to the buffer.\n            </summary>\n            <param name=\"loggingEvent\">The event to append to the buffer.</param>\n            <returns>The event discarded from the buffer, if the buffer is full, otherwise <c>null</c>.</returns>\n            <remarks>\n            <para>\n            Append an event to the buffer. If the buffer still contains free space then\n            <c>null</c> is returned. If the buffer is full then an event will be dropped\n            to make space for the new event, the event dropped is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopOldest\">\r\n            <summary>\n            Get and remove the oldest event in the buffer.\n            </summary>\n            <returns>The oldest logging event in the buffer</returns>\n            <remarks>\n            <para>\n            Gets the oldest (first) logging event in the buffer and removes it \n            from the buffer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopAll\">\r\n            <summary>\n            Pops all the logging events from the buffer into an array.\n            </summary>\n            <returns>An array of all the logging events in the buffer.</returns>\n            <remarks>\n            <para>\n            Get all the events in the buffer and clear the buffer.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Clear\">\r\n            <summary>\n            Clear the buffer\n            </summary>\n            <remarks>\n            <para>\n            Clear the buffer of all events. The events in the buffer are lost.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Item(System.Int32)\">\r\n            <summary>\n            Gets the <paramref name=\"i\"/>th oldest event currently in the buffer.\n            </summary>\n            <value>The <paramref name=\"i\"/>th oldest event currently in the buffer.</value>\n            <remarks>\n            <para>\n            If <paramref name=\"i\"/> is outside the range 0 to the number of events\n            currently in the buffer, then <c>null</c> is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.MaxSize\">\r\n            <summary>\n            Gets the maximum size of the buffer.\n            </summary>\n            <value>The maximum size of the buffer.</value>\n            <remarks>\n            <para>\n            Gets the maximum size of the buffer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Length\">\r\n            <summary>\r\n            Gets the number of logging events in the buffer.\r\n            </summary>\r\n            <value>The number of logging events in the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            This number is guaranteed to be in the range 0 to <see cref=\"P:log4net.Util.CyclicBuffer.MaxSize\"/>\r\n            (inclusive).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyCollection\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.ICollection\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyCollection\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyCollection.s_instance\">\r\n            <summary>\n            The singleton instance of the empty collection.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Instance\">\r\n            <summary>\n            Gets the singleton instance of the empty collection.\n            </summary>\n            <returns>The singleton instance of the empty collection.</returns>\n            <remarks>\n            <para>\n            Gets the singleton instance of the empty collection.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyCollection.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyCollection.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyDictionary\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionary\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Add(System.Object,System.Object)\">\r\n            <summary>\r\n            Adds an element with the provided key and value to the \r\n            <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The <see cref=\"T:System.Object\"/> to use as the key of the element to add.</param>\r\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to use as the value of the element to add.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no new values can be added. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Clear\">\r\n            <summary>\r\n            Removes all elements from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\">\r\n            <summary>\r\n            Determines whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> contains an element \r\n            with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key to locate in the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</param>\r\n            <returns><c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\"/> method always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Remove(System.Object)\">\r\n            <summary>\r\n            Removes the element with the specified key from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to remove.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyDictionary.s_instance\">\r\n            <summary>\n            The singleton instance of the empty dictionary.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <b>true</b>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyDictionary.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyDictionary.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> has a fixed size.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsFixedSize\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> is read-only.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsReadOnly\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Keys\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Values\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Item(System.Object)\">\r\n            <summary>\r\n            Gets or sets the element with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to get or set.</param>\r\n            <value><c>null</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be looked up or stored. \r\n            If the index getter is called then <c>null</c> is returned.\r\n            A <see cref=\"T:System.InvalidOperationException\"/> is thrown if the setter is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.FormattingInfo\">\r\n            <summary>\r\n            Contain the information obtained when parsing formatting modifiers \r\n            in conversion modifiers.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Holds the formatting information extracted from the format string by\r\n            the <see cref=\"T:log4net.Util.PatternParser\"/>. This is used by the <see cref=\"T:log4net.Util.PatternConverter\"/>\r\n            objects when rendering the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor\">\r\n            <summary>\r\n            Defaut Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor(System.Int32,System.Int32,System.Boolean)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class\r\n            with the specified parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Min\">\r\n            <summary>\n            Gets or sets the minimum value.\n            </summary>\n            <value>\n            The minimum value.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the minimum value.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Max\">\r\n            <summary>\n            Gets or sets the maximum value.\n            </summary>\n            <value>\n            The maximum value.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the maximum value.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.LeftAlign\">\r\n            <summary>\n            Gets or sets a flag indicating whether left align is enabled\n            or not.\n            </summary>\n            <value>\n            A flag indicating whether left align is enabled or not.\n            </value>\n            <remarks>\n            <para>\n            Gets or sets a flag indicating whether left align is enabled or not.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.GlobalContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.GlobalContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class implements a properties collection that is thread safe and supports both\r\n            storing properties and capturing a read only copy of the current propertied.\r\n            </para>\r\n            <para>\r\n            This class is optimized to the scenario where the properties are read frequently\r\n            and are modified infrequently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_readOnlyProperties\">\r\n            <summary>\n            The read only copy of the properties.\n            </summary>\n            <remarks>\n            <para>\n            This variable is declared <c>volatile</c> to prevent the compiler and JIT from\n            reordering reads and writes of this thread performed on different threads.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_syncRoot\">\r\n            <summary>\n            Lock object used to synchronize updates within this instance\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.GlobalContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Remove(System.String)\">\r\n            <summary>\n            Remove a property from the global context\n            </summary>\n            <param name=\"key\">the key for the entry to remove</param>\n            <remarks>\n            <para>\n            Removing an entry from the global context properties is relatively expensive compared\n            with reading a value. \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Clear\">\r\n            <summary>\n            Clear the global context properties\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.GetReadOnlyProperties\">\r\n            <summary>\n            Get a readonly immutable copy of the properties\n            </summary>\n            <returns>the current global context properties</returns>\n            <remarks>\n            <para>\n            This implementation is fast because the GlobalContextProperties class\n            stores a readonly copy of the properties.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.GlobalContextProperties.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of a property\n            </summary>\n            <value>\n            The value for the property with the specified key\n            </value>\n            <remarks>\n            <para>\n            Reading the value for a key is faster than setting the value.\n            When the value is written a new read only copy of \n            the properties is created.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMapping\">\r\n            <summary>\r\n            Manages a mapping from levels to <see cref=\"T:log4net.Util.LevelMappingEntry\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Manages an ordered mapping from <see cref=\"T:log4net.Core.Level\"/> instances \r\n            to <see cref=\"T:log4net.Util.LevelMappingEntry\"/> subclasses.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialise a new instance of <see cref=\"T:log4net.Util.LevelMapping\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Add(log4net.Util.LevelMappingEntry)\">\r\n            <summary>\r\n            Add a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> to this mapping\r\n            </summary>\r\n            <param name=\"entry\">the entry to add</param>\r\n            <remarks>\r\n            <para>\r\n            If a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> has previously been added\r\n            for the same <see cref=\"T:log4net.Core.Level\"/> then that entry will be \r\n            overwritten.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Lookup(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup the mapping for the specified level\r\n            </summary>\r\n            <param name=\"level\">the level to lookup</param>\r\n            <returns>the <see cref=\"T:log4net.Util.LevelMappingEntry\"/> for the level or <c>null</c> if no mapping found</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup the value for the specified level. Finds the nearest\r\n            mapping value for the level that is equal to or less than the\r\n            <paramref name=\"level\"/> specified.\r\n            </para>\r\n            <para>\r\n            If no mapping could be found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.ActivateOptions\">\r\n            <summary>\r\n            Initialize options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Caches the sorted list of <see cref=\"T:log4net.Util.LevelMappingEntry\"/> in an array\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogicalThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.LogicalThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            <para>\r\n            This class stores its properties in a slot on the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> named\r\n            <c>log4net.Util.LogicalThreadContextProperties</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.m_disabled\">\r\n            <summary>\n            Flag used to disable this context if we don't have permission to access the CallContext.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogicalThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Remove(System.String)\">\r\n            <summary>\n            Remove a property\n            </summary>\n            <param name=\"key\">the key for the entry to remove</param>\n            <remarks>\n            <para>\n            Remove the value for the specified <paramref name=\"key\"/> from the context.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Clear\">\r\n            <summary>\n            Clear all the context properties\n            </summary>\n            <remarks>\n            <para>\n            Clear all the context properties\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\n            Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread.\n            </summary>\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\n            <returns>the properties for this thread</returns>\n            <remarks>\n            <para>\n            The collection returned is only to be used on the calling thread. If the\n            caller needs to share the collection between different threads then the \n            caller must clone the collection before doings so.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetCallContextData\">\r\n            <summary>\r\n            Gets the call context get data.\r\n            </summary>\r\n            <returns>The peroperties dictionary stored in the call context</returns>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.GetData(System.String)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.SetCallContextData(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Sets the call context data.\r\n            </summary>\r\n            <param name=\"properties\">The properties.</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.SetData(System.String,System.Object)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.declaringType\">\r\n            <summary>\n            The fully qualified type of the LogicalThreadContextProperties class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogicalThreadContextProperties.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of a property\n            </summary>\n            <value>\n            The value for the property with the specified key\n            </value>\n            <remarks>\n            <para>\n            Get or set the property value for the <paramref name=\"key\"/> specified.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventHandler\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"source\"></param>\n            <param name=\"e\"></param>\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog\">\r\n            <summary>\n            Outputs log statements from within the log4net assembly.\n            </summary>\n            <remarks>\n            <para>\n            Log4net components cannot make log4net logging calls. However, it is\n            sometimes useful for the user to learn about what log4net is\n            doing.\n            </para>\n            <para>\n            All log4net internal debug calls go to the standard output stream\n            whereas internal error messages are sent to the standard error output \n            stream.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.ToString\">\r\n            <summary>\n            Formats Prefix, Source, and Message in the same format as the value\n            sent to Console.Out and Trace.Write.\n            </summary>\n            <returns></returns>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#ctor(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogLog\"/> class. \r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"prefix\"></param>\r\n            <param name=\"message\"></param>\r\n            <param name=\"exception\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#cctor\">\r\n            <summary>\n            Static constructor that initializes logging by reading \n            settings from the application configuration file.\n            </summary>\n            <remarks>\n            <para>\n            The <c>log4net.Internal.Debug</c> application setting\n            controls internal debugging. This setting should be set\n            to <c>true</c> to enable debugging.\n            </para>\n            <para>\n            The <c>log4net.Internal.Quiet</c> application setting\n            suppresses all internal logging including error messages. \n            This setting should be set to <c>true</c> to enable message\n            suppression.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.OnLogReceived(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\n            Raises the LogReceived event when an internal messages is received.\n            </summary>\n            <param name=\"source\"></param>\n            <param name=\"prefix\"></param>\n            <param name=\"message\"></param>\n            <param name=\"exception\"></param>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String)\">\r\n            <summary>\n            Writes log4net internal debug messages to the \n            standard output stream.\n            </summary>\n            <param name=\"source\"></param>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            All internal debug messages are prepended with \n            the string \"log4net: \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String,System.Exception)\">\r\n            <summary>\n            Writes log4net internal debug messages to the \n            standard output stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <param name=\"exception\">An exception to log.</param>\n            <remarks>\n            <para>\n            All internal debug messages are prepended with \n            the string \"log4net: \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String)\">\r\n            <summary>\n            Writes log4net internal warning messages to the \n            standard error stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            All internal warning messages are prepended with \n            the string \"log4net:WARN \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String,System.Exception)\">\r\n            <summary>\n            Writes log4net internal warning messages to the \n            standard error stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <param name=\"exception\">An exception to log.</param>\n            <remarks>\n            <para>\n            All internal warning messages are prepended with \n            the string \"log4net:WARN \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String)\">\r\n            <summary>\n            Writes log4net internal error messages to the \n            standard error stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            All internal error messages are prepended with \n            the string \"log4net:ERROR \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String,System.Exception)\">\r\n            <summary>\n            Writes log4net internal error messages to the \n            standard error stream.\n            </summary>\n            <param name=\"source\">The Type that generated this message.</param>\n            <param name=\"message\">The message to log.</param>\n            <param name=\"exception\">An exception to log.</param>\n            <remarks>\n            <para>\n            All internal debug messages are prepended with \n            the string \"log4net:ERROR \".\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitOutLine(System.String)\">\r\n            <summary>\n            Writes output to the standard output stream.  \n            </summary>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            Writes to both Console.Out and System.Diagnostics.Trace.\n            Note that the System.Diagnostics.Trace is not supported\n            on the Compact Framework.\n            </para>\n            <para>\n            If the AppDomain is not configured with a config file then\n            the call to System.Diagnostics.Trace may fail. This is only\n            an issue if you are programmatically creating your own AppDomains.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitErrorLine(System.String)\">\r\n            <summary>\n            Writes output to the standard error stream.  \n            </summary>\n            <param name=\"message\">The message to log.</param>\n            <remarks>\n            <para>\n            Writes to both Console.Error and System.Diagnostics.Trace.\n            Note that the System.Diagnostics.Trace is not supported\n            on the Compact Framework.\n            </para>\n            <para>\n            If the AppDomain is not configured with a config file then\n            the call to System.Diagnostics.Trace may fail. This is only\n            an issue if you are programmatically creating your own AppDomains.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_debugEnabled\">\r\n            <summary>\n             Default debug level\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_quietMode\">\r\n            <summary>\n            In quietMode not even errors generate any output.\n            </summary>\n        </member>\r\n        <member name=\"E:log4net.Util.LogLog.LogReceived\">\r\n            <summary>\n            The event raised when an internal message has been received.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Source\">\r\n            <summary>\n            The Type that generated the internal message.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.TimeStamp\">\r\n            <summary>\n            The DateTime stamp of when the internal message was received.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Prefix\">\r\n            <summary>\n            A string indicating the severity of the internal message.\n            </summary>\n            <remarks>\n            \"log4net: \", \n            \"log4net:ERROR \", \n            \"log4net:WARN \"\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Message\">\r\n            <summary>\n            The internal log message.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Exception\">\r\n            <summary>\n            The Exception related to the message.\n            </summary>\n            <remarks>\n            Optional. Will be null if no Exception was passed.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.InternalDebugging\">\r\n            <summary>\n            Gets or sets a value indicating whether log4net internal logging\n            is enabled or disabled.\n            </summary>\n            <value>\n            <c>true</c> if log4net internal logging is enabled, otherwise \n            <c>false</c>.\n            </value>\n            <remarks>\n            <para>\n            When set to <c>true</c>, internal debug level logging will be \n            displayed.\n            </para>\n            <para>\n            This value can be set by setting the application setting \n            <c>log4net.Internal.Debug</c> in the application configuration\n            file.\n            </para>\n            <para>\n            The default value is <c>false</c>, i.e. debugging is\n            disabled.\n            </para>\n            </remarks>\n            <example>\n            <para>\n            The following example enables internal debugging using the \n            application configuration file :\n            </para>\n            <code lang=\"XML\" escaped=\"true\">\n            <configuration>\n            \t<appSettings>\n            \t\t<add key=\"log4net.Internal.Debug\" value=\"true\" />\n            \t</appSettings>\n            </configuration>\n            </code>\n            </example>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.QuietMode\">\r\n            <summary>\r\n            Gets or sets a value indicating whether log4net should generate no output\r\n            from internal logging, not even for errors. \r\n            </summary>\r\n            <value>\r\n            <c>true</c> if log4net should generate no output at all from internal \r\n            logging, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            When set to <c>true</c> will cause internal logging at all levels to be \r\n            suppressed. This means that no warning or error reports will be logged. \r\n            This option overrides the <see cref=\"P:log4net.Util.LogLog.InternalDebugging\"/> setting and \r\n            disables all debug also.\r\n            </para>\r\n            <para>This value can be set by setting the application setting\r\n            <c>log4net.Internal.Quiet</c> in the application configuration file.\r\n            </para>\r\n            <para>\r\n            The default value is <c>false</c>, i.e. internal logging is not\r\n            disabled.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            The following example disables internal logging using the \r\n            application configuration file :\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net.Internal.Quiet\" value=\"true\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.EmitInternalMessages\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsDebugEnabled\">\r\n            <summary>\n            Test if LogLog.Debug is enabled for output.\n            </summary>\n            <value>\n            <c>true</c> if Debug is enabled\n            </value>\n            <remarks>\n            <para>\n            Test if LogLog.Debug is enabled for output.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsWarnEnabled\">\r\n            <summary>\n            Test if LogLog.Warn is enabled for output.\n            </summary>\n            <value>\n            <c>true</c> if Warn is enabled\n            </value>\n            <remarks>\n            <para>\n            Test if LogLog.Warn is enabled for output.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsErrorEnabled\">\r\n            <summary>\n            Test if LogLog.Error is enabled for output.\n            </summary>\n            <value>\n            <c>true</c> if Error is enabled\n            </value>\n            <remarks>\n            <para>\n            Test if LogLog.Error is enabled for output.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog.LogReceivedAdapter\">\r\n            <summary>\n            Subscribes to the LogLog.LogReceived event and stores messages\n            to the supplied IList instance.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.#ctor(System.Collections.IList)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"items\"></param>\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.Dispose\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.LogReceivedAdapter.Items\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventArgs\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.LogReceivedEventArgs.#ctor(log4net.Util.LogLog)\">\r\n            <summary>\n            \n            </summary>\n            <param name=\"loglog\"></param>\n        </member>\r\n        <member name=\"P:log4net.Util.LogReceivedEventArgs.LogLog\">\r\n            <summary>\n            \n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.NativeError\">\r\n            <summary>\n            Represents a native error code and message.\n            </summary>\n            <remarks>\n            <para>\n            Represents a Win32 platform native error.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </summary>\r\n            <param name=\"number\">The number of the native error.</param>\r\n            <param name=\"message\">The message of the native error.</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetLastError\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last Windows error.\r\n            </summary>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last windows error.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/> error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetError(System.Int32)\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class.\r\n            </summary>\r\n            <param name=\"number\">the error number for the native error</param>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the specified \r\n            error number.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the specified error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetErrorMessage(System.Int32)\">\r\n            <summary>\n            Retrieves the message corresponding with a Win32 message identifier.\n            </summary>\n            <param name=\"messageId\">Message identifier for the requested message.</param>\n            <returns>\n            The message corresponding with the specified message identifier.\n            </returns>\n            <remarks>\n            <para>\n            The message will be searched for in system message-table resource(s)\n            using the native <c>FormatMessage</c> function.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.ToString\">\r\n            <summary>\n            Return error information string\n            </summary>\n            <returns>error information string</returns>\n            <remarks>\n            <para>\n            Return error information string\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.FormatMessage(System.Int32,System.IntPtr@,System.Int32,System.Int32,System.String@,System.Int32,System.IntPtr)\">\r\n            <summary>\r\n            Formats a message string.\r\n            </summary>\r\n            <param name=\"dwFlags\">Formatting options, and how to interpret the <paramref name=\"lpSource\"/> parameter.</param>\r\n            <param name=\"lpSource\">Location of the message definition.</param>\r\n            <param name=\"dwMessageId\">Message identifier for the requested message.</param>\r\n            <param name=\"dwLanguageId\">Language identifier for the requested message.</param>\r\n            <param name=\"lpBuffer\">If <paramref name=\"dwFlags\"/> includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the <c>LocalAlloc</c> function, and places the pointer to the buffer at the address specified in <paramref name=\"lpBuffer\"/>.</param>\r\n            <param name=\"nSize\">If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer.</param>\r\n            <param name=\"Arguments\">Pointer to an array of values that are used as insert values in the formatted message.</param>\r\n            <remarks>\r\n            <para>\r\n            The function requires a message definition as input. The message definition can come from a \r\n            buffer passed into the function. It can come from a message table resource in an \r\n            already-loaded module. Or the caller can ask the function to search the system's message \r\n            table resource(s) for the message definition. The function finds the message definition \r\n            in a message table resource based on a message identifier and a language identifier. \r\n            The function copies the formatted message text to an output buffer, processing any embedded \r\n            insert sequences if requested.\r\n            </para>\r\n            <para>\r\n            To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <para>\r\n            If the function succeeds, the return value is the number of TCHARs stored in the output \r\n            buffer, excluding the terminating null character.\r\n            </para>\r\n            <para>\r\n            If the function fails, the return value is zero. To get extended error information, \r\n            call <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/>.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Number\">\r\n            <summary>\n            Gets the number of the native error.\n            </summary>\n            <value>\n            The number of the native error.\n            </value>\n            <remarks>\n            <para>\n            Gets the number of the native error.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Message\">\r\n            <summary>\n            Gets the message of the native error.\n            </summary>\n            <value>\n            The message of the native error.\n            </value>\n            <remarks>\n            <para>\n            </para>\n            Gets the message of the native error.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.NullDictionaryEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance.\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullDictionaryEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullDictionaryEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Key\">\r\n            <summary>\r\n            Gets the current key from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an exception because the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>\r\n            never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Key\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Value\">\r\n            <summary>\r\n            Gets the current value from the enumerator.\r\n            </summary>\r\n            <value>The current value from the enumerator.</value>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Value\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Entry\">\r\n            <summary>\r\n            Gets the current entry from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current entry.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Entry\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Instance\">\r\n            <summary>\r\n            Get the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullSecurityContext\">\r\n            <summary>\r\n            A SecurityContext used when a SecurityContext is not required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Util.NullSecurityContext\"/> is a no-op implementation of the\r\n            <see cref=\"T:log4net.Core.SecurityContext\"/> base class. It is used where a <see cref=\"T:log4net.Core.SecurityContext\"/>\r\n            is required but one has not been provided.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullSecurityContext.Instance\">\r\n            <summary>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.#ctor\">\r\n            <summary>\n            Private constructor\n            </summary>\n            <remarks>\n            <para>\n            Private constructor for singleton pattern.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\n            Impersonate this SecurityContext\n            </summary>\n            <param name=\"state\">State supplied by the caller</param>\n            <returns><c>null</c></returns>\n            <remarks>\n            <para>\n            No impersonation is done and <c>null</c> is always returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.OnlyOnceErrorHandler\">\r\n            <summary>\n            Implements log4net's default error handling policy which consists \n            of emitting a message for the first error in an appender and \n            ignoring all subsequent errors.\n            </summary>\n            <remarks>\n            <para>\n            The error message is processed using the LogLog sub-system.\n            </para>\n            <para>\n            This policy aims at protecting an otherwise working application\n            from being flooded with error messages when logging fails.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n            <author>Ron Grabowski</author>\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"prefix\">The prefix to use for each message.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class\r\n            with the specified prefix.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Reset\">\r\n            <summary>\n            Reset the error handler back to its initial disabled state.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Log an Error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <param name=\"e\">The exception.</param>\r\n            <param name=\"errorCode\">The internal error code.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the error information to <see cref=\"T:log4net.Util.LogLog\"/>'s Error method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\n            Log an Error\n            </summary>\n            <param name=\"message\">The error message.</param>\n            <param name=\"e\">The exception.</param>\n            <remarks>\n            <para>\n            Prints the message and the stack trace of the exception on the standard\n            error output stream.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String)\">\r\n            <summary>\n            Log an error\n            </summary>\n            <param name=\"message\">The error message.</param>\n            <remarks>\n            <para>\n            Print a the error message passed as parameter on the standard\n            error output stream.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_enabledDate\">\r\n            <summary>\n            The date the error was recorded.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_firstTime\">\r\n            <summary>\n            Flag to indicate if it is the first error\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_message\">\r\n            <summary>\n            The message recorded during the first error.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_exception\">\r\n            <summary>\n            The exception recorded during the first error.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_errorCode\">\r\n            <summary>\n            The error code recorded during the first error.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_prefix\">\r\n            <summary>\n            String to prefix each message with\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.declaringType\">\r\n            <summary>\n            The fully qualified type of the OnlyOnceErrorHandler class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.IsEnabled\">\r\n            <summary>\r\n            Is error logging enabled\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Is error logging enabled. Logging is only enabled for the\r\n            first error delivered to the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.EnabledDate\">\r\n            <summary>\n            The date the first error that trigged this error handler occured.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorMessage\">\r\n            <summary>\n            The message from the first error that trigged this error handler.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.Exception\">\r\n            <summary>\n            The exception from the first error that trigged this error handler.\n            </summary>\n            <remarks>\n            May be <see langword=\"null\" />.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorCode\">\r\n            <summary>\r\n            The error code from the first error that trigged this error handler.\r\n            </summary>\r\n            <remarks>\r\n            Defaults to <see cref=\"F:log4net.Core.ErrorCode.GenericFailure\"/>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.OptionConverter\">\r\n            <summary>\n            A convenience class to convert property values to specific types.\n            </summary>\n            <remarks>\n            <para>\n            Utility functions for converting types and parsing values.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OptionConverter\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToBoolean(System.String,System.Boolean)\">\r\n            <summary>\r\n            Converts a string to a <see cref=\"T:System.Boolean\"/> value.\r\n            </summary>\r\n            <param name=\"argValue\">String to convert.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Boolean\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            If <paramref name=\"argValue\"/> is \"true\", then <c>true</c> is returned. \r\n            If <paramref name=\"argValue\"/> is \"false\", then <c>false</c> is returned. \r\n            Otherwise, <paramref name=\"defaultValue\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToFileSize(System.String,System.Int64)\">\r\n            <summary>\r\n            Parses a file size into a number.\r\n            </summary>\r\n            <param name=\"argValue\">String to parse.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Int64\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parses a file size of the form: number[KB|MB|GB] into a\r\n            long value. It is scaled with the appropriate multiplier.\r\n            </para>\r\n            <para>\r\n            <paramref name=\"defaultValue\"/> is returned when <paramref name=\"argValue\"/>\r\n            cannot be converted to a <see cref=\"T:System.Int64\"/> value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\n            Converts a string to an object.\n            </summary>\n            <param name=\"target\">The target type to convert to.</param>\n            <param name=\"txt\">The string to convert to an object.</param>\n            <returns>\n            The object converted from a string or <c>null</c> when the \n            conversion failed.\n            </returns>\n            <remarks>\n            <para>\n            Converts a string to an object. Uses the converter registry to try\n            to convert the string value into the specified target type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.CanConvertTypeTo(System.Type,System.Type)\">\r\n            <summary>\n            Checks if there is an appropriate type conversion from the source type to the target type.\n            </summary>\n            <param name=\"sourceType\">The type to convert from.</param>\n            <param name=\"targetType\">The type to convert to.</param>\n            <returns><c>true</c> if there is a conversion from the source type to the target type.</returns>\n            <remarks>\n            Checks if there is an appropriate type conversion from the source type to the target type.\n            <para>\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertTypeTo(System.Object,System.Type)\">\r\n            <summary>\n            Converts an object to the target type.\n            </summary>\n            <param name=\"sourceInstance\">The object to convert to the target type.</param>\n            <param name=\"targetType\">The type to convert to.</param>\n            <returns>The converted object.</returns>\n            <remarks>\n            <para>\n            Converts an object to the target type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.InstantiateByClassName(System.String,System.Type,System.Object)\">\r\n            <summary>\n            Instantiates an object given a class name.\n            </summary>\n            <param name=\"className\">The fully qualified class name of the object to instantiate.</param>\n            <param name=\"superClass\">The class to which the new object should belong.</param>\n            <param name=\"defaultValue\">The object to return in case of non-fulfillment.</param>\n            <returns>\n            An instance of the <paramref name=\"className\"/> or <paramref name=\"defaultValue\"/>\n            if the object could not be instantiated.\n            </returns>\n            <remarks>\n            <para>\n            Checks that the <paramref name=\"className\"/> is a subclass of\n            <paramref name=\"superClass\"/>. If that test fails or the object could\n            not be instantiated, then <paramref name=\"defaultValue\"/> is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.SubstituteVariables(System.String,System.Collections.IDictionary)\">\r\n            <summary>\n            Performs variable substitution in string <paramref name=\"value\"/> from the \n            values of keys found in <paramref name=\"props\"/>.\n            </summary>\n            <param name=\"value\">The string on which variable substitution is performed.</param>\n            <param name=\"props\">The dictionary to use to lookup variables.</param>\n            <returns>The result of the substitutions.</returns>\n            <remarks>\n            <para>\n            The variable substitution delimiters are <b>${</b> and <b>}</b>.\n            </para>\n            <para>\n            For example, if props contains <c>key=value</c>, then the call\n            </para>\n            <para>\n            <code lang=\"C#\">\n            string s = OptionConverter.SubstituteVariables(\"Value of key is ${key}.\");\n            </code>\n            </para>\n            <para>\n            will set the variable <c>s</c> to \"Value of key is value.\".\n            </para>\n            <para>\n            If no value could be found for the specified key, then substitution \n            defaults to an empty string.\n            </para>\n            <para>\n            For example, if system properties contains no value for the key\n            \"nonExistentKey\", then the call\n            </para>\n            <para>\n            <code lang=\"C#\">\n            string s = OptionConverter.SubstituteVariables(\"Value of nonExistentKey is [${nonExistentKey}]\");\n            </code>\n            </para>\n            <para>\n            will set <s>s</s> to \"Value of nonExistentKey is []\".\t \n            </para>\n            <para>\n            An Exception is thrown if <paramref name=\"value\"/> contains a start \n            delimiter \"${\" which is not balanced by a stop delimiter \"}\". \n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ParseEnum(System.Type,System.String,System.Boolean)\">\r\n            <summary>\n            Converts the string representation of the name or numeric value of one or \n            more enumerated constants to an equivalent enumerated object.\n            </summary>\n            <param name=\"enumType\">The type to convert to.</param>\n            <param name=\"value\">The enum string value.</param>\n            <param name=\"ignoreCase\">If <c>true</c>, ignore case; otherwise, regard case.</param>\n            <returns>An object of type <paramref name=\"enumType\" /> whose value is represented by <paramref name=\"value\" />.</returns>\n        </member>\r\n        <member name=\"F:log4net.Util.OptionConverter.declaringType\">\r\n            <summary>\n            The fully qualified type of the OptionConverter class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser\">\r\n            <summary>\r\n            Most of the work of the <see cref=\"T:log4net.Layout.PatternLayout\"/> class\r\n            is delegated to the PatternParser class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>PatternParser</c> processes a pattern string and\r\n            returns a chain of <see cref=\"T:log4net.Util.PatternConverter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternParser\"/> class \r\n            with the specified pattern string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.Parse\">\r\n            <summary>\n            Parses the pattern into a chain of pattern converters.\n            </summary>\n            <returns>The head of a chain of pattern converters.</returns>\n            <remarks>\n            <para>\n            Parses the pattern into a chain of pattern converters.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.BuildCache\">\r\n            <summary>\n            Build the unified cache of converters from the static and instance maps\n            </summary>\n            <returns>the list of all the converter names</returns>\n            <remarks>\n            <para>\n            Build the unified cache of converters from the static and instance maps\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ParseInternal(System.String,System.String[])\">\r\n            <summary>\n            Internal method to parse the specified pattern to find specified matches\n            </summary>\n            <param name=\"pattern\">the pattern to parse</param>\n            <param name=\"matches\">the converter names to match in the pattern</param>\n            <remarks>\n            <para>\n            The matches param must be sorted such that longer strings come before shorter ones.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessLiteral(System.String)\">\r\n            <summary>\n            Process a parsed literal\n            </summary>\n            <param name=\"text\">the literal text</param>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessConverter(System.String,System.String,log4net.Util.FormattingInfo)\">\r\n            <summary>\n            Process a parsed converter pattern\n            </summary>\n            <param name=\"converterName\">the name of the converter</param>\n            <param name=\"option\">the optional option for the converter</param>\n            <param name=\"formattingInfo\">the formatting info for the converter</param>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.AddConverter(log4net.Util.PatternConverter)\">\r\n            <summary>\n            Resets the internal state of the parser and adds the specified pattern converter \n            to the chain.\n            </summary>\n            <param name=\"pc\">The pattern converter to add.</param>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_head\">\r\n            <summary>\n            The first pattern converter in the chain\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_tail\">\r\n            <summary>\n             the last pattern converter in the chain\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_pattern\">\r\n            <summary>\n            The pattern\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_patternConverters\">\r\n            <summary>\n            Internal map of converter identifiers to converter types\n            </summary>\n            <remarks>\n            <para>\n            This map overrides the static s_globalRulesRegistry map.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.declaringType\">\r\n            <summary>\n            The fully qualified type of the PatternParser class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternParser.PatternConverters\">\r\n            <summary>\n            Get the converter registry used by this parser\n            </summary>\n            <value>\n            The converter registry used by this parser\n            </value>\n            <remarks>\n            <para>\n            Get the converter registry used by this parser\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser.StringLengthComparer\">\r\n            <summary>\r\n            Sort strings by length\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:System.Collections.IComparer\"/> that orders strings by string length.\r\n            The longest strings are placed first\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternString\">\r\n            <summary>\r\n            This class implements a patterned string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This string has embedded patterns that are resolved and expanded\r\n            when the string is formatted.\r\n            </para>\r\n            <para>\r\n            This class functions similarly to the <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            in that it accepts a pattern and renders it to a string. Unlike the \r\n            <see cref=\"T:log4net.Layout.PatternLayout\"/> however the <c>PatternString</c>\r\n            does not render the properties of a specific <see cref=\"T:log4net.Core.LoggingEvent\"/> but\r\n            of the process in general.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output the friendly name of the current AppDomain.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>date</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the current date and time in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>env</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the a specific environment variable. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%env{COMPUTERNAME}</b> would include the value\r\n            \t\t\tof the <c>COMPUTERNAME</c> environment variable.\r\n                        </para>\r\n                        <para>\r\n                        The <c>env</c> pattern is not supported on the .NET Compact Framework.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>identity</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>newline</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern name offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>processid</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the system process ID for the current process.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>property</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output a specific context property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are stored in logging contexts. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>random</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output a random string of characters. The string is made up of\r\n                        uppercase letters and numbers. By default the string is 4 characters long.\r\n                        The length of the string can be specified within braces directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%random{8}</b> would output an 8 character string.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>username</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>utcdate</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Util.PatternString\"/>\r\n            instance using <see cref=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\"/> or\r\n            <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/>.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.PatternLayout\"/> for details on the \r\n            <i>format modifiers</i> supported by the patterns.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.s_globalRulesRegistry\">\r\n            <summary>\n            Internal map of converter identifiers to converter types.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_pattern\">\r\n            <summary>\n            the pattern\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_head\">\r\n            <summary>\n            the head of the pattern converter chain\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_instanceRulesRegistry\">\r\n            <summary>\n            patterns defined on this PatternString only\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#cctor\">\r\n            <summary>\n            Initialize the global registry\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternString\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to use with this PatternString</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/> with the pattern specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.ActivateOptions\">\r\n            <summary>\r\n            Initialize object options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Returns PatternParser used to parse the conversion string. Subclasses\r\n            may override this to return a subclass of PatternParser which recognize\r\n            custom conversion pattern name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format(System.IO.TextWriter)\">\r\n            <summary>\n            Produces a formatted string as specified by the conversion pattern.\n            </summary>\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\n            <remarks>\n            <para>\n            Format the pattern to the <paramref name=\"writer\"/>.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format\">\r\n            <summary>\n            Format the pattern as a string\n            </summary>\n            <returns>the pattern formatted as a string</returns>\n            <remarks>\n            <para>\n            Format the pattern to a string.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternString\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\">\r\n            <summary>\n            Add a converter to this PatternString\n            </summary>\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\n            <param name=\"type\">the type of the converter</param>\n            <remarks>\n            <para>\n            Add a converter to this PatternString\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PatternString.ConversionPattern\">\r\n            <summary>\n            Gets or sets the pattern formatting string\n            </summary>\n            <value>\n            The pattern formatting string\n            </value>\n            <remarks>\n            <para>\n            The <b>ConversionPattern</b> option. This is the string which\n            controls formatting and consists of a mix of literal content and\n            conversion specifiers.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.PropertiesDictionary\">\r\n            <summary>\n            String keyed object map.\n            </summary>\n            <remarks>\n            <para>\n            While this collection is serializable only member \n            objects that are serializable will\n            be serialized along with this collection.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"T:log4net.Util.ReadOnlyPropertiesDictionary\">\r\n            <summary>\n            String keyed object map that is read only.\n            </summary>\n            <remarks>\n            <para>\n            This collection is readonly and cannot be modified.\n            </para>\n            <para>\n            While this collection is serializable only member \n            objects that are serializable will\n            be serialized along with this collection.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"F:log4net.Util.ReadOnlyPropertiesDictionary.m_hashtable\">\r\n            <summary>\n            The Hashtable used to store the properties data\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Copy Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Deserialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetKeys\">\r\n            <summary>\n            Gets the key names.\n            </summary>\n            <returns>An array of all the keys.</returns>\n            <remarks>\n            <para>\n            Gets the key names.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Contains(System.String)\">\r\n            <summary>\n            Test if the dictionary contains a specified key\n            </summary>\n            <param name=\"key\">the key to look for</param>\n            <returns>true if the dictionary contains the specified key</returns>\n            <remarks>\n            <para>\n            Test if the dictionary contains a specified key\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Clear\">\r\n            <summary>\n            Remove all properties from the properties collection\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <param name=\"value\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of the  property with the specified key.\n            </summary>\n            <value>\n            The value of the property with the specified key.\n            </value>\n            <param name=\"key\">The key of the property to get or set.</param>\n            <remarks>\n            <para>\n            The property value will only be serialized if it is serializable.\n            If it cannot be serialized it will be silently ignored if\n            a serialization operation is performed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.InnerHashtable\">\r\n            <summary>\n            The hashtable used to store the properties\n            </summary>\n            <value>\n            The internal collection used to store the properties\n            </value>\n            <remarks>\n            <para>\n            The hashtable used to store the properties\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Item(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Count\">\r\n            <summary>\n            The number of properties in this collection\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Because this class is sealed the serialization constructor is private.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Remove(System.String)\">\r\n            <summary>\n            Remove the entry with the specified key from this dictionary\n            </summary>\n            <param name=\"key\">the key for the entry to remove</param>\n            <remarks>\n            <para>\n            Remove the entry with the specified key from this dictionary\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n            <returns>an enumerator</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over the contest of this collection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the entry with the specified key from this dictionary\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to lookup in the collection</param>\r\n            <returns><c>true</c> if the collection contains the specified key</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this collection contains a specified key.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Clear\">\r\n            <summary>\n            Remove all properties from the properties collection\n            </summary>\n            <remarks>\n            <para>\n            Remove all properties from the properties collection\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key</param>\r\n            <param name=\"value\">the value to store for the key</param>\r\n            <remarks>\r\n            <para>\r\n            Store a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of the  property with the specified key.\n            </summary>\n            <value>\n            The value of the property with the specified key.\n            </value>\n            <param name=\"key\">The key of the property to get or set.</param>\n            <remarks>\n            <para>\n            The property value will only be serialized if it is serializable.\n            If it cannot be serialized it will be silently ignored if\n            a serialization operation is performed.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n            <value>\r\n            <c>false</c>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This collection is modifiable. This property always\r\n            returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Item(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n            <value>\r\n            The value for the key specified.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PropertyEntry\">\r\n            <summary>\n            A class to hold the key and data for a property set in the config file\n            </summary>\n            <remarks>\n            <para>\n            A class to hold the key and data for a property set in the config file\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.PropertyEntry.ToString\">\r\n            <summary>\n            Override <c>Object.ToString</c> to return sensible debug info\n            </summary>\n            <returns>string info about this object</returns>\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Key\">\r\n            <summary>\n            Property Key\n            </summary>\n            <value>\n            Property Key\n            </value>\n            <remarks>\n            <para>\n            Property Key.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Value\">\r\n            <summary>\n            Property Value\n            </summary>\n            <value>\n            Property Value\n            </value>\n            <remarks>\n            <para>\n            Property Value.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ProtectCloseTextWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.TextWriter\"/> that ignores the <see cref=\"M:log4net.Util.ProtectCloseTextWriter.Close\"/> message\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer is used in special cases where it is necessary \r\n            to protect a writer from being closed by a client.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\n            Constructor\n            </summary>\n            <param name=\"writer\">the writer to actually write to</param>\n            <remarks>\n            <para>\n            Create a new ProtectCloseTextWriter using a writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Attach(System.IO.TextWriter)\">\r\n            <summary>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to attach to</param>\r\n            <remarks>\r\n            <para>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Close\">\r\n            <summary>\n            Does not close the underlying output writer.\n            </summary>\n            <remarks>\n            <para>\n            Does not close the underlying output writer.\n            This method does nothing.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ReaderWriterLock\">\r\n            <summary>\r\n            Defines a lock that supports single writers and multiple readers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <c>ReaderWriterLock</c> is used to synchronize access to a resource. \r\n            At any given time, it allows either concurrent read access for \r\n            multiple threads, or write access for a single thread. In a \r\n            situation where a resource is changed infrequently, a \r\n            <c>ReaderWriterLock</c> provides better throughput than a simple \r\n            one-at-a-time lock, such as <see cref=\"T:System.Threading.Monitor\"/>.\r\n            </para>\r\n            <para>\r\n            If a platform does not support a <c>System.Threading.ReaderWriterLock</c> \r\n            implementation then all readers and writers are serialized. Therefore \r\n            the caller must not rely on multiple simultaneous readers.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReaderWriterLock\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\">\r\n            <summary>\r\n            Acquires a reader lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\"/> blocks if a different thread has the writer \r\n            lock, or if at least one thread is waiting for the writer lock.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\">\r\n            <summary>\r\n            Decrements the lock count\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\"/> decrements the lock count. When the count \r\n            reaches zero, the lock is released.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireWriterLock\">\r\n            <summary>\n            Acquires the writer lock\n            </summary>\n            <remarks>\n            <para>\n            This method blocks if another thread has a reader lock or writer lock.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseWriterLock\">\r\n            <summary>\n            Decrements the lock count on the writer lock\n            </summary>\n            <remarks>\n            <para>\n            ReleaseWriterLock decrements the writer lock count. \n            When the count reaches zero, the writer lock is released.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ReusableStringWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused.\r\n            This uses a single buffer for string operations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.#ctor(System.IFormatProvider)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </summary>\r\n            <param name=\"formatProvider\">the format provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Dispose(System.Boolean)\">\r\n            <summary>\n            Override Dispose to prevent closing of writer\n            </summary>\n            <param name=\"disposing\">flag</param>\n            <remarks>\n            <para>\n            Override Dispose to prevent closing of writer\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\">\r\n            <summary>\n            Reset this string writer so that it can be reused.\n            </summary>\n            <param name=\"maxCapacity\">the maximum buffer capacity before it is trimmed</param>\n            <param name=\"defaultSize\">the default size to make the buffer</param>\n            <remarks>\n            <para>\n            Reset this string writer so that it can be reused.\n            The internal buffers are cleared and reset.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.SystemInfo\">\r\n            <summary>\n            Utility class for system specific information.\n            </summary>\n            <remarks>\n            <para>\n            Utility class of static methods for system specific information.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n            <author>Alexey Solofnenko</author>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#ctor\">\r\n            <summary>\n            Private constructor to prevent instances.\n            </summary>\n            <remarks>\n            <para>\n            Only static methods are exposed from this type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#cctor\">\r\n            <summary>\n            Initialize default values for private static fields.\n            </summary>\n            <remarks>\n            <para>\n            Only static methods are exposed from this type.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyLocationInfo(System.Reflection.Assembly)\">\r\n            <summary>\n            Gets the assembly location path for the specified assembly.\n            </summary>\n            <param name=\"myAssembly\">The assembly to get the location for.</param>\n            <returns>The location of the assembly.</returns>\n            <remarks>\n            <para>\n            This method does not guarantee to return the correct path\n            to the assembly. If only tries to give an indication as to\n            where the assembly was loaded from.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyQualifiedName(System.Type)\">\r\n            <summary>\r\n            Gets the fully qualified name of the <see cref=\"T:System.Type\"/>, including \r\n            the name of the assembly from which the <see cref=\"T:System.Type\"/> was \r\n            loaded.\r\n            </summary>\r\n            <param name=\"type\">The <see cref=\"T:System.Type\"/> to get the fully qualified name for.</param>\r\n            <returns>The fully qualified name for the <see cref=\"T:System.Type\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            This is equivalent to the <c>Type.AssemblyQualifiedName</c> property,\r\n            but this method works on the .NET Compact Framework 1.0 as well as\r\n            the full .NET runtime.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyShortName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the short name of the <see cref=\"T:System.Reflection.Assembly\"/>.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the name for.</param>\r\n            <returns>The short name of the <see cref=\"T:System.Reflection.Assembly\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            The short name of the assembly is the <see cref=\"P:System.Reflection.Assembly.FullName\"/> \r\n            without the version, culture, or public key. i.e. it is just the \r\n            assembly's file name without the extension.\r\n            </para>\r\n            <para>\r\n            Use this rather than <c>Assembly.GetName().Name</c> because that\r\n            is not available on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            Because of a FileIOPermission security demand we cannot do\r\n            the obvious Assembly.GetName().Name. We are allowed to get\r\n            the <see cref=\"P:System.Reflection.Assembly.FullName\"/> of the assembly so we \r\n            start from there and strip out just the assembly name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyFileName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the file name for.</param>\r\n            <returns>The file name of the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Type,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeType\">A sibling type to use to load the type.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified, it will be loaded from the assembly\r\n            containing the specified relative type. If the type is not found in the assembly \r\n            then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\t\t\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the\r\n            assembly that is directly calling this method. If the type is not found \r\n            in the assembly then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Reflection.Assembly,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeAssembly\">An assembly to load the type from.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the specified\r\n            assembly. If the type is not found in the assembly then all the loaded assemblies \r\n            will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.NewGuid\">\r\n            <summary>\n            Generate a new guid\n            </summary>\n            <returns>A new Guid</returns>\n            <remarks>\n            <para>\n            Generate a new guid\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateArgumentOutOfRangeException(System.String,System.Object,System.String)\">\r\n            <summary>\r\n            Create an <see cref=\"T:System.ArgumentOutOfRangeException\"/>\r\n            </summary>\r\n            <param name=\"parameterName\">The name of the parameter that caused the exception</param>\r\n            <param name=\"actualValue\">The value of the argument that causes this exception</param>\r\n            <param name=\"message\">The message that describes the error</param>\r\n            <returns>the ArgumentOutOfRangeException object</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new instance of the <see cref=\"T:System.ArgumentOutOfRangeException\"/> class \r\n            with a specified error message, the parameter name, and the value \r\n            of the argument.\r\n            </para>\r\n            <para>\r\n            The Compact Framework does not support the 3 parameter constructor for the\r\n            <see cref=\"T:System.ArgumentOutOfRangeException\"/> type. This method provides an\r\n            implementation that works for all platforms.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int32@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int32\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int64@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int64\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int16@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int16\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetAppSetting(System.String)\">\r\n            <summary>\n            Lookup an application setting\n            </summary>\n            <param name=\"key\">the application settings key to lookup</param>\n            <returns>the value for the key, or <c>null</c></returns>\n            <remarks>\n            <para>\n            Configuration APIs are not supported under the Compact Framework\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.ConvertToFullPath(System.String)\">\r\n            <summary>\n            Convert a path into a fully qualified local file path.\n            </summary>\n            <param name=\"path\">The path to convert.</param>\n            <returns>The fully qualified path.</returns>\n            <remarks>\n            <para>\n            Converts the path specified to a fully\n            qualified path. If the path is relative it is\n            taken as relative from the application base \n            directory.\n            </para>\n            <para>\n            The path specified must be a local file path, a URI is not supported.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateCaseInsensitiveHashtable\">\r\n            <summary>\r\n            Creates a new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity. \r\n            </summary>\r\n            <returns>A new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity</returns>\r\n            <remarks>\r\n            <para>\r\n            The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.EmptyTypes\">\r\n            <summary>\n            Gets an empty array of types.\n            </summary>\n            <remarks>\n            <para>\n            The <c>Type.EmptyTypes</c> field is not available on\n            the .NET Compact Framework 1.0.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.declaringType\">\r\n            <summary>\n            The fully qualified type of the SystemInfo class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_hostName\">\r\n            <summary>\n            Cache the host name for the current machine\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_appFriendlyName\">\r\n            <summary>\n            Cache the application friendly name\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_nullText\">\r\n            <summary>\n            Text to output when a <c>null</c> is encountered.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_notAvailableText\">\r\n            <summary>\n            Text to output when an unsupported feature is requested.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_processStartTime\">\r\n            <summary>\n            Start time for the current process.\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NewLine\">\r\n            <summary>\n            Gets the system dependent line terminator.\n            </summary>\n            <value>\n            The system dependent line terminator.\n            </value>\n            <remarks>\n            <para>\n            Gets the system dependent line terminator.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationBaseDirectory\">\r\n            <summary>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The base directory path for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ConfigurationFileLocation\">\r\n            <summary>\r\n            Gets the path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not have a concept of a configuration\r\n            file. For this runtime, we use the entry assembly location as the root for\r\n            the configuration file name.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.EntryAssemblyLocation\">\r\n            <summary>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the entry assembly.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.CurrentThreadId\">\r\n            <summary>\n            Gets the ID of the current thread.\n            </summary>\n            <value>The ID of the current thread.</value>\n            <remarks>\n            <para>\n            On the .NET framework, the <c>AppDomain.GetCurrentThreadId</c> method\n            is used to obtain the thread ID for the current thread. This is the \n            operating system ID for the thread.\n            </para>\n            <para>\n            On the .NET Compact Framework 1.0 it is not possible to get the \n            operating system thread ID for the current thread. The native method \n            <c>GetCurrentThreadId</c> is implemented inline in a header file\n            and cannot be called.\n            </para>\n            <para>\n            On the .NET Framework 2.0 the <c>Thread.ManagedThreadId</c> is used as this\n            gives a stable id unrelated to the operating system thread ID which may \n            change if the runtime is using fibers.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.HostName\">\r\n            <summary>\r\n            Get the host name or machine name for the current machine\r\n            </summary>\r\n            <value>\r\n            The hostname or machine name\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the host name or machine name for the current machine\r\n            </para>\r\n            <para>\r\n            The host name (<see cref=\"M:System.Net.Dns.GetHostName\"/>) or\r\n            the machine name (<c>Environment.MachineName</c>) for\r\n            the current machine, or if neither of these are available\r\n            then <c>NOT AVAILABLE</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\">\r\n            <summary>\n            Get this application's friendly name\n            </summary>\n            <value>\n            The friendly name of this application as a string\n            </value>\n            <remarks>\n            <para>\n            If available the name of the application is retrieved from\n            the <c>AppDomain</c> using <c>AppDomain.CurrentDomain.FriendlyName</c>.\n            </para>\n            <para>\n            Otherwise the file name of the entry assembly is used.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ProcessStartTime\">\r\n            <summary>\n            Get the start time for the current process.\n            </summary>\n            <remarks>\n            <para>\n            This is the time at which the log4net library was loaded into the\n            AppDomain. Due to reports of a hang in the call to <c>System.Diagnostics.Process.StartTime</c>\n            this is not the start time for the current process.\n            </para>\n            <para>\n            The log4net library should be loaded by an application early during its\n            startup, therefore this start time should be a good approximation for\n            the actual start time.\n            </para>\n            <para>\n            Note that AppDomains may be loaded and unloaded within the\n            same process without the process terminating, however this start time\n            will be set per AppDomain.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NullText\">\r\n            <summary>\n            Text to output when a <c>null</c> is encountered.\n            </summary>\n            <remarks>\n            <para>\n            Use this value to indicate a <c>null</c> has been encountered while\n            outputting a string representation of an item.\n            </para>\n            <para>\n            The default value is <c>(null)</c>. This value can be overridden by specifying\n            a value for the <c>log4net.NullText</c> appSetting in the application's\n            .config file.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NotAvailableText\">\r\n            <summary>\n            Text to output when an unsupported feature is requested.\n            </summary>\n            <remarks>\n            <para>\n            Use this value when an unsupported feature is requested.\n            </para>\n            <para>\n            The default value is <c>NOT AVAILABLE</c>. This value can be overridden by specifying\n            a value for the <c>log4net.NotAvailableText</c> appSetting in the application's\n            .config file.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.SystemStringFormat\">\r\n            <summary>\n            Utility class that represents a format string.\n            </summary>\n            <remarks>\n            <para>\n            Utility class that represents a format string.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.#ctor(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Initialise the <see cref=\"T:log4net.Util.SystemStringFormat\"/>\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.ToString\">\r\n            <summary>\n            Format the string and arguments\n            </summary>\n            <returns>the formatted string</returns>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Replaces the format item in a specified <see cref=\"T:System.String\"/> with the text equivalent \r\n            of the value of a corresponding <see cref=\"T:System.Object\"/> instance in a specified array.\r\n            A specified parameter supplies culture-specific formatting information.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n            <returns>\r\n            A copy of format in which the format items have been replaced by the <see cref=\"T:System.String\"/> \r\n            equivalent of the corresponding instances of <see cref=\"T:System.Object\"/> in args.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            This method does not throw exceptions. If an exception thrown while formatting the result the\r\n            exception and arguments are returned in the result string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormatError(System.Exception,System.String,System.Object[])\">\r\n            <summary>\n            Process an error during StringFormat\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderArray(System.Array,System.Text.StringBuilder)\">\r\n            <summary>\n            Dump the contents of an array into a string builder\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderObject(System.Object,System.Text.StringBuilder)\">\r\n            <summary>\n            Dump an object to a string\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.SystemStringFormat.declaringType\">\r\n            <summary>\n            The fully qualified type of the SystemStringFormat class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextProperties.s_threadLocalSlot\">\r\n            <summary>\n            The thread local data slot to use to store a PropertiesDictionary.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Remove(System.String)\">\r\n            <summary>\n            Remove a property\n            </summary>\n            <param name=\"key\">the key for the entry to remove</param>\n            <remarks>\n            <para>\n            Remove a property\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Clear\">\r\n            <summary>\n            Clear all properties\n            </summary>\n            <remarks>\n            <para>\n            Clear all properties\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\n            Get the <c>PropertiesDictionary</c> for this thread.\n            </summary>\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\n            <returns>the properties for this thread</returns>\n            <remarks>\n            <para>\n            The collection returned is only to be used on the calling thread. If the\n            caller needs to share the collection between different threads then the \n            caller must clone the collection before doing so.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextProperties.Item(System.String)\">\r\n            <summary>\n            Gets or sets the value of a property\n            </summary>\n            <value>\n            The value for the property with the specified key\n            </value>\n            <remarks>\n            <para>\n            Gets or sets the value of a property\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack\">\r\n            <summary>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.m_stack\">\r\n            <summary>\n            The stack store.\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held in this stack.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears all the contextual information held in this stack.\r\n            Only call this if you think that this tread is being reused after\r\n            a previous call execution which may not have completed correctly.\r\n            You do not need to use this method if you always guarantee to call\r\n            the <see cref=\"M:System.IDisposable.Dispose\"/> method of the <see cref=\"T:System.IDisposable\"/>\r\n            returned from <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> even in exceptional circumstances,\r\n            for example by using the <c>using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))</c> \r\n            syntax.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Pop\">\r\n            <summary>\n            Removes the top context from this stack.\n            </summary>\n            <returns>The message in the context that was removed from the top of this stack.</returns>\n            <remarks>\n            <para>\n            Remove the top context from this stack, and return\n            it to the caller. If this stack is empty then an\n            empty string (not <see langword=\"null\"/>) is returned.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message into this stack.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Pushes a new context onto this stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up this stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an ThreadContext Stack message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.GetFullMessage\">\r\n            <summary>\n            Gets the current context information for this stack.\n            </summary>\n            <returns>The current context information.</returns>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.ToString\">\r\n            <summary>\n            Gets the current context information for this stack.\n            </summary>\n            <returns>Gets the current context information</returns>\n            <remarks>\n            <para>\n            Gets the current context information for this stack.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.log4net#Core#IFixingRequired#GetFixedObject\">\r\n            <summary>\n            Get a portable version of this object\n            </summary>\n            <returns>the portable instance of this object</returns>\n            <remarks>\n            <para>\n            Get a cross thread portable version of this object\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.Count\">\r\n            <summary>\r\n            The number of messages in the stack\r\n            </summary>\r\n            <value>\r\n            The current number of messages in the stack\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The current number of messages in the stack. That is\r\n            the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> has been called\r\n            minus the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Pop\"/> has been called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.InternalStack\">\r\n            <summary>\r\n            Gets and sets the internal stack used by this <see cref=\"T:log4net.Util.ThreadContextStack\"/>\r\n            </summary>\r\n            <value>The internal storage stack</value>\r\n            <remarks>\r\n            <para>\r\n            This property is provided only to support backward compatability \r\n            of the <see cref=\"T:log4net.NDC\"/>. Tytpically the internal stack should not\r\n            be modified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.StackFrame\">\r\n            <summary>\n            Inner class used to represent a single context frame in the stack.\n            </summary>\n            <remarks>\n            <para>\n            Inner class used to represent a single context frame in the stack.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.StackFrame.#ctor(System.String,log4net.Util.ThreadContextStack.StackFrame)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">The message for this context.</param>\r\n            <param name=\"parent\">The parent context in the chain.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.StackFrame\"/> class\r\n            with the specified message and parent context.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.Message\">\r\n            <summary>\n            Get the message.\n            </summary>\n            <value>The message.</value>\n            <remarks>\n            <para>\n            Get the message.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.FullMessage\">\r\n            <summary>\n            Gets the full text of the context down to the root level.\n            </summary>\n            <value>\n            The full text of the context down to the root level.\n            </value>\n            <remarks>\n            <para>\n            Gets the full text of the context down to the root level.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\">\r\n            <summary>\r\n            Struct returned from the <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This struct implements the <see cref=\"T:System.IDisposable\"/> and is designed to be used\r\n            with the <see langword=\"using\"/> pattern to remove the stack frame at the end of the scope.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameStack\">\r\n            <summary>\n            The ThreadContextStack internal stack\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameDepth\">\r\n            <summary>\n            The depth to trim the stack to when this instance is disposed\n            </summary>\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.#ctor(System.Collections.Stack,System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"frameStack\">The internal stack used by the ThreadContextStack.</param>\r\n            <param name=\"frameDepth\">The depth to return the stack to when this object is disposed.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\"/> class with\r\n            the specified stack and return depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.Dispose\">\r\n            <summary>\n            Returns the stack to the correct depth.\n            </summary>\n            <remarks>\n            <para>\n            Returns the stack to the correct depth.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStacks\">\r\n            <summary>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStacks.#ctor(log4net.Util.ContextPropertiesBase)\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStacks\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStacks.declaringType\">\r\n            <summary>\n            The fully qualified type of the ThreadContextStacks class.\n            </summary>\n            <remarks>\n            Used by the internal logger to record the Type of the\n            log message.\n            </remarks>\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStacks.Item(System.String)\">\r\n            <summary>\n            Gets the named thread context stack\n            </summary>\n            <value>\n            The named stack\n            </value>\n            <remarks>\n            <para>\n            Gets the named thread context stack\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.Util.Transform\">\r\n            <summary>\n            Utility class for transforming strings.\n            </summary>\n            <remarks>\n            <para>\n            Utility class for transforming strings.\n            </para>\n            </remarks>\n            <author>Nicko Cadell</author>\n            <author>Gert Driesen</author>\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.Transform\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.WriteEscapedXmlString(System.Xml.XmlWriter,System.String,System.String)\">\r\n            <summary>\r\n            Write a string to an <see cref=\"T:System.Xml.XmlWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"textData\">the string to write</param>\r\n            <param name=\"invalidCharReplacement\">The string to replace non XML compliant chars with</param>\r\n            <remarks>\r\n            <para>\r\n            The test is escaped either using XML escape entities\r\n            or using CDATA sections.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.MaskXmlInvalidCharacters(System.String,System.String)\">\r\n            <summary>\n            Replace invalid XML characters in text string\n            </summary>\n            <param name=\"textData\">the XML text input string</param>\n            <param name=\"mask\">the string to use in place of invalid characters</param>\n            <returns>A string that does not contain invalid XML characters.</returns>\n            <remarks>\n            <para>\n            Certain Unicode code points are not allowed in the XML InfoSet, for\n            details see: <a href=\"http://www.w3.org/TR/REC-xml/#charsets\">http://www.w3.org/TR/REC-xml/#charsets</a>.\n            </para>\n            <para>\n            This method replaces any illegal characters in the input string\n            with the mask string specified.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.CountSubstrings(System.String,System.String)\">\r\n            <summary>\n            Count the number of times that the substring occurs in the text\n            </summary>\n            <param name=\"text\">the text to search</param>\n            <param name=\"substring\">the substring to find</param>\n            <returns>the number of times the substring occurs in the text</returns>\n            <remarks>\n            <para>\n            The substring is assumed to be non repeating within itself.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.Util.Transform.INVALIDCHARS\">\r\n            <summary>\n            Characters illegal in XML 1.0\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext\">\r\n            <summary>\r\n            Impersonate a Windows Account\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.SecurityContext\"/> impersonates a Windows account.\r\n            </para>\r\n            <para>\r\n            How the impersonation is done depends on the value of <see cref=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\"/>.\r\n            This allows the context to either impersonate a set of user credentials specified \r\n            using username, domain name and password or to revert to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.#ctor\">\r\n            <summary>\n            Default constructor\n            </summary>\n            <remarks>\n            <para>\n            Default constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\">\r\n            <summary>\r\n            Initialize the SecurityContext based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The security context will try to Logon the specified user account and\r\n            capture a primary token for impersonation.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, \r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> or <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/> properties were not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <param name=\"state\">caller provided state</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> instance that will revoke the impersonation of this SecurityContext\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Depending on the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property either\r\n            impersonate a user using credentials supplied or revert \r\n            to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.LogonUser(System.String,System.String,System.String)\">\r\n            <summary>\r\n            Create a <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> given the userName, domainName and password.\r\n            </summary>\r\n            <param name=\"userName\">the user name</param>\r\n            <param name=\"domainName\">the domain name</param>\r\n            <param name=\"password\">the password</param>\r\n            <returns>the <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> for the account specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the Windows API call LogonUser to get a principal token for the account. This\r\n            token is used to initialize the WindowsIdentity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Credentials\">\r\n            <summary>\r\n            Gets or sets the impersonation mode for this security context\r\n            </summary>\r\n            <value>\r\n            The impersonation mode for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Impersonate either a user with user credentials or\r\n            revert this thread to the credentials of the process.\r\n            The value is one of the <see cref=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\"/>\r\n            enum.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            the user's credentials are established using the\r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/>\r\n            values.\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\"/>\r\n            no other properties need to be set. If the calling thread is \r\n            impersonating then it will be reverted back to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.UserName\">\r\n            <summary>\r\n            Gets or sets the Windows username for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows username for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.DomainName\">\r\n            <summary>\r\n            Gets or sets the Windows domain name for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows domain name for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value for <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> is the local machine name\r\n            taken from the <see cref=\"P:System.Environment.MachineName\"/> property.\r\n            </para>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Password\">\r\n            <summary>\r\n            Sets the password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <value>\r\n            The password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\">\r\n            <summary>\r\n            The impersonation modes for the <see cref=\"T:log4net.Util.WindowsSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property for\r\n            details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\">\r\n            <summary>\n            Impersonate a user using the credentials supplied\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\">\r\n            <summary>\n            Revert this the thread to the credentials of the process\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext\">\r\n            <summary>\r\n            Adds <see cref=\"T:System.IDisposable\"/> to <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Helper class to expose the <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            through the <see cref=\"T:System.IDisposable\"/> interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.#ctor(System.Security.Principal.WindowsImpersonationContext)\">\r\n            <summary>\n            Constructor\n            </summary>\n            <param name=\"impersonationContext\">the impersonation context being wrapped</param>\n            <remarks>\n            <para>\n            Constructor\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.Dispose\">\r\n            <summary>\n            Revert the impersonation\n            </summary>\n            <remarks>\n            <para>\n            Revert the impersonation\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.GlobalContext\">\r\n            <summary>\r\n            The log4net Global Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>GlobalContext</c> provides a location for global debugging \r\n            information to be stored.\r\n            </para>\r\n            <para>\r\n            The global context has a properties map and these properties can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputing these properties.\r\n            </para>\r\n            <para>\r\n            By default the <c>log4net:HostName</c> property is set to the name of \r\n            the current machine.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <code lang=\"C#\">\r\n            GlobalContext.Properties[\"hostname\"] = Environment.MachineName;\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.GlobalContext.#ctor\">\r\n            <summary>\n            Private Constructor. \n            </summary>\n            <remarks>\n            Uses a private access modifier to prevent instantiation of this class.\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.GlobalContext.s_properties\">\r\n            <summary>\n            The global context properties instance\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.GlobalContext.Properties\">\r\n            <summary>\n            The global properties map.\n            </summary>\n            <value>\n            The global properties map.\n            </value>\n            <remarks>\n            <para>\n            The global properties map.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.AssemblyInfo\">\r\n            <summary>\n            Provides information about the environment the assembly has\n            been built for.\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.Version\">\r\n            <summary>Version of the assembly</summary>\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFrameworkVersion\">\r\n            <summary>Version of the framework targeted</summary>\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFramework\">\r\n            <summary>Type of framework targeted</summary>\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.ClientProfile\">\r\n            <summary>Does it target a client profile?</summary>\n        </member>\r\n        <member name=\"P:log4net.AssemblyInfo.Info\">\r\n            <summary>\n            Identifies the version and target for this assembly.\n            </summary>\n        </member>\r\n        <member name=\"T:log4net.LogicalThreadContext\">\r\n            <summary>\r\n            The log4net Logical Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> provides a location for <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> specific debugging \r\n            information to be stored.\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> or <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context provides a diagnostic context for the current call context. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context is managed on a per <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> basis.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            LogicalThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a LogicalThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(LogicalThreadContext.Stacks[\"LDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a LogicalThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogicalThreadContext.#ctor\">\r\n            <summary>\n            Private Constructor. \n            </summary>\n            <remarks>\n            <para>\n            Uses a private access modifier to prevent instantiation of this class.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_properties\">\r\n            <summary>\n            The thread context properties instance\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_stacks\">\r\n            <summary>\n            The thread context stacks instance\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> \r\n            or <see cref=\"T:log4net.GlobalContext\"/> properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Stacks\">\r\n            <summary>\n            The thread stacks\n            </summary>\n            <value>\n            stack map\n            </value>\n            <remarks>\n            <para>\n            The logical thread stacks.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"T:log4net.LogManager\">\r\n            <summary>\r\n            This class is used by client applications to request logger instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class has static methods that are used by a client to request\r\n            a logger instance. The <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method is \r\n            used to retrieve a logger.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.ILog\"/> interface for more details.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <seealso cref=\"T:log4net.ILog\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.LogManager\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String)\">\r\n            <overloads>Returns the named logger if it exists.</overloads>\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <remarks>\n            <para>\n            If the named logger exists (in the default repository) then it\n            returns a reference to the logger, otherwise it returns <c>null</c>.\n            </para>\n            </remarks>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>The logger found, or <c>null</c> if no logger could be found.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String,System.String)\">\r\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <remarks>\n            <para>\n            If the named logger exists (in the specified repository) then it\n            returns a reference to the logger, otherwise it returns\n            <c>null</c>.\n            </para>\n            </remarks>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>\n            The logger found, or <c>null</c> if the logger doesn't exist in the specified \n            repository.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\n            Returns the named logger if it exists.\n            </summary>\n            <remarks>\n            <para>\n            If the named logger exists (in the repository for the specified assembly) then it\n            returns a reference to the logger, otherwise it returns\n            <c>null</c>.\n            </para>\n            </remarks>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <param name=\"name\">The fully qualified logger name to look for.</param>\n            <returns>\n            The logger, or <c>null</c> if the logger doesn't exist in the specified\n            assembly's repository.\n            </returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers\">\r\n            <overloads>Get the currently defined loggers.</overloads>\n            <summary>\n            Returns all the currently defined loggers in the default repository.\n            </summary>\n            <remarks>\n            <para>The root logger is <b>not</b> included in the returned array.</para>\n            </remarks>\n            <returns>All the defined loggers.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\n            Returns all the currently defined loggers in the specified repository.\n            </summary>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <remarks>\n            The root logger is <b>not</b> included in the returned array.\n            </remarks>\n            <returns>All the defined loggers.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\n            Returns all the currently defined loggers in the specified assembly's repository.\n            </summary>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <remarks>\n            The root logger is <b>not</b> included in the returned array.\n            </remarks>\n            <returns>All the defined loggers.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String)\">\r\n            <overloads>Get or create a logger.</overloads>\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <remarks>\n            <para>\n            Retrieves a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.String)\">\r\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <remarks>\n            <para>\n            Retrieve a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>\n            By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n            <param name=\"repository\">The repository to lookup in.</param>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\n            Retrieves or creates a named logger.\n            </summary>\n            <remarks>\n            <para>\n            Retrieve a logger named as the <paramref name=\"name\"/>\n            parameter. If the named logger already exists, then the\n            existing instance will be returned. Otherwise, a new instance is\n            created.\n            </para>\n            <para>\n            By default, loggers do not have a set level but inherit\n            it from the hierarchy. This is one of the central features of\n            log4net.\n            </para>\n            </remarks>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n            <param name=\"name\">The name of the logger to retrieve.</param>\n            <returns>The logger with the name specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Get the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Shutdown\">\r\n            <summary>\n            Shuts down the log4net system.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in all the\n            default repositories.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository\">\r\n            <overloads>Shutdown a logger repository.</overloads>\n            <summary>\n            Shuts down the default repository.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            default repository.\n            </para>\n            <para>Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.String)\">\r\n            <summary>\n            Shuts down the repository for the repository specified.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            <paramref name=\"repository\"/> specified.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n            <param name=\"repository\">The repository to shutdown.</param>\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\n            Shuts down the repository specified.\n            </summary>\n            <remarks>\n            <para>\n            Calling this method will <b>safely</b> close and remove all\n            appenders in all the loggers including root contained in the\n            repository. The repository is looked up using\n            the <paramref name=\"repositoryAssembly\"/> specified.\n            </para>\n            <para>\n            Some appenders need to be closed before the application exists. \n            Otherwise, pending logging events might be lost.\n            </para>\n            <para>\n            The <c>shutdown</c> method is careful to close nested\n            appenders before closing regular appenders. This is allows\n            configurations where a regular appender is attached to a logger\n            and again to a nested appender.\n            </para>\n            </remarks>\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration\">\r\n            <overloads>Reset the configuration of a repository</overloads>\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository\">\r\n            <overloads>Get the logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository\">\r\n            <overloads>Get a logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Type)\">\r\n            <overloads>Create a domain</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Type)\">\r\n            <overloads>Create a logger repository.</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets the list of currently defined repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get an array of all the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects that have been created.\r\n            </para>\r\n            </remarks>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLogger(log4net.Core.ILogger)\">\r\n            <summary>\n            Looks up the wrapper object for the logger specified.\n            </summary>\n            <param name=\"logger\">The logger to get the wrapper for.</param>\n            <returns>The wrapper for the logger specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLoggers(log4net.Core.ILogger[])\">\r\n            <summary>\n            Looks up the wrapper objects for the loggers specified.\n            </summary>\n            <param name=\"loggers\">The loggers to get the wrappers for.</param>\n            <returns>The wrapper objects for the loggers specified.</returns>\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapperCreationHandler(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects used by\r\n            this manager.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <returns>The wrapper for the logger specified.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.LogManager.s_wrapperMap\">\r\n            <summary>\r\n            The wrapper map to use to hold the <see cref=\"T:log4net.Core.LogImpl\"/> objects.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.MDC\">\r\n            <summary>\r\n            Implementation of Mapped Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The MDC class is similar to the <see cref=\"T:log4net.NDC\"/> class except that it is\r\n            based on a map instead of a stack. It provides <i>mapped\r\n            diagnostic contexts</i>. A <i>Mapped Diagnostic Context</i>, or\r\n            MDC in short, is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The MDC is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.MDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Get(System.String)\">\r\n            <summary>\r\n            Gets the context value identified by the <paramref name=\"key\"/> parameter.\r\n            </summary>\r\n            <param name=\"key\">The key to lookup in the MDC.</param>\r\n            <returns>The string value held for the key, or a <c>null</c> reference if no corresponding value is found.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            If the <paramref name=\"key\"/> parameter does not look up to a\r\n            previously defined context then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Set(System.String,System.String)\">\r\n            <summary>\r\n            Add an entry to the MDC\r\n            </summary>\r\n            <param name=\"key\">The key to store the value under.</param>\r\n            <param name=\"value\">The value to store.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Puts a context value (the <paramref name=\"value\"/> parameter) as identified\r\n            with the <paramref name=\"key\"/> parameter into the current thread's\r\n            context map.\r\n            </para>\r\n            <para>\r\n            If a value is already defined for the <paramref name=\"key\"/>\r\n            specified then the value will be replaced. If the <paramref name=\"value\"/> \r\n            is specified as <c>null</c> then the key value mapping will be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Remove(System.String)\">\r\n            <summary>\r\n            Removes the key value mapping for the key specified.\r\n            </summary>\r\n            <param name=\"key\">The key to remove.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the specified entry from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Clear\">\r\n            <summary>\r\n            Clear all entries in the MDC\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove all the entries from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.NDC\">\r\n            <summary>\r\n            Implementation of Nested Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            A Nested Diagnostic Context, or NDC in short, is an instrument\r\n            to distinguish interleaved log output from different sources. Log\r\n            output is typically interleaved when a server handles multiple\r\n            clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            Interleaved log output can still be meaningful if each log entry\r\n            from different contexts had a distinctive stamp. This is where NDCs\r\n            come into play.\r\n            </para>\r\n            <para>\r\n            Note that NDCs are managed on a per thread basis. The NDC class\r\n            is made up of static methods that operate on the context of the\r\n            calling thread.\r\n            </para>\r\n            </remarks>\r\n            <example>How to push a message into the context\r\n            <code lang=\"C#\">\r\n            using(NDC.Push(\"my context message\"))\r\n            {\r\n            \t... all log calls will have 'my context message' included ...\r\n            \r\n            } // at the end of the using block the message is automatically removed \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.NDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held on the current thread.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Clears the stack of NDC data held on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.CloneStack\">\r\n            <summary>\r\n            Creates a clone of the stack of context information.\r\n            </summary>\r\n            <returns>A clone of the context info for this thread.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The results of this method can be passed to the <see cref=\"M:log4net.NDC.Inherit(System.Collections.Stack)\"/> \r\n            method to allow child threads to inherit the context of their \r\n            parent thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Inherit(System.Collections.Stack)\">\r\n            <summary>\r\n            Inherits the contextual information from another thread.\r\n            </summary>\r\n            <param name=\"stack\">The context stack to inherit.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This thread will use the context information from the stack\r\n            supplied. This can be used to initialize child threads with\r\n            the same contextual information as their parent threads. These\r\n            contexts will <b>NOT</b> be shared. Any further contexts that\r\n            are pushed onto the stack will not be visible to the other.\r\n            Call <see cref=\"M:log4net.NDC.CloneStack\"/> to obtain a stack to pass to\r\n            this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Pop\">\r\n            <summary>\r\n            Removes the top context from the stack.\r\n            </summary>\r\n            <returns>\r\n            The message in the context that was removed from the top \r\n            of the stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the top context from the stack, and return\r\n            it to the caller. If the stack is empty then an\r\n            empty string (not <c>null</c>) is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up \r\n            the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Pushes a new context onto the context stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up the context stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.NDC.Push(\"NDC_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an NDC message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Remove\">\r\n            <summary>\r\n            Removes the context information for this thread. It is\r\n            not required to call this method.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This method is not implemented.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.SetMaxDepth(System.Int32)\">\r\n            <summary>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            </summary>\r\n            <param name=\"maxDepth\">The maximum depth of the stack</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            This may truncate the head of the stack. This only affects the \r\n            stack in the current thread. Also it does not prevent it from\r\n            growing, it only sets the maximum depth at the time of the\r\n            call. This can be used to return to a known context depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.NDC.Depth\">\r\n            <summary>\r\n            Gets the current context depth.\r\n            </summary>\r\n            <value>The current context depth.</value>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The number of context values pushed onto the context stack.\r\n            </para>\r\n            <para>\r\n            Used to record the current depth of the context. This can then \r\n            be restored using the <see cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.ThreadContext\">\r\n            <summary>\r\n            The log4net Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> provides a location for thread specific debugging \r\n            information to be stored.\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The thread context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Thread Context provides a diagnostic context for the current thread. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Thread Context is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            ThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a ThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(ThreadContext.Stacks[\"NDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a ThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.ThreadContext.#ctor\">\r\n            <summary>\n            Private Constructor. \n            </summary>\n            <remarks>\n            <para>\n            Uses a private access modifier to prevent instantiation of this class.\n            </para>\n            </remarks>\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_properties\">\r\n            <summary>\n            The thread context properties instance\n            </summary>\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_stacks\">\r\n            <summary>\n            The thread context stacks instance\n            </summary>\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Stacks\">\r\n            <summary>\n            The thread stacks\n            </summary>\n            <value>\n            stack map\n            </value>\n            <remarks>\n            <para>\n            The thread local stacks.\n            </para>\n            </remarks>\n        </member>\r\n    </members>\r\n</doc>\r\n"
  },
  {
    "path": "Tools/ThirdParty/log4net/2.0/release/log4net.xml",
    "content": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>log4net</name>\r\n    </assembly>\r\n    <members>\r\n        <member name=\"T:log4net.Appender.AdoNetAppender\">\r\n            <summary>\r\n            Appender that logs to a database.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> appends logging events to a table within a\r\n            database. The appender can be configured to specify the connection \r\n            string by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionString\"/> property. \r\n            The connection type (provider) can be specified by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/>\r\n            property. For more information on database connection strings for\r\n            your specific database see <a href=\"http://www.connectionstrings.com/\">http://www.connectionstrings.com/</a>.\r\n            </para>\r\n            <para>\r\n            Records are written into the database either using a prepared\r\n            statement or a stored procedure. The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property\r\n            is set to <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement\r\n            or to <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored\r\n            procedure.\r\n            </para>\r\n            <para>\r\n            The prepared statement text or the name of the stored procedure\r\n            must be set in the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property.\r\n            </para>\r\n            <para>\r\n            The prepared statement or stored procedure can take a number\r\n            of parameters. Parameters are added using the <see cref=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\"/>\r\n            method. This adds a single <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> to the\r\n            ordered list of parameters. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/>\r\n            type may be subclassed if required to provide database specific\r\n            functionality. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> specifies\r\n            the parameter name, database type, size, and how the value should\r\n            be generated using a <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            An example of a SQL Server table that could be logged to:\r\n            <code lang=\"SQL\">\r\n            CREATE TABLE [dbo].[Log] ( \r\n              [ID] [int] IDENTITY (1, 1) NOT NULL ,\r\n              [Date] [datetime] NOT NULL ,\r\n              [Thread] [varchar] (255) NOT NULL ,\r\n              [Level] [varchar] (20) NOT NULL ,\r\n              [Logger] [varchar] (255) NOT NULL ,\r\n              [Message] [varchar] (4000) NOT NULL \r\n            ) ON [PRIMARY]\r\n            </code>\r\n            </example>\r\n            <example>\r\n            An example configuration to log to the above table:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"AdoNetAppender_SqlServer\" type=\"log4net.Appender.AdoNetAppender\">\r\n              <connectionType value=\"System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"/>\r\n              <connectionString value=\"data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa\"/>\r\n              <commandText value=\"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)\"/>\r\n              <parameter>\r\n                <parameterName value=\"@log_date\"/>\r\n                <dbType value=\"DateTime\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@thread\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%thread\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@log_level\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"50\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%level\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@logger\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%logger\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@message\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"4000\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%message\"/>\r\n              </parameter>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Lance Nehring</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingAppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/> that \r\n            buffers events in a fixed size buffer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This base class should be used by appenders that need to buffer a \r\n            number of events before logging them. For example the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            buffers events and then submits the entire contents of the buffer to \r\n            the underlying database in one go.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>\r\n            method to deliver the buffered events.\r\n            </para>\r\n            <para>The BufferingAppenderSkeleton maintains a fixed size cyclic \r\n            buffer of events. The size of the buffer is set using \r\n            the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> property.\r\n            </para>\r\n            <para>A <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> is used to inspect \r\n            each event as it arrives in the appender. If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> \r\n            triggers, then the current buffer is sent immediately \r\n            (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>). Otherwise the event \r\n            is stored in the buffer. For example, an evaluator can be used to \r\n            deliver the events immediately when an ERROR event arrives.\r\n            </para>\r\n            <para>\r\n            The buffering appender can be configured in a <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode. \r\n            By default the appender is NOT lossy. When the buffer is full all \r\n            the buffered events are sent with <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property is set to <c>true</c> then the \r\n            buffer will not be sent when it is full, and new events arriving \r\n            in the appender will overwrite the oldest event in the buffer. \r\n            In lossy mode the buffer will only be sent when the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/>\r\n            triggers. This can be useful behavior when you need to know about \r\n            ERROR events but not about events with a lower level, configure an \r\n            evaluator that will trigger when an ERROR event arrives, the whole \r\n            buffer will be sent which gives a history of events leading up to\r\n            the ERROR event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the code for common functionality, such \r\n            as support for threshold filtering and support for general filters.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.IAppender\">\r\n            <summary>\r\n            Implement this interface for your own strategies for printing log statements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementors should consider extending the <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>\r\n            class which provides a default implementation of this interface.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.Close\">\r\n            <summary>\r\n            Closes the appender and releases resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logging event in Appender specific way.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called to log a message into this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.IAppender.Name\">\r\n            <summary>\r\n            Gets or sets the name of this appender.\r\n            </summary>\r\n            <value>The name of the appender.</value>\r\n            <remarks>\r\n            <para>The name uniquely identifies the appender.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.IBulkAppender\">\r\n            <summary>\r\n            Interface for appenders that support bulk logging.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface extends the <see cref=\"T:log4net.Appender.IAppender\"/> interface to\r\n            support bulk logging of <see cref=\"T:log4net.Core.LoggingEvent\"/> objects. Appenders\r\n            should only implement this interface if they can bulk log efficiently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Log the array of logging events in Appender specific way.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The events to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called to log an array of events into this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IOptionHandler\">\r\n            <summary>\r\n            Interface used to delay activate a configured object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This allows an object to defer activation of its options until all\r\n            options have been set. This is required for components which have\r\n            related options that remain ambiguous until all are set.\r\n            </para>\r\n            <para>\r\n            If a component implements this interface then the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method \r\n            must be called by the container after its all the configured properties have been set \r\n            and before the component can be used.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IOptionHandler.ActivateOptions\">\r\n            <summary>\r\n            Activate the options that were previously set with calls to properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This allows an object to defer activation of its options until all\r\n            options have been set. This is required for components which have\r\n            related options that remain ambiguous until all are set.\r\n            </para>\r\n            <para>\r\n            If a component implements this interface then this method must be called\r\n            after its properties have been set before the component can be used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferSize\">\r\n            <summary>\r\n            Initial buffer size\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity\">\r\n            <summary>\r\n            Maximum buffer size before it is recycled\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>Empty default constructor</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Finalize\">\r\n            <summary>\r\n            Finalizes this appender by calling the implementation's \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If this appender has not been closed then the <c>Finalize</c> method\r\n            will call <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Close\">\r\n            <summary>\r\n            Closes the appender and release resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            <para>\r\n            This method cannot be overridden by subclasses. This method \r\n            delegates the closing of the appender to the <see cref=\"M:log4net.Appender.AppenderSkeleton.OnClose\"/>\r\n            method which must be overridden in the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvent\"/>\r\n            will be passed to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvents\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvents\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvents\"/>\r\n            will be passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.FilterEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Test if the logging event should we output by this appender\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to test</param>\r\n            <returns><c>true</c> if the event should be output, <c>false</c> if the event should be ignored</returns>\r\n            <remarks>\r\n            <para>\r\n            This method checks the logging event against the threshold level set\r\n            on this appender and also against the filters specified on this\r\n            appender.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.AddFilter(log4net.Filter.IFilter)\">\r\n            <summary>\r\n            Adds a filter to the end of the filter chain.\r\n            </summary>\r\n            <param name=\"filter\">the filter to add to this appender</param>\r\n            <remarks>\r\n            <para>\r\n            The Filters are organized in a linked list.\r\n            </para>\r\n            <para>\r\n            Setting this property causes the new filter to be pushed onto the \r\n            back of the filter chain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ClearFilters\">\r\n            <summary>\r\n            Clears the filter list for this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears the filter list for this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.IsAsSevereAsThreshold(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if the message level is below this appender's threshold.\r\n            </summary>\r\n            <param name=\"level\"><see cref=\"T:log4net.Core.Level\"/> to test against.</param>\r\n            <remarks>\r\n            <para>\r\n            If there is no threshold set, then the return value is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the <paramref name=\"level\"/> meets the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> \r\n            requirements of this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.OnClose\">\r\n            <summary>\r\n            Is called when the appender is closed. Derived classes should override \r\n            this method if resources need to be released.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Subclasses of <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> should implement this method \r\n            to perform actual logging.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to append.</param>\r\n            <remarks>\r\n            <para>\r\n            A subclass must implement this method to perform\r\n            logging of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            <para>This method will be called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            if all the conditions listed for that method are met.\r\n            </para>\r\n            <para>\r\n            To restrict the logging of events in the appender\r\n            override the <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append a bulk array of logging events.\r\n            </summary>\r\n            <param name=\"loggingEvents\">the array of logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This base class implementation calls the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>\r\n            method for each element in the bulk array.\r\n            </para>\r\n            <para>\r\n            A sub class that can better process a bulk array of events should\r\n            override this method in addition to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\">\r\n            <summary>\r\n            Called before <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> as a precondition.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            before the call to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden in a subclass to extend the checks \r\n            made before the event is passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            A subclass should ensure that they delegate this call to\r\n            this base class if it is overridden.\r\n            </para>\r\n            </remarks>\r\n            <returns><c>true</c> if the call to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> should proceed.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <returns>The event rendered as a string.</returns>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Where possible use the alternative version of this method\r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>.\r\n            That method streams the rendering onto an existing Writer\r\n            which can give better performance if the caller already has\r\n            a <see cref=\"T:System.IO.TextWriter\"/> open and ready for writing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Use this method in preference to <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/>\r\n            where possible. If, however, the caller needs to render the event\r\n            to a string then <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/> does\r\n            provide an efficient mechanism for doing so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_layout\">\r\n            <summary>\r\n            The layout of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_name\">\r\n            <summary>\r\n            The name of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Name\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_threshold\">\r\n            <summary>\r\n            The level threshold of this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            There is no level threshold filtering by default.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_errorHandler\">\r\n            <summary>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_headFilter\">\r\n            <summary>\r\n            The first filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Set to <c>null</c> initially.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_tailFilter\">\r\n            <summary>\r\n            The last filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_closed\">\r\n            <summary>\r\n            Flag indicating if this appender is closed.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_recursiveGuard\">\r\n            <summary>\r\n            The guard prevents an appender from repeatedly calling its own DoAppend method\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_renderWriter\">\r\n            <summary>\r\n            StringWriter used to render events\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the AppenderSkeleton class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Threshold\">\r\n            <summary>\r\n            Gets or sets the threshold <see cref=\"T:log4net.Core.Level\"/> of this appender.\r\n            </summary>\r\n            <value>\r\n            The threshold <see cref=\"T:log4net.Core.Level\"/> of the appender. \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            All log events with lower level than the threshold level are ignored \r\n            by the appender.\r\n            </para>\r\n            <para>\r\n            In configuration files this option is specified by setting the\r\n            value of the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> option to a level\r\n            string, such as \"DEBUG\", \"INFO\" and so on.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </summary>\r\n            <value>The <see cref=\"T:log4net.Core.IErrorHandler\"/> of the appender</value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> provides a default \r\n            implementation for the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> property. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.FilterHead\">\r\n            <summary>\r\n            The filter chain.\r\n            </summary>\r\n            <value>The head of the filter chain filter chain.</value>\r\n            <remarks>\r\n            <para>\r\n            Returns the head Filter. The Filters are organized in a linked list\r\n            and so all Filters on this Appender are available through the result.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.ILayout\"/> for this appender.\r\n            </summary>\r\n            <value>The layout of the appender.</value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Name\">\r\n            <summary>\r\n            Gets or sets the name of this appender.\r\n            </summary>\r\n            <value>The name of the appender.</value>\r\n            <remarks>\r\n            <para>\r\n            The name uniquely identifies the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\">\r\n            <summary>\r\n            Tests if this appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            In the rather exceptional case, where the appender \r\n            implementation admits a layout but can also work without it, \r\n            then the appender should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This default implementation always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the appender requires a layout object, otherwise <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\">\r\n            <summary>\r\n            The default buffer size.\r\n            </summary>\r\n            <remarks>\r\n            The default size of the cyclic buffer used to store events.\r\n            This is set to 512 by default.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Protected default constructor to allow subclassing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <param name=\"eventMustBeFixed\">the events passed through this appender must be\r\n            fixed by the time that they arrive in the derived class' <c>SendBuffer</c> method.</param>\r\n            <remarks>\r\n            <para>\r\n            Protected constructor to allow subclassing.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"eventMustBeFixed\"/> should be set if the subclass\r\n            expects the events delivered to be fixed even if the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to zero, i.e. when no buffering occurs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flushes any events that have been buffered.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will NOT be flushed to the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush(System.Boolean)\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <param name=\"flushLossyBuffer\">set to <c>true</c> to flush the buffer of lossy events</param>\r\n            <remarks>\r\n            <para>\r\n            Flushes events that have been buffered. If <paramref name=\"flushLossyBuffer\"/> is\r\n            <c>false</c> then events will only be flushed if this buffer is non-lossy mode.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will only be flushed if <paramref name=\"flushLossyBuffer\"/> is <c>true</c>.\r\n            In this case the contents of the buffer will be tested against the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\"/> and if triggering will be output. All other buffered\r\n            events will be discarded.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"flushLossyBuffer\"/> is <c>true</c> then the buffer will always\r\n            be emptied by calling this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.OnClose\">\r\n            <summary>\r\n            Close this appender instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close this appender instance. If this appender is marked\r\n            as not <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> then the remaining events in \r\n            the buffer must be sent when the appender is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Stores the <paramref name=\"loggingEvent\"/> in the cyclic buffer.\r\n            </para>\r\n            <para>\r\n            The buffer will be sent (i.e. passed to the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/> \r\n            method) if one of the following conditions is met:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>The cyclic buffer is full and this appender is\r\n            \t\tmarked as not lossy (see <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>)</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>An <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> is set and\r\n            \t\tit is triggered for the <paramref name=\"loggingEvent\"/>\r\n            \t\tspecified.</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Before the event is stored in the buffer it is fixed\r\n            (see <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/>) to ensure that\r\n            any data referenced by the event will be valid when the buffer\r\n            is processed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendFromBuffer(log4net.Core.LoggingEvent,log4net.Util.CyclicBuffer)\">\r\n            <summary>\r\n            Sends the contents of the buffer.\r\n            </summary>\r\n            <param name=\"firstLoggingEvent\">The first logging event.</param>\r\n            <param name=\"buffer\">The buffer containing the events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            The subclass must override <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Sends the events.\r\n            </summary>\r\n            <param name=\"events\">The events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            The subclass must override this method to process the buffered events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_bufferSize\">\r\n            <summary>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </summary>\r\n            <remarks>\r\n            Set to <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\"/> by default.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_cb\">\r\n            <summary>\r\n            The cyclic buffer used to store the logging events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_evaluator\">\r\n            <summary>\r\n            The triggering event evaluator that causes the buffer to be sent immediately.\r\n            </summary>\r\n            <remarks>\r\n            The object that is used to determine if an event causes the entire\r\n            buffer to be sent immediately. This field can be <c>null</c>, which \r\n            indicates that event triggering is not to be done. The evaluator\r\n            can be set using the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> property. If this appender\r\n            has the <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\"/> (<see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property) set to \r\n            <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\">\r\n            <summary>\r\n            Indicates if the appender should overwrite events in the cyclic buffer \r\n            when it becomes full, or if the buffer should be flushed when the \r\n            buffer is full.\r\n            </summary>\r\n            <remarks>\r\n            If this field is set to <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must \r\n            be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossyEvaluator\">\r\n            <summary>\r\n            The triggering event evaluator filters discarded events.\r\n            </summary>\r\n            <remarks>\r\n            The object that is used to determine if an event that is discarded should\r\n            really be discarded or if it should be sent to the appenders. \r\n            This field can be <c>null</c>, which indicates that all discarded events will\r\n            be discarded. \r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_fixFlags\">\r\n            <summary>\r\n            Value indicating which fields in the event should be fixed\r\n            </summary>\r\n            <remarks>\r\n            By default all fields are fixed\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_eventMustBeFixed\">\r\n            <summary>\r\n            The events delivered to the subclass must be fixed.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender is lossy.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender is lossy, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This appender uses a buffer to store logging events before \r\n            delivering them. A triggering event causes the whole buffer\r\n            to be send to the remote sink. If the buffer overruns before\r\n            a triggering event then logging events could be lost. Set\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> to <c>false</c> to prevent logging events \r\n            from being lost.\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\">\r\n            <summary>\r\n            Gets or sets the size of the cyclic buffer used to hold the \r\n            logging events.\r\n            </summary>\r\n            <value>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option takes a positive integer\r\n            representing the maximum number of logging events to collect in \r\n            a cyclic buffer. When the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is reached,\r\n            oldest events are deleted as new events are added to the\r\n            buffer. By default the size of the cyclic buffer is 512 events.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to a value less than\r\n            or equal to 1 then no buffering will occur. The logging event\r\n            will be delivered synchronously (depending on the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>\r\n            and <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> properties). Otherwise the event will\r\n            be buffered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the \r\n            buffer to be sent immediately.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the buffer to be\r\n            sent immediately.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is appended to this \r\n            appender. If the evaluator triggers then the current buffer will \r\n            immediately be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\">\r\n            <summary>\r\n            Gets or sets the value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </summary>\r\n            <value>\r\n            The value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is discarded from this \r\n            appender. If the evaluator triggers then the current buffer will immediately \r\n            be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating if only part of the logging event data\r\n            should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the\r\n            event data to be fixed and serialized. This will improve performance.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Fix\">\r\n            <summary>\r\n            Gets or sets a the fields that will be fixed in the event\r\n            </summary>\r\n            <value>\r\n            The event fields that will be fixed before the event is buffered\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.#ctor\">\r\n            <summary> \r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Public default constructor to initialize a new instance of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.OnClose\">\r\n            <summary>\r\n            Override the parent method to close the database\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the database command and database connection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Inserts the events into the database.\r\n            </summary>\r\n            <param name=\"events\">The events to insert into the database.</param>\r\n            <remarks>\r\n            <para>\r\n            Insert all the events specified in the <paramref name=\"events\"/>\r\n            array into the database.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\">\r\n            <summary>\r\n            Adds a parameter to the command.\r\n            </summary>\r\n            <param name=\"parameter\">The parameter to add to the command.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a parameter to the ordered list of command parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(System.Data.IDbTransaction,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Writes the events to the database using the transaction specified.\r\n            </summary>\r\n            <param name=\"dbTran\">The transaction that the events will be executed under.</param>\r\n            <param name=\"events\">The array of events to insert into the database.</param>\r\n            <remarks>\r\n            <para>\r\n            The transaction argument can be <c>null</c> if the appender has been\r\n            configured not to use transactions. See <see cref=\"P:log4net.Appender.AdoNetAppender.UseTransactions\"/>\r\n            property for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.GetLogStatement(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Formats the log message into database statement text.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            This method can be overridden by subclasses to provide \r\n            more control over the format of the database statement.\r\n            </remarks>\r\n            <returns>\r\n            Text that can be passed to a <see cref=\"T:System.Data.IDbCommand\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.CreateConnection(System.Type,System.String)\">\r\n            <summary>\r\n            Creates an <see cref=\"T:System.Data.IDbConnection\"/> instance used to connect to the database.\r\n            </summary>\r\n            <remarks>\r\n            This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary).\r\n            </remarks>\r\n            <param name=\"connectionType\">The <see cref=\"T:System.Type\"/> of the <see cref=\"T:System.Data.IDbConnection\"/> object.</param>\r\n            <param name=\"connectionString\">The connectionString output from the ResolveConnectionString method.</param>\r\n            <returns>An <see cref=\"T:System.Data.IDbConnection\"/> instance with a valid connection string.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionString(System.String@)\">\r\n            <summary>\r\n            Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey\r\n            property.\r\n            </summary>\r\n            <remarks>\r\n            ConnectiongStringName is only supported on .NET 2.0 and higher.\r\n            </remarks>\r\n            <param name=\"connectionStringContext\">Additional information describing the connection string.</param>\r\n            <returns>A connection string used to connect to the database.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionType\">\r\n            <summary>\r\n            Retrieves the class type of the ADO.NET provider.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the Type of the ADO.NET provider to use to connect to the\r\n            database. This method resolves the type specified in the \r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> property.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to return a different type\r\n            if necessary.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:System.Type\"/> of the ADO.NET provider</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseCommand\">\r\n            <summary>\r\n            Prepares the database command and initialize the parameters.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseConnection\">\r\n            <summary>\r\n            Connects to the database.\r\n            </summary>\t\t\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DisposeCommand(System.Boolean)\">\r\n            <summary>\r\n            Cleanup the existing command.\r\n            </summary>\r\n            <param name=\"ignoreException\">\r\n            If true, a message will be written using LogLog.Warn if an exception is encountered when calling Dispose.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DiposeConnection\">\r\n            <summary>\r\n            Cleanup the existing connection.\r\n            </summary>\r\n            <remarks>\r\n            Calls the IDbConnection's <see cref=\"M:System.Data.IDbConnection.Close\"/> method.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_usePreparedCommand\">\r\n            <summary>\r\n            Flag to indicate if we are using a command object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Set to <c>true</c> when the appender is to use a prepared\r\n            statement or stored procedure to insert into the database.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_parameters\">\r\n            <summary>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbConnection\">\r\n            <summary>\r\n            The <see cref=\"T:System.Data.IDbConnection\"/> that will be used\r\n            to insert logging events into a database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbCommand\">\r\n            <summary>\r\n            The database command.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionString\">\r\n            <summary>\r\n            Database connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_appSettingsKey\">\r\n            <summary>\r\n            The appSettings key from App.Config that contains the connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionStringName\">\r\n            <summary>\r\n            The connectionStrings key from App.Config that contains the connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionType\">\r\n            <summary>\r\n            String type name of the <see cref=\"T:System.Data.IDbConnection\"/> type name.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandText\">\r\n            <summary>\r\n            The text of the command.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandType\">\r\n            <summary>\r\n            The command type.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_useTransactions\">\r\n            <summary>\r\n            Indicates whether to use transactions when writing to the database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_reconnectOnError\">\r\n            <summary>\r\n            Indicates whether to use transactions when writing to the database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the AdoNetAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionString\">\r\n            <summary>\r\n            Gets or sets the database connection string that is used to connect to \r\n            the database.\r\n            </summary>\r\n            <value>\r\n            The database connection string used to connect to the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The connections string is specific to the connection type.\r\n            See <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>Connection string for MS Access via ODBC:\r\n            <code>\"DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\\data\\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\\data\\train33.mdb\"</code>\r\n            </example>\r\n            <example>Another connection string for MS Access via ODBC:\r\n            <code>\"Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;UID=;PWD=;\"</code>\r\n            </example>\r\n            <example>Connection string for MS Access via OLE DB:\r\n            <code>\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;User Id=;Password=;\"</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.AppSettingsKey\">\r\n            <summary>\r\n            The appSettings key from App.Config that contains the connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionStringName\">\r\n            <summary>\r\n            The connectionStrings key from App.Config that contains the connection string.\r\n            </summary>\r\n            <remarks>\r\n            This property requires at least .NET 2.0.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionType\">\r\n            <summary>\r\n            Gets or sets the type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection\r\n            that should be created.\r\n            </summary>\r\n            <value>\r\n            The type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name of the ADO.NET provider to use.\r\n            </para>\r\n            <para>\r\n            The default is to use the OLE DB provider.\r\n            </para>\r\n            </remarks>\r\n            <example>Use the OLE DB Provider. This is the default value.\r\n            <code>System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the MS SQL Server Provider. \r\n            <code>System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the ODBC Provider. \r\n            <code>Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>ODBC .NET Data Provider</b>.\r\n            </example>\r\n            <example>Use the Oracle Provider. \r\n            <code>System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>.NET Managed Provider for Oracle</b>.\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandText\">\r\n            <summary>\r\n            Gets or sets the command text that is used to insert logging events\r\n            into the database.\r\n            </summary>\r\n            <value>\r\n            The command text used to insert logging events into the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Either the text of the prepared statement or the\r\n            name of the stored procedure to execute to write into\r\n            the database.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property determines if\r\n            this text is a prepared statement or a stored procedure.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandType\">\r\n            <summary>\r\n            Gets or sets the command type to execute.\r\n            </summary>\r\n            <value>\r\n            The command type to execute.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This value may be either <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify\r\n            that the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> is a prepared statement to execute, \r\n            or <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify that the\r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property is the name of a stored procedure\r\n            to execute.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.UseTransactions\">\r\n            <summary>\r\n            Should transactions be used to insert logging events in the database.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if transactions should be used to insert logging events in\r\n            the database, otherwise <c>false</c>. The default value is <c>true</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets a value that indicates whether transactions should be used\r\n            to insert logging events in the database.\r\n            </para>\r\n            <para>\r\n            When set a single transaction will be used to insert the buffered events\r\n            into the database. Otherwise each event will be inserted without using\r\n            an explicit transaction.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ReconnectOnError\">\r\n            <summary>\r\n            Should this appender try to reconnect to the database on error.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should try to reconnect to the database after an\r\n            error has occurred, otherwise <c>false</c>. The default value is <c>false</c>, \r\n            i.e. not to try to reconnect.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default behaviour is for the appender not to try to reconnect to the\r\n            database if an error occurs. Subsequent logging events are discarded.\r\n            </para>\r\n            <para>\r\n            To force the appender to attempt to reconnect to the database set this\r\n            property to <c>true</c>.\r\n            </para>\r\n            <note>\r\n            When the appender attempts to connect to the database there may be a\r\n            delay of up to the connection timeout specified in the connection string.\r\n            This delay will block the calling application's thread. \r\n            Until the connection can be reestablished this potential delay may occur multiple times.\r\n            </note>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.Connection\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> creates a <see cref=\"T:System.Data.IDbConnection\"/> to insert \r\n            logging events into a database.  Classes deriving from <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            can use this property to get or set this <see cref=\"T:System.Data.IDbConnection\"/>.  Use the \r\n            underlying <see cref=\"T:System.Data.IDbConnection\"/> returned from <see cref=\"P:log4net.Appender.AdoNetAppender.Connection\"/> if \r\n            you require access beyond that which <see cref=\"T:log4net.Appender.AdoNetAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AdoNetAppenderParameter\">\r\n            <summary>\r\n            Parameter type used by the <see cref=\"T:log4net.Appender.AdoNetAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the basic database parameter properties\r\n            as defined by the <see cref=\"T:System.Data.IDbDataParameter\"/> interface.\r\n            </para>\r\n            <para>This type can be subclassed to provide database specific\r\n            functionality. The two methods that are called externally are\r\n            <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\"/> and <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Default constructor for the AdoNetAppenderParameter class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\">\r\n            <summary>\r\n            Prepare the specified database command object.\r\n            </summary>\r\n            <param name=\"command\">The command to prepare.</param>\r\n            <remarks>\r\n            <para>\r\n            Prepares the database command object by adding\r\n            this parameter to its collection of parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the logging event and set the parameter value in the command.\r\n            </summary>\r\n            <param name=\"command\">The command containing the parameter.</param>\r\n            <param name=\"loggingEvent\">The event to be rendered.</param>\r\n            <remarks>\r\n            <para>\r\n            Renders the logging event using this parameters layout\r\n            object. Sets the value of the parameter on the command object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_parameterName\">\r\n            <summary>\r\n            The name of this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_dbType\">\r\n            <summary>\r\n            The database type for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_inferType\">\r\n            <summary>\r\n            Flag to infer type rather than use the DbType\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_precision\">\r\n            <summary>\r\n            The precision for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_scale\">\r\n            <summary>\r\n            The scale for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_size\">\r\n            <summary>\r\n            The size for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_layout\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to render the\r\n            logging event into an object for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.ParameterName\">\r\n            <summary>\r\n            Gets or sets the name of this parameter.\r\n            </summary>\r\n            <value>\r\n            The name of this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this parameter. The parameter name\r\n            must match up to a named parameter to the SQL stored procedure\r\n            or prepared statement.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\">\r\n            <summary>\r\n            Gets or sets the database type for this parameter.\r\n            </summary>\r\n            <value>\r\n            The database type for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The database type for this parameter. This property should\r\n            be set to the database type from the <see cref=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\"/>\r\n            enumeration. See <see cref=\"P:System.Data.IDataParameter.DbType\"/>.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the type from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDataParameter.DbType\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Precision\">\r\n            <summary>\r\n            Gets or sets the precision for this parameter.\r\n            </summary>\r\n            <value>\r\n            The precision for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum number of digits used to represent the Value.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the precision from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Precision\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Scale\">\r\n            <summary>\r\n            Gets or sets the scale for this parameter.\r\n            </summary>\r\n            <value>\r\n            The scale for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The number of decimal places to which Value is resolved.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the scale from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Scale\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Size\">\r\n            <summary>\r\n            Gets or sets the size for this parameter.\r\n            </summary>\r\n            <value>\r\n            The size for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum size, in bytes, of the data within the column.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the size from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Size\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to \r\n            render the logging event into an object for this \r\n            parameter.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> used to render the\r\n            logging event into an object for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> that renders the value for this\r\n            parameter.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.RawLayoutConverter\"/> can be used to adapt\r\n            any <see cref=\"T:log4net.Layout.ILayout\"/> into a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            for use in the property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender\">\r\n            <summary>\r\n            Appends logging events to the terminal using ANSI color escape sequences.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            AnsiColorTerminalAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific level of message to be set.\r\n            </para>\r\n            <note>\r\n            This appender expects the terminal to understand the VT100 control set \r\n            in order to interpret the color codes. If the terminal or console does not\r\n            understand the control codes the behavior is not defined.\r\n            </note>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            <para>\r\n            When configuring the ANSI colored terminal appender, a mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red\"/>\r\n                <attributes value=\"Bright,Underscore\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            </list>\r\n            These color values cannot be combined together to make new colors.\r\n            </para>\r\n            <para>\r\n            The attributes can be any combination of the following:\r\n            <list type=\"bullet\">\r\n            <item><term>Bright</term><description>foreground is brighter</description></item>\r\n            <item><term>Dim</term><description>foreground is dimmer</description></item>\r\n            <item><term>Underscore</term><description>message is underlined</description></item>\r\n            <item><term>Blink</term><description>foreground is blinking (does not work on all terminals)</description></item>\r\n            <item><term>Reverse</term><description>foreground and background are reversed</description></item>\r\n            <item><term>Hidden</term><description>output is hidden</description></item>\r\n            <item><term>Strikethrough</term><description>message has a line through it</description></item>\r\n            </list>\r\n            While any of these attributes may be combined together not all combinations\r\n            work well together, for example setting both <i>Bright</i> and <i>Dim</i> attributes makes\r\n            no sense.\r\n            </para>\r\n            </remarks>\r\n            <author>Patrick Wagstrom</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.PostEventCodes\">\r\n            <summary>\r\n            Ansi code to reset terminal\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.AddMapping(log4net.Appender.AnsiColorTerminalAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colours\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for this appender\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize the level to color mappings set on this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_writeToErrorStream\">\r\n            <summary>\r\n            Flag to write output to the error stream rather than the standard output stream\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to color value\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\">\r\n            <summary>\r\n            Target is the value of the console output stream.\r\n            </summary>\r\n            <value>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes\">\r\n            <summary>\r\n            The enum of possible display attributes\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the ANSI color attributes.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Bright\">\r\n            <summary>\r\n            text is bright\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Dim\">\r\n            <summary>\r\n            text is dim\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Underscore\">\r\n            <summary>\r\n            text is underlined\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Blink\">\r\n            <summary>\r\n            text is blinking\r\n            </summary>\r\n            <remarks>\r\n            Not all terminals support this attribute\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Reverse\">\r\n            <summary>\r\n            text and background colors are reversed\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Hidden\">\r\n            <summary>\r\n            text is hidden\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Strikethrough\">\r\n            <summary>\r\n            text is displayed with a strikethrough\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiColor\">\r\n            <summary>\r\n            The enum of possible foreground or background color values for \r\n            use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The output can be in one for the following ANSI colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Black\">\r\n            <summary>\r\n            color is black\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Red\">\r\n            <summary>\r\n            color is red\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Green\">\r\n            <summary>\r\n            color is green\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Yellow\">\r\n            <summary>\r\n            color is yellow\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Blue\">\r\n            <summary>\r\n            color is blue\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Magenta\">\r\n            <summary>\r\n            color is magenta\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Cyan\">\r\n            <summary>\r\n            color is cyan\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.White\">\r\n            <summary>\r\n            color is white\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the color it should be displayed as.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the mapping between a level and the color it should be displayed in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMappingEntry\">\r\n            <summary>\r\n            An entry in the <see cref=\"T:log4net.Util.LevelMapping\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract base class for types that are stored in the\r\n            <see cref=\"T:log4net.Util.LevelMapping\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.#ctor\">\r\n            <summary>\r\n            Default protected constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default protected constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.ActivateOptions\">\r\n            <summary>\r\n            Initialize any options defined on this entry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Should be overridden by any classes that need to initialise based on their options\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LevelMappingEntry.Level\">\r\n            <summary>\r\n            The level that is the key for this mapping \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this mapping \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set the <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this\r\n            mapping subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> together\r\n            and append the attributes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\">\r\n            <summary>\r\n            The mapped foreground color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped foreground color for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\">\r\n            <summary>\r\n            The mapped background color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped background color for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\">\r\n            <summary>\r\n            The color attributes for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The color attributes for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/>, <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> and\r\n            <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\"/> suitable for setting the ansi terminal color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Appender.IAppender\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ReadOnly(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Creates a read-only wrapper for a <c>AppenderCollection</c> instance.\r\n            </summary>\r\n            <param name=\"list\">list to create a readonly wrapper arround</param>\r\n            <returns>\r\n            An <c>AppenderCollection</c> wrapper that is read-only.\r\n            </returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.EmptyCollection\">\r\n            <summary>\r\n            An empty readonly static AppenderCollection\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that is empty and has the default initial capacity.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Int32)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that has the specified initial capacity.\r\n            </summary>\r\n            <param name=\"capacity\">\r\n            The number of elements that the new <c>AppenderCollection</c> is initially capable of storing.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"c\">The <c>AppenderCollection</c> whose elements are copied to the new collection.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection.Tag)\">\r\n            <summary>\r\n            Allow subclasses to avoid our default constructors\r\n            </summary>\r\n            <param name=\"tag\"></param>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Add(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Appender.IAppender\"/> to the end of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clear\">\r\n            <summary>\r\n            Removes all elements from the <c>AppenderCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Appender.AppenderCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Contains(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Appender.IAppender\"/> is in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>AppenderCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IndexOf(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Appender.IAppender\"/>\r\n            in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to locate in the <c>AppenderCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>AppenderCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Insert(System.Int32,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Inserts an element into the <c>AppenderCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Remove(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Appender.IAppender\"/> from the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to remove from the <c>AppenderCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Appender.IAppender\"/> was not found in the <c>AppenderCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Appender.AppenderCollection.Enumerator\"/> for the entire <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>AppenderCollection</c> to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>AppenderCollection</c> whose elements should be added to the end of the current <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> array to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> collection to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.TrimToSize\">\r\n            <summary>\r\n            Sets the capacity to the actual number of elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ToArray\">\r\n            <summary>\r\n            Return the collection elements as an array\r\n            </summary>\r\n            <returns>the array</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements actually contained in the <c>AppenderCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\r\n            </summary>\r\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.IAppender\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            \t<para><paramref name=\"index\"/> is less than zero</para>\r\n            \t<para>-or-</para>\r\n            \t<para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the collection has a fixed size.\r\n            </summary>\r\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the IList is read-only.\r\n            </summary>\r\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Capacity\">\r\n            <summary>\r\n            Gets or sets the number of elements the <c>AppenderCollection</c> can contain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Tag\">\r\n            <summary>\r\n            Type visible only to our subclasses\r\n            Used to access protected constructor\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.Tag.Default\">\r\n            <summary>\r\n            A value\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>Enumerator</c> class.\r\n            </summary>\r\n            <param name=\"tc\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Enumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.ReadOnlyAppenderCollection\">\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AspNetTraceAppender\">\r\n            <summary>\r\n            <para>\r\n            Appends log events to the ASP.NET <see cref=\"T:System.Web.TraceContext\"/> system.\r\n            </para>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Diagnostic information and tracing messages that you specify are appended to the output \r\n            of the page that is sent to the requesting browser. Optionally, you can view this information\r\n            from a separate trace viewer (Trace.axd) that displays trace information for every page in a \r\n            given application.\r\n            </para>\r\n            <para>\r\n            Trace statements are processed and displayed only when tracing is enabled. You can control \r\n            whether tracing is displayed to a page, to the trace viewer, or both.\r\n            </para>\r\n            <para>\r\n            The logging event is passed to the <see cref=\"M:System.Web.TraceContext.Write(System.String)\"/> or \r\n            <see cref=\"M:System.Web.TraceContext.Warn(System.String)\"/> method depending on the level of the logging event.\r\n            The event's logger name is the default value for the category parameter of the Write/Warn method. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AspNetTraceAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the logging event to the ASP.NET trace\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Write the logging event to the ASP.NET trace\r\n            <c>HttpContext.Current.Trace</c> \r\n            (<see cref=\"T:System.Web.TraceContext\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AspNetTraceAppender.m_category\">\r\n            <summary>\r\n            Defaults to %logger\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingForwardingAppender\">\r\n            <summary>\r\n            Buffers events and then forwards them to attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The events are buffered in this appender until conditions are\r\n            met to allow the appender to deliver the events to the attached \r\n            appenders. See <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> for the\r\n            conditions that cause the buffer to be sent.\r\n            </para>\r\n            <para>The forwarding appender can be used to specify different \r\n            thresholds and filters for the same appender at different locations \r\n            within the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IAppenderAttachable\">\r\n            <summary>\r\n            Interface for attaching appenders to objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface for attaching, removing and retrieving appenders.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Attaches an appender.\r\n            </summary>\r\n            <param name=\"appender\">The appender to add.</param>\r\n            <remarks>\r\n            <para>\r\n            Add the specified appender. The implementation may\r\n            choose to allow or deny duplicate appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.GetAppender(System.String)\">\r\n            <summary>\r\n            Gets an attached appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to get.</param>\r\n            <returns>\r\n            The appender with the name specified, or <c>null</c> if no appender with the\r\n            specified name is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns an attached appender with the <paramref name=\"name\"/> specified.\r\n            If no appender with the specified name is found <c>null</c> will be\r\n            returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Removes and closes all attached appenders\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.IAppenderAttachable.Appenders\">\r\n            <summary>\r\n            Gets all attached appenders.\r\n            </summary>\r\n            <value>\r\n            A collection of attached appenders.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets a collection of attached appenders.\r\n            If there are no attached appenders the\r\n            implementation should return an empty \r\n            collection rather than <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.OnClose\">\r\n            <summary>\r\n            Closes the appender and releases resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Send the events.\r\n            </summary>\r\n            <param name=\"events\">The events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            Forwards the events to the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\r\n            Looks for the appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to lookup.</param>\r\n            <returns>\r\n            The appender with the specified name, or <c>null</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named appender attached to this buffering appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all previously added appenders from this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is useful when re-reading configuration information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ColoredConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific type of message to be set.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes directly to the application's attached console\r\n            not to the <c>System.Console.Out</c> or <c>System.Console.Error</c> <c>TextWriter</c>.\r\n            The <c>System.Console.Out</c> and <c>System.Console.Error</c> streams can be\r\n            programmatically redirected (for example NUnit does this to capture program output).\r\n            This appender will ignore these redirections because it needs to use Win32\r\n            API calls to colorize the output. To respect these redirections the <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            must be used.\r\n            </para>\r\n            <para>\r\n            When configuring the colored console appender, mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red, HighIntensity\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            combination of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            <item><term>HighIntensity</term><description></description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Rick Hobbs</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.AddMapping(log4net.Appender.ColoredConsoleAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colors\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for this appender\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize the level to color mappings set on this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_writeToErrorStream\">\r\n            <summary>\r\n            Flag to write output to the error stream rather than the standard output stream\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to color value\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_consoleOutputWriter\">\r\n            <summary>\r\n            The console output stream writer to write to\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer is not thread safe.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.Target\">\r\n            <summary>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </summary>\r\n            <value>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.Colors\">\r\n            <summary>\r\n            The enum of possible color values for use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.ColoredConsoleAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Blue\">\r\n            <summary>\r\n            color is blue\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Green\">\r\n            <summary>\r\n            color is green\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Red\">\r\n            <summary>\r\n            color is red\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.White\">\r\n            <summary>\r\n            color is white\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Yellow\">\r\n            <summary>\r\n            color is yellow\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Purple\">\r\n            <summary>\r\n            color is purple\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Cyan\">\r\n            <summary>\r\n            color is cyan\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity\">\r\n            <summary>\r\n            color is intensified\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the color it should be displayed as.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the mapping between a level and the color it should be displayed in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> together.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\">\r\n            <summary>\r\n            The mapped foreground color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped foreground color for the specified level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\">\r\n            <summary>\r\n            The mapped background color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped background color for the specified level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> suitable for \r\n            setting the console color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.Target\">\r\n            <summary>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </summary>\r\n            <value>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.DebugAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Debug\"/> class for details on configuring the\r\n            debug system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <see cref=\"M:System.Diagnostics.Debug.Write(System.String,System.String)\"/>\r\n            method. The event's logger name is passed as the value for the category name to the Write method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is <c>true</c> then the <see cref=\"M:System.Diagnostics.Debug.Flush\"/>\r\n            is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.DebugAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.ImmediateFlush\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender will \r\n            flush at the end of each write.\r\n            </summary>\r\n            <remarks>\r\n            <para>The default behavior is to flush at the end of each \r\n            write. If the option is set to<c>false</c>, then the underlying \r\n            stream can defer writing to physical medium to a later time. \r\n            </para>\r\n            <para>\r\n            Avoiding the flush operation at the end of each append results \r\n            in a performance gain of 10 to 20 percent. However, there is safety\r\n            trade-off involved in skipping flushing. Indeed, when flushing is\r\n            skipped, then it is likely that the last few log events will not\r\n            be recorded on disk when the application exits. This is a high\r\n            price to pay even for a 20% performance gain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender\">\r\n            <summary>\r\n            Writes events to the system event log.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges.\r\n            See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog\r\n            </para>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry can be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            The <c>Category</c> of the event log entry can be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            <para>\r\n            When configuring the EventLogAppender a mapping can be\r\n            specified to map a logging level to an event log entry type. For example:\r\n            </para>\r\n            <code lang=\"XML\">\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"ERROR\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Error\" /&gt;\r\n            &lt;/mapping&gt;\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"DEBUG\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Information\" /&gt;\r\n            &lt;/mapping&gt;\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and eventLogEntryType can be any value\r\n            from the <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> enum, i.e.:\r\n            <list type=\"bullet\">\r\n            <item><term>Error</term><description>an error event</description></item>\r\n            <item><term>Warning</term><description>a warning event</description></item>\r\n            <item><term>Information</term><description>an informational event</description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Thomas Voss</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class\r\n            with the specified <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The <see cref=\"T:log4net.Layout.ILayout\"/> to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.AddMapping(log4net.Appender.EventLogAppender.Level2EventLogEntryType)\">\r\n            <summary>\r\n            Add a mapping of level to <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\"/> mapping to this appender.\r\n            Each mapping defines the event log entry type for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.CreateEventSource(System.String,System.String,System.String)\">\r\n            <summary>\r\n            Create an event log source\r\n            </summary>\r\n            <remarks>\r\n            Uses different API calls under NET_2_0\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Writes the event to the system event log using the \r\n            <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>.</para>\r\n            \r\n            <para>If the event has an <c>EventID</c> property (see <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            set then this integer will be used as the event log event id.</para>\r\n            \r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.GetEntryType(log4net.Core.Level)\">\r\n            <summary>\r\n            Get the equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/>\r\n            </summary>\r\n            <param name=\"level\">the Level to convert to an EventLogEntryType</param>\r\n            <returns>The equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/></returns>\r\n            <remarks>\r\n            Because there are fewer applicable <see cref=\"T:System.Diagnostics.EventLogEntryType\"/>\r\n            values to use in logging levels than there are in the \r\n            <see cref=\"T:log4net.Core.Level\"/> this is a one way mapping. There is\r\n            a loss of information during the conversion.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_logName\">\r\n            <summary>\r\n            The log name is the section in the event logs where the messages\r\n            are stored.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_applicationName\">\r\n            <summary>\r\n            Name of the application to use when logging.  This appears in the\r\n            application column of the event log named by <see cref=\"F:log4net.Appender.EventLogAppender.m_logName\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_machineName\">\r\n            <summary>\r\n            The name of the machine which holds the event log. This is\r\n            currently only allowed to be '.' i.e. the current machine.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to EventLogEntryType\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_eventId\">\r\n            <summary>\r\n            The event ID to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_category\">\r\n            <summary>\r\n            The event category to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the EventLogAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.LogName\">\r\n            <summary>\r\n            The name of the log where messages will be stored.\r\n            </summary>\r\n            <value>\r\n            The string name of the log where messages will be stored.\r\n            </value>\r\n            <remarks>\r\n            <para>This is the name of the log as it appears in the Event Viewer\r\n            tree. The default value is to log into the <c>Application</c>\r\n            log, this is where most applications write their events. However\r\n            if you need a separate log for your application (or applications)\r\n            then you should set the <see cref=\"P:log4net.Appender.EventLogAppender.LogName\"/> appropriately.</para>\r\n            <para>This should not be used to distinguish your event log messages\r\n            from those of other applications, the <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>\r\n            property should be used to distinguish events. This property should be \r\n            used to group together events into a single log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.ApplicationName\">\r\n            <summary>\r\n            Property used to set the Application name.  This appears in the\r\n            event logs when logging.\r\n            </summary>\r\n            <value>\r\n            The string used to distinguish events from different sources.\r\n            </value>\r\n            <remarks>\r\n            Sets the event log source property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.MachineName\">\r\n            <summary>\r\n            This property is used to return the name of the computer to use\r\n            when accessing the event logs.  Currently, this is the current\r\n            computer, denoted by a dot \".\"\r\n            </summary>\r\n            <value>\r\n            The string name of the machine holding the event log that \r\n            will be logged into.\r\n            </value>\r\n            <remarks>\r\n            This property cannot be changed. It is currently set to '.'\r\n            i.e. the local machine. This may be changed in future.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The system security context used to write to the EventLog.\r\n            </para>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.EventId\">\r\n            <summary>\r\n            Gets or sets the <c>EventId</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry will normally be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Category\">\r\n            <summary>\r\n            Gets or sets the <c>Category</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>Category</c> of the event log entry will normally be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the color it should be displayed as.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the mapping between a level and its event log entry type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender\">\r\n            <summary>\r\n            Appends logging events to a file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Logging events are sent to the file specified by\r\n            the <see cref=\"P:log4net.Appender.FileAppender.File\"/> property.\r\n            </para>\r\n            <para>\r\n            The file can be opened in either append or overwrite mode \r\n            by specifying the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property.\r\n            If the file path is relative it is taken as relative from \r\n            the application base directory. The file encoding can be\r\n            specified by setting the <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> property.\r\n            </para>\r\n            <para>\r\n            The layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            values will be written each time the file is opened and closed\r\n            respectively. If the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is <see langword=\"true\"/>\r\n            then the file may contain multiple copies of the header and footer.\r\n            </para>\r\n            <para>\r\n            This appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> supports pluggable file locking models via\r\n            the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> property.\r\n            The default behavior, implemented by <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> \r\n            is to obtain an exclusive write lock on the file until this appender is closed.\r\n            The alternative models only hold a\r\n            write lock while the appender is writing a logging event (<see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/>)\r\n            or synchronize by using a named system wide Mutex (<see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/>).\r\n            </para>\r\n            <para>\r\n            All locking strategies have issues and you should seriously consider using a different strategy that\r\n            avoids having multiple processes logging to the same file.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Rodrigo B. de Oliveira</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Niall Daley</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TextWriterAppender\">\r\n            <summary>\r\n            Sends logging events to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An Appender that writes to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This appender may be used stand alone if initialized with an appropriate\r\n            writer, however it is typically used as a base class for an appender that\r\n            can open a <see cref=\"T:System.IO.TextWriter\"/> to write to.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.Stream)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and\r\n            sets the output destination to a new <see cref=\"T:System.IO.StreamWriter\"/> initialized \r\n            with the specified <see cref=\"T:System.IO.Stream\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <param name=\"os\">The <see cref=\"T:System.IO.Stream\"/> to output to.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.TextWriter)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and sets\r\n            the output destination to the specified <see cref=\"T:System.IO.StreamWriter\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender</param>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to output to</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> must have been previously opened.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PreAppendCheck\">\r\n            <summary>\r\n            This method determines if there is a sense in attempting to append.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method checks if an output target has been set and if a\r\n            layout has been set. \r\n            </para>\r\n            </remarks>\r\n            <returns><c>false</c> if any of the preconditions fail.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method writes all the bulk logged events to the output writer\r\n            before flushing the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.OnClose\">\r\n            <summary>\r\n            Close this appender instance. The underlying stream or writer is also closed.\r\n            </summary>\r\n            <remarks>\r\n            Closed appenders cannot be reused.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooterAndCloseWriter\">\r\n            <summary>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Reset\">\r\n            <summary>\r\n            Clears internal references to the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            and other variables.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Subclasses can override this method for an alternate closing behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PrepareWriter\">\r\n            <summary>\r\n            Called to allow a subclass to lazily initialize the writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called when an event is logged and the <see cref=\"P:log4net.Appender.TextWriterAppender.Writer\"/> or\r\n            <see cref=\"P:log4net.Appender.TextWriterAppender.QuietWriter\"/> have not been set. This allows a subclass to\r\n            attempt to initialize the writer multiple times.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_qtw\">\r\n            <summary>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            or output stream will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logging events are not actually persisted if and when the application \r\n            crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the TextWriterAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\">\r\n            <summary>\r\n            Gets or set whether the appender will flush at the end \r\n            of each append operation.\r\n            </summary>\r\n            <value>\r\n            <para>\r\n            The default behavior is to flush at the end of each \r\n            append operation.\r\n            </para>\r\n            <para>\r\n            If this option is set to <c>false</c>, then the underlying \r\n            stream can defer persisting the logging event to a later \r\n            time.\r\n            </para>\r\n            </value>\r\n            <remarks>\r\n            Avoiding the flush operation at the end of each append results in\r\n            a performance gain of 10 to 20 percent. However, there is safety\r\n            trade-off involved in skipping flushing. Indeed, when flushing is\r\n            skipped, then it is likely that the last few log events will not\r\n            be recorded on disk when the application exits. This is a high\r\n            price to pay even for a 20% performance gain.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.Writer\">\r\n            <summary>\r\n            Sets the <see cref=\"T:System.IO.TextWriter\"/> where the log output will go.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The specified <see cref=\"T:System.IO.TextWriter\"/> must be open and writable.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> will be closed when the appender \r\n            instance is closed.\r\n            </para>\r\n            <para>\r\n            <b>Note:</b> Logging to an unopened <see cref=\"T:System.IO.TextWriter\"/> will fail.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\">\r\n            <summary>\r\n            Gets or set the <see cref=\"T:log4net.Core.IErrorHandler\"/> and the underlying \r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/>, if any, for this appender. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.QuietWriter\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events are written.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String,System.Boolean)\">\r\n            <summary>\r\n            Construct a new appender using the layout, file and append mode.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use with this appender</param>\r\n            <param name=\"filename\">the full path to the file to write to</param>\r\n            <param name=\"append\">flag to indicate if the file should be appended to</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String)\">\r\n            <summary>\r\n            Construct a new appender using the layout and file specified.\r\n            The file will be appended to.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use with this appender</param>\r\n            <param name=\"filename\">the full path to the file to write to</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on the file appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This will cause the file to be opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Reset\">\r\n            <summary>\r\n            Closes any previously opened file and calls the parent's <see cref=\"M:log4net.Appender.TextWriterAppender.Reset\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets the filename and the file stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.PrepareWriter\">\r\n            <summary>\r\n            Called to initialize the file writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Will be called for each logged message until the file is\r\n            successfully opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Acquires the output file locks once before writing all the events to\r\n            the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseFile\">\r\n            <summary>\r\n            Closes the previously opened file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Layout.ILayout.Footer\"/> to the file and then\r\n            closes the file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SafeOpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\r\n            </summary>\r\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\r\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\r\n            <remarks>\r\n            <para>\r\n            Calls <see cref=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\"/> but guarantees not to throw an exception.\r\n            Errors are passed to the <see cref=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\r\n            </summary>\r\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\r\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\r\n            <remarks>\r\n            <para>\r\n            If there was already an opened file, then the previous file\r\n            is closed first.\r\n            </para>\r\n            <para>\r\n            This method will ensure that the directory structure\r\n            for the <paramref name=\"fileName\"/> specified exists.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\">\r\n            <summary>\r\n            Sets the quiet writer used for file output\r\n            </summary>\r\n            <param name=\"fileStream\">the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This implementation of <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\"/> creates a <see cref=\"T:System.IO.StreamWriter\"/>\r\n            over the <paramref name=\"fileStream\"/> and passes it to the \r\n            <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden by sub classes that want to wrap the\r\n            <see cref=\"T:System.IO.Stream\"/> in some way, for example to encrypt the output\r\n            data using a <c>System.Security.Cryptography.CryptoStream</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\r\n            Sets the quiet writer being used.\r\n            </summary>\r\n            <param name=\"writer\">the writer over the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This method can be overridden by sub classes that want to\r\n            wrap the <see cref=\"T:System.IO.TextWriter\"/> in some way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\r\n            Convert a path into a fully qualified path.\r\n            </summary>\r\n            <param name=\"path\">The path to convert.</param>\r\n            <returns>The fully qualified path.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the path specified to a fully\r\n            qualified path. If the path is relative it is\r\n            taken as relative from the application base \r\n            directory.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_appendToFile\">\r\n            <summary>\r\n            Flag to indicate if we should append to the file\r\n            or overwrite the file. The default is to append.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_fileName\">\r\n            <summary>\r\n            The name of the log file.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_encoding\">\r\n            <summary>\r\n            The encoding to use for the file stream.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_stream\">\r\n            <summary>\r\n            The stream to log to. Has added locking semantics\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_lockingModel\">\r\n            <summary>\r\n            The locking model to use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the FileAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.File\">\r\n            <summary>\r\n            Gets or sets the path to the file that logging will be written to.\r\n            </summary>\r\n            <value>\r\n            The path to the file that logging will be written to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If the path is relative it is taken as relative from \r\n            the application base directory.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.AppendToFile\">\r\n            <summary>\r\n            Gets or sets a flag that indicates whether the file should be\r\n            appended to or overwritten.\r\n            </summary>\r\n            <value>\r\n            Indicates whether the file should be appended to or overwritten.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If the value is set to false then the file will be overwritten, if \r\n            it is set to true then the file will be appended to.\r\n            </para>\r\n            The default value is true.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default encoding set is <see cref=\"P:System.Text.Encoding.Default\"/>\r\n            which is the encoding for the system's current ANSI code page.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModel\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to lock the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </para>\r\n            <para>\r\n            There are three built in locking models, <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>, <see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/> and <see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/> .\r\n            The first locks the file from the start of logging to the end, the \r\n            second locks only for the minimal amount of time when logging each message\r\n            and the last synchronizes processes using a named system wide Mutex.\r\n            </para>\r\n            <para>\r\n            The default locking model is the <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingStream\">\r\n            <summary>\r\n            Write only <see cref=\"T:System.IO.Stream\"/> that uses the <see cref=\"T:log4net.Appender.FileAppender.LockingModelBase\"/> \r\n            to manage access to an underlying resource.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)\">\r\n            <summary>\r\n            True asynchronous writes are not supported, the implementation forces a synchronous write.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LogException\">\r\n            <summary>\r\n            Exception base type for log4net.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class with\r\n            the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingModelBase\">\r\n            <summary>\r\n            Locking model base class\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Base class for the locking models available to the <see cref=\"T:log4net.Appender.FileAppender\"/> derived loggers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the output file\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CreateStream(System.String,System.Boolean,System.IO.FileShare)\">\r\n            <summary>\r\n            Helper method that creates a FileStream under CurrentAppender's SecurityContext.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Typically called during OpenFile or AcquireLock. \r\n            </para>\r\n            <para>\r\n            If the directory portion of the <paramref name=\"filename\"/> does not exist, it is created\r\n            via Directory.CreateDirecctory.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"filename\"></param>\r\n            <param name=\"append\"></param>\r\n            <param name=\"fileShare\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseStream(System.IO.Stream)\">\r\n            <summary>\r\n            Helper method to close <paramref name=\"stream\"/> under CurrentAppender's SecurityContext.\r\n            </summary>\r\n            <remarks>\r\n            Does not set <paramref name=\"stream\"/> to null.\r\n            </remarks>\r\n            <param name=\"stream\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModelBase.CurrentAppender\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The file appender this locking model is attached to and working on\r\n            behalf of.\r\n            </para>\r\n            <para>\r\n            The file appender is used to locate the security context and the error handler to use.\r\n            </para>\r\n            <para>\r\n            The value of this property will be set before <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\"/> is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.ExclusiveLock\">\r\n            <summary>\r\n            Hold an exclusive lock on the output file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Open the file once for writing and hold it open until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/> is called. \r\n            Maintains an exclusive lock on the file during this time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Does nothing. The lock is already taken\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Does nothing. The lock will be released when the file is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.MinimalLock\">\r\n            <summary>\r\n            Acquires the file lock for each write\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Opens the file once for each <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>/<see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> cycle, \r\n            thus holding the lock for the minimal amount of time. This method of locking\r\n            is considerably slower than <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> but allows \r\n            other processes to move/delete the log file whilst logging continues.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Prepares to open the file when the first message is logged.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.InterProcessLock\">\r\n            <summary>\r\n            Provides cross-process file locking.\r\n            </summary>\r\n            <author>Ron Grabowski</author>\r\n            <author>Steve Wranovsky</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/>,\r\n            -<see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Does nothing. The lock is already taken\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ForwardingAppender\">\r\n            <summary>\r\n            This appender forwards logging events to attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The forwarding appender can be used to specify different thresholds\r\n            and filters for the same appender at different locations within the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.OnClose\">\r\n            <summary>\r\n            Closes the appender and releases resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Forward the logging event to the attached appenders \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers the logging event to all the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Forward the logging events to the attached appenders \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers the logging events to all the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\r\n            Looks for the appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to lookup.</param>\r\n            <returns>\r\n            The appender with the specified name, or <c>null</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named appender attached to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all previously added appenders from this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is useful when re-reading configuration information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender\">\r\n            <summary>\r\n            Logs events to a local syslog service.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            This appender uses the POSIX libc library functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c>.\r\n            If these functions are not available on the local system then this appender will not work!\r\n            </note>\r\n            <para>\r\n            The functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c> are specified in SUSv2 and \r\n            POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service.\r\n            </para>\r\n            <para>\r\n            This appender talks to a local syslog service. If you need to log to a remote syslog\r\n            daemon and you cannot configure your local syslog service to do this you may be\r\n            able to use the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> to log via UDP.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class is set up to write \r\n            to a local syslog service.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/> to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.OnClose\">\r\n            <summary>\r\n            Close the syslog when the appender is closed\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the syslog when the appender is closed\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\r\n            Translates a log4net level to a syslog severity.\r\n            </summary>\r\n            <param name=\"level\">A log4net level.</param>\r\n            <returns>A syslog severity.</returns>\r\n            <remarks>\r\n            <para>\r\n            Translates a log4net level to a syslog severity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GeneratePriority(log4net.Appender.LocalSyslogAppender.SyslogFacility,log4net.Appender.LocalSyslogAppender.SyslogSeverity)\">\r\n            <summary>\r\n            Generate a syslog priority.\r\n            </summary>\r\n            <param name=\"facility\">The syslog facility.</param>\r\n            <param name=\"severity\">The syslog severity.</param>\r\n            <returns>A syslog priority.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_identity\">\r\n            <summary>\r\n            The message identity\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_handleToIdentity\">\r\n            <summary>\r\n            Marshaled handle to the identity string. We have to hold on to the\r\n            string as the <c>openlog</c> and <c>syslog</c> APIs just hold the\r\n            pointer to the ident and dereference it for each log message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to syslog severity\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.openlog(System.IntPtr,System.Int32,log4net.Appender.LocalSyslogAppender.SyslogFacility)\">\r\n            <summary>\r\n            Open connection to system logger.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.syslog(System.Int32,System.String,System.String)\">\r\n            <summary>\r\n            Generate a log message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The libc syslog method takes a format string and a variable argument list similar\r\n            to the classic printf function. As this type of vararg list is not supported\r\n            by C# we need to specify the arguments explicitly. Here we have specified the\r\n            format string with a single message argument. The caller must set the format \r\n            string to <c>\"%s\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.closelog\">\r\n            <summary>\r\n            Close descriptor used to write to system logger.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogSeverity\">\r\n            <summary>\r\n            syslog severities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The log4net Level maps to a syslog severity using the\r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\"/> method and the <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/>\r\n            class. The severity is set on <see cref=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\r\n            system is unusable\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\r\n            action must be taken immediately\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\r\n            critical conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\r\n            error conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\r\n            warning conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\r\n            normal but significant condition\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\r\n            informational\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\r\n            debug-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\">\r\n            <summary>\r\n            syslog facilities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog facility defines which subsystem the logging comes from.\r\n            This is set on the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Facility\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\r\n            kernel messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\">\r\n            <summary>\r\n            random user-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\r\n            mail system\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\r\n            system daemons\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\r\n            security/authorization messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\r\n            messages generated internally by syslogd\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\r\n            line printer subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.News\">\r\n            <summary>\r\n            network news subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\r\n            UUCP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\r\n            clock (cron/at) daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\r\n            security/authorization  messages (private)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\r\n            ftp daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\r\n            NTP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\r\n            log audit\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\r\n            log alert\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\r\n            clock daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\r\n            The mapped syslog severity for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped syslog severity for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.MemoryAppender\">\r\n            <summary>\r\n            Stores logging events in an array.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The memory appender stores all the logging events\r\n            that are appended in an in-memory array.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.GetEvents\"/> method to get\r\n            the current list of events that have been appended.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.Clear\"/> method to clear the\r\n            current list of events.\r\n            </para>\r\n            </remarks>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.MemoryAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.GetEvents\">\r\n            <summary>\r\n            Gets the events that have been logged.\r\n            </summary>\r\n            <returns>The events that have been logged</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the events that have been logged.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Stores the <paramref name=\"loggingEvent\"/> in the events list.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Clear\">\r\n            <summary>\r\n            Clear the list of events\r\n            </summary>\r\n            <remarks>\r\n            Clear the list of events\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_eventsList\">\r\n            <summary>\r\n            The list of events that have been appended.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_fixFlags\">\r\n            <summary>\r\n            Value indicating which fields in the event should be fixed\r\n            </summary>\r\n            <remarks>\r\n            By default all fields are fixed\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating whether only part of the logging event \r\n            data should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the event \r\n            data to be fixed and stored in the appender, hereby improving performance. \r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.Fix\">\r\n            <summary>\r\n            Gets or sets the fields that will be fixed in the event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.NetSendAppender\">\r\n            <summary>\r\n            Logs entries by sending network messages using the \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> native function.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can send messages only to names that are active \r\n            on the network. If you send the message to a user name, \r\n            that user must be logged on and running the Messenger \r\n            service to receive the message.\r\n            </para>\r\n            <para>\r\n            The receiver will get a top most window displaying the \r\n            messages one at a time, therefore this appender should \r\n            not be used to deliver a high volume of messages.\r\n            </para>\r\n            <para>\r\n            The following table lists some possible uses for this appender :\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Action</term>\r\n                    <description>Property Value(s)</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>Send a message to a user account on the local machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a user account on a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a domain user account</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of a domain controller | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to all the names in a workgroup or domain</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;workgroup name | domain name&gt;*\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message from the local machine to a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            <b>Note :</b> security restrictions apply for sending \r\n            network messages, see <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> \r\n            for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            An example configuration section to log information \r\n            using this appender from the local machine, named \r\n            LOCAL_PC, to machine OPERATOR_PC :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"NetSendAppender_Operator\" type=\"log4net.Appender.NetSendAppender\">\r\n                <server value=\"LOCAL_PC\"/>\r\n                <recipient value=\"OPERATOR_PC\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5p %c [%x] - %m%n\"/>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_server\">\r\n            <summary>\r\n            The DNS or NetBIOS name of the server on which the function is to execute.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_sender\">\r\n            <summary>\r\n            The sender of the network message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_recipient\">\r\n            <summary>\r\n            The message alias to which the message should be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.#ctor\">\r\n            <summary>\r\n            Initializes the appender.\r\n            </summary>\r\n            <remarks>\r\n            The default constructor initializes all fields to their default values.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using a network message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\">\r\n            <summary>\r\n            Sends a buffer of information to a registered message alias.\r\n            </summary>\r\n            <param name=\"serverName\">The DNS or NetBIOS name of the server on which the function is to execute.</param>\r\n            <param name=\"msgName\">The message alias to which the message buffer should be sent</param>\r\n            <param name=\"fromName\">The originator of the message.</param>\r\n            <param name=\"buffer\">The message text.</param>\r\n            <param name=\"bufferSize\">The length, in bytes, of the message text.</param>\r\n            <remarks>\r\n            <para>\r\n            The following restrictions apply for sending network messages:\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Platform</term>\r\n                    <description>Requirements</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>Windows NT</term>\r\n                    <description>\r\n                        <para>\r\n                        No special group membership is required to send a network message.\r\n                        </para>\r\n                        <para>\r\n                        Admin, Accounts, Print, or Server Operator group membership is required to \r\n                        successfully send a network message on a remote server.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Windows 2000 or later</term>\r\n                    <description>\r\n                        <para>\r\n                        If you send a message on a domain controller that is running Active Directory, \r\n                        access is allowed or denied based on the access control list (ACL) for the securable \r\n                        object. The default ACL permits only Domain Admins and Account Operators to send a network message. \r\n                        </para>\r\n                        <para>\r\n                        On a member server or workstation, only Administrators and Server Operators can send a network message. \r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            For more information see <a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/security_requirements_for_the_network_management_functions.asp\">Security Requirements for the Network Management Functions</a>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <para>\r\n            If the function succeeds, the return value is zero.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Sender\">\r\n            <summary>\r\n            Gets or sets the sender of the message.\r\n            </summary>\r\n            <value>\r\n            The sender of the message.\r\n            </value>\r\n            <remarks>\r\n            If this property is not specified, the message is sent from the local computer.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Recipient\">\r\n            <summary>\r\n            Gets or sets the message alias to which the message should be sent.\r\n            </summary>\r\n            <value>\r\n            The recipient of the message.\r\n            </value>\r\n            <remarks>\r\n            This property should always be specified in order to send a message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Server\">\r\n            <summary>\r\n            Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute.\r\n            </summary>\r\n            <value>\r\n            DNS or NetBIOS name of the remote server on which the function is to execute.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For Windows NT 4.0 and earlier, the string should begin with \\\\.\r\n            </para>\r\n            <para>\r\n            If this property is not specified, the local computer is used. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.OutputDebugStringAppender\">\r\n            <summary>\r\n            Appends log events to the OutputDebugString system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            OutputDebugStringAppender appends log events to the\r\n            OutputDebugString system.\r\n            </para>\r\n            <para>\r\n            The string is passed to the native <c>OutputDebugString</c> \r\n            function.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.OutputDebugStringAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the logging event to the output debug string API\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Write the logging event to the output debug string API\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.OutputDebugString(System.String)\">\r\n            <summary>\r\n            Stub for OutputDebugString native method\r\n            </summary>\r\n            <param name=\"message\">the string to output</param>\r\n            <remarks>\r\n            <para>\r\n            Stub for OutputDebugString native method\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.OutputDebugStringAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender\">\r\n            <summary>\r\n            Logs events to a remote syslog daemon.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The BSD syslog protocol is used to remotely log to\r\n            a syslog daemon. The syslogd listens for for messages\r\n            on UDP port 514.\r\n            </para>\r\n            <para>\r\n            The syslog UDP protocol is not authenticated. Most syslog daemons\r\n            do not accept remote log messages because of the security implications.\r\n            You may be able to use the LocalSyslogAppender to talk to a local\r\n            syslog service.\r\n            </para>\r\n            <para>\r\n            There is an RFC 3164 that claims to document the BSD Syslog Protocol.\r\n            This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html.\r\n            This appender generates what the RFC calls an \"Original Device Message\",\r\n            i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation\r\n            this format of message will be accepted by all current syslog daemon\r\n            implementations. The daemon will attach the current time and the source\r\n            hostname or IP address to any messages received.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.UdpAppender\">\r\n             <summary>\r\n             Sends logging events as connectionless UDP datagrams to a remote host or a \r\n             multicast group using an <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n             </summary>\r\n             <remarks>\r\n             <para>\r\n             UDP guarantees neither that messages arrive, nor that they arrive in the correct order.\r\n             </para>\r\n             <para>\r\n             To view the logging results, a custom application can be developed that listens for logging \r\n             events.\r\n             </para>\r\n             <para>\r\n             When decoding events send via this appender remember to use the same encoding\r\n             to decode the events as was used to send the events. See the <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/>\r\n             property to specify the encoding to use.\r\n             </para>\r\n             </remarks>\r\n             <example>\r\n             This example shows how to log receive logging events that are sent \r\n             on IP address 244.0.0.1 and port 8080 to the console. The event is \r\n             encoded in the packet as a unicode string and it is decoded as such. \r\n             <code lang=\"C#\">\r\n             IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);\r\n             UdpClient udpClient;\r\n             byte[] buffer;\r\n             string loggingEvent;\r\n             \r\n             try \r\n             {\r\n                 udpClient = new UdpClient(8080);\r\n                 \r\n                 while(true) \r\n                 {\r\n                     buffer = udpClient.Receive(ref remoteEndPoint);\r\n                     loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);\r\n                     Console.WriteLine(loggingEvent);\r\n                 }\r\n             } \r\n             catch(Exception e) \r\n             {\r\n                 Console.WriteLine(e.ToString());\r\n             }\r\n             </code>\r\n             <code lang=\"Visual Basic\">\r\n             Dim remoteEndPoint as IPEndPoint\r\n             Dim udpClient as UdpClient\r\n             Dim buffer as Byte()\r\n             Dim loggingEvent as String\r\n             \r\n             Try \r\n                 remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)\r\n                 udpClient = new UdpClient(8080)\r\n            \r\n                 While True\r\n                     buffer = udpClient.Receive(ByRef remoteEndPoint)\r\n                     loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)\r\n                     Console.WriteLine(loggingEvent)\r\n                 Wend\r\n             Catch e As Exception\r\n                 Console.WriteLine(e.ToString())\r\n             End Try\r\n             </code>\r\n             <para>\r\n             An example configuration section to log information using this appender to the \r\n             IP 224.0.0.1 on port 8080:\r\n             </para>\r\n             <code lang=\"XML\" escaped=\"true\">\r\n             <appender name=\"UdpAppender\" type=\"log4net.Appender.UdpAppender\">\r\n                 <remoteAddress value=\"224.0.0.1\"/>\r\n                 <remotePort value=\"8080\"/>\r\n                 <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5level %logger [%ndc] - %message%newline\"/>\r\n             </appender>\r\n             </code>\r\n             </example>\r\n             <author>Gert Driesen</author>\r\n             <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.UdpAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The default constructor initializes all fields to their default values.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was specified or \r\n            an invalid remote or local TCP port number was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was not specified.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The TCP port number assigned to <see cref=\"P:log4net.Appender.UdpAppender.LocalPort\"/> or <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/> is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using an UDP datagram.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.OnClose\">\r\n            <summary>\r\n            Closes the UDP connection and releases all resources associated with \r\n            this <see cref=\"T:log4net.Appender.UdpAppender\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Disables the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> and releases all managed \r\n            and unmanaged resources associated with the <see cref=\"T:log4net.Appender.UdpAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.InitializeClientConnection\">\r\n            <summary>\r\n            Initializes the underlying  <see cref=\"T:System.Net.Sockets.UdpClient\"/> connection.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> is initialized and binds to the \r\n            port number from which you intend to communicate.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteAddress\">\r\n            <summary>\r\n            The IP address of the remote host or multicast group to which \r\n            the logging event will be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remotePort\">\r\n            <summary>\r\n            The TCP port number of the remote host or multicast group to \r\n            which the logging event will be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteEndPoint\">\r\n            <summary>\r\n            The cached remote endpoint to which the logging events will be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_localPort\">\r\n            <summary>\r\n            The TCP port number from which the <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_client\">\r\n            <summary>\r\n            The <see cref=\"T:System.Net.Sockets.UdpClient\"/> instance that will be used for sending the \r\n            logging events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_encoding\">\r\n            <summary>\r\n            The encoding to use for the packet.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteAddress\">\r\n            <summary>\r\n            Gets or sets the IP address of the remote host or multicast group to which\r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            The IP address of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Multicast addresses are identified by IP class <b>D</b> addresses (in the range 224.0.0.0 to\r\n            239.255.255.255).  Multicast packets can pass across different networks through routers, so\r\n            it is possible to use multicasts in an Internet scenario as long as your network provider \r\n            supports multicasting.\r\n            </para>\r\n            <para>\r\n            Hosts that want to receive particular multicast messages must register their interest by joining\r\n            the multicast group.  Multicast messages are not sent to networks where no host has joined\r\n            the multicast group.  Class <b>D</b> IP addresses are used for multicast groups, to differentiate\r\n            them from normal host addresses, allowing nodes to easily detect if a message is of interest.\r\n            </para>\r\n            <para>\r\n            Static multicast addresses that are needed globally are assigned by IANA.  A few examples are listed in the table below:\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>IP Address</term>\r\n                    <description>Description</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>224.0.0.1</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all system on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.2</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all routers on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.12</term>\r\n                    <description>\r\n                        <para>\r\n                        The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            A complete list of actually reserved multicast addresses and their owners in the ranges\r\n            defined by RFC 3171 can be found at the <A href=\"http://www.iana.org/assignments/multicast-addresses\">IANA web site</A>. \r\n            </para>\r\n            <para>\r\n            The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative \r\n            addresses.  These addresses can be reused with other local groups.  Routers are typically \r\n            configured with filters to prevent multicast traffic in this range from flowing outside\r\n            of the local network.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemotePort\">\r\n            <summary>\r\n            Gets or sets the TCP port number of the remote host or multicast group to which \r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will send messages to this TCP port number\r\n            on the remote host or multicast group.\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.LocalPort\">\r\n            <summary>\r\n            Gets or sets the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will bind to this port for sending messages.\r\n            </para>\r\n            <para>\r\n            Setting the value to 0 (the default) will cause the udp client not to bind to\r\n            a local port.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Client\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> creates a <see cref=\"T:System.Net.Sockets.UdpClient\"/> to send logging events \r\n            over a network.  Classes deriving from <see cref=\"T:log4net.Appender.UdpAppender\"/> can use this\r\n            property to get or set this <see cref=\"T:System.Net.Sockets.UdpClient\"/>.  Use the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>\r\n            returned from <see cref=\"P:log4net.Appender.UdpAppender.Client\"/> if you require access beyond that which \r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteEndPoint\">\r\n            <summary>\r\n            Gets or sets the cached remote endpoint to which the logging events should be sent.\r\n            </summary>\r\n            <value>\r\n            The cached remote endpoint to which the logging events will be sent.\r\n            </value>\r\n            <remarks>\r\n            The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method will initialize the remote endpoint \r\n            with the values of the <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> and <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/>\r\n            properties.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.DefaultSyslogPort\">\r\n            <summary>\r\n            Syslog port 514\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class is set up to write \r\n            to a remote syslog daemon.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.AddMapping(log4net.Appender.RemoteSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\"/> mapping to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for this appender\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize the level to syslog severity mappings set on this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\r\n            Translates a log4net level to a syslog severity.\r\n            </summary>\r\n            <param name=\"level\">A log4net level.</param>\r\n            <returns>A syslog severity.</returns>\r\n            <remarks>\r\n            <para>\r\n            Translates a log4net level to a syslog severity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GeneratePriority(log4net.Appender.RemoteSyslogAppender.SyslogFacility,log4net.Appender.RemoteSyslogAppender.SyslogSeverity)\">\r\n            <summary>\r\n            Generate a syslog priority.\r\n            </summary>\r\n            <param name=\"facility\">The syslog facility.</param>\r\n            <param name=\"severity\">The syslog severity.</param>\r\n            <returns>A syslog priority.</returns>\r\n            <remarks>\r\n            <para>\r\n            Generate a syslog priority.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_identity\">\r\n            <summary>\r\n            The message identity\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to syslog severity\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogSeverity\">\r\n            <summary>\r\n            syslog severities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog severities.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\r\n            system is unusable\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\r\n            action must be taken immediately\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\r\n            critical conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\r\n            error conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\r\n            warning conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\r\n            normal but significant condition\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\r\n            informational\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\r\n            debug-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\">\r\n            <summary>\r\n            syslog facilities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog facilities\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\r\n            kernel messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\">\r\n            <summary>\r\n            random user-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\r\n            mail system\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\r\n            system daemons\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\r\n            security/authorization messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\r\n            messages generated internally by syslogd\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\r\n            line printer subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.News\">\r\n            <summary>\r\n            network news subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\r\n            UUCP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\r\n            clock (cron/at) daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\r\n            security/authorization  messages (private)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\r\n            ftp daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\r\n            NTP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\r\n            log audit\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\r\n            log alert\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\r\n            clock daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\r\n            The mapped syslog severity for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped syslog severity for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender\">\r\n            <summary>\r\n            Delivers logging events to a remote logging sink. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This Appender is designed to deliver events to a remote sink. \r\n            That is any object that implements the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface. It delivers the events using .NET remoting. The\r\n            object to deliver events to is specified by setting the\r\n            appenders <see cref=\"P:log4net.Appender.RemotingAppender.Sink\"/> property.</para>\r\n            <para>\r\n            The RemotingAppender buffers events before sending them. This allows it to \r\n            make more efficient use of the remoting infrastructure.</para>\r\n            <para>\r\n            Once the buffer is full the events are still not sent immediately. \r\n            They are scheduled to be sent using a pool thread. The effect is that \r\n            the send occurs asynchronously. This is very important for a \r\n            number of non obvious reasons. The remoting infrastructure will \r\n            flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.</para>\r\n            <para>\r\n            Because the events are sent asynchronously using pool threads it is possible to close \r\n            this appender before all the queued events have been sent.\r\n            When closing the appender attempts to wait until all the queued events have been sent, but \r\n            this will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If this appender is being closed because the <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for. If the runtime terminates the threads before\r\n            the queued events have been sent then they will be lost. To ensure that all events\r\n            are sent the appender must be closed before the application exits. See \r\n            <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/> for details on how to shutdown\r\n            log4net programmatically.</para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemotingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            The events are not sent immediately. They are scheduled to be sent\r\n            using a pool thread. The effect is that the send occurs asynchronously.\r\n            This is very important for a number of non obvious reasons. The remoting\r\n            infrastructure will flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.\r\n            </remarks>\r\n            <param name=\"events\">The events to send.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.OnClose\">\r\n            <summary>\r\n            Override base class close.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method waits while there are queued work items. The events are\r\n            sent asynchronously using <see cref=\"T:System.Threading.ThreadPool\"/> work items. These items\r\n            will be sent once a thread pool thread is available to send them, therefore\r\n            it is possible to close the appender before all the queued events have been\r\n            sent.</para>\r\n            <para>\r\n            This method attempts to wait until all the queued events have been sent, but this \r\n            method will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If the appender is being closed because the <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.BeginAsyncSend\">\r\n            <summary>\r\n            A work item is being queued into the thread pool\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.EndAsyncSend\">\r\n            <summary>\r\n            A work item from the thread pool has completed\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBufferCallback(System.Object)\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This method is designed to be used with the <see cref=\"T:System.Threading.ThreadPool\"/>.\r\n            This method expects to be passed an array of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the state param.\r\n            </remarks>\r\n            <param name=\"state\">the logging events to send</param>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkUrl\">\r\n            <summary>\r\n            The URL of the remote sink.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkObj\">\r\n            <summary>\r\n            The local proxy (.NET remoting) for the remote logging sink.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_queuedCallbackCount\">\r\n            <summary>\r\n            The number of queued callbacks currently waiting or executing\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_workQueueEmptyEvent\">\r\n            <summary>\r\n            Event used to signal when there are no queued work items\r\n            </summary>\r\n            <remarks>\r\n            This event is set when there are no queued work items. In this\r\n            state it is safe to close the appender.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemotingAppender.Sink\">\r\n            <summary>\r\n            Gets or sets the URL of the well-known object that will accept \r\n            the logging events.\r\n            </summary>\r\n            <value>\r\n            The well-known URL of the remote sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The URL of the remoting sink that will accept logging events.\r\n            The sink must implement the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\">\r\n            <summary>\r\n            Interface used to deliver <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This interface must be implemented by a remoting sink\r\n            if the <see cref=\"T:log4net.Appender.RemotingAppender\"/> is to be used\r\n            to deliver logging events to the sink.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Delivers logging events to the remote sink\r\n            </summary>\r\n            <param name=\"events\">Array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers logging events to the remote sink\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender\">\r\n            <summary>\r\n            Appender that rolls log files based on size or date or both.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            RollingFileAppender can roll log files based on size or date or both\r\n            depending on the setting of the <see cref=\"P:log4net.Appender.RollingFileAppender.RollingStyle\"/> property.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\"/> the log file will be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\"/> the log file will be rolled\r\n            once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/> the log file will be\r\n            rolled once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed, but within a date boundary the file will also be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> the log file will be rolled when\r\n            the appender is configured. This effectively means that the log file can be\r\n            rolled once per program execution.\r\n            </para>\r\n            <para>\r\n            A of few additional optional features have been added:\r\n            <list type=\"bullet\">\r\n            <item>Attach date pattern for current log file <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/></item>\r\n            <item>Backup number increments for newer files <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/></item>\r\n            <item>Infinite number of backups by file size <see cref=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\"/></item>\r\n            </list>\r\n            </para>\r\n            \r\n            <note>\r\n            <para>\r\n            For large or infinite numbers of backup files a <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> \r\n            greater than zero is highly recommended, otherwise all the backup files need\r\n            to be renamed each time a new backup is created.\r\n            </para>\r\n            <para>\r\n            When Date/Time based rolling is used setting <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> \r\n            to <see langword=\"true\"/> will reduce the number of file renamings to few or none.\r\n            </para>\r\n            </note>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            Changing <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> or <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> without clearing\r\n            the log file directory of backup files will cause unexpected and unwanted side effects.  \r\n            </para>\r\n            </note>\r\n            \r\n            <para>\r\n            If Date/Time based rolling is enabled this appender will attempt to roll existing files\r\n            in the directory without a Date/Time tag based on the last write date of the base log file.\r\n            The appender only rolls the log file when a message is logged. If Date/Time based rolling \r\n            is enabled then the appender will not roll the log file at the Date/Time boundary but\r\n            at the point when the next message is logged after the boundary has been crossed.\r\n            </para>\r\n            \r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.RollingFileAppender\"/> extends the <see cref=\"T:log4net.Appender.FileAppender\"/> and\r\n            has the same behavior when opening the log file.\r\n            The appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            When rolling a backup file necessitates deleting an older backup file the\r\n            file to be deleted is moved to a temporary name before being deleted.\r\n            </para>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            A maximum number of backup files when rolling on date/time boundaries is not supported.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Edward Smit</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RollingFileAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RollingFileAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\r\n            Sets the quiet writer being used.\r\n            </summary>\r\n            <remarks>\r\n            This method can be overridden by sub classes.\r\n            </remarks>\r\n            <param name=\"writer\">the writer to set</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write out a logging event.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to write to file.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles append time behavior for RollingFileAppender.  This checks\r\n            if a roll over either by date (checked first) or time (checked second)\r\n            is need and then appends to the file last.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Write out an array of logging events.\r\n            </summary>\r\n            <param name=\"loggingEvents\">the events to write to file.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles append time behavior for RollingFileAppender.  This checks\r\n            if a roll over either by date (checked first) or time (checked second)\r\n            is need and then appends to the file last.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.AdjustFileBeforeAppend\">\r\n            <summary>\r\n            Performs any required rolling before outputting the next event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Handles append time behavior for RollingFileAppender.  This checks\r\n            if a roll over either by date (checked first) or time (checked second)\r\n            is need and then appends to the file last.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates and opens the file for logging.  If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/>\r\n            is false then the fully qualified name is determined and used.\r\n            </summary>\r\n            <param name=\"fileName\">the name of the file to open</param>\r\n            <param name=\"append\">true to append to existing file</param>\r\n            <remarks>\r\n            <para>This method will ensure that the directory structure\r\n            for the <paramref name=\"fileName\"/> specified exists.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetNextOutputFileName(System.String)\">\r\n            <summary>\r\n            Get the current output file name\r\n            </summary>\r\n            <param name=\"fileName\">the base file name</param>\r\n            <returns>the output file name</returns>\r\n            <remarks>\r\n            The output file name is based on the base fileName specified.\r\n            If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> is set then the output \r\n            file name is the same as the base file passed in. Otherwise\r\n            the output file depends on the date pattern, on the count\r\n            direction or both.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DetermineCurSizeRollBackups\">\r\n            <summary>\r\n            Determines curSizeRollBackups (only within the current roll point)\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetWildcardPatternForFile(System.String)\">\r\n            <summary>\r\n            Generates a wildcard pattern that can be used to find all files\r\n            that are similar to the base file name.\r\n            </summary>\r\n            <param name=\"baseFileName\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetExistingFiles(System.String)\">\r\n            <summary>\r\n            Builds a list of filenames for all files matching the base filename plus a file\r\n            pattern.\r\n            </summary>\r\n            <param name=\"baseFilePath\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverIfDateBoundaryCrossing\">\r\n            <summary>\r\n            Initiates a roll over if needed for crossing a date boundary since the last run.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ExistingInit\">\r\n            <summary>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            The following is done\r\n            <list type=\"bullet\">\r\n            <item>determine curSizeRollBackups (only within the current roll point)</item>\r\n            <item>initiates a roll over if needed for crossing a date boundary since the last run.</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeFromOneFile(System.String,System.String)\">\r\n            <summary>\r\n            Does the work of bumping the 'current' file counter higher\r\n            to the highest count when an incremental file name is seen.\r\n            The highest count is either the first file (when count direction\r\n            is greater than 0) or the last file (when count direction less than 0).\r\n            In either case, we want to know the highest count that is present.\r\n            </summary>\r\n            <param name=\"baseFile\"></param>\r\n            <param name=\"curFileName\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetBackUpIndex(System.String)\">\r\n            <summary>\r\n            Attempts to extract a number from the end of the file name that indicates\r\n            the number of the times the file has been rolled over.\r\n            </summary>\r\n            <remarks>\r\n            Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes.\r\n            </remarks>\r\n            <param name=\"curFileName\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeRollBackups(System.String,System.Collections.ArrayList)\">\r\n            <summary>\r\n            Takes a list of files and a base file name, and looks for \r\n            'incremented' versions of the base file.  Bumps the max\r\n            count up to the highest count seen.\r\n            </summary>\r\n            <param name=\"baseFile\"></param>\r\n            <param name=\"arrayFiles\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ComputeCheckPeriod(System.String)\">\r\n            <summary>\r\n            Calculates the RollPoint for the datePattern supplied.\r\n            </summary>\r\n            <param name=\"datePattern\">the date pattern to calculate the check period for</param>\r\n            <returns>The RollPoint that is most accurate for the date pattern supplied</returns>\r\n            <remarks>\r\n            Essentially the date pattern is examined to determine what the\r\n            most suitable roll point is. The roll point chosen is the roll point\r\n            with the smallest period that can be detected using the date pattern\r\n            supplied. i.e. if the date pattern only outputs the year, month, day \r\n            and hour then the smallest roll point that can be detected would be\r\n            and hourly roll point as minutes could not be detected.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Sets initial conditions including date/time roll over information, first check,\r\n            scheduledFilename, and calls <see cref=\"M:log4net.Appender.RollingFileAppender.ExistingInit\"/> to initialize\r\n            the current number of backups.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.CombinePath(System.String,System.String)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"path1\"></param>\r\n            <param name=\"path2\">.1, .2, .3, etc.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverTime(System.Boolean)\">\r\n            <summary>\r\n            Rollover the file(s) to date/time tagged file(s).\r\n            </summary>\r\n            <param name=\"fileIsOpen\">set to true if the file to be rolled is currently open</param>\r\n            <remarks>\r\n            <para>\r\n            Rollover the file(s) to date/time tagged file(s).\r\n            Resets curSizeRollBackups. \r\n            If fileIsOpen is set then the new file is opened (through SafeOpenFile).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollFile(System.String,System.String)\">\r\n            <summary>\r\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>.\r\n            </summary>\r\n            <param name=\"fromFile\">Name of existing file to roll.</param>\r\n            <param name=\"toFile\">New name for file.</param>\r\n            <remarks>\r\n            <para>\r\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>. It\r\n            also checks for existence of target file and deletes if it does.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.FileExists(System.String)\">\r\n            <summary>\r\n            Test if a file exists at a specified path\r\n            </summary>\r\n            <param name=\"path\">the path to the file</param>\r\n            <returns>true if the file exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a file exists at a specified path\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DeleteFile(System.String)\">\r\n            <summary>\r\n            Deletes the specified file if it exists.\r\n            </summary>\r\n            <param name=\"fileName\">The file to delete.</param>\r\n            <remarks>\r\n            <para>\r\n            Delete a file if is exists.\r\n            The file is first moved to a new filename then deleted.\r\n            This allows the file to be removed even when it cannot\r\n            be deleted, but it still can be moved.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverSize\">\r\n            <summary>\r\n            Implements file roll base on file size.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the maximum number of size based backups is reached\r\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\r\n            file is deleted -- its index determined by the sign of countDirection.\r\n            If <c>countDirection</c> &lt; 0, then files\r\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\r\n            are renamed to {<c>File.2</c>, ...,\r\n            <c>File.curSizeRollBackups</c>}. Moreover, <c>File</c> is\r\n            renamed <c>File.1</c> and closed.\r\n            </para>\r\n            <para>\r\n            A new file is created to receive further log output.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\r\n            <c>File</c> is truncated with no backup files created.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\r\n            renamed if needed and no files are deleted.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverRenameFiles(System.String)\">\r\n            <summary>\r\n            Implements file roll.\r\n            </summary>\r\n            <param name=\"baseFileName\">the base name to rename</param>\r\n            <remarks>\r\n            <para>\r\n            If the maximum number of size based backups is reached\r\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\r\n            file is deleted -- its index determined by the sign of countDirection.\r\n            If <c>countDirection</c> &lt; 0, then files\r\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\r\n            are renamed to {<c>File.2</c>, ...,\r\n            <c>File.curSizeRollBackups</c>}. \r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\r\n            <c>File</c> is truncated with no backup files created.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\r\n            renamed if needed and no files are deleted.\r\n            </para>\r\n            <para>\r\n            This is called by <see cref=\"M:log4net.Appender.RollingFileAppender.RollOverSize\"/> to rename the files.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.NextCheckDate(System.DateTime,log4net.Appender.RollingFileAppender.RollPoint)\">\r\n            <summary>\r\n            Get the start time of the next window for the current rollpoint\r\n            </summary>\r\n            <param name=\"currentDateTime\">the current date</param>\r\n            <param name=\"rollPoint\">the type of roll point we are working with</param>\r\n            <returns>the start time for the next roll point an interval after the currentDateTime date</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the date of the next roll point after the currentDateTime date passed to the method.\r\n            </para>\r\n            <para>\r\n            The basic strategy is to subtract the time parts that are less significant\r\n            than the rollpoint from the current time. This should roll the time back to\r\n            the start of the time window for the current rollpoint. Then we add 1 window\r\n            worth of time and get the start time of the next window for the rollpoint.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_dateTime\">\r\n            <summary>\r\n            This object supplies the current date/time.  Allows test code to plug in\r\n            a method to control this class when testing date/time based rolling. The default\r\n            implementation uses the underlying value of DateTime.Now.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_datePattern\">\r\n            <summary>\r\n            The date pattern. By default, the pattern is set to <c>\".yyyy-MM-dd\"</c> \r\n            meaning daily rollover.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_scheduledFilename\">\r\n            <summary>\r\n            The actual formatted filename that is currently being written to\r\n            or will be the file transferred to on roll over\r\n            (based on staticLogFileName).\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_nextCheck\">\r\n            <summary>\r\n            The timestamp when we shall next recompute the filename.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_now\">\r\n            <summary>\r\n            Holds date of last roll over\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollPoint\">\r\n            <summary>\r\n            The type of rolling done\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxFileSize\">\r\n            <summary>\r\n            The default maximum file size is 10MB\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxSizeRollBackups\">\r\n            <summary>\r\n            There is zero backup files by default\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_curSizeRollBackups\">\r\n            <summary>\r\n            How many sized based backups have been made so far\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_countDirection\">\r\n            <summary>\r\n            The rolling file count direction. \r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollingStyle\">\r\n            <summary>\r\n            The rolling mode used in this appender.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollDate\">\r\n            <summary>\r\n            Cache flag set if we are rolling by date.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollSize\">\r\n            <summary>\r\n            Cache flag set if we are rolling by size.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_staticLogFileName\">\r\n            <summary>\r\n            Value indicating whether to always log to the same file.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_preserveLogFileNameExtension\">\r\n            <summary>\r\n            Value indicating whether to preserve the file name extension when rolling.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_baseFileName\">\r\n            <summary>\r\n            FileName provided in configuration.  Used for rolling properly\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.s_date1970\">\r\n            <summary>\r\n            The 1st of January 1970 in UTC\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DateTimeStrategy\">\r\n            <summary>\r\n            Gets or sets the strategy for determining the current date and time. The default\r\n            implementation is to use LocalDateTime which internally calls through to DateTime.Now. \r\n            DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying\r\n            <see cref=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\"/>.\r\n            </summary>\r\n            <value>\r\n            An implementation of the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> interface which returns the current date and time.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> used to return the current date and time.\r\n            </para>\r\n            <para>\r\n            There are two built strategies for determining the current date and time, \r\n            <see cref=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\"/>\r\n            and <see cref=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The default strategy is <see cref=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DatePattern\">\r\n            <summary>\r\n            Gets or sets the date pattern to be used for generating file names\r\n            when rolling over on date.\r\n            </summary>\r\n            <value>\r\n            The date pattern to be used for generating file names when rolling \r\n            over on date.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Takes a string in the same format as expected by \r\n            <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/>.\r\n            </para>\r\n            <para>\r\n            This property determines the rollover schedule when rolling over\r\n            on date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\">\r\n            <summary>\r\n            Gets or sets the maximum number of backup files that are kept before\r\n            the oldest is erased.\r\n            </summary>\r\n            <value>\r\n            The maximum number of backup files that are kept before the oldest is\r\n            erased.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If set to zero, then there will be no backup files and the log file \r\n            will be truncated when it reaches <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/>.  \r\n            </para>\r\n            <para>\r\n            If a negative number is supplied then no deletions will be made.  Note \r\n            that this could result in very slow performance as a large number of \r\n            files are rolled over unless <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> is used.\r\n            </para>\r\n            <para>\r\n            The maximum applies to <b>each</b> time based group of files and \r\n            <b>not</b> the total.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size in bytes that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property is equivalent to <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/> except\r\n            that it is required for differentiating the setter taking a\r\n            <see cref=\"T:System.Int64\"/> argument from the setter taking a <see cref=\"T:System.String\"/> \r\n            argument.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB (10*1024*1024).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property allows you to specify the maximum size with the\r\n            suffixes \"KB\", \"MB\" or \"GB\" so that the size is interpreted being \r\n            expressed respectively in kilobytes, megabytes or gigabytes. \r\n            </para>\r\n            <para>\r\n            For example, the value \"10KB\" will be interpreted as 10240 bytes.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB.\r\n            </para>\r\n            <para>\r\n            If you have the option to set the maximum file size programmatically\r\n            consider using the <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/> property instead as this\r\n            allows you to set the size in bytes as a <see cref=\"T:System.Int64\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.CountDirection\">\r\n            <summary>\r\n            Gets or sets the rolling file count direction. \r\n            </summary>\r\n            <value>\r\n            The rolling file count direction.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Indicates if the current file is the lowest numbered file or the\r\n            highest numbered file.\r\n            </para>\r\n            <para>\r\n            By default newer files have lower numbers (<see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &lt; 0),\r\n            i.e. log.1 is most recent, log.5 is the 5th backup, etc...\r\n            </para>\r\n            <para>\r\n            <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 does the opposite i.e.\r\n            log.1 is the first backup made, log.5 is the 5th backup made, etc.\r\n            For infinite backups use <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 to reduce \r\n            rollover costs.\r\n            </para>\r\n            <para>The default file count direction is -1.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.RollingStyle\">\r\n            <summary>\r\n            Gets or sets the rolling style.\r\n            </summary>\r\n            <value>The rolling style.</value>\r\n            <remarks>\r\n            <para>\r\n            The default rolling style is <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/>.\r\n            </para>\r\n            <para>\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> this appender's\r\n            <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is set to <c>false</c>, otherwise\r\n            the appender would append to a single file rather than rolling\r\n            the file each time it is opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to preserve the file name extension when rolling.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the file name extension should be preserved.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup.\r\n            However, under Windows the new file name will loose any program associations as the\r\n            extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or\r\n            file.curSizeRollBackup.log to maintain any program associations.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to always log to\r\n            the same file.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if always should be logged to the same file, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            By default file.log is always the current file.  Optionally\r\n            file.log.yyyy-mm-dd for current formatted datePattern can by the currently\r\n            logging file (or file.log.curSizeRollBackup or even\r\n            file.log.yyyy-mm-dd.curSizeRollBackup).\r\n            </para>\r\n            <para>\r\n            This will make time based rollovers with a large number of backups \r\n            much faster as the appender it won't have to rename all the backups!\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollingMode\">\r\n            <summary>\r\n            Style of rolling to use\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Style of rolling to use\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\">\r\n            <summary>\r\n            Roll files once per program execution\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Roll files once per program execution.\r\n            Well really once each time this appender is\r\n            configured.\r\n            </para>\r\n            <para>\r\n            Setting this option also sets <c>AppendToFile</c> to\r\n            <c>false</c> on the <c>RollingFileAppender</c>, otherwise\r\n            this appender would just be a normal file appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\">\r\n            <summary>\r\n            Roll files based only on the size of the file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\">\r\n            <summary>\r\n            Roll files based only on the date\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\">\r\n            <summary>\r\n            Roll files based on both the size and date of the file\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollPoint\">\r\n            <summary>\r\n            The code assumes that the following 'time' constants are in a increasing sequence.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The code assumes that the following 'time' constants are in a increasing sequence.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.InvalidRollPoint\">\r\n            <summary>\r\n            Roll the log not based on the date\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMinute\">\r\n            <summary>\r\n            Roll the log for each minute\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfHour\">\r\n            <summary>\r\n            Roll the log for each hour\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.HalfDay\">\r\n            <summary>\r\n            Roll the log twice a day (midday and midnight)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfDay\">\r\n            <summary>\r\n            Roll the log each day (midnight)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfWeek\">\r\n            <summary>\r\n            Roll the log each week\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMonth\">\r\n            <summary>\r\n            Roll the log each month\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.IDateTime\">\r\n            <summary>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            Used primarily to allow test classes to plug themselves in so they can\r\n            supply test date/times.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.IDateTime.Now\">\r\n            <summary>\r\n            Gets the <i>current</i> time.\r\n            </summary>\r\n            <value>The <i>current</i> time.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <i>current</i> time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> that returns the current time.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.LocalDateTime.Now\">\r\n            <summary>\r\n            Gets the <b>current</b> time.\r\n            </summary>\r\n            <value>The <b>current</b> time.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <b>current</b> time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> that returns the current time as the coordinated universal time (UTC).\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.UniversalDateTime.Now\">\r\n            <summary>\r\n            Gets the <b>current</b> time.\r\n            </summary>\r\n            <value>The <b>current</b> time.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <b>current</b> time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender\">\r\n            <summary>\r\n            Send an e-mail when a specific logging event occurs, typically on errors \r\n            or fatal errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            <note type=\"caution\">\r\n            Authentication and setting the server Port are only available on the MS .NET 1.1 runtime.\r\n            For these features to be enabled you need to ensure that you are using a version of\r\n            the log4net assembly that is built against the MS .NET 1.1 framework and that you are\r\n            running the your application on the MS .NET 1.1 runtime. On all other platforms only sending\r\n            unauthenticated messages to a server listening on port 25 (the default) is supported.\r\n            </note>\r\n            <para>\r\n            Authentication is supported by setting the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property to\r\n            either <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> or <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>.\r\n            If using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> authentication then the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/>\r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> properties must also be set.\r\n            </para>\r\n            <para>\r\n            To set the SMTP server port use the <see cref=\"P:log4net.Appender.SmtpAppender.Port\"/> property. The default port is 25.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Sends the contents of the cyclic buffer as an e-mail message.\r\n            </summary>\r\n            <param name=\"events\">The logging events to send.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendEmail(System.String)\">\r\n            <summary>\r\n            Send the email message\r\n            </summary>\r\n            <param name=\"messageBody\">the body text to include in the mail</param>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.To\">\r\n            <summary>\r\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions).\r\n            </summary>\r\n            <value>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Cc\">\r\n            <summary>\r\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses \r\n            that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions).\r\n            </summary>\r\n            <value>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Bcc\">\r\n            <summary>\r\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses\r\n            that will be blind carbon copied.\r\n            </summary>\r\n            <value>\r\n            A semicolon-delimited list of e-mail addresses.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A semicolon-delimited list of recipient e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.From\">\r\n            <summary>\r\n            Gets or sets the e-mail address of the sender.\r\n            </summary>\r\n            <value>\r\n            The e-mail address of the sender.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The e-mail address of the sender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Subject\">\r\n            <summary>\r\n            Gets or sets the subject line of the e-mail message.\r\n            </summary>\r\n            <value>\r\n            The subject line of the e-mail message.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The subject line of the e-mail message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.SmtpHost\">\r\n            <summary>\r\n            Gets or sets the name of the SMTP relay mail server to use to send \r\n            the e-mail messages.\r\n            </summary>\r\n            <value>\r\n            The name of the e-mail relay server. If SmtpServer is not set, the \r\n            name of the local SMTP server is used.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the e-mail relay server. If SmtpServer is not set, the \r\n            name of the local SMTP server is used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.LocationInfo\">\r\n            <summary>\r\n            Obsolete\r\n            </summary>\r\n            <remarks>\r\n            Use the BufferingAppenderSkeleton Fix methods instead \r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            Obsolete property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Authentication\">\r\n            <summary>\r\n            The mode to use to authentication with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            Valid Authentication mode values are: <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>, \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, and <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>. \r\n            The default value is <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>. When using \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> you must specify the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> \r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> to use to authenticate.\r\n            When using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/> the Windows credentials for the current\r\n            thread, if impersonating, or the process will be used to authenticate. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Username\">\r\n            <summary>\r\n            The username to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the username will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Password\">\r\n            <summary>\r\n            The password to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the password will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Port\">\r\n            <summary>\r\n            The port on which the SMTP server is listening\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Server Port is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            The port on which the SMTP server is listening. The default\r\n            port is <c>25</c>. The Port can only be changed when running on\r\n            the MS .NET 1.1 runtime.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Priority\">\r\n            <summary>\r\n            Gets or sets the priority of the e-mail message\r\n            </summary>\r\n            <value>\r\n            One of the <see cref=\"T:System.Net.Mail.MailPriority\"/> values.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Sets the priority of the e-mails generated by this\r\n            appender. The default priority is <see cref=\"F:System.Net.Mail.MailPriority.Normal\"/>.\r\n            </para>\r\n            <para>\r\n            If you are using this appender to report errors then\r\n            you may want to set the priority to <see cref=\"F:System.Net.Mail.MailPriority.High\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.EnableSsl\">\r\n            <summary>\r\n            Enable or disable use of SSL when sending e-mail message\r\n            </summary>\r\n            <remarks>\r\n            This is available on MS .NET 2.0 runtime and higher\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.ReplyTo\">\r\n            <summary>\r\n            Gets or sets the reply-to e-mail address.\r\n            </summary>\r\n            <remarks>\r\n            This is available on MS .NET 2.0 runtime and higher\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender.SmtpAuthentication\">\r\n            <summary>\r\n            Values for the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            SMTP authentication modes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\">\r\n            <summary>\r\n            No authentication\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\">\r\n            <summary>\r\n            Basic authentication.\r\n            </summary>\r\n            <remarks>\r\n            Requires a username and password to be supplied\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\">\r\n            <summary>\r\n            Integrated authentication\r\n            </summary>\r\n            <remarks>\r\n            Uses the Windows credentials from the current thread or process to authenticate.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpPickupDirAppender\">\r\n            <summary>\r\n            Send an email when a specific logging event occurs, typically on errors \r\n            or fatal errors. Rather than sending via smtp it writes a file into the\r\n            directory specified by <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>. This allows services such\r\n            as the IIS SMTP agent to manage sending the messages.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The configuration for this appender is identical to that of the <c>SMTPAppender</c>,\r\n            except that instead of specifying the <c>SMTPAppender.SMTPHost</c> you specify\r\n            <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>.\r\n            </para>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpPickupDirAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            </remarks>\r\n            <author>Niall Daley</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Sends the contents of the cyclic buffer as an e-mail message.\r\n            </summary>\r\n            <param name=\"events\">The logging events to send.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the contents of the cyclic buffer as an e-mail message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on this appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\r\n            Convert a path into a fully qualified path.\r\n            </summary>\r\n            <param name=\"path\">The path to convert.</param>\r\n            <returns>The fully qualified path.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the path specified to a fully\r\n            qualified path. If the path is relative it is\r\n            taken as relative from the application base \r\n            directory.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpPickupDirAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.To\">\r\n            <summary>\r\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses.\r\n            </summary>\r\n            <value>\r\n            A semicolon-delimited list of e-mail addresses.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.From\">\r\n            <summary>\r\n            Gets or sets the e-mail address of the sender.\r\n            </summary>\r\n            <value>\r\n            The e-mail address of the sender.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The e-mail address of the sender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.Subject\">\r\n            <summary>\r\n            Gets or sets the subject line of the e-mail message.\r\n            </summary>\r\n            <value>\r\n            The subject line of the e-mail message.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The subject line of the e-mail message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\">\r\n            <summary>\r\n            Gets or sets the path to write the messages to.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the path to write the messages to. This should be the same\r\n            as that used by the agent sending the messages.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender\">\r\n            <summary>\r\n            Appender that allows clients to connect via Telnet to receive log messages\r\n            </summary>\r\n            <remarks>\t\r\n            <para>\r\n            The TelnetAppender accepts socket connections and streams logging messages\r\n            back to the client.  \r\n            The output is provided in a telnet-friendly way so that a log can be monitored \r\n            over a TCP/IP socket.\r\n            This allows simple remote monitoring of application logging.\r\n            </para>\r\n            <para>\r\n            The default <see cref=\"P:log4net.Appender.TelnetAppender.Port\"/> is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <author>Keith Long</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TelnetAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the TelnetAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.OnClose\">\r\n            <summary>\r\n            Overrides the parent method to close the socket handler\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes all the outstanding connections.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Create the socket handler and wait for connections\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to each connected client.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to each connected client.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.Port\">\r\n            <summary>\r\n            Gets or sets the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> \r\n            or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler\">\r\n            <summary>\r\n            Helper class to manage connected clients\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The SocketHandler class is used to accept connections from\r\n            clients.  It is threaded so that clients can connect/disconnect\r\n            asynchronously.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.#ctor(System.Int32)\">\r\n            <summary>\r\n            Opens a new server port on <paramref ref=\"port\"/>\r\n            </summary>\r\n            <param name=\"port\">the local port to listen on for connections</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a socket handler on the specified local server port.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Send(System.String)\">\r\n            <summary>\r\n            Sends a string message to each of the connected clients\r\n            </summary>\r\n            <param name=\"message\">the text to send</param>\r\n            <remarks>\r\n            <para>\r\n            Sends a string message to each of the connected clients\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.AddClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\r\n            Add a client to the internal clients list\r\n            </summary>\r\n            <param name=\"client\">client to add</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.RemoveClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\r\n            Remove a client from the internal clients list\r\n            </summary>\r\n            <param name=\"client\">client to remove</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.OnConnect(System.IAsyncResult)\">\r\n            <summary>\r\n            Callback used to accept a connection on the server socket\r\n            </summary>\r\n            <param name=\"asyncResult\">The result of the asynchronous operation</param>\r\n            <remarks>\r\n            <para>\r\n            On connection adds to the list of connections \r\n            if there are two many open connections you will be disconnected\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Dispose\">\r\n            <summary>\r\n            Close all network connections\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Make sure we close all network connections\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.SocketHandler.HasConnections\">\r\n            <summary>\r\n            Test if this handler has active connections\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this handler has active connections\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property will be <c>true</c> while this handler has\r\n            active connections, that is at least one connection that \r\n            the handler will attempt to send a message to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\">\r\n            <summary>\r\n            Class that represents a client connected to this handler\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class that represents a client connected to this handler\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.#ctor(System.Net.Sockets.Socket)\">\r\n            <summary>\r\n            Create this <see cref=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\"/> for the specified <see cref=\"T:System.Net.Sockets.Socket\"/>\r\n            </summary>\r\n            <param name=\"socket\">the client's socket</param>\r\n            <remarks>\r\n            <para>\r\n            Opens a stream writer on the socket.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Send(System.String)\">\r\n            <summary>\r\n            Write a string to the client\r\n            </summary>\r\n            <param name=\"message\">string to send</param>\r\n            <remarks>\r\n            <para>\r\n            Write a string to the client\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Dispose\">\r\n            <summary>\r\n            Cleanup the clients connection\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the socket connection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TraceAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Trace\"/> class for details on configuring the\r\n            trace system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <c>System.Diagnostics.Trace.Write(string,string)</c>\r\n            method. The event's logger name is the default value for the category parameter \r\n            of the Write method. \r\n            </para>\r\n            <para>\r\n            <b>Compact Framework</b><br/>\r\n            The Compact Framework does not support the <see cref=\"T:System.Diagnostics.Trace\"/>\r\n            class for any operation except <c>Assert</c>. When using the Compact Framework this\r\n            appender will write to the <see cref=\"T:System.Diagnostics.Debug\"/> system rather than\r\n            the Trace system. This appender will therefore behave like the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TraceAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_category\">\r\n            <summary>\r\n            Defaults to %logger\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.ImmediateFlush\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender will \r\n            flush at the end of each write.\r\n            </summary>\r\n            <remarks>\r\n            <para>The default behavior is to flush at the end of each \r\n            write. If the option is set to<c>false</c>, then the underlying \r\n            stream can defer writing to physical medium to a later time. \r\n            </para>\r\n            <para>\r\n            Avoiding the flush operation at the end of each append results \r\n            in a performance gain of 10 to 20 percent. However, there is safety\r\n            trade-off involved in skipping flushing. Indeed, when flushing is\r\n            skipped, then it is likely that the last few log events will not\r\n            be recorded on disk when the application exits. This is a high\r\n            price to pay even for a 20% performance gain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasDomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a domain to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.DomainAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's domain to its repository by\r\n            specifying this attribute with the name of the target domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required domains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasRepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a repository to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.RepositoryAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's repository to its repository by\r\n            specifying this attribute with the name of the target repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required repositories.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.AliasRepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The repository to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.AliasRepositoryAttribute.Name\">\r\n            <summary>\r\n            Gets or sets the repository to alias to this assemby's repository.\r\n            </summary>\r\n            <value>\r\n            The repository to alias to this assemby's repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the repository to alias to this assemby's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.AliasDomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasDomainAttribute\"/> class with \r\n            the specified domain to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The domain to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> instead of <see cref=\"T:log4net.Config.AliasDomainAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.BasicConfigurator\">\r\n            <summary>\r\n            Use this class to quickly configure a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Allows very simple programmatic configuration of log4net.\r\n            </para>\r\n            <para>\r\n            Only one appender can be configured using this configurator.\r\n            The appender is set at the root of the hierarchy and all logging\r\n            events will be delivered to that appender.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Config.BasicConfigurator.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the BasicConfigurator class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.BasicConfigurator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure\">\r\n            <summary>\r\n            Initializes the log4net system with a default configuration.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net logging system using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initializes the log4net system using the specified appender.\r\n            </summary>\r\n            <param name=\"appender\">The appender to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net system using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes the log4net system using the specified appenders.\r\n            </summary>\r\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net system using the specified appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> with a default configuration.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the specified repository using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appender\">The appender to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appenders.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.ConfiguratorAttribute\">\r\n            <summary>\r\n            Base class for all log4net configuration attributes.\r\n            </summary>\r\n            <remarks>\r\n            This is an abstract class that must be extended by \r\n            specific configurators. This attribute allows the\r\n            configurator to be parameterized by an assembly level\r\n            attribute.\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.#ctor(System.Int32)\">\r\n            <summary>\r\n            Constructor used by subclasses.\r\n            </summary>\r\n            <param name=\"priority\">the ordering priority for this configurator</param>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"priority\"/> is used to order the configurator\r\n            attributes before they are invoked. Higher priority configurators are executed\r\n            before lower priority ones.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Abstract method implemented by a subclass. When this method is called\r\n            the subclass should configure the <paramref name=\"targetRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compare this instance to another ConfiguratorAttribute\r\n            </summary>\r\n            <param name=\"obj\">the object to compare to</param>\r\n            <returns>see <see cref=\"M:System.IComparable.CompareTo(System.Object)\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the priorities of the two <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> instances.\r\n            Sorts by priority in descending order. Objects with the same priority are\r\n            randomly ordered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging domain for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            Assemblies are mapped to logging domains. Each domain has its own\r\n            logging repository. This attribute specified on the assembly controls\r\n            the configuration of the domain. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the domain that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the repository objects to create for the domain. If \r\n            this attribute is not specified and a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> is not specified\r\n            then the assembly will be part of the default shared logging domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.RepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging repository for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Assemblies are mapped to logging repository. This attribute specified \r\n            on the assembly controls\r\n            the configuration of the repository. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the repository that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> object \r\n            to create for the assembly. If this attribute is not specified or a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> \r\n            is not specified then the assembly will be part of the default shared logging repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class \r\n            with the name of the repository.\r\n            </summary>\r\n            <param name=\"name\">The name of the repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize the attribute with the name for the assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.Name\">\r\n            <summary>\r\n            Gets or sets the name of the logging repository.\r\n            </summary>\r\n            <value>\r\n            The string name to use as the name of the repository associated with this\r\n            assembly.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This value does not have to be unique. Several assemblies can share the\r\n            same repository. They will share the logging configuration of the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.RepositoryType\">\r\n            <summary>\r\n            Gets or sets the type of repository to create for this assembly.\r\n            </summary>\r\n            <value>\r\n            The type of repository to create for this assembly.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type of the repository to create for the assembly.\r\n            The type must implement the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            interface.\r\n            </para>\r\n            <para>\r\n            This will be the type of repository created when \r\n            the repository is created. If multiple assemblies reference the\r\n            same repository then the repository is only created once using the\r\n            <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/> of the first assembly to call into the \r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class \r\n            with the name of the domain.\r\n            </summary>\r\n            <param name=\"name\">The name of the domain.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure\">\r\n            <summary>\r\n            Automatically configures the log4net system based on the \r\n            application's configuration settings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures log4net using a <c>log4net</c> element\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            <para>\r\n            If neither of the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>\r\n            properties are set the configuration is loaded from the application's .config file.\r\n            If set the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property takes priority over the\r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property. The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property\r\n            specifies a path to a file to load the config from. The path is relative to the\r\n            application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property is used as a postfix to the assembly file name.\r\n            The config file must be located in the  application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            For example in a console application setting the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> to\r\n            <c>config</c> has the same effect as not specifying the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or \r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> properties.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\"/> property can be set to cause the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            to watch the configuration file for changes.\r\n            </para>\r\n            <note>\r\n            <para>\r\n            Log4net will only look for assembly level configuration attributes once.\r\n            When using the log4net assembly level attributes to control the configuration \r\n            of log4net you must ensure that the first call to any of the \r\n            <see cref=\"T:log4net.Core.LoggerManager\"/> methods is made from the assembly with the configuration\r\n            attributes. \r\n            </para>\r\n            <para>\r\n            If you cannot guarantee the order in which log4net calls will be made from \r\n            different assemblies you must use programmatic configuration instead, i.e.\r\n            call the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/> method directly.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository using the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            The <paramref name=\"targetRepository\"/> specified must extend the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>\r\n            class otherwise the <see cref=\"T:log4net.Config.XmlConfigurator\"/> will not be able to\r\n            configure it.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"targetRepository\"/> does not extend <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attempt to load configuration from the local file system\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configure the specified repository using a <see cref=\"T:System.IO.FileInfo\"/>\r\n            </summary>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <param name=\"configFile\">the FileInfo pointing to the config file</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromUri(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attempt to load configuration from a URI\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfiguratorAttribute.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the XmlConfiguratorAttribute class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\">\r\n            <summary>\r\n            Gets or sets the filename of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The filename of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified, this is the name of the configuration file to use with\r\n            the <see cref=\"T:log4net.Config.XmlConfigurator\"/>. This file path is relative to the\r\n            <b>application base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>).\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\">\r\n            <summary>\r\n            Gets or sets the extension of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The extension of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified this is the extension for the configuration file.\r\n            The path to the config file is built by using the <b>application \r\n            base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>),\r\n            the <b>assembly file name</b> and the config file extension.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> is set to <c>MyExt</c> then\r\n            possible config file names would be: <c>MyConsoleApp.exe.MyExt</c> or\r\n            <c>MyClassLibrary.dll.MyExt</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to watch the configuration file.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the configuration should be watched, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If this flag is specified and set to <c>true</c> then the framework\r\n            will watch the configuration file and will reload the config each time \r\n            the file is modified.\r\n            </para>\r\n            <para>\r\n            The config file can only be watched if it is loaded from local disk.\r\n            In a No-Touch (Smart Client) deployment where the application is downloaded\r\n            from a web server the config file may not reside on the local disk\r\n            and therefore it may not be able to watch it.\r\n            </para>\r\n            <note>\r\n            Watching configuration is not supported on the SSCLI.\r\n            </note>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.Log4NetConfigurationSectionHandler\">\r\n            <summary>\r\n            Class to register for the log4net section of the configuration file\r\n            </summary>\r\n            <remarks>\r\n            The log4net section of the configuration file needs to have a section\r\n            handler registered. This is the section handler used. It simply returns\r\n            the XML element that is the root of the section.\r\n            </remarks>\r\n            <example>\r\n            Example of registering the log4net section handler :\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<configSections>\r\n            \t\t<section name=\"log4net\" type=\"log4net.Config.Log4NetConfigurationSectionHandler, log4net\" />\r\n            \t</configSections>\r\n            \t<log4net>\r\n            \t\tlog4net configuration XML goes here\r\n            \t</log4net>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)\">\r\n            <summary>\r\n            Parses the configuration section.\r\n            </summary>\r\n            <param name=\"parent\">The configuration settings in a corresponding parent configuration section.</param>\r\n            <param name=\"configContext\">The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.</param>\r\n            <param name=\"section\">The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</param>\r\n            <returns>The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:System.Xml.XmlNode\"/> containing the configuration data,\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.PluginAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a plugin to attach to \r\n            the repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Specifies the type of a plugin to create and attach to the\r\n            assembly's repository. The plugin type must implement the\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPluginFactory\">\r\n            <summary>\r\n            Interface used to create plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used to create  a plugin.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPluginFactory.CreatePlugin\">\r\n            <summary>\r\n            Creates the plugin object.\r\n            </summary>\r\n            <returns>the new plugin instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Create and return a new plugin instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"typeName\">The type name of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            <para>\r\n            Where possible use the constructor that takes a <see cref=\"T:System.Type\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"type\">The type of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.CreatePlugin\">\r\n            <summary>\r\n            Creates the plugin object defined by this attribute.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the instance of the <see cref=\"T:log4net.Plugin.IPlugin\"/> object as \r\n            specified by this attribute.\r\n            </para>\r\n            </remarks>\r\n            <returns>The plugin object.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.ToString\">\r\n            <summary>\r\n            Returns a representation of the properties of this object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Overrides base class <see cref=\"M:System.Object.ToString\"/> method to \r\n            return a representation of the properties of this object.\r\n            </para>\r\n            </remarks>\r\n            <returns>A representation of the properties of this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.Type\">\r\n            <summary>\r\n            Gets or sets the type for the plugin.\r\n            </summary>\r\n            <value>\r\n            The type for the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type for the plugin.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.TypeName\">\r\n            <summary>\r\n            Gets or sets the type name for the plugin.\r\n            </summary>\r\n            <value>\r\n            The type name for the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name for the plugin.\r\n            </para>\r\n            <para>\r\n            Where possible use the <see cref=\"P:log4net.Config.PluginAttribute.Type\"/> property instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.SecurityContextProviderAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Construct provider attribute with type specified\r\n            </summary>\r\n            <param name=\"providerType\">the type of the provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the SecurityContextProvider\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a provider instance from the <see cref=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\"/> specified.\r\n            Sets this as the default security context provider <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.SecurityContextProviderAttribute.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the SecurityContextProviderAttribute class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\">\r\n            <summary>\r\n            Gets or sets the type of the provider to use.\r\n            </summary>\r\n            <value>\r\n            the type of the provider to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure\">\r\n            <summary>\r\n            Automatically configures the log4net system based on the \r\n            application's configuration settings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures log4net using a <c>log4net</c> element\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Uri)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration URI.\r\n            </summary>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration data stream.\r\n            </summary>\r\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Uri)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            URI.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.InternalConfigureFromXml(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the specified repository using a <c>log4net</c> element.\r\n            </summary>\r\n            <param name=\"repository\">The hierarchy to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </para>\r\n            <para>\r\n            This method is ultimately called by one of the Configure methods \r\n            to load the configuration from an <see cref=\"T:System.Xml.XmlElement\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.m_repositoryName2ConfigAndWatchHandler\">\r\n            <summary>\r\n            Maps repository names to ConfigAndWatchHandler instances to allow a particular\r\n            ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is \r\n            reconfigured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the XmlConfigurator class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\">\r\n            <summary>\r\n            Class used to watch config files.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"T:System.IO.FileSystemWatcher\"/> to monitor\r\n            changes to a specified file. Because multiple change notifications\r\n            may be raised when the file is modified, a timer is used to\r\n            compress the notifications into a single event. The timer\r\n            waits for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> time before delivering\r\n            the event notification. If any further <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            change notifications arrive while the timer is waiting it\r\n            is reset and waits again for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> to\r\n            elapse.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\">\r\n            <summary>\r\n            The default amount of time to wait after receiving notification\r\n            before reloading the config file.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_configFile\">\r\n            <summary>\r\n            Holds the FileInfo used to configure the XmlConfigurator\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_repository\">\r\n            <summary>\r\n            Holds the repository being configured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_timer\">\r\n            <summary>\r\n            The timer used to compress the notification events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_watcher\">\r\n            <summary>\r\n            Watches file for changes. This object should be disposed when no longer\r\n            needed to free system handles on the watched resources.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.#ctor(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class to\r\n            watch a specified config file used to configure a repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The configuration file to watch.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnChanged(System.Object,System.IO.FileSystemEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnRenamed(System.Object,System.IO.RenamedEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.OnWatchedFileChange(System.Object)\">\r\n            <summary>\r\n            Called by the timer when the configuration has been updated.\r\n            </summary>\r\n            <param name=\"state\">null</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.Dispose\">\r\n            <summary>\r\n            Release the handles held by the watcher and timer.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.CompactRepositorySelector\">\r\n            <summary>\r\n            The implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface suitable\r\n            for use with the compact framework\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.IRepositorySelector\"/> implementation is a simple\r\n            mapping between repository name and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            object.\r\n            </para>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not support retrieving assembly\r\n            level attributes therefore unlike the <c>DefaultRepositorySelector</c>\r\n            this selector does not examine the calling assembly for attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IRepositorySelector\">\r\n            <summary>\r\n            Interface used by the <see cref=\"T:log4net.LogManager\"/> to select the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.LogManager\"/> uses a <see cref=\"T:log4net.Core.IRepositorySelector\"/> \r\n            to specify the policy for selecting the correct <see cref=\"T:log4net.Repository.ILoggerRepository\"/> \r\n            to return to the caller.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association. The results of this method must be repeatable, i.e.\r\n            when called again with the same arguments the result must be the\r\n            save value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            Lookup a named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. This is the repository created by\r\n            calling <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to create the domain to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the domain\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository with the name specified.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the name\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same name will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>\r\n            An array of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instances created by \r\n            this <see cref=\"T:log4net.Core.IRepositorySelector\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new repository selector\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">the type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new compact repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"defaultRepositoryType\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">throw if <paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Get the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly\r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <param name=\"repositoryName\">the name of the repository to lookup</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The default \r\n            repository is <c>log4net-default-repository</c>. Other repositories \r\n            must be created using the <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            If the named repository does not exist an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> does not exist</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"repositoryType\"/> is <c>null</c> then the\r\n            default repository type specified to the constructor is used.\r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the repository specified\r\n            </summary>\r\n            <param name=\"repositoryName\">the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is null then the default repository type is used.</param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            If the named repository already exists an exception will be thrown.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"repositoryType\"/> is <c>null</c> then the default \r\n            repository type specified to the constructor is used.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> already exists</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.CompactRepositorySelector.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the CompactRepositorySelector class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has been created\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <event cref=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">LoggerRepositoryCreatedEvent</event>\r\n            event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.DefaultRepositorySelector\">\r\n            <summary>\r\n            The default implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses attributes defined on the calling assembly to determine how to\r\n            configure the hierarchy for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Creates a new repository selector.\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">The type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"defaultRepositoryType\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\"><paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and the repository \r\n            to create can be overridden by specifying the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> \r\n            attribute on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            The default values are to use the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> \r\n            implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically configured using \r\n            any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> attributes defined on\r\n            the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the named repository. If <paramref name=\"repositoryName\"/> is <c>null</c>\r\n            a <see cref=\"T:System.ArgumentNullException\"/> is thrown. If the repository \r\n            does not exist a <see cref=\"T:log4net.Core.LogException\"/> is thrown.\r\n            </para>\r\n            <para>\r\n            Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/> to create a repository.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> does not exist.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type,System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryName\">The name to assign to the created repository</param>\r\n            <param name=\"readAssemblyAttributes\">Set to <c>true</c> to read and apply the assembly attributes</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is <see langword=\"null\"/> then the default repository type is used.</param>\r\n            <returns>The new repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.AliasRepository(System.String,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Aliases a repository to an existing repository.\r\n            </summary>\r\n            <param name=\"repositoryAlias\">The repository to alias.</param>\r\n            <param name=\"repositoryTarget\">The repository that the repository is aliased to.</param>\r\n            <remarks>\r\n            <para>\r\n            The repository specified will be aliased to the repository when created. \r\n            The repository must not already exist.\r\n            </para>\r\n            <para>\r\n            When the repository is created it must utilize the same repository type as \r\n            the repository it is aliased to, otherwise the aliasing will fail.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"repositoryAlias\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repositoryTarget\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notifies the registered listeners that the repository has been created.\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <see cref=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetInfoForAssembly(System.Reflection.Assembly,System.String@,System.Type@)\">\r\n            <summary>\r\n            Gets the repository name and repository type for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that has a <see cref=\"T:log4net.Config.RepositoryAttribute\"/>.</param>\r\n            <param name=\"repositoryName\">in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.</param>\r\n            <param name=\"repositoryType\">in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ConfigureRepository(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the repository using information from the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly containing <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/>\r\n            attributes which define the configuration for the repository.</param>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadPlugins(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined plugins on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to add the plugins to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadAliases(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined aliases on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to alias to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Core.DefaultRepositorySelector.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the DefaultRepositorySelector class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ErrorCode\">\r\n            <summary>\r\n            Defined error codes that can be passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Values passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.GenericFailure\">\r\n            <summary>\r\n            A general error\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.WriteFailure\">\r\n            <summary>\r\n            Error while writing output\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FlushFailure\">\r\n            <summary>\r\n            Failed to flush file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.CloseFailure\">\r\n            <summary>\r\n            Failed to close file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FileOpenFailure\">\r\n            <summary>\r\n            Unable to open output file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.MissingLayout\">\r\n            <summary>\r\n            No layout specified\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.AddressParseFailure\">\r\n            <summary>\r\n            Failed to parse address\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ExceptionEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers on an Exception type\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the type of the Exception\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to a Type in <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.    /// \r\n            </para>\r\n            </remarks>\r\n            <author>Drew Schaeffer</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ITriggeringEventEvaluator\">\r\n            <summary>\r\n            Test if an <see cref=\"T:log4net.Core.LoggingEvent\"/> triggers an action\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementations of this interface allow certain appenders to decide\r\n            when to perform an appender specific action.\r\n            </para>\r\n            <para>\r\n            The action or behavior triggered is defined by the implementation.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ITriggeringEventEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Test if this event triggers the action\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Return <c>true</c> if this event triggers the action\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_type\">\r\n            <summary>\r\n            The type that causes the trigger to fire.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_triggerOnSubclass\">\r\n            <summary>\r\n            Causes subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/> to cause the trigger to fire.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor\">\r\n            <summary>\r\n            Default ctor to allow dynamic creation through a configurator.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor(System.Type,System.Boolean)\">\r\n            <summary>\r\n            Constructs an evaluator and initializes to trigger on <paramref name=\"exType\"/>\r\n            </summary>\r\n            <param name=\"exType\">the type that triggers this evaluator.</param>\r\n            <param name=\"triggerOnSubClass\">If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the logging event Exception \r\n            Type is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the Exception Type of the event\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\">\r\n            <summary>\r\n            The type that triggers this evaluator.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.TriggerOnSubclass\">\r\n            <summary>\r\n            If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IErrorHandler\">\r\n            <summary>\r\n            Appenders may delegate their error handling to an <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Error handling is a particularly tedious to get right because by\r\n            definition errors are hard to predict and to reproduce. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <param name=\"errorCode\">The error code associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IFixingRequired\">\r\n            <summary>\r\n            Interface for objects that require fixing.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface that indicates that the object requires fixing before it\r\n            can be taken outside the context of the appender's \r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            When objects that implement this interface are stored \r\n            in the context properties maps <see cref=\"T:log4net.GlobalContext\"/>\r\n            <see cref=\"P:log4net.GlobalContext.Properties\"/> and <see cref=\"T:log4net.ThreadContext\"/>\r\n            <see cref=\"P:log4net.ThreadContext.Properties\"/> are fixed \r\n            (see <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>) the <see cref=\"M:log4net.Core.IFixingRequired.GetFixedObject\"/>\r\n            method will be called.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IFixingRequired.GetFixedObject\">\r\n            <summary>\r\n            Get a portable version of this object\r\n            </summary>\r\n            <returns>the portable instance of this object</returns>\r\n            <remarks>\r\n            <para>\r\n            Get a portable instance object that represents the current\r\n            state of this object. The portable object can be stored\r\n            and logged from any thread with identical results.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ILogger\">\r\n            <summary>\r\n            Interface that all loggers implement\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports logging events and testing if a level\r\n            is enabled for logging.\r\n            </para>\r\n            <para>\r\n            These methods will not throw exceptions. Note to implementor, ensure\r\n            that the implementation of these methods cannot allow an exception\r\n            to be thrown to the caller.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            This generic form is intended to be used by wrappers.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Generates a logging event for the specified <paramref name=\"level\"/> using\r\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This is the most generic printing method that is intended to be used \r\n            by wrappers.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs the specified logging event through this logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"T:log4net.Core.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Name\">\r\n            <summary>\r\n            Gets the name of the logger.\r\n            </summary>\r\n            <value>\r\n            The name of the logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this logger\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ILoggerWrapper\">\r\n            <summary>\r\n            Base interface for all wrappers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Base interface for all wrappers.\r\n            </para>\r\n            <para>\r\n            All wrappers must implement this interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILoggerWrapper.Logger\">\r\n            <summary>\r\n            Get the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this object.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this\r\n            object. The <c>Logger</c> object may not \r\n            be the same object as this object because of logger decorators.\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository creation event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Core.IRepositorySelector\"/> which created the repository.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> event args\r\n            that holds the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> \r\n            event is raised every time a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerRepositoryCreationEventArgs.m_repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerRepositoryCreationEventArgs.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </summary>\r\n            <param name=\"repository\">the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerRepositoryCreationEventArgs.LoggerRepository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.Level\">\r\n            <summary>\r\n            Defines the default set of levels recognized by the system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each <see cref=\"T:log4net.Core.LoggingEvent\"/> has an associated <see cref=\"T:log4net.Core.Level\"/>.\r\n            </para>\r\n            <para>\r\n            Levels have a numeric <see cref=\"P:log4net.Core.Level.Value\"/> that defines the relative \r\n            ordering between levels. Two Levels with the same <see cref=\"P:log4net.Core.Level.Value\"/> \r\n            are deemed to be equivalent.\r\n            </para>\r\n            <para>\r\n            The levels that are recognized by log4net are set for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and each repository can have different levels defined. The levels are stored\r\n            in the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> on the repository. Levels are\r\n            looked up by name from the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>.\r\n            </para>\r\n            <para>\r\n            When logging at level INFO the actual level used is not <see cref=\"F:log4net.Core.Level.Info\"/> but\r\n            the value of <c>LoggerRepository.LevelMap[\"INFO\"]</c>. The default value for this is\r\n            <see cref=\"F:log4net.Core.Level.Info\"/>, but this can be changed by reconfiguring the level map.\r\n            </para>\r\n            <para>\r\n            Each level has a <see cref=\"P:log4net.Core.Level.DisplayName\"/> in addition to its <see cref=\"P:log4net.Core.Level.Name\"/>. The \r\n            <see cref=\"P:log4net.Core.Level.DisplayName\"/> is the string that is written into the output log. By default\r\n            the display name is the same as the level name, but this can be used to alias levels\r\n            or to localize the log output.\r\n            </para>\r\n            <para>\r\n            Some of the predefined levels recognized by the system are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Off\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Fatal\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Error\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Warn\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Info\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Debug\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.All\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <param name=\"displayName\">The display name for this level. This may be localized or otherwise different from the name</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.ToString\">\r\n            <summary>\r\n            Returns the <see cref=\"T:System.String\"/> representation of the current \r\n            <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <returns>\r\n            A <see cref=\"T:System.String\"/> representation of the current <see cref=\"T:log4net.Core.Level\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the level <see cref=\"P:log4net.Core.Level.Name\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Equals(System.Object)\">\r\n            <summary>\r\n            Compares levels.\r\n            </summary>\r\n            <param name=\"o\">The object to compare against.</param>\r\n            <returns><c>true</c> if the objects are equal.</returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the levels of <see cref=\"T:log4net.Core.Level\"/> instances, and \r\n            defers to base class if the target object is not a <see cref=\"T:log4net.Core.Level\"/>\r\n            instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.GetHashCode\">\r\n            <summary>\r\n            Returns a hash code\r\n            </summary>\r\n            <returns>A hash code for the current <see cref=\"T:log4net.Core.Level\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a hash code suitable for use in hashing algorithms and data \r\n            structures like a hash table.\r\n            </para>\r\n            <para>\r\n            Returns the hash code of the level <see cref=\"P:log4net.Core.Level.Value\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compares this instance to a specified object and returns an \r\n            indication of their relative values.\r\n            </summary>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> instance or <see langword=\"null\"/> to compare with this instance.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description>This instance is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description>This instance is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description>\r\n            \t\t\t<para>This instance is greater than <paramref name=\"r\"/>.</para>\r\n            \t\t\t<para>-or-</para>\r\n            \t\t\t<para><paramref name=\"r\"/> is <see langword=\"null\"/>.</para>\r\n            \t\t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <paramref name=\"r\"/> must be an instance of <see cref=\"T:log4net.Core.Level\"/> \r\n            or <see langword=\"null\"/>; otherwise, an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\"><paramref name=\"r\"/> is not a <see cref=\"T:log4net.Core.Level\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Equality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have the same value.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is the same as the \r\n            value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Inequality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have different values.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is different from\r\n            the value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Compare(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Compares two specified <see cref=\"T:log4net.Core.Level\"/> instances.\r\n            </summary>\r\n            <param name=\"l\">The first <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <param name=\"r\">The second <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            two values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is greater than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Off\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Off\"/> level designates a higher level than all the rest.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Log4Net_Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Emergency\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fatal\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fatal\"/> level designates very severe error events \r\n            that will presumably lead the application to abort.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Alert\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Alert\"/> level designates very severe error events. \r\n            Take immediate action, alerts.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Critical\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Critical\"/> level designates very severe error events. \r\n            Critical condition, critical.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Severe\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Severe\"/> level designates very severe error events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Error\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Error\"/> level designates error events that might \r\n            still allow the application to continue running.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Warn\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Warn\"/> level designates potentially harmful \r\n            situations.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Notice\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Notice\"/> level designates informational messages \r\n            that highlight the progress of the application at the highest level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Info\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Info\"/> level designates informational messages that \r\n            highlight the progress of the application at coarse-grained level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Debug\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fine\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fine\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Trace\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Trace\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finer\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finer\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Verbose\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Verbose\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finest\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finest\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.All\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.All\"/> level designates the lowest level possible.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Name\">\r\n            <summary>\r\n            Gets the name of this level.\r\n            </summary>\r\n            <value>\r\n            The name of this level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the name of this level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Value\">\r\n            <summary>\r\n            Gets the value of this level.\r\n            </summary>\r\n            <value>\r\n            The value of this level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the value of this level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.DisplayName\">\r\n            <summary>\r\n            Gets the display name of this level.\r\n            </summary>\r\n            <value>\r\n            The display name of this level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the display name of this level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Core.Level\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ReadOnly(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Creates a read-only wrapper for a <c>LevelCollection</c> instance.\r\n            </summary>\r\n            <param name=\"list\">list to create a readonly wrapper arround</param>\r\n            <returns>\r\n            A <c>LevelCollection</c> wrapper that is read-only.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that is empty and has the default initial capacity.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Int32)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that has the specified initial capacity.\r\n            </summary>\r\n            <param name=\"capacity\">\r\n            The number of elements that the new <c>LevelCollection</c> is initially capable of storing.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"c\">The <c>LevelCollection</c> whose elements are copied to the new collection.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.Level[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection.Tag)\">\r\n            <summary>\r\n            Allow subclasses to avoid our default constructors\r\n            </summary>\r\n            <param name=\"tag\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[])\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Add(log4net.Core.Level)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Core.Level\"/> to the end of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clear\">\r\n            <summary>\r\n            Removes all elements from the <c>LevelCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Core.LevelCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Contains(log4net.Core.Level)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Core.Level\"/> is in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>LevelCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.IndexOf(log4net.Core.Level)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Core.Level\"/>\r\n            in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to locate in the <c>LevelCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>LevelCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Insert(System.Int32,log4net.Core.Level)\">\r\n            <summary>\r\n            Inserts an element into the <c>LevelCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Remove(log4net.Core.Level)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Core.Level\"/> from the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to remove from the <c>LevelCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Core.Level\"/> was not found in the <c>LevelCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>LevelCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Core.LevelCollection.Enumerator\"/> for the entire <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>LevelCollection</c> to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>LevelCollection</c> whose elements should be added to the end of the current <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.Level[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> array to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> collection to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.TrimToSize\">\r\n            <summary>\r\n            Sets the capacity to the actual number of elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements actually contained in the <c>LevelCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\r\n            </summary>\r\n            <value>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</value>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.Level\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the collection has a fixed size.\r\n            </summary>\r\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the IList is read-only.\r\n            </summary>\r\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Capacity\">\r\n            <summary>\r\n            Gets or sets the number of elements the <c>LevelCollection</c> can contain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.ILevelCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Tag\">\r\n            <summary>\r\n            Type visible only to our subclasses\r\n            Used to access protected constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelCollection.Tag.Default\">\r\n            <summary>\r\n            A value\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>Enumerator</c> class.\r\n            </summary>\r\n            <param name=\"tc\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Enumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers at a threshold level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelEvaluator.m_threshold\">\r\n            <summary>\r\n            The threshold for triggering\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </summary>\r\n            <param name=\"threshold\">the threshold to trigger at</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the event level\r\n            is equal or higher than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelEvaluator.Threshold\">\r\n            <summary>\r\n            the threshold to trigger at\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that will cause this evaluator to trigger\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelMap\">\r\n            <summary>\r\n            Mapping between string name and Level object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Mapping between string name and <see cref=\"T:log4net.Core.Level\"/> object.\r\n            This mapping is held separately for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The level name is case insensitive.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelMap.m_mapName2Level\">\r\n            <summary>\r\n            Mapping from level name to Level object. The\r\n            level name is case insensitive\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.#ctor\">\r\n            <summary>\r\n            Construct the level map\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Construct the level map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Clear\">\r\n            <summary>\r\n            Clear the internal maps of all levels\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the internal maps of all levels\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32)\">\r\n            <summary>\r\n            Create a new Level and add it to the map\r\n            </summary>\r\n            <param name=\"name\">the string to display for the Level</param>\r\n            <param name=\"value\">the level value to give to the Level</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new Level and add it to the map\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\">\r\n            <summary>\r\n            Create a new Level and add it to the map\r\n            </summary>\r\n            <param name=\"name\">the string to display for the Level</param>\r\n            <param name=\"value\">the level value to give to the Level</param>\r\n            <param name=\"displayName\">the display name to give to the Level</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new Level and add it to the map\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(log4net.Core.Level)\">\r\n            <summary>\r\n            Add a Level to the map\r\n            </summary>\r\n            <param name=\"level\">the Level to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a Level to the map\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.LookupWithDefault(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup a named level from the map\r\n            </summary>\r\n            <param name=\"defaultLevel\">the name of the level to lookup is taken from this level. \r\n            If the level is not set on the map then this level is added</param>\r\n            <returns>the level in the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a named level from the map. The name of the level to lookup is taken\r\n            from the <see cref=\"P:log4net.Core.Level.Name\"/> property of the <paramref name=\"defaultLevel\"/>\r\n            argument.\r\n            </para>\r\n            <para>\r\n            If no level with the specified name is found then the \r\n            <paramref name=\"defaultLevel\"/> argument is added to the level map\r\n            and returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.Item(System.String)\">\r\n            <summary>\r\n            Lookup a <see cref=\"T:log4net.Core.Level\"/> by name\r\n            </summary>\r\n            <param name=\"name\">The name of the Level to lookup</param>\r\n            <returns>a Level from the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:log4net.Core.Level\"/> from the\r\n            map with the name specified. If the no level is\r\n            found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.AllLevels\">\r\n            <summary>\r\n            Return all possible levels as a list of Level objects.\r\n            </summary>\r\n            <returns>all possible levels as a list of Level objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Return all possible levels as a list of Level objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LocationInfo\">\r\n            <summary>\r\n            The internal representation of caller location information.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class uses the <c>System.Diagnostics.StackTrace</c> class to generate\r\n            a call stack. The caller's information is then extracted from this stack.\r\n            </para>\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \r\n            .NET Compact Framework 1.0 therefore caller location information is not\r\n            available on that framework.\r\n            </para>\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\r\n            </para>\r\n            <para>\r\n            \"StackTrace information will be most informative with Debug build configurations. \r\n            By default, Debug builds include debug symbols, while Release builds do not. The \r\n            debug symbols contain most of the file, method name, line number, and column \r\n            information used in constructing StackFrame and StackTrace objects. StackTrace \r\n            might not report as many method calls as expected, due to code transformations \r\n            that occur during optimization.\"\r\n            </para>\r\n            <para>\r\n            This means that in a Release build the caller information may be incomplete or may \r\n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.NA\">\r\n            <summary>\r\n            When location information is not available the constant\r\n            <c>NA</c> is returned. Current value of this string\r\n            constant is <b>?</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.Type)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class based on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.String,System.String,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"className\">The fully qualified class name.</param>\r\n            <param name=\"methodName\">The method name.</param>\r\n            <param name=\"fileName\">The file name.</param>\r\n            <param name=\"lineNumber\">The line number of the method within the file.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class with the specified data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LocationInfo class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.ClassName\">\r\n            <summary>\r\n            Gets the fully qualified class name of the caller making the logging \r\n            request.\r\n            </summary>\r\n            <value>\r\n            The fully qualified class name of the caller making the logging \r\n            request.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the fully qualified class name of the caller making the logging \r\n            request.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FileName\">\r\n            <summary>\r\n            Gets the file name of the caller.\r\n            </summary>\r\n            <value>\r\n            The file name of the caller.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the file name of the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.LineNumber\">\r\n            <summary>\r\n            Gets the line number of the caller.\r\n            </summary>\r\n            <value>\r\n            The line number of the caller.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the line number of the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.MethodName\">\r\n            <summary>\r\n            Gets the method name of the caller.\r\n            </summary>\r\n            <value>\r\n            The method name of the caller.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the method name of the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FullInfo\">\r\n            <summary>\r\n            Gets all available caller information\r\n            </summary>\r\n            <value>\r\n            All available caller information, in the format\r\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets all available caller information, in the format\r\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.StackFrames\">\r\n            <summary>\r\n            Gets the stack frames from the stack trace of the caller making the log request\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerManager\">\r\n            <summary>\r\n            Static manager that controls the creation of repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Static manager that controls the creation of repositories\r\n            </para>\r\n            <para>\r\n            This class is used by the wrapper managers (e.g. <see cref=\"T:log4net.LogManager\"/>)\r\n            to provide access to the <see cref=\"T:log4net.Core.ILogger\"/> objects.\r\n            </para>\r\n            <para>\r\n            This manager also holds the <see cref=\"T:log4net.Core.IRepositorySelector\"/> that is used to\r\n            lookup and create repositories. The selector can be set either programmatically using\r\n            the <see cref=\"P:log4net.Core.LoggerManager.RepositorySelector\"/> property, or by setting the <c>log4net.RepositorySelector</c>\r\n            AppSetting in the applications config file to the fully qualified type name of the\r\n            selector to use. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#ctor\">\r\n            <summary>\r\n            Private constructor to prevent instances. Only static methods should be used.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Private constructor to prevent instances. Only static methods should be used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#cctor\">\r\n            <summary>\r\n            Hook the shutdown event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            On the full .NET runtime, the static constructor hooks up the \r\n            <c>AppDomain.ProcessExit</c> and <c>AppDomain.DomainUnload</c>> events. \r\n            These are used to shutdown the log4net system as the application exits.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.RegisterAppDomainEvents\">\r\n            <summary>\r\n            Register for ProcessExit and DomainUnload events on the AppDomain\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This needs to be in a separate method because the events make\r\n            a LinkDemand for the ControlAppDomain SecurityPermission. Because\r\n            this is a LinkDemand it is demanded at JIT time. Therefore we cannot\r\n            catch the exception in the method itself, we have to catch it in the\r\n            caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.String,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger found, or <c>null</c> if the named logger does not exist in the\r\n            specified repository.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the specified repository) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger found, or <c>null</c> if the named logger does not exist in the\r\n            specified assembly's repository.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the specified assembly's repository) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <returns>All the defined loggers.</returns>\r\n            <remarks>\r\n            <para>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified assembly's repository.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>All the defined loggers.</returns>\r\n            <remarks>\r\n            <para>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Retrieves a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Retrieves a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to lookup the repository</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Shutdown\">\r\n            <summary>\r\n            Shuts down the log4net system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in all the\r\n            default repositories.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.String)\">\r\n            <summary>\r\n            Shuts down the repository for the repository specified.\r\n            </summary>\r\n            <param name=\"repository\">The repository to shutdown.</param>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            repository for the <paramref name=\"repository\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Shuts down the repository for the repository specified.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            repository for the repository. The repository is looked up using\r\n            the <paramref name=\"repositoryAssembly\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all currently defined repositories.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetVersionInfo\">\r\n            <summary>\r\n            Internal method to get pertinent version info.\r\n            </summary>\r\n            <returns>A string of version info.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnDomainUnload(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"E:System.AppDomain.DomainUnload\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"E:System.AppDomain.DomainUnload\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnProcessExit(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"E:System.AppDomain.ProcessExit\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"E:System.AppDomain.ProcessExit\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LoggerManager class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.s_repositorySelector\">\r\n            <summary>\r\n            Initialize the default repository selector\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerManager.RepositorySelector\">\r\n            <summary>\r\n            Gets or sets the repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </summary>\r\n            <value>\r\n            The repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The repository selector (<see cref=\"T:log4net.Core.IRepositorySelector\"/>) is used by \r\n            the <see cref=\"T:log4net.LogManager\"/> to create and select repositories \r\n            (<see cref=\"T:log4net.Repository.ILoggerRepository\"/>).\r\n            </para>\r\n            <para>\r\n            The caller to <see cref=\"T:log4net.LogManager\"/> supplies either a string name \r\n            or an assembly (if not supplied the assembly is inferred using \r\n            <see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            <para>\r\n            This context is used by the selector to lookup a specific repository.\r\n            </para>\r\n            <para>\r\n            For the full .NET Framework, the default repository is <c>DefaultRepositorySelector</c>;\r\n            for the .NET Compact Framework <c>CompactRepositorySelector</c> is the default\r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerWrapperImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class should be used as the base for all wrapper implementations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerWrapperImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Constructs a new wrapper for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <remarks>\r\n            <para>\r\n            Constructs a new wrapper for the specified logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerWrapperImpl.m_logger\">\r\n            <summary>\r\n            The logger that this object is wrapping\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerWrapperImpl.Logger\">\r\n            <summary>\r\n            Gets the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that this object is implementing.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>Logger</c> object may not be the same object as this object \r\n            because of logger decorators.\r\n            </para>\r\n            <para>\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEventData\">\r\n            <summary>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LoggerName\">\r\n            <summary>\r\n            The logger name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The logger name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Level\">\r\n            <summary>\r\n            Level of logging event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Level of logging event. Level cannot be Serializable\r\n            because it is a flyweight.  Due to its special serialization it\r\n            cannot be declared final either.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Message\">\r\n            <summary>\r\n            The application supplied message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application supplied message of logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ThreadName\">\r\n            <summary>\r\n            The name of thread\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The name of thread in which this logging event was generated\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.TimeStamp\">\r\n            <summary>\r\n            The time the event was logged\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The TimeStamp is stored in the local time zone for this computer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LocationInfo\">\r\n            <summary>\r\n            Location information for the caller.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Location information for the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.UserName\">\r\n            <summary>\r\n            String representation of the user\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            String representation of the user's windows name,\r\n            like DOMAIN\\username\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Identity\">\r\n            <summary>\r\n            String representation of the identity.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            String representation of the current thread's principal identity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ExceptionString\">\r\n            <summary>\r\n            The string representation of the exception\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The string representation of the exception\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Domain\">\r\n            <summary>\r\n            String representation of the AppDomain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            String representation of the AppDomain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Properties\">\r\n            <summary>\r\n            Additional event specific properties\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A logger or an appender may attach additional\r\n            properties to specific events. These properties\r\n            have a string key and an object value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.FixFlags\">\r\n            <summary>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Mdc\">\r\n            <summary>\r\n            Fix the MDC\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Ndc\">\r\n            <summary>\r\n            Fix the NDC\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Message\">\r\n            <summary>\r\n            Fix the rendered message\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.ThreadName\">\r\n            <summary>\r\n            Fix the thread name\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.LocationInfo\">\r\n            <summary>\r\n            Fix the callers location information\r\n            </summary>\r\n            <remarks>\r\n            CAUTION: Very slow to generate\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.UserName\">\r\n            <summary>\r\n            Fix the callers windows user name\r\n            </summary>\r\n            <remarks>\r\n            CAUTION: Slow to generate\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Domain\">\r\n            <summary>\r\n            Fix the domain friendly name\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Identity\">\r\n            <summary>\r\n            Fix the callers principal name\r\n            </summary>\r\n            <remarks>\r\n            CAUTION: May be slow to generate\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Exception\">\r\n            <summary>\r\n            Fix the exception text\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Properties\">\r\n            <summary>\r\n            Fix the event properties. Active properties must implement <see cref=\"T:log4net.Core.IFixingRequired\"/> in order to be eligible for fixing.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.None\">\r\n            <summary>\r\n            No fields fixed\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.All\">\r\n            <summary>\r\n            All fields fixed\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Partial\">\r\n            <summary>\r\n            Partial fields fixed\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This set of partial fields gives good performance. The following fields are fixed:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Message\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.ThreadName\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Exception\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Domain\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Properties\"/></description></item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEvent\">\r\n            <summary>\r\n            The internal representation of logging events. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            When an affirmative decision is made to log then a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> instance is created. This instance \r\n            is passed around to the different log4net components.\r\n            </para>\r\n            <para>\r\n            This class is of concern to those wishing to extend log4net.\r\n            </para>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.HostNameProperty\">\r\n            <summary>\r\n            The key into the Properties map for the host name value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.IdentityProperty\">\r\n            <summary>\r\n            The key into the Properties map for the thread identity value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.UserNameProperty\">\r\n            <summary>\r\n            The key into the Properties map for the user name value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,System.String,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class\r\n            from the supplied parameters.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"loggerName\">The name of the logger of this event.</param>\r\n            <param name=\"level\">The level of this event.</param>\r\n            <param name=\"message\">The message of this event.</param>\r\n            <param name=\"exception\">The exception for this event.</param>\r\n            <remarks>\r\n            <para>\r\n            Except <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>, <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> and <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/>, \r\n            all fields of <c>LoggingEvent</c> are filled when actually needed. Call\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> to cache all data locally\r\n            to prevent inconsistencies.\r\n            </para>\r\n            <para>This method is called by the log4net framework\r\n            to create a logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData,log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <param name=\"fixedData\">The fields in the <paranref name=\"data\"/> struct that have already been fixed.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fixedData\"/> parameter should be used to specify which fields in the\r\n            <paramref name=\"data\"/> struct have been preset. Fields not specified in the <paramref name=\"fixedData\"/>\r\n            will be captured from the environment if requested or fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.EnsureRepository(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Ensure that the repository is set.\r\n            </summary>\r\n            <param name=\"repository\">the value for the repository</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\">\r\n            <summary>\r\n            Write the rendered message to a TextWriter\r\n            </summary>\r\n            <param name=\"writer\">the writer to write the message to</param>\r\n            <remarks>\r\n            <para>\r\n            Unlike the <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property this method\r\n            does store the message data in the internal cache. Therefore \r\n            if called only once this method should be faster than the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property, however if the message is\r\n            to be accessed multiple times then the property will be more efficient.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            The data in this event must be fixed before it can be serialized.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> method must be called during the\r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method call if this event \r\n            is to be used outside that method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            <para>\r\n            Does a <see cref=\"F:log4net.Core.FixFlags.Partial\"/> fix of the data\r\n            in the logging event before returning the event data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <param name=\"fixFlags\">The set of data to ensure is fixed in the LoggingEventData</param>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionStrRep\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <b>Obsolete. Use <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> instead.</b>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionString\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData\">\r\n            <summary>\r\n            Fix instance fields that hold volatile data.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            Calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> is equivalent to\r\n            calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> passing the parameter\r\n            <c>false</c>.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more\r\n            information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\">\r\n            <summary>\r\n            Fixes instance fields that hold volatile data.\r\n            </summary>\r\n            <param name=\"fastButLoose\">Set to <c>true</c> to not fix data that takes a long time to fix.</param>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fastButLoose\"/> param controls the data that\r\n            is fixed. Some of the data that can be fixed takes a long time to \r\n            generate, therefore if you do not require those settings to be fixed\r\n            they can be ignored by setting the <paramref name=\"fastButLoose\"/> param\r\n            to <c>true</c>. This setting will ignore the <see cref=\"P:log4net.Core.LoggingEvent.LocationInformation\"/>\r\n            and <see cref=\"P:log4net.Core.LoggingEvent.UserName\"/> settings.\r\n            </para>\r\n            <para>\r\n            Set <paramref name=\"fastButLoose\"/> to <c>false</c> to ensure that all \r\n            settings are fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Fix the fields specified by the <see cref=\"T:log4net.Core.FixFlags\"/> parameter\r\n            </summary>\r\n            <param name=\"flags\">the fields to fix</param>\r\n            <remarks>\r\n            <para>\r\n            Only fields specified in the <paramref name=\"flags\"/> will be fixed.\r\n            Fields will not be fixed if they have previously been fixed.\r\n            It is not possible to 'unfix' a field.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\">\r\n            <summary>\r\n            Lookup a composite property in this event\r\n            </summary>\r\n            <param name=\"key\">the key for the property to lookup</param>\r\n            <returns>the value for the property</returns>\r\n            <remarks>\r\n            <para>\r\n            This event has composite properties that combine together properties from\r\n            several different contexts in the following order:\r\n            <list type=\"definition\">\r\n            \t<item>\r\n            \t\t<term>this events properties</term>\r\n            \t\t<description>\r\n            \t\tThis event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\tproperties are specific to this event only.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the thread properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the global properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetProperties\">\r\n            <summary>\r\n            Get all the composite properties in this event\r\n            </summary>\r\n            <returns>the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the properties</returns>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/> for details of the composite properties \r\n            stored by the event.\r\n            </para>\r\n            <para>\r\n            This method returns a single <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the\r\n            properties defined for this event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_data\">\r\n            <summary>\r\n            The internal logging event data.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_compositeProperties\">\r\n            <summary>\r\n            The internal logging event data.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_eventProperties\">\r\n            <summary>\r\n            The internal logging event data.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_callerStackBoundaryDeclaringType\">\r\n            <summary>\r\n            The fully qualified Type of the calling \r\n            logger class in the stack frame (i.e. the declaring type of the method).\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_message\">\r\n            <summary>\r\n            The application supplied message of logging event.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_thrownException\">\r\n            <summary>\r\n            The exception that was thrown.\r\n            </summary>\r\n            <remarks>\r\n            This is not serialized. The string representation\r\n            is serialized instead.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_repository\">\r\n            <summary>\r\n            The repository that generated the logging event\r\n            </summary>\r\n            <remarks>\r\n            This is not serialized.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_fixFlags\">\r\n            <summary>\r\n            The fix state for this event\r\n            </summary>\r\n            <remarks>\r\n            These flags indicate which fields have been fixed.\r\n            Not serialized.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_cacheUpdatable\">\r\n            <summary>\r\n            Indicated that the internal cache is updateable (ie not fixed)\r\n            </summary>\r\n            <remarks>\r\n            This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler\r\n            changes in the caching strategy.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.StartTime\">\r\n            <summary>\r\n            Gets the time when the current process started.\r\n            </summary>\r\n            <value>\r\n            This is the time when this process started.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The TimeStamp is stored in the local time zone for this computer.\r\n            </para>\r\n            <para>\r\n            Tries to get the start time for the current process.\r\n            Failing that it returns the time of the first call to\r\n            this property.\r\n            </para>\r\n            <para>\r\n            Note that AppDomains may be loaded and unloaded within the\r\n            same process without the process terminating and therefore\r\n            without the process start time being reset.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Level\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.TimeStamp\">\r\n            <summary>\r\n            Gets the time of the logging event.\r\n            </summary>\r\n            <value>\r\n            The time of the logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The TimeStamp is stored in the local time zone for this computer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LoggerName\">\r\n            <summary>\r\n            Gets the name of the logger that logged the event.\r\n            </summary>\r\n            <value>\r\n            The name of the logger that logged the event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the name of the logger that logged the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LocationInformation\">\r\n            <summary>\r\n            Gets the location information for this logging event.\r\n            </summary>\r\n            <value>\r\n            The location information for this logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Core.LocationInfo\"/> class for more information on\r\n            supported frameworks and the different behavior in Debug and\r\n            Release builds.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.MessageObject\">\r\n            <summary>\r\n            Gets the message object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The message object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the message object used to initialize this event.\r\n            Note that this event may not have a valid message object.\r\n            If the event is serialized the message object will not \r\n            be transferred. To get the text of the message the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined message object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ExceptionObject\">\r\n            <summary>\r\n            Gets the exception object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The exception object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the exception object used to initialize this event.\r\n            Note that this event may not have a valid exception object.\r\n            If the event is serialized the exception object will not \r\n            be transferred. To get the text of the exception the\r\n            <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> method must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined exception object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.RenderedMessage\">\r\n            <summary>\r\n            Gets the message, rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <value>\r\n            The message rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ThreadName\">\r\n            <summary>\r\n            Gets the name of the current thread.  \r\n            </summary>\r\n            <value>\r\n            The name of the current thread, or the thread ID when \r\n            the name is not available.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.UserName\">\r\n            <summary>\r\n            Gets the name of the current user.\r\n            </summary>\r\n            <value>\r\n            The name of the current user, or <c>NOT AVAILABLE</c> when the \r\n            underlying runtime has no support for retrieving the name of the \r\n            current user.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Calls <c>WindowsIdentity.GetCurrent().Name</c> to get the name of\r\n            the current windows user.\r\n            </para>\r\n            <para>\r\n            To improve performance, we could cache the string representation of \r\n            the name, and reuse that as long as the identity stayed constant.  \r\n            Once the identity changed, we would need to re-assign and re-render \r\n            the string.\r\n            </para>\r\n            <para>\r\n            However, the <c>WindowsIdentity.GetCurrent()</c> call seems to \r\n            return different objects every time, so the current implementation \r\n            doesn't do this type of caching.\r\n            </para>\r\n            <para>\r\n            Timing for these operations:\r\n            </para>\r\n            <list type=\"table\">\r\n              <listheader>\r\n                <term>Method</term>\r\n                <description>Results</description>\r\n              </listheader>\r\n              <item>\r\n                <term><c>WindowsIdentity.GetCurrent()</c></term>\r\n                <description>10000 loops, 00:00:00.2031250 seconds</description>\r\n              </item>\r\n              <item>\r\n                <term><c>WindowsIdentity.GetCurrent().Name</c></term>\r\n                <description>10000 loops, 00:00:08.0468750 seconds</description>\r\n              </item>\r\n            </list>\r\n            <para>\r\n            This means we could speed things up almost 40 times by caching the \r\n            value of the <c>WindowsIdentity.GetCurrent().Name</c> property, since \r\n            this takes (8.04-0.20) = 7.84375 seconds.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Identity\">\r\n            <summary>\r\n            Gets the identity of the current thread principal.\r\n            </summary>\r\n            <value>\r\n            The string name of the identity of the current thread principal.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Calls <c>System.Threading.Thread.CurrentPrincipal.Identity.Name</c> to get\r\n            the name of the current thread principal.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Domain\">\r\n            <summary>\r\n            Gets the AppDomain friendly name.\r\n            </summary>\r\n            <value>\r\n            The AppDomain friendly name.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the AppDomain friendly name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Properties\">\r\n            <summary>\r\n            Additional event specific properties.\r\n            </summary>\r\n            <value>\r\n            Additional event specific properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A logger or an appender may attach additional\r\n            properties to specific events. These properties\r\n            have a string key and an object value.\r\n            </para>\r\n            <para>\r\n            This property is for events that have been added directly to\r\n            this event. The aggregate properties (which include these\r\n            event properties) can be retrieved using <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/>\r\n            and <see cref=\"M:log4net.Core.LoggingEvent.GetProperties\"/>.\r\n            </para>\r\n            <para>\r\n            Once the properties have been fixed <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> this property\r\n            returns the combined cached properties. This ensures that updates to\r\n            this property are always reflected in the underlying storage. When\r\n            returning the combined properties there may be more keys in the\r\n            Dictionary than expected.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Fix\">\r\n            <summary>\r\n            The fixed fields in this event\r\n            </summary>\r\n            <value>\r\n            The set of fields that are fixed in this event\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Fields will not be fixed if they have previously been fixed.\r\n            It is not possible to 'unfix' a field.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LogImpl\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.ILog\"/> wrapper interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This implementation of the <see cref=\"T:log4net.ILog\"/> interface\r\n            forwards to the <see cref=\"T:log4net.Core.ILogger\"/> held by the base class.\r\n            </para>\r\n            <para>\r\n            This logger has methods to allow the caller to log at the following\r\n            levels:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <item>\r\n                <term>DEBUG</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>DEBUG</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Debug\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>INFO</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>INFO</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Info\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsInfoEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>WARN</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>WARN</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Warn\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsWarnEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>ERROR</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>ERROR</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Error\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsErrorEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>FATAL</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>FATAL</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Fatal\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsFatalEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n            </list>\r\n            <para>\r\n            The values for these levels and their semantic meanings can be changed by \r\n            configuring the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ILog\">\r\n            <summary>\r\n            The ILog interface is use by application to log messages into\r\n            the log4net framework.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use the <see cref=\"T:log4net.LogManager\"/> to obtain logger instances\r\n            that implement this interface. The <see cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            static method is used to get logger instances.\r\n            </para>\r\n            <para>\r\n            This class contains methods for logging at different levels and also\r\n            has properties for determining if those logging levels are\r\n            enabled in the current configuration.\r\n            </para>\r\n            <para>\r\n            This interface can be implemented in different ways. This documentation\r\n            specifies reasonable behavior that a caller can expect from the actual\r\n            implementation, however different implementations reserve the right to\r\n            do things differently.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <seealso cref=\"T:log4net.LogManager\"/>\r\n            <seealso cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Debug\"/> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Info\"/> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Warn\"/> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Error\"/> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Fatal\"/> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsDebugEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Debug\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This function is intended to lessen the computational cost of\r\n            disabled log debug statements.\r\n            </para>\r\n            <para> For some ILog interface <c>log</c>, when you write:</para>\r\n            <code lang=\"C#\">\r\n            log.Debug(\"This is entry number: \" + i );\r\n            </code>\r\n            <para>\r\n            You incur the cost constructing the message, string construction and concatenation in\r\n            this case, regardless of whether the message is logged or not.\r\n            </para>\r\n            <para>\r\n            If you are worried about speed (who isn't), then you should write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (log.IsDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way you will not incur the cost of parameter\r\n            construction if debugging is disabled for <c>log</c>. On\r\n            the other hand, if the <c>log</c> is debug enabled, you\r\n            will incur the cost of evaluating whether the logger is debug\r\n            enabled twice. Once in <see cref=\"P:log4net.ILog.IsDebugEnabled\"/> and once in\r\n            the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/>.  This is an insignificant overhead\r\n            since evaluating a logger takes about 1% of the time it\r\n            takes to actually log. This is the preferred style of logging.\r\n            </para>\r\n            <para>Alternatively if your logger is available statically then the is debug\r\n            enabled state can be stored in a static variable like this:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            private static readonly bool isDebugEnabled = log.IsDebugEnabled;\r\n            </code>\r\n            <para>\r\n            Then when you come to log you can write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (isDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way the debug enabled state is only queried once\r\n            when the class is loaded. Using a <c>private static readonly</c>\r\n            variable is the most efficient because it is a run time constant\r\n            and can be heavily optimized by the JIT compiler.\r\n            </para>\r\n            <para>\r\n            Of course if you use a static readonly variable to\r\n            hold the enabled state of the logger then you cannot\r\n            change the enabled state at runtime to vary the logging\r\n            that is produced. You have to decide if you need absolute\r\n            speed or runtime flexibility.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Info\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Warn\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Error\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Fatal\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Construct a new wrapper for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <remarks>\r\n            <para>\r\n            Construct a new wrapper for the specified logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ReloadLevels(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Virtual method called when the configuration of the repository changes\r\n            </summary>\r\n            <param name=\"repository\">the repository holding the levels</param>\r\n            <remarks>\r\n            <para>\r\n            Virtual method called when the configuration of the repository changes\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>DEBUG</c> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>DEBUG</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> passed\r\n            as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>INFO</c> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"message\">the message object to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>WARN</c> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>WARN</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>ERROR</c> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>ERROR</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>FATAL</c> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>FATAL</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.LoggerRepositoryConfigurationChanged(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Event handler for the <see cref=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\"/> event\r\n            </summary>\r\n            <param name=\"sender\">the repository</param>\r\n            <param name=\"e\">Empty</param>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LogImpl.ThisDeclaringType\">\r\n            <summary>\r\n            The fully qualified name of this declaring type not the type of any subclass.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsDebugEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>DEBUG</c>\r\n            level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>DEBUG</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This function is intended to lessen the computational cost of\r\n            disabled log debug statements.\r\n            </para>\r\n            <para>\r\n            For some <c>log</c> Logger object, when you write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            log.Debug(\"This is entry number: \" + i );\r\n            </code>\r\n            <para>\r\n            You incur the cost constructing the message, concatenation in\r\n            this case, regardless of whether the message is logged or not.\r\n            </para>\r\n            <para>\r\n            If you are worried about speed, then you should write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (log.IsDebugEnabled())\r\n            { \r\n             log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way you will not incur the cost of parameter\r\n            construction if debugging is disabled for <c>log</c>. On\r\n            the other hand, if the <c>log</c> is debug enabled, you\r\n            will incur the cost of evaluating whether the logger is debug\r\n            enabled twice. Once in <c>IsDebugEnabled</c> and once in\r\n            the <c>Debug</c>.  This is an insignificant overhead\r\n            since evaluating a logger takes about 1% of the time it\r\n            takes to actually log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>INFO</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>INFO</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>WARN</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>WARN</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>ERROR</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>ERROR</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>FATAL</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>FATAL</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContext\">\r\n            <summary>\r\n            A SecurityContext used by log4net when interacting with protected resources\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A SecurityContext used by log4net when interacting with protected resources\r\n            for example with operating system services. This can be used to impersonate\r\n            a principal that has been granted privileges on the system resources.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate this SecurityContext\r\n            </summary>\r\n            <param name=\"state\">State supplied by the caller</param>\r\n            <returns>An <see cref=\"T:System.IDisposable\"/> instance that will\r\n            revoke the impersonation of this SecurityContext, or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Impersonate this security context. Further calls on the current\r\n            thread should now be made in the security context provided\r\n            by this object. When the <see cref=\"T:System.IDisposable\"/> result \r\n            <see cref=\"M:System.IDisposable.Dispose\"/> method is called the security\r\n            context of the thread should be reverted to the state it was in\r\n            before <see cref=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\"/> was called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContextProvider\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.SecurityContextProvider\"/> providers default <see cref=\"T:log4net.Core.SecurityContext\"/> instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A configured component that interacts with potentially protected system\r\n            resources uses a <see cref=\"T:log4net.Core.SecurityContext\"/> to provide the elevated\r\n            privileges required. If the <see cref=\"T:log4net.Core.SecurityContext\"/> object has\r\n            been not been explicitly provided to the component then the component\r\n            will request one from this <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </para>\r\n            <para>\r\n            By default the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is\r\n            an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/> which returns only\r\n            <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects. This is a reasonable default\r\n            where the privileges required are not know by the system.\r\n            </para>\r\n            <para>\r\n            This default behavior can be overridden by subclassing the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            and overriding the <see cref=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\"/> method to return\r\n            the desired <see cref=\"T:log4net.Core.SecurityContext\"/> objects. The default provider\r\n            can be replaced by programmatically setting the value of the \r\n            <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> property.\r\n            </para>\r\n            <para>\r\n            An alternative is to use the <c>log4net.Config.SecurityContextProviderAttribute</c>\r\n            This attribute can be applied to an assembly in the same way as the\r\n            <c>log4net.Config.XmlConfiguratorAttribute\"</c>. The attribute takes\r\n            the type to use as the <see cref=\"T:log4net.Core.SecurityContextProvider\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.SecurityContextProvider.s_defaultProvider\">\r\n            <summary>\r\n            The default provider\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.#ctor\">\r\n            <summary>\r\n            Protected default constructor to allow subclassing\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Protected default constructor to allow subclassing\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\">\r\n            <summary>\r\n            Create a SecurityContext for a consumer\r\n            </summary>\r\n            <param name=\"consumer\">The consumer requesting the SecurityContext</param>\r\n            <returns>An impersonation context</returns>\r\n            <remarks>\r\n            <para>\r\n            The default implementation is to return a <see cref=\"T:log4net.Util.NullSecurityContext\"/>.\r\n            </para>\r\n            <para>\r\n            Subclasses should override this method to provide their own\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\">\r\n            <summary>\r\n            Gets or sets the default SecurityContextProvider\r\n            </summary>\r\n            <value>\r\n            The default SecurityContextProvider\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default provider is used by configured components that\r\n            require a <see cref=\"T:log4net.Core.SecurityContext\"/> and have not had one\r\n            given to them.\r\n            </para>\r\n            <para>\r\n            By default this is an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that returns <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects.\r\n            </para>\r\n            <para>\r\n            The default provider can be set programmatically by setting\r\n            the value of this property to a sub class of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that has the desired behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.TimeEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers after specified number of seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n            <author>Robert Sevcik</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\">\r\n            <summary>\r\n            The default time threshold for triggering in seconds. Zero means it won't trigger at all.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_interval\">\r\n            <summary>\r\n            The time threshold for triggering in seconds. Zero means it won't trigger at all.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_lasttime\">\r\n            <summary>\r\n            The time of last check. This gets updated when the object is created and when the evaluator triggers.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor(System.Int32)\">\r\n            <summary>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </summary>\r\n            <param name=\"interval\">\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.TimeEvaluator.Interval\">\r\n            <summary>\r\n            The time threshold in seconds to trigger after\r\n            </summary>\r\n            <value>\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperCreationHandler\">\r\n            <summary>\r\n            Delegate used to handle creation of new wrappers.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle creation of new wrappers. This delegate\r\n            is called from the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method to construct the wrapper for the specified logger.\r\n            </para>\r\n            <para>\r\n            The delegate to use is supplied to the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperMap\">\r\n            <summary>\r\n            Maps between logger objects and wrapper objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class maintains a mapping between <see cref=\"T:log4net.Core.ILogger\"/> objects and\r\n            <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects. Use the <see cref=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\"/> method to \r\n            lookup the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> for the specified <see cref=\"T:log4net.Core.ILogger\"/>.\r\n            </para>\r\n            <para>\r\n            New wrapper instances are created by the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method. The default behavior is for this method to delegate construction\r\n            of the wrapper to the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/> delegate supplied\r\n            to the constructor. This allows specialization of the behavior without\r\n            requiring subclassing of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.#ctor(log4net.Core.WrapperCreationHandler)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            </summary>\r\n            <param name=\"createWrapperHandler\">The handler to use to create the wrapper objects.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/> class with \r\n            the specified handler to create the wrapper objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Gets the wrapper object for the specified logger.\r\n            </summary>\r\n            <returns>The wrapper object for the specified logger</returns>\r\n            <remarks>\r\n            <para>\r\n            If the logger is null then the corresponding wrapper is null.\r\n            </para>\r\n            <para>\r\n            Looks up the wrapper it it has previously been requested and\r\n            returns it. If the wrapper has never been requested before then\r\n            the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/> virtual method is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Creates the wrapper object for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <returns>The wrapper object for the logger.</returns>\r\n            <remarks>\r\n            <para>\r\n            This implementation uses the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/>\r\n            passed to the constructor to create the wrapper. This method\r\n            can be overridden in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.RepositoryShutdown(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Called when a monitored repository shutdown event is received.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called when a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this\r\n            <see cref=\"T:log4net.Core.WrapperMap\"/> is holding loggers for has signaled its shutdown\r\n            event <see cref=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\"/>. The default\r\n            behavior of this method is to release the references to the loggers\r\n            and their wrappers generated for this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.ILoggerRepository_Shutdown(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Event handler for repository shutdown event.\r\n            </summary>\r\n            <param name=\"sender\">The sender of the event.</param>\r\n            <param name=\"e\">The event args.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_repositories\">\r\n            <summary>\r\n            Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_createWrapperHandler\">\r\n            <summary>\r\n            The handler to use to create the extension wrapper objects.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_shutdownHandler\">\r\n            <summary>\r\n            Internal reference to the delegate used to register for repository shutdown events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.WrapperMap.Repositories\">\r\n            <summary>\r\n            Gets the map of logger repositories.\r\n            </summary>\r\n            <value>\r\n            Map of logger repositories.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the hashtable that is keyed on <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The\r\n            values are hashtables keyed on <see cref=\"T:log4net.Core.ILogger\"/> with the\r\n            value being the corresponding <see cref=\"T:log4net.Core.ILoggerWrapper\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.IDateFormatter\">\r\n            <summary>\r\n            Render a <see cref=\"T:System.DateTime\"/> as a string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface to abstract the rendering of a <see cref=\"T:System.DateTime\"/>\r\n            instance into a string.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/> method is used to render the\r\n            date to a text writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the specified date as a string.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:System.DateTime\"/> as a string and write it\r\n            to the <see cref=\"T:System.IO.TextWriter\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.AbsoluteTimeDateFormat\">\r\n            <summary>\r\n            String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is <b>ABSOLUTE</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.DateAndTimeDateFormat\">\r\n            <summary>\r\n            String constant used to specify DateTimeDateFormat in layouts.  Current value is <b>DATE</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.Iso8601TimeDateFormat\">\r\n            <summary>\r\n            String constant used to specify ISO8601DateFormat in layouts. Current value is <b>ISO8601</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Renders the date into a string. Format is <c>\"HH:mm:ss\"</c>.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to render into a string.</param>\r\n            <param name=\"buffer\">The string builder to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Subclasses should override this method to render the date\r\n            into a string using a precision up to the second. This method\r\n            will be called at most once per second and the result will be\r\n            reused if it is needed again during the same second.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Renders the date into a string. Format is \"HH:mm:ss,fff\".\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to render into a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> method to generate the\r\n            time string up to the seconds and then appends the current\r\n            milliseconds. The results from <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> are\r\n            cached and <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> is called at most once\r\n            per second.\r\n            </para>\r\n            <para>\r\n            Sub classes should override <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/>\r\n            rather than <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeToTheSecond\">\r\n            <summary>\r\n            Last stored time with precision up to the second.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeBuf\">\r\n            <summary>\r\n            Last stored time with precision up to the second, formatted\r\n            as a string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeString\">\r\n            <summary>\r\n            Last stored time with precision up to the second, formatted\r\n            as a string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.DateTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"dd MMM yyyy HH:mm:ss,fff\"</c>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format \r\n            <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, \r\n            <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Angelika Schnagl</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Formats the date without the milliseconds part\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"buffer\">The string builder to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Formats a DateTime in the format <c>\"dd MMM yyyy HH:mm:ss\"</c>\r\n            for example, <c>\"06 Nov 1994 15:49:37\"</c>.\r\n            </para>\r\n            <para>\r\n            The base class will append the <c>\",fff\"</c> milliseconds section.\r\n            This method will only be called at most once per second.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.DateTimeDateFormatter.m_dateTimeFormatInfo\">\r\n            <summary>\r\n            The format info for the invariant culture.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.Iso8601DateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> as <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> specified as a string: <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Formats the date without the milliseconds part\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"buffer\">The string builder to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Formats the date specified as a string: <c>\"yyyy-MM-dd HH:mm:ss\"</c>.\r\n            </para>\r\n            <para>\r\n            The base class will append the <c>\",fff\"</c> milliseconds section.\r\n            This method will only be called at most once per second.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.SimpleDateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"T:System.DateTime\"/> <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"format\">The format string.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> class \r\n            with the specified format string.\r\n            </para>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the date using <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to convert to a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the date format string supplied to the constructor to call\r\n            the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method to format the date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.SimpleDateFormatter.m_formatString\">\r\n            <summary>\r\n            The format string used to format the <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.DenyAllFilter\">\r\n            <summary>\r\n            This filter drops all <see cref=\"T:log4net.Core.LoggingEvent\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can add this filter to the end of a filter chain to\r\n            switch from the default \"accept all unless instructed otherwise\"\r\n            filtering behavior to a \"deny all unless instructed otherwise\"\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterSkeleton\">\r\n            <summary>\r\n            Subclass this type to implement customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should extend this class to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.IFilter\">\r\n            <summary>\r\n            Implement this interface to provide customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should implement this interface to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the logging event should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The LoggingEvent to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.IFilter.Next\">\r\n            <summary>\r\n            Property to get and set the next filter\r\n            </summary>\r\n            <value>\r\n            The next filter in the chain\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Filters are typically composed into chains. This property allows the next filter in \r\n            the chain to be accessed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterSkeleton.m_next\">\r\n            <summary>\r\n            Points to the next filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Filter.FilterSkeleton.Next\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the filter with the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Typically filter's options become active immediately on set, \r\n            however this method must still be called. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the <see cref=\"T:log4net.Core.LoggingEvent\"/> should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            <para>\r\n            This method is marked <c>abstract</c> and must be implemented\r\n            in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.FilterSkeleton.Next\">\r\n            <summary>\r\n            Property to get and set the next filter\r\n            </summary>\r\n            <value>\r\n            The next filter in the chain\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Filters are typically composed into chains. This property allows the next filter in \r\n            the chain to be accessed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Always returns the integer constant <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">the LoggingEvent to filter</param>\r\n            <returns>Always returns <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Ignores the event being logged and just returns\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This can be used to change the default filter\r\n            chain behavior from <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> to <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This filter\r\n            should only be used as the last filter in the chain\r\n            as any further filters will be ignored!\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterDecision\">\r\n            <summary>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Deny\">\r\n            <summary>\r\n            The log event must be dropped immediately without \r\n            consulting with the remaining filters, if any, in the chain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Neutral\">\r\n            <summary>\r\n            This filter is neutral with respect to the log event. \r\n            The remaining filters, if any, should be consulted for a final decision.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Accept\">\r\n            <summary>\r\n            The log event must be logged immediately without \r\n            consulting with the remaining filters, if any, in the chain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelMatchFilter\">\r\n            <summary>\r\n            This is a very simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits two options <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> and\r\n            <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If there is an exact match between the value\r\n            of the <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> option and the <see cref=\"T:log4net.Core.Level\"/> of the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the <see cref=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> option value is set\r\n            to <c>true</c>, if it is <c>false</c> then \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            flag to indicate if the filter should <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> on a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_levelToMatch\">\r\n            <summary>\r\n            the <see cref=\"T:log4net.Core.Level\"/> to match against\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Tests if the <see cref=\"T:log4net.Core.Level\"/> of the logging event matches that of the filter\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to filter</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the event matches the level of the\r\n            filter then the result of the function depends on the\r\n            value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If it is true then\r\n            the function will return <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>, it it is false then it\r\n            will return <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelRangeFilter\">\r\n            <summary>\r\n            This is a simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits three options <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            that determine the range of priorities that are matched, and\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>. If there is a match between the range\r\n            of priorities and the <see cref=\"T:log4net.Core.Level\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the \r\n            <see cref=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in case the <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> \r\n            option value is set to <c>true</c>, if it is <c>false</c>\r\n            then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If there is no match, <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when matching a <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMin\">\r\n            <summary>\r\n            the minimum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMax\">\r\n            <summary>\r\n            the maximum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if the event should be logged.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the logging event to check</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the logging event is outside the range\r\n            matched by this filter then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            is returned. If the <see cref=\"T:log4net.Core.Level\"/> is matched then the value of\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> is checked. If it is true then\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMin\">\r\n            <summary>\r\n            Set the minimum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The minimum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMax\">\r\n            <summary>\r\n            Sets the maximum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The maximum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LoggerMatchFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the event's logger name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The works very similar to the <see cref=\"T:log4net.Filter.LevelMatchFilter\"/>. It admits two \r\n            options <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> and <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>. If the \r\n            <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/> starts \r\n            with the value of the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> option, then the \r\n            <see cref=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> option value is set to <c>true</c>, \r\n            if it is <c>false</c> then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when we have a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_loggerToMatch\">\r\n            <summary>\r\n            The logger name string to substring match against the event\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> equals the beginning of \r\n            the incoming <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> (<see cref=\"M:System.String.StartsWith(System.String)\"/>)\r\n            then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This filter will attempt to match this value against logger name in\r\n            the following way. The match will be done against the beginning of the\r\n            logger name (using <see cref=\"M:System.String.StartsWith(System.String)\"/>). The match is\r\n            case sensitive. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.MdcFilter\">\r\n            <summary>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with layered properties the\r\n            <see cref=\"T:log4net.Filter.PropertyFilter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.PropertyFilter\">\r\n            <summary>\r\n            Simple filter to match a string an event property\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the value for a\r\n            specific event property\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.StringMatchFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the rendered message\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the rendered message\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when we have a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringToMatch\">\r\n            <summary>\r\n            The string to substring match against the message\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringRegexToMatch\">\r\n            <summary>\r\n            A string regex to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_regexToMatch\">\r\n            <summary>\r\n            A regex object to match (generated from m_stringRegexToMatch)\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\">\r\n            <summary>\r\n            Initialize and precompile the Regex if required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the message then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.StringToMatch\">\r\n            <summary>\r\n            Sets the static string to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The string that will be substring matched against\r\n            the rendered message. If the message contains this\r\n            string then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\">\r\n            <summary>\r\n            Sets the regular expression to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The regular expression pattern that will be matched against\r\n            the rendered message. If the message matches this\r\n            pattern then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.PropertyFilter.m_key\">\r\n            <summary>\r\n            The key to use to lookup the string from the event properties\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The event property for the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> is matched against \r\n            the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the property value then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.PropertyFilter.Key\">\r\n            <summary>\r\n            The key to lookup in the event properties and then match against.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The key name to use to lookup in the properties map of the\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>. The match will be performed against \r\n            the value of this property if it exists.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.NdcFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with named stacks stored in the\r\n            properties collections the <see cref=\"T:log4net.Filter.PropertyFilter\"/> should \r\n            be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.NdcFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Sets the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> to <c>\"NDC\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AppDomainPatternConverter\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PatternLayoutConverter\">\r\n            <summary>\r\n            Abstract class that provides the formatting functionality that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            Conversion specifiers in a conversion patterns are parsed to\r\n            individual PatternConverters. Each of which is responsible for\r\n            converting a logging event in a converter specific manner.\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternConverter\">\r\n            <summary>\r\n            Abstract class that provides the formatting functionality that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Conversion specifiers in a conversion patterns are parsed to\r\n            individual PatternConverters. Each of which is responsible for\r\n            converting a logging event in a converter specific manner.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferSize\">\r\n            <summary>\r\n            Initial buffer size\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferMaxCapacity\">\r\n            <summary>\r\n            Maximum buffer size before it is recycled\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.#ctor\">\r\n            <summary>\r\n            Protected constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternConverter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Evaluate this pattern converter and write the output to a writer.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the appropriate way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Set the next pattern converter in the chains\r\n            </summary>\r\n            <param name=\"patternConverter\">the pattern converter that should follow this converter in the chain</param>\r\n            <returns>the next converter</returns>\r\n            <remarks>\r\n            <para>\r\n            The PatternConverter can merge with its neighbor during this method (or a sub class).\r\n            Therefore the return value may or may not be the value of the argument passed in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the pattern converter to the writer with appropriate formatting\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            This method calls <see cref=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\"/> to allow the subclass to perform\r\n            appropriate conversion of the pattern converter. If formatting options have\r\n            been specified via the <see cref=\"P:log4net.Util.PatternConverter.FormattingInfo\"/> then this method will\r\n            apply those formattings before writing the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SpacePad(System.IO.TextWriter,System.Int32)\">\r\n            <summary>\r\n            Fast space padding method.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> to which the spaces will be appended.</param>\r\n            <param name=\"length\">The number of spaces to be padded.</param>\r\n            <remarks>\r\n            <para>\r\n            Fast space padding method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.m_option\">\r\n            <summary>\r\n            The option string to the converter\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionary)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionary\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionaryEnumerator)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteObject(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Object)\">\r\n            <summary>\r\n            Write an object to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the Object to a writer. If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the object to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Next\">\r\n            <summary>\r\n            Get the next pattern converter in the chain\r\n            </summary>\r\n            <value>\r\n            the next pattern converter in the chain\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the next pattern converter in the chain\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.FormattingInfo\">\r\n            <summary>\r\n            Gets or sets the formatting info for this converter\r\n            </summary>\r\n            <value>\r\n            The formatting info for this converter\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the formatting info for this converter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Option\">\r\n            <summary>\r\n            Gets or sets the option value for this converter\r\n            </summary>\r\n            <summary>\r\n            The option for this converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the option value for this converter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Properties\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.Pattern.PatternLayoutConverter\"/> class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.PatternLayoutConverter.m_ignoresException\">\r\n            <summary>\r\n            Flag indicating if this converter handles exceptions\r\n            </summary>\r\n            <remarks>\r\n            <c>false</c> if this converter handles exceptions\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.Pattern.PatternLayoutConverter.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this converter handles the logging event exception\r\n            </summary>\r\n            <value><c>false</c> if this converter handles the logging event exception</value>\r\n            <remarks>\r\n            <para>\r\n            If this converter handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then this property should be set to\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the property should be set to <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this converter does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AppDomainPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetCachePatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetPatternLayoutConverter\">\r\n            <summary>\r\n            Abstract class that provides access to the current HttpContext (<see cref=\"P:System.Web.HttpContext.Current\"/>) that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            This class handles the case when HttpContext.Current is null by writing\r\n            <see cref=\"P:log4net.Util.SystemInfo.NotAvailableText\"/> to the writer.\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetPatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetCachePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Cache will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetContextPatternConverter\">\r\n            <summary>\r\n            Converter for items in the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetContextPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net HttpContext item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetRequestPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetRequestPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetSessionPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetSessionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Session will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.DatePatternConverter\">\r\n            <summary>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Render the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,yyyy\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter pattern based on the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the DatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ExceptionPatternConverter\">\r\n            <summary>\r\n            Write the exception text to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If an exception object is stored in the logging event\r\n            it will be rendered into the pattern output with a\r\n            trailing newline.\r\n            </para>\r\n            <para>\r\n            If there is no exception then nothing will be output\r\n            and no trailing newline will be appended.\r\n            It is typical to put a newline before the exception\r\n            and to have the exception as the last data in the pattern.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the exception text to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            If an exception object is stored in the logging event\r\n            it will be rendered into the pattern output with a\r\n            trailing newline.\r\n            </para>\r\n            <para>\r\n            If there is no exception or the exception property specified\r\n            by the Option value does not exist then nothing will be output\r\n            and no trailing newline will be appended.\r\n            It is typical to put a newline before the exception\r\n            and to have the exception as the last data in the pattern.\r\n            </para>\r\n            <para>\r\n            Recognized values for the Option parameter are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>Message</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>Source</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>StackTrace</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>TargetSite</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>HelpLink</description>\r\n            \t</item>\t\t\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FileLocationPatternConverter\">\r\n            <summary>\r\n            Writes the caller location file name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FileLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location file name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FullLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FullLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.IdentityPatternConverter\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.IdentityPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <paramref name=\"loggingEvent\"/> \r\n            <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LevelPatternConverter\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the display name of the event <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LevelPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.Level.DisplayName\"/> of the <paramref name=\"loggingEvent\"/> <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LineLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LineLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LoggerPatternConverter\">\r\n            <summary>\r\n            Converter for logger name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NamedPatternConverter\">\r\n            <summary>\r\n            Converter to output and truncate <c>'.'</c> separated strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This abstract class supports truncating a <c>'.'</c> separated string\r\n            to show a specified number of elements from the right hand side.\r\n            This is used to truncate class names that are fully qualified.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> method to\r\n            return the fully qualified string.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Get the fully qualified string data\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>the fully qualified name</returns>\r\n            <remarks>\r\n            <para>\r\n            Overridden by subclasses to get the fully qualified name before the\r\n            precision is applied to it.\r\n            </para>\r\n            <para>\r\n            Return the fully qualified <c>'.'</c> (dot/period) separated string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            Render the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> to the precision\r\n            specified by the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.NamedPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the NamedPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LoggerPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the logger\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified logger name</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MessagePatternConverter\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MessagePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MethodLocationPatternConverter\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MethodLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NdcPatternConverter\">\r\n            <summary>\r\n            Converter to include event NDC\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the value of the event property named <c>NDC</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NdcPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event NDC to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            As the thread context stacks are now stored in named event properties\r\n            this converter simply looks up the value of the <c>NDC</c> property.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PropertyPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.RelativeTimePatternConverter\">\r\n            <summary>\r\n            Converter to output the relative time of the event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Converter to output the time of the event relative to the start of the program.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the relative time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the relative time of the event in milliseconds.\r\n            That is the number of milliseconds between the event <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>\r\n            and the <see cref=\"P:log4net.Core.LoggingEvent.StartTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.TimeDifferenceInMillis(System.DateTime,System.DateTime)\">\r\n            <summary>\r\n            Helper method to get the time difference between two DateTime objects\r\n            </summary>\r\n            <param name=\"start\">start time (in the current local time zone)</param>\r\n            <param name=\"end\">end time (in the current local time zone)</param>\r\n            <returns>the time difference in milliseconds</returns>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTraceDetailPatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            </para>\r\n            </remarks>\r\n            <author>Adam Davies</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTracePatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            </para>\r\n            </remarks>\r\n            <author>Michael Cromwell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the strack frames to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.GetMethodInformation(System.Reflection.MethodBase)\">\r\n            <summary>\r\n            Returns the Name of the method\r\n            </summary>\r\n            <param name=\"method\"></param>\r\n            <remarks>This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter</remarks>\r\n            <returns>string</returns>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTracePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the StackTracePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTraceDetailPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the StackTraceDetailPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ThreadPatternConverter\">\r\n            <summary>\r\n            Converter to include event thread name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ThreadPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the ThreadName to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.TypeNamePatternConverter\">\r\n            <summary>\r\n            Pattern converter for the class name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.TypeNamePatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the class\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified type name for the caller location</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UserNamePatternConverter\">\r\n            <summary>\r\n            Converter to include event user name\r\n            </summary>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UserNamePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            Uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> \r\n            in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UtcDatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone, this is converted\r\n            to Universal time before it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.UtcDatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the UtcDatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.ExceptionLayout\">\r\n            <summary>\r\n            A Layout that renders only the Exception text from the logging event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A Layout that renders only the Exception text from the logging event.\r\n            </para>\r\n            <para>\r\n            This Layout should only be used with appenders that utilize multiple\r\n            layouts (e.g. <see cref=\"T:log4net.Appender.AdoNetAppender\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.LayoutSkeleton\">\r\n            <summary>\r\n            Extend this abstract class to create your own log layout format.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the base implementation of the <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            interface. Most layout objects should extend this class.\r\n            </para>\r\n            </remarks>\r\n            <remarks>\r\n            <note type=\"inheritinfo\">\r\n            <para>\r\n            Subclasses must implement the <see cref=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>\r\n            method.\r\n            </para>\r\n            <para>\r\n            Subclasses should set the <see cref=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\"/> in their default\r\n            constructor.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.ILayout\">\r\n            <summary>\r\n            Interface implemented by layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An <see cref=\"T:log4net.Layout.ILayout\"/> object is used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            as text. The <see cref=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> method is called by an\r\n            appender to transform the <see cref=\"T:log4net.Core.LoggingEvent\"/> into a string.\r\n            </para>\r\n            <para>\r\n            The layout can also supply <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            text that is appender before any events and after all the events respectively.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called by an appender to format\r\n            the <paramref name=\"loggingEvent\"/> as text and output to a writer.\r\n            </para>\r\n            <para>\r\n            If the caller does not have a <see cref=\"T:System.IO.TextWriter\"/> and prefers the\r\n            event to be formatted as a <see cref=\"T:System.String\"/> then the following\r\n            code can be used to format the event into a <see cref=\"T:System.IO.StringWriter\"/>.\r\n            </para>\r\n            <code lang=\"C#\">\r\n            StringWriter writer = new StringWriter();\r\n            Layout.Format(writer, loggingEvent);\r\n            string formattedEvent = writer.ToString();\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.ContentType\">\r\n            <summary>\r\n            The content type output by this layout. \r\n            </summary>\r\n            <value>The content type</value>\r\n            <remarks>\r\n            <para>\r\n            The content type output by this layout.\r\n            </para>\r\n            <para>\r\n            This is a MIME type e.g. <c>\"text/plain\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Header\">\r\n            <summary>\r\n            The header for the layout format.\r\n            </summary>\r\n            <value>the layout header</value>\r\n            <remarks>\r\n            <para>\r\n            The Header text will be appended before any logging events\r\n            are formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Footer\">\r\n            <summary>\r\n            The footer for the layout format.\r\n            </summary>\r\n            <value>the layout footer</value>\r\n            <remarks>\r\n            <para>\r\n            The Footer text will be appended after all the logging events\r\n            have been formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handle exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_header\">\r\n            <summary>\r\n            The header text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Header\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_footer\">\r\n            <summary>\r\n            The footer text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Footer\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_ignoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handles exceptions\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <c>false</c> if this layout handles exceptions\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.#ctor\">\r\n            <summary>\r\n            Empty default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Empty default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This method must be implemented by the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called by an appender to format\r\n            the <paramref name=\"loggingEvent\"/> as text.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convenience method for easily formatting the logging event into a string variable.\r\n            </summary>\r\n            <param name=\"loggingEvent\"></param>\r\n            <remarks>\r\n            Creates a new StringWriter instance to store the formatted logging event.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.ContentType\">\r\n            <summary>\r\n            The content type output by this layout. \r\n            </summary>\r\n            <value>The content type is <c>\"text/plain\"</c></value>\r\n            <remarks>\r\n            <para>\r\n            The content type output by this layout.\r\n            </para>\r\n            <para>\r\n            This base class uses the value <c>\"text/plain\"</c>.\r\n            To change this value a subclass must override this\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Header\">\r\n            <summary>\r\n            The header for the layout format.\r\n            </summary>\r\n            <value>the layout header</value>\r\n            <remarks>\r\n            <para>\r\n            The Header text will be appended before any logging events\r\n            are formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Footer\">\r\n            <summary>\r\n            The footer for the layout format.\r\n            </summary>\r\n            <value>the layout footer</value>\r\n            <remarks>\r\n            <para>\r\n            The Footer text will be appended after all the logging events\r\n            have been formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handles exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this layout does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Constructs a ExceptionLayout\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> component activation\r\n            framework.\r\n            </para>\r\n            <para>\r\n            This method does nothing as options become effective immediately.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the exception text from the logging event\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Write the exception string to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            The exception string is retrieved from <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.IRawLayout\">\r\n            <summary>\r\n            Interface for raw layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to an object.\r\n            </para>\r\n            <para>\r\n            This interface should not be confused with the\r\n            <see cref=\"T:log4net.Layout.ILayout\"/> interface. This interface is used in\r\n            only certain specialized situations where a raw object is\r\n            required rather than a formatted string. The <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            is not generally useful than this interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.IRawLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the formatted event</returns>\r\n            <remarks>\r\n            <para>\r\n            Implement this method to create your own layout format.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Layout2RawLayoutAdapter\">\r\n            <summary>\r\n            Adapts any <see cref=\"T:log4net.Layout.ILayout\"/> to a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Where an <see cref=\"T:log4net.Layout.IRawLayout\"/> is required this adapter\r\n            allows a <see cref=\"T:log4net.Layout.ILayout\"/> to be specified.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Layout2RawLayoutAdapter.m_layout\">\r\n            <summary>\r\n            The layout to adapt\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Construct a new adapter\r\n            </summary>\r\n            <param name=\"layout\">the layout to adapt</param>\r\n            <remarks>\r\n            <para>\r\n            Create the adapter for the specified <paramref name=\"layout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Format the logging event as an object.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the formatted event</returns>\r\n            <remarks>\r\n            <para>\r\n            Format the logging event as an object.\r\n            </para>\r\n            <para>\r\n            Uses the <see cref=\"T:log4net.Layout.ILayout\"/> object supplied to \r\n            the constructor to perform the formatting.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.PatternLayout\">\r\n            <summary>\r\n            A flexible layout configurable with pattern string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The goal of this class is to <see cref=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as a string. The results\r\n            depend on the <i>conversion pattern</i>.\r\n            </para>\r\n            <para>\r\n            The conversion pattern is closely related to the conversion\r\n            pattern of the printf function in C. A conversion pattern is\r\n            composed of literal text and format control expressions called\r\n            <i>conversion specifiers</i>.\r\n            </para>\r\n            <para>\r\n            <i>You are free to insert any literal text within the conversion\r\n            pattern.</i>\r\n            </para>\r\n            <para>\r\n            Each conversion specifier starts with a percent sign (%) and is\r\n            followed by optional <i>format modifiers</i> and a <i>conversion\r\n            pattern name</i>. The conversion pattern name specifies the type of\r\n            data, e.g. logger, level, date, thread name. The format\r\n            modifiers control such things as field width, padding, left and\r\n            right justification. The following is a simple example.\r\n            </para>\r\n            <para>\r\n            Let the conversion pattern be <b>\"%-5level [%thread]: %message%newline\"</b> and assume\r\n            that the log4net environment was set to use a PatternLayout. Then the\r\n            statements\r\n            </para>\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(typeof(TestApp));\r\n            log.Debug(\"Message 1\");\r\n            log.Warn(\"Message 2\");   \r\n            </code>\r\n            <para>would yield the output</para>\r\n            <code>\r\n            DEBUG [main]: Message 1\r\n            WARN  [main]: Message 2  \r\n            </code>\r\n            <para>\r\n            Note that there is no explicit separator between text and\r\n            conversion specifiers. The pattern parser knows when it has reached\r\n            the end of a conversion specifier when it reads a conversion\r\n            character. In the example above the conversion specifier\r\n            <b>%-5level</b> means the level of the logging event should be left\r\n            justified to a width of five characters.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>a</term>\r\n                    <description>Equivalent to <b>appdomain</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n            \t\t\tUsed to output the friendly name of the AppDomain where the \r\n            \t\t\tlogging event was generated. \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-cache</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all cache items in the case of <b>%aspnet-cache</b> or just one named item if used as <b>%aspnet-cache{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-context</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all context items in the case of <b>%aspnet-context</b> or just one named item if used as <b>%aspnet-context{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-request</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all request parameters in the case of <b>%aspnet-request</b> or just one named param if used as <b>%aspnet-request{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-session</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all session items in the case of <b>%aspnet-session</b> or just one named item if used as <b>%aspnet-session{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>c</term>\r\n                    <description>Equivalent to <b>logger</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>C</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>class</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>d</term>\r\n                    <description>Equivalent to <b>date</b></description>\r\n                </item>\r\n                <item>\r\n            \t\t<term>date</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>exception</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the exception passed in with the log message.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf an exception object is stored in the logging event\r\n            \t\t\tit will be rendered into the pattern output with a\r\n            \t\t\ttrailing newline.\r\n            \t\t\tIf there is no exception then nothing will be output\r\n            \t\t\tand no trailing newline will be appended.\r\n            \t\t\tIt is typical to put a newline before the exception\r\n            \t\t\tand to have the exception as the last data in the pattern.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>F</term>\r\n                    <description>Equivalent to <b>file</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>file</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the file name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>identity</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>l</term>\r\n                    <description>Equivalent to <b>location</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>L</term>\r\n                    <description>Equivalent to <b>line</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>location</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output location information of the caller which generated\r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information depends on the CLI implementation but\r\n            \t\t\tusually consists of the fully qualified name of the calling\r\n            \t\t\tmethod followed by the callers source the file name and line\r\n            \t\t\tnumber between parentheses.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information can be very useful. However, its\r\n            \t\t\tgeneration is <b>extremely</b> slow. Its use should be avoided\r\n            \t\t\tunless execution speed is not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>level</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the level of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>line</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the line number from where the logging request\r\n            \t\t\twas issued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>logger</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the logger of the logging event. The\r\n            \t\t\tlogger conversion specifier can be optionally followed by\r\n            \t\t\t<i>precision specifier</i>, that is a decimal constant in\r\n            \t\t\tbrackets.\r\n                        </para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the logger name will be\r\n            \t\t\tprinted. By default the logger name is printed in full.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the logger name \"a.b.c\" the pattern\r\n            \t\t\t<b>%logger{2}</b> will output \"b.c\".\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>m</term>\r\n                    <description>Equivalent to <b>message</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>M</term>\r\n                    <description>Equivalent to <b>method</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>message</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the application supplied message associated with \r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>mdc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe MDC (old name for the ThreadContext.Properties) is now part of the\r\n            \t\t\tcombined event properties. This pattern is supported for compatibility\r\n            \t\t\tbut is equivalent to <b>property</b>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>method</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the method name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>n</term>\r\n                    <description>Equivalent to <b>newline</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>newline</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ndc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the NDC (nested diagnostic context) associated\r\n            \t\t\twith the thread that generated the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>p</term>\r\n                    <description>Equivalent to <b>level</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>P</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>properties</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>property</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the an event specific property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are added to events by loggers or appenders. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the event properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\t\t\t\tproperties are specific to this event only.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n            \t\t\t\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>r</term>\r\n                    <description>Equivalent to <b>timestamp</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>stacktrace</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktrace{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n            \t\t\ttype3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>stacktracedetail</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktracedetail{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n                        type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>t</term>\r\n                    <description>Equivalent to <b>thread</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>timestamp</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the number of milliseconds elapsed since the start\r\n            \t\t\tof the application until the creation of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>thread</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the name of the thread that generated the\r\n            \t\t\tlogging event. Uses the thread number if no name is available.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>type</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the fully qualified type name of the caller\r\n            \t\t\tissuing the logging request. This conversion specifier\r\n            \t\t\tcan be optionally followed by <i>precision specifier</i>, that\r\n            \t\t\tis a decimal constant in brackets.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the class name will be\r\n            \t\t\tprinted. By default the class name is output in fully qualified form.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the class name \"log4net.Layout.PatternLayout\", the\r\n            \t\t\tpattern <b>%type{1}</b> will output \"PatternLayout\".\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating the caller class information is\r\n            \t\t\tslow. Thus, its use should be avoided unless execution speed is\r\n            \t\t\tnot an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n                </item>\r\n                <item>\r\n                    <term>u</term>\r\n                    <description>Equivalent to <b>identity</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>username</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller WindowsIdentity information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>utcdate</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>w</term>\r\n                    <description>Equivalent to <b>username</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>x</term>\r\n                    <description>Equivalent to <b>ndc</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>X</term>\r\n                    <description>Equivalent to <b>mdc</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            The single letter patterns are deprecated in favor of the \r\n            longer more descriptive pattern names.\r\n            </para>\r\n            <para>\r\n            By default the relevant information is output as is. However,\r\n            with the aid of format modifiers it is possible to change the\r\n            minimum field width, the maximum field width and justification.\r\n            </para>\r\n            <para>\r\n            The optional format modifier is placed between the percent sign\r\n            and the conversion pattern name.\r\n            </para>\r\n            <para>\r\n            The first optional format modifier is the <i>left justification\r\n            flag</i> which is just the minus (-) character. Then comes the\r\n            optional <i>minimum field width</i> modifier. This is a decimal\r\n            constant that represents the minimum number of characters to\r\n            output. If the data item requires fewer characters, it is padded on\r\n            either the left or the right until the minimum width is\r\n            reached. The default is to pad on the left (right justify) but you\r\n            can specify right padding with the left justification flag. The\r\n            padding character is space. If the data item is larger than the\r\n            minimum field width, the field is expanded to accommodate the\r\n            data. The value is never truncated.\r\n            </para>\r\n            <para>\r\n            This behavior can be changed using the <i>maximum field\r\n            width</i> modifier which is designated by a period followed by a\r\n            decimal constant. If the data item is longer than the maximum\r\n            field, then the extra characters are removed from the\r\n            <i>beginning</i> of the data item and not from the end. For\r\n            example, it the maximum field width is eight and the data item is\r\n            ten characters long, then the first two characters of the data item\r\n            are dropped. This behavior deviates from the printf function in C\r\n            where truncation is done from the end.\r\n            </para>\r\n            <para>\r\n            Below are various format modifier examples for the logger\r\n            conversion specifier.\r\n            </para>\r\n            <div class=\"tablediv\">\r\n            \t<table class=\"dtTABLE\" cellspacing=\"0\">\r\n            \t\t<tr>\r\n            \t\t\t<th>Format modifier</th>\r\n            \t\t\t<th>left justify</th>\r\n            \t\t\t<th>minimum width</th>\r\n            \t\t\t<th>maximum width</th>\r\n            \t\t\t<th>comment</th>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%20logger</td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is less than 20\r\n            \t\t\t\tcharacters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger \r\n            \t\t\t\tname is less than 20 characters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%.30logger</td>\r\n            \t\t\t<td align=\"center\">NA</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tTruncate from the beginning if the logger \r\n            \t\t\t\tname is longer than 30 characters.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\"><nobr>%20.30logger</nobr></td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20.30logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t</table>\r\n            </div>\r\n            <para>\r\n            <b>Note about caller location information.</b><br/>\r\n            The following patterns <c>%type %file %line %method %location %class %C %F %L %l %M</c> \r\n            all generate caller location information.\r\n            Location information uses the <c>System.Diagnostics.StackTrace</c> class to generate\r\n            a call stack. The caller's information is then extracted from this stack.\r\n            </para>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \r\n            .NET Compact Framework 1.0 therefore caller location information is not\r\n            available on that framework.\r\n            </para>\r\n            </note>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\r\n            </para>\r\n            <para>\r\n            \"StackTrace information will be most informative with Debug build configurations. \r\n            By default, Debug builds include debug symbols, while Release builds do not. The \r\n            debug symbols contain most of the file, method name, line number, and column \r\n            information used in constructing StackFrame and StackTrace objects. StackTrace \r\n            might not report as many method calls as expected, due to code transformations \r\n            that occur during optimization.\"\r\n            </para>\r\n            <para>\r\n            This means that in a Release build the caller information may be incomplete or may \r\n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            instance using the <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            This is a more detailed pattern.\r\n            <code><b>%timestamp [%thread] %level %logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <example>\r\n            A similar pattern except that the relative time is\r\n            right padded if less than 6 digits, thread name is right padded if\r\n            less than 15 characters and truncated if longer and the logger\r\n            name is left padded if shorter than 30 characters and truncated if\r\n            longer.\r\n            <code><b>%-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DefaultConversionPattern\">\r\n            <summary>\r\n            Default pattern string for log output. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default pattern string for log output. \r\n            Currently set to the string <b>\"%message%newline\"</b> \r\n            which just prints the application supplied message. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\">\r\n            <summary>\r\n            A detailed conversion pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A conversion pattern which includes Time, Thread, Logger, and Nested Context.\r\n            Current value is <b>%timestamp [%thread] %level %logger %ndc - %message%newline</b>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.s_globalRulesRegistry\">\r\n            <summary>\r\n            Internal map of converter identifiers to converter types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This static map is overridden by the m_converterRegistry instance map\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_pattern\">\r\n            <summary>\r\n            the pattern\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_head\">\r\n            <summary>\r\n            the head of the pattern converter chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_instanceRulesRegistry\">\r\n            <summary>\r\n            patterns defined on this PatternLayout only\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#cctor\">\r\n            <summary>\r\n            Initialize the global registry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the builtin global rules.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor\">\r\n            <summary>\r\n            Constructs a PatternLayout using the DefaultConversionPattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default pattern just produces the application supplied message.\r\n            </para>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            As per the <see cref=\"T:log4net.Core.IOptionHandler\"/> contract the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>\r\n            method must be called after the properties on this object have been\r\n            configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternLayout using the supplied conversion pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to use</param>\r\n            <remarks>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            When using this constructor the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method \r\n            need not be called. This may not be the case when using a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the pattern parser instance\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/> that will format the event</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the conversion string. Sets the\r\n            global and instance rules on the <see cref=\"T:log4net.Util.PatternParser\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string as specified by the conversion pattern.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Parse the <see cref=\"T:log4net.Core.LoggingEvent\"/> using the patter format\r\n            specified in the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\r\n            <param name=\"type\">the type of the converter</param>\r\n            <remarks>\r\n            <para>\r\n            Add a named pattern converter to this instance. This\r\n            converter will be used in the formatting of the event.\r\n            This method must be called before <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"type\"/> specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.PatternLayout.ConversionPattern\">\r\n            <summary>\r\n            The pattern formatting string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <b>ConversionPattern</b> option. This is the string which\r\n            controls formatting and consists of a mix of literal content and\r\n            conversion specifiers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawLayoutConverter\">\r\n            <summary>\r\n            Type converter for the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to convert objects to the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface.\r\n            Supports converting from the <see cref=\"T:log4net.Layout.ILayout\"/> interface to\r\n            the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface using the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertFrom\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from arbitrary types\r\n            to a single target type. See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the <paramref name=\"sourceType\"/> can be converted to the\r\n            type supported by this converter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the source object to the type supported by this object\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the <paramref name=\"source\"/> to the type supported\r\n            by this converter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the sourceType be converted to an <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <param name=\"sourceType\">the source to be to be converted</param>\r\n            <returns><c>true</c> if the source type can be converted to <see cref=\"T:log4net.Layout.IRawLayout\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the <paramref name=\"sourceType\"/> can be converted to a\r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/>. Only <see cref=\"T:log4net.Layout.ILayout\"/> is supported\r\n            as the <paramref name=\"sourceType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the value to a <see cref=\"T:log4net.Layout.IRawLayout\"/> object\r\n            </summary>\r\n            <param name=\"source\">the value to convert</param>\r\n            <returns>the <see cref=\"T:log4net.Layout.IRawLayout\"/> object</returns>\r\n            <remarks>\r\n            <para>\r\n            Convert the <paramref name=\"source\"/> object to a \r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/> object. If the <paramref name=\"source\"/> object\r\n            is a <see cref=\"T:log4net.Layout.ILayout\"/> then the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>\r\n            is used to adapt between the two interfaces, otherwise an\r\n            exception is thrown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawPropertyLayout\">\r\n            <summary>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.#ctor\">\r\n            <summary>\r\n            Constructs a RawPropertyLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Lookup the property for <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns property value</returns>\r\n            <remarks>\r\n            <para>\r\n            Looks up and returns the object value of the property\r\n            named <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>. If there is no property defined\r\n            with than name then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.RawPropertyLayout.Key\">\r\n            <summary>\r\n            The name of the value to lookup in the LoggingEvent Properties collection.\r\n            </summary>\r\n            <value>\r\n            Value to lookup in the LoggingEvent Properties collection\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            String name of the property to lookup in the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.#ctor\">\r\n            <summary>\r\n            Constructs a RawTimeStampLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in local time. To format the time stamp\r\n            in universal time use <see cref=\"T:log4net.Layout.RawUtcTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawUtcTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.#ctor\">\r\n            <summary>\r\n            Constructs a RawUtcTimeStampLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in universal time. To format the time stamp\r\n            in local time use <see cref=\"T:log4net.Layout.RawTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.SimpleLayout\">\r\n            <summary>\r\n            A very simple layout\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            SimpleLayout consists of the level of the log statement,\r\n            followed by \" - \" and then the log message itself. For example,\r\n            <code>\r\n            DEBUG - Hello world\r\n            </code>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.#ctor\">\r\n            <summary>\r\n            Constructs a SimpleLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a simple formatted output.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Formats the event as the level of the even,\r\n            followed by \" - \" and then the log message itself. The\r\n            output is terminated by a newline.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayout\">\r\n             <summary>\r\n             Layout that formats the log events as XML elements.\r\n             </summary>\r\n             <remarks>\r\n             <para>\r\n             The output of the <see cref=\"T:log4net.Layout.XmlLayout\"/> consists of a series of \r\n             log4net:event elements. It does not output a complete well-formed XML \r\n             file. The output is designed to be included as an <em>external entity</em>\r\n             in a separate file to form a correct XML file.\r\n             </para>\r\n             <para>\r\n             For example, if <c>abc</c> is the name of the file where\r\n             the <see cref=\"T:log4net.Layout.XmlLayout\"/> output goes, then a well-formed XML file would \r\n             be:\r\n             </para>\r\n             <code lang=\"XML\">\r\n             &lt;?xml version=\"1.0\" ?&gt;\r\n             \r\n             &lt;!DOCTYPE log4net:events SYSTEM \"log4net-events.dtd\" [&lt;!ENTITY data SYSTEM \"abc\"&gt;]&gt;\r\n            \r\n             &lt;log4net:events version=\"1.2\" xmlns:log4net=\"http://logging.apache.org/log4net/schemas/log4net-events-1.2&gt;\r\n                 &amp;data;\r\n             &lt;/log4net:events&gt;\r\n             </code>\r\n             <para>\r\n             This approach enforces the independence of the <see cref=\"T:log4net.Layout.XmlLayout\"/> \r\n             and the appender where it is embedded.\r\n             </para>\r\n             <para>\r\n             The <c>version</c> attribute helps components to correctly\r\n             interpret output generated by <see cref=\"T:log4net.Layout.XmlLayout\"/>. The value of \r\n             this attribute should be \"1.2\" for release 1.2 and later.\r\n             </para>\r\n             <para>\r\n             Alternatively the <c>Header</c> and <c>Footer</c> properties can be\r\n             configured to output the correct XML header, open tag and close tag.\r\n             When setting the <c>Header</c> and <c>Footer</c> properties it is essential\r\n             that the underlying data store not be appendable otherwise the data\r\n             will become invalid XML.\r\n             </para>\r\n             </remarks>\r\n             <author>Nicko Cadell</author>\r\n             <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutBase\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract class that must be subclassed by an implementation \r\n            to conform to a specific schema.\r\n            </para>\r\n            <para>\r\n            Deriving classes must implement the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor\">\r\n            <summary>\r\n            Protected constructor to support subclasses\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.XmlLayoutBase\"/> class\r\n            with no location info.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Protected constructor to support subclasses\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"locationInfo\" /> parameter determines whether \r\n            location information will be output by the layout. If \r\n            <paramref name=\"locationInfo\" /> is set to <c>true</c>, then the \r\n            file name and line number of the statement at the origin of the log \r\n            statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an SMTPAppender\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:log4net.Core.LoggingEvent\"/> and write it to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This method creates an <see cref=\"T:System.Xml.XmlTextWriter\"/> that writes to the\r\n            <paramref name=\"writer\"/>. The <see cref=\"T:System.Xml.XmlTextWriter\"/> is passed \r\n            to the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method. Subclasses should override the\r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method rather than this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Subclasses should override this method to format\r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> as XML.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_locationInfo\">\r\n            <summary>\r\n            Flag to indicate if location information should be included in\r\n            the XML events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_invalidCharReplacement\">\r\n            <summary>\r\n            The string to replace invalid chars with\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\">\r\n            <summary>\r\n            Gets a value indicating whether to include location information in \r\n            the XML events.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if location information should be included in the XML \r\n            events; otherwise, <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If <see cref=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\"/> is set to <c>true</c>, then the file \r\n            name and line number of the statement at the origin of the log \r\n            statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an <c>SMTPAppender</c>\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\">\r\n            <summary>\r\n            The string to replace characters that can not be expressed in XML with.\r\n            <remarks>\r\n            <para>\r\n            Not all characters may be expressed in XML. This property contains the\r\n            string to replace those that can not with. This defaults to a ?. Set it\r\n            to the empty string to simply remove offending characters. For more\r\n            details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets\r\n            Character replacement will occur in  the log message, the property names \r\n            and the property values.\r\n            </para>\r\n            </remarks>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.ContentType\">\r\n            <summary>\r\n            Gets the content type output by this layout. \r\n            </summary>\r\n            <value>\r\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor\">\r\n            <summary>\r\n            Constructs an XmlLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Constructs an XmlLayout.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <b>LocationInfo</b> option takes a boolean value. By\r\n            default, it is set to false which means there will be no location\r\n            information output by this layout. If the the option is set to\r\n            true, then the file name and line number of the statement\r\n            at the origin of the log statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an SmtpAppender\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Builds a cache of the element names\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Override the base class <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method\r\n            to write the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the <see cref=\"T:System.Xml.XmlWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayout.m_prefix\">\r\n            <summary>\r\n            The prefix to use for all generated element names\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Prefix\">\r\n            <summary>\r\n            The prefix to use for all element names\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default prefix is <b>log4net</b>. Set this property\r\n            to change the prefix. If the prefix is set to an empty string\r\n            then no prefix will be written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeMessage\">\r\n            <summary>\r\n            Set whether or not to base64 encode the message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the log message will be written as text to the xml\r\n            output. This can cause problems when the message contains binary\r\n            data. By setting this to true the contents of the message will be\r\n            base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the log message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeProperties\">\r\n            <summary>\r\n            Set whether or not to base64 encode the property values.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the properties will be written as text to the xml\r\n            output. This can cause problems when one or more properties contain\r\n            binary data. By setting this to true the values of the properties\r\n            will be base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the property values.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutSchemaLog4j\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements compatible with the log4j schema\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the log events according to the http://logging.apache.org/log4j schema.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutSchemaLog4j.s_date1970\">\r\n            <summary>\r\n            The 1st of January 1970 in UTC\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor\">\r\n            <summary>\r\n            Constructs an XMLLayoutSchemaLog4j\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Constructs an XMLLayoutSchemaLog4j.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <b>LocationInfo</b> option takes a boolean value. By\r\n            default, it is set to false which means there will be no location\r\n            information output by this layout. If the the option is set to\r\n            true, then the file name and line number of the statement\r\n            at the origin of the log statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an SMTPAppender\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Actually do the writing of the xml\r\n            </summary>\r\n            <param name=\"writer\">the writer to use</param>\r\n            <param name=\"loggingEvent\">the event to write</param>\r\n            <remarks>\r\n            <para>\r\n            Generate XML that is compatible with the log4j schema.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutSchemaLog4j.Version\">\r\n            <summary>\r\n            The version of the log4j schema to use.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Only version 1.2 of the log4j schema is supported.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.DefaultRenderer\">\r\n            <summary>\r\n            The default object Renderer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default renderer supports rendering objects and collections to strings.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\"/> method for details of the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.IObjectRenderer\">\r\n            <summary>\r\n            Implement this interface in order to render objects as strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Certain types require special case conversion to\r\n            string form. This conversion is done by an object renderer.\r\n            Object renderers implement the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.IObjectRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a \r\n            string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            <para>\r\n            The default renderer supports rendering objects to strings as follows:\r\n            </para>\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Rendered String</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term><c>null</c></term>\r\n            \t\t<description>\r\n            \t\t<para>\"(null)\"</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Array\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tFor a one dimensional array this is the\r\n            \t\tarray type name, an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace. \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>int[] {1, 2, 3}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tIf the array is not one dimensional the \r\n            \t\t<c>Array.ToString()</c> is returned.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.IEnumerable\"/>, <see cref=\"T:System.Collections.ICollection\"/> &amp; <see cref=\"T:System.Collections.IEnumerator\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>{a, b, c}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tAll collection classes that implement <see cref=\"T:System.Collections.ICollection\"/> its subclasses, \r\n            \t\tor generic equivalents all implement the <see cref=\"T:System.Collections.IEnumerable\"/> interface.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.DictionaryEntry\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as the key, an equals sign ('='), and the value (using the appropriate\r\n            \t\trenderer). \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>key=value</c>.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\t<para><c>Object.ToString()</c></para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderArray(log4net.ObjectRenderer.RendererMap,System.Array,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the array argument into a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"array\">the array to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            For a one dimensional array this is the\r\n            array type name, an open brace, followed by a comma\r\n            separated list of the elements (using the appropriate\r\n            renderer), followed by a close brace. For example:\r\n            <c>int[] {1, 2, 3}</c>.\r\n            </para>\r\n            <para>\r\n            If the array is not one dimensional the \r\n            <c>Array.ToString()</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderEnumerator(log4net.ObjectRenderer.RendererMap,System.Collections.IEnumerator,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the enumerator argument into a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"enumerator\">the enumerator to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Rendered as an open brace, followed by a comma\r\n            separated list of the elements (using the appropriate\r\n            renderer), followed by a close brace. For example:\r\n            <c>{a, b, c}</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderDictionaryEntry(log4net.ObjectRenderer.RendererMap,System.Collections.DictionaryEntry,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the DictionaryEntry argument into a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"entry\">the DictionaryEntry to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the key, an equals sign ('='), and the value (using the appropriate\r\n            renderer). For example: <c>key=value</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.RendererMap\">\r\n            <summary>\r\n            Map class objects to an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a mapping between types that require special\r\n            rendering and the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> that\r\n            is used to render them.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/> method is used to render an\r\n            <c>object</c> using the appropriate renderers defined in this map.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <returns>the object rendered as a string</returns>\r\n            <remarks>\r\n            <para>\r\n            This is a convenience method used to render an object to a string.\r\n            The alternative method <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            should be used when streaming output to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Find the appropriate renderer for the type of the\r\n            <paramref name=\"obj\"/> parameter. This is accomplished by calling the\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> method. Once a renderer is found, it is\r\n            applied on the object <paramref name=\"obj\"/> and the result is returned\r\n            as a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Object)\">\r\n            <summary>\r\n            Gets the renderer for the specified object type\r\n            </summary>\r\n            <param name=\"obj\">the object to lookup the renderer for</param>\r\n            <returns>the renderer for <paramref name=\"obj\"/></returns>\r\n            <remarks>\r\n            <param>\r\n            Gets the renderer for the specified object type.\r\n            </param>\r\n            <param>\r\n            Syntactic sugar method that calls <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> \r\n            with the type of the object parameter.\r\n            </param>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\">\r\n            <summary>\r\n            Gets the renderer for the specified type\r\n            </summary>\r\n            <param name=\"type\">the type to lookup the renderer for</param>\r\n            <returns>the renderer for the specified type</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the renderer for the specified type.\r\n            If no specific renderer has been defined the\r\n            <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.SearchTypeAndInterfaces(System.Type)\">\r\n            <summary>\r\n            Internal function to recursively search interfaces\r\n            </summary>\r\n            <param name=\"type\">the type to lookup the renderer for</param>\r\n            <returns>the renderer for the specified type</returns>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Clear\">\r\n            <summary>\r\n            Clear the map of renderers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the custom renderers defined by using\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\"/>. The <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/>\r\n            cannot be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\r\n            Register an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> for <paramref name=\"typeToRender\"/>. \r\n            </summary>\r\n            <param name=\"typeToRender\">the type that will be rendered by <paramref name=\"renderer\"/></param>\r\n            <param name=\"renderer\">the renderer for <paramref name=\"typeToRender\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Register an object renderer for a specific source type.\r\n            This renderer will be returned from a call to <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/>\r\n            specifying the same <paramref name=\"typeToRender\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\">\r\n            <summary>\r\n            Get the default renderer instance\r\n            </summary>\r\n            <value>the default renderer</value>\r\n            <remarks>\r\n            <para>\r\n            Get the default renderer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPlugin\">\r\n            <summary>\r\n            Interface implemented by logger repository plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Plugins define additional behavior that can be associated\r\n            with a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The <see cref=\"T:log4net.Plugin.PluginMap\"/> held by the <see cref=\"P:log4net.Repository.ILoggerRepository.PluginMap\"/>\r\n            property is used to store the plugins for a repository.\r\n            </para>\r\n            <para>\r\n            The <c>log4net.Config.PluginAttribute</c> can be used to\r\n            attach plugins to repositories created using configuration\r\n            attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches the plugin to the specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Shutdown\">\r\n            <summary>\r\n            Is called when the plugin is to shutdown.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called to notify the plugin that \r\n            it should stop operating and should detach from\r\n            the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.IPlugin.Name\">\r\n            <summary>\r\n            Gets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ReadOnly(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Creates a read-only wrapper for a <c>PluginCollection</c> instance.\r\n            </summary>\r\n            <param name=\"list\">list to create a readonly wrapper arround</param>\r\n            <returns>\r\n            A <c>PluginCollection</c> wrapper that is read-only.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that is empty and has the default initial capacity.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Int32)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that has the specified initial capacity.\r\n            </summary>\r\n            <param name=\"capacity\">\r\n            The number of elements that the new <c>PluginCollection</c> is initially capable of storing.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"c\">The <c>PluginCollection</c> whose elements are copied to the new collection.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection.Tag)\">\r\n            <summary>\r\n            Allow subclasses to avoid our default constructors\r\n            </summary>\r\n            <param name=\"tag\"></param>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the end of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clear\">\r\n            <summary>\r\n            Removes all elements from the <c>PluginCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Plugin.PluginCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Contains(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Plugin.IPlugin\"/> is in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>PluginCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IndexOf(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to locate in the <c>PluginCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>PluginCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Insert(System.Int32,log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Inserts an element into the <c>PluginCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Plugin.IPlugin\"/> from the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the <c>PluginCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Plugin.IPlugin\"/> was not found in the <c>PluginCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>PluginCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Plugin.PluginCollection.Enumerator\"/> for the entire <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>PluginCollection</c> to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>PluginCollection</c> whose elements should be added to the end of the current <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> array to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> collection to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.TrimToSize\">\r\n            <summary>\r\n            Sets the capacity to the actual number of elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements actually contained in the <c>PluginCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\r\n            </summary>\r\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the collection.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the collection.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </value>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the collection has a fixed size.\r\n            </summary>\r\n            <value><c>true</c> if the collection has a fixed size; otherwise, <c>false</c>. The default is <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the IList is read-only.\r\n            </summary>\r\n            <value><c>true</c> if the collection is read-only; otherwise, <c>false</c>. The default is <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Capacity\">\r\n            <summary>\r\n            Gets or sets the number of elements the <c>PluginCollection</c> can contain.\r\n            </summary>\r\n            <value>\r\n            The number of elements the <c>PluginCollection</c> can contain.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Tag\">\r\n            <summary>\r\n            Type visible only to our subclasses\r\n            Used to access protected constructor\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginCollection.Tag.Default\">\r\n            <summary>\r\n            A value\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>Enumerator</c> class.\r\n            </summary>\r\n            <param name=\"tc\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Enumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n            <value>\r\n            The current element in the collection.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.ReadOnlyPluginCollection\">\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginMap\">\r\n            <summary>\r\n            Map of repository plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class is a name keyed map of the plugins that are\r\n            attached to a repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository that the plugins should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Plugin.PluginMap\"/> class with a \r\n            repository that the plugins should be attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to add to the map.</param>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> will be attached to the repository when added.\r\n            </para>\r\n            <para>\r\n            If there already exists a plugin with the same name \r\n            attached to the repository then the old plugin will\r\n            be <see cref=\"M:log4net.Plugin.IPlugin.Shutdown\"/> and replaced with\r\n            the new plugin.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes a <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the map.</param>\r\n            <remarks>\r\n            <para>\r\n            Remove a specific plugin from this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.Item(System.String)\">\r\n            <summary>\r\n            Gets a <see cref=\"T:log4net.Plugin.IPlugin\"/> by name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Plugin.IPlugin\"/> to lookup.</param>\r\n            <returns>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map with the name specified, or \r\n            <c>null</c> if no plugin is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a plugin by name. If the plugin is not found <c>null</c>\r\n            will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.AllPlugins\">\r\n            <summary>\r\n            Gets all possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <value>All possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.</value>\r\n            <remarks>\r\n            <para>\r\n            Get a collection of all the plugins defined in this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginSkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            interface. This base class can be used by implementors\r\n            of the <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"name\">the name of the plugin</param>\r\n            <remarks>\r\n            Initializes a new Plugin with the specified name.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Shutdown\">\r\n            <summary>\r\n            Is called when the plugin is to shutdown.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called to notify the plugin that \r\n            it should stop operating and should detach from\r\n            the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_name\">\r\n            <summary>\r\n            The name of this plugin.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_repository\">\r\n            <summary>\r\n            The repository this plugin is attached to.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.Name\">\r\n            <summary>\r\n            Gets or sets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            <para>\r\n            The name of the plugin must not change one the \r\n            plugin has been attached to a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.LoggerRepository\">\r\n            <summary>\r\n            The repository for this plugin\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is attached to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is \r\n            attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin\">\r\n            <summary>\r\n            Plugin that listens for events from the <see cref=\"T:log4net.Appender.RemotingAppender\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This plugin publishes an instance of <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/> \r\n            on a specified <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/>. This listens for logging events delivered from\r\n            a remote <see cref=\"T:log4net.Appender.RemotingAppender\"/>.\r\n            </para>\r\n            <para>\r\n            When an event is received it is relogged within the attached repository\r\n            as if it had been raised locally.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> property must be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor(System.String)\">\r\n            <summary>\r\n            Construct with sink Uri.\r\n            </summary>\r\n            <param name=\"sinkUri\">The name to publish the sink under in the remoting infrastructure. \r\n            See <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> for more details.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class\r\n            with specified name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Shutdown\">\r\n            <summary>\r\n            Is called when the plugin is to shutdown.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            When the plugin is shutdown the remote logging\r\n            sink is disconnected.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RemoteLoggingServerPlugin class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\">\r\n            <summary>\r\n            Gets or sets the URI of this sink.\r\n            </summary>\r\n            <value>\r\n            The URI of this sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the name under which the object is marshaled.\r\n            <see cref=\"M:System.Runtime.Remoting.RemotingServices.Marshal(System.MarshalByRefObject,System.String,System.Type)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\">\r\n            <summary>\r\n            Delivers <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to listen for logging events\r\n            and deliver them to the local repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository to log to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\"/> for the\r\n            specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Logs the events to the repository.\r\n            </summary>\r\n            <param name=\"events\">The events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            The events passed are logged to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.InitializeLifetimeService\">\r\n            <summary>\r\n            Obtains a lifetime service object to control the lifetime \r\n            policy for this instance.\r\n            </summary>\r\n            <returns><c>null</c> to indicate that this instance should live forever.</returns>\r\n            <remarks>\r\n            <para>\r\n            Obtains a lifetime service object to control the lifetime \r\n            policy for this instance. This object should live forever\r\n            therefore this implementation returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.m_repository\">\r\n            <summary>\r\n            The underlying <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that events should\r\n            be logged to.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This default implementation of the <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            interface is used to create the default subclass\r\n            of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ILoggerFactory\">\r\n            <summary>\r\n            Interface abstracts creation of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to \r\n            create new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> objects.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\"/> method is called\r\n            to create a named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            <para>\r\n            Implement this interface to create new subclasses of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\">\r\n            <summary>\r\n            Default internal subclass of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This subclass has no additional behavior over the\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class but does allow instances\r\n            to be created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Logger\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.Core.ILogger\"/> used by <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to provide implementation of <see cref=\"T:log4net.Core.ILogger\"/>\r\n            interface. Applications should use <see cref=\"T:log4net.LogManager\"/> to get\r\n            logger instances.\r\n            </para>\r\n            <para>\r\n            This is one of the central classes in the log4net implementation. One of the\r\n            distinctive features of log4net are hierarchical loggers and their\r\n            evaluation. The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> organizes the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            instances into a rooted tree hierarchy.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class is abstract. Only concrete subclasses of\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> can be created. The <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            is used to create instances of this type for the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.#ctor(System.String)\">\r\n            <summary>\r\n            This constructor created a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance and\r\n            sets its name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is protected and designed to be used by\r\n            a subclass that is not abstract.\r\n            </para>\r\n            <para>\r\n            Loggers are constructed by <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> \r\n            objects. See <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> for the default\r\n            logger creator.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\r\n            Logger instance.\r\n            </summary>\r\n            <param name=\"newAppender\">An appender to add to this logger</param>\r\n            <remarks>\r\n            <para>\r\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\r\n            Logger instance.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"newAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.GetAppender(System.String)\">\r\n            <summary>\r\n            Look for the appender named as <c>name</c>\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to lookup</param>\r\n            <returns>The appender with the name specified, or <c>null</c>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the named appender, or null if the appender is not found.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAllAppenders\">\r\n            <summary>\r\n            Remove all previously added appenders from this Logger instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Remove all previously added appenders from this Logger instance.\r\n            </para>\r\n            <para>\r\n            This is useful when re-reading configuration information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the named appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            This generic form is intended to be used by wrappers.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Generate a logging event for the specified <paramref name=\"level\"/> using\r\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This is the most generic printing method that is intended to be used \r\n            by wrappers.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs the specified logging event through this logger.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CallAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Deliver the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Call the appenders in the hierarchy starting at\r\n            <c>this</c>. If no appenders could be found, emit a\r\n            warning.\r\n            </para>\r\n            <para>\r\n            This method calls all the appenders inherited from the\r\n            hierarchy circumventing any evaluation of whether to log or not\r\n            to log the particular log request.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CloseNestedAppenders\">\r\n            <summary>\r\n            Closes all attached appenders implementing the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to ensure that the appenders are correctly shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            This is the most generic printing method. This generic form is intended to be used by wrappers\r\n            </summary>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Generate a logging event for the specified <paramref name=\"level\"/> using\r\n            the <paramref name=\"message\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            Creates a new logging event and logs the event without further checks.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Generates a logging event and delivers it to the attached\r\n            appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Creates a new logging event and logs the event without further checks.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers the logging event to the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the Logger class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_name\">\r\n            <summary>\r\n            The name of this logger.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_level\">\r\n            <summary>\r\n            The assigned level of this logger. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>level</c> variable need not be \r\n            assigned a value in which case it is inherited \r\n            form the hierarchy.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_parent\">\r\n            <summary>\r\n            The parent of this logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The parent of this logger. \r\n            All loggers have at least one ancestor which is the root logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_hierarchy\">\r\n            <summary>\r\n            Loggers need to know what Hierarchy they are in.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Loggers need to know what Hierarchy they are in.\r\n            The hierarchy that this logger is a member of is stored\r\n            here.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Helper implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_additive\">\r\n            <summary>\r\n            Flag indicating if child loggers inherit their parents appenders\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Additivity is set to true by default, that is children inherit\r\n            the appenders of their ancestors by default. If this variable is\r\n            set to <c>false</c> then the appenders found in the\r\n            ancestors of this logger are not used. However, the children\r\n            of this logger will inherit its appenders, unless the children\r\n            have their additivity flag set to <c>false</c> too. See\r\n            the user manual for more details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderLock\">\r\n            <summary>\r\n            Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Parent\">\r\n            <summary>\r\n            Gets or sets the parent logger in the hierarchy.\r\n            </summary>\r\n            <value>\r\n            The parent logger in the hierarchy.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Part of the Composite pattern that makes the hierarchy.\r\n            The hierarchy is parent linked rather than child linked.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Additivity\">\r\n            <summary>\r\n            Gets or sets a value indicating if child loggers inherit their parent's appenders.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if child loggers inherit their parent's appenders.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Additivity is set to <c>true</c> by default, that is children inherit\r\n            the appenders of their ancestors by default. If this variable is\r\n            set to <c>false</c> then the appenders found in the\r\n            ancestors of this logger are not used. However, the children\r\n            of this logger will inherit its appenders, unless the children\r\n            have their additivity flag set to <c>false</c> too. See\r\n            the user manual for more details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.EffectiveLevel\">\r\n            <summary>\r\n            Gets the effective level for this logger.\r\n            </summary>\r\n            <returns>The nearest level in the logger hierarchy.</returns>\r\n            <remarks>\r\n            <para>\r\n            Starting from this logger, searches the logger hierarchy for a\r\n            non-null level and returns it. Otherwise, returns the level of the\r\n            root logger.\r\n            </para>\r\n            <para>The Logger class is designed so that this method executes as\r\n            quickly as possible.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>The hierarchy that this logger belongs to.</value>\r\n            <remarks>\r\n            <para>\r\n            This logger must be attached to a single <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>, if any, for this Logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> of this logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> can be <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Appenders\">\r\n            <summary>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <returns>A collection of the appenders in this logger</returns>\r\n            <remarks>\r\n            <para>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>. If no appenders \r\n            can be found, then a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Name\">\r\n            <summary>\r\n            Gets the logger name.\r\n            </summary>\r\n            <value>\r\n            The name of the logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this logger\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl.#ctor(System.String)\">\r\n            <summary>\r\n            Construct a new Logger\r\n            </summary>\r\n            <param name=\"name\">the name of the logger</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\"/> class\r\n            with the specified name. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger creation event notifications.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> in which the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> has been created.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event args that hold the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event is raised every time a\r\n            <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.LoggerCreationEventArgs.m_log\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerCreationEventArgs.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"log\">The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event argument \r\n            class,with the specified <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy\">\r\n            <summary>\r\n            Hierarchical organization of loggers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <i>The casual user should not have to deal with this class\r\n            directly.</i>\r\n            </para>\r\n            <para>\r\n            This class is specialized in retrieving loggers by name and\r\n            also maintaining the logger hierarchy. Implements the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            The structure of the logger hierarchy is maintained by the\r\n            <see cref=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\"/> method. The hierarchy is such that children\r\n            link to their parent but parents do not have any references to their\r\n            children. Moreover, loggers can be instantiated in any order, in\r\n            particular descendant before ancestor.\r\n            </para>\r\n            <para>\r\n            In case a descendant is created before a particular ancestor,\r\n            then it creates a provision node for the ancestor and adds itself\r\n            to the provision node. Other descendants of the same ancestor add\r\n            themselves to the previously created provision node.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositorySkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            Skeleton implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            All <see cref=\"T:log4net.Repository.ILoggerRepository\"/> types can extend this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.ILoggerRepository\">\r\n            <summary>\r\n            Interface implemented by logger repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is implemented by logger repositories. e.g. \r\n            <see cref=\"N:log4net.Repository.Hierarchy\"/>.\r\n            </para>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.LogManager\"/>\r\n            to obtain <see cref=\"T:log4net.ILog\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Exists(System.String)\">\r\n            <summary>\r\n            Check if the named logger exists in the repository. If so return\r\n            its reference, otherwise returns <c>null</c>.\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to lookup</param>\r\n            <returns>The Logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            If the names logger exists it is returned, otherwise\r\n            <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetCurrentLoggers\">\r\n            <summary>\r\n            Returns all the currently defined loggers as an Array.\r\n            </summary>\r\n            <returns>All the defined loggers</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the currently defined loggers as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetLogger(System.String)\">\r\n            <summary>\r\n            Returns a named logger instance\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <returns>The logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a named logger instance.\r\n            </para>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned.  Otherwise, a new logger will be instantiated and\r\n            then linked with its existing ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Shutdown\">\r\n            <summary>Shutdown the repository</summary>\r\n            <remarks>\r\n            <para>\r\n            Shutting down a repository will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the\r\n            application exists. Otherwise, pending logging events might be\r\n            lost.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.ILoggerRepository.Shutdown\"/> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.ResetConfiguration\">\r\n            <summary>\r\n            Reset the repositories configuration to a default state\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this instance to their\r\n            default state.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the <see cref=\"T:log4net.Core.LoggingEvent\"/> through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </summary>\r\n            <returns>All the Appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Name\">\r\n            <summary>\r\n            The name of the repository\r\n            </summary>\r\n            <value>\r\n            The name of the repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Threshold\">\r\n            <summary>\r\n            The threshold for all events in this repository\r\n            </summary>\r\n            <value>\r\n            The threshold for all events in this repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The threshold for all events in this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Configured\">\r\n            <summary>\r\n            Flag indicates if this repository has been configured.\r\n            </summary>\r\n            <value>\r\n            Flag indicates if this repository has been configured.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Flag indicates if this repository has been configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.ConfigurationMessages\">\r\n            <summary>\r\n            Collection of internal messages captured during the most \r\n            recent configuration process.\r\n            </summary>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\">\r\n            <summary>\r\n            Event to notify that the repository has been shutdown.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has been shutdown.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository has been shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationReset\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been\r\n            reset to default.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been changed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Properties\">\r\n            <summary>\r\n            Repository specific properties\r\n            </summary>\r\n            <value>\r\n            Repository specific properties\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            These properties can be specified on a repository specific basis.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes the repository with default (empty) properties.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Construct the repository using specific properties\r\n            </summary>\r\n            <param name=\"properties\">the properties to set for this repository</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the repository with specified properties.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Exists(System.String)\">\r\n            <summary>\r\n            Test if logger exists\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to lookup</param>\r\n            <returns>The Logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Check if the named logger exists in the repository. If so return\r\n            its reference, otherwise returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetCurrentLoggers\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the repository\r\n            </summary>\r\n            <returns>All the defined loggers</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the currently defined loggers in the repository as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetLogger(System.String)\">\r\n            <summary>\r\n            Return a new logger instance\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <returns>The logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Return a new logger instance.\r\n            </para>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned. Otherwise, a new logger will be instantiated and\r\n            then linked with its existing ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Shutdown\">\r\n            <summary>\r\n            Shutdown the repository\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Shutdown the repository. Can be overridden in a subclass.\r\n            This base class implementation notifies the <see cref=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\"/>\r\n            listeners and all attached plugins of the shutdown event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.ResetConfiguration\">\r\n            <summary>\r\n            Reset the repositories configuration to a default state\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this instance to their\r\n            default state.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </summary>\r\n            <returns>All the Appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.LoggerRepositorySkeleton.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LoggerRepositorySkeleton class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.AddRenderer(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\r\n            Adds an object renderer for a specific class. \r\n            </summary>\r\n            <param name=\"typeToRender\">The type that will be rendered by the renderer supplied.</param>\r\n            <param name=\"rendererInstance\">The object renderer used to render the object.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds an object renderer for a specific class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnShutdown(System.EventArgs)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository is shutting down\r\n            </summary>\r\n            <param name=\"e\">Empty EventArgs</param>\r\n            <remarks>\r\n            <para>\r\n            Notify any listeners that this repository is shutting down.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationReset(System.EventArgs)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has had its configuration reset\r\n            </summary>\r\n            <param name=\"e\">Empty EventArgs</param>\r\n            <remarks>\r\n            <para>\r\n            Notify any listeners that this repository's configuration has been reset.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationChanged(System.EventArgs)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has had its configuration changed\r\n            </summary>\r\n            <param name=\"e\">Empty EventArgs</param>\r\n            <remarks>\r\n            <para>\r\n            Notify any listeners that this repository's configuration has changed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.RaiseConfigurationChanged(System.EventArgs)\">\r\n            <summary>\r\n            Raise a configuration changed event on this repository\r\n            </summary>\r\n            <param name=\"e\">EventArgs.Empty</param>\r\n            <remarks>\r\n            <para>\r\n            Applications that programmatically change the configuration of the repository should\r\n            raise this event notification to notify listeners.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Name\">\r\n            <summary>\r\n            The name of the repository\r\n            </summary>\r\n            <value>\r\n            The string name of the repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this repository. The name is\r\n            used to store and lookup the repositories \r\n            stored by the <see cref=\"T:log4net.Core.IRepositorySelector\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Threshold\">\r\n            <summary>\r\n            The threshold for all events in this repository\r\n            </summary>\r\n            <value>\r\n            The threshold for all events in this repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The threshold for all events in this repository\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Configured\">\r\n            <summary>\r\n            Flag indicates if this repository has been configured.\r\n            </summary>\r\n            <value>\r\n            Flag indicates if this repository has been configured.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Flag indicates if this repository has been configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.ConfigurationMessages\">\r\n            <summary>\r\n            Contains a list of internal messages captures during the \r\n            last configuration.\r\n            </summary>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\">\r\n            <summary>\r\n            Event to notify that the repository has been shutdown.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has been shutdown.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository has been shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationReset\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been\r\n            reset to default.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationChanged\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been changed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Properties\">\r\n            <summary>\r\n            Repository specific properties\r\n            </summary>\r\n            <value>\r\n            Repository specific properties\r\n            </value>\r\n            <remarks>\r\n            These properties can be specified on a repository specific basis\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.IBasicRepositoryConfigurator\">\r\n            <summary>\r\n            Basic Configurator interface for repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by basic configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            with a default <see cref=\"T:log4net.Appender.IAppender\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.BasicConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initialize the repository using the specified appender\r\n            </summary>\r\n            <param name=\"appender\">the appender to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository to route all logging events to the\r\n            specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the repository using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository to route all logging events to the\r\n            specified appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.IXmlRepositoryConfigurator\">\r\n            <summary>\r\n            Configure repository using XML\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by Xml configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IXmlRepositoryConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the repository using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n            <remarks>\r\n            <para>\r\n            The schema for the XML configuration data is defined by\r\n            the implementation.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Construct with properties\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with a logger factory\r\n            </summary>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with properties and a logger factory\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Exists(System.String)\">\r\n            <summary>\r\n            Test if a logger exists\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to lookup</param>\r\n            <returns>The Logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Check if the named logger exists in the hierarchy. If so return\r\n            its reference, otherwise returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetCurrentLoggers\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the hierarchy as an Array\r\n            </summary>\r\n            <returns>All the defined loggers</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the currently defined loggers in the hierarchy as an Array.\r\n            The root logger is <b>not</b> included in the returned\r\n            enumeration.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\">\r\n            <summary>\r\n            Return a new logger instance named as the first parameter using\r\n            the default factory.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Return a new logger instance named as the first parameter using\r\n            the default factory.\r\n            </para>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned.  Otherwise, a new logger will be instantiated and\r\n            then linked with its existing ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <returns>The logger object with the name specified</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Shutdown\">\r\n            <summary>\r\n            Shutting down a hierarchy will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Shutting down a hierarchy will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the\r\n            application exists. Otherwise, pending logging events might be\r\n            lost.\r\n            </para>\r\n            <para>\r\n            The <c>Shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.ResetConfiguration\">\r\n            <summary>\r\n            Reset all values contained in this hierarchy instance to their default.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this hierarchy instance to their\r\n            default.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this hierarchy.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are currently configured\r\n            </summary>\r\n            <returns>An array containing all the currently configured appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the <see cref=\"T:log4net.Appender.IAppender\"/> instances that are currently configured.\r\n            All the loggers are searched for appenders. The appenders may also be containers\r\n            for appenders and these are also searched for additional loggers.\r\n            </para>\r\n            <para>\r\n            The list returned is unordered but does not contain duplicates.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppender(System.Collections.ArrayList,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/>.\r\n            The appender may also be a container.\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"appender\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppenders(System.Collections.ArrayList,log4net.Core.IAppenderAttachable)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/> container\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"container\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appender\r\n            </summary>\r\n            <param name=\"appender\">the appender to use to log all logging events</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.BasicRepositoryConfigure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IXmlRepositoryConfigurator#Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.XmlRepositoryConfigure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.IsDisabled(log4net.Core.Level)\">\r\n            <summary>\r\n            Test if this hierarchy is disabled for the specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"level\">The level to check against.</param>\r\n            <returns>\r\n            <c>true</c> if the repository is disabled for the level argument, <c>false</c> otherwise.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If this hierarchy has not been configured then this method will\r\n            always return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This method will return <c>true</c> if this repository is\r\n            disabled for <c>level</c> object passed as parameter and\r\n            <c>false</c> otherwise.\r\n            </para>\r\n            <para>\r\n            See also the <see cref=\"P:log4net.Repository.ILoggerRepository.Threshold\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Clear\">\r\n            <summary>\r\n            Clear all logger definitions from the internal hashtable\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This call will clear all logger definitions from the internal\r\n            hashtable. Invoking this method will irrevocably mess up the\r\n            logger hierarchy.\r\n            </para>\r\n            <para>\r\n            You should <b>really</b> know what you are doing before\r\n            invoking this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Return a new logger instance named as the first parameter using\r\n            <paramref name=\"factory\"/>.\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <param name=\"factory\">The factory that will make the new logger instance</param>\r\n            <returns>The logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned. Otherwise, a new logger will be instantiated by the\r\n            <paramref name=\"factory\"/> parameter and linked with its existing\r\n            ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.OnLoggerCreationEvent(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Sends a logger creation event to all registered listeners\r\n            </summary>\r\n            <param name=\"logger\">The newly created logger</param>\r\n            <remarks>\r\n            Raises the logger creation event.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateParents(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Updates all the parents of the specified logger\r\n            </summary>\r\n            <param name=\"log\">The logger to update the parents for</param>\r\n            <remarks>\r\n            <para>\r\n            This method loops through all the <i>potential</i> parents of\r\n            <paramref name=\"log\"/>. There 3 possible cases:\r\n            </para>\r\n            <list type=\"number\">\r\n            \t<item>\r\n            \t\t<term>No entry for the potential parent of <paramref name=\"log\"/> exists</term>\r\n            \t\t<description>\r\n            \t\tWe create a ProvisionNode for this potential \r\n            \t\tparent and insert <paramref name=\"log\"/> in that provision node.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>The entry is of type Logger for the potential parent.</term>\r\n            \t\t<description>\r\n            \t\tThe entry is <paramref name=\"log\"/>'s nearest existing parent. We \r\n            \t\tupdate <paramref name=\"log\"/>'s parent field with this entry. We also break from \r\n            \t\the loop because updating our parent's parent is our parent's \r\n            \t\tresponsibility.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>The entry is of type ProvisionNode for this potential parent.</term>\r\n            \t\t<description>\r\n            \t\tWe add <paramref name=\"log\"/> to the list of children for this \r\n            \t\tpotential parent.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateChildren(log4net.Repository.Hierarchy.ProvisionNode,log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Replace a <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> with a <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> in the hierarchy.\r\n            </summary>\r\n            <param name=\"pn\"></param>\r\n            <param name=\"log\"></param>\r\n            <remarks>\r\n            <para>\r\n            We update the links for all the children that placed themselves\r\n            in the provision node 'pn'. The second argument 'log' is a\r\n            reference for the newly created Logger, parent of all the\r\n            children in 'pn'.\r\n            </para>\r\n            <para>\r\n            We loop on all the children 'c' in 'pn'.\r\n            </para>\r\n            <para>\r\n            If the child 'c' has been already linked to a child of\r\n            'log' then there is no need to update 'c'.\r\n            </para>\r\n            <para>\r\n            Otherwise, we set log's parent field to c's parent and set\r\n            c's parent field to log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddLevel(log4net.Repository.Hierarchy.Hierarchy.LevelEntry)\">\r\n            <summary>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"levelEntry\">the level values</param>\r\n            <remarks>\r\n            <para>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </para>\r\n            <para>\r\n            Supports setting levels via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"propertyEntry\">the property value</param>\r\n            <remarks>\r\n            <para>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument.\r\n            </para>\r\n            <para>\r\n            Supports setting property values via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Hierarchy.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the Hierarchy class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\">\r\n            <summary>\r\n            Event used to notify that a logger has been created.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a logger is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.EmittedNoAppenderWarning\">\r\n            <summary>\r\n            Has no appender warning been emitted\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flag to indicate if we have already issued a warning\r\n            about not having an appender warning.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.Root\">\r\n            <summary>\r\n            Get the root of this hierarchy\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the root of this hierarchy.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LoggerFactory\">\r\n            <summary>\r\n            Gets or sets the default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> instance.\r\n            </summary>\r\n            <value>The default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/></value>\r\n            <remarks>\r\n            <para>\r\n            The logger factory is used to create logger instances.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\">\r\n            <summary>\r\n            A class to hold the value, name and display name for a level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to hold the value, name and display name for a level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.ToString\">\r\n            <summary>\r\n            Override <c>Object.ToString</c> to return sensible debug info\r\n            </summary>\r\n            <returns>string info about this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Value\">\r\n            <summary>\r\n            Value of the level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the value is not set (defaults to -1) the value will be looked\r\n            up for the current level with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Name\">\r\n            <summary>\r\n            Name of the level\r\n            </summary>\r\n            <value>\r\n            The name of the level\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.DisplayName\">\r\n            <summary>\r\n            Display name for the level\r\n            </summary>\r\n            <value>\r\n            The display name of the level\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The display name of the level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerKey\">\r\n            <summary>\r\n            Used internally to accelerate hash table searches.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to improve performance of \r\n            string keyed hashtables.\r\n            </para>\r\n            <para>\r\n            The hashcode of the string is cached for reuse.\r\n            The string is stored as an interned value.\r\n            When comparing two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> objects for equality \r\n            the reference equality of the interned strings is compared.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.#ctor(System.String)\">\r\n            <summary>\r\n            Construct key with string name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> class \r\n            with the specified name.\r\n            </para>\r\n            <para>\r\n            Stores the hashcode of the string and interns\r\n            the string key to optimize comparisons.\r\n            </para>\r\n            <note>\r\n            The Compact Framework 1.0 the <see cref=\"M:System.String.Intern(System.String)\"/>\r\n            method does not work. On the Compact Framework\r\n            the string keys are not interned nor are they\r\n            compared by reference.\r\n            </note>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.GetHashCode\">\r\n            <summary>\r\n            Returns a hash code for the current instance.\r\n            </summary>\r\n            <returns>A hash code for the current instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the cached hashcode.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.Equals(System.Object)\">\r\n            <summary>\r\n            Determines whether two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> instances \r\n            are equal.\r\n            </summary>\r\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the references of the interned strings.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ProvisionNode\">\r\n            <summary>\r\n            Provision nodes are used where no logger instance has been specified\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> instances are used in the \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> when there is no specified \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> for that node.\r\n            </para>\r\n            <para>\r\n            A provision node holds a list of child loggers on behalf of\r\n            a logger that does not exist.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ProvisionNode.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Create a new provision node with child node\r\n            </summary>\r\n            <param name=\"log\">A child logger to add to this node.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> class \r\n            with the specified child logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.RootLogger\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> sits at the root of the logger hierarchy tree. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> is a regular <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> except \r\n            that it provides several guarantees.\r\n            </para>\r\n            <para>\r\n            First, it cannot be assigned a <c>null</c>\r\n            level. Second, since the root logger cannot have a parent, the\r\n            <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\"/> property always returns the value of the\r\n            level field without walking the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.RootLogger.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Construct a <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/>\r\n            </summary>\r\n            <param name=\"level\">The level to assign to the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> class with\r\n            the specified logging level.\r\n            </para>\r\n            <para>\r\n            The root logger names itself as \"root\". However, the root\r\n            logger cannot be retrieved by name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.RootLogger.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RootLogger class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\">\r\n            <summary>\r\n            Gets the assigned level value without walking the logger hierarchy.\r\n            </summary>\r\n            <value>The assigned level value without walking the logger hierarchy.</value>\r\n            <remarks>\r\n            <para>\r\n            Because the root logger cannot have a parent and its level\r\n            must not be <c>null</c> this property just returns the\r\n            value of <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> for the root logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> of the root logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting the level of the root logger to a <c>null</c> reference\r\n            may have catastrophic results. We prevent this here.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\">\r\n            <summary>\r\n            Initializes the log4net environment using an XML DOM.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> using an XML DOM.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.#ctor(log4net.Repository.Hierarchy.Hierarchy)\">\r\n            <summary>\r\n            Construct the configurator for a hierarchy\r\n            </summary>\r\n            <param name=\"hierarchy\">The hierarchy to build.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\"/> class\r\n            with the specified <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configure the hierarchy by parsing a DOM tree of XML elements.\r\n            </summary>\r\n            <param name=\"element\">The root element to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the hierarchy by parsing a DOM tree of XML elements.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindAppenderByReference(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parse appenders by IDREF.\r\n            </summary>\r\n            <param name=\"appenderRef\">The appender ref element.</param>\r\n            <returns>The instance of the appender that the ref refers to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents an appender and return \r\n            the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses an appender element.\r\n            </summary>\r\n            <param name=\"appenderElement\">The appender element.</param>\r\n            <returns>The appender instance or <c>null</c> when parsing failed.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents an appender and return\r\n            the appender instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLogger(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses a logger element.\r\n            </summary>\r\n            <param name=\"loggerElement\">The logger element.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents a logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRoot(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses the root logger element.\r\n            </summary>\r\n            <param name=\"rootElement\">The root element.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents the root logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseChildrenOfLoggerElement(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\r\n            Parses the children of a logger element.\r\n            </summary>\r\n            <param name=\"catElement\">The category element.</param>\r\n            <param name=\"log\">The logger instance.</param>\r\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse the child elements of a &lt;logger&gt; element.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRenderer(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses an object renderer.\r\n            </summary>\r\n            <param name=\"element\">The renderer element.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents a renderer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLevel(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\r\n            Parses a level element.\r\n            </summary>\r\n            <param name=\"element\">The level element.</param>\r\n            <param name=\"log\">The logger object to set the level on.</param>\r\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(System.Xml.XmlElement,System.Object)\">\r\n            <summary>\r\n            Sets a parameter on an object.\r\n            </summary>\r\n            <param name=\"element\">The parameter element.</param>\r\n            <param name=\"target\">The object to set the parameter on.</param>\r\n            <remarks>\r\n            The parameter name must correspond to a writable property\r\n            on the object. The value of the parameter is a string,\r\n            therefore this function will attempt to set a string\r\n            property first. If unable to set a string property it\r\n            will inspect the property and its argument type. It will\r\n            attempt to call a static method called <c>Parse</c> on the\r\n            type of the property. This method will take a single\r\n            string argument and return a value that can be used to\r\n            set the property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.HasAttributesOrElements(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Test if an element has no attributes or child elements\r\n            </summary>\r\n            <param name=\"element\">the element to inspect</param>\r\n            <returns><c>true</c> if the element has any attributes or child elements, <c>false</c> otherwise</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.IsTypeConstructible(System.Type)\">\r\n            <summary>\r\n            Test if a <see cref=\"T:System.Type\"/> is constructible with <c>Activator.CreateInstance</c>.\r\n            </summary>\r\n            <param name=\"type\">the type to inspect</param>\r\n            <returns><c>true</c> if the type is creatable using a default constructor, <c>false</c> otherwise</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindMethodInfo(System.Type,System.String)\">\r\n            <summary>\r\n            Look for a method on the <paramref name=\"targetType\"/> that matches the <paramref name=\"name\"/> supplied\r\n            </summary>\r\n            <param name=\"targetType\">the type that has the method</param>\r\n            <param name=\"name\">the name of the method</param>\r\n            <returns>the method info found</returns>\r\n            <remarks>\r\n            <para>\r\n            The method must be a public instance method on the <paramref name=\"targetType\"/>.\r\n            The method must be named <paramref name=\"name\"/> or \"Add\" followed by <paramref name=\"name\"/>.\r\n            The method must take a single parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\r\n            Converts a string value to a target type.\r\n            </summary>\r\n            <param name=\"type\">The type of object to convert the string to.</param>\r\n            <param name=\"value\">The string value to use as the value of the object.</param>\r\n            <returns>\r\n            <para>\r\n            An object of type <paramref name=\"type\"/> with value <paramref name=\"value\"/> or \r\n            <c>null</c> when the conversion could not be performed.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(System.Xml.XmlElement,System.Type,System.Type)\">\r\n            <summary>\r\n            Creates an object as specified in XML.\r\n            </summary>\r\n            <param name=\"element\">The XML element that contains the definition of the object.</param>\r\n            <param name=\"defaultTargetType\">The object type to use if not explicitly specified.</param>\r\n            <param name=\"typeConstraint\">The type that the returned object must be or must inherit from.</param>\r\n            <returns>The object or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element and create an object instance based on the configuration\r\n            data.\r\n            </para>\r\n            <para>\r\n            The type of the instance may be specified in the XML. If not\r\n            specified then the <paramref name=\"defaultTargetType\"/> is used\r\n            as the type. However the type is specified it must support the\r\n            <paramref name=\"typeConstraint\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_appenderBag\">\r\n            <summary>\r\n            key: appenderName, value: appender.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_hierarchy\">\r\n            <summary>\r\n            The Hierarchy being configured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the XmlHierarchyConfigurator class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.ConfigurationChangedEventArgs\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ConfigurationChangedEventArgs.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"configurationMessages\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ConfigurationChangedEventArgs.ConfigurationMessages\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryShutdownEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository shutdown event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository shutdown event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationResetEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository configuration reset event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration reset.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository configuration reset event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationChangedEventHandler\">\r\n            <summary>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration changed.</param>\r\n            <param name=\"e\">Empty event arguments.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.AppDomainPatternConverter\">\r\n            <summary>\r\n            Write the name of the current AppDomain to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the name of the current AppDomain to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.AppDomainPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the name of the current AppDomain to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes name of the current AppDomain to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The date and time is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date and time passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the DatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter\">\r\n            <summary>\r\n            Write an <see cref=\"T:System.Environment.SpecialFolder\"/> folder path to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an special path environment folder path to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output. <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            should be a value in the <see cref=\"T:System.Environment.SpecialFolder\"/> enumeration.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an special path environment folder path to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the special path environment folder path to the output <paramref name=\"writer\"/>.\r\n            The name of the special path environment folder path to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the EnvironmentFolderPathPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentPatternConverter\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an environment variable to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the environment variable to the output <paramref name=\"writer\"/>.\r\n            The name of the environment variable to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the EnvironmentPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.IdentityPatternConverter\">\r\n            <summary>\r\n            Write the current thread identity to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the current thread identity to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.IdentityPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current thread identity to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the current thread identity to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.IdentityPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the IdentityPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\">\r\n            <summary>\r\n            Pattern converter for literal string instances in the pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the literal string value specified in the \r\n            <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property to \r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Set the next converter in the chain\r\n            </summary>\r\n            <param name=\"pc\">The next pattern converter in the chain</param>\r\n            <returns>The next pattern converter</returns>\r\n            <remarks>\r\n            <para>\r\n            Special case the building of the pattern converter chain\r\n            for <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> instances. Two adjacent\r\n            literals in the pattern can be represented by a single combined\r\n            pattern converter. This implementation detects when a \r\n            <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> is added to the chain\r\n            after this converter and combines its value with this converter's\r\n            literal value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the literal to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            Override the formatting behavior to ignore the FormattingInfo\r\n            because we have a literal instead.\r\n            </para>\r\n            <para>\r\n            Writes the value of <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Convert this pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            This method is not used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.NewLinePatternConverter\">\r\n            <summary>\r\n            Writes a newline to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the system dependent line terminator to the output.\r\n            This behavior can be overridden by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <listheader>\r\n                <term>Option Value</term>\r\n                <description>Output</description>\r\n              </listheader>\r\n              <item>\r\n                <term>DOS</term>\r\n                <description>DOS or Windows line terminator <c>\"\\r\\n\"</c></description>\r\n              </item>\r\n              <item>\r\n                <term>UNIX</term>\r\n                <description>UNIX line terminator <c>\"\\n\"</c></description>\r\n              </item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.ProcessIdPatternConverter\">\r\n            <summary>\r\n            Write the current process ID to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the current process ID to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current process ID to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Write the current process ID to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the ProcessIdPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This pattern converter reads the thread and global properties.\r\n            The thread properties take priority over global properties.\r\n            See <see cref=\"P:log4net.ThreadContext.Properties\"/> for details of the \r\n            thread properties. See <see cref=\"P:log4net.GlobalContext.Properties\"/> for\r\n            details of the global properties.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified then that will be used to\r\n            lookup a single property. If no <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified\r\n            then all properties will be dumped as a list of key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.PropertyPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.RandomStringPatternConverter\">\r\n            <summary>\r\n            A Pattern converter that generates a string of random characters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The converter generates a string of random characters. By default\r\n            the string is length 4. This can be changed by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the string value of the length required.\r\n            </para>\r\n            <para>\r\n            The random characters in the string are limited to uppercase letters\r\n            and numbers only.\r\n            </para>\r\n            <para>\r\n            The random number generator used by this class is not cryptographically secure.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.s_random\">\r\n            <summary>\r\n            Shared random number generator\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.m_length\">\r\n            <summary>\r\n            Length of random string to generate. Default length 4.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write a randoim string to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Write a randoim string to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RandomStringPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UserNamePatternConverter\">\r\n            <summary>\r\n            Write the current threads username to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the current threads username to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UserNamePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current threads username to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Write the current threads username to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UserNamePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the UserNamePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the UTC date time to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UtcDatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date and time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date is in Universal time when it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UtcDatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the UtcDatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.BooleanConverter\">\r\n            <summary>\r\n            Type converter for Boolean.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <c>bool</c> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the source object to the type supported by this object\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Boolean.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Boolean\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            <summary>\r\n            Exception base type for conversion errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object,System.Exception)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConverterRegistry\">\r\n            <summary>\r\n            Register of type converters for specific types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a registry of type converters used to convert between\r\n            types.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\"/> and \r\n            <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\"/> methods to register new converters.\r\n            The <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\"/> and <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\"/> methods\r\n            lookup appropriate converters to use.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n            <remarks>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/> class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#cctor\">\r\n            <summary>\r\n            Static constructor.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This constructor defines the intrinsic type converters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\">\r\n            <summary>\r\n            Adds a converter for a specific type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <param name=\"converter\">The type converter to use to convert to the destination type.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a converter instance for a specific type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\">\r\n            <summary>\r\n            Adds a converter for a specific type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <param name=\"converterType\">The type of the type converter to use to convert to the destination type.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a converter <see cref=\"T:System.Type\"/> for a specific type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\">\r\n            <summary>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </summary>\r\n            <param name=\"sourceType\">The type being converted from.</param>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\">\r\n            <summary>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConverterFromAttribute(System.Type)\">\r\n            <summary>\r\n            Lookups the type converter to use as specified by the attributes on the \r\n            destination type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.CreateConverterInstance(System.Type)\">\r\n            <summary>\r\n            Creates the instance of the type converter.\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The type specified for the type converter must implement \r\n            the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> or <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces \r\n            and must have a public default (no argument) constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the ConverterRegistry class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.s_type2converter\">\r\n            <summary>\r\n            Mapping from <see cref=\"T:System.Type\"/> to type converter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.EncodingConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an encoding</param>\r\n            <returns>the encoding</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Text.Encoding.GetEncoding(System.String)\"/> method to \r\n            convert the <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Text.Encoding\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertTo\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from a single type to arbitrary types.\r\n            See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.CanConvertTo(System.Type)\">\r\n            <summary>\r\n            Returns whether this converter can convert the object to the specified type\r\n            </summary>\r\n            <param name=\"targetType\">A Type that represents the type you want to convert to</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the type supported by this converter can be converted to the\r\n            <paramref name=\"targetType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts the given value object to the specified type, using the arguments\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the <paramref name=\"source\"/> (which must be of the type supported\r\n            by this converter) to the <paramref name=\"targetType\"/> specified..\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IPAddressConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an IPAddress</param>\r\n            <returns>the IPAddress</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Net.IPAddress.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Net.IPAddress\"/>.\r\n            If that fails then the string is resolved as a DNS hostname.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.IPAddressConverter.validIpAddressChars\">\r\n            <summary>\r\n            Valid characters in an IPv4 or IPv6 address string. (Does not support subnets)\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternLayoutConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Layout.PatternLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternLayout</param>\r\n            <returns>the PatternLayout</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Layout.PatternLayout\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternStringConverter\">\r\n            <summary>\r\n            Convert between string and <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Util.PatternString\"/> type, \r\n            and from a <see cref=\"T:log4net.Util.PatternString\"/> type to a string.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Util.PatternString\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\">\r\n            <summary>\r\n            Can the target type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"targetType\">A <see cref=\"T:System.Type\"/> that represents the type you want to convert to</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"targetType\"/> is\r\n            assignable from a <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts the given value object to the specified type, using the arguments\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Util.PatternString.Format\"/> method to convert the\r\n            <see cref=\"T:log4net.Util.PatternString\"/> argument to a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            <paramref name=\"targetType\"/>. To check for this condition use the \r\n            <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\"/> method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternString</param>\r\n            <returns>the PatternString</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Util.PatternString\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a Type</param>\r\n            <returns>the Type</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Type\"/>.\r\n            Additional effort is made to locate partially specified types\r\n            by searching the loaded assemblies.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\">\r\n            <summary>\r\n            Attribute used to associate a type converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class and Interface level attribute that specifies a type converter\r\n            to use with the associated type.\r\n            </para>\r\n            <para>\r\n            To associate a type converter with a target type apply a\r\n            <c>TypeConverterAttribute</c> to the target type. Specify the\r\n            type of the type converter on the attribute.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.TypeConverterAttribute.m_typeName\">\r\n            <summary>\r\n            The string type name of the type converter\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type name\r\n            </summary>\r\n            <param name=\"typeName\">The string type name of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TypeConverters.TypeConverterAttribute.ConverterTypeName\">\r\n            <summary>\r\n            The string type name of the type converter \r\n            </summary>\r\n            <value>\r\n            The string type name of the type converter \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.AppenderAttachedImpl\">\r\n            <summary>\r\n            A straightforward implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the default implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/>\r\n            interface. Implementors of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            should aggregate an instance of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.AppenderAttachedImpl\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.CallAppend(log4net.Appender.IAppender,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Calls the DoAppende method on the <see cref=\"T:log4net.Appender.IAppender\"/> with \r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> objects supplied.\r\n            </summary>\r\n            <param name=\"appender\">The appender</param>\r\n            <param name=\"loggingEvents\">The events</param>\r\n            <remarks>\r\n            <para>\r\n            If the <paramref name=\"appender\"/> supports the <see cref=\"T:log4net.Appender.IBulkAppender\"/>\r\n            interface then the <paramref name=\"loggingEvents\"/> will be passed \r\n            through using that interface. Otherwise the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the array will be passed one at a time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Attaches an appender.\r\n            </summary>\r\n            <param name=\"newAppender\">The appender to add.</param>\r\n            <remarks>\r\n            <para>\r\n            If the appender is already in the list it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.GetAppender(System.String)\">\r\n            <summary>\r\n            Gets an attached appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to get.</param>\r\n            <returns>\r\n            The appender with the name specified, or <c>null</c> if no appender with the\r\n            specified name is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup an attached appender by name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Removes and closes all attached appenders\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderList\">\r\n            <summary>\r\n            List of appenders\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderArray\">\r\n            <summary>\r\n            Array of appenders, used to cache the m_appenderList\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the AppenderAttachedImpl class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.AppenderAttachedImpl.Appenders\">\r\n            <summary>\r\n            Gets all attached appenders.\r\n            </summary>\r\n            <returns>\r\n            A collection of attached appenders, or <c>null</c> if there\r\n            are no attached appenders.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The read only collection of all currently attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.CompositeProperties\">\r\n            <summary>\r\n            This class aggregates several PropertiesDictionary collections together.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Provides a dictionary style lookup over an ordered list of\r\n            <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CompositeProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Add(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Add a Properties Dictionary to this composite collection\r\n            </summary>\r\n            <param name=\"properties\">the properties to add</param>\r\n            <remarks>\r\n            <para>\r\n            Properties dictionaries added first take precedence over dictionaries added\r\n            later.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Flatten\">\r\n            <summary>\r\n            Flatten this composite collection into a single properties dictionary\r\n            </summary>\r\n            <returns>the flattened dictionary</returns>\r\n            <remarks>\r\n            <para>\r\n            Reduces the collection of ordered dictionaries to a single dictionary\r\n            containing the resultant values for the keys.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CompositeProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Looks up the value for the <paramref name=\"key\"/> specified.\r\n            The <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections are searched\r\n            in the order in which they were added to this collection. The value\r\n            returned is the value held by the first collection that contains\r\n            the specified key.\r\n            </para>\r\n            <para>\r\n            If none of the collections contain the specified key then\r\n            <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ContextPropertiesBase\">\r\n            <summary>\r\n            Base class for Context Properties implementations\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class defines a basic property get set accessor\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ContextPropertiesBase.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the value of a property\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ConverterInfo\">\r\n            <summary>\r\n            Wrapper class used to map converter names to converter types\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Pattern converter info class used during configuration by custom\r\n            PatternString and PatternLayer converters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.#ctor\">\r\n            <summary>\r\n            default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"entry\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Name\">\r\n            <summary>\r\n            Gets or sets the name of the conversion pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The name of the pattern in the format string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Type\">\r\n            <summary>\r\n            Gets or sets the type of the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The value specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Properties\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.CountingQuietTextWriter\">\r\n            <summary>\r\n            Subclass of <see cref=\"T:log4net.Util.QuietTextWriter\"/> that maintains a count of \r\n            the number of bytes written.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer counts the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.QuietTextWriter\">\r\n            <summary>\r\n            <see cref=\"T:System.IO.TextWriter\"/> that does not leak exceptions\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/> does not throw exceptions when things go wrong. \r\n            Instead, it delegates error handling to its <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TextWriterAdapter\">\r\n            <summary>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TextWriterAdapter.m_writer\">\r\n            <summary>\r\n            The writer to forward messages to\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to forward to</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Close\">\r\n            <summary>\r\n            Closes the writer and releases any system resources associated with the writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Dispose(System.Boolean)\">\r\n            <summary>\r\n            Dispose this writer\r\n            </summary>\r\n            <param name=\"disposing\">flag indicating if we are being disposed</param>\r\n            <remarks>\r\n            <para>\r\n            Dispose this writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Flush\">\r\n            <summary>\r\n            Flushes any buffered output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears all buffers for the writer and causes any buffered data to be written \r\n            to the underlying device\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the wrapped TextWriter\r\n            </summary>\r\n            <param name=\"value\">the value to write to the TextWriter</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a character to the wrapped TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a character buffer to the wrapped TextWriter\r\n            </summary>\r\n            <param name=\"buffer\">the data buffer</param>\r\n            <param name=\"index\">the start index</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a character buffer to the wrapped TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the wrapped TextWriter\r\n            </summary>\r\n            <param name=\"value\">the value to write to the TextWriter</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a string to the wrapped TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Writer\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Encoding\">\r\n            <summary>\r\n            The Encoding in which the output is written\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.TextWriterAdapter.Encoding\"/>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The Encoding in which the output is written\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.FormatProvider\">\r\n            <summary>\r\n            Gets an object that controls formatting\r\n            </summary>\r\n            <value>\r\n            The format provider\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets an object that controls formatting\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.NewLine\">\r\n            <summary>\r\n            Gets or sets the line terminator string used by the TextWriter\r\n            </summary>\r\n            <value>\r\n            The line terminator to use\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the line terminator string used by the TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">the writer to actually write to</param>\r\n            <param name=\"errorHandler\">the error handler to report error to</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new QuietTextWriter using a writer and error handler\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the underlying writer\r\n            </summary>\r\n            <param name=\"value\">the char to write</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a character to the underlying writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a buffer to the underlying writer\r\n            </summary>\r\n            <param name=\"buffer\">the buffer to write</param>\r\n            <param name=\"index\">the start index to write from</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a buffer to the underlying writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the output.\r\n            </summary>\r\n            <param name=\"value\">The string data to write to the output.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a string to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Close\">\r\n            <summary>\r\n            Closes the underlying output writer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_errorHandler\">\r\n            <summary>\r\n            The error handler instance to pass all errors to\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_closed\">\r\n            <summary>\r\n            Flag to indicate if this writer is closed\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.ErrorHandler\">\r\n            <summary>\r\n            Gets or sets the error handler that all errors are passed to.\r\n            </summary>\r\n            <value>\r\n            The error handler that all errors are passed to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the error handler that all errors are passed to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.Closed\">\r\n            <summary>\r\n            Gets a value indicating whether this writer is closed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this writer is closed, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets a value indicating whether this writer is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to actually write to.</param>\r\n            <param name=\"errorHandler\">The <see cref=\"T:log4net.Core.IErrorHandler\"/> to report errors to.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.CountingQuietTextWriter\"/> class \r\n            with the specified <see cref=\"T:System.IO.TextWriter\"/> and <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"value\">the char to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a buffer to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"buffer\">the buffer to write</param>\r\n            <param name=\"index\">the start index to write from</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the output and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"str\">The string data to write to the output.</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.CountingQuietTextWriter.m_countBytes\">\r\n            <summary>\r\n            Total number of bytes written.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CountingQuietTextWriter.Count\">\r\n            <summary>\r\n            Gets or sets the total number of bytes written.\r\n            </summary>\r\n            <value>\r\n            The total number of bytes written.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the total number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.CyclicBuffer\">\r\n            <summary>\r\n            A fixed size rolling buffer of logging events.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An array backed fixed size leaky bucket.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.#ctor(System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"maxSize\">The maximum number of logging events in the buffer.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CyclicBuffer\"/> class with \r\n            the specified maximum number of buffered logging events.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"maxSize\"/> argument is not a positive integer.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Appends a <paramref name=\"loggingEvent\"/> to the buffer.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to append to the buffer.</param>\r\n            <returns>The event discarded from the buffer, if the buffer is full, otherwise <c>null</c>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Append an event to the buffer. If the buffer still contains free space then\r\n            <c>null</c> is returned. If the buffer is full then an event will be dropped\r\n            to make space for the new event, the event dropped is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopOldest\">\r\n            <summary>\r\n            Get and remove the oldest event in the buffer.\r\n            </summary>\r\n            <returns>The oldest logging event in the buffer</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the oldest (first) logging event in the buffer and removes it \r\n            from the buffer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopAll\">\r\n            <summary>\r\n            Pops all the logging events from the buffer into an array.\r\n            </summary>\r\n            <returns>An array of all the logging events in the buffer.</returns>\r\n            <remarks>\r\n            <para>\r\n            Get all the events in the buffer and clear the buffer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Clear\">\r\n            <summary>\r\n            Clear the buffer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the buffer of all events. The events in the buffer are lost.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Item(System.Int32)\">\r\n            <summary>\r\n            Gets the <paramref name=\"i\"/>th oldest event currently in the buffer.\r\n            </summary>\r\n            <value>The <paramref name=\"i\"/>th oldest event currently in the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            If <paramref name=\"i\"/> is outside the range 0 to the number of events\r\n            currently in the buffer, then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.MaxSize\">\r\n            <summary>\r\n            Gets the maximum size of the buffer.\r\n            </summary>\r\n            <value>The maximum size of the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the maximum size of the buffer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Length\">\r\n            <summary>\r\n            Gets the number of logging events in the buffer.\r\n            </summary>\r\n            <value>The number of logging events in the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            This number is guaranteed to be in the range 0 to <see cref=\"P:log4net.Util.CyclicBuffer.MaxSize\"/>\r\n            (inclusive).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyCollection\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.ICollection\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyCollection\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyCollection.s_instance\">\r\n            <summary>\r\n            The singleton instance of the empty collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the empty collection.\r\n            </summary>\r\n            <returns>The singleton instance of the empty collection.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the empty collection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyCollection.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyCollection.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyDictionary\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionary\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Add(System.Object,System.Object)\">\r\n            <summary>\r\n            Adds an element with the provided key and value to the \r\n            <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The <see cref=\"T:System.Object\"/> to use as the key of the element to add.</param>\r\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to use as the value of the element to add.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no new values can be added. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Clear\">\r\n            <summary>\r\n            Removes all elements from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\">\r\n            <summary>\r\n            Determines whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> contains an element \r\n            with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key to locate in the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</param>\r\n            <returns><c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\"/> method always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Remove(System.Object)\">\r\n            <summary>\r\n            Removes the element with the specified key from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to remove.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyDictionary.s_instance\">\r\n            <summary>\r\n            The singleton instance of the empty dictionary.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <b>true</b>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyDictionary.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyDictionary.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> has a fixed size.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsFixedSize\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> is read-only.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsReadOnly\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Keys\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Values\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Item(System.Object)\">\r\n            <summary>\r\n            Gets or sets the element with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to get or set.</param>\r\n            <value><c>null</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be looked up or stored. \r\n            If the index getter is called then <c>null</c> is returned.\r\n            A <see cref=\"T:System.InvalidOperationException\"/> is thrown if the setter is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.FormattingInfo\">\r\n            <summary>\r\n            Contain the information obtained when parsing formatting modifiers \r\n            in conversion modifiers.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Holds the formatting information extracted from the format string by\r\n            the <see cref=\"T:log4net.Util.PatternParser\"/>. This is used by the <see cref=\"T:log4net.Util.PatternConverter\"/>\r\n            objects when rendering the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor\">\r\n            <summary>\r\n            Defaut Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor(System.Int32,System.Int32,System.Boolean)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class\r\n            with the specified parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Min\">\r\n            <summary>\r\n            Gets or sets the minimum value.\r\n            </summary>\r\n            <value>\r\n            The minimum value.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the minimum value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Max\">\r\n            <summary>\r\n            Gets or sets the maximum value.\r\n            </summary>\r\n            <value>\r\n            The maximum value.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the maximum value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.LeftAlign\">\r\n            <summary>\r\n            Gets or sets a flag indicating whether left align is enabled\r\n            or not.\r\n            </summary>\r\n            <value>\r\n            A flag indicating whether left align is enabled or not.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets a flag indicating whether left align is enabled or not.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.GlobalContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.GlobalContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class implements a properties collection that is thread safe and supports both\r\n            storing properties and capturing a read only copy of the current propertied.\r\n            </para>\r\n            <para>\r\n            This class is optimized to the scenario where the properties are read frequently\r\n            and are modified infrequently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_readOnlyProperties\">\r\n            <summary>\r\n            The read only copy of the properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This variable is declared <c>volatile</c> to prevent the compiler and JIT from\r\n            reordering reads and writes of this thread performed on different threads.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_syncRoot\">\r\n            <summary>\r\n            Lock object used to synchronize updates within this instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.GlobalContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Remove(System.String)\">\r\n            <summary>\r\n            Remove a property from the global context\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Removing an entry from the global context properties is relatively expensive compared\r\n            with reading a value. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Clear\">\r\n            <summary>\r\n            Clear the global context properties\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.GetReadOnlyProperties\">\r\n            <summary>\r\n            Get a readonly immutable copy of the properties\r\n            </summary>\r\n            <returns>the current global context properties</returns>\r\n            <remarks>\r\n            <para>\r\n            This implementation is fast because the GlobalContextProperties class\r\n            stores a readonly copy of the properties.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.GlobalContextProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Reading the value for a key is faster than setting the value.\r\n            When the value is written a new read only copy of \r\n            the properties is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMapping\">\r\n            <summary>\r\n            Manages a mapping from levels to <see cref=\"T:log4net.Util.LevelMappingEntry\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Manages an ordered mapping from <see cref=\"T:log4net.Core.Level\"/> instances \r\n            to <see cref=\"T:log4net.Util.LevelMappingEntry\"/> subclasses.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialise a new instance of <see cref=\"T:log4net.Util.LevelMapping\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Add(log4net.Util.LevelMappingEntry)\">\r\n            <summary>\r\n            Add a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> to this mapping\r\n            </summary>\r\n            <param name=\"entry\">the entry to add</param>\r\n            <remarks>\r\n            <para>\r\n            If a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> has previously been added\r\n            for the same <see cref=\"T:log4net.Core.Level\"/> then that entry will be \r\n            overwritten.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Lookup(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup the mapping for the specified level\r\n            </summary>\r\n            <param name=\"level\">the level to lookup</param>\r\n            <returns>the <see cref=\"T:log4net.Util.LevelMappingEntry\"/> for the level or <c>null</c> if no mapping found</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup the value for the specified level. Finds the nearest\r\n            mapping value for the level that is equal to or less than the\r\n            <paramref name=\"level\"/> specified.\r\n            </para>\r\n            <para>\r\n            If no mapping could be found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.ActivateOptions\">\r\n            <summary>\r\n            Initialize options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Caches the sorted list of <see cref=\"T:log4net.Util.LevelMappingEntry\"/> in an array\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogicalThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.LogicalThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            <para>\r\n            This class stores its properties in a slot on the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> named\r\n            <c>log4net.Util.LogicalThreadContextProperties</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.m_disabled\">\r\n            <summary>\r\n            Flag used to disable this context if we don't have permission to access the CallContext.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogicalThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Remove(System.String)\">\r\n            <summary>\r\n            Remove a property\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the value for the specified <paramref name=\"key\"/> from the context.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Clear\">\r\n            <summary>\r\n            Clear all the context properties\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear all the context properties\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\r\n            Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread.\r\n            </summary>\r\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\r\n            <returns>the properties for this thread</returns>\r\n            <remarks>\r\n            <para>\r\n            The collection returned is only to be used on the calling thread. If the\r\n            caller needs to share the collection between different threads then the \r\n            caller must clone the collection before doings so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetCallContextData\">\r\n            <summary>\r\n            Gets the call context get data.\r\n            </summary>\r\n            <returns>The peroperties dictionary stored in the call context</returns>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.GetData(System.String)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.SetCallContextData(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Sets the call context data.\r\n            </summary>\r\n            <param name=\"properties\">The properties.</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.SetData(System.String,System.Object)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LogicalThreadContextProperties class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogicalThreadContextProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set the property value for the <paramref name=\"key\"/> specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventHandler\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"e\"></param>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog\">\r\n            <summary>\r\n            Outputs log statements from within the log4net assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Log4net components cannot make log4net logging calls. However, it is\r\n            sometimes useful for the user to learn about what log4net is\r\n            doing.\r\n            </para>\r\n            <para>\r\n            All log4net internal debug calls go to the standard output stream\r\n            whereas internal error messages are sent to the standard error output \r\n            stream.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.ToString\">\r\n            <summary>\r\n            Formats Prefix, Source, and Message in the same format as the value\r\n            sent to Console.Out and Trace.Write.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#ctor(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogLog\"/> class. \r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"prefix\"></param>\r\n            <param name=\"message\"></param>\r\n            <param name=\"exception\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#cctor\">\r\n            <summary>\r\n            Static constructor that initializes logging by reading \r\n            settings from the application configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>log4net.Internal.Debug</c> application setting\r\n            controls internal debugging. This setting should be set\r\n            to <c>true</c> to enable debugging.\r\n            </para>\r\n            <para>\r\n            The <c>log4net.Internal.Quiet</c> application setting\r\n            suppresses all internal logging including error messages. \r\n            This setting should be set to <c>true</c> to enable message\r\n            suppression.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.OnLogReceived(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\r\n            Raises the LogReceived event when an internal messages is received.\r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"prefix\"></param>\r\n            <param name=\"message\"></param>\r\n            <param name=\"exception\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String)\">\r\n            <summary>\r\n            Writes log4net internal debug messages to the \r\n            standard output stream.\r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal debug messages are prepended with \r\n            the string \"log4net: \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String,System.Exception)\">\r\n            <summary>\r\n            Writes log4net internal debug messages to the \r\n            standard output stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <param name=\"exception\">An exception to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal debug messages are prepended with \r\n            the string \"log4net: \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String)\">\r\n            <summary>\r\n            Writes log4net internal warning messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal warning messages are prepended with \r\n            the string \"log4net:WARN \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String,System.Exception)\">\r\n            <summary>\r\n            Writes log4net internal warning messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <param name=\"exception\">An exception to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal warning messages are prepended with \r\n            the string \"log4net:WARN \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String)\">\r\n            <summary>\r\n            Writes log4net internal error messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal error messages are prepended with \r\n            the string \"log4net:ERROR \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String,System.Exception)\">\r\n            <summary>\r\n            Writes log4net internal error messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <param name=\"exception\">An exception to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal debug messages are prepended with \r\n            the string \"log4net:ERROR \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitOutLine(System.String)\">\r\n            <summary>\r\n            Writes output to the standard output stream.  \r\n            </summary>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes to both Console.Out and System.Diagnostics.Trace.\r\n            Note that the System.Diagnostics.Trace is not supported\r\n            on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            If the AppDomain is not configured with a config file then\r\n            the call to System.Diagnostics.Trace may fail. This is only\r\n            an issue if you are programmatically creating your own AppDomains.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitErrorLine(System.String)\">\r\n            <summary>\r\n            Writes output to the standard error stream.  \r\n            </summary>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes to both Console.Error and System.Diagnostics.Trace.\r\n            Note that the System.Diagnostics.Trace is not supported\r\n            on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            If the AppDomain is not configured with a config file then\r\n            the call to System.Diagnostics.Trace may fail. This is only\r\n            an issue if you are programmatically creating your own AppDomains.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_debugEnabled\">\r\n            <summary>\r\n             Default debug level\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_quietMode\">\r\n            <summary>\r\n            In quietMode not even errors generate any output.\r\n            </summary>\r\n        </member>\r\n        <member name=\"E:log4net.Util.LogLog.LogReceived\">\r\n            <summary>\r\n            The event raised when an internal message has been received.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Source\">\r\n            <summary>\r\n            The Type that generated the internal message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.TimeStamp\">\r\n            <summary>\r\n            The DateTime stamp of when the internal message was received.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Prefix\">\r\n            <summary>\r\n            A string indicating the severity of the internal message.\r\n            </summary>\r\n            <remarks>\r\n            \"log4net: \", \r\n            \"log4net:ERROR \", \r\n            \"log4net:WARN \"\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Message\">\r\n            <summary>\r\n            The internal log message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Exception\">\r\n            <summary>\r\n            The Exception related to the message.\r\n            </summary>\r\n            <remarks>\r\n            Optional. Will be null if no Exception was passed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.InternalDebugging\">\r\n            <summary>\r\n            Gets or sets a value indicating whether log4net internal logging\r\n            is enabled or disabled.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if log4net internal logging is enabled, otherwise \r\n            <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            When set to <c>true</c>, internal debug level logging will be \r\n            displayed.\r\n            </para>\r\n            <para>\r\n            This value can be set by setting the application setting \r\n            <c>log4net.Internal.Debug</c> in the application configuration\r\n            file.\r\n            </para>\r\n            <para>\r\n            The default value is <c>false</c>, i.e. debugging is\r\n            disabled.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            The following example enables internal debugging using the \r\n            application configuration file :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net.Internal.Debug\" value=\"true\" />\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.QuietMode\">\r\n            <summary>\r\n            Gets or sets a value indicating whether log4net should generate no output\r\n            from internal logging, not even for errors. \r\n            </summary>\r\n            <value>\r\n            <c>true</c> if log4net should generate no output at all from internal \r\n            logging, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            When set to <c>true</c> will cause internal logging at all levels to be \r\n            suppressed. This means that no warning or error reports will be logged. \r\n            This option overrides the <see cref=\"P:log4net.Util.LogLog.InternalDebugging\"/> setting and \r\n            disables all debug also.\r\n            </para>\r\n            <para>This value can be set by setting the application setting\r\n            <c>log4net.Internal.Quiet</c> in the application configuration file.\r\n            </para>\r\n            <para>\r\n            The default value is <c>false</c>, i.e. internal logging is not\r\n            disabled.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            The following example disables internal logging using the \r\n            application configuration file :\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net.Internal.Quiet\" value=\"true\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.EmitInternalMessages\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsDebugEnabled\">\r\n            <summary>\r\n            Test if LogLog.Debug is enabled for output.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if Debug is enabled\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Test if LogLog.Debug is enabled for output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsWarnEnabled\">\r\n            <summary>\r\n            Test if LogLog.Warn is enabled for output.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if Warn is enabled\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Test if LogLog.Warn is enabled for output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsErrorEnabled\">\r\n            <summary>\r\n            Test if LogLog.Error is enabled for output.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if Error is enabled\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Test if LogLog.Error is enabled for output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog.LogReceivedAdapter\">\r\n            <summary>\r\n            Subscribes to the LogLog.LogReceived event and stores messages\r\n            to the supplied IList instance.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.#ctor(System.Collections.IList)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"items\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.Dispose\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.LogReceivedAdapter.Items\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventArgs\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogReceivedEventArgs.#ctor(log4net.Util.LogLog)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"loglog\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogReceivedEventArgs.LogLog\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NativeError\">\r\n            <summary>\r\n            Represents a native error code and message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Represents a Win32 platform native error.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </summary>\r\n            <param name=\"number\">The number of the native error.</param>\r\n            <param name=\"message\">The message of the native error.</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetLastError\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last Windows error.\r\n            </summary>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last windows error.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/> error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetError(System.Int32)\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class.\r\n            </summary>\r\n            <param name=\"number\">the error number for the native error</param>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the specified \r\n            error number.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the specified error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetErrorMessage(System.Int32)\">\r\n            <summary>\r\n            Retrieves the message corresponding with a Win32 message identifier.\r\n            </summary>\r\n            <param name=\"messageId\">Message identifier for the requested message.</param>\r\n            <returns>\r\n            The message corresponding with the specified message identifier.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message will be searched for in system message-table resource(s)\r\n            using the native <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.ToString\">\r\n            <summary>\r\n            Return error information string\r\n            </summary>\r\n            <returns>error information string</returns>\r\n            <remarks>\r\n            <para>\r\n            Return error information string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.FormatMessage(System.Int32,System.IntPtr@,System.Int32,System.Int32,System.String@,System.Int32,System.IntPtr)\">\r\n            <summary>\r\n            Formats a message string.\r\n            </summary>\r\n            <param name=\"dwFlags\">Formatting options, and how to interpret the <paramref name=\"lpSource\"/> parameter.</param>\r\n            <param name=\"lpSource\">Location of the message definition.</param>\r\n            <param name=\"dwMessageId\">Message identifier for the requested message.</param>\r\n            <param name=\"dwLanguageId\">Language identifier for the requested message.</param>\r\n            <param name=\"lpBuffer\">If <paramref name=\"dwFlags\"/> includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the <c>LocalAlloc</c> function, and places the pointer to the buffer at the address specified in <paramref name=\"lpBuffer\"/>.</param>\r\n            <param name=\"nSize\">If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer.</param>\r\n            <param name=\"Arguments\">Pointer to an array of values that are used as insert values in the formatted message.</param>\r\n            <remarks>\r\n            <para>\r\n            The function requires a message definition as input. The message definition can come from a \r\n            buffer passed into the function. It can come from a message table resource in an \r\n            already-loaded module. Or the caller can ask the function to search the system's message \r\n            table resource(s) for the message definition. The function finds the message definition \r\n            in a message table resource based on a message identifier and a language identifier. \r\n            The function copies the formatted message text to an output buffer, processing any embedded \r\n            insert sequences if requested.\r\n            </para>\r\n            <para>\r\n            To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <para>\r\n            If the function succeeds, the return value is the number of TCHARs stored in the output \r\n            buffer, excluding the terminating null character.\r\n            </para>\r\n            <para>\r\n            If the function fails, the return value is zero. To get extended error information, \r\n            call <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/>.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Number\">\r\n            <summary>\r\n            Gets the number of the native error.\r\n            </summary>\r\n            <value>\r\n            The number of the native error.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the number of the native error.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Message\">\r\n            <summary>\r\n            Gets the message of the native error.\r\n            </summary>\r\n            <value>\r\n            The message of the native error.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            </para>\r\n            Gets the message of the native error.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullDictionaryEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance.\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullDictionaryEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullDictionaryEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Key\">\r\n            <summary>\r\n            Gets the current key from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an exception because the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>\r\n            never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Key\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Value\">\r\n            <summary>\r\n            Gets the current value from the enumerator.\r\n            </summary>\r\n            <value>The current value from the enumerator.</value>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Value\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Entry\">\r\n            <summary>\r\n            Gets the current entry from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current entry.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Entry\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Instance\">\r\n            <summary>\r\n            Get the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullSecurityContext\">\r\n            <summary>\r\n            A SecurityContext used when a SecurityContext is not required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Util.NullSecurityContext\"/> is a no-op implementation of the\r\n            <see cref=\"T:log4net.Core.SecurityContext\"/> base class. It is used where a <see cref=\"T:log4net.Core.SecurityContext\"/>\r\n            is required but one has not been provided.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullSecurityContext.Instance\">\r\n            <summary>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Private constructor for singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate this SecurityContext\r\n            </summary>\r\n            <param name=\"state\">State supplied by the caller</param>\r\n            <returns><c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            No impersonation is done and <c>null</c> is always returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.OnlyOnceErrorHandler\">\r\n            <summary>\r\n            Implements log4net's default error handling policy which consists \r\n            of emitting a message for the first error in an appender and \r\n            ignoring all subsequent errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The error message is processed using the LogLog sub-system.\r\n            </para>\r\n            <para>\r\n            This policy aims at protecting an otherwise working application\r\n            from being flooded with error messages when logging fails.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"prefix\">The prefix to use for each message.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class\r\n            with the specified prefix.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Reset\">\r\n            <summary>\r\n            Reset the error handler back to its initial disabled state.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Log an Error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <param name=\"e\">The exception.</param>\r\n            <param name=\"errorCode\">The internal error code.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the error information to <see cref=\"T:log4net.Util.LogLog\"/>'s Error method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\r\n            Log an Error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <param name=\"e\">The exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Prints the message and the stack trace of the exception on the standard\r\n            error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String)\">\r\n            <summary>\r\n            Log an error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <remarks>\r\n            <para>\r\n            Print a the error message passed as parameter on the standard\r\n            error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_enabledDate\">\r\n            <summary>\r\n            The date the error was recorded.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_firstTime\">\r\n            <summary>\r\n            Flag to indicate if it is the first error\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_message\">\r\n            <summary>\r\n            The message recorded during the first error.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_exception\">\r\n            <summary>\r\n            The exception recorded during the first error.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_errorCode\">\r\n            <summary>\r\n            The error code recorded during the first error.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_prefix\">\r\n            <summary>\r\n            String to prefix each message with\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the OnlyOnceErrorHandler class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.IsEnabled\">\r\n            <summary>\r\n            Is error logging enabled\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Is error logging enabled. Logging is only enabled for the\r\n            first error delivered to the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.EnabledDate\">\r\n            <summary>\r\n            The date the first error that trigged this error handler occured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorMessage\">\r\n            <summary>\r\n            The message from the first error that trigged this error handler.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.Exception\">\r\n            <summary>\r\n            The exception from the first error that trigged this error handler.\r\n            </summary>\r\n            <remarks>\r\n            May be <see langword=\"null\" />.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorCode\">\r\n            <summary>\r\n            The error code from the first error that trigged this error handler.\r\n            </summary>\r\n            <remarks>\r\n            Defaults to <see cref=\"F:log4net.Core.ErrorCode.GenericFailure\"/>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.OptionConverter\">\r\n            <summary>\r\n            A convenience class to convert property values to specific types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility functions for converting types and parsing values.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OptionConverter\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToBoolean(System.String,System.Boolean)\">\r\n            <summary>\r\n            Converts a string to a <see cref=\"T:System.Boolean\"/> value.\r\n            </summary>\r\n            <param name=\"argValue\">String to convert.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Boolean\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            If <paramref name=\"argValue\"/> is \"true\", then <c>true</c> is returned. \r\n            If <paramref name=\"argValue\"/> is \"false\", then <c>false</c> is returned. \r\n            Otherwise, <paramref name=\"defaultValue\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToFileSize(System.String,System.Int64)\">\r\n            <summary>\r\n            Parses a file size into a number.\r\n            </summary>\r\n            <param name=\"argValue\">String to parse.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Int64\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parses a file size of the form: number[KB|MB|GB] into a\r\n            long value. It is scaled with the appropriate multiplier.\r\n            </para>\r\n            <para>\r\n            <paramref name=\"defaultValue\"/> is returned when <paramref name=\"argValue\"/>\r\n            cannot be converted to a <see cref=\"T:System.Int64\"/> value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\r\n            Converts a string to an object.\r\n            </summary>\r\n            <param name=\"target\">The target type to convert to.</param>\r\n            <param name=\"txt\">The string to convert to an object.</param>\r\n            <returns>\r\n            The object converted from a string or <c>null</c> when the \r\n            conversion failed.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Converts a string to an object. Uses the converter registry to try\r\n            to convert the string value into the specified target type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.CanConvertTypeTo(System.Type,System.Type)\">\r\n            <summary>\r\n            Checks if there is an appropriate type conversion from the source type to the target type.\r\n            </summary>\r\n            <param name=\"sourceType\">The type to convert from.</param>\r\n            <param name=\"targetType\">The type to convert to.</param>\r\n            <returns><c>true</c> if there is a conversion from the source type to the target type.</returns>\r\n            <remarks>\r\n            Checks if there is an appropriate type conversion from the source type to the target type.\r\n            <para>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertTypeTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts an object to the target type.\r\n            </summary>\r\n            <param name=\"sourceInstance\">The object to convert to the target type.</param>\r\n            <param name=\"targetType\">The type to convert to.</param>\r\n            <returns>The converted object.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts an object to the target type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.InstantiateByClassName(System.String,System.Type,System.Object)\">\r\n            <summary>\r\n            Instantiates an object given a class name.\r\n            </summary>\r\n            <param name=\"className\">The fully qualified class name of the object to instantiate.</param>\r\n            <param name=\"superClass\">The class to which the new object should belong.</param>\r\n            <param name=\"defaultValue\">The object to return in case of non-fulfillment.</param>\r\n            <returns>\r\n            An instance of the <paramref name=\"className\"/> or <paramref name=\"defaultValue\"/>\r\n            if the object could not be instantiated.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Checks that the <paramref name=\"className\"/> is a subclass of\r\n            <paramref name=\"superClass\"/>. If that test fails or the object could\r\n            not be instantiated, then <paramref name=\"defaultValue\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.SubstituteVariables(System.String,System.Collections.IDictionary)\">\r\n            <summary>\r\n            Performs variable substitution in string <paramref name=\"value\"/> from the \r\n            values of keys found in <paramref name=\"props\"/>.\r\n            </summary>\r\n            <param name=\"value\">The string on which variable substitution is performed.</param>\r\n            <param name=\"props\">The dictionary to use to lookup variables.</param>\r\n            <returns>The result of the substitutions.</returns>\r\n            <remarks>\r\n            <para>\r\n            The variable substitution delimiters are <b>${</b> and <b>}</b>.\r\n            </para>\r\n            <para>\r\n            For example, if props contains <c>key=value</c>, then the call\r\n            </para>\r\n            <para>\r\n            <code lang=\"C#\">\r\n            string s = OptionConverter.SubstituteVariables(\"Value of key is ${key}.\");\r\n            </code>\r\n            </para>\r\n            <para>\r\n            will set the variable <c>s</c> to \"Value of key is value.\".\r\n            </para>\r\n            <para>\r\n            If no value could be found for the specified key, then substitution \r\n            defaults to an empty string.\r\n            </para>\r\n            <para>\r\n            For example, if system properties contains no value for the key\r\n            \"nonExistentKey\", then the call\r\n            </para>\r\n            <para>\r\n            <code lang=\"C#\">\r\n            string s = OptionConverter.SubstituteVariables(\"Value of nonExistentKey is [${nonExistentKey}]\");\r\n            </code>\r\n            </para>\r\n            <para>\r\n            will set <s>s</s> to \"Value of nonExistentKey is []\".\t \r\n            </para>\r\n            <para>\r\n            An Exception is thrown if <paramref name=\"value\"/> contains a start \r\n            delimiter \"${\" which is not balanced by a stop delimiter \"}\". \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ParseEnum(System.Type,System.String,System.Boolean)\">\r\n            <summary>\r\n            Converts the string representation of the name or numeric value of one or \r\n            more enumerated constants to an equivalent enumerated object.\r\n            </summary>\r\n            <param name=\"enumType\">The type to convert to.</param>\r\n            <param name=\"value\">The enum string value.</param>\r\n            <param name=\"ignoreCase\">If <c>true</c>, ignore case; otherwise, regard case.</param>\r\n            <returns>An object of type <paramref name=\"enumType\" /> whose value is represented by <paramref name=\"value\" />.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OptionConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the OptionConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser\">\r\n            <summary>\r\n            Most of the work of the <see cref=\"T:log4net.Layout.PatternLayout\"/> class\r\n            is delegated to the PatternParser class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>PatternParser</c> processes a pattern string and\r\n            returns a chain of <see cref=\"T:log4net.Util.PatternConverter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternParser\"/> class \r\n            with the specified pattern string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.Parse\">\r\n            <summary>\r\n            Parses the pattern into a chain of pattern converters.\r\n            </summary>\r\n            <returns>The head of a chain of pattern converters.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parses the pattern into a chain of pattern converters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.BuildCache\">\r\n            <summary>\r\n            Build the unified cache of converters from the static and instance maps\r\n            </summary>\r\n            <returns>the list of all the converter names</returns>\r\n            <remarks>\r\n            <para>\r\n            Build the unified cache of converters from the static and instance maps\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ParseInternal(System.String,System.String[])\">\r\n            <summary>\r\n            Internal method to parse the specified pattern to find specified matches\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <param name=\"matches\">the converter names to match in the pattern</param>\r\n            <remarks>\r\n            <para>\r\n            The matches param must be sorted such that longer strings come before shorter ones.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessLiteral(System.String)\">\r\n            <summary>\r\n            Process a parsed literal\r\n            </summary>\r\n            <param name=\"text\">the literal text</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessConverter(System.String,System.String,log4net.Util.FormattingInfo)\">\r\n            <summary>\r\n            Process a parsed converter pattern\r\n            </summary>\r\n            <param name=\"converterName\">the name of the converter</param>\r\n            <param name=\"option\">the optional option for the converter</param>\r\n            <param name=\"formattingInfo\">the formatting info for the converter</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.AddConverter(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Resets the internal state of the parser and adds the specified pattern converter \r\n            to the chain.\r\n            </summary>\r\n            <param name=\"pc\">The pattern converter to add.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_head\">\r\n            <summary>\r\n            The first pattern converter in the chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_tail\">\r\n            <summary>\r\n             the last pattern converter in the chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_pattern\">\r\n            <summary>\r\n            The pattern\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_patternConverters\">\r\n            <summary>\r\n            Internal map of converter identifiers to converter types\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This map overrides the static s_globalRulesRegistry map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the PatternParser class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternParser.PatternConverters\">\r\n            <summary>\r\n            Get the converter registry used by this parser\r\n            </summary>\r\n            <value>\r\n            The converter registry used by this parser\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the converter registry used by this parser\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser.StringLengthComparer\">\r\n            <summary>\r\n            Sort strings by length\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:System.Collections.IComparer\"/> that orders strings by string length.\r\n            The longest strings are placed first\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternString\">\r\n            <summary>\r\n            This class implements a patterned string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This string has embedded patterns that are resolved and expanded\r\n            when the string is formatted.\r\n            </para>\r\n            <para>\r\n            This class functions similarly to the <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            in that it accepts a pattern and renders it to a string. Unlike the \r\n            <see cref=\"T:log4net.Layout.PatternLayout\"/> however the <c>PatternString</c>\r\n            does not render the properties of a specific <see cref=\"T:log4net.Core.LoggingEvent\"/> but\r\n            of the process in general.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output the friendly name of the current AppDomain.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>date</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the current date and time in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>env</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the a specific environment variable. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%env{COMPUTERNAME}</b> would include the value\r\n            \t\t\tof the <c>COMPUTERNAME</c> environment variable.\r\n                        </para>\r\n                        <para>\r\n                        The <c>env</c> pattern is not supported on the .NET Compact Framework.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>identity</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>newline</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern name offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>processid</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the system process ID for the current process.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>property</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output a specific context property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are stored in logging contexts. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>random</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output a random string of characters. The string is made up of\r\n                        uppercase letters and numbers. By default the string is 4 characters long.\r\n                        The length of the string can be specified within braces directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%random{8}</b> would output an 8 character string.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>username</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>utcdate</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Util.PatternString\"/>\r\n            instance using <see cref=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\"/> or\r\n            <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/>.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.PatternLayout\"/> for details on the \r\n            <i>format modifiers</i> supported by the patterns.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.s_globalRulesRegistry\">\r\n            <summary>\r\n            Internal map of converter identifiers to converter types.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_pattern\">\r\n            <summary>\r\n            the pattern\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_head\">\r\n            <summary>\r\n            the head of the pattern converter chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_instanceRulesRegistry\">\r\n            <summary>\r\n            patterns defined on this PatternString only\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#cctor\">\r\n            <summary>\r\n            Initialize the global registry\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternString\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to use with this PatternString</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/> with the pattern specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.ActivateOptions\">\r\n            <summary>\r\n            Initialize object options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Returns PatternParser used to parse the conversion string. Subclasses\r\n            may override this to return a subclass of PatternParser which recognize\r\n            custom conversion pattern name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format(System.IO.TextWriter)\">\r\n            <summary>\r\n            Produces a formatted string as specified by the conversion pattern.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Format the pattern to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format\">\r\n            <summary>\r\n            Format the pattern as a string\r\n            </summary>\r\n            <returns>the pattern formatted as a string</returns>\r\n            <remarks>\r\n            <para>\r\n            Format the pattern to a string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternString\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\">\r\n            <summary>\r\n            Add a converter to this PatternString\r\n            </summary>\r\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\r\n            <param name=\"type\">the type of the converter</param>\r\n            <remarks>\r\n            <para>\r\n            Add a converter to this PatternString\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternString.ConversionPattern\">\r\n            <summary>\r\n            Gets or sets the pattern formatting string\r\n            </summary>\r\n            <value>\r\n            The pattern formatting string\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <b>ConversionPattern</b> option. This is the string which\r\n            controls formatting and consists of a mix of literal content and\r\n            conversion specifiers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PropertiesDictionary\">\r\n            <summary>\r\n            String keyed object map.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            While this collection is serializable only member \r\n            objects that are serializable will\r\n            be serialized along with this collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ReadOnlyPropertiesDictionary\">\r\n            <summary>\r\n            String keyed object map that is read only.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This collection is readonly and cannot be modified.\r\n            </para>\r\n            <para>\r\n            While this collection is serializable only member \r\n            objects that are serializable will\r\n            be serialized along with this collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ReadOnlyPropertiesDictionary.m_hashtable\">\r\n            <summary>\r\n            The Hashtable used to store the properties data\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Copy Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Deserialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetKeys\">\r\n            <summary>\r\n            Gets the key names.\r\n            </summary>\r\n            <returns>An array of all the keys.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the key names.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Contains(System.String)\">\r\n            <summary>\r\n            Test if the dictionary contains a specified key\r\n            </summary>\r\n            <param name=\"key\">the key to look for</param>\r\n            <returns>true if the dictionary contains the specified key</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the dictionary contains a specified key\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Clear\">\r\n            <summary>\r\n            Remove all properties from the properties collection\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <param name=\"value\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of the  property with the specified key.\r\n            </summary>\r\n            <value>\r\n            The value of the property with the specified key.\r\n            </value>\r\n            <param name=\"key\">The key of the property to get or set.</param>\r\n            <remarks>\r\n            <para>\r\n            The property value will only be serialized if it is serializable.\r\n            If it cannot be serialized it will be silently ignored if\r\n            a serialization operation is performed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.InnerHashtable\">\r\n            <summary>\r\n            The hashtable used to store the properties\r\n            </summary>\r\n            <value>\r\n            The internal collection used to store the properties\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The hashtable used to store the properties\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Item(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Count\">\r\n            <summary>\r\n            The number of properties in this collection\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Because this class is sealed the serialization constructor is private.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Remove(System.String)\">\r\n            <summary>\r\n            Remove the entry with the specified key from this dictionary\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the entry with the specified key from this dictionary\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n            <returns>an enumerator</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over the contest of this collection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the entry with the specified key from this dictionary\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to lookup in the collection</param>\r\n            <returns><c>true</c> if the collection contains the specified key</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this collection contains a specified key.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Clear\">\r\n            <summary>\r\n            Remove all properties from the properties collection\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Remove all properties from the properties collection\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key</param>\r\n            <param name=\"value\">the value to store for the key</param>\r\n            <remarks>\r\n            <para>\r\n            Store a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of the  property with the specified key.\r\n            </summary>\r\n            <value>\r\n            The value of the property with the specified key.\r\n            </value>\r\n            <param name=\"key\">The key of the property to get or set.</param>\r\n            <remarks>\r\n            <para>\r\n            The property value will only be serialized if it is serializable.\r\n            If it cannot be serialized it will be silently ignored if\r\n            a serialization operation is performed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n            <value>\r\n            <c>false</c>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This collection is modifiable. This property always\r\n            returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Item(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n            <value>\r\n            The value for the key specified.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PropertyEntry\">\r\n            <summary>\r\n            A class to hold the key and data for a property set in the config file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to hold the key and data for a property set in the config file\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertyEntry.ToString\">\r\n            <summary>\r\n            Override <c>Object.ToString</c> to return sensible debug info\r\n            </summary>\r\n            <returns>string info about this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Key\">\r\n            <summary>\r\n            Property Key\r\n            </summary>\r\n            <value>\r\n            Property Key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Property Key.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Value\">\r\n            <summary>\r\n            Property Value\r\n            </summary>\r\n            <value>\r\n            Property Value\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Property Value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ProtectCloseTextWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.TextWriter\"/> that ignores the <see cref=\"M:log4net.Util.ProtectCloseTextWriter.Close\"/> message\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer is used in special cases where it is necessary \r\n            to protect a writer from being closed by a client.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">the writer to actually write to</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new ProtectCloseTextWriter using a writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Attach(System.IO.TextWriter)\">\r\n            <summary>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to attach to</param>\r\n            <remarks>\r\n            <para>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Close\">\r\n            <summary>\r\n            Does not close the underlying output writer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Does not close the underlying output writer.\r\n            This method does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ReaderWriterLock\">\r\n            <summary>\r\n            Defines a lock that supports single writers and multiple readers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <c>ReaderWriterLock</c> is used to synchronize access to a resource. \r\n            At any given time, it allows either concurrent read access for \r\n            multiple threads, or write access for a single thread. In a \r\n            situation where a resource is changed infrequently, a \r\n            <c>ReaderWriterLock</c> provides better throughput than a simple \r\n            one-at-a-time lock, such as <see cref=\"T:System.Threading.Monitor\"/>.\r\n            </para>\r\n            <para>\r\n            If a platform does not support a <c>System.Threading.ReaderWriterLock</c> \r\n            implementation then all readers and writers are serialized. Therefore \r\n            the caller must not rely on multiple simultaneous readers.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReaderWriterLock\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\">\r\n            <summary>\r\n            Acquires a reader lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\"/> blocks if a different thread has the writer \r\n            lock, or if at least one thread is waiting for the writer lock.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\">\r\n            <summary>\r\n            Decrements the lock count\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\"/> decrements the lock count. When the count \r\n            reaches zero, the lock is released.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireWriterLock\">\r\n            <summary>\r\n            Acquires the writer lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method blocks if another thread has a reader lock or writer lock.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseWriterLock\">\r\n            <summary>\r\n            Decrements the lock count on the writer lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ReleaseWriterLock decrements the writer lock count. \r\n            When the count reaches zero, the writer lock is released.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ReusableStringWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused.\r\n            This uses a single buffer for string operations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.#ctor(System.IFormatProvider)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </summary>\r\n            <param name=\"formatProvider\">the format provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Dispose(System.Boolean)\">\r\n            <summary>\r\n            Override Dispose to prevent closing of writer\r\n            </summary>\r\n            <param name=\"disposing\">flag</param>\r\n            <remarks>\r\n            <para>\r\n            Override Dispose to prevent closing of writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\">\r\n            <summary>\r\n            Reset this string writer so that it can be reused.\r\n            </summary>\r\n            <param name=\"maxCapacity\">the maximum buffer capacity before it is trimmed</param>\r\n            <param name=\"defaultSize\">the default size to make the buffer</param>\r\n            <remarks>\r\n            <para>\r\n            Reset this string writer so that it can be reused.\r\n            The internal buffers are cleared and reset.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.SystemInfo\">\r\n            <summary>\r\n            Utility class for system specific information.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility class of static methods for system specific information.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Alexey Solofnenko</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#ctor\">\r\n            <summary>\r\n            Private constructor to prevent instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Only static methods are exposed from this type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#cctor\">\r\n            <summary>\r\n            Initialize default values for private static fields.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Only static methods are exposed from this type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyLocationInfo(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the assembly location path for the specified assembly.\r\n            </summary>\r\n            <param name=\"myAssembly\">The assembly to get the location for.</param>\r\n            <returns>The location of the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            This method does not guarantee to return the correct path\r\n            to the assembly. If only tries to give an indication as to\r\n            where the assembly was loaded from.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyQualifiedName(System.Type)\">\r\n            <summary>\r\n            Gets the fully qualified name of the <see cref=\"T:System.Type\"/>, including \r\n            the name of the assembly from which the <see cref=\"T:System.Type\"/> was \r\n            loaded.\r\n            </summary>\r\n            <param name=\"type\">The <see cref=\"T:System.Type\"/> to get the fully qualified name for.</param>\r\n            <returns>The fully qualified name for the <see cref=\"T:System.Type\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            This is equivalent to the <c>Type.AssemblyQualifiedName</c> property,\r\n            but this method works on the .NET Compact Framework 1.0 as well as\r\n            the full .NET runtime.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyShortName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the short name of the <see cref=\"T:System.Reflection.Assembly\"/>.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the name for.</param>\r\n            <returns>The short name of the <see cref=\"T:System.Reflection.Assembly\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            The short name of the assembly is the <see cref=\"P:System.Reflection.Assembly.FullName\"/> \r\n            without the version, culture, or public key. i.e. it is just the \r\n            assembly's file name without the extension.\r\n            </para>\r\n            <para>\r\n            Use this rather than <c>Assembly.GetName().Name</c> because that\r\n            is not available on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            Because of a FileIOPermission security demand we cannot do\r\n            the obvious Assembly.GetName().Name. We are allowed to get\r\n            the <see cref=\"P:System.Reflection.Assembly.FullName\"/> of the assembly so we \r\n            start from there and strip out just the assembly name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyFileName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the file name for.</param>\r\n            <returns>The file name of the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Type,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeType\">A sibling type to use to load the type.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified, it will be loaded from the assembly\r\n            containing the specified relative type. If the type is not found in the assembly \r\n            then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\t\t\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the\r\n            assembly that is directly calling this method. If the type is not found \r\n            in the assembly then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Reflection.Assembly,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeAssembly\">An assembly to load the type from.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the specified\r\n            assembly. If the type is not found in the assembly then all the loaded assemblies \r\n            will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.NewGuid\">\r\n            <summary>\r\n            Generate a new guid\r\n            </summary>\r\n            <returns>A new Guid</returns>\r\n            <remarks>\r\n            <para>\r\n            Generate a new guid\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateArgumentOutOfRangeException(System.String,System.Object,System.String)\">\r\n            <summary>\r\n            Create an <see cref=\"T:System.ArgumentOutOfRangeException\"/>\r\n            </summary>\r\n            <param name=\"parameterName\">The name of the parameter that caused the exception</param>\r\n            <param name=\"actualValue\">The value of the argument that causes this exception</param>\r\n            <param name=\"message\">The message that describes the error</param>\r\n            <returns>the ArgumentOutOfRangeException object</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new instance of the <see cref=\"T:System.ArgumentOutOfRangeException\"/> class \r\n            with a specified error message, the parameter name, and the value \r\n            of the argument.\r\n            </para>\r\n            <para>\r\n            The Compact Framework does not support the 3 parameter constructor for the\r\n            <see cref=\"T:System.ArgumentOutOfRangeException\"/> type. This method provides an\r\n            implementation that works for all platforms.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int32@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int32\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int64@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int64\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int16@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int16\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetAppSetting(System.String)\">\r\n            <summary>\r\n            Lookup an application setting\r\n            </summary>\r\n            <param name=\"key\">the application settings key to lookup</param>\r\n            <returns>the value for the key, or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Configuration APIs are not supported under the Compact Framework\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.ConvertToFullPath(System.String)\">\r\n            <summary>\r\n            Convert a path into a fully qualified local file path.\r\n            </summary>\r\n            <param name=\"path\">The path to convert.</param>\r\n            <returns>The fully qualified path.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the path specified to a fully\r\n            qualified path. If the path is relative it is\r\n            taken as relative from the application base \r\n            directory.\r\n            </para>\r\n            <para>\r\n            The path specified must be a local file path, a URI is not supported.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateCaseInsensitiveHashtable\">\r\n            <summary>\r\n            Creates a new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity. \r\n            </summary>\r\n            <returns>A new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity</returns>\r\n            <remarks>\r\n            <para>\r\n            The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.EmptyTypes\">\r\n            <summary>\r\n            Gets an empty array of types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>Type.EmptyTypes</c> field is not available on\r\n            the .NET Compact Framework 1.0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the SystemInfo class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_hostName\">\r\n            <summary>\r\n            Cache the host name for the current machine\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_appFriendlyName\">\r\n            <summary>\r\n            Cache the application friendly name\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_nullText\">\r\n            <summary>\r\n            Text to output when a <c>null</c> is encountered.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_notAvailableText\">\r\n            <summary>\r\n            Text to output when an unsupported feature is requested.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_processStartTime\">\r\n            <summary>\r\n            Start time for the current process.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NewLine\">\r\n            <summary>\r\n            Gets the system dependent line terminator.\r\n            </summary>\r\n            <value>\r\n            The system dependent line terminator.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the system dependent line terminator.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationBaseDirectory\">\r\n            <summary>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The base directory path for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ConfigurationFileLocation\">\r\n            <summary>\r\n            Gets the path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not have a concept of a configuration\r\n            file. For this runtime, we use the entry assembly location as the root for\r\n            the configuration file name.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.EntryAssemblyLocation\">\r\n            <summary>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the entry assembly.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.CurrentThreadId\">\r\n            <summary>\r\n            Gets the ID of the current thread.\r\n            </summary>\r\n            <value>The ID of the current thread.</value>\r\n            <remarks>\r\n            <para>\r\n            On the .NET framework, the <c>AppDomain.GetCurrentThreadId</c> method\r\n            is used to obtain the thread ID for the current thread. This is the \r\n            operating system ID for the thread.\r\n            </para>\r\n            <para>\r\n            On the .NET Compact Framework 1.0 it is not possible to get the \r\n            operating system thread ID for the current thread. The native method \r\n            <c>GetCurrentThreadId</c> is implemented inline in a header file\r\n            and cannot be called.\r\n            </para>\r\n            <para>\r\n            On the .NET Framework 2.0 the <c>Thread.ManagedThreadId</c> is used as this\r\n            gives a stable id unrelated to the operating system thread ID which may \r\n            change if the runtime is using fibers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.HostName\">\r\n            <summary>\r\n            Get the host name or machine name for the current machine\r\n            </summary>\r\n            <value>\r\n            The hostname or machine name\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the host name or machine name for the current machine\r\n            </para>\r\n            <para>\r\n            The host name (<see cref=\"M:System.Net.Dns.GetHostName\"/>) or\r\n            the machine name (<c>Environment.MachineName</c>) for\r\n            the current machine, or if neither of these are available\r\n            then <c>NOT AVAILABLE</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\">\r\n            <summary>\r\n            Get this application's friendly name\r\n            </summary>\r\n            <value>\r\n            The friendly name of this application as a string\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If available the name of the application is retrieved from\r\n            the <c>AppDomain</c> using <c>AppDomain.CurrentDomain.FriendlyName</c>.\r\n            </para>\r\n            <para>\r\n            Otherwise the file name of the entry assembly is used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ProcessStartTime\">\r\n            <summary>\r\n            Get the start time for the current process.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the time at which the log4net library was loaded into the\r\n            AppDomain. Due to reports of a hang in the call to <c>System.Diagnostics.Process.StartTime</c>\r\n            this is not the start time for the current process.\r\n            </para>\r\n            <para>\r\n            The log4net library should be loaded by an application early during its\r\n            startup, therefore this start time should be a good approximation for\r\n            the actual start time.\r\n            </para>\r\n            <para>\r\n            Note that AppDomains may be loaded and unloaded within the\r\n            same process without the process terminating, however this start time\r\n            will be set per AppDomain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NullText\">\r\n            <summary>\r\n            Text to output when a <c>null</c> is encountered.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use this value to indicate a <c>null</c> has been encountered while\r\n            outputting a string representation of an item.\r\n            </para>\r\n            <para>\r\n            The default value is <c>(null)</c>. This value can be overridden by specifying\r\n            a value for the <c>log4net.NullText</c> appSetting in the application's\r\n            .config file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NotAvailableText\">\r\n            <summary>\r\n            Text to output when an unsupported feature is requested.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use this value when an unsupported feature is requested.\r\n            </para>\r\n            <para>\r\n            The default value is <c>NOT AVAILABLE</c>. This value can be overridden by specifying\r\n            a value for the <c>log4net.NotAvailableText</c> appSetting in the application's\r\n            .config file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.SystemStringFormat\">\r\n            <summary>\r\n            Utility class that represents a format string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility class that represents a format string.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.#ctor(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Initialise the <see cref=\"T:log4net.Util.SystemStringFormat\"/>\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.ToString\">\r\n            <summary>\r\n            Format the string and arguments\r\n            </summary>\r\n            <returns>the formatted string</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Replaces the format item in a specified <see cref=\"T:System.String\"/> with the text equivalent \r\n            of the value of a corresponding <see cref=\"T:System.Object\"/> instance in a specified array.\r\n            A specified parameter supplies culture-specific formatting information.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n            <returns>\r\n            A copy of format in which the format items have been replaced by the <see cref=\"T:System.String\"/> \r\n            equivalent of the corresponding instances of <see cref=\"T:System.Object\"/> in args.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            This method does not throw exceptions. If an exception thrown while formatting the result the\r\n            exception and arguments are returned in the result string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormatError(System.Exception,System.String,System.Object[])\">\r\n            <summary>\r\n            Process an error during StringFormat\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderArray(System.Array,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Dump the contents of an array into a string builder\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderObject(System.Object,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Dump an object to a string\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemStringFormat.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the SystemStringFormat class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextProperties.s_threadLocalSlot\">\r\n            <summary>\r\n            The thread local data slot to use to store a PropertiesDictionary.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Remove(System.String)\">\r\n            <summary>\r\n            Remove a property\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove a property\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Clear\">\r\n            <summary>\r\n            Clear all properties\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear all properties\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\r\n            Get the <c>PropertiesDictionary</c> for this thread.\r\n            </summary>\r\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\r\n            <returns>the properties for this thread</returns>\r\n            <remarks>\r\n            <para>\r\n            The collection returned is only to be used on the calling thread. If the\r\n            caller needs to share the collection between different threads then the \r\n            caller must clone the collection before doing so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the value of a property\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack\">\r\n            <summary>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.m_stack\">\r\n            <summary>\r\n            The stack store.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held in this stack.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears all the contextual information held in this stack.\r\n            Only call this if you think that this tread is being reused after\r\n            a previous call execution which may not have completed correctly.\r\n            You do not need to use this method if you always guarantee to call\r\n            the <see cref=\"M:System.IDisposable.Dispose\"/> method of the <see cref=\"T:System.IDisposable\"/>\r\n            returned from <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> even in exceptional circumstances,\r\n            for example by using the <c>using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))</c> \r\n            syntax.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Pop\">\r\n            <summary>\r\n            Removes the top context from this stack.\r\n            </summary>\r\n            <returns>The message in the context that was removed from the top of this stack.</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the top context from this stack, and return\r\n            it to the caller. If this stack is empty then an\r\n            empty string (not <see langword=\"null\"/>) is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message into this stack.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Pushes a new context onto this stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up this stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an ThreadContext Stack message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.GetFullMessage\">\r\n            <summary>\r\n            Gets the current context information for this stack.\r\n            </summary>\r\n            <returns>The current context information.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.ToString\">\r\n            <summary>\r\n            Gets the current context information for this stack.\r\n            </summary>\r\n            <returns>Gets the current context information</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the current context information for this stack.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.log4net#Core#IFixingRequired#GetFixedObject\">\r\n            <summary>\r\n            Get a portable version of this object\r\n            </summary>\r\n            <returns>the portable instance of this object</returns>\r\n            <remarks>\r\n            <para>\r\n            Get a cross thread portable version of this object\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.Count\">\r\n            <summary>\r\n            The number of messages in the stack\r\n            </summary>\r\n            <value>\r\n            The current number of messages in the stack\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The current number of messages in the stack. That is\r\n            the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> has been called\r\n            minus the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Pop\"/> has been called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.InternalStack\">\r\n            <summary>\r\n            Gets and sets the internal stack used by this <see cref=\"T:log4net.Util.ThreadContextStack\"/>\r\n            </summary>\r\n            <value>The internal storage stack</value>\r\n            <remarks>\r\n            <para>\r\n            This property is provided only to support backward compatability \r\n            of the <see cref=\"T:log4net.NDC\"/>. Tytpically the internal stack should not\r\n            be modified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.StackFrame\">\r\n            <summary>\r\n            Inner class used to represent a single context frame in the stack.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Inner class used to represent a single context frame in the stack.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.StackFrame.#ctor(System.String,log4net.Util.ThreadContextStack.StackFrame)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">The message for this context.</param>\r\n            <param name=\"parent\">The parent context in the chain.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.StackFrame\"/> class\r\n            with the specified message and parent context.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.Message\">\r\n            <summary>\r\n            Get the message.\r\n            </summary>\r\n            <value>The message.</value>\r\n            <remarks>\r\n            <para>\r\n            Get the message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.FullMessage\">\r\n            <summary>\r\n            Gets the full text of the context down to the root level.\r\n            </summary>\r\n            <value>\r\n            The full text of the context down to the root level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the full text of the context down to the root level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\">\r\n            <summary>\r\n            Struct returned from the <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This struct implements the <see cref=\"T:System.IDisposable\"/> and is designed to be used\r\n            with the <see langword=\"using\"/> pattern to remove the stack frame at the end of the scope.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameStack\">\r\n            <summary>\r\n            The ThreadContextStack internal stack\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameDepth\">\r\n            <summary>\r\n            The depth to trim the stack to when this instance is disposed\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.#ctor(System.Collections.Stack,System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"frameStack\">The internal stack used by the ThreadContextStack.</param>\r\n            <param name=\"frameDepth\">The depth to return the stack to when this object is disposed.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\"/> class with\r\n            the specified stack and return depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.Dispose\">\r\n            <summary>\r\n            Returns the stack to the correct depth.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Returns the stack to the correct depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStacks\">\r\n            <summary>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStacks.#ctor(log4net.Util.ContextPropertiesBase)\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStacks\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStacks.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the ThreadContextStacks class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStacks.Item(System.String)\">\r\n            <summary>\r\n            Gets the named thread context stack\r\n            </summary>\r\n            <value>\r\n            The named stack\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the named thread context stack\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.Transform\">\r\n            <summary>\r\n            Utility class for transforming strings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility class for transforming strings.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.Transform\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.WriteEscapedXmlString(System.Xml.XmlWriter,System.String,System.String)\">\r\n            <summary>\r\n            Write a string to an <see cref=\"T:System.Xml.XmlWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"textData\">the string to write</param>\r\n            <param name=\"invalidCharReplacement\">The string to replace non XML compliant chars with</param>\r\n            <remarks>\r\n            <para>\r\n            The test is escaped either using XML escape entities\r\n            or using CDATA sections.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.MaskXmlInvalidCharacters(System.String,System.String)\">\r\n            <summary>\r\n            Replace invalid XML characters in text string\r\n            </summary>\r\n            <param name=\"textData\">the XML text input string</param>\r\n            <param name=\"mask\">the string to use in place of invalid characters</param>\r\n            <returns>A string that does not contain invalid XML characters.</returns>\r\n            <remarks>\r\n            <para>\r\n            Certain Unicode code points are not allowed in the XML InfoSet, for\r\n            details see: <a href=\"http://www.w3.org/TR/REC-xml/#charsets\">http://www.w3.org/TR/REC-xml/#charsets</a>.\r\n            </para>\r\n            <para>\r\n            This method replaces any illegal characters in the input string\r\n            with the mask string specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.CountSubstrings(System.String,System.String)\">\r\n            <summary>\r\n            Count the number of times that the substring occurs in the text\r\n            </summary>\r\n            <param name=\"text\">the text to search</param>\r\n            <param name=\"substring\">the substring to find</param>\r\n            <returns>the number of times the substring occurs in the text</returns>\r\n            <remarks>\r\n            <para>\r\n            The substring is assumed to be non repeating within itself.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.Transform.INVALIDCHARS\">\r\n            <summary>\r\n            Characters illegal in XML 1.0\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext\">\r\n            <summary>\r\n            Impersonate a Windows Account\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.SecurityContext\"/> impersonates a Windows account.\r\n            </para>\r\n            <para>\r\n            How the impersonation is done depends on the value of <see cref=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\"/>.\r\n            This allows the context to either impersonate a set of user credentials specified \r\n            using username, domain name and password or to revert to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\">\r\n            <summary>\r\n            Initialize the SecurityContext based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The security context will try to Logon the specified user account and\r\n            capture a primary token for impersonation.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, \r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> or <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/> properties were not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <param name=\"state\">caller provided state</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> instance that will revoke the impersonation of this SecurityContext\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Depending on the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property either\r\n            impersonate a user using credentials supplied or revert \r\n            to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.LogonUser(System.String,System.String,System.String)\">\r\n            <summary>\r\n            Create a <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> given the userName, domainName and password.\r\n            </summary>\r\n            <param name=\"userName\">the user name</param>\r\n            <param name=\"domainName\">the domain name</param>\r\n            <param name=\"password\">the password</param>\r\n            <returns>the <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> for the account specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the Windows API call LogonUser to get a principal token for the account. This\r\n            token is used to initialize the WindowsIdentity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Credentials\">\r\n            <summary>\r\n            Gets or sets the impersonation mode for this security context\r\n            </summary>\r\n            <value>\r\n            The impersonation mode for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Impersonate either a user with user credentials or\r\n            revert this thread to the credentials of the process.\r\n            The value is one of the <see cref=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\"/>\r\n            enum.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            the user's credentials are established using the\r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/>\r\n            values.\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\"/>\r\n            no other properties need to be set. If the calling thread is \r\n            impersonating then it will be reverted back to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.UserName\">\r\n            <summary>\r\n            Gets or sets the Windows username for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows username for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.DomainName\">\r\n            <summary>\r\n            Gets or sets the Windows domain name for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows domain name for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value for <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> is the local machine name\r\n            taken from the <see cref=\"P:System.Environment.MachineName\"/> property.\r\n            </para>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Password\">\r\n            <summary>\r\n            Sets the password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <value>\r\n            The password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\">\r\n            <summary>\r\n            The impersonation modes for the <see cref=\"T:log4net.Util.WindowsSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property for\r\n            details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\">\r\n            <summary>\r\n            Impersonate a user using the credentials supplied\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\">\r\n            <summary>\r\n            Revert this the thread to the credentials of the process\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext\">\r\n            <summary>\r\n            Adds <see cref=\"T:System.IDisposable\"/> to <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Helper class to expose the <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            through the <see cref=\"T:System.IDisposable\"/> interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.#ctor(System.Security.Principal.WindowsImpersonationContext)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"impersonationContext\">the impersonation context being wrapped</param>\r\n            <remarks>\r\n            <para>\r\n            Constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.Dispose\">\r\n            <summary>\r\n            Revert the impersonation\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Revert the impersonation\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.GlobalContext\">\r\n            <summary>\r\n            The log4net Global Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>GlobalContext</c> provides a location for global debugging \r\n            information to be stored.\r\n            </para>\r\n            <para>\r\n            The global context has a properties map and these properties can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputing these properties.\r\n            </para>\r\n            <para>\r\n            By default the <c>log4net:HostName</c> property is set to the name of \r\n            the current machine.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <code lang=\"C#\">\r\n            GlobalContext.Properties[\"hostname\"] = Environment.MachineName;\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.GlobalContext.#ctor\">\r\n            <summary>\r\n            Private Constructor. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.GlobalContext.s_properties\">\r\n            <summary>\r\n            The global context properties instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.GlobalContext.Properties\">\r\n            <summary>\r\n            The global properties map.\r\n            </summary>\r\n            <value>\r\n            The global properties map.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The global properties map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.AssemblyInfo\">\r\n            <summary>\r\n            Provides information about the environment the assembly has\r\n            been built for.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.Version\">\r\n            <summary>Version of the assembly</summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFrameworkVersion\">\r\n            <summary>Version of the framework targeted</summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFramework\">\r\n            <summary>Type of framework targeted</summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.ClientProfile\">\r\n            <summary>Does it target a client profile?</summary>\r\n        </member>\r\n        <member name=\"P:log4net.AssemblyInfo.Info\">\r\n            <summary>\r\n            Identifies the version and target for this assembly.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.LogicalThreadContext\">\r\n            <summary>\r\n            The log4net Logical Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> provides a location for <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> specific debugging \r\n            information to be stored.\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> or <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context provides a diagnostic context for the current call context. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context is managed on a per <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> basis.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            LogicalThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a LogicalThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(LogicalThreadContext.Stacks[\"LDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a LogicalThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogicalThreadContext.#ctor\">\r\n            <summary>\r\n            Private Constructor. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_properties\">\r\n            <summary>\r\n            The thread context properties instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_stacks\">\r\n            <summary>\r\n            The thread context stacks instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> \r\n            or <see cref=\"T:log4net.GlobalContext\"/> properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Stacks\">\r\n            <summary>\r\n            The thread stacks\r\n            </summary>\r\n            <value>\r\n            stack map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The logical thread stacks.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.LogManager\">\r\n            <summary>\r\n            This class is used by client applications to request logger instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class has static methods that are used by a client to request\r\n            a logger instance. The <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method is \r\n            used to retrieve a logger.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.ILog\"/> interface for more details.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <seealso cref=\"T:log4net.ILog\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.LogManager\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String)\">\r\n            <overloads>Returns the named logger if it exists.</overloads>\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the default repository) then it\r\n            returns a reference to the logger, otherwise it returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>The logger found, or <c>null</c> if no logger could be found.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the specified repository) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger found, or <c>null</c> if the logger doesn't exist in the specified \r\n            repository.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the repository for the specified assembly) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger, or <c>null</c> if the logger doesn't exist in the specified\r\n            assembly's repository.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers\">\r\n            <overloads>Get the currently defined loggers.</overloads>\r\n            <summary>\r\n            Returns all the currently defined loggers in the default repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>The root logger is <b>not</b> included in the returned array.</para>\r\n            </remarks>\r\n            <returns>All the defined loggers.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <remarks>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </remarks>\r\n            <returns>All the defined loggers.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified assembly's repository.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <remarks>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </remarks>\r\n            <returns>All the defined loggers.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String)\">\r\n            <overloads>Get or create a logger.</overloads>\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Retrieves a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Retrieve a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Retrieve a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Get the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Shutdown\">\r\n            <summary>\r\n            Shuts down the log4net system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in all the\r\n            default repositories.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository\">\r\n            <overloads>Shutdown a logger repository.</overloads>\r\n            <summary>\r\n            Shuts down the default repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            default repository.\r\n            </para>\r\n            <para>Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.String)\">\r\n            <summary>\r\n            Shuts down the repository for the repository specified.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            <paramref name=\"repository\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to shutdown.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Shuts down the repository specified.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            repository. The repository is looked up using\r\n            the <paramref name=\"repositoryAssembly\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration\">\r\n            <overloads>Reset the configuration of a repository</overloads>\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository\">\r\n            <overloads>Get the logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository\">\r\n            <overloads>Get a logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Type)\">\r\n            <overloads>Create a domain</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Type)\">\r\n            <overloads>Create a logger repository.</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets the list of currently defined repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get an array of all the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects that have been created.\r\n            </para>\r\n            </remarks>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLogger(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Looks up the wrapper object for the logger specified.\r\n            </summary>\r\n            <param name=\"logger\">The logger to get the wrapper for.</param>\r\n            <returns>The wrapper for the logger specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLoggers(log4net.Core.ILogger[])\">\r\n            <summary>\r\n            Looks up the wrapper objects for the loggers specified.\r\n            </summary>\r\n            <param name=\"loggers\">The loggers to get the wrappers for.</param>\r\n            <returns>The wrapper objects for the loggers specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapperCreationHandler(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects used by\r\n            this manager.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <returns>The wrapper for the logger specified.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.LogManager.s_wrapperMap\">\r\n            <summary>\r\n            The wrapper map to use to hold the <see cref=\"T:log4net.Core.LogImpl\"/> objects.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.MDC\">\r\n            <summary>\r\n            Implementation of Mapped Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The MDC class is similar to the <see cref=\"T:log4net.NDC\"/> class except that it is\r\n            based on a map instead of a stack. It provides <i>mapped\r\n            diagnostic contexts</i>. A <i>Mapped Diagnostic Context</i>, or\r\n            MDC in short, is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The MDC is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.MDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Get(System.String)\">\r\n            <summary>\r\n            Gets the context value identified by the <paramref name=\"key\"/> parameter.\r\n            </summary>\r\n            <param name=\"key\">The key to lookup in the MDC.</param>\r\n            <returns>The string value held for the key, or a <c>null</c> reference if no corresponding value is found.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            If the <paramref name=\"key\"/> parameter does not look up to a\r\n            previously defined context then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Set(System.String,System.String)\">\r\n            <summary>\r\n            Add an entry to the MDC\r\n            </summary>\r\n            <param name=\"key\">The key to store the value under.</param>\r\n            <param name=\"value\">The value to store.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Puts a context value (the <paramref name=\"value\"/> parameter) as identified\r\n            with the <paramref name=\"key\"/> parameter into the current thread's\r\n            context map.\r\n            </para>\r\n            <para>\r\n            If a value is already defined for the <paramref name=\"key\"/>\r\n            specified then the value will be replaced. If the <paramref name=\"value\"/> \r\n            is specified as <c>null</c> then the key value mapping will be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Remove(System.String)\">\r\n            <summary>\r\n            Removes the key value mapping for the key specified.\r\n            </summary>\r\n            <param name=\"key\">The key to remove.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the specified entry from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Clear\">\r\n            <summary>\r\n            Clear all entries in the MDC\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove all the entries from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.NDC\">\r\n            <summary>\r\n            Implementation of Nested Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            A Nested Diagnostic Context, or NDC in short, is an instrument\r\n            to distinguish interleaved log output from different sources. Log\r\n            output is typically interleaved when a server handles multiple\r\n            clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            Interleaved log output can still be meaningful if each log entry\r\n            from different contexts had a distinctive stamp. This is where NDCs\r\n            come into play.\r\n            </para>\r\n            <para>\r\n            Note that NDCs are managed on a per thread basis. The NDC class\r\n            is made up of static methods that operate on the context of the\r\n            calling thread.\r\n            </para>\r\n            </remarks>\r\n            <example>How to push a message into the context\r\n            <code lang=\"C#\">\r\n            using(NDC.Push(\"my context message\"))\r\n            {\r\n            \t... all log calls will have 'my context message' included ...\r\n            \r\n            } // at the end of the using block the message is automatically removed \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.NDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held on the current thread.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Clears the stack of NDC data held on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.CloneStack\">\r\n            <summary>\r\n            Creates a clone of the stack of context information.\r\n            </summary>\r\n            <returns>A clone of the context info for this thread.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The results of this method can be passed to the <see cref=\"M:log4net.NDC.Inherit(System.Collections.Stack)\"/> \r\n            method to allow child threads to inherit the context of their \r\n            parent thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Inherit(System.Collections.Stack)\">\r\n            <summary>\r\n            Inherits the contextual information from another thread.\r\n            </summary>\r\n            <param name=\"stack\">The context stack to inherit.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This thread will use the context information from the stack\r\n            supplied. This can be used to initialize child threads with\r\n            the same contextual information as their parent threads. These\r\n            contexts will <b>NOT</b> be shared. Any further contexts that\r\n            are pushed onto the stack will not be visible to the other.\r\n            Call <see cref=\"M:log4net.NDC.CloneStack\"/> to obtain a stack to pass to\r\n            this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Pop\">\r\n            <summary>\r\n            Removes the top context from the stack.\r\n            </summary>\r\n            <returns>\r\n            The message in the context that was removed from the top \r\n            of the stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the top context from the stack, and return\r\n            it to the caller. If the stack is empty then an\r\n            empty string (not <c>null</c>) is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up \r\n            the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Pushes a new context onto the context stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up the context stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.NDC.Push(\"NDC_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an NDC message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Remove\">\r\n            <summary>\r\n            Removes the context information for this thread. It is\r\n            not required to call this method.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This method is not implemented.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.SetMaxDepth(System.Int32)\">\r\n            <summary>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            </summary>\r\n            <param name=\"maxDepth\">The maximum depth of the stack</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            This may truncate the head of the stack. This only affects the \r\n            stack in the current thread. Also it does not prevent it from\r\n            growing, it only sets the maximum depth at the time of the\r\n            call. This can be used to return to a known context depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.NDC.Depth\">\r\n            <summary>\r\n            Gets the current context depth.\r\n            </summary>\r\n            <value>The current context depth.</value>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The number of context values pushed onto the context stack.\r\n            </para>\r\n            <para>\r\n            Used to record the current depth of the context. This can then \r\n            be restored using the <see cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.ThreadContext\">\r\n            <summary>\r\n            The log4net Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> provides a location for thread specific debugging \r\n            information to be stored.\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The thread context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Thread Context provides a diagnostic context for the current thread. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Thread Context is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            ThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a ThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(ThreadContext.Stacks[\"NDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a ThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.ThreadContext.#ctor\">\r\n            <summary>\r\n            Private Constructor. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_properties\">\r\n            <summary>\r\n            The thread context properties instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_stacks\">\r\n            <summary>\r\n            The thread context stacks instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Stacks\">\r\n            <summary>\r\n            The thread stacks\r\n            </summary>\r\n            <value>\r\n            stack map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The thread local stacks.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n    </members>\r\n</doc>\r\n"
  },
  {
    "path": "Tools/ThirdParty/log4net/3.5/release/log4net.xml",
    "content": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>log4net</name>\r\n    </assembly>\r\n    <members>\r\n        <member name=\"T:log4net.Appender.AdoNetAppender\">\r\n            <summary>\r\n            Appender that logs to a database.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> appends logging events to a table within a\r\n            database. The appender can be configured to specify the connection \r\n            string by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionString\"/> property. \r\n            The connection type (provider) can be specified by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/>\r\n            property. For more information on database connection strings for\r\n            your specific database see <a href=\"http://www.connectionstrings.com/\">http://www.connectionstrings.com/</a>.\r\n            </para>\r\n            <para>\r\n            Records are written into the database either using a prepared\r\n            statement or a stored procedure. The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property\r\n            is set to <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement\r\n            or to <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored\r\n            procedure.\r\n            </para>\r\n            <para>\r\n            The prepared statement text or the name of the stored procedure\r\n            must be set in the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property.\r\n            </para>\r\n            <para>\r\n            The prepared statement or stored procedure can take a number\r\n            of parameters. Parameters are added using the <see cref=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\"/>\r\n            method. This adds a single <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> to the\r\n            ordered list of parameters. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/>\r\n            type may be subclassed if required to provide database specific\r\n            functionality. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> specifies\r\n            the parameter name, database type, size, and how the value should\r\n            be generated using a <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            An example of a SQL Server table that could be logged to:\r\n            <code lang=\"SQL\">\r\n            CREATE TABLE [dbo].[Log] ( \r\n              [ID] [int] IDENTITY (1, 1) NOT NULL ,\r\n              [Date] [datetime] NOT NULL ,\r\n              [Thread] [varchar] (255) NOT NULL ,\r\n              [Level] [varchar] (20) NOT NULL ,\r\n              [Logger] [varchar] (255) NOT NULL ,\r\n              [Message] [varchar] (4000) NOT NULL \r\n            ) ON [PRIMARY]\r\n            </code>\r\n            </example>\r\n            <example>\r\n            An example configuration to log to the above table:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"AdoNetAppender_SqlServer\" type=\"log4net.Appender.AdoNetAppender\">\r\n              <connectionType value=\"System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"/>\r\n              <connectionString value=\"data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa\"/>\r\n              <commandText value=\"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)\"/>\r\n              <parameter>\r\n                <parameterName value=\"@log_date\"/>\r\n                <dbType value=\"DateTime\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@thread\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%thread\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@log_level\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"50\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%level\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@logger\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%logger\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@message\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"4000\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%message\"/>\r\n              </parameter>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Lance Nehring</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingAppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/> that \r\n            buffers events in a fixed size buffer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This base class should be used by appenders that need to buffer a \r\n            number of events before logging them. For example the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            buffers events and then submits the entire contents of the buffer to \r\n            the underlying database in one go.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>\r\n            method to deliver the buffered events.\r\n            </para>\r\n            <para>The BufferingAppenderSkeleton maintains a fixed size cyclic \r\n            buffer of events. The size of the buffer is set using \r\n            the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> property.\r\n            </para>\r\n            <para>A <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> is used to inspect \r\n            each event as it arrives in the appender. If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> \r\n            triggers, then the current buffer is sent immediately \r\n            (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>). Otherwise the event \r\n            is stored in the buffer. For example, an evaluator can be used to \r\n            deliver the events immediately when an ERROR event arrives.\r\n            </para>\r\n            <para>\r\n            The buffering appender can be configured in a <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode. \r\n            By default the appender is NOT lossy. When the buffer is full all \r\n            the buffered events are sent with <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property is set to <c>true</c> then the \r\n            buffer will not be sent when it is full, and new events arriving \r\n            in the appender will overwrite the oldest event in the buffer. \r\n            In lossy mode the buffer will only be sent when the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/>\r\n            triggers. This can be useful behavior when you need to know about \r\n            ERROR events but not about events with a lower level, configure an \r\n            evaluator that will trigger when an ERROR event arrives, the whole \r\n            buffer will be sent which gives a history of events leading up to\r\n            the ERROR event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the code for common functionality, such \r\n            as support for threshold filtering and support for general filters.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.IAppender\">\r\n            <summary>\r\n            Implement this interface for your own strategies for printing log statements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementors should consider extending the <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>\r\n            class which provides a default implementation of this interface.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.Close\">\r\n            <summary>\r\n            Closes the appender and releases resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logging event in Appender specific way.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called to log a message into this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.IAppender.Name\">\r\n            <summary>\r\n            Gets or sets the name of this appender.\r\n            </summary>\r\n            <value>The name of the appender.</value>\r\n            <remarks>\r\n            <para>The name uniquely identifies the appender.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.IBulkAppender\">\r\n            <summary>\r\n            Interface for appenders that support bulk logging.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface extends the <see cref=\"T:log4net.Appender.IAppender\"/> interface to\r\n            support bulk logging of <see cref=\"T:log4net.Core.LoggingEvent\"/> objects. Appenders\r\n            should only implement this interface if they can bulk log efficiently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Log the array of logging events in Appender specific way.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The events to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called to log an array of events into this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IOptionHandler\">\r\n            <summary>\r\n            Interface used to delay activate a configured object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This allows an object to defer activation of its options until all\r\n            options have been set. This is required for components which have\r\n            related options that remain ambiguous until all are set.\r\n            </para>\r\n            <para>\r\n            If a component implements this interface then the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method \r\n            must be called by the container after its all the configured properties have been set \r\n            and before the component can be used.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IOptionHandler.ActivateOptions\">\r\n            <summary>\r\n            Activate the options that were previously set with calls to properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This allows an object to defer activation of its options until all\r\n            options have been set. This is required for components which have\r\n            related options that remain ambiguous until all are set.\r\n            </para>\r\n            <para>\r\n            If a component implements this interface then this method must be called\r\n            after its properties have been set before the component can be used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferSize\">\r\n            <summary>\r\n            Initial buffer size\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity\">\r\n            <summary>\r\n            Maximum buffer size before it is recycled\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>Empty default constructor</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Finalize\">\r\n            <summary>\r\n            Finalizes this appender by calling the implementation's \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If this appender has not been closed then the <c>Finalize</c> method\r\n            will call <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Close\">\r\n            <summary>\r\n            Closes the appender and release resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            <para>\r\n            This method cannot be overridden by subclasses. This method \r\n            delegates the closing of the appender to the <see cref=\"M:log4net.Appender.AppenderSkeleton.OnClose\"/>\r\n            method which must be overridden in the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvent\"/>\r\n            will be passed to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvents\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvents\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvents\"/>\r\n            will be passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.FilterEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Test if the logging event should we output by this appender\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to test</param>\r\n            <returns><c>true</c> if the event should be output, <c>false</c> if the event should be ignored</returns>\r\n            <remarks>\r\n            <para>\r\n            This method checks the logging event against the threshold level set\r\n            on this appender and also against the filters specified on this\r\n            appender.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.AddFilter(log4net.Filter.IFilter)\">\r\n            <summary>\r\n            Adds a filter to the end of the filter chain.\r\n            </summary>\r\n            <param name=\"filter\">the filter to add to this appender</param>\r\n            <remarks>\r\n            <para>\r\n            The Filters are organized in a linked list.\r\n            </para>\r\n            <para>\r\n            Setting this property causes the new filter to be pushed onto the \r\n            back of the filter chain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ClearFilters\">\r\n            <summary>\r\n            Clears the filter list for this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears the filter list for this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.IsAsSevereAsThreshold(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if the message level is below this appender's threshold.\r\n            </summary>\r\n            <param name=\"level\"><see cref=\"T:log4net.Core.Level\"/> to test against.</param>\r\n            <remarks>\r\n            <para>\r\n            If there is no threshold set, then the return value is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the <paramref name=\"level\"/> meets the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> \r\n            requirements of this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.OnClose\">\r\n            <summary>\r\n            Is called when the appender is closed. Derived classes should override \r\n            this method if resources need to be released.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Subclasses of <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> should implement this method \r\n            to perform actual logging.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to append.</param>\r\n            <remarks>\r\n            <para>\r\n            A subclass must implement this method to perform\r\n            logging of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            <para>This method will be called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            if all the conditions listed for that method are met.\r\n            </para>\r\n            <para>\r\n            To restrict the logging of events in the appender\r\n            override the <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append a bulk array of logging events.\r\n            </summary>\r\n            <param name=\"loggingEvents\">the array of logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This base class implementation calls the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>\r\n            method for each element in the bulk array.\r\n            </para>\r\n            <para>\r\n            A sub class that can better process a bulk array of events should\r\n            override this method in addition to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\">\r\n            <summary>\r\n            Called before <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> as a precondition.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            before the call to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden in a subclass to extend the checks \r\n            made before the event is passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            A subclass should ensure that they delegate this call to\r\n            this base class if it is overridden.\r\n            </para>\r\n            </remarks>\r\n            <returns><c>true</c> if the call to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> should proceed.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <returns>The event rendered as a string.</returns>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Where possible use the alternative version of this method\r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>.\r\n            That method streams the rendering onto an existing Writer\r\n            which can give better performance if the caller already has\r\n            a <see cref=\"T:System.IO.TextWriter\"/> open and ready for writing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Use this method in preference to <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/>\r\n            where possible. If, however, the caller needs to render the event\r\n            to a string then <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/> does\r\n            provide an efficient mechanism for doing so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_layout\">\r\n            <summary>\r\n            The layout of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_name\">\r\n            <summary>\r\n            The name of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Name\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_threshold\">\r\n            <summary>\r\n            The level threshold of this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            There is no level threshold filtering by default.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_errorHandler\">\r\n            <summary>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_headFilter\">\r\n            <summary>\r\n            The first filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Set to <c>null</c> initially.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_tailFilter\">\r\n            <summary>\r\n            The last filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_closed\">\r\n            <summary>\r\n            Flag indicating if this appender is closed.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_recursiveGuard\">\r\n            <summary>\r\n            The guard prevents an appender from repeatedly calling its own DoAppend method\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_renderWriter\">\r\n            <summary>\r\n            StringWriter used to render events\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the AppenderSkeleton class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Threshold\">\r\n            <summary>\r\n            Gets or sets the threshold <see cref=\"T:log4net.Core.Level\"/> of this appender.\r\n            </summary>\r\n            <value>\r\n            The threshold <see cref=\"T:log4net.Core.Level\"/> of the appender. \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            All log events with lower level than the threshold level are ignored \r\n            by the appender.\r\n            </para>\r\n            <para>\r\n            In configuration files this option is specified by setting the\r\n            value of the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> option to a level\r\n            string, such as \"DEBUG\", \"INFO\" and so on.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </summary>\r\n            <value>The <see cref=\"T:log4net.Core.IErrorHandler\"/> of the appender</value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> provides a default \r\n            implementation for the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> property. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.FilterHead\">\r\n            <summary>\r\n            The filter chain.\r\n            </summary>\r\n            <value>The head of the filter chain filter chain.</value>\r\n            <remarks>\r\n            <para>\r\n            Returns the head Filter. The Filters are organized in a linked list\r\n            and so all Filters on this Appender are available through the result.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.ILayout\"/> for this appender.\r\n            </summary>\r\n            <value>The layout of the appender.</value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Name\">\r\n            <summary>\r\n            Gets or sets the name of this appender.\r\n            </summary>\r\n            <value>The name of the appender.</value>\r\n            <remarks>\r\n            <para>\r\n            The name uniquely identifies the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\">\r\n            <summary>\r\n            Tests if this appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            In the rather exceptional case, where the appender \r\n            implementation admits a layout but can also work without it, \r\n            then the appender should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This default implementation always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the appender requires a layout object, otherwise <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\">\r\n            <summary>\r\n            The default buffer size.\r\n            </summary>\r\n            <remarks>\r\n            The default size of the cyclic buffer used to store events.\r\n            This is set to 512 by default.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Protected default constructor to allow subclassing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <param name=\"eventMustBeFixed\">the events passed through this appender must be\r\n            fixed by the time that they arrive in the derived class' <c>SendBuffer</c> method.</param>\r\n            <remarks>\r\n            <para>\r\n            Protected constructor to allow subclassing.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"eventMustBeFixed\"/> should be set if the subclass\r\n            expects the events delivered to be fixed even if the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to zero, i.e. when no buffering occurs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flushes any events that have been buffered.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will NOT be flushed to the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush(System.Boolean)\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <param name=\"flushLossyBuffer\">set to <c>true</c> to flush the buffer of lossy events</param>\r\n            <remarks>\r\n            <para>\r\n            Flushes events that have been buffered. If <paramref name=\"flushLossyBuffer\"/> is\r\n            <c>false</c> then events will only be flushed if this buffer is non-lossy mode.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will only be flushed if <paramref name=\"flushLossyBuffer\"/> is <c>true</c>.\r\n            In this case the contents of the buffer will be tested against the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\"/> and if triggering will be output. All other buffered\r\n            events will be discarded.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"flushLossyBuffer\"/> is <c>true</c> then the buffer will always\r\n            be emptied by calling this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.OnClose\">\r\n            <summary>\r\n            Close this appender instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close this appender instance. If this appender is marked\r\n            as not <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> then the remaining events in \r\n            the buffer must be sent when the appender is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Stores the <paramref name=\"loggingEvent\"/> in the cyclic buffer.\r\n            </para>\r\n            <para>\r\n            The buffer will be sent (i.e. passed to the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/> \r\n            method) if one of the following conditions is met:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>The cyclic buffer is full and this appender is\r\n            \t\tmarked as not lossy (see <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>)</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>An <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> is set and\r\n            \t\tit is triggered for the <paramref name=\"loggingEvent\"/>\r\n            \t\tspecified.</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Before the event is stored in the buffer it is fixed\r\n            (see <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/>) to ensure that\r\n            any data referenced by the event will be valid when the buffer\r\n            is processed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendFromBuffer(log4net.Core.LoggingEvent,log4net.Util.CyclicBuffer)\">\r\n            <summary>\r\n            Sends the contents of the buffer.\r\n            </summary>\r\n            <param name=\"firstLoggingEvent\">The first logging event.</param>\r\n            <param name=\"buffer\">The buffer containing the events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            The subclass must override <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Sends the events.\r\n            </summary>\r\n            <param name=\"events\">The events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            The subclass must override this method to process the buffered events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_bufferSize\">\r\n            <summary>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </summary>\r\n            <remarks>\r\n            Set to <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\"/> by default.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_cb\">\r\n            <summary>\r\n            The cyclic buffer used to store the logging events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_evaluator\">\r\n            <summary>\r\n            The triggering event evaluator that causes the buffer to be sent immediately.\r\n            </summary>\r\n            <remarks>\r\n            The object that is used to determine if an event causes the entire\r\n            buffer to be sent immediately. This field can be <c>null</c>, which \r\n            indicates that event triggering is not to be done. The evaluator\r\n            can be set using the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> property. If this appender\r\n            has the <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\"/> (<see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property) set to \r\n            <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\">\r\n            <summary>\r\n            Indicates if the appender should overwrite events in the cyclic buffer \r\n            when it becomes full, or if the buffer should be flushed when the \r\n            buffer is full.\r\n            </summary>\r\n            <remarks>\r\n            If this field is set to <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must \r\n            be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossyEvaluator\">\r\n            <summary>\r\n            The triggering event evaluator filters discarded events.\r\n            </summary>\r\n            <remarks>\r\n            The object that is used to determine if an event that is discarded should\r\n            really be discarded or if it should be sent to the appenders. \r\n            This field can be <c>null</c>, which indicates that all discarded events will\r\n            be discarded. \r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_fixFlags\">\r\n            <summary>\r\n            Value indicating which fields in the event should be fixed\r\n            </summary>\r\n            <remarks>\r\n            By default all fields are fixed\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_eventMustBeFixed\">\r\n            <summary>\r\n            The events delivered to the subclass must be fixed.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender is lossy.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender is lossy, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This appender uses a buffer to store logging events before \r\n            delivering them. A triggering event causes the whole buffer\r\n            to be send to the remote sink. If the buffer overruns before\r\n            a triggering event then logging events could be lost. Set\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> to <c>false</c> to prevent logging events \r\n            from being lost.\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\">\r\n            <summary>\r\n            Gets or sets the size of the cyclic buffer used to hold the \r\n            logging events.\r\n            </summary>\r\n            <value>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option takes a positive integer\r\n            representing the maximum number of logging events to collect in \r\n            a cyclic buffer. When the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is reached,\r\n            oldest events are deleted as new events are added to the\r\n            buffer. By default the size of the cyclic buffer is 512 events.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to a value less than\r\n            or equal to 1 then no buffering will occur. The logging event\r\n            will be delivered synchronously (depending on the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>\r\n            and <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> properties). Otherwise the event will\r\n            be buffered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the \r\n            buffer to be sent immediately.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the buffer to be\r\n            sent immediately.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is appended to this \r\n            appender. If the evaluator triggers then the current buffer will \r\n            immediately be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\">\r\n            <summary>\r\n            Gets or sets the value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </summary>\r\n            <value>\r\n            The value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is discarded from this \r\n            appender. If the evaluator triggers then the current buffer will immediately \r\n            be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating if only part of the logging event data\r\n            should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the\r\n            event data to be fixed and serialized. This will improve performance.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Fix\">\r\n            <summary>\r\n            Gets or sets a the fields that will be fixed in the event\r\n            </summary>\r\n            <value>\r\n            The event fields that will be fixed before the event is buffered\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.#ctor\">\r\n            <summary> \r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Public default constructor to initialize a new instance of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.OnClose\">\r\n            <summary>\r\n            Override the parent method to close the database\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the database command and database connection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Inserts the events into the database.\r\n            </summary>\r\n            <param name=\"events\">The events to insert into the database.</param>\r\n            <remarks>\r\n            <para>\r\n            Insert all the events specified in the <paramref name=\"events\"/>\r\n            array into the database.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\">\r\n            <summary>\r\n            Adds a parameter to the command.\r\n            </summary>\r\n            <param name=\"parameter\">The parameter to add to the command.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a parameter to the ordered list of command parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(System.Data.IDbTransaction,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Writes the events to the database using the transaction specified.\r\n            </summary>\r\n            <param name=\"dbTran\">The transaction that the events will be executed under.</param>\r\n            <param name=\"events\">The array of events to insert into the database.</param>\r\n            <remarks>\r\n            <para>\r\n            The transaction argument can be <c>null</c> if the appender has been\r\n            configured not to use transactions. See <see cref=\"P:log4net.Appender.AdoNetAppender.UseTransactions\"/>\r\n            property for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.GetLogStatement(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Formats the log message into database statement text.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            This method can be overridden by subclasses to provide \r\n            more control over the format of the database statement.\r\n            </remarks>\r\n            <returns>\r\n            Text that can be passed to a <see cref=\"T:System.Data.IDbCommand\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.CreateConnection(System.Type,System.String)\">\r\n            <summary>\r\n            Creates an <see cref=\"T:System.Data.IDbConnection\"/> instance used to connect to the database.\r\n            </summary>\r\n            <remarks>\r\n            This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary).\r\n            </remarks>\r\n            <param name=\"connectionType\">The <see cref=\"T:System.Type\"/> of the <see cref=\"T:System.Data.IDbConnection\"/> object.</param>\r\n            <param name=\"connectionString\">The connectionString output from the ResolveConnectionString method.</param>\r\n            <returns>An <see cref=\"T:System.Data.IDbConnection\"/> instance with a valid connection string.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionString(System.String@)\">\r\n            <summary>\r\n            Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey\r\n            property.\r\n            </summary>\r\n            <remarks>\r\n            ConnectiongStringName is only supported on .NET 2.0 and higher.\r\n            </remarks>\r\n            <param name=\"connectionStringContext\">Additional information describing the connection string.</param>\r\n            <returns>A connection string used to connect to the database.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionType\">\r\n            <summary>\r\n            Retrieves the class type of the ADO.NET provider.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the Type of the ADO.NET provider to use to connect to the\r\n            database. This method resolves the type specified in the \r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> property.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to return a different type\r\n            if necessary.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:System.Type\"/> of the ADO.NET provider</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseCommand\">\r\n            <summary>\r\n            Prepares the database command and initialize the parameters.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseConnection\">\r\n            <summary>\r\n            Connects to the database.\r\n            </summary>\t\t\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DisposeCommand(System.Boolean)\">\r\n            <summary>\r\n            Cleanup the existing command.\r\n            </summary>\r\n            <param name=\"ignoreException\">\r\n            If true, a message will be written using LogLog.Warn if an exception is encountered when calling Dispose.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DiposeConnection\">\r\n            <summary>\r\n            Cleanup the existing connection.\r\n            </summary>\r\n            <remarks>\r\n            Calls the IDbConnection's <see cref=\"M:System.Data.IDbConnection.Close\"/> method.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_usePreparedCommand\">\r\n            <summary>\r\n            Flag to indicate if we are using a command object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Set to <c>true</c> when the appender is to use a prepared\r\n            statement or stored procedure to insert into the database.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_parameters\">\r\n            <summary>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbConnection\">\r\n            <summary>\r\n            The <see cref=\"T:System.Data.IDbConnection\"/> that will be used\r\n            to insert logging events into a database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbCommand\">\r\n            <summary>\r\n            The database command.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionString\">\r\n            <summary>\r\n            Database connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_appSettingsKey\">\r\n            <summary>\r\n            The appSettings key from App.Config that contains the connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionStringName\">\r\n            <summary>\r\n            The connectionStrings key from App.Config that contains the connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionType\">\r\n            <summary>\r\n            String type name of the <see cref=\"T:System.Data.IDbConnection\"/> type name.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandText\">\r\n            <summary>\r\n            The text of the command.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandType\">\r\n            <summary>\r\n            The command type.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_useTransactions\">\r\n            <summary>\r\n            Indicates whether to use transactions when writing to the database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_reconnectOnError\">\r\n            <summary>\r\n            Indicates whether to use transactions when writing to the database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the AdoNetAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionString\">\r\n            <summary>\r\n            Gets or sets the database connection string that is used to connect to \r\n            the database.\r\n            </summary>\r\n            <value>\r\n            The database connection string used to connect to the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The connections string is specific to the connection type.\r\n            See <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>Connection string for MS Access via ODBC:\r\n            <code>\"DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\\data\\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\\data\\train33.mdb\"</code>\r\n            </example>\r\n            <example>Another connection string for MS Access via ODBC:\r\n            <code>\"Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;UID=;PWD=;\"</code>\r\n            </example>\r\n            <example>Connection string for MS Access via OLE DB:\r\n            <code>\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;User Id=;Password=;\"</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.AppSettingsKey\">\r\n            <summary>\r\n            The appSettings key from App.Config that contains the connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionStringName\">\r\n            <summary>\r\n            The connectionStrings key from App.Config that contains the connection string.\r\n            </summary>\r\n            <remarks>\r\n            This property requires at least .NET 2.0.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionType\">\r\n            <summary>\r\n            Gets or sets the type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection\r\n            that should be created.\r\n            </summary>\r\n            <value>\r\n            The type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name of the ADO.NET provider to use.\r\n            </para>\r\n            <para>\r\n            The default is to use the OLE DB provider.\r\n            </para>\r\n            </remarks>\r\n            <example>Use the OLE DB Provider. This is the default value.\r\n            <code>System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the MS SQL Server Provider. \r\n            <code>System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the ODBC Provider. \r\n            <code>Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>ODBC .NET Data Provider</b>.\r\n            </example>\r\n            <example>Use the Oracle Provider. \r\n            <code>System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>.NET Managed Provider for Oracle</b>.\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandText\">\r\n            <summary>\r\n            Gets or sets the command text that is used to insert logging events\r\n            into the database.\r\n            </summary>\r\n            <value>\r\n            The command text used to insert logging events into the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Either the text of the prepared statement or the\r\n            name of the stored procedure to execute to write into\r\n            the database.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property determines if\r\n            this text is a prepared statement or a stored procedure.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandType\">\r\n            <summary>\r\n            Gets or sets the command type to execute.\r\n            </summary>\r\n            <value>\r\n            The command type to execute.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This value may be either <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify\r\n            that the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> is a prepared statement to execute, \r\n            or <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify that the\r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property is the name of a stored procedure\r\n            to execute.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.UseTransactions\">\r\n            <summary>\r\n            Should transactions be used to insert logging events in the database.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if transactions should be used to insert logging events in\r\n            the database, otherwise <c>false</c>. The default value is <c>true</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets a value that indicates whether transactions should be used\r\n            to insert logging events in the database.\r\n            </para>\r\n            <para>\r\n            When set a single transaction will be used to insert the buffered events\r\n            into the database. Otherwise each event will be inserted without using\r\n            an explicit transaction.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ReconnectOnError\">\r\n            <summary>\r\n            Should this appender try to reconnect to the database on error.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should try to reconnect to the database after an\r\n            error has occurred, otherwise <c>false</c>. The default value is <c>false</c>, \r\n            i.e. not to try to reconnect.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default behaviour is for the appender not to try to reconnect to the\r\n            database if an error occurs. Subsequent logging events are discarded.\r\n            </para>\r\n            <para>\r\n            To force the appender to attempt to reconnect to the database set this\r\n            property to <c>true</c>.\r\n            </para>\r\n            <note>\r\n            When the appender attempts to connect to the database there may be a\r\n            delay of up to the connection timeout specified in the connection string.\r\n            This delay will block the calling application's thread. \r\n            Until the connection can be reestablished this potential delay may occur multiple times.\r\n            </note>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.Connection\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> creates a <see cref=\"T:System.Data.IDbConnection\"/> to insert \r\n            logging events into a database.  Classes deriving from <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            can use this property to get or set this <see cref=\"T:System.Data.IDbConnection\"/>.  Use the \r\n            underlying <see cref=\"T:System.Data.IDbConnection\"/> returned from <see cref=\"P:log4net.Appender.AdoNetAppender.Connection\"/> if \r\n            you require access beyond that which <see cref=\"T:log4net.Appender.AdoNetAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AdoNetAppenderParameter\">\r\n            <summary>\r\n            Parameter type used by the <see cref=\"T:log4net.Appender.AdoNetAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the basic database parameter properties\r\n            as defined by the <see cref=\"T:System.Data.IDbDataParameter\"/> interface.\r\n            </para>\r\n            <para>This type can be subclassed to provide database specific\r\n            functionality. The two methods that are called externally are\r\n            <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\"/> and <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Default constructor for the AdoNetAppenderParameter class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\">\r\n            <summary>\r\n            Prepare the specified database command object.\r\n            </summary>\r\n            <param name=\"command\">The command to prepare.</param>\r\n            <remarks>\r\n            <para>\r\n            Prepares the database command object by adding\r\n            this parameter to its collection of parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the logging event and set the parameter value in the command.\r\n            </summary>\r\n            <param name=\"command\">The command containing the parameter.</param>\r\n            <param name=\"loggingEvent\">The event to be rendered.</param>\r\n            <remarks>\r\n            <para>\r\n            Renders the logging event using this parameters layout\r\n            object. Sets the value of the parameter on the command object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_parameterName\">\r\n            <summary>\r\n            The name of this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_dbType\">\r\n            <summary>\r\n            The database type for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_inferType\">\r\n            <summary>\r\n            Flag to infer type rather than use the DbType\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_precision\">\r\n            <summary>\r\n            The precision for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_scale\">\r\n            <summary>\r\n            The scale for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_size\">\r\n            <summary>\r\n            The size for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_layout\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to render the\r\n            logging event into an object for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.ParameterName\">\r\n            <summary>\r\n            Gets or sets the name of this parameter.\r\n            </summary>\r\n            <value>\r\n            The name of this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this parameter. The parameter name\r\n            must match up to a named parameter to the SQL stored procedure\r\n            or prepared statement.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\">\r\n            <summary>\r\n            Gets or sets the database type for this parameter.\r\n            </summary>\r\n            <value>\r\n            The database type for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The database type for this parameter. This property should\r\n            be set to the database type from the <see cref=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\"/>\r\n            enumeration. See <see cref=\"P:System.Data.IDataParameter.DbType\"/>.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the type from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDataParameter.DbType\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Precision\">\r\n            <summary>\r\n            Gets or sets the precision for this parameter.\r\n            </summary>\r\n            <value>\r\n            The precision for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum number of digits used to represent the Value.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the precision from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Precision\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Scale\">\r\n            <summary>\r\n            Gets or sets the scale for this parameter.\r\n            </summary>\r\n            <value>\r\n            The scale for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The number of decimal places to which Value is resolved.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the scale from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Scale\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Size\">\r\n            <summary>\r\n            Gets or sets the size for this parameter.\r\n            </summary>\r\n            <value>\r\n            The size for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum size, in bytes, of the data within the column.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the size from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Size\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to \r\n            render the logging event into an object for this \r\n            parameter.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> used to render the\r\n            logging event into an object for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> that renders the value for this\r\n            parameter.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.RawLayoutConverter\"/> can be used to adapt\r\n            any <see cref=\"T:log4net.Layout.ILayout\"/> into a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            for use in the property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender\">\r\n            <summary>\r\n            Appends logging events to the terminal using ANSI color escape sequences.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            AnsiColorTerminalAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific level of message to be set.\r\n            </para>\r\n            <note>\r\n            This appender expects the terminal to understand the VT100 control set \r\n            in order to interpret the color codes. If the terminal or console does not\r\n            understand the control codes the behavior is not defined.\r\n            </note>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            <para>\r\n            When configuring the ANSI colored terminal appender, a mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red\"/>\r\n                <attributes value=\"Bright,Underscore\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            </list>\r\n            These color values cannot be combined together to make new colors.\r\n            </para>\r\n            <para>\r\n            The attributes can be any combination of the following:\r\n            <list type=\"bullet\">\r\n            <item><term>Bright</term><description>foreground is brighter</description></item>\r\n            <item><term>Dim</term><description>foreground is dimmer</description></item>\r\n            <item><term>Underscore</term><description>message is underlined</description></item>\r\n            <item><term>Blink</term><description>foreground is blinking (does not work on all terminals)</description></item>\r\n            <item><term>Reverse</term><description>foreground and background are reversed</description></item>\r\n            <item><term>Hidden</term><description>output is hidden</description></item>\r\n            <item><term>Strikethrough</term><description>message has a line through it</description></item>\r\n            </list>\r\n            While any of these attributes may be combined together not all combinations\r\n            work well together, for example setting both <i>Bright</i> and <i>Dim</i> attributes makes\r\n            no sense.\r\n            </para>\r\n            </remarks>\r\n            <author>Patrick Wagstrom</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.PostEventCodes\">\r\n            <summary>\r\n            Ansi code to reset terminal\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.AddMapping(log4net.Appender.AnsiColorTerminalAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colours\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for this appender\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize the level to color mappings set on this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_writeToErrorStream\">\r\n            <summary>\r\n            Flag to write output to the error stream rather than the standard output stream\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to color value\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\">\r\n            <summary>\r\n            Target is the value of the console output stream.\r\n            </summary>\r\n            <value>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes\">\r\n            <summary>\r\n            The enum of possible display attributes\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the ANSI color attributes.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Bright\">\r\n            <summary>\r\n            text is bright\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Dim\">\r\n            <summary>\r\n            text is dim\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Underscore\">\r\n            <summary>\r\n            text is underlined\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Blink\">\r\n            <summary>\r\n            text is blinking\r\n            </summary>\r\n            <remarks>\r\n            Not all terminals support this attribute\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Reverse\">\r\n            <summary>\r\n            text and background colors are reversed\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Hidden\">\r\n            <summary>\r\n            text is hidden\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Strikethrough\">\r\n            <summary>\r\n            text is displayed with a strikethrough\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiColor\">\r\n            <summary>\r\n            The enum of possible foreground or background color values for \r\n            use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The output can be in one for the following ANSI colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Black\">\r\n            <summary>\r\n            color is black\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Red\">\r\n            <summary>\r\n            color is red\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Green\">\r\n            <summary>\r\n            color is green\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Yellow\">\r\n            <summary>\r\n            color is yellow\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Blue\">\r\n            <summary>\r\n            color is blue\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Magenta\">\r\n            <summary>\r\n            color is magenta\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Cyan\">\r\n            <summary>\r\n            color is cyan\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.White\">\r\n            <summary>\r\n            color is white\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the color it should be displayed as.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the mapping between a level and the color it should be displayed in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMappingEntry\">\r\n            <summary>\r\n            An entry in the <see cref=\"T:log4net.Util.LevelMapping\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract base class for types that are stored in the\r\n            <see cref=\"T:log4net.Util.LevelMapping\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.#ctor\">\r\n            <summary>\r\n            Default protected constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default protected constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.ActivateOptions\">\r\n            <summary>\r\n            Initialize any options defined on this entry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Should be overridden by any classes that need to initialise based on their options\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LevelMappingEntry.Level\">\r\n            <summary>\r\n            The level that is the key for this mapping \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this mapping \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set the <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this\r\n            mapping subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> together\r\n            and append the attributes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\">\r\n            <summary>\r\n            The mapped foreground color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped foreground color for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\">\r\n            <summary>\r\n            The mapped background color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped background color for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\">\r\n            <summary>\r\n            The color attributes for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The color attributes for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/>, <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> and\r\n            <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\"/> suitable for setting the ansi terminal color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Appender.IAppender\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ReadOnly(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Creates a read-only wrapper for a <c>AppenderCollection</c> instance.\r\n            </summary>\r\n            <param name=\"list\">list to create a readonly wrapper arround</param>\r\n            <returns>\r\n            An <c>AppenderCollection</c> wrapper that is read-only.\r\n            </returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.EmptyCollection\">\r\n            <summary>\r\n            An empty readonly static AppenderCollection\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that is empty and has the default initial capacity.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Int32)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that has the specified initial capacity.\r\n            </summary>\r\n            <param name=\"capacity\">\r\n            The number of elements that the new <c>AppenderCollection</c> is initially capable of storing.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"c\">The <c>AppenderCollection</c> whose elements are copied to the new collection.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection.Tag)\">\r\n            <summary>\r\n            Allow subclasses to avoid our default constructors\r\n            </summary>\r\n            <param name=\"tag\"></param>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Add(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Appender.IAppender\"/> to the end of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clear\">\r\n            <summary>\r\n            Removes all elements from the <c>AppenderCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Appender.AppenderCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Contains(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Appender.IAppender\"/> is in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>AppenderCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IndexOf(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Appender.IAppender\"/>\r\n            in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to locate in the <c>AppenderCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>AppenderCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Insert(System.Int32,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Inserts an element into the <c>AppenderCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Remove(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Appender.IAppender\"/> from the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to remove from the <c>AppenderCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Appender.IAppender\"/> was not found in the <c>AppenderCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Appender.AppenderCollection.Enumerator\"/> for the entire <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>AppenderCollection</c> to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>AppenderCollection</c> whose elements should be added to the end of the current <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> array to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> collection to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.TrimToSize\">\r\n            <summary>\r\n            Sets the capacity to the actual number of elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ToArray\">\r\n            <summary>\r\n            Return the collection elements as an array\r\n            </summary>\r\n            <returns>the array</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements actually contained in the <c>AppenderCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\r\n            </summary>\r\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.IAppender\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            \t<para><paramref name=\"index\"/> is less than zero</para>\r\n            \t<para>-or-</para>\r\n            \t<para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the collection has a fixed size.\r\n            </summary>\r\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the IList is read-only.\r\n            </summary>\r\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Capacity\">\r\n            <summary>\r\n            Gets or sets the number of elements the <c>AppenderCollection</c> can contain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Tag\">\r\n            <summary>\r\n            Type visible only to our subclasses\r\n            Used to access protected constructor\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.Tag.Default\">\r\n            <summary>\r\n            A value\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>Enumerator</c> class.\r\n            </summary>\r\n            <param name=\"tc\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Enumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.ReadOnlyAppenderCollection\">\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AspNetTraceAppender\">\r\n            <summary>\r\n            <para>\r\n            Appends log events to the ASP.NET <see cref=\"T:System.Web.TraceContext\"/> system.\r\n            </para>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Diagnostic information and tracing messages that you specify are appended to the output \r\n            of the page that is sent to the requesting browser. Optionally, you can view this information\r\n            from a separate trace viewer (Trace.axd) that displays trace information for every page in a \r\n            given application.\r\n            </para>\r\n            <para>\r\n            Trace statements are processed and displayed only when tracing is enabled. You can control \r\n            whether tracing is displayed to a page, to the trace viewer, or both.\r\n            </para>\r\n            <para>\r\n            The logging event is passed to the <see cref=\"M:System.Web.TraceContext.Write(System.String)\"/> or \r\n            <see cref=\"M:System.Web.TraceContext.Warn(System.String)\"/> method depending on the level of the logging event.\r\n            The event's logger name is the default value for the category parameter of the Write/Warn method. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AspNetTraceAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the logging event to the ASP.NET trace\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Write the logging event to the ASP.NET trace\r\n            <c>HttpContext.Current.Trace</c> \r\n            (<see cref=\"T:System.Web.TraceContext\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AspNetTraceAppender.m_category\">\r\n            <summary>\r\n            Defaults to %logger\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingForwardingAppender\">\r\n            <summary>\r\n            Buffers events and then forwards them to attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The events are buffered in this appender until conditions are\r\n            met to allow the appender to deliver the events to the attached \r\n            appenders. See <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> for the\r\n            conditions that cause the buffer to be sent.\r\n            </para>\r\n            <para>The forwarding appender can be used to specify different \r\n            thresholds and filters for the same appender at different locations \r\n            within the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IAppenderAttachable\">\r\n            <summary>\r\n            Interface for attaching appenders to objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface for attaching, removing and retrieving appenders.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Attaches an appender.\r\n            </summary>\r\n            <param name=\"appender\">The appender to add.</param>\r\n            <remarks>\r\n            <para>\r\n            Add the specified appender. The implementation may\r\n            choose to allow or deny duplicate appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.GetAppender(System.String)\">\r\n            <summary>\r\n            Gets an attached appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to get.</param>\r\n            <returns>\r\n            The appender with the name specified, or <c>null</c> if no appender with the\r\n            specified name is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns an attached appender with the <paramref name=\"name\"/> specified.\r\n            If no appender with the specified name is found <c>null</c> will be\r\n            returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Removes and closes all attached appenders\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.IAppenderAttachable.Appenders\">\r\n            <summary>\r\n            Gets all attached appenders.\r\n            </summary>\r\n            <value>\r\n            A collection of attached appenders.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets a collection of attached appenders.\r\n            If there are no attached appenders the\r\n            implementation should return an empty \r\n            collection rather than <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.OnClose\">\r\n            <summary>\r\n            Closes the appender and releases resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Send the events.\r\n            </summary>\r\n            <param name=\"events\">The events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            Forwards the events to the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\r\n            Looks for the appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to lookup.</param>\r\n            <returns>\r\n            The appender with the specified name, or <c>null</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named appender attached to this buffering appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all previously added appenders from this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is useful when re-reading configuration information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ColoredConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific type of message to be set.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes directly to the application's attached console\r\n            not to the <c>System.Console.Out</c> or <c>System.Console.Error</c> <c>TextWriter</c>.\r\n            The <c>System.Console.Out</c> and <c>System.Console.Error</c> streams can be\r\n            programmatically redirected (for example NUnit does this to capture program output).\r\n            This appender will ignore these redirections because it needs to use Win32\r\n            API calls to colorize the output. To respect these redirections the <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            must be used.\r\n            </para>\r\n            <para>\r\n            When configuring the colored console appender, mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red, HighIntensity\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            combination of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            <item><term>HighIntensity</term><description></description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Rick Hobbs</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.AddMapping(log4net.Appender.ColoredConsoleAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colors\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for this appender\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize the level to color mappings set on this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_writeToErrorStream\">\r\n            <summary>\r\n            Flag to write output to the error stream rather than the standard output stream\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to color value\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_consoleOutputWriter\">\r\n            <summary>\r\n            The console output stream writer to write to\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer is not thread safe.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.Target\">\r\n            <summary>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </summary>\r\n            <value>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.Colors\">\r\n            <summary>\r\n            The enum of possible color values for use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.ColoredConsoleAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Blue\">\r\n            <summary>\r\n            color is blue\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Green\">\r\n            <summary>\r\n            color is green\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Red\">\r\n            <summary>\r\n            color is red\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.White\">\r\n            <summary>\r\n            color is white\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Yellow\">\r\n            <summary>\r\n            color is yellow\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Purple\">\r\n            <summary>\r\n            color is purple\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Cyan\">\r\n            <summary>\r\n            color is cyan\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity\">\r\n            <summary>\r\n            color is intensified\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the color it should be displayed as.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the mapping between a level and the color it should be displayed in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> together.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\">\r\n            <summary>\r\n            The mapped foreground color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped foreground color for the specified level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\">\r\n            <summary>\r\n            The mapped background color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped background color for the specified level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> suitable for \r\n            setting the console color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.Target\">\r\n            <summary>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </summary>\r\n            <value>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.DebugAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Debug\"/> class for details on configuring the\r\n            debug system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <see cref=\"M:System.Diagnostics.Debug.Write(System.String,System.String)\"/>\r\n            method. The event's logger name is passed as the value for the category name to the Write method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is <c>true</c> then the <see cref=\"M:System.Diagnostics.Debug.Flush\"/>\r\n            is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.DebugAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.ImmediateFlush\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender will \r\n            flush at the end of each write.\r\n            </summary>\r\n            <remarks>\r\n            <para>The default behavior is to flush at the end of each \r\n            write. If the option is set to<c>false</c>, then the underlying \r\n            stream can defer writing to physical medium to a later time. \r\n            </para>\r\n            <para>\r\n            Avoiding the flush operation at the end of each append results \r\n            in a performance gain of 10 to 20 percent. However, there is safety\r\n            trade-off involved in skipping flushing. Indeed, when flushing is\r\n            skipped, then it is likely that the last few log events will not\r\n            be recorded on disk when the application exits. This is a high\r\n            price to pay even for a 20% performance gain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender\">\r\n            <summary>\r\n            Writes events to the system event log.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges.\r\n            See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog\r\n            </para>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry can be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            The <c>Category</c> of the event log entry can be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            <para>\r\n            When configuring the EventLogAppender a mapping can be\r\n            specified to map a logging level to an event log entry type. For example:\r\n            </para>\r\n            <code lang=\"XML\">\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"ERROR\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Error\" /&gt;\r\n            &lt;/mapping&gt;\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"DEBUG\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Information\" /&gt;\r\n            &lt;/mapping&gt;\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and eventLogEntryType can be any value\r\n            from the <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> enum, i.e.:\r\n            <list type=\"bullet\">\r\n            <item><term>Error</term><description>an error event</description></item>\r\n            <item><term>Warning</term><description>a warning event</description></item>\r\n            <item><term>Information</term><description>an informational event</description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Thomas Voss</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class\r\n            with the specified <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The <see cref=\"T:log4net.Layout.ILayout\"/> to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.AddMapping(log4net.Appender.EventLogAppender.Level2EventLogEntryType)\">\r\n            <summary>\r\n            Add a mapping of level to <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\"/> mapping to this appender.\r\n            Each mapping defines the event log entry type for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.CreateEventSource(System.String,System.String,System.String)\">\r\n            <summary>\r\n            Create an event log source\r\n            </summary>\r\n            <remarks>\r\n            Uses different API calls under NET_2_0\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Writes the event to the system event log using the \r\n            <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>.</para>\r\n            \r\n            <para>If the event has an <c>EventID</c> property (see <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            set then this integer will be used as the event log event id.</para>\r\n            \r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.GetEntryType(log4net.Core.Level)\">\r\n            <summary>\r\n            Get the equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/>\r\n            </summary>\r\n            <param name=\"level\">the Level to convert to an EventLogEntryType</param>\r\n            <returns>The equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/></returns>\r\n            <remarks>\r\n            Because there are fewer applicable <see cref=\"T:System.Diagnostics.EventLogEntryType\"/>\r\n            values to use in logging levels than there are in the \r\n            <see cref=\"T:log4net.Core.Level\"/> this is a one way mapping. There is\r\n            a loss of information during the conversion.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_logName\">\r\n            <summary>\r\n            The log name is the section in the event logs where the messages\r\n            are stored.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_applicationName\">\r\n            <summary>\r\n            Name of the application to use when logging.  This appears in the\r\n            application column of the event log named by <see cref=\"F:log4net.Appender.EventLogAppender.m_logName\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_machineName\">\r\n            <summary>\r\n            The name of the machine which holds the event log. This is\r\n            currently only allowed to be '.' i.e. the current machine.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to EventLogEntryType\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_eventId\">\r\n            <summary>\r\n            The event ID to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_category\">\r\n            <summary>\r\n            The event category to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the EventLogAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.LogName\">\r\n            <summary>\r\n            The name of the log where messages will be stored.\r\n            </summary>\r\n            <value>\r\n            The string name of the log where messages will be stored.\r\n            </value>\r\n            <remarks>\r\n            <para>This is the name of the log as it appears in the Event Viewer\r\n            tree. The default value is to log into the <c>Application</c>\r\n            log, this is where most applications write their events. However\r\n            if you need a separate log for your application (or applications)\r\n            then you should set the <see cref=\"P:log4net.Appender.EventLogAppender.LogName\"/> appropriately.</para>\r\n            <para>This should not be used to distinguish your event log messages\r\n            from those of other applications, the <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>\r\n            property should be used to distinguish events. This property should be \r\n            used to group together events into a single log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.ApplicationName\">\r\n            <summary>\r\n            Property used to set the Application name.  This appears in the\r\n            event logs when logging.\r\n            </summary>\r\n            <value>\r\n            The string used to distinguish events from different sources.\r\n            </value>\r\n            <remarks>\r\n            Sets the event log source property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.MachineName\">\r\n            <summary>\r\n            This property is used to return the name of the computer to use\r\n            when accessing the event logs.  Currently, this is the current\r\n            computer, denoted by a dot \".\"\r\n            </summary>\r\n            <value>\r\n            The string name of the machine holding the event log that \r\n            will be logged into.\r\n            </value>\r\n            <remarks>\r\n            This property cannot be changed. It is currently set to '.'\r\n            i.e. the local machine. This may be changed in future.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The system security context used to write to the EventLog.\r\n            </para>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.EventId\">\r\n            <summary>\r\n            Gets or sets the <c>EventId</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry will normally be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Category\">\r\n            <summary>\r\n            Gets or sets the <c>Category</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>Category</c> of the event log entry will normally be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the color it should be displayed as.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the mapping between a level and its event log entry type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender\">\r\n            <summary>\r\n            Appends logging events to a file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Logging events are sent to the file specified by\r\n            the <see cref=\"P:log4net.Appender.FileAppender.File\"/> property.\r\n            </para>\r\n            <para>\r\n            The file can be opened in either append or overwrite mode \r\n            by specifying the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property.\r\n            If the file path is relative it is taken as relative from \r\n            the application base directory. The file encoding can be\r\n            specified by setting the <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> property.\r\n            </para>\r\n            <para>\r\n            The layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            values will be written each time the file is opened and closed\r\n            respectively. If the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is <see langword=\"true\"/>\r\n            then the file may contain multiple copies of the header and footer.\r\n            </para>\r\n            <para>\r\n            This appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> supports pluggable file locking models via\r\n            the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> property.\r\n            The default behavior, implemented by <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> \r\n            is to obtain an exclusive write lock on the file until this appender is closed.\r\n            The alternative models only hold a\r\n            write lock while the appender is writing a logging event (<see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/>)\r\n            or synchronize by using a named system wide Mutex (<see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/>).\r\n            </para>\r\n            <para>\r\n            All locking strategies have issues and you should seriously consider using a different strategy that\r\n            avoids having multiple processes logging to the same file.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Rodrigo B. de Oliveira</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Niall Daley</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TextWriterAppender\">\r\n            <summary>\r\n            Sends logging events to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An Appender that writes to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This appender may be used stand alone if initialized with an appropriate\r\n            writer, however it is typically used as a base class for an appender that\r\n            can open a <see cref=\"T:System.IO.TextWriter\"/> to write to.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.Stream)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and\r\n            sets the output destination to a new <see cref=\"T:System.IO.StreamWriter\"/> initialized \r\n            with the specified <see cref=\"T:System.IO.Stream\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <param name=\"os\">The <see cref=\"T:System.IO.Stream\"/> to output to.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.TextWriter)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and sets\r\n            the output destination to the specified <see cref=\"T:System.IO.StreamWriter\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender</param>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to output to</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> must have been previously opened.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PreAppendCheck\">\r\n            <summary>\r\n            This method determines if there is a sense in attempting to append.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method checks if an output target has been set and if a\r\n            layout has been set. \r\n            </para>\r\n            </remarks>\r\n            <returns><c>false</c> if any of the preconditions fail.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method writes all the bulk logged events to the output writer\r\n            before flushing the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.OnClose\">\r\n            <summary>\r\n            Close this appender instance. The underlying stream or writer is also closed.\r\n            </summary>\r\n            <remarks>\r\n            Closed appenders cannot be reused.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooterAndCloseWriter\">\r\n            <summary>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Reset\">\r\n            <summary>\r\n            Clears internal references to the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            and other variables.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Subclasses can override this method for an alternate closing behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PrepareWriter\">\r\n            <summary>\r\n            Called to allow a subclass to lazily initialize the writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called when an event is logged and the <see cref=\"P:log4net.Appender.TextWriterAppender.Writer\"/> or\r\n            <see cref=\"P:log4net.Appender.TextWriterAppender.QuietWriter\"/> have not been set. This allows a subclass to\r\n            attempt to initialize the writer multiple times.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_qtw\">\r\n            <summary>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            or output stream will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logging events are not actually persisted if and when the application \r\n            crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the TextWriterAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\">\r\n            <summary>\r\n            Gets or set whether the appender will flush at the end \r\n            of each append operation.\r\n            </summary>\r\n            <value>\r\n            <para>\r\n            The default behavior is to flush at the end of each \r\n            append operation.\r\n            </para>\r\n            <para>\r\n            If this option is set to <c>false</c>, then the underlying \r\n            stream can defer persisting the logging event to a later \r\n            time.\r\n            </para>\r\n            </value>\r\n            <remarks>\r\n            Avoiding the flush operation at the end of each append results in\r\n            a performance gain of 10 to 20 percent. However, there is safety\r\n            trade-off involved in skipping flushing. Indeed, when flushing is\r\n            skipped, then it is likely that the last few log events will not\r\n            be recorded on disk when the application exits. This is a high\r\n            price to pay even for a 20% performance gain.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.Writer\">\r\n            <summary>\r\n            Sets the <see cref=\"T:System.IO.TextWriter\"/> where the log output will go.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The specified <see cref=\"T:System.IO.TextWriter\"/> must be open and writable.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> will be closed when the appender \r\n            instance is closed.\r\n            </para>\r\n            <para>\r\n            <b>Note:</b> Logging to an unopened <see cref=\"T:System.IO.TextWriter\"/> will fail.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\">\r\n            <summary>\r\n            Gets or set the <see cref=\"T:log4net.Core.IErrorHandler\"/> and the underlying \r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/>, if any, for this appender. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.QuietWriter\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events are written.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String,System.Boolean)\">\r\n            <summary>\r\n            Construct a new appender using the layout, file and append mode.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use with this appender</param>\r\n            <param name=\"filename\">the full path to the file to write to</param>\r\n            <param name=\"append\">flag to indicate if the file should be appended to</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String)\">\r\n            <summary>\r\n            Construct a new appender using the layout and file specified.\r\n            The file will be appended to.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use with this appender</param>\r\n            <param name=\"filename\">the full path to the file to write to</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on the file appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This will cause the file to be opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Reset\">\r\n            <summary>\r\n            Closes any previously opened file and calls the parent's <see cref=\"M:log4net.Appender.TextWriterAppender.Reset\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets the filename and the file stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.PrepareWriter\">\r\n            <summary>\r\n            Called to initialize the file writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Will be called for each logged message until the file is\r\n            successfully opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Acquires the output file locks once before writing all the events to\r\n            the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseFile\">\r\n            <summary>\r\n            Closes the previously opened file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Layout.ILayout.Footer\"/> to the file and then\r\n            closes the file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SafeOpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\r\n            </summary>\r\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\r\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\r\n            <remarks>\r\n            <para>\r\n            Calls <see cref=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\"/> but guarantees not to throw an exception.\r\n            Errors are passed to the <see cref=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\r\n            </summary>\r\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\r\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\r\n            <remarks>\r\n            <para>\r\n            If there was already an opened file, then the previous file\r\n            is closed first.\r\n            </para>\r\n            <para>\r\n            This method will ensure that the directory structure\r\n            for the <paramref name=\"fileName\"/> specified exists.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\">\r\n            <summary>\r\n            Sets the quiet writer used for file output\r\n            </summary>\r\n            <param name=\"fileStream\">the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This implementation of <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\"/> creates a <see cref=\"T:System.IO.StreamWriter\"/>\r\n            over the <paramref name=\"fileStream\"/> and passes it to the \r\n            <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden by sub classes that want to wrap the\r\n            <see cref=\"T:System.IO.Stream\"/> in some way, for example to encrypt the output\r\n            data using a <c>System.Security.Cryptography.CryptoStream</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\r\n            Sets the quiet writer being used.\r\n            </summary>\r\n            <param name=\"writer\">the writer over the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This method can be overridden by sub classes that want to\r\n            wrap the <see cref=\"T:System.IO.TextWriter\"/> in some way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\r\n            Convert a path into a fully qualified path.\r\n            </summary>\r\n            <param name=\"path\">The path to convert.</param>\r\n            <returns>The fully qualified path.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the path specified to a fully\r\n            qualified path. If the path is relative it is\r\n            taken as relative from the application base \r\n            directory.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_appendToFile\">\r\n            <summary>\r\n            Flag to indicate if we should append to the file\r\n            or overwrite the file. The default is to append.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_fileName\">\r\n            <summary>\r\n            The name of the log file.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_encoding\">\r\n            <summary>\r\n            The encoding to use for the file stream.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_stream\">\r\n            <summary>\r\n            The stream to log to. Has added locking semantics\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_lockingModel\">\r\n            <summary>\r\n            The locking model to use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the FileAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.File\">\r\n            <summary>\r\n            Gets or sets the path to the file that logging will be written to.\r\n            </summary>\r\n            <value>\r\n            The path to the file that logging will be written to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If the path is relative it is taken as relative from \r\n            the application base directory.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.AppendToFile\">\r\n            <summary>\r\n            Gets or sets a flag that indicates whether the file should be\r\n            appended to or overwritten.\r\n            </summary>\r\n            <value>\r\n            Indicates whether the file should be appended to or overwritten.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If the value is set to false then the file will be overwritten, if \r\n            it is set to true then the file will be appended to.\r\n            </para>\r\n            The default value is true.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default encoding set is <see cref=\"P:System.Text.Encoding.Default\"/>\r\n            which is the encoding for the system's current ANSI code page.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModel\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to lock the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </para>\r\n            <para>\r\n            There are three built in locking models, <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>, <see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/> and <see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/> .\r\n            The first locks the file from the start of logging to the end, the \r\n            second locks only for the minimal amount of time when logging each message\r\n            and the last synchronizes processes using a named system wide Mutex.\r\n            </para>\r\n            <para>\r\n            The default locking model is the <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingStream\">\r\n            <summary>\r\n            Write only <see cref=\"T:System.IO.Stream\"/> that uses the <see cref=\"T:log4net.Appender.FileAppender.LockingModelBase\"/> \r\n            to manage access to an underlying resource.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)\">\r\n            <summary>\r\n            True asynchronous writes are not supported, the implementation forces a synchronous write.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LogException\">\r\n            <summary>\r\n            Exception base type for log4net.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class with\r\n            the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingModelBase\">\r\n            <summary>\r\n            Locking model base class\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Base class for the locking models available to the <see cref=\"T:log4net.Appender.FileAppender\"/> derived loggers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the output file\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CreateStream(System.String,System.Boolean,System.IO.FileShare)\">\r\n            <summary>\r\n            Helper method that creates a FileStream under CurrentAppender's SecurityContext.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Typically called during OpenFile or AcquireLock. \r\n            </para>\r\n            <para>\r\n            If the directory portion of the <paramref name=\"filename\"/> does not exist, it is created\r\n            via Directory.CreateDirecctory.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"filename\"></param>\r\n            <param name=\"append\"></param>\r\n            <param name=\"fileShare\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseStream(System.IO.Stream)\">\r\n            <summary>\r\n            Helper method to close <paramref name=\"stream\"/> under CurrentAppender's SecurityContext.\r\n            </summary>\r\n            <remarks>\r\n            Does not set <paramref name=\"stream\"/> to null.\r\n            </remarks>\r\n            <param name=\"stream\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModelBase.CurrentAppender\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The file appender this locking model is attached to and working on\r\n            behalf of.\r\n            </para>\r\n            <para>\r\n            The file appender is used to locate the security context and the error handler to use.\r\n            </para>\r\n            <para>\r\n            The value of this property will be set before <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\"/> is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.ExclusiveLock\">\r\n            <summary>\r\n            Hold an exclusive lock on the output file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Open the file once for writing and hold it open until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/> is called. \r\n            Maintains an exclusive lock on the file during this time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Does nothing. The lock is already taken\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Does nothing. The lock will be released when the file is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.MinimalLock\">\r\n            <summary>\r\n            Acquires the file lock for each write\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Opens the file once for each <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>/<see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> cycle, \r\n            thus holding the lock for the minimal amount of time. This method of locking\r\n            is considerably slower than <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> but allows \r\n            other processes to move/delete the log file whilst logging continues.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Prepares to open the file when the first message is logged.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.InterProcessLock\">\r\n            <summary>\r\n            Provides cross-process file locking.\r\n            </summary>\r\n            <author>Ron Grabowski</author>\r\n            <author>Steve Wranovsky</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/>,\r\n            -<see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Does nothing. The lock is already taken\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ForwardingAppender\">\r\n            <summary>\r\n            This appender forwards logging events to attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The forwarding appender can be used to specify different thresholds\r\n            and filters for the same appender at different locations within the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.OnClose\">\r\n            <summary>\r\n            Closes the appender and releases resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Forward the logging event to the attached appenders \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers the logging event to all the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Forward the logging events to the attached appenders \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers the logging events to all the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\r\n            Looks for the appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to lookup.</param>\r\n            <returns>\r\n            The appender with the specified name, or <c>null</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named appender attached to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all previously added appenders from this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is useful when re-reading configuration information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender\">\r\n            <summary>\r\n            Logs events to a local syslog service.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            This appender uses the POSIX libc library functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c>.\r\n            If these functions are not available on the local system then this appender will not work!\r\n            </note>\r\n            <para>\r\n            The functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c> are specified in SUSv2 and \r\n            POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service.\r\n            </para>\r\n            <para>\r\n            This appender talks to a local syslog service. If you need to log to a remote syslog\r\n            daemon and you cannot configure your local syslog service to do this you may be\r\n            able to use the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> to log via UDP.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class is set up to write \r\n            to a local syslog service.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/> to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.OnClose\">\r\n            <summary>\r\n            Close the syslog when the appender is closed\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the syslog when the appender is closed\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\r\n            Translates a log4net level to a syslog severity.\r\n            </summary>\r\n            <param name=\"level\">A log4net level.</param>\r\n            <returns>A syslog severity.</returns>\r\n            <remarks>\r\n            <para>\r\n            Translates a log4net level to a syslog severity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GeneratePriority(log4net.Appender.LocalSyslogAppender.SyslogFacility,log4net.Appender.LocalSyslogAppender.SyslogSeverity)\">\r\n            <summary>\r\n            Generate a syslog priority.\r\n            </summary>\r\n            <param name=\"facility\">The syslog facility.</param>\r\n            <param name=\"severity\">The syslog severity.</param>\r\n            <returns>A syslog priority.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_identity\">\r\n            <summary>\r\n            The message identity\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_handleToIdentity\">\r\n            <summary>\r\n            Marshaled handle to the identity string. We have to hold on to the\r\n            string as the <c>openlog</c> and <c>syslog</c> APIs just hold the\r\n            pointer to the ident and dereference it for each log message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to syslog severity\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.openlog(System.IntPtr,System.Int32,log4net.Appender.LocalSyslogAppender.SyslogFacility)\">\r\n            <summary>\r\n            Open connection to system logger.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.syslog(System.Int32,System.String,System.String)\">\r\n            <summary>\r\n            Generate a log message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The libc syslog method takes a format string and a variable argument list similar\r\n            to the classic printf function. As this type of vararg list is not supported\r\n            by C# we need to specify the arguments explicitly. Here we have specified the\r\n            format string with a single message argument. The caller must set the format \r\n            string to <c>\"%s\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.closelog\">\r\n            <summary>\r\n            Close descriptor used to write to system logger.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogSeverity\">\r\n            <summary>\r\n            syslog severities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The log4net Level maps to a syslog severity using the\r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\"/> method and the <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/>\r\n            class. The severity is set on <see cref=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\r\n            system is unusable\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\r\n            action must be taken immediately\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\r\n            critical conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\r\n            error conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\r\n            warning conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\r\n            normal but significant condition\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\r\n            informational\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\r\n            debug-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\">\r\n            <summary>\r\n            syslog facilities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog facility defines which subsystem the logging comes from.\r\n            This is set on the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Facility\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\r\n            kernel messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\">\r\n            <summary>\r\n            random user-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\r\n            mail system\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\r\n            system daemons\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\r\n            security/authorization messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\r\n            messages generated internally by syslogd\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\r\n            line printer subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.News\">\r\n            <summary>\r\n            network news subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\r\n            UUCP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\r\n            clock (cron/at) daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\r\n            security/authorization  messages (private)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\r\n            ftp daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\r\n            NTP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\r\n            log audit\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\r\n            log alert\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\r\n            clock daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\r\n            The mapped syslog severity for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped syslog severity for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.MemoryAppender\">\r\n            <summary>\r\n            Stores logging events in an array.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The memory appender stores all the logging events\r\n            that are appended in an in-memory array.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.GetEvents\"/> method to get\r\n            the current list of events that have been appended.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.Clear\"/> method to clear the\r\n            current list of events.\r\n            </para>\r\n            </remarks>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.MemoryAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.GetEvents\">\r\n            <summary>\r\n            Gets the events that have been logged.\r\n            </summary>\r\n            <returns>The events that have been logged</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the events that have been logged.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Stores the <paramref name=\"loggingEvent\"/> in the events list.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Clear\">\r\n            <summary>\r\n            Clear the list of events\r\n            </summary>\r\n            <remarks>\r\n            Clear the list of events\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_eventsList\">\r\n            <summary>\r\n            The list of events that have been appended.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_fixFlags\">\r\n            <summary>\r\n            Value indicating which fields in the event should be fixed\r\n            </summary>\r\n            <remarks>\r\n            By default all fields are fixed\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating whether only part of the logging event \r\n            data should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the event \r\n            data to be fixed and stored in the appender, hereby improving performance. \r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.Fix\">\r\n            <summary>\r\n            Gets or sets the fields that will be fixed in the event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.NetSendAppender\">\r\n            <summary>\r\n            Logs entries by sending network messages using the \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> native function.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can send messages only to names that are active \r\n            on the network. If you send the message to a user name, \r\n            that user must be logged on and running the Messenger \r\n            service to receive the message.\r\n            </para>\r\n            <para>\r\n            The receiver will get a top most window displaying the \r\n            messages one at a time, therefore this appender should \r\n            not be used to deliver a high volume of messages.\r\n            </para>\r\n            <para>\r\n            The following table lists some possible uses for this appender :\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Action</term>\r\n                    <description>Property Value(s)</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>Send a message to a user account on the local machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a user account on a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a domain user account</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of a domain controller | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to all the names in a workgroup or domain</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;workgroup name | domain name&gt;*\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message from the local machine to a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            <b>Note :</b> security restrictions apply for sending \r\n            network messages, see <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> \r\n            for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            An example configuration section to log information \r\n            using this appender from the local machine, named \r\n            LOCAL_PC, to machine OPERATOR_PC :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"NetSendAppender_Operator\" type=\"log4net.Appender.NetSendAppender\">\r\n                <server value=\"LOCAL_PC\"/>\r\n                <recipient value=\"OPERATOR_PC\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5p %c [%x] - %m%n\"/>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_server\">\r\n            <summary>\r\n            The DNS or NetBIOS name of the server on which the function is to execute.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_sender\">\r\n            <summary>\r\n            The sender of the network message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_recipient\">\r\n            <summary>\r\n            The message alias to which the message should be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.#ctor\">\r\n            <summary>\r\n            Initializes the appender.\r\n            </summary>\r\n            <remarks>\r\n            The default constructor initializes all fields to their default values.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using a network message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\">\r\n            <summary>\r\n            Sends a buffer of information to a registered message alias.\r\n            </summary>\r\n            <param name=\"serverName\">The DNS or NetBIOS name of the server on which the function is to execute.</param>\r\n            <param name=\"msgName\">The message alias to which the message buffer should be sent</param>\r\n            <param name=\"fromName\">The originator of the message.</param>\r\n            <param name=\"buffer\">The message text.</param>\r\n            <param name=\"bufferSize\">The length, in bytes, of the message text.</param>\r\n            <remarks>\r\n            <para>\r\n            The following restrictions apply for sending network messages:\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Platform</term>\r\n                    <description>Requirements</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>Windows NT</term>\r\n                    <description>\r\n                        <para>\r\n                        No special group membership is required to send a network message.\r\n                        </para>\r\n                        <para>\r\n                        Admin, Accounts, Print, or Server Operator group membership is required to \r\n                        successfully send a network message on a remote server.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Windows 2000 or later</term>\r\n                    <description>\r\n                        <para>\r\n                        If you send a message on a domain controller that is running Active Directory, \r\n                        access is allowed or denied based on the access control list (ACL) for the securable \r\n                        object. The default ACL permits only Domain Admins and Account Operators to send a network message. \r\n                        </para>\r\n                        <para>\r\n                        On a member server or workstation, only Administrators and Server Operators can send a network message. \r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            For more information see <a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/security_requirements_for_the_network_management_functions.asp\">Security Requirements for the Network Management Functions</a>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <para>\r\n            If the function succeeds, the return value is zero.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Sender\">\r\n            <summary>\r\n            Gets or sets the sender of the message.\r\n            </summary>\r\n            <value>\r\n            The sender of the message.\r\n            </value>\r\n            <remarks>\r\n            If this property is not specified, the message is sent from the local computer.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Recipient\">\r\n            <summary>\r\n            Gets or sets the message alias to which the message should be sent.\r\n            </summary>\r\n            <value>\r\n            The recipient of the message.\r\n            </value>\r\n            <remarks>\r\n            This property should always be specified in order to send a message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Server\">\r\n            <summary>\r\n            Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute.\r\n            </summary>\r\n            <value>\r\n            DNS or NetBIOS name of the remote server on which the function is to execute.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For Windows NT 4.0 and earlier, the string should begin with \\\\.\r\n            </para>\r\n            <para>\r\n            If this property is not specified, the local computer is used. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.OutputDebugStringAppender\">\r\n            <summary>\r\n            Appends log events to the OutputDebugString system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            OutputDebugStringAppender appends log events to the\r\n            OutputDebugString system.\r\n            </para>\r\n            <para>\r\n            The string is passed to the native <c>OutputDebugString</c> \r\n            function.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.OutputDebugStringAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the logging event to the output debug string API\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Write the logging event to the output debug string API\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.OutputDebugString(System.String)\">\r\n            <summary>\r\n            Stub for OutputDebugString native method\r\n            </summary>\r\n            <param name=\"message\">the string to output</param>\r\n            <remarks>\r\n            <para>\r\n            Stub for OutputDebugString native method\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.OutputDebugStringAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender\">\r\n            <summary>\r\n            Logs events to a remote syslog daemon.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The BSD syslog protocol is used to remotely log to\r\n            a syslog daemon. The syslogd listens for for messages\r\n            on UDP port 514.\r\n            </para>\r\n            <para>\r\n            The syslog UDP protocol is not authenticated. Most syslog daemons\r\n            do not accept remote log messages because of the security implications.\r\n            You may be able to use the LocalSyslogAppender to talk to a local\r\n            syslog service.\r\n            </para>\r\n            <para>\r\n            There is an RFC 3164 that claims to document the BSD Syslog Protocol.\r\n            This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html.\r\n            This appender generates what the RFC calls an \"Original Device Message\",\r\n            i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation\r\n            this format of message will be accepted by all current syslog daemon\r\n            implementations. The daemon will attach the current time and the source\r\n            hostname or IP address to any messages received.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.UdpAppender\">\r\n             <summary>\r\n             Sends logging events as connectionless UDP datagrams to a remote host or a \r\n             multicast group using an <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n             </summary>\r\n             <remarks>\r\n             <para>\r\n             UDP guarantees neither that messages arrive, nor that they arrive in the correct order.\r\n             </para>\r\n             <para>\r\n             To view the logging results, a custom application can be developed that listens for logging \r\n             events.\r\n             </para>\r\n             <para>\r\n             When decoding events send via this appender remember to use the same encoding\r\n             to decode the events as was used to send the events. See the <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/>\r\n             property to specify the encoding to use.\r\n             </para>\r\n             </remarks>\r\n             <example>\r\n             This example shows how to log receive logging events that are sent \r\n             on IP address 244.0.0.1 and port 8080 to the console. The event is \r\n             encoded in the packet as a unicode string and it is decoded as such. \r\n             <code lang=\"C#\">\r\n             IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);\r\n             UdpClient udpClient;\r\n             byte[] buffer;\r\n             string loggingEvent;\r\n             \r\n             try \r\n             {\r\n                 udpClient = new UdpClient(8080);\r\n                 \r\n                 while(true) \r\n                 {\r\n                     buffer = udpClient.Receive(ref remoteEndPoint);\r\n                     loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);\r\n                     Console.WriteLine(loggingEvent);\r\n                 }\r\n             } \r\n             catch(Exception e) \r\n             {\r\n                 Console.WriteLine(e.ToString());\r\n             }\r\n             </code>\r\n             <code lang=\"Visual Basic\">\r\n             Dim remoteEndPoint as IPEndPoint\r\n             Dim udpClient as UdpClient\r\n             Dim buffer as Byte()\r\n             Dim loggingEvent as String\r\n             \r\n             Try \r\n                 remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)\r\n                 udpClient = new UdpClient(8080)\r\n            \r\n                 While True\r\n                     buffer = udpClient.Receive(ByRef remoteEndPoint)\r\n                     loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)\r\n                     Console.WriteLine(loggingEvent)\r\n                 Wend\r\n             Catch e As Exception\r\n                 Console.WriteLine(e.ToString())\r\n             End Try\r\n             </code>\r\n             <para>\r\n             An example configuration section to log information using this appender to the \r\n             IP 224.0.0.1 on port 8080:\r\n             </para>\r\n             <code lang=\"XML\" escaped=\"true\">\r\n             <appender name=\"UdpAppender\" type=\"log4net.Appender.UdpAppender\">\r\n                 <remoteAddress value=\"224.0.0.1\"/>\r\n                 <remotePort value=\"8080\"/>\r\n                 <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5level %logger [%ndc] - %message%newline\"/>\r\n             </appender>\r\n             </code>\r\n             </example>\r\n             <author>Gert Driesen</author>\r\n             <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.UdpAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The default constructor initializes all fields to their default values.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was specified or \r\n            an invalid remote or local TCP port number was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was not specified.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The TCP port number assigned to <see cref=\"P:log4net.Appender.UdpAppender.LocalPort\"/> or <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/> is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using an UDP datagram.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.OnClose\">\r\n            <summary>\r\n            Closes the UDP connection and releases all resources associated with \r\n            this <see cref=\"T:log4net.Appender.UdpAppender\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Disables the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> and releases all managed \r\n            and unmanaged resources associated with the <see cref=\"T:log4net.Appender.UdpAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.InitializeClientConnection\">\r\n            <summary>\r\n            Initializes the underlying  <see cref=\"T:System.Net.Sockets.UdpClient\"/> connection.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> is initialized and binds to the \r\n            port number from which you intend to communicate.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteAddress\">\r\n            <summary>\r\n            The IP address of the remote host or multicast group to which \r\n            the logging event will be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remotePort\">\r\n            <summary>\r\n            The TCP port number of the remote host or multicast group to \r\n            which the logging event will be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteEndPoint\">\r\n            <summary>\r\n            The cached remote endpoint to which the logging events will be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_localPort\">\r\n            <summary>\r\n            The TCP port number from which the <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_client\">\r\n            <summary>\r\n            The <see cref=\"T:System.Net.Sockets.UdpClient\"/> instance that will be used for sending the \r\n            logging events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_encoding\">\r\n            <summary>\r\n            The encoding to use for the packet.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteAddress\">\r\n            <summary>\r\n            Gets or sets the IP address of the remote host or multicast group to which\r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            The IP address of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Multicast addresses are identified by IP class <b>D</b> addresses (in the range 224.0.0.0 to\r\n            239.255.255.255).  Multicast packets can pass across different networks through routers, so\r\n            it is possible to use multicasts in an Internet scenario as long as your network provider \r\n            supports multicasting.\r\n            </para>\r\n            <para>\r\n            Hosts that want to receive particular multicast messages must register their interest by joining\r\n            the multicast group.  Multicast messages are not sent to networks where no host has joined\r\n            the multicast group.  Class <b>D</b> IP addresses are used for multicast groups, to differentiate\r\n            them from normal host addresses, allowing nodes to easily detect if a message is of interest.\r\n            </para>\r\n            <para>\r\n            Static multicast addresses that are needed globally are assigned by IANA.  A few examples are listed in the table below:\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>IP Address</term>\r\n                    <description>Description</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>224.0.0.1</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all system on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.2</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all routers on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.12</term>\r\n                    <description>\r\n                        <para>\r\n                        The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            A complete list of actually reserved multicast addresses and their owners in the ranges\r\n            defined by RFC 3171 can be found at the <A href=\"http://www.iana.org/assignments/multicast-addresses\">IANA web site</A>. \r\n            </para>\r\n            <para>\r\n            The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative \r\n            addresses.  These addresses can be reused with other local groups.  Routers are typically \r\n            configured with filters to prevent multicast traffic in this range from flowing outside\r\n            of the local network.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemotePort\">\r\n            <summary>\r\n            Gets or sets the TCP port number of the remote host or multicast group to which \r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will send messages to this TCP port number\r\n            on the remote host or multicast group.\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.LocalPort\">\r\n            <summary>\r\n            Gets or sets the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will bind to this port for sending messages.\r\n            </para>\r\n            <para>\r\n            Setting the value to 0 (the default) will cause the udp client not to bind to\r\n            a local port.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Client\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> creates a <see cref=\"T:System.Net.Sockets.UdpClient\"/> to send logging events \r\n            over a network.  Classes deriving from <see cref=\"T:log4net.Appender.UdpAppender\"/> can use this\r\n            property to get or set this <see cref=\"T:System.Net.Sockets.UdpClient\"/>.  Use the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>\r\n            returned from <see cref=\"P:log4net.Appender.UdpAppender.Client\"/> if you require access beyond that which \r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteEndPoint\">\r\n            <summary>\r\n            Gets or sets the cached remote endpoint to which the logging events should be sent.\r\n            </summary>\r\n            <value>\r\n            The cached remote endpoint to which the logging events will be sent.\r\n            </value>\r\n            <remarks>\r\n            The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method will initialize the remote endpoint \r\n            with the values of the <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> and <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/>\r\n            properties.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.DefaultSyslogPort\">\r\n            <summary>\r\n            Syslog port 514\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class is set up to write \r\n            to a remote syslog daemon.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.AddMapping(log4net.Appender.RemoteSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\"/> mapping to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for this appender\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize the level to syslog severity mappings set on this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\r\n            Translates a log4net level to a syslog severity.\r\n            </summary>\r\n            <param name=\"level\">A log4net level.</param>\r\n            <returns>A syslog severity.</returns>\r\n            <remarks>\r\n            <para>\r\n            Translates a log4net level to a syslog severity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GeneratePriority(log4net.Appender.RemoteSyslogAppender.SyslogFacility,log4net.Appender.RemoteSyslogAppender.SyslogSeverity)\">\r\n            <summary>\r\n            Generate a syslog priority.\r\n            </summary>\r\n            <param name=\"facility\">The syslog facility.</param>\r\n            <param name=\"severity\">The syslog severity.</param>\r\n            <returns>A syslog priority.</returns>\r\n            <remarks>\r\n            <para>\r\n            Generate a syslog priority.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_identity\">\r\n            <summary>\r\n            The message identity\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to syslog severity\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogSeverity\">\r\n            <summary>\r\n            syslog severities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog severities.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\r\n            system is unusable\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\r\n            action must be taken immediately\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\r\n            critical conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\r\n            error conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\r\n            warning conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\r\n            normal but significant condition\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\r\n            informational\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\r\n            debug-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\">\r\n            <summary>\r\n            syslog facilities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog facilities\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\r\n            kernel messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\">\r\n            <summary>\r\n            random user-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\r\n            mail system\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\r\n            system daemons\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\r\n            security/authorization messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\r\n            messages generated internally by syslogd\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\r\n            line printer subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.News\">\r\n            <summary>\r\n            network news subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\r\n            UUCP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\r\n            clock (cron/at) daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\r\n            security/authorization  messages (private)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\r\n            ftp daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\r\n            NTP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\r\n            log audit\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\r\n            log alert\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\r\n            clock daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\r\n            The mapped syslog severity for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped syslog severity for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender\">\r\n            <summary>\r\n            Delivers logging events to a remote logging sink. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This Appender is designed to deliver events to a remote sink. \r\n            That is any object that implements the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface. It delivers the events using .NET remoting. The\r\n            object to deliver events to is specified by setting the\r\n            appenders <see cref=\"P:log4net.Appender.RemotingAppender.Sink\"/> property.</para>\r\n            <para>\r\n            The RemotingAppender buffers events before sending them. This allows it to \r\n            make more efficient use of the remoting infrastructure.</para>\r\n            <para>\r\n            Once the buffer is full the events are still not sent immediately. \r\n            They are scheduled to be sent using a pool thread. The effect is that \r\n            the send occurs asynchronously. This is very important for a \r\n            number of non obvious reasons. The remoting infrastructure will \r\n            flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.</para>\r\n            <para>\r\n            Because the events are sent asynchronously using pool threads it is possible to close \r\n            this appender before all the queued events have been sent.\r\n            When closing the appender attempts to wait until all the queued events have been sent, but \r\n            this will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If this appender is being closed because the <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for. If the runtime terminates the threads before\r\n            the queued events have been sent then they will be lost. To ensure that all events\r\n            are sent the appender must be closed before the application exits. See \r\n            <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/> for details on how to shutdown\r\n            log4net programmatically.</para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemotingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            The events are not sent immediately. They are scheduled to be sent\r\n            using a pool thread. The effect is that the send occurs asynchronously.\r\n            This is very important for a number of non obvious reasons. The remoting\r\n            infrastructure will flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.\r\n            </remarks>\r\n            <param name=\"events\">The events to send.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.OnClose\">\r\n            <summary>\r\n            Override base class close.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method waits while there are queued work items. The events are\r\n            sent asynchronously using <see cref=\"T:System.Threading.ThreadPool\"/> work items. These items\r\n            will be sent once a thread pool thread is available to send them, therefore\r\n            it is possible to close the appender before all the queued events have been\r\n            sent.</para>\r\n            <para>\r\n            This method attempts to wait until all the queued events have been sent, but this \r\n            method will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If the appender is being closed because the <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.BeginAsyncSend\">\r\n            <summary>\r\n            A work item is being queued into the thread pool\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.EndAsyncSend\">\r\n            <summary>\r\n            A work item from the thread pool has completed\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBufferCallback(System.Object)\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This method is designed to be used with the <see cref=\"T:System.Threading.ThreadPool\"/>.\r\n            This method expects to be passed an array of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the state param.\r\n            </remarks>\r\n            <param name=\"state\">the logging events to send</param>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkUrl\">\r\n            <summary>\r\n            The URL of the remote sink.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkObj\">\r\n            <summary>\r\n            The local proxy (.NET remoting) for the remote logging sink.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_queuedCallbackCount\">\r\n            <summary>\r\n            The number of queued callbacks currently waiting or executing\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_workQueueEmptyEvent\">\r\n            <summary>\r\n            Event used to signal when there are no queued work items\r\n            </summary>\r\n            <remarks>\r\n            This event is set when there are no queued work items. In this\r\n            state it is safe to close the appender.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemotingAppender.Sink\">\r\n            <summary>\r\n            Gets or sets the URL of the well-known object that will accept \r\n            the logging events.\r\n            </summary>\r\n            <value>\r\n            The well-known URL of the remote sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The URL of the remoting sink that will accept logging events.\r\n            The sink must implement the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\">\r\n            <summary>\r\n            Interface used to deliver <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This interface must be implemented by a remoting sink\r\n            if the <see cref=\"T:log4net.Appender.RemotingAppender\"/> is to be used\r\n            to deliver logging events to the sink.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Delivers logging events to the remote sink\r\n            </summary>\r\n            <param name=\"events\">Array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers logging events to the remote sink\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender\">\r\n            <summary>\r\n            Appender that rolls log files based on size or date or both.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            RollingFileAppender can roll log files based on size or date or both\r\n            depending on the setting of the <see cref=\"P:log4net.Appender.RollingFileAppender.RollingStyle\"/> property.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\"/> the log file will be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\"/> the log file will be rolled\r\n            once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/> the log file will be\r\n            rolled once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed, but within a date boundary the file will also be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> the log file will be rolled when\r\n            the appender is configured. This effectively means that the log file can be\r\n            rolled once per program execution.\r\n            </para>\r\n            <para>\r\n            A of few additional optional features have been added:\r\n            <list type=\"bullet\">\r\n            <item>Attach date pattern for current log file <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/></item>\r\n            <item>Backup number increments for newer files <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/></item>\r\n            <item>Infinite number of backups by file size <see cref=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\"/></item>\r\n            </list>\r\n            </para>\r\n            \r\n            <note>\r\n            <para>\r\n            For large or infinite numbers of backup files a <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> \r\n            greater than zero is highly recommended, otherwise all the backup files need\r\n            to be renamed each time a new backup is created.\r\n            </para>\r\n            <para>\r\n            When Date/Time based rolling is used setting <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> \r\n            to <see langword=\"true\"/> will reduce the number of file renamings to few or none.\r\n            </para>\r\n            </note>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            Changing <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> or <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> without clearing\r\n            the log file directory of backup files will cause unexpected and unwanted side effects.  \r\n            </para>\r\n            </note>\r\n            \r\n            <para>\r\n            If Date/Time based rolling is enabled this appender will attempt to roll existing files\r\n            in the directory without a Date/Time tag based on the last write date of the base log file.\r\n            The appender only rolls the log file when a message is logged. If Date/Time based rolling \r\n            is enabled then the appender will not roll the log file at the Date/Time boundary but\r\n            at the point when the next message is logged after the boundary has been crossed.\r\n            </para>\r\n            \r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.RollingFileAppender\"/> extends the <see cref=\"T:log4net.Appender.FileAppender\"/> and\r\n            has the same behavior when opening the log file.\r\n            The appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            When rolling a backup file necessitates deleting an older backup file the\r\n            file to be deleted is moved to a temporary name before being deleted.\r\n            </para>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            A maximum number of backup files when rolling on date/time boundaries is not supported.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Edward Smit</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RollingFileAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RollingFileAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\r\n            Sets the quiet writer being used.\r\n            </summary>\r\n            <remarks>\r\n            This method can be overridden by sub classes.\r\n            </remarks>\r\n            <param name=\"writer\">the writer to set</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write out a logging event.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to write to file.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles append time behavior for RollingFileAppender.  This checks\r\n            if a roll over either by date (checked first) or time (checked second)\r\n            is need and then appends to the file last.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Write out an array of logging events.\r\n            </summary>\r\n            <param name=\"loggingEvents\">the events to write to file.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles append time behavior for RollingFileAppender.  This checks\r\n            if a roll over either by date (checked first) or time (checked second)\r\n            is need and then appends to the file last.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.AdjustFileBeforeAppend\">\r\n            <summary>\r\n            Performs any required rolling before outputting the next event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Handles append time behavior for RollingFileAppender.  This checks\r\n            if a roll over either by date (checked first) or time (checked second)\r\n            is need and then appends to the file last.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates and opens the file for logging.  If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/>\r\n            is false then the fully qualified name is determined and used.\r\n            </summary>\r\n            <param name=\"fileName\">the name of the file to open</param>\r\n            <param name=\"append\">true to append to existing file</param>\r\n            <remarks>\r\n            <para>This method will ensure that the directory structure\r\n            for the <paramref name=\"fileName\"/> specified exists.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetNextOutputFileName(System.String)\">\r\n            <summary>\r\n            Get the current output file name\r\n            </summary>\r\n            <param name=\"fileName\">the base file name</param>\r\n            <returns>the output file name</returns>\r\n            <remarks>\r\n            The output file name is based on the base fileName specified.\r\n            If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> is set then the output \r\n            file name is the same as the base file passed in. Otherwise\r\n            the output file depends on the date pattern, on the count\r\n            direction or both.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DetermineCurSizeRollBackups\">\r\n            <summary>\r\n            Determines curSizeRollBackups (only within the current roll point)\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetWildcardPatternForFile(System.String)\">\r\n            <summary>\r\n            Generates a wildcard pattern that can be used to find all files\r\n            that are similar to the base file name.\r\n            </summary>\r\n            <param name=\"baseFileName\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetExistingFiles(System.String)\">\r\n            <summary>\r\n            Builds a list of filenames for all files matching the base filename plus a file\r\n            pattern.\r\n            </summary>\r\n            <param name=\"baseFilePath\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverIfDateBoundaryCrossing\">\r\n            <summary>\r\n            Initiates a roll over if needed for crossing a date boundary since the last run.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ExistingInit\">\r\n            <summary>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            The following is done\r\n            <list type=\"bullet\">\r\n            <item>determine curSizeRollBackups (only within the current roll point)</item>\r\n            <item>initiates a roll over if needed for crossing a date boundary since the last run.</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeFromOneFile(System.String,System.String)\">\r\n            <summary>\r\n            Does the work of bumping the 'current' file counter higher\r\n            to the highest count when an incremental file name is seen.\r\n            The highest count is either the first file (when count direction\r\n            is greater than 0) or the last file (when count direction less than 0).\r\n            In either case, we want to know the highest count that is present.\r\n            </summary>\r\n            <param name=\"baseFile\"></param>\r\n            <param name=\"curFileName\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetBackUpIndex(System.String)\">\r\n            <summary>\r\n            Attempts to extract a number from the end of the file name that indicates\r\n            the number of the times the file has been rolled over.\r\n            </summary>\r\n            <remarks>\r\n            Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes.\r\n            </remarks>\r\n            <param name=\"curFileName\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeRollBackups(System.String,System.Collections.ArrayList)\">\r\n            <summary>\r\n            Takes a list of files and a base file name, and looks for \r\n            'incremented' versions of the base file.  Bumps the max\r\n            count up to the highest count seen.\r\n            </summary>\r\n            <param name=\"baseFile\"></param>\r\n            <param name=\"arrayFiles\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ComputeCheckPeriod(System.String)\">\r\n            <summary>\r\n            Calculates the RollPoint for the datePattern supplied.\r\n            </summary>\r\n            <param name=\"datePattern\">the date pattern to calculate the check period for</param>\r\n            <returns>The RollPoint that is most accurate for the date pattern supplied</returns>\r\n            <remarks>\r\n            Essentially the date pattern is examined to determine what the\r\n            most suitable roll point is. The roll point chosen is the roll point\r\n            with the smallest period that can be detected using the date pattern\r\n            supplied. i.e. if the date pattern only outputs the year, month, day \r\n            and hour then the smallest roll point that can be detected would be\r\n            and hourly roll point as minutes could not be detected.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Sets initial conditions including date/time roll over information, first check,\r\n            scheduledFilename, and calls <see cref=\"M:log4net.Appender.RollingFileAppender.ExistingInit\"/> to initialize\r\n            the current number of backups.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.CombinePath(System.String,System.String)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"path1\"></param>\r\n            <param name=\"path2\">.1, .2, .3, etc.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverTime(System.Boolean)\">\r\n            <summary>\r\n            Rollover the file(s) to date/time tagged file(s).\r\n            </summary>\r\n            <param name=\"fileIsOpen\">set to true if the file to be rolled is currently open</param>\r\n            <remarks>\r\n            <para>\r\n            Rollover the file(s) to date/time tagged file(s).\r\n            Resets curSizeRollBackups. \r\n            If fileIsOpen is set then the new file is opened (through SafeOpenFile).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollFile(System.String,System.String)\">\r\n            <summary>\r\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>.\r\n            </summary>\r\n            <param name=\"fromFile\">Name of existing file to roll.</param>\r\n            <param name=\"toFile\">New name for file.</param>\r\n            <remarks>\r\n            <para>\r\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>. It\r\n            also checks for existence of target file and deletes if it does.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.FileExists(System.String)\">\r\n            <summary>\r\n            Test if a file exists at a specified path\r\n            </summary>\r\n            <param name=\"path\">the path to the file</param>\r\n            <returns>true if the file exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a file exists at a specified path\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DeleteFile(System.String)\">\r\n            <summary>\r\n            Deletes the specified file if it exists.\r\n            </summary>\r\n            <param name=\"fileName\">The file to delete.</param>\r\n            <remarks>\r\n            <para>\r\n            Delete a file if is exists.\r\n            The file is first moved to a new filename then deleted.\r\n            This allows the file to be removed even when it cannot\r\n            be deleted, but it still can be moved.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverSize\">\r\n            <summary>\r\n            Implements file roll base on file size.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the maximum number of size based backups is reached\r\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\r\n            file is deleted -- its index determined by the sign of countDirection.\r\n            If <c>countDirection</c> &lt; 0, then files\r\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\r\n            are renamed to {<c>File.2</c>, ...,\r\n            <c>File.curSizeRollBackups</c>}. Moreover, <c>File</c> is\r\n            renamed <c>File.1</c> and closed.\r\n            </para>\r\n            <para>\r\n            A new file is created to receive further log output.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\r\n            <c>File</c> is truncated with no backup files created.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\r\n            renamed if needed and no files are deleted.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverRenameFiles(System.String)\">\r\n            <summary>\r\n            Implements file roll.\r\n            </summary>\r\n            <param name=\"baseFileName\">the base name to rename</param>\r\n            <remarks>\r\n            <para>\r\n            If the maximum number of size based backups is reached\r\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\r\n            file is deleted -- its index determined by the sign of countDirection.\r\n            If <c>countDirection</c> &lt; 0, then files\r\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\r\n            are renamed to {<c>File.2</c>, ...,\r\n            <c>File.curSizeRollBackups</c>}. \r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\r\n            <c>File</c> is truncated with no backup files created.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\r\n            renamed if needed and no files are deleted.\r\n            </para>\r\n            <para>\r\n            This is called by <see cref=\"M:log4net.Appender.RollingFileAppender.RollOverSize\"/> to rename the files.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.NextCheckDate(System.DateTime,log4net.Appender.RollingFileAppender.RollPoint)\">\r\n            <summary>\r\n            Get the start time of the next window for the current rollpoint\r\n            </summary>\r\n            <param name=\"currentDateTime\">the current date</param>\r\n            <param name=\"rollPoint\">the type of roll point we are working with</param>\r\n            <returns>the start time for the next roll point an interval after the currentDateTime date</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the date of the next roll point after the currentDateTime date passed to the method.\r\n            </para>\r\n            <para>\r\n            The basic strategy is to subtract the time parts that are less significant\r\n            than the rollpoint from the current time. This should roll the time back to\r\n            the start of the time window for the current rollpoint. Then we add 1 window\r\n            worth of time and get the start time of the next window for the rollpoint.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_dateTime\">\r\n            <summary>\r\n            This object supplies the current date/time.  Allows test code to plug in\r\n            a method to control this class when testing date/time based rolling. The default\r\n            implementation uses the underlying value of DateTime.Now.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_datePattern\">\r\n            <summary>\r\n            The date pattern. By default, the pattern is set to <c>\".yyyy-MM-dd\"</c> \r\n            meaning daily rollover.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_scheduledFilename\">\r\n            <summary>\r\n            The actual formatted filename that is currently being written to\r\n            or will be the file transferred to on roll over\r\n            (based on staticLogFileName).\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_nextCheck\">\r\n            <summary>\r\n            The timestamp when we shall next recompute the filename.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_now\">\r\n            <summary>\r\n            Holds date of last roll over\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollPoint\">\r\n            <summary>\r\n            The type of rolling done\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxFileSize\">\r\n            <summary>\r\n            The default maximum file size is 10MB\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxSizeRollBackups\">\r\n            <summary>\r\n            There is zero backup files by default\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_curSizeRollBackups\">\r\n            <summary>\r\n            How many sized based backups have been made so far\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_countDirection\">\r\n            <summary>\r\n            The rolling file count direction. \r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollingStyle\">\r\n            <summary>\r\n            The rolling mode used in this appender.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollDate\">\r\n            <summary>\r\n            Cache flag set if we are rolling by date.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollSize\">\r\n            <summary>\r\n            Cache flag set if we are rolling by size.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_staticLogFileName\">\r\n            <summary>\r\n            Value indicating whether to always log to the same file.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_preserveLogFileNameExtension\">\r\n            <summary>\r\n            Value indicating whether to preserve the file name extension when rolling.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_baseFileName\">\r\n            <summary>\r\n            FileName provided in configuration.  Used for rolling properly\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.s_date1970\">\r\n            <summary>\r\n            The 1st of January 1970 in UTC\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DateTimeStrategy\">\r\n            <summary>\r\n            Gets or sets the strategy for determining the current date and time. The default\r\n            implementation is to use LocalDateTime which internally calls through to DateTime.Now. \r\n            DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying\r\n            <see cref=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\"/>.\r\n            </summary>\r\n            <value>\r\n            An implementation of the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> interface which returns the current date and time.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> used to return the current date and time.\r\n            </para>\r\n            <para>\r\n            There are two built strategies for determining the current date and time, \r\n            <see cref=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\"/>\r\n            and <see cref=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The default strategy is <see cref=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DatePattern\">\r\n            <summary>\r\n            Gets or sets the date pattern to be used for generating file names\r\n            when rolling over on date.\r\n            </summary>\r\n            <value>\r\n            The date pattern to be used for generating file names when rolling \r\n            over on date.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Takes a string in the same format as expected by \r\n            <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/>.\r\n            </para>\r\n            <para>\r\n            This property determines the rollover schedule when rolling over\r\n            on date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\">\r\n            <summary>\r\n            Gets or sets the maximum number of backup files that are kept before\r\n            the oldest is erased.\r\n            </summary>\r\n            <value>\r\n            The maximum number of backup files that are kept before the oldest is\r\n            erased.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If set to zero, then there will be no backup files and the log file \r\n            will be truncated when it reaches <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/>.  \r\n            </para>\r\n            <para>\r\n            If a negative number is supplied then no deletions will be made.  Note \r\n            that this could result in very slow performance as a large number of \r\n            files are rolled over unless <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> is used.\r\n            </para>\r\n            <para>\r\n            The maximum applies to <b>each</b> time based group of files and \r\n            <b>not</b> the total.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size in bytes that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property is equivalent to <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/> except\r\n            that it is required for differentiating the setter taking a\r\n            <see cref=\"T:System.Int64\"/> argument from the setter taking a <see cref=\"T:System.String\"/> \r\n            argument.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB (10*1024*1024).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property allows you to specify the maximum size with the\r\n            suffixes \"KB\", \"MB\" or \"GB\" so that the size is interpreted being \r\n            expressed respectively in kilobytes, megabytes or gigabytes. \r\n            </para>\r\n            <para>\r\n            For example, the value \"10KB\" will be interpreted as 10240 bytes.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB.\r\n            </para>\r\n            <para>\r\n            If you have the option to set the maximum file size programmatically\r\n            consider using the <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/> property instead as this\r\n            allows you to set the size in bytes as a <see cref=\"T:System.Int64\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.CountDirection\">\r\n            <summary>\r\n            Gets or sets the rolling file count direction. \r\n            </summary>\r\n            <value>\r\n            The rolling file count direction.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Indicates if the current file is the lowest numbered file or the\r\n            highest numbered file.\r\n            </para>\r\n            <para>\r\n            By default newer files have lower numbers (<see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &lt; 0),\r\n            i.e. log.1 is most recent, log.5 is the 5th backup, etc...\r\n            </para>\r\n            <para>\r\n            <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 does the opposite i.e.\r\n            log.1 is the first backup made, log.5 is the 5th backup made, etc.\r\n            For infinite backups use <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 to reduce \r\n            rollover costs.\r\n            </para>\r\n            <para>The default file count direction is -1.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.RollingStyle\">\r\n            <summary>\r\n            Gets or sets the rolling style.\r\n            </summary>\r\n            <value>The rolling style.</value>\r\n            <remarks>\r\n            <para>\r\n            The default rolling style is <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/>.\r\n            </para>\r\n            <para>\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> this appender's\r\n            <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is set to <c>false</c>, otherwise\r\n            the appender would append to a single file rather than rolling\r\n            the file each time it is opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to preserve the file name extension when rolling.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the file name extension should be preserved.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup.\r\n            However, under Windows the new file name will loose any program associations as the\r\n            extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or\r\n            file.curSizeRollBackup.log to maintain any program associations.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to always log to\r\n            the same file.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if always should be logged to the same file, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            By default file.log is always the current file.  Optionally\r\n            file.log.yyyy-mm-dd for current formatted datePattern can by the currently\r\n            logging file (or file.log.curSizeRollBackup or even\r\n            file.log.yyyy-mm-dd.curSizeRollBackup).\r\n            </para>\r\n            <para>\r\n            This will make time based rollovers with a large number of backups \r\n            much faster as the appender it won't have to rename all the backups!\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollingMode\">\r\n            <summary>\r\n            Style of rolling to use\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Style of rolling to use\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\">\r\n            <summary>\r\n            Roll files once per program execution\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Roll files once per program execution.\r\n            Well really once each time this appender is\r\n            configured.\r\n            </para>\r\n            <para>\r\n            Setting this option also sets <c>AppendToFile</c> to\r\n            <c>false</c> on the <c>RollingFileAppender</c>, otherwise\r\n            this appender would just be a normal file appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\">\r\n            <summary>\r\n            Roll files based only on the size of the file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\">\r\n            <summary>\r\n            Roll files based only on the date\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\">\r\n            <summary>\r\n            Roll files based on both the size and date of the file\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollPoint\">\r\n            <summary>\r\n            The code assumes that the following 'time' constants are in a increasing sequence.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The code assumes that the following 'time' constants are in a increasing sequence.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.InvalidRollPoint\">\r\n            <summary>\r\n            Roll the log not based on the date\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMinute\">\r\n            <summary>\r\n            Roll the log for each minute\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfHour\">\r\n            <summary>\r\n            Roll the log for each hour\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.HalfDay\">\r\n            <summary>\r\n            Roll the log twice a day (midday and midnight)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfDay\">\r\n            <summary>\r\n            Roll the log each day (midnight)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfWeek\">\r\n            <summary>\r\n            Roll the log each week\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMonth\">\r\n            <summary>\r\n            Roll the log each month\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.IDateTime\">\r\n            <summary>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            Used primarily to allow test classes to plug themselves in so they can\r\n            supply test date/times.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.IDateTime.Now\">\r\n            <summary>\r\n            Gets the <i>current</i> time.\r\n            </summary>\r\n            <value>The <i>current</i> time.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <i>current</i> time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> that returns the current time.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.LocalDateTime.Now\">\r\n            <summary>\r\n            Gets the <b>current</b> time.\r\n            </summary>\r\n            <value>The <b>current</b> time.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <b>current</b> time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> that returns the current time as the coordinated universal time (UTC).\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.UniversalDateTime.Now\">\r\n            <summary>\r\n            Gets the <b>current</b> time.\r\n            </summary>\r\n            <value>The <b>current</b> time.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <b>current</b> time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender\">\r\n            <summary>\r\n            Send an e-mail when a specific logging event occurs, typically on errors \r\n            or fatal errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            <note type=\"caution\">\r\n            Authentication and setting the server Port are only available on the MS .NET 1.1 runtime.\r\n            For these features to be enabled you need to ensure that you are using a version of\r\n            the log4net assembly that is built against the MS .NET 1.1 framework and that you are\r\n            running the your application on the MS .NET 1.1 runtime. On all other platforms only sending\r\n            unauthenticated messages to a server listening on port 25 (the default) is supported.\r\n            </note>\r\n            <para>\r\n            Authentication is supported by setting the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property to\r\n            either <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> or <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>.\r\n            If using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> authentication then the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/>\r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> properties must also be set.\r\n            </para>\r\n            <para>\r\n            To set the SMTP server port use the <see cref=\"P:log4net.Appender.SmtpAppender.Port\"/> property. The default port is 25.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Sends the contents of the cyclic buffer as an e-mail message.\r\n            </summary>\r\n            <param name=\"events\">The logging events to send.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendEmail(System.String)\">\r\n            <summary>\r\n            Send the email message\r\n            </summary>\r\n            <param name=\"messageBody\">the body text to include in the mail</param>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.To\">\r\n            <summary>\r\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions).\r\n            </summary>\r\n            <value>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Cc\">\r\n            <summary>\r\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses \r\n            that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions).\r\n            </summary>\r\n            <value>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Bcc\">\r\n            <summary>\r\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses\r\n            that will be blind carbon copied.\r\n            </summary>\r\n            <value>\r\n            A semicolon-delimited list of e-mail addresses.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A semicolon-delimited list of recipient e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.From\">\r\n            <summary>\r\n            Gets or sets the e-mail address of the sender.\r\n            </summary>\r\n            <value>\r\n            The e-mail address of the sender.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The e-mail address of the sender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Subject\">\r\n            <summary>\r\n            Gets or sets the subject line of the e-mail message.\r\n            </summary>\r\n            <value>\r\n            The subject line of the e-mail message.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The subject line of the e-mail message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.SmtpHost\">\r\n            <summary>\r\n            Gets or sets the name of the SMTP relay mail server to use to send \r\n            the e-mail messages.\r\n            </summary>\r\n            <value>\r\n            The name of the e-mail relay server. If SmtpServer is not set, the \r\n            name of the local SMTP server is used.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the e-mail relay server. If SmtpServer is not set, the \r\n            name of the local SMTP server is used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.LocationInfo\">\r\n            <summary>\r\n            Obsolete\r\n            </summary>\r\n            <remarks>\r\n            Use the BufferingAppenderSkeleton Fix methods instead \r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            Obsolete property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Authentication\">\r\n            <summary>\r\n            The mode to use to authentication with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            Valid Authentication mode values are: <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>, \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, and <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>. \r\n            The default value is <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>. When using \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> you must specify the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> \r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> to use to authenticate.\r\n            When using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/> the Windows credentials for the current\r\n            thread, if impersonating, or the process will be used to authenticate. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Username\">\r\n            <summary>\r\n            The username to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the username will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Password\">\r\n            <summary>\r\n            The password to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the password will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Port\">\r\n            <summary>\r\n            The port on which the SMTP server is listening\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Server Port is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            The port on which the SMTP server is listening. The default\r\n            port is <c>25</c>. The Port can only be changed when running on\r\n            the MS .NET 1.1 runtime.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Priority\">\r\n            <summary>\r\n            Gets or sets the priority of the e-mail message\r\n            </summary>\r\n            <value>\r\n            One of the <see cref=\"T:System.Net.Mail.MailPriority\"/> values.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Sets the priority of the e-mails generated by this\r\n            appender. The default priority is <see cref=\"F:System.Net.Mail.MailPriority.Normal\"/>.\r\n            </para>\r\n            <para>\r\n            If you are using this appender to report errors then\r\n            you may want to set the priority to <see cref=\"F:System.Net.Mail.MailPriority.High\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.EnableSsl\">\r\n            <summary>\r\n            Enable or disable use of SSL when sending e-mail message\r\n            </summary>\r\n            <remarks>\r\n            This is available on MS .NET 2.0 runtime and higher\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.ReplyTo\">\r\n            <summary>\r\n            Gets or sets the reply-to e-mail address.\r\n            </summary>\r\n            <remarks>\r\n            This is available on MS .NET 2.0 runtime and higher\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender.SmtpAuthentication\">\r\n            <summary>\r\n            Values for the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            SMTP authentication modes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\">\r\n            <summary>\r\n            No authentication\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\">\r\n            <summary>\r\n            Basic authentication.\r\n            </summary>\r\n            <remarks>\r\n            Requires a username and password to be supplied\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\">\r\n            <summary>\r\n            Integrated authentication\r\n            </summary>\r\n            <remarks>\r\n            Uses the Windows credentials from the current thread or process to authenticate.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpPickupDirAppender\">\r\n            <summary>\r\n            Send an email when a specific logging event occurs, typically on errors \r\n            or fatal errors. Rather than sending via smtp it writes a file into the\r\n            directory specified by <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>. This allows services such\r\n            as the IIS SMTP agent to manage sending the messages.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The configuration for this appender is identical to that of the <c>SMTPAppender</c>,\r\n            except that instead of specifying the <c>SMTPAppender.SMTPHost</c> you specify\r\n            <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>.\r\n            </para>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpPickupDirAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            </remarks>\r\n            <author>Niall Daley</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Sends the contents of the cyclic buffer as an e-mail message.\r\n            </summary>\r\n            <param name=\"events\">The logging events to send.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the contents of the cyclic buffer as an e-mail message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on this appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\r\n            Convert a path into a fully qualified path.\r\n            </summary>\r\n            <param name=\"path\">The path to convert.</param>\r\n            <returns>The fully qualified path.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the path specified to a fully\r\n            qualified path. If the path is relative it is\r\n            taken as relative from the application base \r\n            directory.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpPickupDirAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.To\">\r\n            <summary>\r\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses.\r\n            </summary>\r\n            <value>\r\n            A semicolon-delimited list of e-mail addresses.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.From\">\r\n            <summary>\r\n            Gets or sets the e-mail address of the sender.\r\n            </summary>\r\n            <value>\r\n            The e-mail address of the sender.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The e-mail address of the sender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.Subject\">\r\n            <summary>\r\n            Gets or sets the subject line of the e-mail message.\r\n            </summary>\r\n            <value>\r\n            The subject line of the e-mail message.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The subject line of the e-mail message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\">\r\n            <summary>\r\n            Gets or sets the path to write the messages to.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the path to write the messages to. This should be the same\r\n            as that used by the agent sending the messages.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender\">\r\n            <summary>\r\n            Appender that allows clients to connect via Telnet to receive log messages\r\n            </summary>\r\n            <remarks>\t\r\n            <para>\r\n            The TelnetAppender accepts socket connections and streams logging messages\r\n            back to the client.  \r\n            The output is provided in a telnet-friendly way so that a log can be monitored \r\n            over a TCP/IP socket.\r\n            This allows simple remote monitoring of application logging.\r\n            </para>\r\n            <para>\r\n            The default <see cref=\"P:log4net.Appender.TelnetAppender.Port\"/> is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <author>Keith Long</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TelnetAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the TelnetAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.OnClose\">\r\n            <summary>\r\n            Overrides the parent method to close the socket handler\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes all the outstanding connections.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Create the socket handler and wait for connections\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to each connected client.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to each connected client.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.Port\">\r\n            <summary>\r\n            Gets or sets the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> \r\n            or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler\">\r\n            <summary>\r\n            Helper class to manage connected clients\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The SocketHandler class is used to accept connections from\r\n            clients.  It is threaded so that clients can connect/disconnect\r\n            asynchronously.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.#ctor(System.Int32)\">\r\n            <summary>\r\n            Opens a new server port on <paramref ref=\"port\"/>\r\n            </summary>\r\n            <param name=\"port\">the local port to listen on for connections</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a socket handler on the specified local server port.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Send(System.String)\">\r\n            <summary>\r\n            Sends a string message to each of the connected clients\r\n            </summary>\r\n            <param name=\"message\">the text to send</param>\r\n            <remarks>\r\n            <para>\r\n            Sends a string message to each of the connected clients\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.AddClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\r\n            Add a client to the internal clients list\r\n            </summary>\r\n            <param name=\"client\">client to add</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.RemoveClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\r\n            Remove a client from the internal clients list\r\n            </summary>\r\n            <param name=\"client\">client to remove</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.OnConnect(System.IAsyncResult)\">\r\n            <summary>\r\n            Callback used to accept a connection on the server socket\r\n            </summary>\r\n            <param name=\"asyncResult\">The result of the asynchronous operation</param>\r\n            <remarks>\r\n            <para>\r\n            On connection adds to the list of connections \r\n            if there are two many open connections you will be disconnected\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Dispose\">\r\n            <summary>\r\n            Close all network connections\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Make sure we close all network connections\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.SocketHandler.HasConnections\">\r\n            <summary>\r\n            Test if this handler has active connections\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this handler has active connections\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property will be <c>true</c> while this handler has\r\n            active connections, that is at least one connection that \r\n            the handler will attempt to send a message to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\">\r\n            <summary>\r\n            Class that represents a client connected to this handler\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class that represents a client connected to this handler\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.#ctor(System.Net.Sockets.Socket)\">\r\n            <summary>\r\n            Create this <see cref=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\"/> for the specified <see cref=\"T:System.Net.Sockets.Socket\"/>\r\n            </summary>\r\n            <param name=\"socket\">the client's socket</param>\r\n            <remarks>\r\n            <para>\r\n            Opens a stream writer on the socket.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Send(System.String)\">\r\n            <summary>\r\n            Write a string to the client\r\n            </summary>\r\n            <param name=\"message\">string to send</param>\r\n            <remarks>\r\n            <para>\r\n            Write a string to the client\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Dispose\">\r\n            <summary>\r\n            Cleanup the clients connection\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the socket connection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TraceAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Trace\"/> class for details on configuring the\r\n            trace system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <c>System.Diagnostics.Trace.Write(string,string)</c>\r\n            method. The event's logger name is the default value for the category parameter \r\n            of the Write method. \r\n            </para>\r\n            <para>\r\n            <b>Compact Framework</b><br/>\r\n            The Compact Framework does not support the <see cref=\"T:System.Diagnostics.Trace\"/>\r\n            class for any operation except <c>Assert</c>. When using the Compact Framework this\r\n            appender will write to the <see cref=\"T:System.Diagnostics.Debug\"/> system rather than\r\n            the Trace system. This appender will therefore behave like the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TraceAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_category\">\r\n            <summary>\r\n            Defaults to %logger\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.ImmediateFlush\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender will \r\n            flush at the end of each write.\r\n            </summary>\r\n            <remarks>\r\n            <para>The default behavior is to flush at the end of each \r\n            write. If the option is set to<c>false</c>, then the underlying \r\n            stream can defer writing to physical medium to a later time. \r\n            </para>\r\n            <para>\r\n            Avoiding the flush operation at the end of each append results \r\n            in a performance gain of 10 to 20 percent. However, there is safety\r\n            trade-off involved in skipping flushing. Indeed, when flushing is\r\n            skipped, then it is likely that the last few log events will not\r\n            be recorded on disk when the application exits. This is a high\r\n            price to pay even for a 20% performance gain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasDomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a domain to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.DomainAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's domain to its repository by\r\n            specifying this attribute with the name of the target domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required domains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasRepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a repository to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.RepositoryAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's repository to its repository by\r\n            specifying this attribute with the name of the target repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required repositories.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.AliasRepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The repository to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.AliasRepositoryAttribute.Name\">\r\n            <summary>\r\n            Gets or sets the repository to alias to this assemby's repository.\r\n            </summary>\r\n            <value>\r\n            The repository to alias to this assemby's repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the repository to alias to this assemby's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.AliasDomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasDomainAttribute\"/> class with \r\n            the specified domain to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The domain to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> instead of <see cref=\"T:log4net.Config.AliasDomainAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.BasicConfigurator\">\r\n            <summary>\r\n            Use this class to quickly configure a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Allows very simple programmatic configuration of log4net.\r\n            </para>\r\n            <para>\r\n            Only one appender can be configured using this configurator.\r\n            The appender is set at the root of the hierarchy and all logging\r\n            events will be delivered to that appender.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Config.BasicConfigurator.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the BasicConfigurator class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.BasicConfigurator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure\">\r\n            <summary>\r\n            Initializes the log4net system with a default configuration.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net logging system using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initializes the log4net system using the specified appender.\r\n            </summary>\r\n            <param name=\"appender\">The appender to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net system using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes the log4net system using the specified appenders.\r\n            </summary>\r\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net system using the specified appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> with a default configuration.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the specified repository using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appender\">The appender to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appenders.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.ConfiguratorAttribute\">\r\n            <summary>\r\n            Base class for all log4net configuration attributes.\r\n            </summary>\r\n            <remarks>\r\n            This is an abstract class that must be extended by \r\n            specific configurators. This attribute allows the\r\n            configurator to be parameterized by an assembly level\r\n            attribute.\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.#ctor(System.Int32)\">\r\n            <summary>\r\n            Constructor used by subclasses.\r\n            </summary>\r\n            <param name=\"priority\">the ordering priority for this configurator</param>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"priority\"/> is used to order the configurator\r\n            attributes before they are invoked. Higher priority configurators are executed\r\n            before lower priority ones.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Abstract method implemented by a subclass. When this method is called\r\n            the subclass should configure the <paramref name=\"targetRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compare this instance to another ConfiguratorAttribute\r\n            </summary>\r\n            <param name=\"obj\">the object to compare to</param>\r\n            <returns>see <see cref=\"M:System.IComparable.CompareTo(System.Object)\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the priorities of the two <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> instances.\r\n            Sorts by priority in descending order. Objects with the same priority are\r\n            randomly ordered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging domain for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            Assemblies are mapped to logging domains. Each domain has its own\r\n            logging repository. This attribute specified on the assembly controls\r\n            the configuration of the domain. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the domain that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the repository objects to create for the domain. If \r\n            this attribute is not specified and a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> is not specified\r\n            then the assembly will be part of the default shared logging domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.RepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging repository for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Assemblies are mapped to logging repository. This attribute specified \r\n            on the assembly controls\r\n            the configuration of the repository. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the repository that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> object \r\n            to create for the assembly. If this attribute is not specified or a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> \r\n            is not specified then the assembly will be part of the default shared logging repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class \r\n            with the name of the repository.\r\n            </summary>\r\n            <param name=\"name\">The name of the repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize the attribute with the name for the assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.Name\">\r\n            <summary>\r\n            Gets or sets the name of the logging repository.\r\n            </summary>\r\n            <value>\r\n            The string name to use as the name of the repository associated with this\r\n            assembly.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This value does not have to be unique. Several assemblies can share the\r\n            same repository. They will share the logging configuration of the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.RepositoryType\">\r\n            <summary>\r\n            Gets or sets the type of repository to create for this assembly.\r\n            </summary>\r\n            <value>\r\n            The type of repository to create for this assembly.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type of the repository to create for the assembly.\r\n            The type must implement the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            interface.\r\n            </para>\r\n            <para>\r\n            This will be the type of repository created when \r\n            the repository is created. If multiple assemblies reference the\r\n            same repository then the repository is only created once using the\r\n            <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/> of the first assembly to call into the \r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class \r\n            with the name of the domain.\r\n            </summary>\r\n            <param name=\"name\">The name of the domain.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure\">\r\n            <summary>\r\n            Automatically configures the log4net system based on the \r\n            application's configuration settings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures log4net using a <c>log4net</c> element\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            <para>\r\n            If neither of the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>\r\n            properties are set the configuration is loaded from the application's .config file.\r\n            If set the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property takes priority over the\r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property. The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property\r\n            specifies a path to a file to load the config from. The path is relative to the\r\n            application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property is used as a postfix to the assembly file name.\r\n            The config file must be located in the  application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            For example in a console application setting the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> to\r\n            <c>config</c> has the same effect as not specifying the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or \r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> properties.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\"/> property can be set to cause the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            to watch the configuration file for changes.\r\n            </para>\r\n            <note>\r\n            <para>\r\n            Log4net will only look for assembly level configuration attributes once.\r\n            When using the log4net assembly level attributes to control the configuration \r\n            of log4net you must ensure that the first call to any of the \r\n            <see cref=\"T:log4net.Core.LoggerManager\"/> methods is made from the assembly with the configuration\r\n            attributes. \r\n            </para>\r\n            <para>\r\n            If you cannot guarantee the order in which log4net calls will be made from \r\n            different assemblies you must use programmatic configuration instead, i.e.\r\n            call the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/> method directly.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository using the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            The <paramref name=\"targetRepository\"/> specified must extend the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>\r\n            class otherwise the <see cref=\"T:log4net.Config.XmlConfigurator\"/> will not be able to\r\n            configure it.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"targetRepository\"/> does not extend <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attempt to load configuration from the local file system\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configure the specified repository using a <see cref=\"T:System.IO.FileInfo\"/>\r\n            </summary>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <param name=\"configFile\">the FileInfo pointing to the config file</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromUri(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attempt to load configuration from a URI\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfiguratorAttribute.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the XmlConfiguratorAttribute class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\">\r\n            <summary>\r\n            Gets or sets the filename of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The filename of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified, this is the name of the configuration file to use with\r\n            the <see cref=\"T:log4net.Config.XmlConfigurator\"/>. This file path is relative to the\r\n            <b>application base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>).\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\">\r\n            <summary>\r\n            Gets or sets the extension of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The extension of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified this is the extension for the configuration file.\r\n            The path to the config file is built by using the <b>application \r\n            base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>),\r\n            the <b>assembly file name</b> and the config file extension.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> is set to <c>MyExt</c> then\r\n            possible config file names would be: <c>MyConsoleApp.exe.MyExt</c> or\r\n            <c>MyClassLibrary.dll.MyExt</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to watch the configuration file.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the configuration should be watched, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If this flag is specified and set to <c>true</c> then the framework\r\n            will watch the configuration file and will reload the config each time \r\n            the file is modified.\r\n            </para>\r\n            <para>\r\n            The config file can only be watched if it is loaded from local disk.\r\n            In a No-Touch (Smart Client) deployment where the application is downloaded\r\n            from a web server the config file may not reside on the local disk\r\n            and therefore it may not be able to watch it.\r\n            </para>\r\n            <note>\r\n            Watching configuration is not supported on the SSCLI.\r\n            </note>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.Log4NetConfigurationSectionHandler\">\r\n            <summary>\r\n            Class to register for the log4net section of the configuration file\r\n            </summary>\r\n            <remarks>\r\n            The log4net section of the configuration file needs to have a section\r\n            handler registered. This is the section handler used. It simply returns\r\n            the XML element that is the root of the section.\r\n            </remarks>\r\n            <example>\r\n            Example of registering the log4net section handler :\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<configSections>\r\n            \t\t<section name=\"log4net\" type=\"log4net.Config.Log4NetConfigurationSectionHandler, log4net\" />\r\n            \t</configSections>\r\n            \t<log4net>\r\n            \t\tlog4net configuration XML goes here\r\n            \t</log4net>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)\">\r\n            <summary>\r\n            Parses the configuration section.\r\n            </summary>\r\n            <param name=\"parent\">The configuration settings in a corresponding parent configuration section.</param>\r\n            <param name=\"configContext\">The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.</param>\r\n            <param name=\"section\">The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</param>\r\n            <returns>The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:System.Xml.XmlNode\"/> containing the configuration data,\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.PluginAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a plugin to attach to \r\n            the repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Specifies the type of a plugin to create and attach to the\r\n            assembly's repository. The plugin type must implement the\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPluginFactory\">\r\n            <summary>\r\n            Interface used to create plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used to create  a plugin.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPluginFactory.CreatePlugin\">\r\n            <summary>\r\n            Creates the plugin object.\r\n            </summary>\r\n            <returns>the new plugin instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Create and return a new plugin instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"typeName\">The type name of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            <para>\r\n            Where possible use the constructor that takes a <see cref=\"T:System.Type\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"type\">The type of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.CreatePlugin\">\r\n            <summary>\r\n            Creates the plugin object defined by this attribute.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the instance of the <see cref=\"T:log4net.Plugin.IPlugin\"/> object as \r\n            specified by this attribute.\r\n            </para>\r\n            </remarks>\r\n            <returns>The plugin object.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.ToString\">\r\n            <summary>\r\n            Returns a representation of the properties of this object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Overrides base class <see cref=\"M:System.Object.ToString\"/> method to \r\n            return a representation of the properties of this object.\r\n            </para>\r\n            </remarks>\r\n            <returns>A representation of the properties of this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.Type\">\r\n            <summary>\r\n            Gets or sets the type for the plugin.\r\n            </summary>\r\n            <value>\r\n            The type for the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type for the plugin.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.TypeName\">\r\n            <summary>\r\n            Gets or sets the type name for the plugin.\r\n            </summary>\r\n            <value>\r\n            The type name for the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name for the plugin.\r\n            </para>\r\n            <para>\r\n            Where possible use the <see cref=\"P:log4net.Config.PluginAttribute.Type\"/> property instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.SecurityContextProviderAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Construct provider attribute with type specified\r\n            </summary>\r\n            <param name=\"providerType\">the type of the provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the SecurityContextProvider\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a provider instance from the <see cref=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\"/> specified.\r\n            Sets this as the default security context provider <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.SecurityContextProviderAttribute.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the SecurityContextProviderAttribute class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\">\r\n            <summary>\r\n            Gets or sets the type of the provider to use.\r\n            </summary>\r\n            <value>\r\n            the type of the provider to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure\">\r\n            <summary>\r\n            Automatically configures the log4net system based on the \r\n            application's configuration settings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures log4net using a <c>log4net</c> element\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Uri)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration URI.\r\n            </summary>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration data stream.\r\n            </summary>\r\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Uri)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            URI.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.InternalConfigureFromXml(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the specified repository using a <c>log4net</c> element.\r\n            </summary>\r\n            <param name=\"repository\">The hierarchy to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </para>\r\n            <para>\r\n            This method is ultimately called by one of the Configure methods \r\n            to load the configuration from an <see cref=\"T:System.Xml.XmlElement\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.m_repositoryName2ConfigAndWatchHandler\">\r\n            <summary>\r\n            Maps repository names to ConfigAndWatchHandler instances to allow a particular\r\n            ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is \r\n            reconfigured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the XmlConfigurator class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\">\r\n            <summary>\r\n            Class used to watch config files.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"T:System.IO.FileSystemWatcher\"/> to monitor\r\n            changes to a specified file. Because multiple change notifications\r\n            may be raised when the file is modified, a timer is used to\r\n            compress the notifications into a single event. The timer\r\n            waits for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> time before delivering\r\n            the event notification. If any further <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            change notifications arrive while the timer is waiting it\r\n            is reset and waits again for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> to\r\n            elapse.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\">\r\n            <summary>\r\n            The default amount of time to wait after receiving notification\r\n            before reloading the config file.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_configFile\">\r\n            <summary>\r\n            Holds the FileInfo used to configure the XmlConfigurator\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_repository\">\r\n            <summary>\r\n            Holds the repository being configured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_timer\">\r\n            <summary>\r\n            The timer used to compress the notification events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_watcher\">\r\n            <summary>\r\n            Watches file for changes. This object should be disposed when no longer\r\n            needed to free system handles on the watched resources.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.#ctor(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class to\r\n            watch a specified config file used to configure a repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The configuration file to watch.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnChanged(System.Object,System.IO.FileSystemEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnRenamed(System.Object,System.IO.RenamedEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.OnWatchedFileChange(System.Object)\">\r\n            <summary>\r\n            Called by the timer when the configuration has been updated.\r\n            </summary>\r\n            <param name=\"state\">null</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.Dispose\">\r\n            <summary>\r\n            Release the handles held by the watcher and timer.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.CompactRepositorySelector\">\r\n            <summary>\r\n            The implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface suitable\r\n            for use with the compact framework\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.IRepositorySelector\"/> implementation is a simple\r\n            mapping between repository name and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            object.\r\n            </para>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not support retrieving assembly\r\n            level attributes therefore unlike the <c>DefaultRepositorySelector</c>\r\n            this selector does not examine the calling assembly for attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IRepositorySelector\">\r\n            <summary>\r\n            Interface used by the <see cref=\"T:log4net.LogManager\"/> to select the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.LogManager\"/> uses a <see cref=\"T:log4net.Core.IRepositorySelector\"/> \r\n            to specify the policy for selecting the correct <see cref=\"T:log4net.Repository.ILoggerRepository\"/> \r\n            to return to the caller.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association. The results of this method must be repeatable, i.e.\r\n            when called again with the same arguments the result must be the\r\n            save value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            Lookup a named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. This is the repository created by\r\n            calling <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to create the domain to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the domain\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository with the name specified.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the name\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same name will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>\r\n            An array of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instances created by \r\n            this <see cref=\"T:log4net.Core.IRepositorySelector\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new repository selector\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">the type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new compact repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"defaultRepositoryType\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">throw if <paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Get the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly\r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <param name=\"repositoryName\">the name of the repository to lookup</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The default \r\n            repository is <c>log4net-default-repository</c>. Other repositories \r\n            must be created using the <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            If the named repository does not exist an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> does not exist</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"repositoryType\"/> is <c>null</c> then the\r\n            default repository type specified to the constructor is used.\r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the repository specified\r\n            </summary>\r\n            <param name=\"repositoryName\">the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is null then the default repository type is used.</param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            If the named repository already exists an exception will be thrown.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"repositoryType\"/> is <c>null</c> then the default \r\n            repository type specified to the constructor is used.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> already exists</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.CompactRepositorySelector.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the CompactRepositorySelector class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has been created\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <event cref=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">LoggerRepositoryCreatedEvent</event>\r\n            event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.DefaultRepositorySelector\">\r\n            <summary>\r\n            The default implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses attributes defined on the calling assembly to determine how to\r\n            configure the hierarchy for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Creates a new repository selector.\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">The type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"defaultRepositoryType\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\"><paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and the repository \r\n            to create can be overridden by specifying the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> \r\n            attribute on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            The default values are to use the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> \r\n            implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically configured using \r\n            any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> attributes defined on\r\n            the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the named repository. If <paramref name=\"repositoryName\"/> is <c>null</c>\r\n            a <see cref=\"T:System.ArgumentNullException\"/> is thrown. If the repository \r\n            does not exist a <see cref=\"T:log4net.Core.LogException\"/> is thrown.\r\n            </para>\r\n            <para>\r\n            Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/> to create a repository.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> does not exist.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type,System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryName\">The name to assign to the created repository</param>\r\n            <param name=\"readAssemblyAttributes\">Set to <c>true</c> to read and apply the assembly attributes</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is <see langword=\"null\"/> then the default repository type is used.</param>\r\n            <returns>The new repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.AliasRepository(System.String,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Aliases a repository to an existing repository.\r\n            </summary>\r\n            <param name=\"repositoryAlias\">The repository to alias.</param>\r\n            <param name=\"repositoryTarget\">The repository that the repository is aliased to.</param>\r\n            <remarks>\r\n            <para>\r\n            The repository specified will be aliased to the repository when created. \r\n            The repository must not already exist.\r\n            </para>\r\n            <para>\r\n            When the repository is created it must utilize the same repository type as \r\n            the repository it is aliased to, otherwise the aliasing will fail.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"repositoryAlias\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repositoryTarget\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notifies the registered listeners that the repository has been created.\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <see cref=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetInfoForAssembly(System.Reflection.Assembly,System.String@,System.Type@)\">\r\n            <summary>\r\n            Gets the repository name and repository type for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that has a <see cref=\"T:log4net.Config.RepositoryAttribute\"/>.</param>\r\n            <param name=\"repositoryName\">in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.</param>\r\n            <param name=\"repositoryType\">in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ConfigureRepository(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the repository using information from the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly containing <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/>\r\n            attributes which define the configuration for the repository.</param>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadPlugins(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined plugins on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to add the plugins to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadAliases(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined aliases on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to alias to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Core.DefaultRepositorySelector.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the DefaultRepositorySelector class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ErrorCode\">\r\n            <summary>\r\n            Defined error codes that can be passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Values passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.GenericFailure\">\r\n            <summary>\r\n            A general error\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.WriteFailure\">\r\n            <summary>\r\n            Error while writing output\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FlushFailure\">\r\n            <summary>\r\n            Failed to flush file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.CloseFailure\">\r\n            <summary>\r\n            Failed to close file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FileOpenFailure\">\r\n            <summary>\r\n            Unable to open output file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.MissingLayout\">\r\n            <summary>\r\n            No layout specified\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.AddressParseFailure\">\r\n            <summary>\r\n            Failed to parse address\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ExceptionEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers on an Exception type\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the type of the Exception\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to a Type in <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.    /// \r\n            </para>\r\n            </remarks>\r\n            <author>Drew Schaeffer</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ITriggeringEventEvaluator\">\r\n            <summary>\r\n            Test if an <see cref=\"T:log4net.Core.LoggingEvent\"/> triggers an action\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementations of this interface allow certain appenders to decide\r\n            when to perform an appender specific action.\r\n            </para>\r\n            <para>\r\n            The action or behavior triggered is defined by the implementation.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ITriggeringEventEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Test if this event triggers the action\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Return <c>true</c> if this event triggers the action\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_type\">\r\n            <summary>\r\n            The type that causes the trigger to fire.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_triggerOnSubclass\">\r\n            <summary>\r\n            Causes subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/> to cause the trigger to fire.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor\">\r\n            <summary>\r\n            Default ctor to allow dynamic creation through a configurator.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor(System.Type,System.Boolean)\">\r\n            <summary>\r\n            Constructs an evaluator and initializes to trigger on <paramref name=\"exType\"/>\r\n            </summary>\r\n            <param name=\"exType\">the type that triggers this evaluator.</param>\r\n            <param name=\"triggerOnSubClass\">If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the logging event Exception \r\n            Type is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the Exception Type of the event\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\">\r\n            <summary>\r\n            The type that triggers this evaluator.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.TriggerOnSubclass\">\r\n            <summary>\r\n            If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IErrorHandler\">\r\n            <summary>\r\n            Appenders may delegate their error handling to an <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Error handling is a particularly tedious to get right because by\r\n            definition errors are hard to predict and to reproduce. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <param name=\"errorCode\">The error code associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IFixingRequired\">\r\n            <summary>\r\n            Interface for objects that require fixing.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface that indicates that the object requires fixing before it\r\n            can be taken outside the context of the appender's \r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            When objects that implement this interface are stored \r\n            in the context properties maps <see cref=\"T:log4net.GlobalContext\"/>\r\n            <see cref=\"P:log4net.GlobalContext.Properties\"/> and <see cref=\"T:log4net.ThreadContext\"/>\r\n            <see cref=\"P:log4net.ThreadContext.Properties\"/> are fixed \r\n            (see <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>) the <see cref=\"M:log4net.Core.IFixingRequired.GetFixedObject\"/>\r\n            method will be called.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IFixingRequired.GetFixedObject\">\r\n            <summary>\r\n            Get a portable version of this object\r\n            </summary>\r\n            <returns>the portable instance of this object</returns>\r\n            <remarks>\r\n            <para>\r\n            Get a portable instance object that represents the current\r\n            state of this object. The portable object can be stored\r\n            and logged from any thread with identical results.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ILogger\">\r\n            <summary>\r\n            Interface that all loggers implement\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports logging events and testing if a level\r\n            is enabled for logging.\r\n            </para>\r\n            <para>\r\n            These methods will not throw exceptions. Note to implementor, ensure\r\n            that the implementation of these methods cannot allow an exception\r\n            to be thrown to the caller.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            This generic form is intended to be used by wrappers.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Generates a logging event for the specified <paramref name=\"level\"/> using\r\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This is the most generic printing method that is intended to be used \r\n            by wrappers.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs the specified logging event through this logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"T:log4net.Core.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Name\">\r\n            <summary>\r\n            Gets the name of the logger.\r\n            </summary>\r\n            <value>\r\n            The name of the logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this logger\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ILoggerWrapper\">\r\n            <summary>\r\n            Base interface for all wrappers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Base interface for all wrappers.\r\n            </para>\r\n            <para>\r\n            All wrappers must implement this interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILoggerWrapper.Logger\">\r\n            <summary>\r\n            Get the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this object.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this\r\n            object. The <c>Logger</c> object may not \r\n            be the same object as this object because of logger decorators.\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository creation event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Core.IRepositorySelector\"/> which created the repository.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> event args\r\n            that holds the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> \r\n            event is raised every time a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerRepositoryCreationEventArgs.m_repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerRepositoryCreationEventArgs.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </summary>\r\n            <param name=\"repository\">the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerRepositoryCreationEventArgs.LoggerRepository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.Level\">\r\n            <summary>\r\n            Defines the default set of levels recognized by the system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each <see cref=\"T:log4net.Core.LoggingEvent\"/> has an associated <see cref=\"T:log4net.Core.Level\"/>.\r\n            </para>\r\n            <para>\r\n            Levels have a numeric <see cref=\"P:log4net.Core.Level.Value\"/> that defines the relative \r\n            ordering between levels. Two Levels with the same <see cref=\"P:log4net.Core.Level.Value\"/> \r\n            are deemed to be equivalent.\r\n            </para>\r\n            <para>\r\n            The levels that are recognized by log4net are set for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and each repository can have different levels defined. The levels are stored\r\n            in the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> on the repository. Levels are\r\n            looked up by name from the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>.\r\n            </para>\r\n            <para>\r\n            When logging at level INFO the actual level used is not <see cref=\"F:log4net.Core.Level.Info\"/> but\r\n            the value of <c>LoggerRepository.LevelMap[\"INFO\"]</c>. The default value for this is\r\n            <see cref=\"F:log4net.Core.Level.Info\"/>, but this can be changed by reconfiguring the level map.\r\n            </para>\r\n            <para>\r\n            Each level has a <see cref=\"P:log4net.Core.Level.DisplayName\"/> in addition to its <see cref=\"P:log4net.Core.Level.Name\"/>. The \r\n            <see cref=\"P:log4net.Core.Level.DisplayName\"/> is the string that is written into the output log. By default\r\n            the display name is the same as the level name, but this can be used to alias levels\r\n            or to localize the log output.\r\n            </para>\r\n            <para>\r\n            Some of the predefined levels recognized by the system are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Off\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Fatal\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Error\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Warn\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Info\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Debug\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.All\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <param name=\"displayName\">The display name for this level. This may be localized or otherwise different from the name</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.ToString\">\r\n            <summary>\r\n            Returns the <see cref=\"T:System.String\"/> representation of the current \r\n            <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <returns>\r\n            A <see cref=\"T:System.String\"/> representation of the current <see cref=\"T:log4net.Core.Level\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the level <see cref=\"P:log4net.Core.Level.Name\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Equals(System.Object)\">\r\n            <summary>\r\n            Compares levels.\r\n            </summary>\r\n            <param name=\"o\">The object to compare against.</param>\r\n            <returns><c>true</c> if the objects are equal.</returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the levels of <see cref=\"T:log4net.Core.Level\"/> instances, and \r\n            defers to base class if the target object is not a <see cref=\"T:log4net.Core.Level\"/>\r\n            instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.GetHashCode\">\r\n            <summary>\r\n            Returns a hash code\r\n            </summary>\r\n            <returns>A hash code for the current <see cref=\"T:log4net.Core.Level\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a hash code suitable for use in hashing algorithms and data \r\n            structures like a hash table.\r\n            </para>\r\n            <para>\r\n            Returns the hash code of the level <see cref=\"P:log4net.Core.Level.Value\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compares this instance to a specified object and returns an \r\n            indication of their relative values.\r\n            </summary>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> instance or <see langword=\"null\"/> to compare with this instance.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description>This instance is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description>This instance is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description>\r\n            \t\t\t<para>This instance is greater than <paramref name=\"r\"/>.</para>\r\n            \t\t\t<para>-or-</para>\r\n            \t\t\t<para><paramref name=\"r\"/> is <see langword=\"null\"/>.</para>\r\n            \t\t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <paramref name=\"r\"/> must be an instance of <see cref=\"T:log4net.Core.Level\"/> \r\n            or <see langword=\"null\"/>; otherwise, an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\"><paramref name=\"r\"/> is not a <see cref=\"T:log4net.Core.Level\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Equality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have the same value.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is the same as the \r\n            value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Inequality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have different values.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is different from\r\n            the value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Compare(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Compares two specified <see cref=\"T:log4net.Core.Level\"/> instances.\r\n            </summary>\r\n            <param name=\"l\">The first <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <param name=\"r\">The second <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            two values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is greater than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Off\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Off\"/> level designates a higher level than all the rest.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Log4Net_Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Emergency\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fatal\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fatal\"/> level designates very severe error events \r\n            that will presumably lead the application to abort.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Alert\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Alert\"/> level designates very severe error events. \r\n            Take immediate action, alerts.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Critical\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Critical\"/> level designates very severe error events. \r\n            Critical condition, critical.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Severe\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Severe\"/> level designates very severe error events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Error\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Error\"/> level designates error events that might \r\n            still allow the application to continue running.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Warn\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Warn\"/> level designates potentially harmful \r\n            situations.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Notice\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Notice\"/> level designates informational messages \r\n            that highlight the progress of the application at the highest level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Info\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Info\"/> level designates informational messages that \r\n            highlight the progress of the application at coarse-grained level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Debug\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fine\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fine\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Trace\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Trace\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finer\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finer\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Verbose\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Verbose\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finest\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finest\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.All\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.All\"/> level designates the lowest level possible.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Name\">\r\n            <summary>\r\n            Gets the name of this level.\r\n            </summary>\r\n            <value>\r\n            The name of this level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the name of this level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Value\">\r\n            <summary>\r\n            Gets the value of this level.\r\n            </summary>\r\n            <value>\r\n            The value of this level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the value of this level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.DisplayName\">\r\n            <summary>\r\n            Gets the display name of this level.\r\n            </summary>\r\n            <value>\r\n            The display name of this level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the display name of this level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Core.Level\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ReadOnly(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Creates a read-only wrapper for a <c>LevelCollection</c> instance.\r\n            </summary>\r\n            <param name=\"list\">list to create a readonly wrapper arround</param>\r\n            <returns>\r\n            A <c>LevelCollection</c> wrapper that is read-only.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that is empty and has the default initial capacity.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Int32)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that has the specified initial capacity.\r\n            </summary>\r\n            <param name=\"capacity\">\r\n            The number of elements that the new <c>LevelCollection</c> is initially capable of storing.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"c\">The <c>LevelCollection</c> whose elements are copied to the new collection.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.Level[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection.Tag)\">\r\n            <summary>\r\n            Allow subclasses to avoid our default constructors\r\n            </summary>\r\n            <param name=\"tag\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[])\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Add(log4net.Core.Level)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Core.Level\"/> to the end of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clear\">\r\n            <summary>\r\n            Removes all elements from the <c>LevelCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Core.LevelCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Contains(log4net.Core.Level)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Core.Level\"/> is in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>LevelCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.IndexOf(log4net.Core.Level)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Core.Level\"/>\r\n            in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to locate in the <c>LevelCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>LevelCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Insert(System.Int32,log4net.Core.Level)\">\r\n            <summary>\r\n            Inserts an element into the <c>LevelCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Remove(log4net.Core.Level)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Core.Level\"/> from the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to remove from the <c>LevelCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Core.Level\"/> was not found in the <c>LevelCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>LevelCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Core.LevelCollection.Enumerator\"/> for the entire <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>LevelCollection</c> to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>LevelCollection</c> whose elements should be added to the end of the current <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.Level[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> array to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> collection to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.TrimToSize\">\r\n            <summary>\r\n            Sets the capacity to the actual number of elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements actually contained in the <c>LevelCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\r\n            </summary>\r\n            <value>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</value>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.Level\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the collection has a fixed size.\r\n            </summary>\r\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the IList is read-only.\r\n            </summary>\r\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Capacity\">\r\n            <summary>\r\n            Gets or sets the number of elements the <c>LevelCollection</c> can contain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.ILevelCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Tag\">\r\n            <summary>\r\n            Type visible only to our subclasses\r\n            Used to access protected constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelCollection.Tag.Default\">\r\n            <summary>\r\n            A value\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>Enumerator</c> class.\r\n            </summary>\r\n            <param name=\"tc\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Enumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers at a threshold level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelEvaluator.m_threshold\">\r\n            <summary>\r\n            The threshold for triggering\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </summary>\r\n            <param name=\"threshold\">the threshold to trigger at</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the event level\r\n            is equal or higher than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelEvaluator.Threshold\">\r\n            <summary>\r\n            the threshold to trigger at\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that will cause this evaluator to trigger\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelMap\">\r\n            <summary>\r\n            Mapping between string name and Level object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Mapping between string name and <see cref=\"T:log4net.Core.Level\"/> object.\r\n            This mapping is held separately for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The level name is case insensitive.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelMap.m_mapName2Level\">\r\n            <summary>\r\n            Mapping from level name to Level object. The\r\n            level name is case insensitive\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.#ctor\">\r\n            <summary>\r\n            Construct the level map\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Construct the level map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Clear\">\r\n            <summary>\r\n            Clear the internal maps of all levels\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the internal maps of all levels\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32)\">\r\n            <summary>\r\n            Create a new Level and add it to the map\r\n            </summary>\r\n            <param name=\"name\">the string to display for the Level</param>\r\n            <param name=\"value\">the level value to give to the Level</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new Level and add it to the map\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\">\r\n            <summary>\r\n            Create a new Level and add it to the map\r\n            </summary>\r\n            <param name=\"name\">the string to display for the Level</param>\r\n            <param name=\"value\">the level value to give to the Level</param>\r\n            <param name=\"displayName\">the display name to give to the Level</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new Level and add it to the map\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(log4net.Core.Level)\">\r\n            <summary>\r\n            Add a Level to the map\r\n            </summary>\r\n            <param name=\"level\">the Level to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a Level to the map\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.LookupWithDefault(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup a named level from the map\r\n            </summary>\r\n            <param name=\"defaultLevel\">the name of the level to lookup is taken from this level. \r\n            If the level is not set on the map then this level is added</param>\r\n            <returns>the level in the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a named level from the map. The name of the level to lookup is taken\r\n            from the <see cref=\"P:log4net.Core.Level.Name\"/> property of the <paramref name=\"defaultLevel\"/>\r\n            argument.\r\n            </para>\r\n            <para>\r\n            If no level with the specified name is found then the \r\n            <paramref name=\"defaultLevel\"/> argument is added to the level map\r\n            and returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.Item(System.String)\">\r\n            <summary>\r\n            Lookup a <see cref=\"T:log4net.Core.Level\"/> by name\r\n            </summary>\r\n            <param name=\"name\">The name of the Level to lookup</param>\r\n            <returns>a Level from the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:log4net.Core.Level\"/> from the\r\n            map with the name specified. If the no level is\r\n            found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.AllLevels\">\r\n            <summary>\r\n            Return all possible levels as a list of Level objects.\r\n            </summary>\r\n            <returns>all possible levels as a list of Level objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Return all possible levels as a list of Level objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LocationInfo\">\r\n            <summary>\r\n            The internal representation of caller location information.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class uses the <c>System.Diagnostics.StackTrace</c> class to generate\r\n            a call stack. The caller's information is then extracted from this stack.\r\n            </para>\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \r\n            .NET Compact Framework 1.0 therefore caller location information is not\r\n            available on that framework.\r\n            </para>\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\r\n            </para>\r\n            <para>\r\n            \"StackTrace information will be most informative with Debug build configurations. \r\n            By default, Debug builds include debug symbols, while Release builds do not. The \r\n            debug symbols contain most of the file, method name, line number, and column \r\n            information used in constructing StackFrame and StackTrace objects. StackTrace \r\n            might not report as many method calls as expected, due to code transformations \r\n            that occur during optimization.\"\r\n            </para>\r\n            <para>\r\n            This means that in a Release build the caller information may be incomplete or may \r\n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.NA\">\r\n            <summary>\r\n            When location information is not available the constant\r\n            <c>NA</c> is returned. Current value of this string\r\n            constant is <b>?</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.Type)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class based on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.String,System.String,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"className\">The fully qualified class name.</param>\r\n            <param name=\"methodName\">The method name.</param>\r\n            <param name=\"fileName\">The file name.</param>\r\n            <param name=\"lineNumber\">The line number of the method within the file.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class with the specified data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LocationInfo class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.ClassName\">\r\n            <summary>\r\n            Gets the fully qualified class name of the caller making the logging \r\n            request.\r\n            </summary>\r\n            <value>\r\n            The fully qualified class name of the caller making the logging \r\n            request.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the fully qualified class name of the caller making the logging \r\n            request.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FileName\">\r\n            <summary>\r\n            Gets the file name of the caller.\r\n            </summary>\r\n            <value>\r\n            The file name of the caller.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the file name of the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.LineNumber\">\r\n            <summary>\r\n            Gets the line number of the caller.\r\n            </summary>\r\n            <value>\r\n            The line number of the caller.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the line number of the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.MethodName\">\r\n            <summary>\r\n            Gets the method name of the caller.\r\n            </summary>\r\n            <value>\r\n            The method name of the caller.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the method name of the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FullInfo\">\r\n            <summary>\r\n            Gets all available caller information\r\n            </summary>\r\n            <value>\r\n            All available caller information, in the format\r\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets all available caller information, in the format\r\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.StackFrames\">\r\n            <summary>\r\n            Gets the stack frames from the stack trace of the caller making the log request\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerManager\">\r\n            <summary>\r\n            Static manager that controls the creation of repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Static manager that controls the creation of repositories\r\n            </para>\r\n            <para>\r\n            This class is used by the wrapper managers (e.g. <see cref=\"T:log4net.LogManager\"/>)\r\n            to provide access to the <see cref=\"T:log4net.Core.ILogger\"/> objects.\r\n            </para>\r\n            <para>\r\n            This manager also holds the <see cref=\"T:log4net.Core.IRepositorySelector\"/> that is used to\r\n            lookup and create repositories. The selector can be set either programmatically using\r\n            the <see cref=\"P:log4net.Core.LoggerManager.RepositorySelector\"/> property, or by setting the <c>log4net.RepositorySelector</c>\r\n            AppSetting in the applications config file to the fully qualified type name of the\r\n            selector to use. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#ctor\">\r\n            <summary>\r\n            Private constructor to prevent instances. Only static methods should be used.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Private constructor to prevent instances. Only static methods should be used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#cctor\">\r\n            <summary>\r\n            Hook the shutdown event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            On the full .NET runtime, the static constructor hooks up the \r\n            <c>AppDomain.ProcessExit</c> and <c>AppDomain.DomainUnload</c>> events. \r\n            These are used to shutdown the log4net system as the application exits.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.RegisterAppDomainEvents\">\r\n            <summary>\r\n            Register for ProcessExit and DomainUnload events on the AppDomain\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This needs to be in a separate method because the events make\r\n            a LinkDemand for the ControlAppDomain SecurityPermission. Because\r\n            this is a LinkDemand it is demanded at JIT time. Therefore we cannot\r\n            catch the exception in the method itself, we have to catch it in the\r\n            caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.String,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger found, or <c>null</c> if the named logger does not exist in the\r\n            specified repository.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the specified repository) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger found, or <c>null</c> if the named logger does not exist in the\r\n            specified assembly's repository.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the specified assembly's repository) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <returns>All the defined loggers.</returns>\r\n            <remarks>\r\n            <para>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified assembly's repository.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>All the defined loggers.</returns>\r\n            <remarks>\r\n            <para>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Retrieves a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Retrieves a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to lookup the repository</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Shutdown\">\r\n            <summary>\r\n            Shuts down the log4net system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in all the\r\n            default repositories.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.String)\">\r\n            <summary>\r\n            Shuts down the repository for the repository specified.\r\n            </summary>\r\n            <param name=\"repository\">The repository to shutdown.</param>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            repository for the <paramref name=\"repository\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Shuts down the repository for the repository specified.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            repository for the repository. The repository is looked up using\r\n            the <paramref name=\"repositoryAssembly\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all currently defined repositories.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetVersionInfo\">\r\n            <summary>\r\n            Internal method to get pertinent version info.\r\n            </summary>\r\n            <returns>A string of version info.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnDomainUnload(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"E:System.AppDomain.DomainUnload\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"E:System.AppDomain.DomainUnload\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnProcessExit(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"E:System.AppDomain.ProcessExit\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"E:System.AppDomain.ProcessExit\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LoggerManager class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.s_repositorySelector\">\r\n            <summary>\r\n            Initialize the default repository selector\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerManager.RepositorySelector\">\r\n            <summary>\r\n            Gets or sets the repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </summary>\r\n            <value>\r\n            The repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The repository selector (<see cref=\"T:log4net.Core.IRepositorySelector\"/>) is used by \r\n            the <see cref=\"T:log4net.LogManager\"/> to create and select repositories \r\n            (<see cref=\"T:log4net.Repository.ILoggerRepository\"/>).\r\n            </para>\r\n            <para>\r\n            The caller to <see cref=\"T:log4net.LogManager\"/> supplies either a string name \r\n            or an assembly (if not supplied the assembly is inferred using \r\n            <see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            <para>\r\n            This context is used by the selector to lookup a specific repository.\r\n            </para>\r\n            <para>\r\n            For the full .NET Framework, the default repository is <c>DefaultRepositorySelector</c>;\r\n            for the .NET Compact Framework <c>CompactRepositorySelector</c> is the default\r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerWrapperImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class should be used as the base for all wrapper implementations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerWrapperImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Constructs a new wrapper for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <remarks>\r\n            <para>\r\n            Constructs a new wrapper for the specified logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerWrapperImpl.m_logger\">\r\n            <summary>\r\n            The logger that this object is wrapping\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerWrapperImpl.Logger\">\r\n            <summary>\r\n            Gets the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that this object is implementing.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>Logger</c> object may not be the same object as this object \r\n            because of logger decorators.\r\n            </para>\r\n            <para>\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEventData\">\r\n            <summary>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LoggerName\">\r\n            <summary>\r\n            The logger name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The logger name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Level\">\r\n            <summary>\r\n            Level of logging event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Level of logging event. Level cannot be Serializable\r\n            because it is a flyweight.  Due to its special serialization it\r\n            cannot be declared final either.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Message\">\r\n            <summary>\r\n            The application supplied message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application supplied message of logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ThreadName\">\r\n            <summary>\r\n            The name of thread\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The name of thread in which this logging event was generated\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.TimeStamp\">\r\n            <summary>\r\n            The time the event was logged\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The TimeStamp is stored in the local time zone for this computer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LocationInfo\">\r\n            <summary>\r\n            Location information for the caller.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Location information for the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.UserName\">\r\n            <summary>\r\n            String representation of the user\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            String representation of the user's windows name,\r\n            like DOMAIN\\username\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Identity\">\r\n            <summary>\r\n            String representation of the identity.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            String representation of the current thread's principal identity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ExceptionString\">\r\n            <summary>\r\n            The string representation of the exception\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The string representation of the exception\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Domain\">\r\n            <summary>\r\n            String representation of the AppDomain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            String representation of the AppDomain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Properties\">\r\n            <summary>\r\n            Additional event specific properties\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A logger or an appender may attach additional\r\n            properties to specific events. These properties\r\n            have a string key and an object value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.FixFlags\">\r\n            <summary>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Mdc\">\r\n            <summary>\r\n            Fix the MDC\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Ndc\">\r\n            <summary>\r\n            Fix the NDC\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Message\">\r\n            <summary>\r\n            Fix the rendered message\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.ThreadName\">\r\n            <summary>\r\n            Fix the thread name\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.LocationInfo\">\r\n            <summary>\r\n            Fix the callers location information\r\n            </summary>\r\n            <remarks>\r\n            CAUTION: Very slow to generate\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.UserName\">\r\n            <summary>\r\n            Fix the callers windows user name\r\n            </summary>\r\n            <remarks>\r\n            CAUTION: Slow to generate\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Domain\">\r\n            <summary>\r\n            Fix the domain friendly name\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Identity\">\r\n            <summary>\r\n            Fix the callers principal name\r\n            </summary>\r\n            <remarks>\r\n            CAUTION: May be slow to generate\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Exception\">\r\n            <summary>\r\n            Fix the exception text\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Properties\">\r\n            <summary>\r\n            Fix the event properties. Active properties must implement <see cref=\"T:log4net.Core.IFixingRequired\"/> in order to be eligible for fixing.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.None\">\r\n            <summary>\r\n            No fields fixed\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.All\">\r\n            <summary>\r\n            All fields fixed\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Partial\">\r\n            <summary>\r\n            Partial fields fixed\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This set of partial fields gives good performance. The following fields are fixed:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Message\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.ThreadName\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Exception\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Domain\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Properties\"/></description></item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEvent\">\r\n            <summary>\r\n            The internal representation of logging events. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            When an affirmative decision is made to log then a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> instance is created. This instance \r\n            is passed around to the different log4net components.\r\n            </para>\r\n            <para>\r\n            This class is of concern to those wishing to extend log4net.\r\n            </para>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.HostNameProperty\">\r\n            <summary>\r\n            The key into the Properties map for the host name value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.IdentityProperty\">\r\n            <summary>\r\n            The key into the Properties map for the thread identity value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.UserNameProperty\">\r\n            <summary>\r\n            The key into the Properties map for the user name value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,System.String,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class\r\n            from the supplied parameters.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"loggerName\">The name of the logger of this event.</param>\r\n            <param name=\"level\">The level of this event.</param>\r\n            <param name=\"message\">The message of this event.</param>\r\n            <param name=\"exception\">The exception for this event.</param>\r\n            <remarks>\r\n            <para>\r\n            Except <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>, <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> and <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/>, \r\n            all fields of <c>LoggingEvent</c> are filled when actually needed. Call\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> to cache all data locally\r\n            to prevent inconsistencies.\r\n            </para>\r\n            <para>This method is called by the log4net framework\r\n            to create a logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData,log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <param name=\"fixedData\">The fields in the <paranref name=\"data\"/> struct that have already been fixed.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fixedData\"/> parameter should be used to specify which fields in the\r\n            <paramref name=\"data\"/> struct have been preset. Fields not specified in the <paramref name=\"fixedData\"/>\r\n            will be captured from the environment if requested or fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.EnsureRepository(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Ensure that the repository is set.\r\n            </summary>\r\n            <param name=\"repository\">the value for the repository</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\">\r\n            <summary>\r\n            Write the rendered message to a TextWriter\r\n            </summary>\r\n            <param name=\"writer\">the writer to write the message to</param>\r\n            <remarks>\r\n            <para>\r\n            Unlike the <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property this method\r\n            does store the message data in the internal cache. Therefore \r\n            if called only once this method should be faster than the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property, however if the message is\r\n            to be accessed multiple times then the property will be more efficient.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            The data in this event must be fixed before it can be serialized.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> method must be called during the\r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method call if this event \r\n            is to be used outside that method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            <para>\r\n            Does a <see cref=\"F:log4net.Core.FixFlags.Partial\"/> fix of the data\r\n            in the logging event before returning the event data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <param name=\"fixFlags\">The set of data to ensure is fixed in the LoggingEventData</param>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionStrRep\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <b>Obsolete. Use <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> instead.</b>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionString\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData\">\r\n            <summary>\r\n            Fix instance fields that hold volatile data.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            Calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> is equivalent to\r\n            calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> passing the parameter\r\n            <c>false</c>.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more\r\n            information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\">\r\n            <summary>\r\n            Fixes instance fields that hold volatile data.\r\n            </summary>\r\n            <param name=\"fastButLoose\">Set to <c>true</c> to not fix data that takes a long time to fix.</param>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fastButLoose\"/> param controls the data that\r\n            is fixed. Some of the data that can be fixed takes a long time to \r\n            generate, therefore if you do not require those settings to be fixed\r\n            they can be ignored by setting the <paramref name=\"fastButLoose\"/> param\r\n            to <c>true</c>. This setting will ignore the <see cref=\"P:log4net.Core.LoggingEvent.LocationInformation\"/>\r\n            and <see cref=\"P:log4net.Core.LoggingEvent.UserName\"/> settings.\r\n            </para>\r\n            <para>\r\n            Set <paramref name=\"fastButLoose\"/> to <c>false</c> to ensure that all \r\n            settings are fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Fix the fields specified by the <see cref=\"T:log4net.Core.FixFlags\"/> parameter\r\n            </summary>\r\n            <param name=\"flags\">the fields to fix</param>\r\n            <remarks>\r\n            <para>\r\n            Only fields specified in the <paramref name=\"flags\"/> will be fixed.\r\n            Fields will not be fixed if they have previously been fixed.\r\n            It is not possible to 'unfix' a field.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\">\r\n            <summary>\r\n            Lookup a composite property in this event\r\n            </summary>\r\n            <param name=\"key\">the key for the property to lookup</param>\r\n            <returns>the value for the property</returns>\r\n            <remarks>\r\n            <para>\r\n            This event has composite properties that combine together properties from\r\n            several different contexts in the following order:\r\n            <list type=\"definition\">\r\n            \t<item>\r\n            \t\t<term>this events properties</term>\r\n            \t\t<description>\r\n            \t\tThis event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\tproperties are specific to this event only.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the thread properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the global properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetProperties\">\r\n            <summary>\r\n            Get all the composite properties in this event\r\n            </summary>\r\n            <returns>the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the properties</returns>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/> for details of the composite properties \r\n            stored by the event.\r\n            </para>\r\n            <para>\r\n            This method returns a single <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the\r\n            properties defined for this event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_data\">\r\n            <summary>\r\n            The internal logging event data.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_compositeProperties\">\r\n            <summary>\r\n            The internal logging event data.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_eventProperties\">\r\n            <summary>\r\n            The internal logging event data.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_callerStackBoundaryDeclaringType\">\r\n            <summary>\r\n            The fully qualified Type of the calling \r\n            logger class in the stack frame (i.e. the declaring type of the method).\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_message\">\r\n            <summary>\r\n            The application supplied message of logging event.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_thrownException\">\r\n            <summary>\r\n            The exception that was thrown.\r\n            </summary>\r\n            <remarks>\r\n            This is not serialized. The string representation\r\n            is serialized instead.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_repository\">\r\n            <summary>\r\n            The repository that generated the logging event\r\n            </summary>\r\n            <remarks>\r\n            This is not serialized.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_fixFlags\">\r\n            <summary>\r\n            The fix state for this event\r\n            </summary>\r\n            <remarks>\r\n            These flags indicate which fields have been fixed.\r\n            Not serialized.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_cacheUpdatable\">\r\n            <summary>\r\n            Indicated that the internal cache is updateable (ie not fixed)\r\n            </summary>\r\n            <remarks>\r\n            This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler\r\n            changes in the caching strategy.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.StartTime\">\r\n            <summary>\r\n            Gets the time when the current process started.\r\n            </summary>\r\n            <value>\r\n            This is the time when this process started.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The TimeStamp is stored in the local time zone for this computer.\r\n            </para>\r\n            <para>\r\n            Tries to get the start time for the current process.\r\n            Failing that it returns the time of the first call to\r\n            this property.\r\n            </para>\r\n            <para>\r\n            Note that AppDomains may be loaded and unloaded within the\r\n            same process without the process terminating and therefore\r\n            without the process start time being reset.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Level\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.TimeStamp\">\r\n            <summary>\r\n            Gets the time of the logging event.\r\n            </summary>\r\n            <value>\r\n            The time of the logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The TimeStamp is stored in the local time zone for this computer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LoggerName\">\r\n            <summary>\r\n            Gets the name of the logger that logged the event.\r\n            </summary>\r\n            <value>\r\n            The name of the logger that logged the event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the name of the logger that logged the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LocationInformation\">\r\n            <summary>\r\n            Gets the location information for this logging event.\r\n            </summary>\r\n            <value>\r\n            The location information for this logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Core.LocationInfo\"/> class for more information on\r\n            supported frameworks and the different behavior in Debug and\r\n            Release builds.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.MessageObject\">\r\n            <summary>\r\n            Gets the message object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The message object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the message object used to initialize this event.\r\n            Note that this event may not have a valid message object.\r\n            If the event is serialized the message object will not \r\n            be transferred. To get the text of the message the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined message object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ExceptionObject\">\r\n            <summary>\r\n            Gets the exception object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The exception object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the exception object used to initialize this event.\r\n            Note that this event may not have a valid exception object.\r\n            If the event is serialized the exception object will not \r\n            be transferred. To get the text of the exception the\r\n            <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> method must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined exception object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.RenderedMessage\">\r\n            <summary>\r\n            Gets the message, rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <value>\r\n            The message rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ThreadName\">\r\n            <summary>\r\n            Gets the name of the current thread.  \r\n            </summary>\r\n            <value>\r\n            The name of the current thread, or the thread ID when \r\n            the name is not available.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.UserName\">\r\n            <summary>\r\n            Gets the name of the current user.\r\n            </summary>\r\n            <value>\r\n            The name of the current user, or <c>NOT AVAILABLE</c> when the \r\n            underlying runtime has no support for retrieving the name of the \r\n            current user.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Calls <c>WindowsIdentity.GetCurrent().Name</c> to get the name of\r\n            the current windows user.\r\n            </para>\r\n            <para>\r\n            To improve performance, we could cache the string representation of \r\n            the name, and reuse that as long as the identity stayed constant.  \r\n            Once the identity changed, we would need to re-assign and re-render \r\n            the string.\r\n            </para>\r\n            <para>\r\n            However, the <c>WindowsIdentity.GetCurrent()</c> call seems to \r\n            return different objects every time, so the current implementation \r\n            doesn't do this type of caching.\r\n            </para>\r\n            <para>\r\n            Timing for these operations:\r\n            </para>\r\n            <list type=\"table\">\r\n              <listheader>\r\n                <term>Method</term>\r\n                <description>Results</description>\r\n              </listheader>\r\n              <item>\r\n                <term><c>WindowsIdentity.GetCurrent()</c></term>\r\n                <description>10000 loops, 00:00:00.2031250 seconds</description>\r\n              </item>\r\n              <item>\r\n                <term><c>WindowsIdentity.GetCurrent().Name</c></term>\r\n                <description>10000 loops, 00:00:08.0468750 seconds</description>\r\n              </item>\r\n            </list>\r\n            <para>\r\n            This means we could speed things up almost 40 times by caching the \r\n            value of the <c>WindowsIdentity.GetCurrent().Name</c> property, since \r\n            this takes (8.04-0.20) = 7.84375 seconds.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Identity\">\r\n            <summary>\r\n            Gets the identity of the current thread principal.\r\n            </summary>\r\n            <value>\r\n            The string name of the identity of the current thread principal.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Calls <c>System.Threading.Thread.CurrentPrincipal.Identity.Name</c> to get\r\n            the name of the current thread principal.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Domain\">\r\n            <summary>\r\n            Gets the AppDomain friendly name.\r\n            </summary>\r\n            <value>\r\n            The AppDomain friendly name.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the AppDomain friendly name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Properties\">\r\n            <summary>\r\n            Additional event specific properties.\r\n            </summary>\r\n            <value>\r\n            Additional event specific properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A logger or an appender may attach additional\r\n            properties to specific events. These properties\r\n            have a string key and an object value.\r\n            </para>\r\n            <para>\r\n            This property is for events that have been added directly to\r\n            this event. The aggregate properties (which include these\r\n            event properties) can be retrieved using <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/>\r\n            and <see cref=\"M:log4net.Core.LoggingEvent.GetProperties\"/>.\r\n            </para>\r\n            <para>\r\n            Once the properties have been fixed <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> this property\r\n            returns the combined cached properties. This ensures that updates to\r\n            this property are always reflected in the underlying storage. When\r\n            returning the combined properties there may be more keys in the\r\n            Dictionary than expected.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Fix\">\r\n            <summary>\r\n            The fixed fields in this event\r\n            </summary>\r\n            <value>\r\n            The set of fields that are fixed in this event\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Fields will not be fixed if they have previously been fixed.\r\n            It is not possible to 'unfix' a field.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LogImpl\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.ILog\"/> wrapper interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This implementation of the <see cref=\"T:log4net.ILog\"/> interface\r\n            forwards to the <see cref=\"T:log4net.Core.ILogger\"/> held by the base class.\r\n            </para>\r\n            <para>\r\n            This logger has methods to allow the caller to log at the following\r\n            levels:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <item>\r\n                <term>DEBUG</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>DEBUG</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Debug\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>INFO</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>INFO</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Info\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsInfoEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>WARN</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>WARN</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Warn\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsWarnEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>ERROR</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>ERROR</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Error\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsErrorEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>FATAL</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>FATAL</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Fatal\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsFatalEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n            </list>\r\n            <para>\r\n            The values for these levels and their semantic meanings can be changed by \r\n            configuring the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ILog\">\r\n            <summary>\r\n            The ILog interface is use by application to log messages into\r\n            the log4net framework.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use the <see cref=\"T:log4net.LogManager\"/> to obtain logger instances\r\n            that implement this interface. The <see cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            static method is used to get logger instances.\r\n            </para>\r\n            <para>\r\n            This class contains methods for logging at different levels and also\r\n            has properties for determining if those logging levels are\r\n            enabled in the current configuration.\r\n            </para>\r\n            <para>\r\n            This interface can be implemented in different ways. This documentation\r\n            specifies reasonable behavior that a caller can expect from the actual\r\n            implementation, however different implementations reserve the right to\r\n            do things differently.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <seealso cref=\"T:log4net.LogManager\"/>\r\n            <seealso cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Debug\"/> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Info\"/> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Warn\"/> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Error\"/> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Fatal\"/> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsDebugEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Debug\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This function is intended to lessen the computational cost of\r\n            disabled log debug statements.\r\n            </para>\r\n            <para> For some ILog interface <c>log</c>, when you write:</para>\r\n            <code lang=\"C#\">\r\n            log.Debug(\"This is entry number: \" + i );\r\n            </code>\r\n            <para>\r\n            You incur the cost constructing the message, string construction and concatenation in\r\n            this case, regardless of whether the message is logged or not.\r\n            </para>\r\n            <para>\r\n            If you are worried about speed (who isn't), then you should write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (log.IsDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way you will not incur the cost of parameter\r\n            construction if debugging is disabled for <c>log</c>. On\r\n            the other hand, if the <c>log</c> is debug enabled, you\r\n            will incur the cost of evaluating whether the logger is debug\r\n            enabled twice. Once in <see cref=\"P:log4net.ILog.IsDebugEnabled\"/> and once in\r\n            the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/>.  This is an insignificant overhead\r\n            since evaluating a logger takes about 1% of the time it\r\n            takes to actually log. This is the preferred style of logging.\r\n            </para>\r\n            <para>Alternatively if your logger is available statically then the is debug\r\n            enabled state can be stored in a static variable like this:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            private static readonly bool isDebugEnabled = log.IsDebugEnabled;\r\n            </code>\r\n            <para>\r\n            Then when you come to log you can write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (isDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way the debug enabled state is only queried once\r\n            when the class is loaded. Using a <c>private static readonly</c>\r\n            variable is the most efficient because it is a run time constant\r\n            and can be heavily optimized by the JIT compiler.\r\n            </para>\r\n            <para>\r\n            Of course if you use a static readonly variable to\r\n            hold the enabled state of the logger then you cannot\r\n            change the enabled state at runtime to vary the logging\r\n            that is produced. You have to decide if you need absolute\r\n            speed or runtime flexibility.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Info\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Warn\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Error\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Fatal\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Construct a new wrapper for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <remarks>\r\n            <para>\r\n            Construct a new wrapper for the specified logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ReloadLevels(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Virtual method called when the configuration of the repository changes\r\n            </summary>\r\n            <param name=\"repository\">the repository holding the levels</param>\r\n            <remarks>\r\n            <para>\r\n            Virtual method called when the configuration of the repository changes\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>DEBUG</c> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>DEBUG</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> passed\r\n            as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>INFO</c> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"message\">the message object to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>WARN</c> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>WARN</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>ERROR</c> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>ERROR</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>FATAL</c> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>FATAL</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.LoggerRepositoryConfigurationChanged(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Event handler for the <see cref=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\"/> event\r\n            </summary>\r\n            <param name=\"sender\">the repository</param>\r\n            <param name=\"e\">Empty</param>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LogImpl.ThisDeclaringType\">\r\n            <summary>\r\n            The fully qualified name of this declaring type not the type of any subclass.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsDebugEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>DEBUG</c>\r\n            level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>DEBUG</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This function is intended to lessen the computational cost of\r\n            disabled log debug statements.\r\n            </para>\r\n            <para>\r\n            For some <c>log</c> Logger object, when you write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            log.Debug(\"This is entry number: \" + i );\r\n            </code>\r\n            <para>\r\n            You incur the cost constructing the message, concatenation in\r\n            this case, regardless of whether the message is logged or not.\r\n            </para>\r\n            <para>\r\n            If you are worried about speed, then you should write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (log.IsDebugEnabled())\r\n            { \r\n             log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way you will not incur the cost of parameter\r\n            construction if debugging is disabled for <c>log</c>. On\r\n            the other hand, if the <c>log</c> is debug enabled, you\r\n            will incur the cost of evaluating whether the logger is debug\r\n            enabled twice. Once in <c>IsDebugEnabled</c> and once in\r\n            the <c>Debug</c>.  This is an insignificant overhead\r\n            since evaluating a logger takes about 1% of the time it\r\n            takes to actually log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>INFO</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>INFO</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>WARN</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>WARN</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>ERROR</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>ERROR</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>FATAL</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>FATAL</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContext\">\r\n            <summary>\r\n            A SecurityContext used by log4net when interacting with protected resources\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A SecurityContext used by log4net when interacting with protected resources\r\n            for example with operating system services. This can be used to impersonate\r\n            a principal that has been granted privileges on the system resources.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate this SecurityContext\r\n            </summary>\r\n            <param name=\"state\">State supplied by the caller</param>\r\n            <returns>An <see cref=\"T:System.IDisposable\"/> instance that will\r\n            revoke the impersonation of this SecurityContext, or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Impersonate this security context. Further calls on the current\r\n            thread should now be made in the security context provided\r\n            by this object. When the <see cref=\"T:System.IDisposable\"/> result \r\n            <see cref=\"M:System.IDisposable.Dispose\"/> method is called the security\r\n            context of the thread should be reverted to the state it was in\r\n            before <see cref=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\"/> was called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContextProvider\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.SecurityContextProvider\"/> providers default <see cref=\"T:log4net.Core.SecurityContext\"/> instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A configured component that interacts with potentially protected system\r\n            resources uses a <see cref=\"T:log4net.Core.SecurityContext\"/> to provide the elevated\r\n            privileges required. If the <see cref=\"T:log4net.Core.SecurityContext\"/> object has\r\n            been not been explicitly provided to the component then the component\r\n            will request one from this <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </para>\r\n            <para>\r\n            By default the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is\r\n            an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/> which returns only\r\n            <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects. This is a reasonable default\r\n            where the privileges required are not know by the system.\r\n            </para>\r\n            <para>\r\n            This default behavior can be overridden by subclassing the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            and overriding the <see cref=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\"/> method to return\r\n            the desired <see cref=\"T:log4net.Core.SecurityContext\"/> objects. The default provider\r\n            can be replaced by programmatically setting the value of the \r\n            <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> property.\r\n            </para>\r\n            <para>\r\n            An alternative is to use the <c>log4net.Config.SecurityContextProviderAttribute</c>\r\n            This attribute can be applied to an assembly in the same way as the\r\n            <c>log4net.Config.XmlConfiguratorAttribute\"</c>. The attribute takes\r\n            the type to use as the <see cref=\"T:log4net.Core.SecurityContextProvider\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.SecurityContextProvider.s_defaultProvider\">\r\n            <summary>\r\n            The default provider\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.#ctor\">\r\n            <summary>\r\n            Protected default constructor to allow subclassing\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Protected default constructor to allow subclassing\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\">\r\n            <summary>\r\n            Create a SecurityContext for a consumer\r\n            </summary>\r\n            <param name=\"consumer\">The consumer requesting the SecurityContext</param>\r\n            <returns>An impersonation context</returns>\r\n            <remarks>\r\n            <para>\r\n            The default implementation is to return a <see cref=\"T:log4net.Util.NullSecurityContext\"/>.\r\n            </para>\r\n            <para>\r\n            Subclasses should override this method to provide their own\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\">\r\n            <summary>\r\n            Gets or sets the default SecurityContextProvider\r\n            </summary>\r\n            <value>\r\n            The default SecurityContextProvider\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default provider is used by configured components that\r\n            require a <see cref=\"T:log4net.Core.SecurityContext\"/> and have not had one\r\n            given to them.\r\n            </para>\r\n            <para>\r\n            By default this is an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that returns <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects.\r\n            </para>\r\n            <para>\r\n            The default provider can be set programmatically by setting\r\n            the value of this property to a sub class of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that has the desired behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.TimeEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers after specified number of seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n            <author>Robert Sevcik</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\">\r\n            <summary>\r\n            The default time threshold for triggering in seconds. Zero means it won't trigger at all.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_interval\">\r\n            <summary>\r\n            The time threshold for triggering in seconds. Zero means it won't trigger at all.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_lasttime\">\r\n            <summary>\r\n            The time of last check. This gets updated when the object is created and when the evaluator triggers.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor(System.Int32)\">\r\n            <summary>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </summary>\r\n            <param name=\"interval\">\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.TimeEvaluator.Interval\">\r\n            <summary>\r\n            The time threshold in seconds to trigger after\r\n            </summary>\r\n            <value>\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperCreationHandler\">\r\n            <summary>\r\n            Delegate used to handle creation of new wrappers.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle creation of new wrappers. This delegate\r\n            is called from the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method to construct the wrapper for the specified logger.\r\n            </para>\r\n            <para>\r\n            The delegate to use is supplied to the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperMap\">\r\n            <summary>\r\n            Maps between logger objects and wrapper objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class maintains a mapping between <see cref=\"T:log4net.Core.ILogger\"/> objects and\r\n            <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects. Use the <see cref=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\"/> method to \r\n            lookup the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> for the specified <see cref=\"T:log4net.Core.ILogger\"/>.\r\n            </para>\r\n            <para>\r\n            New wrapper instances are created by the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method. The default behavior is for this method to delegate construction\r\n            of the wrapper to the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/> delegate supplied\r\n            to the constructor. This allows specialization of the behavior without\r\n            requiring subclassing of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.#ctor(log4net.Core.WrapperCreationHandler)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            </summary>\r\n            <param name=\"createWrapperHandler\">The handler to use to create the wrapper objects.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/> class with \r\n            the specified handler to create the wrapper objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Gets the wrapper object for the specified logger.\r\n            </summary>\r\n            <returns>The wrapper object for the specified logger</returns>\r\n            <remarks>\r\n            <para>\r\n            If the logger is null then the corresponding wrapper is null.\r\n            </para>\r\n            <para>\r\n            Looks up the wrapper it it has previously been requested and\r\n            returns it. If the wrapper has never been requested before then\r\n            the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/> virtual method is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Creates the wrapper object for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <returns>The wrapper object for the logger.</returns>\r\n            <remarks>\r\n            <para>\r\n            This implementation uses the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/>\r\n            passed to the constructor to create the wrapper. This method\r\n            can be overridden in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.RepositoryShutdown(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Called when a monitored repository shutdown event is received.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called when a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this\r\n            <see cref=\"T:log4net.Core.WrapperMap\"/> is holding loggers for has signaled its shutdown\r\n            event <see cref=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\"/>. The default\r\n            behavior of this method is to release the references to the loggers\r\n            and their wrappers generated for this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.ILoggerRepository_Shutdown(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Event handler for repository shutdown event.\r\n            </summary>\r\n            <param name=\"sender\">The sender of the event.</param>\r\n            <param name=\"e\">The event args.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_repositories\">\r\n            <summary>\r\n            Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_createWrapperHandler\">\r\n            <summary>\r\n            The handler to use to create the extension wrapper objects.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_shutdownHandler\">\r\n            <summary>\r\n            Internal reference to the delegate used to register for repository shutdown events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.WrapperMap.Repositories\">\r\n            <summary>\r\n            Gets the map of logger repositories.\r\n            </summary>\r\n            <value>\r\n            Map of logger repositories.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the hashtable that is keyed on <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The\r\n            values are hashtables keyed on <see cref=\"T:log4net.Core.ILogger\"/> with the\r\n            value being the corresponding <see cref=\"T:log4net.Core.ILoggerWrapper\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.IDateFormatter\">\r\n            <summary>\r\n            Render a <see cref=\"T:System.DateTime\"/> as a string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface to abstract the rendering of a <see cref=\"T:System.DateTime\"/>\r\n            instance into a string.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/> method is used to render the\r\n            date to a text writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the specified date as a string.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:System.DateTime\"/> as a string and write it\r\n            to the <see cref=\"T:System.IO.TextWriter\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.AbsoluteTimeDateFormat\">\r\n            <summary>\r\n            String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is <b>ABSOLUTE</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.DateAndTimeDateFormat\">\r\n            <summary>\r\n            String constant used to specify DateTimeDateFormat in layouts.  Current value is <b>DATE</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.Iso8601TimeDateFormat\">\r\n            <summary>\r\n            String constant used to specify ISO8601DateFormat in layouts. Current value is <b>ISO8601</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Renders the date into a string. Format is <c>\"HH:mm:ss\"</c>.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to render into a string.</param>\r\n            <param name=\"buffer\">The string builder to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Subclasses should override this method to render the date\r\n            into a string using a precision up to the second. This method\r\n            will be called at most once per second and the result will be\r\n            reused if it is needed again during the same second.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Renders the date into a string. Format is \"HH:mm:ss,fff\".\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to render into a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> method to generate the\r\n            time string up to the seconds and then appends the current\r\n            milliseconds. The results from <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> are\r\n            cached and <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> is called at most once\r\n            per second.\r\n            </para>\r\n            <para>\r\n            Sub classes should override <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/>\r\n            rather than <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeToTheSecond\">\r\n            <summary>\r\n            Last stored time with precision up to the second.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeBuf\">\r\n            <summary>\r\n            Last stored time with precision up to the second, formatted\r\n            as a string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeString\">\r\n            <summary>\r\n            Last stored time with precision up to the second, formatted\r\n            as a string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.DateTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"dd MMM yyyy HH:mm:ss,fff\"</c>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format \r\n            <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, \r\n            <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Angelika Schnagl</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Formats the date without the milliseconds part\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"buffer\">The string builder to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Formats a DateTime in the format <c>\"dd MMM yyyy HH:mm:ss\"</c>\r\n            for example, <c>\"06 Nov 1994 15:49:37\"</c>.\r\n            </para>\r\n            <para>\r\n            The base class will append the <c>\",fff\"</c> milliseconds section.\r\n            This method will only be called at most once per second.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.DateTimeDateFormatter.m_dateTimeFormatInfo\">\r\n            <summary>\r\n            The format info for the invariant culture.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.Iso8601DateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> as <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> specified as a string: <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Formats the date without the milliseconds part\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"buffer\">The string builder to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Formats the date specified as a string: <c>\"yyyy-MM-dd HH:mm:ss\"</c>.\r\n            </para>\r\n            <para>\r\n            The base class will append the <c>\",fff\"</c> milliseconds section.\r\n            This method will only be called at most once per second.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.SimpleDateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"T:System.DateTime\"/> <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"format\">The format string.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> class \r\n            with the specified format string.\r\n            </para>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the date using <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to convert to a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the date format string supplied to the constructor to call\r\n            the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method to format the date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.SimpleDateFormatter.m_formatString\">\r\n            <summary>\r\n            The format string used to format the <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.DenyAllFilter\">\r\n            <summary>\r\n            This filter drops all <see cref=\"T:log4net.Core.LoggingEvent\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can add this filter to the end of a filter chain to\r\n            switch from the default \"accept all unless instructed otherwise\"\r\n            filtering behavior to a \"deny all unless instructed otherwise\"\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterSkeleton\">\r\n            <summary>\r\n            Subclass this type to implement customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should extend this class to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.IFilter\">\r\n            <summary>\r\n            Implement this interface to provide customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should implement this interface to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the logging event should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The LoggingEvent to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.IFilter.Next\">\r\n            <summary>\r\n            Property to get and set the next filter\r\n            </summary>\r\n            <value>\r\n            The next filter in the chain\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Filters are typically composed into chains. This property allows the next filter in \r\n            the chain to be accessed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterSkeleton.m_next\">\r\n            <summary>\r\n            Points to the next filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Filter.FilterSkeleton.Next\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the filter with the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Typically filter's options become active immediately on set, \r\n            however this method must still be called. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the <see cref=\"T:log4net.Core.LoggingEvent\"/> should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            <para>\r\n            This method is marked <c>abstract</c> and must be implemented\r\n            in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.FilterSkeleton.Next\">\r\n            <summary>\r\n            Property to get and set the next filter\r\n            </summary>\r\n            <value>\r\n            The next filter in the chain\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Filters are typically composed into chains. This property allows the next filter in \r\n            the chain to be accessed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Always returns the integer constant <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">the LoggingEvent to filter</param>\r\n            <returns>Always returns <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Ignores the event being logged and just returns\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This can be used to change the default filter\r\n            chain behavior from <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> to <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This filter\r\n            should only be used as the last filter in the chain\r\n            as any further filters will be ignored!\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterDecision\">\r\n            <summary>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Deny\">\r\n            <summary>\r\n            The log event must be dropped immediately without \r\n            consulting with the remaining filters, if any, in the chain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Neutral\">\r\n            <summary>\r\n            This filter is neutral with respect to the log event. \r\n            The remaining filters, if any, should be consulted for a final decision.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Accept\">\r\n            <summary>\r\n            The log event must be logged immediately without \r\n            consulting with the remaining filters, if any, in the chain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelMatchFilter\">\r\n            <summary>\r\n            This is a very simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits two options <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> and\r\n            <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If there is an exact match between the value\r\n            of the <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> option and the <see cref=\"T:log4net.Core.Level\"/> of the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the <see cref=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> option value is set\r\n            to <c>true</c>, if it is <c>false</c> then \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            flag to indicate if the filter should <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> on a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_levelToMatch\">\r\n            <summary>\r\n            the <see cref=\"T:log4net.Core.Level\"/> to match against\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Tests if the <see cref=\"T:log4net.Core.Level\"/> of the logging event matches that of the filter\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to filter</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the event matches the level of the\r\n            filter then the result of the function depends on the\r\n            value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If it is true then\r\n            the function will return <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>, it it is false then it\r\n            will return <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelRangeFilter\">\r\n            <summary>\r\n            This is a simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits three options <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            that determine the range of priorities that are matched, and\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>. If there is a match between the range\r\n            of priorities and the <see cref=\"T:log4net.Core.Level\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the \r\n            <see cref=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in case the <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> \r\n            option value is set to <c>true</c>, if it is <c>false</c>\r\n            then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If there is no match, <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when matching a <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMin\">\r\n            <summary>\r\n            the minimum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMax\">\r\n            <summary>\r\n            the maximum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if the event should be logged.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the logging event to check</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the logging event is outside the range\r\n            matched by this filter then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            is returned. If the <see cref=\"T:log4net.Core.Level\"/> is matched then the value of\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> is checked. If it is true then\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMin\">\r\n            <summary>\r\n            Set the minimum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The minimum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMax\">\r\n            <summary>\r\n            Sets the maximum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The maximum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LoggerMatchFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the event's logger name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The works very similar to the <see cref=\"T:log4net.Filter.LevelMatchFilter\"/>. It admits two \r\n            options <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> and <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>. If the \r\n            <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/> starts \r\n            with the value of the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> option, then the \r\n            <see cref=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> option value is set to <c>true</c>, \r\n            if it is <c>false</c> then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when we have a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_loggerToMatch\">\r\n            <summary>\r\n            The logger name string to substring match against the event\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> equals the beginning of \r\n            the incoming <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> (<see cref=\"M:System.String.StartsWith(System.String)\"/>)\r\n            then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This filter will attempt to match this value against logger name in\r\n            the following way. The match will be done against the beginning of the\r\n            logger name (using <see cref=\"M:System.String.StartsWith(System.String)\"/>). The match is\r\n            case sensitive. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.MdcFilter\">\r\n            <summary>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with layered properties the\r\n            <see cref=\"T:log4net.Filter.PropertyFilter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.PropertyFilter\">\r\n            <summary>\r\n            Simple filter to match a string an event property\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the value for a\r\n            specific event property\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.StringMatchFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the rendered message\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the rendered message\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when we have a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringToMatch\">\r\n            <summary>\r\n            The string to substring match against the message\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringRegexToMatch\">\r\n            <summary>\r\n            A string regex to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_regexToMatch\">\r\n            <summary>\r\n            A regex object to match (generated from m_stringRegexToMatch)\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\">\r\n            <summary>\r\n            Initialize and precompile the Regex if required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the message then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.StringToMatch\">\r\n            <summary>\r\n            Sets the static string to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The string that will be substring matched against\r\n            the rendered message. If the message contains this\r\n            string then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\">\r\n            <summary>\r\n            Sets the regular expression to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The regular expression pattern that will be matched against\r\n            the rendered message. If the message matches this\r\n            pattern then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.PropertyFilter.m_key\">\r\n            <summary>\r\n            The key to use to lookup the string from the event properties\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The event property for the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> is matched against \r\n            the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the property value then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.PropertyFilter.Key\">\r\n            <summary>\r\n            The key to lookup in the event properties and then match against.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The key name to use to lookup in the properties map of the\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>. The match will be performed against \r\n            the value of this property if it exists.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.NdcFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with named stacks stored in the\r\n            properties collections the <see cref=\"T:log4net.Filter.PropertyFilter\"/> should \r\n            be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.NdcFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Sets the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> to <c>\"NDC\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AppDomainPatternConverter\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PatternLayoutConverter\">\r\n            <summary>\r\n            Abstract class that provides the formatting functionality that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            Conversion specifiers in a conversion patterns are parsed to\r\n            individual PatternConverters. Each of which is responsible for\r\n            converting a logging event in a converter specific manner.\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternConverter\">\r\n            <summary>\r\n            Abstract class that provides the formatting functionality that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Conversion specifiers in a conversion patterns are parsed to\r\n            individual PatternConverters. Each of which is responsible for\r\n            converting a logging event in a converter specific manner.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferSize\">\r\n            <summary>\r\n            Initial buffer size\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferMaxCapacity\">\r\n            <summary>\r\n            Maximum buffer size before it is recycled\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.#ctor\">\r\n            <summary>\r\n            Protected constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternConverter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Evaluate this pattern converter and write the output to a writer.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the appropriate way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Set the next pattern converter in the chains\r\n            </summary>\r\n            <param name=\"patternConverter\">the pattern converter that should follow this converter in the chain</param>\r\n            <returns>the next converter</returns>\r\n            <remarks>\r\n            <para>\r\n            The PatternConverter can merge with its neighbor during this method (or a sub class).\r\n            Therefore the return value may or may not be the value of the argument passed in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the pattern converter to the writer with appropriate formatting\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            This method calls <see cref=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\"/> to allow the subclass to perform\r\n            appropriate conversion of the pattern converter. If formatting options have\r\n            been specified via the <see cref=\"P:log4net.Util.PatternConverter.FormattingInfo\"/> then this method will\r\n            apply those formattings before writing the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SpacePad(System.IO.TextWriter,System.Int32)\">\r\n            <summary>\r\n            Fast space padding method.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> to which the spaces will be appended.</param>\r\n            <param name=\"length\">The number of spaces to be padded.</param>\r\n            <remarks>\r\n            <para>\r\n            Fast space padding method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.m_option\">\r\n            <summary>\r\n            The option string to the converter\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionary)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionary\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionaryEnumerator)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteObject(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Object)\">\r\n            <summary>\r\n            Write an object to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the Object to a writer. If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the object to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Next\">\r\n            <summary>\r\n            Get the next pattern converter in the chain\r\n            </summary>\r\n            <value>\r\n            the next pattern converter in the chain\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the next pattern converter in the chain\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.FormattingInfo\">\r\n            <summary>\r\n            Gets or sets the formatting info for this converter\r\n            </summary>\r\n            <value>\r\n            The formatting info for this converter\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the formatting info for this converter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Option\">\r\n            <summary>\r\n            Gets or sets the option value for this converter\r\n            </summary>\r\n            <summary>\r\n            The option for this converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the option value for this converter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Properties\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.Pattern.PatternLayoutConverter\"/> class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.PatternLayoutConverter.m_ignoresException\">\r\n            <summary>\r\n            Flag indicating if this converter handles exceptions\r\n            </summary>\r\n            <remarks>\r\n            <c>false</c> if this converter handles exceptions\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.Pattern.PatternLayoutConverter.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this converter handles the logging event exception\r\n            </summary>\r\n            <value><c>false</c> if this converter handles the logging event exception</value>\r\n            <remarks>\r\n            <para>\r\n            If this converter handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then this property should be set to\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the property should be set to <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this converter does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AppDomainPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetCachePatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetPatternLayoutConverter\">\r\n            <summary>\r\n            Abstract class that provides access to the current HttpContext (<see cref=\"P:System.Web.HttpContext.Current\"/>) that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            This class handles the case when HttpContext.Current is null by writing\r\n            <see cref=\"P:log4net.Util.SystemInfo.NotAvailableText\"/> to the writer.\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetPatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetCachePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Cache will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetContextPatternConverter\">\r\n            <summary>\r\n            Converter for items in the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetContextPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net HttpContext item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetRequestPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetRequestPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetSessionPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetSessionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Session will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.DatePatternConverter\">\r\n            <summary>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Render the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,yyyy\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter pattern based on the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the DatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ExceptionPatternConverter\">\r\n            <summary>\r\n            Write the exception text to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If an exception object is stored in the logging event\r\n            it will be rendered into the pattern output with a\r\n            trailing newline.\r\n            </para>\r\n            <para>\r\n            If there is no exception then nothing will be output\r\n            and no trailing newline will be appended.\r\n            It is typical to put a newline before the exception\r\n            and to have the exception as the last data in the pattern.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the exception text to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            If an exception object is stored in the logging event\r\n            it will be rendered into the pattern output with a\r\n            trailing newline.\r\n            </para>\r\n            <para>\r\n            If there is no exception or the exception property specified\r\n            by the Option value does not exist then nothing will be output\r\n            and no trailing newline will be appended.\r\n            It is typical to put a newline before the exception\r\n            and to have the exception as the last data in the pattern.\r\n            </para>\r\n            <para>\r\n            Recognized values for the Option parameter are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>Message</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>Source</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>StackTrace</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>TargetSite</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>HelpLink</description>\r\n            \t</item>\t\t\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FileLocationPatternConverter\">\r\n            <summary>\r\n            Writes the caller location file name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FileLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location file name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FullLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FullLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.IdentityPatternConverter\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.IdentityPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <paramref name=\"loggingEvent\"/> \r\n            <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LevelPatternConverter\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the display name of the event <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LevelPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.Level.DisplayName\"/> of the <paramref name=\"loggingEvent\"/> <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LineLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LineLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LoggerPatternConverter\">\r\n            <summary>\r\n            Converter for logger name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NamedPatternConverter\">\r\n            <summary>\r\n            Converter to output and truncate <c>'.'</c> separated strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This abstract class supports truncating a <c>'.'</c> separated string\r\n            to show a specified number of elements from the right hand side.\r\n            This is used to truncate class names that are fully qualified.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> method to\r\n            return the fully qualified string.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Get the fully qualified string data\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>the fully qualified name</returns>\r\n            <remarks>\r\n            <para>\r\n            Overridden by subclasses to get the fully qualified name before the\r\n            precision is applied to it.\r\n            </para>\r\n            <para>\r\n            Return the fully qualified <c>'.'</c> (dot/period) separated string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            Render the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> to the precision\r\n            specified by the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.NamedPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the NamedPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LoggerPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the logger\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified logger name</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MessagePatternConverter\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MessagePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MethodLocationPatternConverter\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MethodLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NdcPatternConverter\">\r\n            <summary>\r\n            Converter to include event NDC\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the value of the event property named <c>NDC</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NdcPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event NDC to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            As the thread context stacks are now stored in named event properties\r\n            this converter simply looks up the value of the <c>NDC</c> property.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PropertyPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.RelativeTimePatternConverter\">\r\n            <summary>\r\n            Converter to output the relative time of the event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Converter to output the time of the event relative to the start of the program.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the relative time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the relative time of the event in milliseconds.\r\n            That is the number of milliseconds between the event <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>\r\n            and the <see cref=\"P:log4net.Core.LoggingEvent.StartTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.TimeDifferenceInMillis(System.DateTime,System.DateTime)\">\r\n            <summary>\r\n            Helper method to get the time difference between two DateTime objects\r\n            </summary>\r\n            <param name=\"start\">start time (in the current local time zone)</param>\r\n            <param name=\"end\">end time (in the current local time zone)</param>\r\n            <returns>the time difference in milliseconds</returns>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTraceDetailPatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            </para>\r\n            </remarks>\r\n            <author>Adam Davies</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTracePatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            </para>\r\n            </remarks>\r\n            <author>Michael Cromwell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the strack frames to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.GetMethodInformation(System.Reflection.MethodBase)\">\r\n            <summary>\r\n            Returns the Name of the method\r\n            </summary>\r\n            <param name=\"method\"></param>\r\n            <remarks>This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter</remarks>\r\n            <returns>string</returns>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTracePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the StackTracePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTraceDetailPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the StackTraceDetailPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ThreadPatternConverter\">\r\n            <summary>\r\n            Converter to include event thread name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ThreadPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the ThreadName to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.TypeNamePatternConverter\">\r\n            <summary>\r\n            Pattern converter for the class name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.TypeNamePatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the class\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified type name for the caller location</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UserNamePatternConverter\">\r\n            <summary>\r\n            Converter to include event user name\r\n            </summary>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UserNamePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            Uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> \r\n            in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UtcDatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone, this is converted\r\n            to Universal time before it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.UtcDatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the UtcDatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.ExceptionLayout\">\r\n            <summary>\r\n            A Layout that renders only the Exception text from the logging event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A Layout that renders only the Exception text from the logging event.\r\n            </para>\r\n            <para>\r\n            This Layout should only be used with appenders that utilize multiple\r\n            layouts (e.g. <see cref=\"T:log4net.Appender.AdoNetAppender\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.LayoutSkeleton\">\r\n            <summary>\r\n            Extend this abstract class to create your own log layout format.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the base implementation of the <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            interface. Most layout objects should extend this class.\r\n            </para>\r\n            </remarks>\r\n            <remarks>\r\n            <note type=\"inheritinfo\">\r\n            <para>\r\n            Subclasses must implement the <see cref=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>\r\n            method.\r\n            </para>\r\n            <para>\r\n            Subclasses should set the <see cref=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\"/> in their default\r\n            constructor.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.ILayout\">\r\n            <summary>\r\n            Interface implemented by layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An <see cref=\"T:log4net.Layout.ILayout\"/> object is used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            as text. The <see cref=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> method is called by an\r\n            appender to transform the <see cref=\"T:log4net.Core.LoggingEvent\"/> into a string.\r\n            </para>\r\n            <para>\r\n            The layout can also supply <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            text that is appender before any events and after all the events respectively.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called by an appender to format\r\n            the <paramref name=\"loggingEvent\"/> as text and output to a writer.\r\n            </para>\r\n            <para>\r\n            If the caller does not have a <see cref=\"T:System.IO.TextWriter\"/> and prefers the\r\n            event to be formatted as a <see cref=\"T:System.String\"/> then the following\r\n            code can be used to format the event into a <see cref=\"T:System.IO.StringWriter\"/>.\r\n            </para>\r\n            <code lang=\"C#\">\r\n            StringWriter writer = new StringWriter();\r\n            Layout.Format(writer, loggingEvent);\r\n            string formattedEvent = writer.ToString();\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.ContentType\">\r\n            <summary>\r\n            The content type output by this layout. \r\n            </summary>\r\n            <value>The content type</value>\r\n            <remarks>\r\n            <para>\r\n            The content type output by this layout.\r\n            </para>\r\n            <para>\r\n            This is a MIME type e.g. <c>\"text/plain\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Header\">\r\n            <summary>\r\n            The header for the layout format.\r\n            </summary>\r\n            <value>the layout header</value>\r\n            <remarks>\r\n            <para>\r\n            The Header text will be appended before any logging events\r\n            are formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Footer\">\r\n            <summary>\r\n            The footer for the layout format.\r\n            </summary>\r\n            <value>the layout footer</value>\r\n            <remarks>\r\n            <para>\r\n            The Footer text will be appended after all the logging events\r\n            have been formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handle exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_header\">\r\n            <summary>\r\n            The header text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Header\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_footer\">\r\n            <summary>\r\n            The footer text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Footer\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_ignoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handles exceptions\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <c>false</c> if this layout handles exceptions\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.#ctor\">\r\n            <summary>\r\n            Empty default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Empty default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This method must be implemented by the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called by an appender to format\r\n            the <paramref name=\"loggingEvent\"/> as text.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convenience method for easily formatting the logging event into a string variable.\r\n            </summary>\r\n            <param name=\"loggingEvent\"></param>\r\n            <remarks>\r\n            Creates a new StringWriter instance to store the formatted logging event.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.ContentType\">\r\n            <summary>\r\n            The content type output by this layout. \r\n            </summary>\r\n            <value>The content type is <c>\"text/plain\"</c></value>\r\n            <remarks>\r\n            <para>\r\n            The content type output by this layout.\r\n            </para>\r\n            <para>\r\n            This base class uses the value <c>\"text/plain\"</c>.\r\n            To change this value a subclass must override this\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Header\">\r\n            <summary>\r\n            The header for the layout format.\r\n            </summary>\r\n            <value>the layout header</value>\r\n            <remarks>\r\n            <para>\r\n            The Header text will be appended before any logging events\r\n            are formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Footer\">\r\n            <summary>\r\n            The footer for the layout format.\r\n            </summary>\r\n            <value>the layout footer</value>\r\n            <remarks>\r\n            <para>\r\n            The Footer text will be appended after all the logging events\r\n            have been formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handles exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this layout does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Constructs a ExceptionLayout\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> component activation\r\n            framework.\r\n            </para>\r\n            <para>\r\n            This method does nothing as options become effective immediately.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the exception text from the logging event\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Write the exception string to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            The exception string is retrieved from <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.IRawLayout\">\r\n            <summary>\r\n            Interface for raw layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to an object.\r\n            </para>\r\n            <para>\r\n            This interface should not be confused with the\r\n            <see cref=\"T:log4net.Layout.ILayout\"/> interface. This interface is used in\r\n            only certain specialized situations where a raw object is\r\n            required rather than a formatted string. The <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            is not generally useful than this interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.IRawLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the formatted event</returns>\r\n            <remarks>\r\n            <para>\r\n            Implement this method to create your own layout format.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Layout2RawLayoutAdapter\">\r\n            <summary>\r\n            Adapts any <see cref=\"T:log4net.Layout.ILayout\"/> to a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Where an <see cref=\"T:log4net.Layout.IRawLayout\"/> is required this adapter\r\n            allows a <see cref=\"T:log4net.Layout.ILayout\"/> to be specified.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Layout2RawLayoutAdapter.m_layout\">\r\n            <summary>\r\n            The layout to adapt\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Construct a new adapter\r\n            </summary>\r\n            <param name=\"layout\">the layout to adapt</param>\r\n            <remarks>\r\n            <para>\r\n            Create the adapter for the specified <paramref name=\"layout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Format the logging event as an object.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the formatted event</returns>\r\n            <remarks>\r\n            <para>\r\n            Format the logging event as an object.\r\n            </para>\r\n            <para>\r\n            Uses the <see cref=\"T:log4net.Layout.ILayout\"/> object supplied to \r\n            the constructor to perform the formatting.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.PatternLayout\">\r\n            <summary>\r\n            A flexible layout configurable with pattern string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The goal of this class is to <see cref=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as a string. The results\r\n            depend on the <i>conversion pattern</i>.\r\n            </para>\r\n            <para>\r\n            The conversion pattern is closely related to the conversion\r\n            pattern of the printf function in C. A conversion pattern is\r\n            composed of literal text and format control expressions called\r\n            <i>conversion specifiers</i>.\r\n            </para>\r\n            <para>\r\n            <i>You are free to insert any literal text within the conversion\r\n            pattern.</i>\r\n            </para>\r\n            <para>\r\n            Each conversion specifier starts with a percent sign (%) and is\r\n            followed by optional <i>format modifiers</i> and a <i>conversion\r\n            pattern name</i>. The conversion pattern name specifies the type of\r\n            data, e.g. logger, level, date, thread name. The format\r\n            modifiers control such things as field width, padding, left and\r\n            right justification. The following is a simple example.\r\n            </para>\r\n            <para>\r\n            Let the conversion pattern be <b>\"%-5level [%thread]: %message%newline\"</b> and assume\r\n            that the log4net environment was set to use a PatternLayout. Then the\r\n            statements\r\n            </para>\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(typeof(TestApp));\r\n            log.Debug(\"Message 1\");\r\n            log.Warn(\"Message 2\");   \r\n            </code>\r\n            <para>would yield the output</para>\r\n            <code>\r\n            DEBUG [main]: Message 1\r\n            WARN  [main]: Message 2  \r\n            </code>\r\n            <para>\r\n            Note that there is no explicit separator between text and\r\n            conversion specifiers. The pattern parser knows when it has reached\r\n            the end of a conversion specifier when it reads a conversion\r\n            character. In the example above the conversion specifier\r\n            <b>%-5level</b> means the level of the logging event should be left\r\n            justified to a width of five characters.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>a</term>\r\n                    <description>Equivalent to <b>appdomain</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n            \t\t\tUsed to output the friendly name of the AppDomain where the \r\n            \t\t\tlogging event was generated. \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-cache</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all cache items in the case of <b>%aspnet-cache</b> or just one named item if used as <b>%aspnet-cache{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-context</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all context items in the case of <b>%aspnet-context</b> or just one named item if used as <b>%aspnet-context{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-request</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all request parameters in the case of <b>%aspnet-request</b> or just one named param if used as <b>%aspnet-request{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-session</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all session items in the case of <b>%aspnet-session</b> or just one named item if used as <b>%aspnet-session{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>c</term>\r\n                    <description>Equivalent to <b>logger</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>C</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>class</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>d</term>\r\n                    <description>Equivalent to <b>date</b></description>\r\n                </item>\r\n                <item>\r\n            \t\t<term>date</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>exception</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the exception passed in with the log message.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf an exception object is stored in the logging event\r\n            \t\t\tit will be rendered into the pattern output with a\r\n            \t\t\ttrailing newline.\r\n            \t\t\tIf there is no exception then nothing will be output\r\n            \t\t\tand no trailing newline will be appended.\r\n            \t\t\tIt is typical to put a newline before the exception\r\n            \t\t\tand to have the exception as the last data in the pattern.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>F</term>\r\n                    <description>Equivalent to <b>file</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>file</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the file name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>identity</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>l</term>\r\n                    <description>Equivalent to <b>location</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>L</term>\r\n                    <description>Equivalent to <b>line</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>location</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output location information of the caller which generated\r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information depends on the CLI implementation but\r\n            \t\t\tusually consists of the fully qualified name of the calling\r\n            \t\t\tmethod followed by the callers source the file name and line\r\n            \t\t\tnumber between parentheses.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information can be very useful. However, its\r\n            \t\t\tgeneration is <b>extremely</b> slow. Its use should be avoided\r\n            \t\t\tunless execution speed is not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>level</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the level of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>line</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the line number from where the logging request\r\n            \t\t\twas issued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>logger</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the logger of the logging event. The\r\n            \t\t\tlogger conversion specifier can be optionally followed by\r\n            \t\t\t<i>precision specifier</i>, that is a decimal constant in\r\n            \t\t\tbrackets.\r\n                        </para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the logger name will be\r\n            \t\t\tprinted. By default the logger name is printed in full.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the logger name \"a.b.c\" the pattern\r\n            \t\t\t<b>%logger{2}</b> will output \"b.c\".\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>m</term>\r\n                    <description>Equivalent to <b>message</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>M</term>\r\n                    <description>Equivalent to <b>method</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>message</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the application supplied message associated with \r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>mdc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe MDC (old name for the ThreadContext.Properties) is now part of the\r\n            \t\t\tcombined event properties. This pattern is supported for compatibility\r\n            \t\t\tbut is equivalent to <b>property</b>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>method</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the method name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>n</term>\r\n                    <description>Equivalent to <b>newline</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>newline</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ndc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the NDC (nested diagnostic context) associated\r\n            \t\t\twith the thread that generated the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>p</term>\r\n                    <description>Equivalent to <b>level</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>P</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>properties</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>property</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the an event specific property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are added to events by loggers or appenders. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the event properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\t\t\t\tproperties are specific to this event only.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n            \t\t\t\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>r</term>\r\n                    <description>Equivalent to <b>timestamp</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>stacktrace</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktrace{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n            \t\t\ttype3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>stacktracedetail</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktracedetail{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n                        type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>t</term>\r\n                    <description>Equivalent to <b>thread</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>timestamp</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the number of milliseconds elapsed since the start\r\n            \t\t\tof the application until the creation of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>thread</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the name of the thread that generated the\r\n            \t\t\tlogging event. Uses the thread number if no name is available.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>type</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the fully qualified type name of the caller\r\n            \t\t\tissuing the logging request. This conversion specifier\r\n            \t\t\tcan be optionally followed by <i>precision specifier</i>, that\r\n            \t\t\tis a decimal constant in brackets.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the class name will be\r\n            \t\t\tprinted. By default the class name is output in fully qualified form.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the class name \"log4net.Layout.PatternLayout\", the\r\n            \t\t\tpattern <b>%type{1}</b> will output \"PatternLayout\".\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating the caller class information is\r\n            \t\t\tslow. Thus, its use should be avoided unless execution speed is\r\n            \t\t\tnot an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n                </item>\r\n                <item>\r\n                    <term>u</term>\r\n                    <description>Equivalent to <b>identity</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>username</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller WindowsIdentity information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>utcdate</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>w</term>\r\n                    <description>Equivalent to <b>username</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>x</term>\r\n                    <description>Equivalent to <b>ndc</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>X</term>\r\n                    <description>Equivalent to <b>mdc</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            The single letter patterns are deprecated in favor of the \r\n            longer more descriptive pattern names.\r\n            </para>\r\n            <para>\r\n            By default the relevant information is output as is. However,\r\n            with the aid of format modifiers it is possible to change the\r\n            minimum field width, the maximum field width and justification.\r\n            </para>\r\n            <para>\r\n            The optional format modifier is placed between the percent sign\r\n            and the conversion pattern name.\r\n            </para>\r\n            <para>\r\n            The first optional format modifier is the <i>left justification\r\n            flag</i> which is just the minus (-) character. Then comes the\r\n            optional <i>minimum field width</i> modifier. This is a decimal\r\n            constant that represents the minimum number of characters to\r\n            output. If the data item requires fewer characters, it is padded on\r\n            either the left or the right until the minimum width is\r\n            reached. The default is to pad on the left (right justify) but you\r\n            can specify right padding with the left justification flag. The\r\n            padding character is space. If the data item is larger than the\r\n            minimum field width, the field is expanded to accommodate the\r\n            data. The value is never truncated.\r\n            </para>\r\n            <para>\r\n            This behavior can be changed using the <i>maximum field\r\n            width</i> modifier which is designated by a period followed by a\r\n            decimal constant. If the data item is longer than the maximum\r\n            field, then the extra characters are removed from the\r\n            <i>beginning</i> of the data item and not from the end. For\r\n            example, it the maximum field width is eight and the data item is\r\n            ten characters long, then the first two characters of the data item\r\n            are dropped. This behavior deviates from the printf function in C\r\n            where truncation is done from the end.\r\n            </para>\r\n            <para>\r\n            Below are various format modifier examples for the logger\r\n            conversion specifier.\r\n            </para>\r\n            <div class=\"tablediv\">\r\n            \t<table class=\"dtTABLE\" cellspacing=\"0\">\r\n            \t\t<tr>\r\n            \t\t\t<th>Format modifier</th>\r\n            \t\t\t<th>left justify</th>\r\n            \t\t\t<th>minimum width</th>\r\n            \t\t\t<th>maximum width</th>\r\n            \t\t\t<th>comment</th>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%20logger</td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is less than 20\r\n            \t\t\t\tcharacters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger \r\n            \t\t\t\tname is less than 20 characters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%.30logger</td>\r\n            \t\t\t<td align=\"center\">NA</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tTruncate from the beginning if the logger \r\n            \t\t\t\tname is longer than 30 characters.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\"><nobr>%20.30logger</nobr></td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20.30logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t</table>\r\n            </div>\r\n            <para>\r\n            <b>Note about caller location information.</b><br/>\r\n            The following patterns <c>%type %file %line %method %location %class %C %F %L %l %M</c> \r\n            all generate caller location information.\r\n            Location information uses the <c>System.Diagnostics.StackTrace</c> class to generate\r\n            a call stack. The caller's information is then extracted from this stack.\r\n            </para>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \r\n            .NET Compact Framework 1.0 therefore caller location information is not\r\n            available on that framework.\r\n            </para>\r\n            </note>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\r\n            </para>\r\n            <para>\r\n            \"StackTrace information will be most informative with Debug build configurations. \r\n            By default, Debug builds include debug symbols, while Release builds do not. The \r\n            debug symbols contain most of the file, method name, line number, and column \r\n            information used in constructing StackFrame and StackTrace objects. StackTrace \r\n            might not report as many method calls as expected, due to code transformations \r\n            that occur during optimization.\"\r\n            </para>\r\n            <para>\r\n            This means that in a Release build the caller information may be incomplete or may \r\n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            instance using the <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            This is a more detailed pattern.\r\n            <code><b>%timestamp [%thread] %level %logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <example>\r\n            A similar pattern except that the relative time is\r\n            right padded if less than 6 digits, thread name is right padded if\r\n            less than 15 characters and truncated if longer and the logger\r\n            name is left padded if shorter than 30 characters and truncated if\r\n            longer.\r\n            <code><b>%-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DefaultConversionPattern\">\r\n            <summary>\r\n            Default pattern string for log output. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default pattern string for log output. \r\n            Currently set to the string <b>\"%message%newline\"</b> \r\n            which just prints the application supplied message. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\">\r\n            <summary>\r\n            A detailed conversion pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A conversion pattern which includes Time, Thread, Logger, and Nested Context.\r\n            Current value is <b>%timestamp [%thread] %level %logger %ndc - %message%newline</b>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.s_globalRulesRegistry\">\r\n            <summary>\r\n            Internal map of converter identifiers to converter types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This static map is overridden by the m_converterRegistry instance map\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_pattern\">\r\n            <summary>\r\n            the pattern\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_head\">\r\n            <summary>\r\n            the head of the pattern converter chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_instanceRulesRegistry\">\r\n            <summary>\r\n            patterns defined on this PatternLayout only\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#cctor\">\r\n            <summary>\r\n            Initialize the global registry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the builtin global rules.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor\">\r\n            <summary>\r\n            Constructs a PatternLayout using the DefaultConversionPattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default pattern just produces the application supplied message.\r\n            </para>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            As per the <see cref=\"T:log4net.Core.IOptionHandler\"/> contract the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>\r\n            method must be called after the properties on this object have been\r\n            configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternLayout using the supplied conversion pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to use</param>\r\n            <remarks>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            When using this constructor the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method \r\n            need not be called. This may not be the case when using a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the pattern parser instance\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/> that will format the event</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the conversion string. Sets the\r\n            global and instance rules on the <see cref=\"T:log4net.Util.PatternParser\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string as specified by the conversion pattern.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Parse the <see cref=\"T:log4net.Core.LoggingEvent\"/> using the patter format\r\n            specified in the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\r\n            <param name=\"type\">the type of the converter</param>\r\n            <remarks>\r\n            <para>\r\n            Add a named pattern converter to this instance. This\r\n            converter will be used in the formatting of the event.\r\n            This method must be called before <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"type\"/> specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.PatternLayout.ConversionPattern\">\r\n            <summary>\r\n            The pattern formatting string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <b>ConversionPattern</b> option. This is the string which\r\n            controls formatting and consists of a mix of literal content and\r\n            conversion specifiers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawLayoutConverter\">\r\n            <summary>\r\n            Type converter for the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to convert objects to the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface.\r\n            Supports converting from the <see cref=\"T:log4net.Layout.ILayout\"/> interface to\r\n            the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface using the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertFrom\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from arbitrary types\r\n            to a single target type. See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the <paramref name=\"sourceType\"/> can be converted to the\r\n            type supported by this converter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the source object to the type supported by this object\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the <paramref name=\"source\"/> to the type supported\r\n            by this converter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the sourceType be converted to an <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <param name=\"sourceType\">the source to be to be converted</param>\r\n            <returns><c>true</c> if the source type can be converted to <see cref=\"T:log4net.Layout.IRawLayout\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the <paramref name=\"sourceType\"/> can be converted to a\r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/>. Only <see cref=\"T:log4net.Layout.ILayout\"/> is supported\r\n            as the <paramref name=\"sourceType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the value to a <see cref=\"T:log4net.Layout.IRawLayout\"/> object\r\n            </summary>\r\n            <param name=\"source\">the value to convert</param>\r\n            <returns>the <see cref=\"T:log4net.Layout.IRawLayout\"/> object</returns>\r\n            <remarks>\r\n            <para>\r\n            Convert the <paramref name=\"source\"/> object to a \r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/> object. If the <paramref name=\"source\"/> object\r\n            is a <see cref=\"T:log4net.Layout.ILayout\"/> then the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>\r\n            is used to adapt between the two interfaces, otherwise an\r\n            exception is thrown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawPropertyLayout\">\r\n            <summary>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.#ctor\">\r\n            <summary>\r\n            Constructs a RawPropertyLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Lookup the property for <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns property value</returns>\r\n            <remarks>\r\n            <para>\r\n            Looks up and returns the object value of the property\r\n            named <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>. If there is no property defined\r\n            with than name then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.RawPropertyLayout.Key\">\r\n            <summary>\r\n            The name of the value to lookup in the LoggingEvent Properties collection.\r\n            </summary>\r\n            <value>\r\n            Value to lookup in the LoggingEvent Properties collection\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            String name of the property to lookup in the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.#ctor\">\r\n            <summary>\r\n            Constructs a RawTimeStampLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in local time. To format the time stamp\r\n            in universal time use <see cref=\"T:log4net.Layout.RawUtcTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawUtcTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.#ctor\">\r\n            <summary>\r\n            Constructs a RawUtcTimeStampLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in universal time. To format the time stamp\r\n            in local time use <see cref=\"T:log4net.Layout.RawTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.SimpleLayout\">\r\n            <summary>\r\n            A very simple layout\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            SimpleLayout consists of the level of the log statement,\r\n            followed by \" - \" and then the log message itself. For example,\r\n            <code>\r\n            DEBUG - Hello world\r\n            </code>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.#ctor\">\r\n            <summary>\r\n            Constructs a SimpleLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a simple formatted output.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Formats the event as the level of the even,\r\n            followed by \" - \" and then the log message itself. The\r\n            output is terminated by a newline.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayout\">\r\n             <summary>\r\n             Layout that formats the log events as XML elements.\r\n             </summary>\r\n             <remarks>\r\n             <para>\r\n             The output of the <see cref=\"T:log4net.Layout.XmlLayout\"/> consists of a series of \r\n             log4net:event elements. It does not output a complete well-formed XML \r\n             file. The output is designed to be included as an <em>external entity</em>\r\n             in a separate file to form a correct XML file.\r\n             </para>\r\n             <para>\r\n             For example, if <c>abc</c> is the name of the file where\r\n             the <see cref=\"T:log4net.Layout.XmlLayout\"/> output goes, then a well-formed XML file would \r\n             be:\r\n             </para>\r\n             <code lang=\"XML\">\r\n             &lt;?xml version=\"1.0\" ?&gt;\r\n             \r\n             &lt;!DOCTYPE log4net:events SYSTEM \"log4net-events.dtd\" [&lt;!ENTITY data SYSTEM \"abc\"&gt;]&gt;\r\n            \r\n             &lt;log4net:events version=\"1.2\" xmlns:log4net=\"http://logging.apache.org/log4net/schemas/log4net-events-1.2&gt;\r\n                 &amp;data;\r\n             &lt;/log4net:events&gt;\r\n             </code>\r\n             <para>\r\n             This approach enforces the independence of the <see cref=\"T:log4net.Layout.XmlLayout\"/> \r\n             and the appender where it is embedded.\r\n             </para>\r\n             <para>\r\n             The <c>version</c> attribute helps components to correctly\r\n             interpret output generated by <see cref=\"T:log4net.Layout.XmlLayout\"/>. The value of \r\n             this attribute should be \"1.2\" for release 1.2 and later.\r\n             </para>\r\n             <para>\r\n             Alternatively the <c>Header</c> and <c>Footer</c> properties can be\r\n             configured to output the correct XML header, open tag and close tag.\r\n             When setting the <c>Header</c> and <c>Footer</c> properties it is essential\r\n             that the underlying data store not be appendable otherwise the data\r\n             will become invalid XML.\r\n             </para>\r\n             </remarks>\r\n             <author>Nicko Cadell</author>\r\n             <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutBase\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract class that must be subclassed by an implementation \r\n            to conform to a specific schema.\r\n            </para>\r\n            <para>\r\n            Deriving classes must implement the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor\">\r\n            <summary>\r\n            Protected constructor to support subclasses\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.XmlLayoutBase\"/> class\r\n            with no location info.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Protected constructor to support subclasses\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"locationInfo\" /> parameter determines whether \r\n            location information will be output by the layout. If \r\n            <paramref name=\"locationInfo\" /> is set to <c>true</c>, then the \r\n            file name and line number of the statement at the origin of the log \r\n            statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an SMTPAppender\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:log4net.Core.LoggingEvent\"/> and write it to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This method creates an <see cref=\"T:System.Xml.XmlTextWriter\"/> that writes to the\r\n            <paramref name=\"writer\"/>. The <see cref=\"T:System.Xml.XmlTextWriter\"/> is passed \r\n            to the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method. Subclasses should override the\r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method rather than this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Subclasses should override this method to format\r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> as XML.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_locationInfo\">\r\n            <summary>\r\n            Flag to indicate if location information should be included in\r\n            the XML events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_invalidCharReplacement\">\r\n            <summary>\r\n            The string to replace invalid chars with\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\">\r\n            <summary>\r\n            Gets a value indicating whether to include location information in \r\n            the XML events.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if location information should be included in the XML \r\n            events; otherwise, <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If <see cref=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\"/> is set to <c>true</c>, then the file \r\n            name and line number of the statement at the origin of the log \r\n            statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an <c>SMTPAppender</c>\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\">\r\n            <summary>\r\n            The string to replace characters that can not be expressed in XML with.\r\n            <remarks>\r\n            <para>\r\n            Not all characters may be expressed in XML. This property contains the\r\n            string to replace those that can not with. This defaults to a ?. Set it\r\n            to the empty string to simply remove offending characters. For more\r\n            details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets\r\n            Character replacement will occur in  the log message, the property names \r\n            and the property values.\r\n            </para>\r\n            </remarks>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.ContentType\">\r\n            <summary>\r\n            Gets the content type output by this layout. \r\n            </summary>\r\n            <value>\r\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor\">\r\n            <summary>\r\n            Constructs an XmlLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Constructs an XmlLayout.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <b>LocationInfo</b> option takes a boolean value. By\r\n            default, it is set to false which means there will be no location\r\n            information output by this layout. If the the option is set to\r\n            true, then the file name and line number of the statement\r\n            at the origin of the log statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an SmtpAppender\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Builds a cache of the element names\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Override the base class <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method\r\n            to write the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the <see cref=\"T:System.Xml.XmlWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayout.m_prefix\">\r\n            <summary>\r\n            The prefix to use for all generated element names\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Prefix\">\r\n            <summary>\r\n            The prefix to use for all element names\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default prefix is <b>log4net</b>. Set this property\r\n            to change the prefix. If the prefix is set to an empty string\r\n            then no prefix will be written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeMessage\">\r\n            <summary>\r\n            Set whether or not to base64 encode the message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the log message will be written as text to the xml\r\n            output. This can cause problems when the message contains binary\r\n            data. By setting this to true the contents of the message will be\r\n            base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the log message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeProperties\">\r\n            <summary>\r\n            Set whether or not to base64 encode the property values.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the properties will be written as text to the xml\r\n            output. This can cause problems when one or more properties contain\r\n            binary data. By setting this to true the values of the properties\r\n            will be base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the property values.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutSchemaLog4j\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements compatible with the log4j schema\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the log events according to the http://logging.apache.org/log4j schema.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutSchemaLog4j.s_date1970\">\r\n            <summary>\r\n            The 1st of January 1970 in UTC\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor\">\r\n            <summary>\r\n            Constructs an XMLLayoutSchemaLog4j\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Constructs an XMLLayoutSchemaLog4j.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <b>LocationInfo</b> option takes a boolean value. By\r\n            default, it is set to false which means there will be no location\r\n            information output by this layout. If the the option is set to\r\n            true, then the file name and line number of the statement\r\n            at the origin of the log statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an SMTPAppender\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Actually do the writing of the xml\r\n            </summary>\r\n            <param name=\"writer\">the writer to use</param>\r\n            <param name=\"loggingEvent\">the event to write</param>\r\n            <remarks>\r\n            <para>\r\n            Generate XML that is compatible with the log4j schema.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutSchemaLog4j.Version\">\r\n            <summary>\r\n            The version of the log4j schema to use.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Only version 1.2 of the log4j schema is supported.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.DefaultRenderer\">\r\n            <summary>\r\n            The default object Renderer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default renderer supports rendering objects and collections to strings.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\"/> method for details of the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.IObjectRenderer\">\r\n            <summary>\r\n            Implement this interface in order to render objects as strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Certain types require special case conversion to\r\n            string form. This conversion is done by an object renderer.\r\n            Object renderers implement the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.IObjectRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a \r\n            string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            <para>\r\n            The default renderer supports rendering objects to strings as follows:\r\n            </para>\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Rendered String</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term><c>null</c></term>\r\n            \t\t<description>\r\n            \t\t<para>\"(null)\"</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Array\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tFor a one dimensional array this is the\r\n            \t\tarray type name, an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace. \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>int[] {1, 2, 3}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tIf the array is not one dimensional the \r\n            \t\t<c>Array.ToString()</c> is returned.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.IEnumerable\"/>, <see cref=\"T:System.Collections.ICollection\"/> &amp; <see cref=\"T:System.Collections.IEnumerator\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>{a, b, c}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tAll collection classes that implement <see cref=\"T:System.Collections.ICollection\"/> its subclasses, \r\n            \t\tor generic equivalents all implement the <see cref=\"T:System.Collections.IEnumerable\"/> interface.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.DictionaryEntry\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as the key, an equals sign ('='), and the value (using the appropriate\r\n            \t\trenderer). \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>key=value</c>.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\t<para><c>Object.ToString()</c></para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderArray(log4net.ObjectRenderer.RendererMap,System.Array,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the array argument into a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"array\">the array to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            For a one dimensional array this is the\r\n            array type name, an open brace, followed by a comma\r\n            separated list of the elements (using the appropriate\r\n            renderer), followed by a close brace. For example:\r\n            <c>int[] {1, 2, 3}</c>.\r\n            </para>\r\n            <para>\r\n            If the array is not one dimensional the \r\n            <c>Array.ToString()</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderEnumerator(log4net.ObjectRenderer.RendererMap,System.Collections.IEnumerator,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the enumerator argument into a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"enumerator\">the enumerator to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Rendered as an open brace, followed by a comma\r\n            separated list of the elements (using the appropriate\r\n            renderer), followed by a close brace. For example:\r\n            <c>{a, b, c}</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderDictionaryEntry(log4net.ObjectRenderer.RendererMap,System.Collections.DictionaryEntry,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the DictionaryEntry argument into a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"entry\">the DictionaryEntry to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the key, an equals sign ('='), and the value (using the appropriate\r\n            renderer). For example: <c>key=value</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.RendererMap\">\r\n            <summary>\r\n            Map class objects to an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a mapping between types that require special\r\n            rendering and the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> that\r\n            is used to render them.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/> method is used to render an\r\n            <c>object</c> using the appropriate renderers defined in this map.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <returns>the object rendered as a string</returns>\r\n            <remarks>\r\n            <para>\r\n            This is a convenience method used to render an object to a string.\r\n            The alternative method <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            should be used when streaming output to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Find the appropriate renderer for the type of the\r\n            <paramref name=\"obj\"/> parameter. This is accomplished by calling the\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> method. Once a renderer is found, it is\r\n            applied on the object <paramref name=\"obj\"/> and the result is returned\r\n            as a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Object)\">\r\n            <summary>\r\n            Gets the renderer for the specified object type\r\n            </summary>\r\n            <param name=\"obj\">the object to lookup the renderer for</param>\r\n            <returns>the renderer for <paramref name=\"obj\"/></returns>\r\n            <remarks>\r\n            <param>\r\n            Gets the renderer for the specified object type.\r\n            </param>\r\n            <param>\r\n            Syntactic sugar method that calls <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> \r\n            with the type of the object parameter.\r\n            </param>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\">\r\n            <summary>\r\n            Gets the renderer for the specified type\r\n            </summary>\r\n            <param name=\"type\">the type to lookup the renderer for</param>\r\n            <returns>the renderer for the specified type</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the renderer for the specified type.\r\n            If no specific renderer has been defined the\r\n            <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.SearchTypeAndInterfaces(System.Type)\">\r\n            <summary>\r\n            Internal function to recursively search interfaces\r\n            </summary>\r\n            <param name=\"type\">the type to lookup the renderer for</param>\r\n            <returns>the renderer for the specified type</returns>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Clear\">\r\n            <summary>\r\n            Clear the map of renderers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the custom renderers defined by using\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\"/>. The <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/>\r\n            cannot be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\r\n            Register an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> for <paramref name=\"typeToRender\"/>. \r\n            </summary>\r\n            <param name=\"typeToRender\">the type that will be rendered by <paramref name=\"renderer\"/></param>\r\n            <param name=\"renderer\">the renderer for <paramref name=\"typeToRender\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Register an object renderer for a specific source type.\r\n            This renderer will be returned from a call to <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/>\r\n            specifying the same <paramref name=\"typeToRender\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\">\r\n            <summary>\r\n            Get the default renderer instance\r\n            </summary>\r\n            <value>the default renderer</value>\r\n            <remarks>\r\n            <para>\r\n            Get the default renderer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPlugin\">\r\n            <summary>\r\n            Interface implemented by logger repository plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Plugins define additional behavior that can be associated\r\n            with a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The <see cref=\"T:log4net.Plugin.PluginMap\"/> held by the <see cref=\"P:log4net.Repository.ILoggerRepository.PluginMap\"/>\r\n            property is used to store the plugins for a repository.\r\n            </para>\r\n            <para>\r\n            The <c>log4net.Config.PluginAttribute</c> can be used to\r\n            attach plugins to repositories created using configuration\r\n            attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches the plugin to the specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Shutdown\">\r\n            <summary>\r\n            Is called when the plugin is to shutdown.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called to notify the plugin that \r\n            it should stop operating and should detach from\r\n            the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.IPlugin.Name\">\r\n            <summary>\r\n            Gets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ReadOnly(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Creates a read-only wrapper for a <c>PluginCollection</c> instance.\r\n            </summary>\r\n            <param name=\"list\">list to create a readonly wrapper arround</param>\r\n            <returns>\r\n            A <c>PluginCollection</c> wrapper that is read-only.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that is empty and has the default initial capacity.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Int32)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that has the specified initial capacity.\r\n            </summary>\r\n            <param name=\"capacity\">\r\n            The number of elements that the new <c>PluginCollection</c> is initially capable of storing.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"c\">The <c>PluginCollection</c> whose elements are copied to the new collection.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection.Tag)\">\r\n            <summary>\r\n            Allow subclasses to avoid our default constructors\r\n            </summary>\r\n            <param name=\"tag\"></param>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the end of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clear\">\r\n            <summary>\r\n            Removes all elements from the <c>PluginCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Plugin.PluginCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Contains(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Plugin.IPlugin\"/> is in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>PluginCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IndexOf(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to locate in the <c>PluginCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>PluginCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Insert(System.Int32,log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Inserts an element into the <c>PluginCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Plugin.IPlugin\"/> from the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the <c>PluginCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Plugin.IPlugin\"/> was not found in the <c>PluginCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>PluginCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Plugin.PluginCollection.Enumerator\"/> for the entire <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>PluginCollection</c> to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>PluginCollection</c> whose elements should be added to the end of the current <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> array to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> collection to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.TrimToSize\">\r\n            <summary>\r\n            Sets the capacity to the actual number of elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements actually contained in the <c>PluginCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\r\n            </summary>\r\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the collection.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the collection.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </value>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the collection has a fixed size.\r\n            </summary>\r\n            <value><c>true</c> if the collection has a fixed size; otherwise, <c>false</c>. The default is <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the IList is read-only.\r\n            </summary>\r\n            <value><c>true</c> if the collection is read-only; otherwise, <c>false</c>. The default is <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Capacity\">\r\n            <summary>\r\n            Gets or sets the number of elements the <c>PluginCollection</c> can contain.\r\n            </summary>\r\n            <value>\r\n            The number of elements the <c>PluginCollection</c> can contain.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Tag\">\r\n            <summary>\r\n            Type visible only to our subclasses\r\n            Used to access protected constructor\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginCollection.Tag.Default\">\r\n            <summary>\r\n            A value\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>Enumerator</c> class.\r\n            </summary>\r\n            <param name=\"tc\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Enumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n            <value>\r\n            The current element in the collection.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.ReadOnlyPluginCollection\">\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginMap\">\r\n            <summary>\r\n            Map of repository plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class is a name keyed map of the plugins that are\r\n            attached to a repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository that the plugins should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Plugin.PluginMap\"/> class with a \r\n            repository that the plugins should be attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to add to the map.</param>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> will be attached to the repository when added.\r\n            </para>\r\n            <para>\r\n            If there already exists a plugin with the same name \r\n            attached to the repository then the old plugin will\r\n            be <see cref=\"M:log4net.Plugin.IPlugin.Shutdown\"/> and replaced with\r\n            the new plugin.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes a <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the map.</param>\r\n            <remarks>\r\n            <para>\r\n            Remove a specific plugin from this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.Item(System.String)\">\r\n            <summary>\r\n            Gets a <see cref=\"T:log4net.Plugin.IPlugin\"/> by name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Plugin.IPlugin\"/> to lookup.</param>\r\n            <returns>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map with the name specified, or \r\n            <c>null</c> if no plugin is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a plugin by name. If the plugin is not found <c>null</c>\r\n            will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.AllPlugins\">\r\n            <summary>\r\n            Gets all possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <value>All possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.</value>\r\n            <remarks>\r\n            <para>\r\n            Get a collection of all the plugins defined in this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginSkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            interface. This base class can be used by implementors\r\n            of the <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"name\">the name of the plugin</param>\r\n            <remarks>\r\n            Initializes a new Plugin with the specified name.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Shutdown\">\r\n            <summary>\r\n            Is called when the plugin is to shutdown.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called to notify the plugin that \r\n            it should stop operating and should detach from\r\n            the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_name\">\r\n            <summary>\r\n            The name of this plugin.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_repository\">\r\n            <summary>\r\n            The repository this plugin is attached to.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.Name\">\r\n            <summary>\r\n            Gets or sets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            <para>\r\n            The name of the plugin must not change one the \r\n            plugin has been attached to a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.LoggerRepository\">\r\n            <summary>\r\n            The repository for this plugin\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is attached to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is \r\n            attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin\">\r\n            <summary>\r\n            Plugin that listens for events from the <see cref=\"T:log4net.Appender.RemotingAppender\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This plugin publishes an instance of <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/> \r\n            on a specified <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/>. This listens for logging events delivered from\r\n            a remote <see cref=\"T:log4net.Appender.RemotingAppender\"/>.\r\n            </para>\r\n            <para>\r\n            When an event is received it is relogged within the attached repository\r\n            as if it had been raised locally.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> property must be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor(System.String)\">\r\n            <summary>\r\n            Construct with sink Uri.\r\n            </summary>\r\n            <param name=\"sinkUri\">The name to publish the sink under in the remoting infrastructure. \r\n            See <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> for more details.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class\r\n            with specified name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Shutdown\">\r\n            <summary>\r\n            Is called when the plugin is to shutdown.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            When the plugin is shutdown the remote logging\r\n            sink is disconnected.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RemoteLoggingServerPlugin class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\">\r\n            <summary>\r\n            Gets or sets the URI of this sink.\r\n            </summary>\r\n            <value>\r\n            The URI of this sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the name under which the object is marshaled.\r\n            <see cref=\"M:System.Runtime.Remoting.RemotingServices.Marshal(System.MarshalByRefObject,System.String,System.Type)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\">\r\n            <summary>\r\n            Delivers <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to listen for logging events\r\n            and deliver them to the local repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository to log to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\"/> for the\r\n            specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Logs the events to the repository.\r\n            </summary>\r\n            <param name=\"events\">The events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            The events passed are logged to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.InitializeLifetimeService\">\r\n            <summary>\r\n            Obtains a lifetime service object to control the lifetime \r\n            policy for this instance.\r\n            </summary>\r\n            <returns><c>null</c> to indicate that this instance should live forever.</returns>\r\n            <remarks>\r\n            <para>\r\n            Obtains a lifetime service object to control the lifetime \r\n            policy for this instance. This object should live forever\r\n            therefore this implementation returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.m_repository\">\r\n            <summary>\r\n            The underlying <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that events should\r\n            be logged to.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This default implementation of the <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            interface is used to create the default subclass\r\n            of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ILoggerFactory\">\r\n            <summary>\r\n            Interface abstracts creation of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to \r\n            create new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> objects.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\"/> method is called\r\n            to create a named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            <para>\r\n            Implement this interface to create new subclasses of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\">\r\n            <summary>\r\n            Default internal subclass of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This subclass has no additional behavior over the\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class but does allow instances\r\n            to be created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Logger\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.Core.ILogger\"/> used by <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to provide implementation of <see cref=\"T:log4net.Core.ILogger\"/>\r\n            interface. Applications should use <see cref=\"T:log4net.LogManager\"/> to get\r\n            logger instances.\r\n            </para>\r\n            <para>\r\n            This is one of the central classes in the log4net implementation. One of the\r\n            distinctive features of log4net are hierarchical loggers and their\r\n            evaluation. The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> organizes the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            instances into a rooted tree hierarchy.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class is abstract. Only concrete subclasses of\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> can be created. The <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            is used to create instances of this type for the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.#ctor(System.String)\">\r\n            <summary>\r\n            This constructor created a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance and\r\n            sets its name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is protected and designed to be used by\r\n            a subclass that is not abstract.\r\n            </para>\r\n            <para>\r\n            Loggers are constructed by <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> \r\n            objects. See <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> for the default\r\n            logger creator.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\r\n            Logger instance.\r\n            </summary>\r\n            <param name=\"newAppender\">An appender to add to this logger</param>\r\n            <remarks>\r\n            <para>\r\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\r\n            Logger instance.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"newAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.GetAppender(System.String)\">\r\n            <summary>\r\n            Look for the appender named as <c>name</c>\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to lookup</param>\r\n            <returns>The appender with the name specified, or <c>null</c>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the named appender, or null if the appender is not found.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAllAppenders\">\r\n            <summary>\r\n            Remove all previously added appenders from this Logger instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Remove all previously added appenders from this Logger instance.\r\n            </para>\r\n            <para>\r\n            This is useful when re-reading configuration information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the named appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            This generic form is intended to be used by wrappers.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Generate a logging event for the specified <paramref name=\"level\"/> using\r\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This is the most generic printing method that is intended to be used \r\n            by wrappers.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs the specified logging event through this logger.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CallAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Deliver the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Call the appenders in the hierarchy starting at\r\n            <c>this</c>. If no appenders could be found, emit a\r\n            warning.\r\n            </para>\r\n            <para>\r\n            This method calls all the appenders inherited from the\r\n            hierarchy circumventing any evaluation of whether to log or not\r\n            to log the particular log request.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CloseNestedAppenders\">\r\n            <summary>\r\n            Closes all attached appenders implementing the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to ensure that the appenders are correctly shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            This is the most generic printing method. This generic form is intended to be used by wrappers\r\n            </summary>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Generate a logging event for the specified <paramref name=\"level\"/> using\r\n            the <paramref name=\"message\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            Creates a new logging event and logs the event without further checks.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Generates a logging event and delivers it to the attached\r\n            appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Creates a new logging event and logs the event without further checks.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers the logging event to the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the Logger class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_name\">\r\n            <summary>\r\n            The name of this logger.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_level\">\r\n            <summary>\r\n            The assigned level of this logger. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>level</c> variable need not be \r\n            assigned a value in which case it is inherited \r\n            form the hierarchy.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_parent\">\r\n            <summary>\r\n            The parent of this logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The parent of this logger. \r\n            All loggers have at least one ancestor which is the root logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_hierarchy\">\r\n            <summary>\r\n            Loggers need to know what Hierarchy they are in.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Loggers need to know what Hierarchy they are in.\r\n            The hierarchy that this logger is a member of is stored\r\n            here.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Helper implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_additive\">\r\n            <summary>\r\n            Flag indicating if child loggers inherit their parents appenders\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Additivity is set to true by default, that is children inherit\r\n            the appenders of their ancestors by default. If this variable is\r\n            set to <c>false</c> then the appenders found in the\r\n            ancestors of this logger are not used. However, the children\r\n            of this logger will inherit its appenders, unless the children\r\n            have their additivity flag set to <c>false</c> too. See\r\n            the user manual for more details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderLock\">\r\n            <summary>\r\n            Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Parent\">\r\n            <summary>\r\n            Gets or sets the parent logger in the hierarchy.\r\n            </summary>\r\n            <value>\r\n            The parent logger in the hierarchy.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Part of the Composite pattern that makes the hierarchy.\r\n            The hierarchy is parent linked rather than child linked.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Additivity\">\r\n            <summary>\r\n            Gets or sets a value indicating if child loggers inherit their parent's appenders.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if child loggers inherit their parent's appenders.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Additivity is set to <c>true</c> by default, that is children inherit\r\n            the appenders of their ancestors by default. If this variable is\r\n            set to <c>false</c> then the appenders found in the\r\n            ancestors of this logger are not used. However, the children\r\n            of this logger will inherit its appenders, unless the children\r\n            have their additivity flag set to <c>false</c> too. See\r\n            the user manual for more details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.EffectiveLevel\">\r\n            <summary>\r\n            Gets the effective level for this logger.\r\n            </summary>\r\n            <returns>The nearest level in the logger hierarchy.</returns>\r\n            <remarks>\r\n            <para>\r\n            Starting from this logger, searches the logger hierarchy for a\r\n            non-null level and returns it. Otherwise, returns the level of the\r\n            root logger.\r\n            </para>\r\n            <para>The Logger class is designed so that this method executes as\r\n            quickly as possible.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>The hierarchy that this logger belongs to.</value>\r\n            <remarks>\r\n            <para>\r\n            This logger must be attached to a single <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>, if any, for this Logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> of this logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> can be <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Appenders\">\r\n            <summary>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <returns>A collection of the appenders in this logger</returns>\r\n            <remarks>\r\n            <para>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>. If no appenders \r\n            can be found, then a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Name\">\r\n            <summary>\r\n            Gets the logger name.\r\n            </summary>\r\n            <value>\r\n            The name of the logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this logger\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl.#ctor(System.String)\">\r\n            <summary>\r\n            Construct a new Logger\r\n            </summary>\r\n            <param name=\"name\">the name of the logger</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\"/> class\r\n            with the specified name. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger creation event notifications.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> in which the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> has been created.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event args that hold the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event is raised every time a\r\n            <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.LoggerCreationEventArgs.m_log\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerCreationEventArgs.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"log\">The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event argument \r\n            class,with the specified <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy\">\r\n            <summary>\r\n            Hierarchical organization of loggers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <i>The casual user should not have to deal with this class\r\n            directly.</i>\r\n            </para>\r\n            <para>\r\n            This class is specialized in retrieving loggers by name and\r\n            also maintaining the logger hierarchy. Implements the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            The structure of the logger hierarchy is maintained by the\r\n            <see cref=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\"/> method. The hierarchy is such that children\r\n            link to their parent but parents do not have any references to their\r\n            children. Moreover, loggers can be instantiated in any order, in\r\n            particular descendant before ancestor.\r\n            </para>\r\n            <para>\r\n            In case a descendant is created before a particular ancestor,\r\n            then it creates a provision node for the ancestor and adds itself\r\n            to the provision node. Other descendants of the same ancestor add\r\n            themselves to the previously created provision node.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositorySkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            Skeleton implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            All <see cref=\"T:log4net.Repository.ILoggerRepository\"/> types can extend this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.ILoggerRepository\">\r\n            <summary>\r\n            Interface implemented by logger repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is implemented by logger repositories. e.g. \r\n            <see cref=\"N:log4net.Repository.Hierarchy\"/>.\r\n            </para>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.LogManager\"/>\r\n            to obtain <see cref=\"T:log4net.ILog\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Exists(System.String)\">\r\n            <summary>\r\n            Check if the named logger exists in the repository. If so return\r\n            its reference, otherwise returns <c>null</c>.\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to lookup</param>\r\n            <returns>The Logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            If the names logger exists it is returned, otherwise\r\n            <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetCurrentLoggers\">\r\n            <summary>\r\n            Returns all the currently defined loggers as an Array.\r\n            </summary>\r\n            <returns>All the defined loggers</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the currently defined loggers as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetLogger(System.String)\">\r\n            <summary>\r\n            Returns a named logger instance\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <returns>The logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a named logger instance.\r\n            </para>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned.  Otherwise, a new logger will be instantiated and\r\n            then linked with its existing ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Shutdown\">\r\n            <summary>Shutdown the repository</summary>\r\n            <remarks>\r\n            <para>\r\n            Shutting down a repository will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the\r\n            application exists. Otherwise, pending logging events might be\r\n            lost.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.ILoggerRepository.Shutdown\"/> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.ResetConfiguration\">\r\n            <summary>\r\n            Reset the repositories configuration to a default state\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this instance to their\r\n            default state.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the <see cref=\"T:log4net.Core.LoggingEvent\"/> through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </summary>\r\n            <returns>All the Appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Name\">\r\n            <summary>\r\n            The name of the repository\r\n            </summary>\r\n            <value>\r\n            The name of the repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Threshold\">\r\n            <summary>\r\n            The threshold for all events in this repository\r\n            </summary>\r\n            <value>\r\n            The threshold for all events in this repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The threshold for all events in this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Configured\">\r\n            <summary>\r\n            Flag indicates if this repository has been configured.\r\n            </summary>\r\n            <value>\r\n            Flag indicates if this repository has been configured.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Flag indicates if this repository has been configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.ConfigurationMessages\">\r\n            <summary>\r\n            Collection of internal messages captured during the most \r\n            recent configuration process.\r\n            </summary>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\">\r\n            <summary>\r\n            Event to notify that the repository has been shutdown.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has been shutdown.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository has been shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationReset\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been\r\n            reset to default.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been changed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Properties\">\r\n            <summary>\r\n            Repository specific properties\r\n            </summary>\r\n            <value>\r\n            Repository specific properties\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            These properties can be specified on a repository specific basis.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes the repository with default (empty) properties.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Construct the repository using specific properties\r\n            </summary>\r\n            <param name=\"properties\">the properties to set for this repository</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the repository with specified properties.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Exists(System.String)\">\r\n            <summary>\r\n            Test if logger exists\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to lookup</param>\r\n            <returns>The Logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Check if the named logger exists in the repository. If so return\r\n            its reference, otherwise returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetCurrentLoggers\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the repository\r\n            </summary>\r\n            <returns>All the defined loggers</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the currently defined loggers in the repository as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetLogger(System.String)\">\r\n            <summary>\r\n            Return a new logger instance\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <returns>The logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Return a new logger instance.\r\n            </para>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned. Otherwise, a new logger will be instantiated and\r\n            then linked with its existing ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Shutdown\">\r\n            <summary>\r\n            Shutdown the repository\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Shutdown the repository. Can be overridden in a subclass.\r\n            This base class implementation notifies the <see cref=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\"/>\r\n            listeners and all attached plugins of the shutdown event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.ResetConfiguration\">\r\n            <summary>\r\n            Reset the repositories configuration to a default state\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this instance to their\r\n            default state.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </summary>\r\n            <returns>All the Appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.LoggerRepositorySkeleton.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LoggerRepositorySkeleton class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.AddRenderer(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\r\n            Adds an object renderer for a specific class. \r\n            </summary>\r\n            <param name=\"typeToRender\">The type that will be rendered by the renderer supplied.</param>\r\n            <param name=\"rendererInstance\">The object renderer used to render the object.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds an object renderer for a specific class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnShutdown(System.EventArgs)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository is shutting down\r\n            </summary>\r\n            <param name=\"e\">Empty EventArgs</param>\r\n            <remarks>\r\n            <para>\r\n            Notify any listeners that this repository is shutting down.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationReset(System.EventArgs)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has had its configuration reset\r\n            </summary>\r\n            <param name=\"e\">Empty EventArgs</param>\r\n            <remarks>\r\n            <para>\r\n            Notify any listeners that this repository's configuration has been reset.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationChanged(System.EventArgs)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has had its configuration changed\r\n            </summary>\r\n            <param name=\"e\">Empty EventArgs</param>\r\n            <remarks>\r\n            <para>\r\n            Notify any listeners that this repository's configuration has changed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.RaiseConfigurationChanged(System.EventArgs)\">\r\n            <summary>\r\n            Raise a configuration changed event on this repository\r\n            </summary>\r\n            <param name=\"e\">EventArgs.Empty</param>\r\n            <remarks>\r\n            <para>\r\n            Applications that programmatically change the configuration of the repository should\r\n            raise this event notification to notify listeners.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Name\">\r\n            <summary>\r\n            The name of the repository\r\n            </summary>\r\n            <value>\r\n            The string name of the repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this repository. The name is\r\n            used to store and lookup the repositories \r\n            stored by the <see cref=\"T:log4net.Core.IRepositorySelector\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Threshold\">\r\n            <summary>\r\n            The threshold for all events in this repository\r\n            </summary>\r\n            <value>\r\n            The threshold for all events in this repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The threshold for all events in this repository\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Configured\">\r\n            <summary>\r\n            Flag indicates if this repository has been configured.\r\n            </summary>\r\n            <value>\r\n            Flag indicates if this repository has been configured.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Flag indicates if this repository has been configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.ConfigurationMessages\">\r\n            <summary>\r\n            Contains a list of internal messages captures during the \r\n            last configuration.\r\n            </summary>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\">\r\n            <summary>\r\n            Event to notify that the repository has been shutdown.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has been shutdown.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository has been shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationReset\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been\r\n            reset to default.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationChanged\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been changed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Properties\">\r\n            <summary>\r\n            Repository specific properties\r\n            </summary>\r\n            <value>\r\n            Repository specific properties\r\n            </value>\r\n            <remarks>\r\n            These properties can be specified on a repository specific basis\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.IBasicRepositoryConfigurator\">\r\n            <summary>\r\n            Basic Configurator interface for repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by basic configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            with a default <see cref=\"T:log4net.Appender.IAppender\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.BasicConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initialize the repository using the specified appender\r\n            </summary>\r\n            <param name=\"appender\">the appender to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository to route all logging events to the\r\n            specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the repository using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository to route all logging events to the\r\n            specified appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.IXmlRepositoryConfigurator\">\r\n            <summary>\r\n            Configure repository using XML\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by Xml configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IXmlRepositoryConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the repository using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n            <remarks>\r\n            <para>\r\n            The schema for the XML configuration data is defined by\r\n            the implementation.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Construct with properties\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with a logger factory\r\n            </summary>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with properties and a logger factory\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Exists(System.String)\">\r\n            <summary>\r\n            Test if a logger exists\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to lookup</param>\r\n            <returns>The Logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Check if the named logger exists in the hierarchy. If so return\r\n            its reference, otherwise returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetCurrentLoggers\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the hierarchy as an Array\r\n            </summary>\r\n            <returns>All the defined loggers</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the currently defined loggers in the hierarchy as an Array.\r\n            The root logger is <b>not</b> included in the returned\r\n            enumeration.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\">\r\n            <summary>\r\n            Return a new logger instance named as the first parameter using\r\n            the default factory.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Return a new logger instance named as the first parameter using\r\n            the default factory.\r\n            </para>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned.  Otherwise, a new logger will be instantiated and\r\n            then linked with its existing ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <returns>The logger object with the name specified</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Shutdown\">\r\n            <summary>\r\n            Shutting down a hierarchy will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Shutting down a hierarchy will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the\r\n            application exists. Otherwise, pending logging events might be\r\n            lost.\r\n            </para>\r\n            <para>\r\n            The <c>Shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.ResetConfiguration\">\r\n            <summary>\r\n            Reset all values contained in this hierarchy instance to their default.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this hierarchy instance to their\r\n            default.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this hierarchy.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are currently configured\r\n            </summary>\r\n            <returns>An array containing all the currently configured appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the <see cref=\"T:log4net.Appender.IAppender\"/> instances that are currently configured.\r\n            All the loggers are searched for appenders. The appenders may also be containers\r\n            for appenders and these are also searched for additional loggers.\r\n            </para>\r\n            <para>\r\n            The list returned is unordered but does not contain duplicates.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppender(System.Collections.ArrayList,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/>.\r\n            The appender may also be a container.\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"appender\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppenders(System.Collections.ArrayList,log4net.Core.IAppenderAttachable)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/> container\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"container\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appender\r\n            </summary>\r\n            <param name=\"appender\">the appender to use to log all logging events</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.BasicRepositoryConfigure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IXmlRepositoryConfigurator#Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.XmlRepositoryConfigure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.IsDisabled(log4net.Core.Level)\">\r\n            <summary>\r\n            Test if this hierarchy is disabled for the specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"level\">The level to check against.</param>\r\n            <returns>\r\n            <c>true</c> if the repository is disabled for the level argument, <c>false</c> otherwise.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If this hierarchy has not been configured then this method will\r\n            always return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This method will return <c>true</c> if this repository is\r\n            disabled for <c>level</c> object passed as parameter and\r\n            <c>false</c> otherwise.\r\n            </para>\r\n            <para>\r\n            See also the <see cref=\"P:log4net.Repository.ILoggerRepository.Threshold\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Clear\">\r\n            <summary>\r\n            Clear all logger definitions from the internal hashtable\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This call will clear all logger definitions from the internal\r\n            hashtable. Invoking this method will irrevocably mess up the\r\n            logger hierarchy.\r\n            </para>\r\n            <para>\r\n            You should <b>really</b> know what you are doing before\r\n            invoking this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Return a new logger instance named as the first parameter using\r\n            <paramref name=\"factory\"/>.\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <param name=\"factory\">The factory that will make the new logger instance</param>\r\n            <returns>The logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned. Otherwise, a new logger will be instantiated by the\r\n            <paramref name=\"factory\"/> parameter and linked with its existing\r\n            ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.OnLoggerCreationEvent(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Sends a logger creation event to all registered listeners\r\n            </summary>\r\n            <param name=\"logger\">The newly created logger</param>\r\n            <remarks>\r\n            Raises the logger creation event.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateParents(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Updates all the parents of the specified logger\r\n            </summary>\r\n            <param name=\"log\">The logger to update the parents for</param>\r\n            <remarks>\r\n            <para>\r\n            This method loops through all the <i>potential</i> parents of\r\n            <paramref name=\"log\"/>. There 3 possible cases:\r\n            </para>\r\n            <list type=\"number\">\r\n            \t<item>\r\n            \t\t<term>No entry for the potential parent of <paramref name=\"log\"/> exists</term>\r\n            \t\t<description>\r\n            \t\tWe create a ProvisionNode for this potential \r\n            \t\tparent and insert <paramref name=\"log\"/> in that provision node.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>The entry is of type Logger for the potential parent.</term>\r\n            \t\t<description>\r\n            \t\tThe entry is <paramref name=\"log\"/>'s nearest existing parent. We \r\n            \t\tupdate <paramref name=\"log\"/>'s parent field with this entry. We also break from \r\n            \t\the loop because updating our parent's parent is our parent's \r\n            \t\tresponsibility.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>The entry is of type ProvisionNode for this potential parent.</term>\r\n            \t\t<description>\r\n            \t\tWe add <paramref name=\"log\"/> to the list of children for this \r\n            \t\tpotential parent.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateChildren(log4net.Repository.Hierarchy.ProvisionNode,log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Replace a <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> with a <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> in the hierarchy.\r\n            </summary>\r\n            <param name=\"pn\"></param>\r\n            <param name=\"log\"></param>\r\n            <remarks>\r\n            <para>\r\n            We update the links for all the children that placed themselves\r\n            in the provision node 'pn'. The second argument 'log' is a\r\n            reference for the newly created Logger, parent of all the\r\n            children in 'pn'.\r\n            </para>\r\n            <para>\r\n            We loop on all the children 'c' in 'pn'.\r\n            </para>\r\n            <para>\r\n            If the child 'c' has been already linked to a child of\r\n            'log' then there is no need to update 'c'.\r\n            </para>\r\n            <para>\r\n            Otherwise, we set log's parent field to c's parent and set\r\n            c's parent field to log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddLevel(log4net.Repository.Hierarchy.Hierarchy.LevelEntry)\">\r\n            <summary>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"levelEntry\">the level values</param>\r\n            <remarks>\r\n            <para>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </para>\r\n            <para>\r\n            Supports setting levels via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"propertyEntry\">the property value</param>\r\n            <remarks>\r\n            <para>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument.\r\n            </para>\r\n            <para>\r\n            Supports setting property values via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Hierarchy.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the Hierarchy class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\">\r\n            <summary>\r\n            Event used to notify that a logger has been created.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a logger is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.EmittedNoAppenderWarning\">\r\n            <summary>\r\n            Has no appender warning been emitted\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flag to indicate if we have already issued a warning\r\n            about not having an appender warning.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.Root\">\r\n            <summary>\r\n            Get the root of this hierarchy\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the root of this hierarchy.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LoggerFactory\">\r\n            <summary>\r\n            Gets or sets the default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> instance.\r\n            </summary>\r\n            <value>The default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/></value>\r\n            <remarks>\r\n            <para>\r\n            The logger factory is used to create logger instances.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\">\r\n            <summary>\r\n            A class to hold the value, name and display name for a level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to hold the value, name and display name for a level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.ToString\">\r\n            <summary>\r\n            Override <c>Object.ToString</c> to return sensible debug info\r\n            </summary>\r\n            <returns>string info about this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Value\">\r\n            <summary>\r\n            Value of the level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the value is not set (defaults to -1) the value will be looked\r\n            up for the current level with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Name\">\r\n            <summary>\r\n            Name of the level\r\n            </summary>\r\n            <value>\r\n            The name of the level\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.DisplayName\">\r\n            <summary>\r\n            Display name for the level\r\n            </summary>\r\n            <value>\r\n            The display name of the level\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The display name of the level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerKey\">\r\n            <summary>\r\n            Used internally to accelerate hash table searches.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to improve performance of \r\n            string keyed hashtables.\r\n            </para>\r\n            <para>\r\n            The hashcode of the string is cached for reuse.\r\n            The string is stored as an interned value.\r\n            When comparing two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> objects for equality \r\n            the reference equality of the interned strings is compared.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.#ctor(System.String)\">\r\n            <summary>\r\n            Construct key with string name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> class \r\n            with the specified name.\r\n            </para>\r\n            <para>\r\n            Stores the hashcode of the string and interns\r\n            the string key to optimize comparisons.\r\n            </para>\r\n            <note>\r\n            The Compact Framework 1.0 the <see cref=\"M:System.String.Intern(System.String)\"/>\r\n            method does not work. On the Compact Framework\r\n            the string keys are not interned nor are they\r\n            compared by reference.\r\n            </note>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.GetHashCode\">\r\n            <summary>\r\n            Returns a hash code for the current instance.\r\n            </summary>\r\n            <returns>A hash code for the current instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the cached hashcode.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.Equals(System.Object)\">\r\n            <summary>\r\n            Determines whether two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> instances \r\n            are equal.\r\n            </summary>\r\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the references of the interned strings.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ProvisionNode\">\r\n            <summary>\r\n            Provision nodes are used where no logger instance has been specified\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> instances are used in the \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> when there is no specified \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> for that node.\r\n            </para>\r\n            <para>\r\n            A provision node holds a list of child loggers on behalf of\r\n            a logger that does not exist.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ProvisionNode.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Create a new provision node with child node\r\n            </summary>\r\n            <param name=\"log\">A child logger to add to this node.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> class \r\n            with the specified child logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.RootLogger\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> sits at the root of the logger hierarchy tree. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> is a regular <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> except \r\n            that it provides several guarantees.\r\n            </para>\r\n            <para>\r\n            First, it cannot be assigned a <c>null</c>\r\n            level. Second, since the root logger cannot have a parent, the\r\n            <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\"/> property always returns the value of the\r\n            level field without walking the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.RootLogger.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Construct a <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/>\r\n            </summary>\r\n            <param name=\"level\">The level to assign to the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> class with\r\n            the specified logging level.\r\n            </para>\r\n            <para>\r\n            The root logger names itself as \"root\". However, the root\r\n            logger cannot be retrieved by name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.RootLogger.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RootLogger class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\">\r\n            <summary>\r\n            Gets the assigned level value without walking the logger hierarchy.\r\n            </summary>\r\n            <value>The assigned level value without walking the logger hierarchy.</value>\r\n            <remarks>\r\n            <para>\r\n            Because the root logger cannot have a parent and its level\r\n            must not be <c>null</c> this property just returns the\r\n            value of <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> for the root logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> of the root logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting the level of the root logger to a <c>null</c> reference\r\n            may have catastrophic results. We prevent this here.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\">\r\n            <summary>\r\n            Initializes the log4net environment using an XML DOM.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> using an XML DOM.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.#ctor(log4net.Repository.Hierarchy.Hierarchy)\">\r\n            <summary>\r\n            Construct the configurator for a hierarchy\r\n            </summary>\r\n            <param name=\"hierarchy\">The hierarchy to build.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\"/> class\r\n            with the specified <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configure the hierarchy by parsing a DOM tree of XML elements.\r\n            </summary>\r\n            <param name=\"element\">The root element to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the hierarchy by parsing a DOM tree of XML elements.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindAppenderByReference(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parse appenders by IDREF.\r\n            </summary>\r\n            <param name=\"appenderRef\">The appender ref element.</param>\r\n            <returns>The instance of the appender that the ref refers to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents an appender and return \r\n            the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses an appender element.\r\n            </summary>\r\n            <param name=\"appenderElement\">The appender element.</param>\r\n            <returns>The appender instance or <c>null</c> when parsing failed.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents an appender and return\r\n            the appender instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLogger(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses a logger element.\r\n            </summary>\r\n            <param name=\"loggerElement\">The logger element.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents a logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRoot(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses the root logger element.\r\n            </summary>\r\n            <param name=\"rootElement\">The root element.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents the root logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseChildrenOfLoggerElement(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\r\n            Parses the children of a logger element.\r\n            </summary>\r\n            <param name=\"catElement\">The category element.</param>\r\n            <param name=\"log\">The logger instance.</param>\r\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse the child elements of a &lt;logger&gt; element.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRenderer(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses an object renderer.\r\n            </summary>\r\n            <param name=\"element\">The renderer element.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents a renderer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLevel(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\r\n            Parses a level element.\r\n            </summary>\r\n            <param name=\"element\">The level element.</param>\r\n            <param name=\"log\">The logger object to set the level on.</param>\r\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(System.Xml.XmlElement,System.Object)\">\r\n            <summary>\r\n            Sets a parameter on an object.\r\n            </summary>\r\n            <param name=\"element\">The parameter element.</param>\r\n            <param name=\"target\">The object to set the parameter on.</param>\r\n            <remarks>\r\n            The parameter name must correspond to a writable property\r\n            on the object. The value of the parameter is a string,\r\n            therefore this function will attempt to set a string\r\n            property first. If unable to set a string property it\r\n            will inspect the property and its argument type. It will\r\n            attempt to call a static method called <c>Parse</c> on the\r\n            type of the property. This method will take a single\r\n            string argument and return a value that can be used to\r\n            set the property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.HasAttributesOrElements(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Test if an element has no attributes or child elements\r\n            </summary>\r\n            <param name=\"element\">the element to inspect</param>\r\n            <returns><c>true</c> if the element has any attributes or child elements, <c>false</c> otherwise</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.IsTypeConstructible(System.Type)\">\r\n            <summary>\r\n            Test if a <see cref=\"T:System.Type\"/> is constructible with <c>Activator.CreateInstance</c>.\r\n            </summary>\r\n            <param name=\"type\">the type to inspect</param>\r\n            <returns><c>true</c> if the type is creatable using a default constructor, <c>false</c> otherwise</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindMethodInfo(System.Type,System.String)\">\r\n            <summary>\r\n            Look for a method on the <paramref name=\"targetType\"/> that matches the <paramref name=\"name\"/> supplied\r\n            </summary>\r\n            <param name=\"targetType\">the type that has the method</param>\r\n            <param name=\"name\">the name of the method</param>\r\n            <returns>the method info found</returns>\r\n            <remarks>\r\n            <para>\r\n            The method must be a public instance method on the <paramref name=\"targetType\"/>.\r\n            The method must be named <paramref name=\"name\"/> or \"Add\" followed by <paramref name=\"name\"/>.\r\n            The method must take a single parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\r\n            Converts a string value to a target type.\r\n            </summary>\r\n            <param name=\"type\">The type of object to convert the string to.</param>\r\n            <param name=\"value\">The string value to use as the value of the object.</param>\r\n            <returns>\r\n            <para>\r\n            An object of type <paramref name=\"type\"/> with value <paramref name=\"value\"/> or \r\n            <c>null</c> when the conversion could not be performed.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(System.Xml.XmlElement,System.Type,System.Type)\">\r\n            <summary>\r\n            Creates an object as specified in XML.\r\n            </summary>\r\n            <param name=\"element\">The XML element that contains the definition of the object.</param>\r\n            <param name=\"defaultTargetType\">The object type to use if not explicitly specified.</param>\r\n            <param name=\"typeConstraint\">The type that the returned object must be or must inherit from.</param>\r\n            <returns>The object or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element and create an object instance based on the configuration\r\n            data.\r\n            </para>\r\n            <para>\r\n            The type of the instance may be specified in the XML. If not\r\n            specified then the <paramref name=\"defaultTargetType\"/> is used\r\n            as the type. However the type is specified it must support the\r\n            <paramref name=\"typeConstraint\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_appenderBag\">\r\n            <summary>\r\n            key: appenderName, value: appender.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_hierarchy\">\r\n            <summary>\r\n            The Hierarchy being configured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the XmlHierarchyConfigurator class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.ConfigurationChangedEventArgs\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ConfigurationChangedEventArgs.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"configurationMessages\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ConfigurationChangedEventArgs.ConfigurationMessages\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryShutdownEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository shutdown event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository shutdown event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationResetEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository configuration reset event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration reset.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository configuration reset event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationChangedEventHandler\">\r\n            <summary>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration changed.</param>\r\n            <param name=\"e\">Empty event arguments.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.AppDomainPatternConverter\">\r\n            <summary>\r\n            Write the name of the current AppDomain to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the name of the current AppDomain to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.AppDomainPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the name of the current AppDomain to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes name of the current AppDomain to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The date and time is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date and time passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the DatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter\">\r\n            <summary>\r\n            Write an <see cref=\"T:System.Environment.SpecialFolder\"/> folder path to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an special path environment folder path to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output. <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            should be a value in the <see cref=\"T:System.Environment.SpecialFolder\"/> enumeration.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an special path environment folder path to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the special path environment folder path to the output <paramref name=\"writer\"/>.\r\n            The name of the special path environment folder path to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the EnvironmentFolderPathPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentPatternConverter\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an environment variable to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the environment variable to the output <paramref name=\"writer\"/>.\r\n            The name of the environment variable to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the EnvironmentPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.IdentityPatternConverter\">\r\n            <summary>\r\n            Write the current thread identity to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the current thread identity to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.IdentityPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current thread identity to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the current thread identity to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.IdentityPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the IdentityPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\">\r\n            <summary>\r\n            Pattern converter for literal string instances in the pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the literal string value specified in the \r\n            <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property to \r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Set the next converter in the chain\r\n            </summary>\r\n            <param name=\"pc\">The next pattern converter in the chain</param>\r\n            <returns>The next pattern converter</returns>\r\n            <remarks>\r\n            <para>\r\n            Special case the building of the pattern converter chain\r\n            for <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> instances. Two adjacent\r\n            literals in the pattern can be represented by a single combined\r\n            pattern converter. This implementation detects when a \r\n            <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> is added to the chain\r\n            after this converter and combines its value with this converter's\r\n            literal value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the literal to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            Override the formatting behavior to ignore the FormattingInfo\r\n            because we have a literal instead.\r\n            </para>\r\n            <para>\r\n            Writes the value of <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Convert this pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            This method is not used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.NewLinePatternConverter\">\r\n            <summary>\r\n            Writes a newline to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the system dependent line terminator to the output.\r\n            This behavior can be overridden by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <listheader>\r\n                <term>Option Value</term>\r\n                <description>Output</description>\r\n              </listheader>\r\n              <item>\r\n                <term>DOS</term>\r\n                <description>DOS or Windows line terminator <c>\"\\r\\n\"</c></description>\r\n              </item>\r\n              <item>\r\n                <term>UNIX</term>\r\n                <description>UNIX line terminator <c>\"\\n\"</c></description>\r\n              </item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.ProcessIdPatternConverter\">\r\n            <summary>\r\n            Write the current process ID to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the current process ID to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current process ID to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Write the current process ID to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the ProcessIdPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This pattern converter reads the thread and global properties.\r\n            The thread properties take priority over global properties.\r\n            See <see cref=\"P:log4net.ThreadContext.Properties\"/> for details of the \r\n            thread properties. See <see cref=\"P:log4net.GlobalContext.Properties\"/> for\r\n            details of the global properties.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified then that will be used to\r\n            lookup a single property. If no <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified\r\n            then all properties will be dumped as a list of key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.PropertyPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.RandomStringPatternConverter\">\r\n            <summary>\r\n            A Pattern converter that generates a string of random characters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The converter generates a string of random characters. By default\r\n            the string is length 4. This can be changed by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the string value of the length required.\r\n            </para>\r\n            <para>\r\n            The random characters in the string are limited to uppercase letters\r\n            and numbers only.\r\n            </para>\r\n            <para>\r\n            The random number generator used by this class is not cryptographically secure.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.s_random\">\r\n            <summary>\r\n            Shared random number generator\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.m_length\">\r\n            <summary>\r\n            Length of random string to generate. Default length 4.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write a randoim string to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Write a randoim string to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RandomStringPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UserNamePatternConverter\">\r\n            <summary>\r\n            Write the current threads username to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the current threads username to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UserNamePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current threads username to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Write the current threads username to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UserNamePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the UserNamePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the UTC date time to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UtcDatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date and time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date is in Universal time when it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UtcDatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the UtcDatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.BooleanConverter\">\r\n            <summary>\r\n            Type converter for Boolean.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <c>bool</c> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the source object to the type supported by this object\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Boolean.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Boolean\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            <summary>\r\n            Exception base type for conversion errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object,System.Exception)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConverterRegistry\">\r\n            <summary>\r\n            Register of type converters for specific types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a registry of type converters used to convert between\r\n            types.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\"/> and \r\n            <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\"/> methods to register new converters.\r\n            The <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\"/> and <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\"/> methods\r\n            lookup appropriate converters to use.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n            <remarks>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/> class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#cctor\">\r\n            <summary>\r\n            Static constructor.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This constructor defines the intrinsic type converters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\">\r\n            <summary>\r\n            Adds a converter for a specific type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <param name=\"converter\">The type converter to use to convert to the destination type.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a converter instance for a specific type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\">\r\n            <summary>\r\n            Adds a converter for a specific type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <param name=\"converterType\">The type of the type converter to use to convert to the destination type.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a converter <see cref=\"T:System.Type\"/> for a specific type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\">\r\n            <summary>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </summary>\r\n            <param name=\"sourceType\">The type being converted from.</param>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\">\r\n            <summary>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConverterFromAttribute(System.Type)\">\r\n            <summary>\r\n            Lookups the type converter to use as specified by the attributes on the \r\n            destination type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.CreateConverterInstance(System.Type)\">\r\n            <summary>\r\n            Creates the instance of the type converter.\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The type specified for the type converter must implement \r\n            the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> or <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces \r\n            and must have a public default (no argument) constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the ConverterRegistry class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.s_type2converter\">\r\n            <summary>\r\n            Mapping from <see cref=\"T:System.Type\"/> to type converter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.EncodingConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an encoding</param>\r\n            <returns>the encoding</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Text.Encoding.GetEncoding(System.String)\"/> method to \r\n            convert the <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Text.Encoding\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertTo\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from a single type to arbitrary types.\r\n            See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.CanConvertTo(System.Type)\">\r\n            <summary>\r\n            Returns whether this converter can convert the object to the specified type\r\n            </summary>\r\n            <param name=\"targetType\">A Type that represents the type you want to convert to</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the type supported by this converter can be converted to the\r\n            <paramref name=\"targetType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts the given value object to the specified type, using the arguments\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the <paramref name=\"source\"/> (which must be of the type supported\r\n            by this converter) to the <paramref name=\"targetType\"/> specified..\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IPAddressConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an IPAddress</param>\r\n            <returns>the IPAddress</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Net.IPAddress.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Net.IPAddress\"/>.\r\n            If that fails then the string is resolved as a DNS hostname.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.IPAddressConverter.validIpAddressChars\">\r\n            <summary>\r\n            Valid characters in an IPv4 or IPv6 address string. (Does not support subnets)\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternLayoutConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Layout.PatternLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternLayout</param>\r\n            <returns>the PatternLayout</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Layout.PatternLayout\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternStringConverter\">\r\n            <summary>\r\n            Convert between string and <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Util.PatternString\"/> type, \r\n            and from a <see cref=\"T:log4net.Util.PatternString\"/> type to a string.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Util.PatternString\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\">\r\n            <summary>\r\n            Can the target type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"targetType\">A <see cref=\"T:System.Type\"/> that represents the type you want to convert to</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"targetType\"/> is\r\n            assignable from a <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts the given value object to the specified type, using the arguments\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Util.PatternString.Format\"/> method to convert the\r\n            <see cref=\"T:log4net.Util.PatternString\"/> argument to a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            <paramref name=\"targetType\"/>. To check for this condition use the \r\n            <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\"/> method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternString</param>\r\n            <returns>the PatternString</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Util.PatternString\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a Type</param>\r\n            <returns>the Type</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Type\"/>.\r\n            Additional effort is made to locate partially specified types\r\n            by searching the loaded assemblies.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\">\r\n            <summary>\r\n            Attribute used to associate a type converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class and Interface level attribute that specifies a type converter\r\n            to use with the associated type.\r\n            </para>\r\n            <para>\r\n            To associate a type converter with a target type apply a\r\n            <c>TypeConverterAttribute</c> to the target type. Specify the\r\n            type of the type converter on the attribute.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.TypeConverterAttribute.m_typeName\">\r\n            <summary>\r\n            The string type name of the type converter\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type name\r\n            </summary>\r\n            <param name=\"typeName\">The string type name of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TypeConverters.TypeConverterAttribute.ConverterTypeName\">\r\n            <summary>\r\n            The string type name of the type converter \r\n            </summary>\r\n            <value>\r\n            The string type name of the type converter \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.AppenderAttachedImpl\">\r\n            <summary>\r\n            A straightforward implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the default implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/>\r\n            interface. Implementors of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            should aggregate an instance of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.AppenderAttachedImpl\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.CallAppend(log4net.Appender.IAppender,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Calls the DoAppende method on the <see cref=\"T:log4net.Appender.IAppender\"/> with \r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> objects supplied.\r\n            </summary>\r\n            <param name=\"appender\">The appender</param>\r\n            <param name=\"loggingEvents\">The events</param>\r\n            <remarks>\r\n            <para>\r\n            If the <paramref name=\"appender\"/> supports the <see cref=\"T:log4net.Appender.IBulkAppender\"/>\r\n            interface then the <paramref name=\"loggingEvents\"/> will be passed \r\n            through using that interface. Otherwise the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the array will be passed one at a time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Attaches an appender.\r\n            </summary>\r\n            <param name=\"newAppender\">The appender to add.</param>\r\n            <remarks>\r\n            <para>\r\n            If the appender is already in the list it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.GetAppender(System.String)\">\r\n            <summary>\r\n            Gets an attached appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to get.</param>\r\n            <returns>\r\n            The appender with the name specified, or <c>null</c> if no appender with the\r\n            specified name is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup an attached appender by name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Removes and closes all attached appenders\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderList\">\r\n            <summary>\r\n            List of appenders\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderArray\">\r\n            <summary>\r\n            Array of appenders, used to cache the m_appenderList\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the AppenderAttachedImpl class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.AppenderAttachedImpl.Appenders\">\r\n            <summary>\r\n            Gets all attached appenders.\r\n            </summary>\r\n            <returns>\r\n            A collection of attached appenders, or <c>null</c> if there\r\n            are no attached appenders.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The read only collection of all currently attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.CompositeProperties\">\r\n            <summary>\r\n            This class aggregates several PropertiesDictionary collections together.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Provides a dictionary style lookup over an ordered list of\r\n            <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CompositeProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Add(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Add a Properties Dictionary to this composite collection\r\n            </summary>\r\n            <param name=\"properties\">the properties to add</param>\r\n            <remarks>\r\n            <para>\r\n            Properties dictionaries added first take precedence over dictionaries added\r\n            later.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Flatten\">\r\n            <summary>\r\n            Flatten this composite collection into a single properties dictionary\r\n            </summary>\r\n            <returns>the flattened dictionary</returns>\r\n            <remarks>\r\n            <para>\r\n            Reduces the collection of ordered dictionaries to a single dictionary\r\n            containing the resultant values for the keys.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CompositeProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Looks up the value for the <paramref name=\"key\"/> specified.\r\n            The <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections are searched\r\n            in the order in which they were added to this collection. The value\r\n            returned is the value held by the first collection that contains\r\n            the specified key.\r\n            </para>\r\n            <para>\r\n            If none of the collections contain the specified key then\r\n            <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ContextPropertiesBase\">\r\n            <summary>\r\n            Base class for Context Properties implementations\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class defines a basic property get set accessor\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ContextPropertiesBase.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the value of a property\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ConverterInfo\">\r\n            <summary>\r\n            Wrapper class used to map converter names to converter types\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Pattern converter info class used during configuration by custom\r\n            PatternString and PatternLayer converters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.#ctor\">\r\n            <summary>\r\n            default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"entry\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Name\">\r\n            <summary>\r\n            Gets or sets the name of the conversion pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The name of the pattern in the format string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Type\">\r\n            <summary>\r\n            Gets or sets the type of the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The value specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Properties\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.CountingQuietTextWriter\">\r\n            <summary>\r\n            Subclass of <see cref=\"T:log4net.Util.QuietTextWriter\"/> that maintains a count of \r\n            the number of bytes written.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer counts the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.QuietTextWriter\">\r\n            <summary>\r\n            <see cref=\"T:System.IO.TextWriter\"/> that does not leak exceptions\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/> does not throw exceptions when things go wrong. \r\n            Instead, it delegates error handling to its <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TextWriterAdapter\">\r\n            <summary>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TextWriterAdapter.m_writer\">\r\n            <summary>\r\n            The writer to forward messages to\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to forward to</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Close\">\r\n            <summary>\r\n            Closes the writer and releases any system resources associated with the writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Dispose(System.Boolean)\">\r\n            <summary>\r\n            Dispose this writer\r\n            </summary>\r\n            <param name=\"disposing\">flag indicating if we are being disposed</param>\r\n            <remarks>\r\n            <para>\r\n            Dispose this writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Flush\">\r\n            <summary>\r\n            Flushes any buffered output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears all buffers for the writer and causes any buffered data to be written \r\n            to the underlying device\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the wrapped TextWriter\r\n            </summary>\r\n            <param name=\"value\">the value to write to the TextWriter</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a character to the wrapped TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a character buffer to the wrapped TextWriter\r\n            </summary>\r\n            <param name=\"buffer\">the data buffer</param>\r\n            <param name=\"index\">the start index</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a character buffer to the wrapped TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the wrapped TextWriter\r\n            </summary>\r\n            <param name=\"value\">the value to write to the TextWriter</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a string to the wrapped TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Writer\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Encoding\">\r\n            <summary>\r\n            The Encoding in which the output is written\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.TextWriterAdapter.Encoding\"/>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The Encoding in which the output is written\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.FormatProvider\">\r\n            <summary>\r\n            Gets an object that controls formatting\r\n            </summary>\r\n            <value>\r\n            The format provider\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets an object that controls formatting\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.NewLine\">\r\n            <summary>\r\n            Gets or sets the line terminator string used by the TextWriter\r\n            </summary>\r\n            <value>\r\n            The line terminator to use\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the line terminator string used by the TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">the writer to actually write to</param>\r\n            <param name=\"errorHandler\">the error handler to report error to</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new QuietTextWriter using a writer and error handler\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the underlying writer\r\n            </summary>\r\n            <param name=\"value\">the char to write</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a character to the underlying writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a buffer to the underlying writer\r\n            </summary>\r\n            <param name=\"buffer\">the buffer to write</param>\r\n            <param name=\"index\">the start index to write from</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a buffer to the underlying writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the output.\r\n            </summary>\r\n            <param name=\"value\">The string data to write to the output.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a string to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Close\">\r\n            <summary>\r\n            Closes the underlying output writer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_errorHandler\">\r\n            <summary>\r\n            The error handler instance to pass all errors to\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_closed\">\r\n            <summary>\r\n            Flag to indicate if this writer is closed\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.ErrorHandler\">\r\n            <summary>\r\n            Gets or sets the error handler that all errors are passed to.\r\n            </summary>\r\n            <value>\r\n            The error handler that all errors are passed to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the error handler that all errors are passed to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.Closed\">\r\n            <summary>\r\n            Gets a value indicating whether this writer is closed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this writer is closed, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets a value indicating whether this writer is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to actually write to.</param>\r\n            <param name=\"errorHandler\">The <see cref=\"T:log4net.Core.IErrorHandler\"/> to report errors to.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.CountingQuietTextWriter\"/> class \r\n            with the specified <see cref=\"T:System.IO.TextWriter\"/> and <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"value\">the char to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a buffer to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"buffer\">the buffer to write</param>\r\n            <param name=\"index\">the start index to write from</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the output and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"str\">The string data to write to the output.</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.CountingQuietTextWriter.m_countBytes\">\r\n            <summary>\r\n            Total number of bytes written.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CountingQuietTextWriter.Count\">\r\n            <summary>\r\n            Gets or sets the total number of bytes written.\r\n            </summary>\r\n            <value>\r\n            The total number of bytes written.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the total number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.CyclicBuffer\">\r\n            <summary>\r\n            A fixed size rolling buffer of logging events.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An array backed fixed size leaky bucket.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.#ctor(System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"maxSize\">The maximum number of logging events in the buffer.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CyclicBuffer\"/> class with \r\n            the specified maximum number of buffered logging events.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"maxSize\"/> argument is not a positive integer.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Appends a <paramref name=\"loggingEvent\"/> to the buffer.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to append to the buffer.</param>\r\n            <returns>The event discarded from the buffer, if the buffer is full, otherwise <c>null</c>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Append an event to the buffer. If the buffer still contains free space then\r\n            <c>null</c> is returned. If the buffer is full then an event will be dropped\r\n            to make space for the new event, the event dropped is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopOldest\">\r\n            <summary>\r\n            Get and remove the oldest event in the buffer.\r\n            </summary>\r\n            <returns>The oldest logging event in the buffer</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the oldest (first) logging event in the buffer and removes it \r\n            from the buffer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopAll\">\r\n            <summary>\r\n            Pops all the logging events from the buffer into an array.\r\n            </summary>\r\n            <returns>An array of all the logging events in the buffer.</returns>\r\n            <remarks>\r\n            <para>\r\n            Get all the events in the buffer and clear the buffer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Clear\">\r\n            <summary>\r\n            Clear the buffer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the buffer of all events. The events in the buffer are lost.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Item(System.Int32)\">\r\n            <summary>\r\n            Gets the <paramref name=\"i\"/>th oldest event currently in the buffer.\r\n            </summary>\r\n            <value>The <paramref name=\"i\"/>th oldest event currently in the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            If <paramref name=\"i\"/> is outside the range 0 to the number of events\r\n            currently in the buffer, then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.MaxSize\">\r\n            <summary>\r\n            Gets the maximum size of the buffer.\r\n            </summary>\r\n            <value>The maximum size of the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the maximum size of the buffer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Length\">\r\n            <summary>\r\n            Gets the number of logging events in the buffer.\r\n            </summary>\r\n            <value>The number of logging events in the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            This number is guaranteed to be in the range 0 to <see cref=\"P:log4net.Util.CyclicBuffer.MaxSize\"/>\r\n            (inclusive).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyCollection\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.ICollection\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyCollection\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyCollection.s_instance\">\r\n            <summary>\r\n            The singleton instance of the empty collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the empty collection.\r\n            </summary>\r\n            <returns>The singleton instance of the empty collection.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the empty collection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyCollection.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyCollection.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyDictionary\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionary\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Add(System.Object,System.Object)\">\r\n            <summary>\r\n            Adds an element with the provided key and value to the \r\n            <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The <see cref=\"T:System.Object\"/> to use as the key of the element to add.</param>\r\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to use as the value of the element to add.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no new values can be added. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Clear\">\r\n            <summary>\r\n            Removes all elements from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\">\r\n            <summary>\r\n            Determines whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> contains an element \r\n            with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key to locate in the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</param>\r\n            <returns><c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\"/> method always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Remove(System.Object)\">\r\n            <summary>\r\n            Removes the element with the specified key from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to remove.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyDictionary.s_instance\">\r\n            <summary>\r\n            The singleton instance of the empty dictionary.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <b>true</b>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyDictionary.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyDictionary.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> has a fixed size.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsFixedSize\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> is read-only.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsReadOnly\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Keys\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Values\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Item(System.Object)\">\r\n            <summary>\r\n            Gets or sets the element with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to get or set.</param>\r\n            <value><c>null</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be looked up or stored. \r\n            If the index getter is called then <c>null</c> is returned.\r\n            A <see cref=\"T:System.InvalidOperationException\"/> is thrown if the setter is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.FormattingInfo\">\r\n            <summary>\r\n            Contain the information obtained when parsing formatting modifiers \r\n            in conversion modifiers.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Holds the formatting information extracted from the format string by\r\n            the <see cref=\"T:log4net.Util.PatternParser\"/>. This is used by the <see cref=\"T:log4net.Util.PatternConverter\"/>\r\n            objects when rendering the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor\">\r\n            <summary>\r\n            Defaut Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor(System.Int32,System.Int32,System.Boolean)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class\r\n            with the specified parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Min\">\r\n            <summary>\r\n            Gets or sets the minimum value.\r\n            </summary>\r\n            <value>\r\n            The minimum value.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the minimum value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Max\">\r\n            <summary>\r\n            Gets or sets the maximum value.\r\n            </summary>\r\n            <value>\r\n            The maximum value.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the maximum value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.LeftAlign\">\r\n            <summary>\r\n            Gets or sets a flag indicating whether left align is enabled\r\n            or not.\r\n            </summary>\r\n            <value>\r\n            A flag indicating whether left align is enabled or not.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets a flag indicating whether left align is enabled or not.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.GlobalContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.GlobalContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class implements a properties collection that is thread safe and supports both\r\n            storing properties and capturing a read only copy of the current propertied.\r\n            </para>\r\n            <para>\r\n            This class is optimized to the scenario where the properties are read frequently\r\n            and are modified infrequently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_readOnlyProperties\">\r\n            <summary>\r\n            The read only copy of the properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This variable is declared <c>volatile</c> to prevent the compiler and JIT from\r\n            reordering reads and writes of this thread performed on different threads.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_syncRoot\">\r\n            <summary>\r\n            Lock object used to synchronize updates within this instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.GlobalContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Remove(System.String)\">\r\n            <summary>\r\n            Remove a property from the global context\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Removing an entry from the global context properties is relatively expensive compared\r\n            with reading a value. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Clear\">\r\n            <summary>\r\n            Clear the global context properties\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.GetReadOnlyProperties\">\r\n            <summary>\r\n            Get a readonly immutable copy of the properties\r\n            </summary>\r\n            <returns>the current global context properties</returns>\r\n            <remarks>\r\n            <para>\r\n            This implementation is fast because the GlobalContextProperties class\r\n            stores a readonly copy of the properties.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.GlobalContextProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Reading the value for a key is faster than setting the value.\r\n            When the value is written a new read only copy of \r\n            the properties is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMapping\">\r\n            <summary>\r\n            Manages a mapping from levels to <see cref=\"T:log4net.Util.LevelMappingEntry\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Manages an ordered mapping from <see cref=\"T:log4net.Core.Level\"/> instances \r\n            to <see cref=\"T:log4net.Util.LevelMappingEntry\"/> subclasses.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialise a new instance of <see cref=\"T:log4net.Util.LevelMapping\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Add(log4net.Util.LevelMappingEntry)\">\r\n            <summary>\r\n            Add a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> to this mapping\r\n            </summary>\r\n            <param name=\"entry\">the entry to add</param>\r\n            <remarks>\r\n            <para>\r\n            If a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> has previously been added\r\n            for the same <see cref=\"T:log4net.Core.Level\"/> then that entry will be \r\n            overwritten.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Lookup(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup the mapping for the specified level\r\n            </summary>\r\n            <param name=\"level\">the level to lookup</param>\r\n            <returns>the <see cref=\"T:log4net.Util.LevelMappingEntry\"/> for the level or <c>null</c> if no mapping found</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup the value for the specified level. Finds the nearest\r\n            mapping value for the level that is equal to or less than the\r\n            <paramref name=\"level\"/> specified.\r\n            </para>\r\n            <para>\r\n            If no mapping could be found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.ActivateOptions\">\r\n            <summary>\r\n            Initialize options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Caches the sorted list of <see cref=\"T:log4net.Util.LevelMappingEntry\"/> in an array\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogicalThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.LogicalThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            <para>\r\n            This class stores its properties in a slot on the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> named\r\n            <c>log4net.Util.LogicalThreadContextProperties</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.m_disabled\">\r\n            <summary>\r\n            Flag used to disable this context if we don't have permission to access the CallContext.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogicalThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Remove(System.String)\">\r\n            <summary>\r\n            Remove a property\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the value for the specified <paramref name=\"key\"/> from the context.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Clear\">\r\n            <summary>\r\n            Clear all the context properties\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear all the context properties\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\r\n            Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread.\r\n            </summary>\r\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\r\n            <returns>the properties for this thread</returns>\r\n            <remarks>\r\n            <para>\r\n            The collection returned is only to be used on the calling thread. If the\r\n            caller needs to share the collection between different threads then the \r\n            caller must clone the collection before doings so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetCallContextData\">\r\n            <summary>\r\n            Gets the call context get data.\r\n            </summary>\r\n            <returns>The peroperties dictionary stored in the call context</returns>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.GetData(System.String)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.SetCallContextData(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Sets the call context data.\r\n            </summary>\r\n            <param name=\"properties\">The properties.</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.SetData(System.String,System.Object)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LogicalThreadContextProperties class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogicalThreadContextProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set the property value for the <paramref name=\"key\"/> specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventHandler\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"e\"></param>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog\">\r\n            <summary>\r\n            Outputs log statements from within the log4net assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Log4net components cannot make log4net logging calls. However, it is\r\n            sometimes useful for the user to learn about what log4net is\r\n            doing.\r\n            </para>\r\n            <para>\r\n            All log4net internal debug calls go to the standard output stream\r\n            whereas internal error messages are sent to the standard error output \r\n            stream.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.ToString\">\r\n            <summary>\r\n            Formats Prefix, Source, and Message in the same format as the value\r\n            sent to Console.Out and Trace.Write.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#ctor(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogLog\"/> class. \r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"prefix\"></param>\r\n            <param name=\"message\"></param>\r\n            <param name=\"exception\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#cctor\">\r\n            <summary>\r\n            Static constructor that initializes logging by reading \r\n            settings from the application configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>log4net.Internal.Debug</c> application setting\r\n            controls internal debugging. This setting should be set\r\n            to <c>true</c> to enable debugging.\r\n            </para>\r\n            <para>\r\n            The <c>log4net.Internal.Quiet</c> application setting\r\n            suppresses all internal logging including error messages. \r\n            This setting should be set to <c>true</c> to enable message\r\n            suppression.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.OnLogReceived(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\r\n            Raises the LogReceived event when an internal messages is received.\r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"prefix\"></param>\r\n            <param name=\"message\"></param>\r\n            <param name=\"exception\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String)\">\r\n            <summary>\r\n            Writes log4net internal debug messages to the \r\n            standard output stream.\r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal debug messages are prepended with \r\n            the string \"log4net: \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String,System.Exception)\">\r\n            <summary>\r\n            Writes log4net internal debug messages to the \r\n            standard output stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <param name=\"exception\">An exception to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal debug messages are prepended with \r\n            the string \"log4net: \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String)\">\r\n            <summary>\r\n            Writes log4net internal warning messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal warning messages are prepended with \r\n            the string \"log4net:WARN \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String,System.Exception)\">\r\n            <summary>\r\n            Writes log4net internal warning messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <param name=\"exception\">An exception to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal warning messages are prepended with \r\n            the string \"log4net:WARN \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String)\">\r\n            <summary>\r\n            Writes log4net internal error messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal error messages are prepended with \r\n            the string \"log4net:ERROR \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String,System.Exception)\">\r\n            <summary>\r\n            Writes log4net internal error messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <param name=\"exception\">An exception to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal debug messages are prepended with \r\n            the string \"log4net:ERROR \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitOutLine(System.String)\">\r\n            <summary>\r\n            Writes output to the standard output stream.  \r\n            </summary>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes to both Console.Out and System.Diagnostics.Trace.\r\n            Note that the System.Diagnostics.Trace is not supported\r\n            on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            If the AppDomain is not configured with a config file then\r\n            the call to System.Diagnostics.Trace may fail. This is only\r\n            an issue if you are programmatically creating your own AppDomains.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitErrorLine(System.String)\">\r\n            <summary>\r\n            Writes output to the standard error stream.  \r\n            </summary>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes to both Console.Error and System.Diagnostics.Trace.\r\n            Note that the System.Diagnostics.Trace is not supported\r\n            on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            If the AppDomain is not configured with a config file then\r\n            the call to System.Diagnostics.Trace may fail. This is only\r\n            an issue if you are programmatically creating your own AppDomains.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_debugEnabled\">\r\n            <summary>\r\n             Default debug level\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_quietMode\">\r\n            <summary>\r\n            In quietMode not even errors generate any output.\r\n            </summary>\r\n        </member>\r\n        <member name=\"E:log4net.Util.LogLog.LogReceived\">\r\n            <summary>\r\n            The event raised when an internal message has been received.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Source\">\r\n            <summary>\r\n            The Type that generated the internal message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.TimeStamp\">\r\n            <summary>\r\n            The DateTime stamp of when the internal message was received.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Prefix\">\r\n            <summary>\r\n            A string indicating the severity of the internal message.\r\n            </summary>\r\n            <remarks>\r\n            \"log4net: \", \r\n            \"log4net:ERROR \", \r\n            \"log4net:WARN \"\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Message\">\r\n            <summary>\r\n            The internal log message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Exception\">\r\n            <summary>\r\n            The Exception related to the message.\r\n            </summary>\r\n            <remarks>\r\n            Optional. Will be null if no Exception was passed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.InternalDebugging\">\r\n            <summary>\r\n            Gets or sets a value indicating whether log4net internal logging\r\n            is enabled or disabled.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if log4net internal logging is enabled, otherwise \r\n            <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            When set to <c>true</c>, internal debug level logging will be \r\n            displayed.\r\n            </para>\r\n            <para>\r\n            This value can be set by setting the application setting \r\n            <c>log4net.Internal.Debug</c> in the application configuration\r\n            file.\r\n            </para>\r\n            <para>\r\n            The default value is <c>false</c>, i.e. debugging is\r\n            disabled.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            The following example enables internal debugging using the \r\n            application configuration file :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net.Internal.Debug\" value=\"true\" />\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.QuietMode\">\r\n            <summary>\r\n            Gets or sets a value indicating whether log4net should generate no output\r\n            from internal logging, not even for errors. \r\n            </summary>\r\n            <value>\r\n            <c>true</c> if log4net should generate no output at all from internal \r\n            logging, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            When set to <c>true</c> will cause internal logging at all levels to be \r\n            suppressed. This means that no warning or error reports will be logged. \r\n            This option overrides the <see cref=\"P:log4net.Util.LogLog.InternalDebugging\"/> setting and \r\n            disables all debug also.\r\n            </para>\r\n            <para>This value can be set by setting the application setting\r\n            <c>log4net.Internal.Quiet</c> in the application configuration file.\r\n            </para>\r\n            <para>\r\n            The default value is <c>false</c>, i.e. internal logging is not\r\n            disabled.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            The following example disables internal logging using the \r\n            application configuration file :\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net.Internal.Quiet\" value=\"true\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.EmitInternalMessages\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsDebugEnabled\">\r\n            <summary>\r\n            Test if LogLog.Debug is enabled for output.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if Debug is enabled\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Test if LogLog.Debug is enabled for output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsWarnEnabled\">\r\n            <summary>\r\n            Test if LogLog.Warn is enabled for output.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if Warn is enabled\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Test if LogLog.Warn is enabled for output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsErrorEnabled\">\r\n            <summary>\r\n            Test if LogLog.Error is enabled for output.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if Error is enabled\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Test if LogLog.Error is enabled for output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog.LogReceivedAdapter\">\r\n            <summary>\r\n            Subscribes to the LogLog.LogReceived event and stores messages\r\n            to the supplied IList instance.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.#ctor(System.Collections.IList)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"items\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.Dispose\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.LogReceivedAdapter.Items\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventArgs\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogReceivedEventArgs.#ctor(log4net.Util.LogLog)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"loglog\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogReceivedEventArgs.LogLog\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NativeError\">\r\n            <summary>\r\n            Represents a native error code and message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Represents a Win32 platform native error.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </summary>\r\n            <param name=\"number\">The number of the native error.</param>\r\n            <param name=\"message\">The message of the native error.</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetLastError\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last Windows error.\r\n            </summary>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last windows error.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/> error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetError(System.Int32)\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class.\r\n            </summary>\r\n            <param name=\"number\">the error number for the native error</param>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the specified \r\n            error number.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the specified error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetErrorMessage(System.Int32)\">\r\n            <summary>\r\n            Retrieves the message corresponding with a Win32 message identifier.\r\n            </summary>\r\n            <param name=\"messageId\">Message identifier for the requested message.</param>\r\n            <returns>\r\n            The message corresponding with the specified message identifier.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message will be searched for in system message-table resource(s)\r\n            using the native <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.ToString\">\r\n            <summary>\r\n            Return error information string\r\n            </summary>\r\n            <returns>error information string</returns>\r\n            <remarks>\r\n            <para>\r\n            Return error information string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.FormatMessage(System.Int32,System.IntPtr@,System.Int32,System.Int32,System.String@,System.Int32,System.IntPtr)\">\r\n            <summary>\r\n            Formats a message string.\r\n            </summary>\r\n            <param name=\"dwFlags\">Formatting options, and how to interpret the <paramref name=\"lpSource\"/> parameter.</param>\r\n            <param name=\"lpSource\">Location of the message definition.</param>\r\n            <param name=\"dwMessageId\">Message identifier for the requested message.</param>\r\n            <param name=\"dwLanguageId\">Language identifier for the requested message.</param>\r\n            <param name=\"lpBuffer\">If <paramref name=\"dwFlags\"/> includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the <c>LocalAlloc</c> function, and places the pointer to the buffer at the address specified in <paramref name=\"lpBuffer\"/>.</param>\r\n            <param name=\"nSize\">If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer.</param>\r\n            <param name=\"Arguments\">Pointer to an array of values that are used as insert values in the formatted message.</param>\r\n            <remarks>\r\n            <para>\r\n            The function requires a message definition as input. The message definition can come from a \r\n            buffer passed into the function. It can come from a message table resource in an \r\n            already-loaded module. Or the caller can ask the function to search the system's message \r\n            table resource(s) for the message definition. The function finds the message definition \r\n            in a message table resource based on a message identifier and a language identifier. \r\n            The function copies the formatted message text to an output buffer, processing any embedded \r\n            insert sequences if requested.\r\n            </para>\r\n            <para>\r\n            To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <para>\r\n            If the function succeeds, the return value is the number of TCHARs stored in the output \r\n            buffer, excluding the terminating null character.\r\n            </para>\r\n            <para>\r\n            If the function fails, the return value is zero. To get extended error information, \r\n            call <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/>.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Number\">\r\n            <summary>\r\n            Gets the number of the native error.\r\n            </summary>\r\n            <value>\r\n            The number of the native error.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the number of the native error.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Message\">\r\n            <summary>\r\n            Gets the message of the native error.\r\n            </summary>\r\n            <value>\r\n            The message of the native error.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            </para>\r\n            Gets the message of the native error.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullDictionaryEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance.\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullDictionaryEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullDictionaryEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Key\">\r\n            <summary>\r\n            Gets the current key from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an exception because the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>\r\n            never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Key\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Value\">\r\n            <summary>\r\n            Gets the current value from the enumerator.\r\n            </summary>\r\n            <value>The current value from the enumerator.</value>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Value\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Entry\">\r\n            <summary>\r\n            Gets the current entry from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current entry.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Entry\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Instance\">\r\n            <summary>\r\n            Get the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullSecurityContext\">\r\n            <summary>\r\n            A SecurityContext used when a SecurityContext is not required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Util.NullSecurityContext\"/> is a no-op implementation of the\r\n            <see cref=\"T:log4net.Core.SecurityContext\"/> base class. It is used where a <see cref=\"T:log4net.Core.SecurityContext\"/>\r\n            is required but one has not been provided.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullSecurityContext.Instance\">\r\n            <summary>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Private constructor for singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate this SecurityContext\r\n            </summary>\r\n            <param name=\"state\">State supplied by the caller</param>\r\n            <returns><c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            No impersonation is done and <c>null</c> is always returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.OnlyOnceErrorHandler\">\r\n            <summary>\r\n            Implements log4net's default error handling policy which consists \r\n            of emitting a message for the first error in an appender and \r\n            ignoring all subsequent errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The error message is processed using the LogLog sub-system.\r\n            </para>\r\n            <para>\r\n            This policy aims at protecting an otherwise working application\r\n            from being flooded with error messages when logging fails.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"prefix\">The prefix to use for each message.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class\r\n            with the specified prefix.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Reset\">\r\n            <summary>\r\n            Reset the error handler back to its initial disabled state.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Log an Error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <param name=\"e\">The exception.</param>\r\n            <param name=\"errorCode\">The internal error code.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the error information to <see cref=\"T:log4net.Util.LogLog\"/>'s Error method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\r\n            Log an Error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <param name=\"e\">The exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Prints the message and the stack trace of the exception on the standard\r\n            error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String)\">\r\n            <summary>\r\n            Log an error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <remarks>\r\n            <para>\r\n            Print a the error message passed as parameter on the standard\r\n            error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_enabledDate\">\r\n            <summary>\r\n            The date the error was recorded.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_firstTime\">\r\n            <summary>\r\n            Flag to indicate if it is the first error\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_message\">\r\n            <summary>\r\n            The message recorded during the first error.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_exception\">\r\n            <summary>\r\n            The exception recorded during the first error.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_errorCode\">\r\n            <summary>\r\n            The error code recorded during the first error.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_prefix\">\r\n            <summary>\r\n            String to prefix each message with\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the OnlyOnceErrorHandler class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.IsEnabled\">\r\n            <summary>\r\n            Is error logging enabled\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Is error logging enabled. Logging is only enabled for the\r\n            first error delivered to the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.EnabledDate\">\r\n            <summary>\r\n            The date the first error that trigged this error handler occured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorMessage\">\r\n            <summary>\r\n            The message from the first error that trigged this error handler.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.Exception\">\r\n            <summary>\r\n            The exception from the first error that trigged this error handler.\r\n            </summary>\r\n            <remarks>\r\n            May be <see langword=\"null\" />.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorCode\">\r\n            <summary>\r\n            The error code from the first error that trigged this error handler.\r\n            </summary>\r\n            <remarks>\r\n            Defaults to <see cref=\"F:log4net.Core.ErrorCode.GenericFailure\"/>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.OptionConverter\">\r\n            <summary>\r\n            A convenience class to convert property values to specific types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility functions for converting types and parsing values.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OptionConverter\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToBoolean(System.String,System.Boolean)\">\r\n            <summary>\r\n            Converts a string to a <see cref=\"T:System.Boolean\"/> value.\r\n            </summary>\r\n            <param name=\"argValue\">String to convert.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Boolean\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            If <paramref name=\"argValue\"/> is \"true\", then <c>true</c> is returned. \r\n            If <paramref name=\"argValue\"/> is \"false\", then <c>false</c> is returned. \r\n            Otherwise, <paramref name=\"defaultValue\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToFileSize(System.String,System.Int64)\">\r\n            <summary>\r\n            Parses a file size into a number.\r\n            </summary>\r\n            <param name=\"argValue\">String to parse.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Int64\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parses a file size of the form: number[KB|MB|GB] into a\r\n            long value. It is scaled with the appropriate multiplier.\r\n            </para>\r\n            <para>\r\n            <paramref name=\"defaultValue\"/> is returned when <paramref name=\"argValue\"/>\r\n            cannot be converted to a <see cref=\"T:System.Int64\"/> value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\r\n            Converts a string to an object.\r\n            </summary>\r\n            <param name=\"target\">The target type to convert to.</param>\r\n            <param name=\"txt\">The string to convert to an object.</param>\r\n            <returns>\r\n            The object converted from a string or <c>null</c> when the \r\n            conversion failed.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Converts a string to an object. Uses the converter registry to try\r\n            to convert the string value into the specified target type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.CanConvertTypeTo(System.Type,System.Type)\">\r\n            <summary>\r\n            Checks if there is an appropriate type conversion from the source type to the target type.\r\n            </summary>\r\n            <param name=\"sourceType\">The type to convert from.</param>\r\n            <param name=\"targetType\">The type to convert to.</param>\r\n            <returns><c>true</c> if there is a conversion from the source type to the target type.</returns>\r\n            <remarks>\r\n            Checks if there is an appropriate type conversion from the source type to the target type.\r\n            <para>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertTypeTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts an object to the target type.\r\n            </summary>\r\n            <param name=\"sourceInstance\">The object to convert to the target type.</param>\r\n            <param name=\"targetType\">The type to convert to.</param>\r\n            <returns>The converted object.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts an object to the target type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.InstantiateByClassName(System.String,System.Type,System.Object)\">\r\n            <summary>\r\n            Instantiates an object given a class name.\r\n            </summary>\r\n            <param name=\"className\">The fully qualified class name of the object to instantiate.</param>\r\n            <param name=\"superClass\">The class to which the new object should belong.</param>\r\n            <param name=\"defaultValue\">The object to return in case of non-fulfillment.</param>\r\n            <returns>\r\n            An instance of the <paramref name=\"className\"/> or <paramref name=\"defaultValue\"/>\r\n            if the object could not be instantiated.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Checks that the <paramref name=\"className\"/> is a subclass of\r\n            <paramref name=\"superClass\"/>. If that test fails or the object could\r\n            not be instantiated, then <paramref name=\"defaultValue\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.SubstituteVariables(System.String,System.Collections.IDictionary)\">\r\n            <summary>\r\n            Performs variable substitution in string <paramref name=\"value\"/> from the \r\n            values of keys found in <paramref name=\"props\"/>.\r\n            </summary>\r\n            <param name=\"value\">The string on which variable substitution is performed.</param>\r\n            <param name=\"props\">The dictionary to use to lookup variables.</param>\r\n            <returns>The result of the substitutions.</returns>\r\n            <remarks>\r\n            <para>\r\n            The variable substitution delimiters are <b>${</b> and <b>}</b>.\r\n            </para>\r\n            <para>\r\n            For example, if props contains <c>key=value</c>, then the call\r\n            </para>\r\n            <para>\r\n            <code lang=\"C#\">\r\n            string s = OptionConverter.SubstituteVariables(\"Value of key is ${key}.\");\r\n            </code>\r\n            </para>\r\n            <para>\r\n            will set the variable <c>s</c> to \"Value of key is value.\".\r\n            </para>\r\n            <para>\r\n            If no value could be found for the specified key, then substitution \r\n            defaults to an empty string.\r\n            </para>\r\n            <para>\r\n            For example, if system properties contains no value for the key\r\n            \"nonExistentKey\", then the call\r\n            </para>\r\n            <para>\r\n            <code lang=\"C#\">\r\n            string s = OptionConverter.SubstituteVariables(\"Value of nonExistentKey is [${nonExistentKey}]\");\r\n            </code>\r\n            </para>\r\n            <para>\r\n            will set <s>s</s> to \"Value of nonExistentKey is []\".\t \r\n            </para>\r\n            <para>\r\n            An Exception is thrown if <paramref name=\"value\"/> contains a start \r\n            delimiter \"${\" which is not balanced by a stop delimiter \"}\". \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ParseEnum(System.Type,System.String,System.Boolean)\">\r\n            <summary>\r\n            Converts the string representation of the name or numeric value of one or \r\n            more enumerated constants to an equivalent enumerated object.\r\n            </summary>\r\n            <param name=\"enumType\">The type to convert to.</param>\r\n            <param name=\"value\">The enum string value.</param>\r\n            <param name=\"ignoreCase\">If <c>true</c>, ignore case; otherwise, regard case.</param>\r\n            <returns>An object of type <paramref name=\"enumType\" /> whose value is represented by <paramref name=\"value\" />.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OptionConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the OptionConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser\">\r\n            <summary>\r\n            Most of the work of the <see cref=\"T:log4net.Layout.PatternLayout\"/> class\r\n            is delegated to the PatternParser class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>PatternParser</c> processes a pattern string and\r\n            returns a chain of <see cref=\"T:log4net.Util.PatternConverter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternParser\"/> class \r\n            with the specified pattern string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.Parse\">\r\n            <summary>\r\n            Parses the pattern into a chain of pattern converters.\r\n            </summary>\r\n            <returns>The head of a chain of pattern converters.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parses the pattern into a chain of pattern converters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.BuildCache\">\r\n            <summary>\r\n            Build the unified cache of converters from the static and instance maps\r\n            </summary>\r\n            <returns>the list of all the converter names</returns>\r\n            <remarks>\r\n            <para>\r\n            Build the unified cache of converters from the static and instance maps\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ParseInternal(System.String,System.String[])\">\r\n            <summary>\r\n            Internal method to parse the specified pattern to find specified matches\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <param name=\"matches\">the converter names to match in the pattern</param>\r\n            <remarks>\r\n            <para>\r\n            The matches param must be sorted such that longer strings come before shorter ones.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessLiteral(System.String)\">\r\n            <summary>\r\n            Process a parsed literal\r\n            </summary>\r\n            <param name=\"text\">the literal text</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessConverter(System.String,System.String,log4net.Util.FormattingInfo)\">\r\n            <summary>\r\n            Process a parsed converter pattern\r\n            </summary>\r\n            <param name=\"converterName\">the name of the converter</param>\r\n            <param name=\"option\">the optional option for the converter</param>\r\n            <param name=\"formattingInfo\">the formatting info for the converter</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.AddConverter(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Resets the internal state of the parser and adds the specified pattern converter \r\n            to the chain.\r\n            </summary>\r\n            <param name=\"pc\">The pattern converter to add.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_head\">\r\n            <summary>\r\n            The first pattern converter in the chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_tail\">\r\n            <summary>\r\n             the last pattern converter in the chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_pattern\">\r\n            <summary>\r\n            The pattern\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_patternConverters\">\r\n            <summary>\r\n            Internal map of converter identifiers to converter types\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This map overrides the static s_globalRulesRegistry map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the PatternParser class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternParser.PatternConverters\">\r\n            <summary>\r\n            Get the converter registry used by this parser\r\n            </summary>\r\n            <value>\r\n            The converter registry used by this parser\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the converter registry used by this parser\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser.StringLengthComparer\">\r\n            <summary>\r\n            Sort strings by length\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:System.Collections.IComparer\"/> that orders strings by string length.\r\n            The longest strings are placed first\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternString\">\r\n            <summary>\r\n            This class implements a patterned string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This string has embedded patterns that are resolved and expanded\r\n            when the string is formatted.\r\n            </para>\r\n            <para>\r\n            This class functions similarly to the <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            in that it accepts a pattern and renders it to a string. Unlike the \r\n            <see cref=\"T:log4net.Layout.PatternLayout\"/> however the <c>PatternString</c>\r\n            does not render the properties of a specific <see cref=\"T:log4net.Core.LoggingEvent\"/> but\r\n            of the process in general.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output the friendly name of the current AppDomain.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>date</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the current date and time in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>env</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the a specific environment variable. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%env{COMPUTERNAME}</b> would include the value\r\n            \t\t\tof the <c>COMPUTERNAME</c> environment variable.\r\n                        </para>\r\n                        <para>\r\n                        The <c>env</c> pattern is not supported on the .NET Compact Framework.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>identity</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>newline</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern name offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>processid</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the system process ID for the current process.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>property</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output a specific context property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are stored in logging contexts. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>random</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output a random string of characters. The string is made up of\r\n                        uppercase letters and numbers. By default the string is 4 characters long.\r\n                        The length of the string can be specified within braces directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%random{8}</b> would output an 8 character string.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>username</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>utcdate</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Util.PatternString\"/>\r\n            instance using <see cref=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\"/> or\r\n            <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/>.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.PatternLayout\"/> for details on the \r\n            <i>format modifiers</i> supported by the patterns.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.s_globalRulesRegistry\">\r\n            <summary>\r\n            Internal map of converter identifiers to converter types.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_pattern\">\r\n            <summary>\r\n            the pattern\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_head\">\r\n            <summary>\r\n            the head of the pattern converter chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_instanceRulesRegistry\">\r\n            <summary>\r\n            patterns defined on this PatternString only\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#cctor\">\r\n            <summary>\r\n            Initialize the global registry\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternString\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to use with this PatternString</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/> with the pattern specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.ActivateOptions\">\r\n            <summary>\r\n            Initialize object options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Returns PatternParser used to parse the conversion string. Subclasses\r\n            may override this to return a subclass of PatternParser which recognize\r\n            custom conversion pattern name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format(System.IO.TextWriter)\">\r\n            <summary>\r\n            Produces a formatted string as specified by the conversion pattern.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Format the pattern to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format\">\r\n            <summary>\r\n            Format the pattern as a string\r\n            </summary>\r\n            <returns>the pattern formatted as a string</returns>\r\n            <remarks>\r\n            <para>\r\n            Format the pattern to a string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternString\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\">\r\n            <summary>\r\n            Add a converter to this PatternString\r\n            </summary>\r\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\r\n            <param name=\"type\">the type of the converter</param>\r\n            <remarks>\r\n            <para>\r\n            Add a converter to this PatternString\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternString.ConversionPattern\">\r\n            <summary>\r\n            Gets or sets the pattern formatting string\r\n            </summary>\r\n            <value>\r\n            The pattern formatting string\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <b>ConversionPattern</b> option. This is the string which\r\n            controls formatting and consists of a mix of literal content and\r\n            conversion specifiers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PropertiesDictionary\">\r\n            <summary>\r\n            String keyed object map.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            While this collection is serializable only member \r\n            objects that are serializable will\r\n            be serialized along with this collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ReadOnlyPropertiesDictionary\">\r\n            <summary>\r\n            String keyed object map that is read only.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This collection is readonly and cannot be modified.\r\n            </para>\r\n            <para>\r\n            While this collection is serializable only member \r\n            objects that are serializable will\r\n            be serialized along with this collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ReadOnlyPropertiesDictionary.m_hashtable\">\r\n            <summary>\r\n            The Hashtable used to store the properties data\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Copy Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Deserialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetKeys\">\r\n            <summary>\r\n            Gets the key names.\r\n            </summary>\r\n            <returns>An array of all the keys.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the key names.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Contains(System.String)\">\r\n            <summary>\r\n            Test if the dictionary contains a specified key\r\n            </summary>\r\n            <param name=\"key\">the key to look for</param>\r\n            <returns>true if the dictionary contains the specified key</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the dictionary contains a specified key\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Clear\">\r\n            <summary>\r\n            Remove all properties from the properties collection\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <param name=\"value\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of the  property with the specified key.\r\n            </summary>\r\n            <value>\r\n            The value of the property with the specified key.\r\n            </value>\r\n            <param name=\"key\">The key of the property to get or set.</param>\r\n            <remarks>\r\n            <para>\r\n            The property value will only be serialized if it is serializable.\r\n            If it cannot be serialized it will be silently ignored if\r\n            a serialization operation is performed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.InnerHashtable\">\r\n            <summary>\r\n            The hashtable used to store the properties\r\n            </summary>\r\n            <value>\r\n            The internal collection used to store the properties\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The hashtable used to store the properties\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Item(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Count\">\r\n            <summary>\r\n            The number of properties in this collection\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Because this class is sealed the serialization constructor is private.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Remove(System.String)\">\r\n            <summary>\r\n            Remove the entry with the specified key from this dictionary\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the entry with the specified key from this dictionary\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n            <returns>an enumerator</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over the contest of this collection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the entry with the specified key from this dictionary\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to lookup in the collection</param>\r\n            <returns><c>true</c> if the collection contains the specified key</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this collection contains a specified key.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Clear\">\r\n            <summary>\r\n            Remove all properties from the properties collection\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Remove all properties from the properties collection\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key</param>\r\n            <param name=\"value\">the value to store for the key</param>\r\n            <remarks>\r\n            <para>\r\n            Store a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of the  property with the specified key.\r\n            </summary>\r\n            <value>\r\n            The value of the property with the specified key.\r\n            </value>\r\n            <param name=\"key\">The key of the property to get or set.</param>\r\n            <remarks>\r\n            <para>\r\n            The property value will only be serialized if it is serializable.\r\n            If it cannot be serialized it will be silently ignored if\r\n            a serialization operation is performed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n            <value>\r\n            <c>false</c>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This collection is modifiable. This property always\r\n            returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Item(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n            <value>\r\n            The value for the key specified.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PropertyEntry\">\r\n            <summary>\r\n            A class to hold the key and data for a property set in the config file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to hold the key and data for a property set in the config file\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertyEntry.ToString\">\r\n            <summary>\r\n            Override <c>Object.ToString</c> to return sensible debug info\r\n            </summary>\r\n            <returns>string info about this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Key\">\r\n            <summary>\r\n            Property Key\r\n            </summary>\r\n            <value>\r\n            Property Key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Property Key.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Value\">\r\n            <summary>\r\n            Property Value\r\n            </summary>\r\n            <value>\r\n            Property Value\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Property Value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ProtectCloseTextWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.TextWriter\"/> that ignores the <see cref=\"M:log4net.Util.ProtectCloseTextWriter.Close\"/> message\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer is used in special cases where it is necessary \r\n            to protect a writer from being closed by a client.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">the writer to actually write to</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new ProtectCloseTextWriter using a writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Attach(System.IO.TextWriter)\">\r\n            <summary>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to attach to</param>\r\n            <remarks>\r\n            <para>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Close\">\r\n            <summary>\r\n            Does not close the underlying output writer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Does not close the underlying output writer.\r\n            This method does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ReaderWriterLock\">\r\n            <summary>\r\n            Defines a lock that supports single writers and multiple readers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <c>ReaderWriterLock</c> is used to synchronize access to a resource. \r\n            At any given time, it allows either concurrent read access for \r\n            multiple threads, or write access for a single thread. In a \r\n            situation where a resource is changed infrequently, a \r\n            <c>ReaderWriterLock</c> provides better throughput than a simple \r\n            one-at-a-time lock, such as <see cref=\"T:System.Threading.Monitor\"/>.\r\n            </para>\r\n            <para>\r\n            If a platform does not support a <c>System.Threading.ReaderWriterLock</c> \r\n            implementation then all readers and writers are serialized. Therefore \r\n            the caller must not rely on multiple simultaneous readers.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReaderWriterLock\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\">\r\n            <summary>\r\n            Acquires a reader lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\"/> blocks if a different thread has the writer \r\n            lock, or if at least one thread is waiting for the writer lock.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\">\r\n            <summary>\r\n            Decrements the lock count\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\"/> decrements the lock count. When the count \r\n            reaches zero, the lock is released.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireWriterLock\">\r\n            <summary>\r\n            Acquires the writer lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method blocks if another thread has a reader lock or writer lock.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseWriterLock\">\r\n            <summary>\r\n            Decrements the lock count on the writer lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ReleaseWriterLock decrements the writer lock count. \r\n            When the count reaches zero, the writer lock is released.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ReusableStringWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused.\r\n            This uses a single buffer for string operations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.#ctor(System.IFormatProvider)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </summary>\r\n            <param name=\"formatProvider\">the format provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Dispose(System.Boolean)\">\r\n            <summary>\r\n            Override Dispose to prevent closing of writer\r\n            </summary>\r\n            <param name=\"disposing\">flag</param>\r\n            <remarks>\r\n            <para>\r\n            Override Dispose to prevent closing of writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\">\r\n            <summary>\r\n            Reset this string writer so that it can be reused.\r\n            </summary>\r\n            <param name=\"maxCapacity\">the maximum buffer capacity before it is trimmed</param>\r\n            <param name=\"defaultSize\">the default size to make the buffer</param>\r\n            <remarks>\r\n            <para>\r\n            Reset this string writer so that it can be reused.\r\n            The internal buffers are cleared and reset.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.SystemInfo\">\r\n            <summary>\r\n            Utility class for system specific information.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility class of static methods for system specific information.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Alexey Solofnenko</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#ctor\">\r\n            <summary>\r\n            Private constructor to prevent instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Only static methods are exposed from this type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#cctor\">\r\n            <summary>\r\n            Initialize default values for private static fields.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Only static methods are exposed from this type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyLocationInfo(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the assembly location path for the specified assembly.\r\n            </summary>\r\n            <param name=\"myAssembly\">The assembly to get the location for.</param>\r\n            <returns>The location of the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            This method does not guarantee to return the correct path\r\n            to the assembly. If only tries to give an indication as to\r\n            where the assembly was loaded from.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyQualifiedName(System.Type)\">\r\n            <summary>\r\n            Gets the fully qualified name of the <see cref=\"T:System.Type\"/>, including \r\n            the name of the assembly from which the <see cref=\"T:System.Type\"/> was \r\n            loaded.\r\n            </summary>\r\n            <param name=\"type\">The <see cref=\"T:System.Type\"/> to get the fully qualified name for.</param>\r\n            <returns>The fully qualified name for the <see cref=\"T:System.Type\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            This is equivalent to the <c>Type.AssemblyQualifiedName</c> property,\r\n            but this method works on the .NET Compact Framework 1.0 as well as\r\n            the full .NET runtime.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyShortName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the short name of the <see cref=\"T:System.Reflection.Assembly\"/>.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the name for.</param>\r\n            <returns>The short name of the <see cref=\"T:System.Reflection.Assembly\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            The short name of the assembly is the <see cref=\"P:System.Reflection.Assembly.FullName\"/> \r\n            without the version, culture, or public key. i.e. it is just the \r\n            assembly's file name without the extension.\r\n            </para>\r\n            <para>\r\n            Use this rather than <c>Assembly.GetName().Name</c> because that\r\n            is not available on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            Because of a FileIOPermission security demand we cannot do\r\n            the obvious Assembly.GetName().Name. We are allowed to get\r\n            the <see cref=\"P:System.Reflection.Assembly.FullName\"/> of the assembly so we \r\n            start from there and strip out just the assembly name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyFileName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the file name for.</param>\r\n            <returns>The file name of the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Type,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeType\">A sibling type to use to load the type.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified, it will be loaded from the assembly\r\n            containing the specified relative type. If the type is not found in the assembly \r\n            then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\t\t\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the\r\n            assembly that is directly calling this method. If the type is not found \r\n            in the assembly then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Reflection.Assembly,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeAssembly\">An assembly to load the type from.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the specified\r\n            assembly. If the type is not found in the assembly then all the loaded assemblies \r\n            will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.NewGuid\">\r\n            <summary>\r\n            Generate a new guid\r\n            </summary>\r\n            <returns>A new Guid</returns>\r\n            <remarks>\r\n            <para>\r\n            Generate a new guid\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateArgumentOutOfRangeException(System.String,System.Object,System.String)\">\r\n            <summary>\r\n            Create an <see cref=\"T:System.ArgumentOutOfRangeException\"/>\r\n            </summary>\r\n            <param name=\"parameterName\">The name of the parameter that caused the exception</param>\r\n            <param name=\"actualValue\">The value of the argument that causes this exception</param>\r\n            <param name=\"message\">The message that describes the error</param>\r\n            <returns>the ArgumentOutOfRangeException object</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new instance of the <see cref=\"T:System.ArgumentOutOfRangeException\"/> class \r\n            with a specified error message, the parameter name, and the value \r\n            of the argument.\r\n            </para>\r\n            <para>\r\n            The Compact Framework does not support the 3 parameter constructor for the\r\n            <see cref=\"T:System.ArgumentOutOfRangeException\"/> type. This method provides an\r\n            implementation that works for all platforms.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int32@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int32\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int64@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int64\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int16@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int16\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetAppSetting(System.String)\">\r\n            <summary>\r\n            Lookup an application setting\r\n            </summary>\r\n            <param name=\"key\">the application settings key to lookup</param>\r\n            <returns>the value for the key, or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Configuration APIs are not supported under the Compact Framework\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.ConvertToFullPath(System.String)\">\r\n            <summary>\r\n            Convert a path into a fully qualified local file path.\r\n            </summary>\r\n            <param name=\"path\">The path to convert.</param>\r\n            <returns>The fully qualified path.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the path specified to a fully\r\n            qualified path. If the path is relative it is\r\n            taken as relative from the application base \r\n            directory.\r\n            </para>\r\n            <para>\r\n            The path specified must be a local file path, a URI is not supported.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateCaseInsensitiveHashtable\">\r\n            <summary>\r\n            Creates a new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity. \r\n            </summary>\r\n            <returns>A new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity</returns>\r\n            <remarks>\r\n            <para>\r\n            The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.EmptyTypes\">\r\n            <summary>\r\n            Gets an empty array of types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>Type.EmptyTypes</c> field is not available on\r\n            the .NET Compact Framework 1.0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the SystemInfo class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_hostName\">\r\n            <summary>\r\n            Cache the host name for the current machine\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_appFriendlyName\">\r\n            <summary>\r\n            Cache the application friendly name\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_nullText\">\r\n            <summary>\r\n            Text to output when a <c>null</c> is encountered.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_notAvailableText\">\r\n            <summary>\r\n            Text to output when an unsupported feature is requested.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_processStartTime\">\r\n            <summary>\r\n            Start time for the current process.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NewLine\">\r\n            <summary>\r\n            Gets the system dependent line terminator.\r\n            </summary>\r\n            <value>\r\n            The system dependent line terminator.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the system dependent line terminator.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationBaseDirectory\">\r\n            <summary>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The base directory path for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ConfigurationFileLocation\">\r\n            <summary>\r\n            Gets the path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not have a concept of a configuration\r\n            file. For this runtime, we use the entry assembly location as the root for\r\n            the configuration file name.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.EntryAssemblyLocation\">\r\n            <summary>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the entry assembly.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.CurrentThreadId\">\r\n            <summary>\r\n            Gets the ID of the current thread.\r\n            </summary>\r\n            <value>The ID of the current thread.</value>\r\n            <remarks>\r\n            <para>\r\n            On the .NET framework, the <c>AppDomain.GetCurrentThreadId</c> method\r\n            is used to obtain the thread ID for the current thread. This is the \r\n            operating system ID for the thread.\r\n            </para>\r\n            <para>\r\n            On the .NET Compact Framework 1.0 it is not possible to get the \r\n            operating system thread ID for the current thread. The native method \r\n            <c>GetCurrentThreadId</c> is implemented inline in a header file\r\n            and cannot be called.\r\n            </para>\r\n            <para>\r\n            On the .NET Framework 2.0 the <c>Thread.ManagedThreadId</c> is used as this\r\n            gives a stable id unrelated to the operating system thread ID which may \r\n            change if the runtime is using fibers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.HostName\">\r\n            <summary>\r\n            Get the host name or machine name for the current machine\r\n            </summary>\r\n            <value>\r\n            The hostname or machine name\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the host name or machine name for the current machine\r\n            </para>\r\n            <para>\r\n            The host name (<see cref=\"M:System.Net.Dns.GetHostName\"/>) or\r\n            the machine name (<c>Environment.MachineName</c>) for\r\n            the current machine, or if neither of these are available\r\n            then <c>NOT AVAILABLE</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\">\r\n            <summary>\r\n            Get this application's friendly name\r\n            </summary>\r\n            <value>\r\n            The friendly name of this application as a string\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If available the name of the application is retrieved from\r\n            the <c>AppDomain</c> using <c>AppDomain.CurrentDomain.FriendlyName</c>.\r\n            </para>\r\n            <para>\r\n            Otherwise the file name of the entry assembly is used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ProcessStartTime\">\r\n            <summary>\r\n            Get the start time for the current process.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the time at which the log4net library was loaded into the\r\n            AppDomain. Due to reports of a hang in the call to <c>System.Diagnostics.Process.StartTime</c>\r\n            this is not the start time for the current process.\r\n            </para>\r\n            <para>\r\n            The log4net library should be loaded by an application early during its\r\n            startup, therefore this start time should be a good approximation for\r\n            the actual start time.\r\n            </para>\r\n            <para>\r\n            Note that AppDomains may be loaded and unloaded within the\r\n            same process without the process terminating, however this start time\r\n            will be set per AppDomain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NullText\">\r\n            <summary>\r\n            Text to output when a <c>null</c> is encountered.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use this value to indicate a <c>null</c> has been encountered while\r\n            outputting a string representation of an item.\r\n            </para>\r\n            <para>\r\n            The default value is <c>(null)</c>. This value can be overridden by specifying\r\n            a value for the <c>log4net.NullText</c> appSetting in the application's\r\n            .config file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NotAvailableText\">\r\n            <summary>\r\n            Text to output when an unsupported feature is requested.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use this value when an unsupported feature is requested.\r\n            </para>\r\n            <para>\r\n            The default value is <c>NOT AVAILABLE</c>. This value can be overridden by specifying\r\n            a value for the <c>log4net.NotAvailableText</c> appSetting in the application's\r\n            .config file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.SystemStringFormat\">\r\n            <summary>\r\n            Utility class that represents a format string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility class that represents a format string.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.#ctor(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Initialise the <see cref=\"T:log4net.Util.SystemStringFormat\"/>\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.ToString\">\r\n            <summary>\r\n            Format the string and arguments\r\n            </summary>\r\n            <returns>the formatted string</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Replaces the format item in a specified <see cref=\"T:System.String\"/> with the text equivalent \r\n            of the value of a corresponding <see cref=\"T:System.Object\"/> instance in a specified array.\r\n            A specified parameter supplies culture-specific formatting information.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n            <returns>\r\n            A copy of format in which the format items have been replaced by the <see cref=\"T:System.String\"/> \r\n            equivalent of the corresponding instances of <see cref=\"T:System.Object\"/> in args.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            This method does not throw exceptions. If an exception thrown while formatting the result the\r\n            exception and arguments are returned in the result string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormatError(System.Exception,System.String,System.Object[])\">\r\n            <summary>\r\n            Process an error during StringFormat\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderArray(System.Array,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Dump the contents of an array into a string builder\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderObject(System.Object,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Dump an object to a string\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemStringFormat.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the SystemStringFormat class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextProperties.s_threadLocalSlot\">\r\n            <summary>\r\n            The thread local data slot to use to store a PropertiesDictionary.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Remove(System.String)\">\r\n            <summary>\r\n            Remove a property\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove a property\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Clear\">\r\n            <summary>\r\n            Clear all properties\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear all properties\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\r\n            Get the <c>PropertiesDictionary</c> for this thread.\r\n            </summary>\r\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\r\n            <returns>the properties for this thread</returns>\r\n            <remarks>\r\n            <para>\r\n            The collection returned is only to be used on the calling thread. If the\r\n            caller needs to share the collection between different threads then the \r\n            caller must clone the collection before doing so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the value of a property\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack\">\r\n            <summary>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.m_stack\">\r\n            <summary>\r\n            The stack store.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held in this stack.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears all the contextual information held in this stack.\r\n            Only call this if you think that this tread is being reused after\r\n            a previous call execution which may not have completed correctly.\r\n            You do not need to use this method if you always guarantee to call\r\n            the <see cref=\"M:System.IDisposable.Dispose\"/> method of the <see cref=\"T:System.IDisposable\"/>\r\n            returned from <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> even in exceptional circumstances,\r\n            for example by using the <c>using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))</c> \r\n            syntax.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Pop\">\r\n            <summary>\r\n            Removes the top context from this stack.\r\n            </summary>\r\n            <returns>The message in the context that was removed from the top of this stack.</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the top context from this stack, and return\r\n            it to the caller. If this stack is empty then an\r\n            empty string (not <see langword=\"null\"/>) is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message into this stack.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Pushes a new context onto this stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up this stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an ThreadContext Stack message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.GetFullMessage\">\r\n            <summary>\r\n            Gets the current context information for this stack.\r\n            </summary>\r\n            <returns>The current context information.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.ToString\">\r\n            <summary>\r\n            Gets the current context information for this stack.\r\n            </summary>\r\n            <returns>Gets the current context information</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the current context information for this stack.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.log4net#Core#IFixingRequired#GetFixedObject\">\r\n            <summary>\r\n            Get a portable version of this object\r\n            </summary>\r\n            <returns>the portable instance of this object</returns>\r\n            <remarks>\r\n            <para>\r\n            Get a cross thread portable version of this object\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.Count\">\r\n            <summary>\r\n            The number of messages in the stack\r\n            </summary>\r\n            <value>\r\n            The current number of messages in the stack\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The current number of messages in the stack. That is\r\n            the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> has been called\r\n            minus the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Pop\"/> has been called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.InternalStack\">\r\n            <summary>\r\n            Gets and sets the internal stack used by this <see cref=\"T:log4net.Util.ThreadContextStack\"/>\r\n            </summary>\r\n            <value>The internal storage stack</value>\r\n            <remarks>\r\n            <para>\r\n            This property is provided only to support backward compatability \r\n            of the <see cref=\"T:log4net.NDC\"/>. Tytpically the internal stack should not\r\n            be modified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.StackFrame\">\r\n            <summary>\r\n            Inner class used to represent a single context frame in the stack.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Inner class used to represent a single context frame in the stack.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.StackFrame.#ctor(System.String,log4net.Util.ThreadContextStack.StackFrame)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">The message for this context.</param>\r\n            <param name=\"parent\">The parent context in the chain.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.StackFrame\"/> class\r\n            with the specified message and parent context.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.Message\">\r\n            <summary>\r\n            Get the message.\r\n            </summary>\r\n            <value>The message.</value>\r\n            <remarks>\r\n            <para>\r\n            Get the message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.FullMessage\">\r\n            <summary>\r\n            Gets the full text of the context down to the root level.\r\n            </summary>\r\n            <value>\r\n            The full text of the context down to the root level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the full text of the context down to the root level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\">\r\n            <summary>\r\n            Struct returned from the <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This struct implements the <see cref=\"T:System.IDisposable\"/> and is designed to be used\r\n            with the <see langword=\"using\"/> pattern to remove the stack frame at the end of the scope.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameStack\">\r\n            <summary>\r\n            The ThreadContextStack internal stack\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameDepth\">\r\n            <summary>\r\n            The depth to trim the stack to when this instance is disposed\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.#ctor(System.Collections.Stack,System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"frameStack\">The internal stack used by the ThreadContextStack.</param>\r\n            <param name=\"frameDepth\">The depth to return the stack to when this object is disposed.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\"/> class with\r\n            the specified stack and return depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.Dispose\">\r\n            <summary>\r\n            Returns the stack to the correct depth.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Returns the stack to the correct depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStacks\">\r\n            <summary>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStacks.#ctor(log4net.Util.ContextPropertiesBase)\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStacks\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStacks.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the ThreadContextStacks class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStacks.Item(System.String)\">\r\n            <summary>\r\n            Gets the named thread context stack\r\n            </summary>\r\n            <value>\r\n            The named stack\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the named thread context stack\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.Transform\">\r\n            <summary>\r\n            Utility class for transforming strings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility class for transforming strings.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.Transform\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.WriteEscapedXmlString(System.Xml.XmlWriter,System.String,System.String)\">\r\n            <summary>\r\n            Write a string to an <see cref=\"T:System.Xml.XmlWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"textData\">the string to write</param>\r\n            <param name=\"invalidCharReplacement\">The string to replace non XML compliant chars with</param>\r\n            <remarks>\r\n            <para>\r\n            The test is escaped either using XML escape entities\r\n            or using CDATA sections.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.MaskXmlInvalidCharacters(System.String,System.String)\">\r\n            <summary>\r\n            Replace invalid XML characters in text string\r\n            </summary>\r\n            <param name=\"textData\">the XML text input string</param>\r\n            <param name=\"mask\">the string to use in place of invalid characters</param>\r\n            <returns>A string that does not contain invalid XML characters.</returns>\r\n            <remarks>\r\n            <para>\r\n            Certain Unicode code points are not allowed in the XML InfoSet, for\r\n            details see: <a href=\"http://www.w3.org/TR/REC-xml/#charsets\">http://www.w3.org/TR/REC-xml/#charsets</a>.\r\n            </para>\r\n            <para>\r\n            This method replaces any illegal characters in the input string\r\n            with the mask string specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.CountSubstrings(System.String,System.String)\">\r\n            <summary>\r\n            Count the number of times that the substring occurs in the text\r\n            </summary>\r\n            <param name=\"text\">the text to search</param>\r\n            <param name=\"substring\">the substring to find</param>\r\n            <returns>the number of times the substring occurs in the text</returns>\r\n            <remarks>\r\n            <para>\r\n            The substring is assumed to be non repeating within itself.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.Transform.INVALIDCHARS\">\r\n            <summary>\r\n            Characters illegal in XML 1.0\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext\">\r\n            <summary>\r\n            Impersonate a Windows Account\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.SecurityContext\"/> impersonates a Windows account.\r\n            </para>\r\n            <para>\r\n            How the impersonation is done depends on the value of <see cref=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\"/>.\r\n            This allows the context to either impersonate a set of user credentials specified \r\n            using username, domain name and password or to revert to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\">\r\n            <summary>\r\n            Initialize the SecurityContext based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The security context will try to Logon the specified user account and\r\n            capture a primary token for impersonation.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, \r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> or <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/> properties were not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <param name=\"state\">caller provided state</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> instance that will revoke the impersonation of this SecurityContext\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Depending on the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property either\r\n            impersonate a user using credentials supplied or revert \r\n            to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.LogonUser(System.String,System.String,System.String)\">\r\n            <summary>\r\n            Create a <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> given the userName, domainName and password.\r\n            </summary>\r\n            <param name=\"userName\">the user name</param>\r\n            <param name=\"domainName\">the domain name</param>\r\n            <param name=\"password\">the password</param>\r\n            <returns>the <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> for the account specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the Windows API call LogonUser to get a principal token for the account. This\r\n            token is used to initialize the WindowsIdentity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Credentials\">\r\n            <summary>\r\n            Gets or sets the impersonation mode for this security context\r\n            </summary>\r\n            <value>\r\n            The impersonation mode for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Impersonate either a user with user credentials or\r\n            revert this thread to the credentials of the process.\r\n            The value is one of the <see cref=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\"/>\r\n            enum.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            the user's credentials are established using the\r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/>\r\n            values.\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\"/>\r\n            no other properties need to be set. If the calling thread is \r\n            impersonating then it will be reverted back to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.UserName\">\r\n            <summary>\r\n            Gets or sets the Windows username for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows username for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.DomainName\">\r\n            <summary>\r\n            Gets or sets the Windows domain name for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows domain name for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value for <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> is the local machine name\r\n            taken from the <see cref=\"P:System.Environment.MachineName\"/> property.\r\n            </para>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Password\">\r\n            <summary>\r\n            Sets the password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <value>\r\n            The password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\">\r\n            <summary>\r\n            The impersonation modes for the <see cref=\"T:log4net.Util.WindowsSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property for\r\n            details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\">\r\n            <summary>\r\n            Impersonate a user using the credentials supplied\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\">\r\n            <summary>\r\n            Revert this the thread to the credentials of the process\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext\">\r\n            <summary>\r\n            Adds <see cref=\"T:System.IDisposable\"/> to <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Helper class to expose the <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            through the <see cref=\"T:System.IDisposable\"/> interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.#ctor(System.Security.Principal.WindowsImpersonationContext)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"impersonationContext\">the impersonation context being wrapped</param>\r\n            <remarks>\r\n            <para>\r\n            Constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.Dispose\">\r\n            <summary>\r\n            Revert the impersonation\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Revert the impersonation\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.GlobalContext\">\r\n            <summary>\r\n            The log4net Global Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>GlobalContext</c> provides a location for global debugging \r\n            information to be stored.\r\n            </para>\r\n            <para>\r\n            The global context has a properties map and these properties can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputing these properties.\r\n            </para>\r\n            <para>\r\n            By default the <c>log4net:HostName</c> property is set to the name of \r\n            the current machine.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <code lang=\"C#\">\r\n            GlobalContext.Properties[\"hostname\"] = Environment.MachineName;\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.GlobalContext.#ctor\">\r\n            <summary>\r\n            Private Constructor. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.GlobalContext.s_properties\">\r\n            <summary>\r\n            The global context properties instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.GlobalContext.Properties\">\r\n            <summary>\r\n            The global properties map.\r\n            </summary>\r\n            <value>\r\n            The global properties map.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The global properties map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.AssemblyInfo\">\r\n            <summary>\r\n            Provides information about the environment the assembly has\r\n            been built for.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.Version\">\r\n            <summary>Version of the assembly</summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFrameworkVersion\">\r\n            <summary>Version of the framework targeted</summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFramework\">\r\n            <summary>Type of framework targeted</summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.ClientProfile\">\r\n            <summary>Does it target a client profile?</summary>\r\n        </member>\r\n        <member name=\"P:log4net.AssemblyInfo.Info\">\r\n            <summary>\r\n            Identifies the version and target for this assembly.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.LogicalThreadContext\">\r\n            <summary>\r\n            The log4net Logical Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> provides a location for <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> specific debugging \r\n            information to be stored.\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> or <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context provides a diagnostic context for the current call context. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context is managed on a per <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> basis.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            LogicalThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a LogicalThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(LogicalThreadContext.Stacks[\"LDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a LogicalThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogicalThreadContext.#ctor\">\r\n            <summary>\r\n            Private Constructor. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_properties\">\r\n            <summary>\r\n            The thread context properties instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_stacks\">\r\n            <summary>\r\n            The thread context stacks instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> \r\n            or <see cref=\"T:log4net.GlobalContext\"/> properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Stacks\">\r\n            <summary>\r\n            The thread stacks\r\n            </summary>\r\n            <value>\r\n            stack map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The logical thread stacks.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.LogManager\">\r\n            <summary>\r\n            This class is used by client applications to request logger instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class has static methods that are used by a client to request\r\n            a logger instance. The <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method is \r\n            used to retrieve a logger.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.ILog\"/> interface for more details.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <seealso cref=\"T:log4net.ILog\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.LogManager\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String)\">\r\n            <overloads>Returns the named logger if it exists.</overloads>\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the default repository) then it\r\n            returns a reference to the logger, otherwise it returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>The logger found, or <c>null</c> if no logger could be found.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the specified repository) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger found, or <c>null</c> if the logger doesn't exist in the specified \r\n            repository.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the repository for the specified assembly) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger, or <c>null</c> if the logger doesn't exist in the specified\r\n            assembly's repository.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers\">\r\n            <overloads>Get the currently defined loggers.</overloads>\r\n            <summary>\r\n            Returns all the currently defined loggers in the default repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>The root logger is <b>not</b> included in the returned array.</para>\r\n            </remarks>\r\n            <returns>All the defined loggers.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <remarks>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </remarks>\r\n            <returns>All the defined loggers.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified assembly's repository.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <remarks>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </remarks>\r\n            <returns>All the defined loggers.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String)\">\r\n            <overloads>Get or create a logger.</overloads>\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Retrieves a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Retrieve a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Retrieve a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Get the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Shutdown\">\r\n            <summary>\r\n            Shuts down the log4net system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in all the\r\n            default repositories.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository\">\r\n            <overloads>Shutdown a logger repository.</overloads>\r\n            <summary>\r\n            Shuts down the default repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            default repository.\r\n            </para>\r\n            <para>Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.String)\">\r\n            <summary>\r\n            Shuts down the repository for the repository specified.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            <paramref name=\"repository\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to shutdown.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Shuts down the repository specified.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            repository. The repository is looked up using\r\n            the <paramref name=\"repositoryAssembly\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration\">\r\n            <overloads>Reset the configuration of a repository</overloads>\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository\">\r\n            <overloads>Get the logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository\">\r\n            <overloads>Get a logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Type)\">\r\n            <overloads>Create a domain</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Type)\">\r\n            <overloads>Create a logger repository.</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets the list of currently defined repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get an array of all the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects that have been created.\r\n            </para>\r\n            </remarks>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLogger(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Looks up the wrapper object for the logger specified.\r\n            </summary>\r\n            <param name=\"logger\">The logger to get the wrapper for.</param>\r\n            <returns>The wrapper for the logger specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLoggers(log4net.Core.ILogger[])\">\r\n            <summary>\r\n            Looks up the wrapper objects for the loggers specified.\r\n            </summary>\r\n            <param name=\"loggers\">The loggers to get the wrappers for.</param>\r\n            <returns>The wrapper objects for the loggers specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapperCreationHandler(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects used by\r\n            this manager.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <returns>The wrapper for the logger specified.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.LogManager.s_wrapperMap\">\r\n            <summary>\r\n            The wrapper map to use to hold the <see cref=\"T:log4net.Core.LogImpl\"/> objects.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.MDC\">\r\n            <summary>\r\n            Implementation of Mapped Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The MDC class is similar to the <see cref=\"T:log4net.NDC\"/> class except that it is\r\n            based on a map instead of a stack. It provides <i>mapped\r\n            diagnostic contexts</i>. A <i>Mapped Diagnostic Context</i>, or\r\n            MDC in short, is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The MDC is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.MDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Get(System.String)\">\r\n            <summary>\r\n            Gets the context value identified by the <paramref name=\"key\"/> parameter.\r\n            </summary>\r\n            <param name=\"key\">The key to lookup in the MDC.</param>\r\n            <returns>The string value held for the key, or a <c>null</c> reference if no corresponding value is found.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            If the <paramref name=\"key\"/> parameter does not look up to a\r\n            previously defined context then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Set(System.String,System.String)\">\r\n            <summary>\r\n            Add an entry to the MDC\r\n            </summary>\r\n            <param name=\"key\">The key to store the value under.</param>\r\n            <param name=\"value\">The value to store.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Puts a context value (the <paramref name=\"value\"/> parameter) as identified\r\n            with the <paramref name=\"key\"/> parameter into the current thread's\r\n            context map.\r\n            </para>\r\n            <para>\r\n            If a value is already defined for the <paramref name=\"key\"/>\r\n            specified then the value will be replaced. If the <paramref name=\"value\"/> \r\n            is specified as <c>null</c> then the key value mapping will be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Remove(System.String)\">\r\n            <summary>\r\n            Removes the key value mapping for the key specified.\r\n            </summary>\r\n            <param name=\"key\">The key to remove.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the specified entry from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Clear\">\r\n            <summary>\r\n            Clear all entries in the MDC\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove all the entries from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.NDC\">\r\n            <summary>\r\n            Implementation of Nested Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            A Nested Diagnostic Context, or NDC in short, is an instrument\r\n            to distinguish interleaved log output from different sources. Log\r\n            output is typically interleaved when a server handles multiple\r\n            clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            Interleaved log output can still be meaningful if each log entry\r\n            from different contexts had a distinctive stamp. This is where NDCs\r\n            come into play.\r\n            </para>\r\n            <para>\r\n            Note that NDCs are managed on a per thread basis. The NDC class\r\n            is made up of static methods that operate on the context of the\r\n            calling thread.\r\n            </para>\r\n            </remarks>\r\n            <example>How to push a message into the context\r\n            <code lang=\"C#\">\r\n            using(NDC.Push(\"my context message\"))\r\n            {\r\n            \t... all log calls will have 'my context message' included ...\r\n            \r\n            } // at the end of the using block the message is automatically removed \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.NDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held on the current thread.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Clears the stack of NDC data held on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.CloneStack\">\r\n            <summary>\r\n            Creates a clone of the stack of context information.\r\n            </summary>\r\n            <returns>A clone of the context info for this thread.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The results of this method can be passed to the <see cref=\"M:log4net.NDC.Inherit(System.Collections.Stack)\"/> \r\n            method to allow child threads to inherit the context of their \r\n            parent thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Inherit(System.Collections.Stack)\">\r\n            <summary>\r\n            Inherits the contextual information from another thread.\r\n            </summary>\r\n            <param name=\"stack\">The context stack to inherit.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This thread will use the context information from the stack\r\n            supplied. This can be used to initialize child threads with\r\n            the same contextual information as their parent threads. These\r\n            contexts will <b>NOT</b> be shared. Any further contexts that\r\n            are pushed onto the stack will not be visible to the other.\r\n            Call <see cref=\"M:log4net.NDC.CloneStack\"/> to obtain a stack to pass to\r\n            this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Pop\">\r\n            <summary>\r\n            Removes the top context from the stack.\r\n            </summary>\r\n            <returns>\r\n            The message in the context that was removed from the top \r\n            of the stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the top context from the stack, and return\r\n            it to the caller. If the stack is empty then an\r\n            empty string (not <c>null</c>) is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up \r\n            the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Pushes a new context onto the context stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up the context stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.NDC.Push(\"NDC_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an NDC message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Remove\">\r\n            <summary>\r\n            Removes the context information for this thread. It is\r\n            not required to call this method.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This method is not implemented.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.SetMaxDepth(System.Int32)\">\r\n            <summary>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            </summary>\r\n            <param name=\"maxDepth\">The maximum depth of the stack</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            This may truncate the head of the stack. This only affects the \r\n            stack in the current thread. Also it does not prevent it from\r\n            growing, it only sets the maximum depth at the time of the\r\n            call. This can be used to return to a known context depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.NDC.Depth\">\r\n            <summary>\r\n            Gets the current context depth.\r\n            </summary>\r\n            <value>The current context depth.</value>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The number of context values pushed onto the context stack.\r\n            </para>\r\n            <para>\r\n            Used to record the current depth of the context. This can then \r\n            be restored using the <see cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.ThreadContext\">\r\n            <summary>\r\n            The log4net Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> provides a location for thread specific debugging \r\n            information to be stored.\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The thread context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Thread Context provides a diagnostic context for the current thread. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Thread Context is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            ThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a ThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(ThreadContext.Stacks[\"NDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a ThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.ThreadContext.#ctor\">\r\n            <summary>\r\n            Private Constructor. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_properties\">\r\n            <summary>\r\n            The thread context properties instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_stacks\">\r\n            <summary>\r\n            The thread context stacks instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Stacks\">\r\n            <summary>\r\n            The thread stacks\r\n            </summary>\r\n            <value>\r\n            stack map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The thread local stacks.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n    </members>\r\n</doc>\r\n"
  },
  {
    "path": "Tools/ThirdParty/log4net/4.0/release/log4net.xml",
    "content": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>log4net</name>\r\n    </assembly>\r\n    <members>\r\n        <member name=\"T:log4net.Appender.AdoNetAppender\">\r\n            <summary>\r\n            Appender that logs to a database.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> appends logging events to a table within a\r\n            database. The appender can be configured to specify the connection \r\n            string by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionString\"/> property. \r\n            The connection type (provider) can be specified by setting the <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/>\r\n            property. For more information on database connection strings for\r\n            your specific database see <a href=\"http://www.connectionstrings.com/\">http://www.connectionstrings.com/</a>.\r\n            </para>\r\n            <para>\r\n            Records are written into the database either using a prepared\r\n            statement or a stored procedure. The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property\r\n            is set to <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement\r\n            or to <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored\r\n            procedure.\r\n            </para>\r\n            <para>\r\n            The prepared statement text or the name of the stored procedure\r\n            must be set in the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property.\r\n            </para>\r\n            <para>\r\n            The prepared statement or stored procedure can take a number\r\n            of parameters. Parameters are added using the <see cref=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\"/>\r\n            method. This adds a single <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> to the\r\n            ordered list of parameters. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/>\r\n            type may be subclassed if required to provide database specific\r\n            functionality. The <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> specifies\r\n            the parameter name, database type, size, and how the value should\r\n            be generated using a <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            An example of a SQL Server table that could be logged to:\r\n            <code lang=\"SQL\">\r\n            CREATE TABLE [dbo].[Log] ( \r\n              [ID] [int] IDENTITY (1, 1) NOT NULL ,\r\n              [Date] [datetime] NOT NULL ,\r\n              [Thread] [varchar] (255) NOT NULL ,\r\n              [Level] [varchar] (20) NOT NULL ,\r\n              [Logger] [varchar] (255) NOT NULL ,\r\n              [Message] [varchar] (4000) NOT NULL \r\n            ) ON [PRIMARY]\r\n            </code>\r\n            </example>\r\n            <example>\r\n            An example configuration to log to the above table:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"AdoNetAppender_SqlServer\" type=\"log4net.Appender.AdoNetAppender\">\r\n              <connectionType value=\"System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"/>\r\n              <connectionString value=\"data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa\"/>\r\n              <commandText value=\"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)\"/>\r\n              <parameter>\r\n                <parameterName value=\"@log_date\"/>\r\n                <dbType value=\"DateTime\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@thread\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%thread\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@log_level\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"50\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%level\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@logger\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"255\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%logger\"/>\r\n              </parameter>\r\n              <parameter>\r\n                <parameterName value=\"@message\"/>\r\n                <dbType value=\"String\"/>\r\n                <size value=\"4000\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%message\"/>\r\n              </parameter>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Lance Nehring</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingAppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/> that \r\n            buffers events in a fixed size buffer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This base class should be used by appenders that need to buffer a \r\n            number of events before logging them. For example the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            buffers events and then submits the entire contents of the buffer to \r\n            the underlying database in one go.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>\r\n            method to deliver the buffered events.\r\n            </para>\r\n            <para>The BufferingAppenderSkeleton maintains a fixed size cyclic \r\n            buffer of events. The size of the buffer is set using \r\n            the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> property.\r\n            </para>\r\n            <para>A <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> is used to inspect \r\n            each event as it arrives in the appender. If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> \r\n            triggers, then the current buffer is sent immediately \r\n            (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>). Otherwise the event \r\n            is stored in the buffer. For example, an evaluator can be used to \r\n            deliver the events immediately when an ERROR event arrives.\r\n            </para>\r\n            <para>\r\n            The buffering appender can be configured in a <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode. \r\n            By default the appender is NOT lossy. When the buffer is full all \r\n            the buffered events are sent with <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property is set to <c>true</c> then the \r\n            buffer will not be sent when it is full, and new events arriving \r\n            in the appender will overwrite the oldest event in the buffer. \r\n            In lossy mode the buffer will only be sent when the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/>\r\n            triggers. This can be useful behavior when you need to know about \r\n            ERROR events but not about events with a lower level, configure an \r\n            evaluator that will trigger when an ERROR event arrives, the whole \r\n            buffer will be sent which gives a history of events leading up to\r\n            the ERROR event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderSkeleton\">\r\n            <summary>\r\n            Abstract base class implementation of <see cref=\"T:log4net.Appender.IAppender\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the code for common functionality, such \r\n            as support for threshold filtering and support for general filters.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.IAppender\">\r\n            <summary>\r\n            Implement this interface for your own strategies for printing log statements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementors should consider extending the <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>\r\n            class which provides a default implementation of this interface.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.Close\">\r\n            <summary>\r\n            Closes the appender and releases resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logging event in Appender specific way.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called to log a message into this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.IAppender.Name\">\r\n            <summary>\r\n            Gets or sets the name of this appender.\r\n            </summary>\r\n            <value>The name of the appender.</value>\r\n            <remarks>\r\n            <para>The name uniquely identifies the appender.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.IBulkAppender\">\r\n            <summary>\r\n            Interface for appenders that support bulk logging.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface extends the <see cref=\"T:log4net.Appender.IAppender\"/> interface to\r\n            support bulk logging of <see cref=\"T:log4net.Core.LoggingEvent\"/> objects. Appenders\r\n            should only implement this interface if they can bulk log efficiently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Log the array of logging events in Appender specific way.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The events to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called to log an array of events into this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IOptionHandler\">\r\n            <summary>\r\n            Interface used to delay activate a configured object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This allows an object to defer activation of its options until all\r\n            options have been set. This is required for components which have\r\n            related options that remain ambiguous until all are set.\r\n            </para>\r\n            <para>\r\n            If a component implements this interface then the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method \r\n            must be called by the container after its all the configured properties have been set \r\n            and before the component can be used.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IOptionHandler.ActivateOptions\">\r\n            <summary>\r\n            Activate the options that were previously set with calls to properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This allows an object to defer activation of its options until all\r\n            options have been set. This is required for components which have\r\n            related options that remain ambiguous until all are set.\r\n            </para>\r\n            <para>\r\n            If a component implements this interface then this method must be called\r\n            after its properties have been set before the component can be used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferSize\">\r\n            <summary>\r\n            Initial buffer size\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity\">\r\n            <summary>\r\n            Maximum buffer size before it is recycled\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>Empty default constructor</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Finalize\">\r\n            <summary>\r\n            Finalizes this appender by calling the implementation's \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If this appender has not been closed then the <c>Finalize</c> method\r\n            will call <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Close\">\r\n            <summary>\r\n            Closes the appender and release resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            <para>\r\n            This method cannot be overridden by subclasses. This method \r\n            delegates the closing of the appender to the <see cref=\"M:log4net.Appender.AppenderSkeleton.OnClose\"/>\r\n            method which must be overridden in the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvent\"/>\r\n            will be passed to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Performs threshold checks and invokes filters before \r\n            delegating actual logging to the subclasses specific \r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method cannot be overridden by derived classes. A\r\n            derived class should override the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method\r\n            which is called by this method.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvents\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvents\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tCalls <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> and checks that \r\n            \t\tit returns <c>true</c>.</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            If all of the above steps succeed then the <paramref name=\"loggingEvents\"/>\r\n            will be passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.FilterEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Test if the logging event should we output by this appender\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to test</param>\r\n            <returns><c>true</c> if the event should be output, <c>false</c> if the event should be ignored</returns>\r\n            <remarks>\r\n            <para>\r\n            This method checks the logging event against the threshold level set\r\n            on this appender and also against the filters specified on this\r\n            appender.\r\n            </para>\r\n            <para>\r\n            The implementation of this method is as follows:\r\n            </para>\r\n            <para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the severity of the <paramref name=\"loggingEvent\"/>\r\n            \t\tis greater than or equal to the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> of this\r\n            \t\tappender.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>\r\n            \t\tChecks that the <see cref=\"T:log4net.Filter.IFilter\"/> chain accepts the \r\n            \t\t<paramref name=\"loggingEvent\"/>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.AddFilter(log4net.Filter.IFilter)\">\r\n            <summary>\r\n            Adds a filter to the end of the filter chain.\r\n            </summary>\r\n            <param name=\"filter\">the filter to add to this appender</param>\r\n            <remarks>\r\n            <para>\r\n            The Filters are organized in a linked list.\r\n            </para>\r\n            <para>\r\n            Setting this property causes the new filter to be pushed onto the \r\n            back of the filter chain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.ClearFilters\">\r\n            <summary>\r\n            Clears the filter list for this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears the filter list for this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.IsAsSevereAsThreshold(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if the message level is below this appender's threshold.\r\n            </summary>\r\n            <param name=\"level\"><see cref=\"T:log4net.Core.Level\"/> to test against.</param>\r\n            <remarks>\r\n            <para>\r\n            If there is no threshold set, then the return value is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the <paramref name=\"level\"/> meets the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> \r\n            requirements of this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.OnClose\">\r\n            <summary>\r\n            Is called when the appender is closed. Derived classes should override \r\n            this method if resources need to be released.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Subclasses of <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> should implement this method \r\n            to perform actual logging.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to append.</param>\r\n            <remarks>\r\n            <para>\r\n            A subclass must implement this method to perform\r\n            logging of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            <para>This method will be called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            if all the conditions listed for that method are met.\r\n            </para>\r\n            <para>\r\n            To restrict the logging of events in the appender\r\n            override the <see cref=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append a bulk array of logging events.\r\n            </summary>\r\n            <param name=\"loggingEvents\">the array of logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This base class implementation calls the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>\r\n            method for each element in the bulk array.\r\n            </para>\r\n            <para>\r\n            A sub class that can better process a bulk array of events should\r\n            override this method in addition to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.PreAppendCheck\">\r\n            <summary>\r\n            Called before <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> as a precondition.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called by <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            before the call to the abstract <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden in a subclass to extend the checks \r\n            made before the event is passed to the <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            A subclass should ensure that they delegate this call to\r\n            this base class if it is overridden.\r\n            </para>\r\n            </remarks>\r\n            <returns><c>true</c> if the call to <see cref=\"M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)\"/> should proceed.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <returns>The event rendered as a string.</returns>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Where possible use the alternative version of this method\r\n            <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>.\r\n            That method streams the rendering onto an existing Writer\r\n            which can give better performance if the caller already has\r\n            a <see cref=\"T:System.IO.TextWriter\"/> open and ready for writing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the <see cref=\"T:log4net.Core.LoggingEvent\"/> to a string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to render.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Helper method to render a <see cref=\"T:log4net.Core.LoggingEvent\"/> to \r\n            a string. This appender must have a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/>\r\n            set to render the <paramref name=\"loggingEvent\"/> to \r\n            a string.\r\n            </para>\r\n            <para>If there is exception data in the logging event and \r\n            the layout does not process the exception, this method \r\n            will append the exception text to the rendered string.\r\n            </para>\r\n            <para>\r\n            Use this method in preference to <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/>\r\n            where possible. If, however, the caller needs to render the event\r\n            to a string then <see cref=\"M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)\"/> does\r\n            provide an efficient mechanism for doing so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_layout\">\r\n            <summary>\r\n            The layout of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_name\">\r\n            <summary>\r\n            The name of this appender.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Name\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_threshold\">\r\n            <summary>\r\n            The level threshold of this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            There is no level threshold filtering by default.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_errorHandler\">\r\n            <summary>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            It is assumed and enforced that errorHandler is never null.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_headFilter\">\r\n            <summary>\r\n            The first filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Set to <c>null</c> initially.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_tailFilter\">\r\n            <summary>\r\n            The last filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"T:log4net.Filter.IFilter\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_closed\">\r\n            <summary>\r\n            Flag indicating if this appender is closed.\r\n            </summary>\r\n            <remarks>\r\n            See <see cref=\"M:log4net.Appender.AppenderSkeleton.Close\"/> for more information.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_recursiveGuard\">\r\n            <summary>\r\n            The guard prevents an appender from repeatedly calling its own DoAppend method\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.m_renderWriter\">\r\n            <summary>\r\n            StringWriter used to render events\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderSkeleton.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the AppenderSkeleton class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Threshold\">\r\n            <summary>\r\n            Gets or sets the threshold <see cref=\"T:log4net.Core.Level\"/> of this appender.\r\n            </summary>\r\n            <value>\r\n            The threshold <see cref=\"T:log4net.Core.Level\"/> of the appender. \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            All log events with lower level than the threshold level are ignored \r\n            by the appender.\r\n            </para>\r\n            <para>\r\n            In configuration files this option is specified by setting the\r\n            value of the <see cref=\"P:log4net.Appender.AppenderSkeleton.Threshold\"/> option to a level\r\n            string, such as \"DEBUG\", \"INFO\" and so on.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </summary>\r\n            <value>The <see cref=\"T:log4net.Core.IErrorHandler\"/> of the appender</value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.AppenderSkeleton\"/> provides a default \r\n            implementation for the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/> property. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.FilterHead\">\r\n            <summary>\r\n            The filter chain.\r\n            </summary>\r\n            <value>The head of the filter chain filter chain.</value>\r\n            <remarks>\r\n            <para>\r\n            Returns the head Filter. The Filters are organized in a linked list\r\n            and so all Filters on this Appender are available through the result.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.ILayout\"/> for this appender.\r\n            </summary>\r\n            <value>The layout of the appender.</value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.Name\">\r\n            <summary>\r\n            Gets or sets the name of this appender.\r\n            </summary>\r\n            <value>The name of the appender.</value>\r\n            <remarks>\r\n            <para>\r\n            The name uniquely identifies the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderSkeleton.RequiresLayout\">\r\n            <summary>\r\n            Tests if this appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            In the rather exceptional case, where the appender \r\n            implementation admits a layout but can also work without it, \r\n            then the appender should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This default implementation always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <c>true</c> if the appender requires a layout object, otherwise <c>false</c>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\">\r\n            <summary>\r\n            The default buffer size.\r\n            </summary>\r\n            <remarks>\r\n            The default size of the cyclic buffer used to store events.\r\n            This is set to 512 by default.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Protected default constructor to allow subclassing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> class.\r\n            </summary>\r\n            <param name=\"eventMustBeFixed\">the events passed through this appender must be\r\n            fixed by the time that they arrive in the derived class' <c>SendBuffer</c> method.</param>\r\n            <remarks>\r\n            <para>\r\n            Protected constructor to allow subclassing.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"eventMustBeFixed\"/> should be set if the subclass\r\n            expects the events delivered to be fixed even if the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to zero, i.e. when no buffering occurs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flushes any events that have been buffered.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will NOT be flushed to the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Flush(System.Boolean)\">\r\n            <summary>\r\n            Flush the currently buffered events\r\n            </summary>\r\n            <param name=\"flushLossyBuffer\">set to <c>true</c> to flush the buffer of lossy events</param>\r\n            <remarks>\r\n            <para>\r\n            Flushes events that have been buffered. If <paramref name=\"flushLossyBuffer\"/> is\r\n            <c>false</c> then events will only be flushed if this buffer is non-lossy mode.\r\n            </para>\r\n            <para>\r\n            If the appender is buffering in <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> mode then the contents\r\n            of the buffer will only be flushed if <paramref name=\"flushLossyBuffer\"/> is <c>true</c>.\r\n            In this case the contents of the buffer will be tested against the \r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\"/> and if triggering will be output. All other buffered\r\n            events will be discarded.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"flushLossyBuffer\"/> is <c>true</c> then the buffer will always\r\n            be emptied by calling this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.OnClose\">\r\n            <summary>\r\n            Close this appender instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close this appender instance. If this appender is marked\r\n            as not <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> then the remaining events in \r\n            the buffer must be sent when the appender is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Stores the <paramref name=\"loggingEvent\"/> in the cyclic buffer.\r\n            </para>\r\n            <para>\r\n            The buffer will be sent (i.e. passed to the <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/> \r\n            method) if one of the following conditions is met:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>The cyclic buffer is full and this appender is\r\n            \t\tmarked as not lossy (see <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>)</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>An <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> is set and\r\n            \t\tit is triggered for the <paramref name=\"loggingEvent\"/>\r\n            \t\tspecified.</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Before the event is stored in the buffer it is fixed\r\n            (see <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/>) to ensure that\r\n            any data referenced by the event will be valid when the buffer\r\n            is processed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendFromBuffer(log4net.Core.LoggingEvent,log4net.Util.CyclicBuffer)\">\r\n            <summary>\r\n            Sends the contents of the buffer.\r\n            </summary>\r\n            <param name=\"firstLoggingEvent\">The first logging event.</param>\r\n            <param name=\"buffer\">The buffer containing the events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            The subclass must override <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Sends the events.\r\n            </summary>\r\n            <param name=\"events\">The events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            The subclass must override this method to process the buffered events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_bufferSize\">\r\n            <summary>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </summary>\r\n            <remarks>\r\n            Set to <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE\"/> by default.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_cb\">\r\n            <summary>\r\n            The cyclic buffer used to store the logging events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_evaluator\">\r\n            <summary>\r\n            The triggering event evaluator that causes the buffer to be sent immediately.\r\n            </summary>\r\n            <remarks>\r\n            The object that is used to determine if an event causes the entire\r\n            buffer to be sent immediately. This field can be <c>null</c>, which \r\n            indicates that event triggering is not to be done. The evaluator\r\n            can be set using the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> property. If this appender\r\n            has the <see cref=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\"/> (<see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> property) set to \r\n            <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossy\">\r\n            <summary>\r\n            Indicates if the appender should overwrite events in the cyclic buffer \r\n            when it becomes full, or if the buffer should be flushed when the \r\n            buffer is full.\r\n            </summary>\r\n            <remarks>\r\n            If this field is set to <c>true</c> then an <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must \r\n            be set.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_lossyEvaluator\">\r\n            <summary>\r\n            The triggering event evaluator filters discarded events.\r\n            </summary>\r\n            <remarks>\r\n            The object that is used to determine if an event that is discarded should\r\n            really be discarded or if it should be sent to the appenders. \r\n            This field can be <c>null</c>, which indicates that all discarded events will\r\n            be discarded. \r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_fixFlags\">\r\n            <summary>\r\n            Value indicating which fields in the event should be fixed\r\n            </summary>\r\n            <remarks>\r\n            By default all fields are fixed\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingAppenderSkeleton.m_eventMustBeFixed\">\r\n            <summary>\r\n            The events delivered to the subclass must be fixed.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender is lossy.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender is lossy, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This appender uses a buffer to store logging events before \r\n            delivering them. A triggering event causes the whole buffer\r\n            to be send to the remote sink. If the buffer overruns before\r\n            a triggering event then logging events could be lost. Set\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> to <c>false</c> to prevent logging events \r\n            from being lost.\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\">\r\n            <summary>\r\n            Gets or sets the size of the cyclic buffer used to hold the \r\n            logging events.\r\n            </summary>\r\n            <value>\r\n            The size of the cyclic buffer used to hold the logging events.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option takes a positive integer\r\n            representing the maximum number of logging events to collect in \r\n            a cyclic buffer. When the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is reached,\r\n            oldest events are deleted as new events are added to the\r\n            buffer. By default the size of the cyclic buffer is 512 events.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> is set to a value less than\r\n            or equal to 1 then no buffering will occur. The logging event\r\n            will be delivered synchronously (depending on the <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/>\r\n            and <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> properties). Otherwise the event will\r\n            be buffered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the \r\n            buffer to be sent immediately.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> that causes the buffer to be\r\n            sent immediately.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is appended to this \r\n            appender. If the evaluator triggers then the current buffer will \r\n            immediately be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            <para>If <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Lossy\"/> is set to <c>true</c> then an\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.Evaluator\"/> must be specified.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator\">\r\n            <summary>\r\n            Gets or sets the value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </summary>\r\n            <value>\r\n            The value of the <see cref=\"T:log4net.Core.ITriggeringEventEvaluator\"/> to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The evaluator will be called for each event that is discarded from this \r\n            appender. If the evaluator triggers then the current buffer will immediately \r\n            be sent (see <see cref=\"M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating if only part of the logging event data\r\n            should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the\r\n            event data to be fixed and serialized. This will improve performance.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingAppenderSkeleton.Fix\">\r\n            <summary>\r\n            Gets or sets a the fields that will be fixed in the event\r\n            </summary>\r\n            <value>\r\n            The event fields that will be fixed before the event is buffered\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.#ctor\">\r\n            <summary> \r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Public default constructor to initialize a new instance of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.AdoNetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.OnClose\">\r\n            <summary>\r\n            Override the parent method to close the database\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the database command and database connection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Inserts the events into the database.\r\n            </summary>\r\n            <param name=\"events\">The events to insert into the database.</param>\r\n            <remarks>\r\n            <para>\r\n            Insert all the events specified in the <paramref name=\"events\"/>\r\n            array into the database.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)\">\r\n            <summary>\r\n            Adds a parameter to the command.\r\n            </summary>\r\n            <param name=\"parameter\">The parameter to add to the command.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a parameter to the ordered list of command parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.SendBuffer(System.Data.IDbTransaction,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Writes the events to the database using the transaction specified.\r\n            </summary>\r\n            <param name=\"dbTran\">The transaction that the events will be executed under.</param>\r\n            <param name=\"events\">The array of events to insert into the database.</param>\r\n            <remarks>\r\n            <para>\r\n            The transaction argument can be <c>null</c> if the appender has been\r\n            configured not to use transactions. See <see cref=\"P:log4net.Appender.AdoNetAppender.UseTransactions\"/>\r\n            property for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.GetLogStatement(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Formats the log message into database statement text.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            This method can be overridden by subclasses to provide \r\n            more control over the format of the database statement.\r\n            </remarks>\r\n            <returns>\r\n            Text that can be passed to a <see cref=\"T:System.Data.IDbCommand\"/>.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.CreateConnection(System.Type,System.String)\">\r\n            <summary>\r\n            Creates an <see cref=\"T:System.Data.IDbConnection\"/> instance used to connect to the database.\r\n            </summary>\r\n            <remarks>\r\n            This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary).\r\n            </remarks>\r\n            <param name=\"connectionType\">The <see cref=\"T:System.Type\"/> of the <see cref=\"T:System.Data.IDbConnection\"/> object.</param>\r\n            <param name=\"connectionString\">The connectionString output from the ResolveConnectionString method.</param>\r\n            <returns>An <see cref=\"T:System.Data.IDbConnection\"/> instance with a valid connection string.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionString(System.String@)\">\r\n            <summary>\r\n            Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey\r\n            property.\r\n            </summary>\r\n            <remarks>\r\n            ConnectiongStringName is only supported on .NET 2.0 and higher.\r\n            </remarks>\r\n            <param name=\"connectionStringContext\">Additional information describing the connection string.</param>\r\n            <returns>A connection string used to connect to the database.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.ResolveConnectionType\">\r\n            <summary>\r\n            Retrieves the class type of the ADO.NET provider.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the Type of the ADO.NET provider to use to connect to the\r\n            database. This method resolves the type specified in the \r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> property.\r\n            </para>\r\n            <para>\r\n            Subclasses can override this method to return a different type\r\n            if necessary.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:System.Type\"/> of the ADO.NET provider</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseCommand\">\r\n            <summary>\r\n            Prepares the database command and initialize the parameters.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.InitializeDatabaseConnection\">\r\n            <summary>\r\n            Connects to the database.\r\n            </summary>\t\t\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DisposeCommand(System.Boolean)\">\r\n            <summary>\r\n            Cleanup the existing command.\r\n            </summary>\r\n            <param name=\"ignoreException\">\r\n            If true, a message will be written using LogLog.Warn if an exception is encountered when calling Dispose.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppender.DiposeConnection\">\r\n            <summary>\r\n            Cleanup the existing connection.\r\n            </summary>\r\n            <remarks>\r\n            Calls the IDbConnection's <see cref=\"M:System.Data.IDbConnection.Close\"/> method.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_usePreparedCommand\">\r\n            <summary>\r\n            Flag to indicate if we are using a command object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Set to <c>true</c> when the appender is to use a prepared\r\n            statement or stored procedure to insert into the database.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_parameters\">\r\n            <summary>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The list of <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbConnection\">\r\n            <summary>\r\n            The <see cref=\"T:System.Data.IDbConnection\"/> that will be used\r\n            to insert logging events into a database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_dbCommand\">\r\n            <summary>\r\n            The database command.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionString\">\r\n            <summary>\r\n            Database connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_appSettingsKey\">\r\n            <summary>\r\n            The appSettings key from App.Config that contains the connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionStringName\">\r\n            <summary>\r\n            The connectionStrings key from App.Config that contains the connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_connectionType\">\r\n            <summary>\r\n            String type name of the <see cref=\"T:System.Data.IDbConnection\"/> type name.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandText\">\r\n            <summary>\r\n            The text of the command.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_commandType\">\r\n            <summary>\r\n            The command type.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_useTransactions\">\r\n            <summary>\r\n            Indicates whether to use transactions when writing to the database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.m_reconnectOnError\">\r\n            <summary>\r\n            Indicates whether to use transactions when writing to the database.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the AdoNetAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionString\">\r\n            <summary>\r\n            Gets or sets the database connection string that is used to connect to \r\n            the database.\r\n            </summary>\r\n            <value>\r\n            The database connection string used to connect to the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The connections string is specific to the connection type.\r\n            See <see cref=\"P:log4net.Appender.AdoNetAppender.ConnectionType\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>Connection string for MS Access via ODBC:\r\n            <code>\"DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\\data\\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\\data\\train33.mdb\"</code>\r\n            </example>\r\n            <example>Another connection string for MS Access via ODBC:\r\n            <code>\"Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;UID=;PWD=;\"</code>\r\n            </example>\r\n            <example>Connection string for MS Access via OLE DB:\r\n            <code>\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Work\\cvs_root\\log4net-1.2\\access.mdb;User Id=;Password=;\"</code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.AppSettingsKey\">\r\n            <summary>\r\n            The appSettings key from App.Config that contains the connection string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionStringName\">\r\n            <summary>\r\n            The connectionStrings key from App.Config that contains the connection string.\r\n            </summary>\r\n            <remarks>\r\n            This property requires at least .NET 2.0.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ConnectionType\">\r\n            <summary>\r\n            Gets or sets the type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection\r\n            that should be created.\r\n            </summary>\r\n            <value>\r\n            The type name of the <see cref=\"T:System.Data.IDbConnection\"/> connection.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name of the ADO.NET provider to use.\r\n            </para>\r\n            <para>\r\n            The default is to use the OLE DB provider.\r\n            </para>\r\n            </remarks>\r\n            <example>Use the OLE DB Provider. This is the default value.\r\n            <code>System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the MS SQL Server Provider. \r\n            <code>System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            </example>\r\n            <example>Use the ODBC Provider. \r\n            <code>Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>ODBC .NET Data Provider</b>.\r\n            </example>\r\n            <example>Use the Oracle Provider. \r\n            <code>System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>\r\n            This is an optional package that you can download from \r\n            <a href=\"http://msdn.microsoft.com/downloads\">http://msdn.microsoft.com/downloads</a> \r\n            search for <b>.NET Managed Provider for Oracle</b>.\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandText\">\r\n            <summary>\r\n            Gets or sets the command text that is used to insert logging events\r\n            into the database.\r\n            </summary>\r\n            <value>\r\n            The command text used to insert logging events into the database.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Either the text of the prepared statement or the\r\n            name of the stored procedure to execute to write into\r\n            the database.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.CommandType\"/> property determines if\r\n            this text is a prepared statement or a stored procedure.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.CommandType\">\r\n            <summary>\r\n            Gets or sets the command type to execute.\r\n            </summary>\r\n            <value>\r\n            The command type to execute.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This value may be either <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>) to specify\r\n            that the <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> is a prepared statement to execute, \r\n            or <see cref=\"F:System.Data.CommandType.StoredProcedure\"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify that the\r\n            <see cref=\"P:log4net.Appender.AdoNetAppender.CommandText\"/> property is the name of a stored procedure\r\n            to execute.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:System.Data.CommandType.Text\"/> (<c>System.Data.CommandType.Text</c>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.UseTransactions\">\r\n            <summary>\r\n            Should transactions be used to insert logging events in the database.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if transactions should be used to insert logging events in\r\n            the database, otherwise <c>false</c>. The default value is <c>true</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets a value that indicates whether transactions should be used\r\n            to insert logging events in the database.\r\n            </para>\r\n            <para>\r\n            When set a single transaction will be used to insert the buffered events\r\n            into the database. Otherwise each event will be inserted without using\r\n            an explicit transaction.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.AdoNetAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.ReconnectOnError\">\r\n            <summary>\r\n            Should this appender try to reconnect to the database on error.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should try to reconnect to the database after an\r\n            error has occurred, otherwise <c>false</c>. The default value is <c>false</c>, \r\n            i.e. not to try to reconnect.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default behaviour is for the appender not to try to reconnect to the\r\n            database if an error occurs. Subsequent logging events are discarded.\r\n            </para>\r\n            <para>\r\n            To force the appender to attempt to reconnect to the database set this\r\n            property to <c>true</c>.\r\n            </para>\r\n            <note>\r\n            When the appender attempts to connect to the database there may be a\r\n            delay of up to the connection timeout specified in the connection string.\r\n            This delay will block the calling application's thread. \r\n            Until the connection can be reestablished this potential delay may occur multiple times.\r\n            </note>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppender.Connection\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Data.IDbConnection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.AdoNetAppender\"/> creates a <see cref=\"T:System.Data.IDbConnection\"/> to insert \r\n            logging events into a database.  Classes deriving from <see cref=\"T:log4net.Appender.AdoNetAppender\"/> \r\n            can use this property to get or set this <see cref=\"T:System.Data.IDbConnection\"/>.  Use the \r\n            underlying <see cref=\"T:System.Data.IDbConnection\"/> returned from <see cref=\"P:log4net.Appender.AdoNetAppender.Connection\"/> if \r\n            you require access beyond that which <see cref=\"T:log4net.Appender.AdoNetAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AdoNetAppenderParameter\">\r\n            <summary>\r\n            Parameter type used by the <see cref=\"T:log4net.Appender.AdoNetAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class provides the basic database parameter properties\r\n            as defined by the <see cref=\"T:System.Data.IDbDataParameter\"/> interface.\r\n            </para>\r\n            <para>This type can be subclassed to provide database specific\r\n            functionality. The two methods that are called externally are\r\n            <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\"/> and <see cref=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AdoNetAppenderParameter\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            Default constructor for the AdoNetAppenderParameter class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)\">\r\n            <summary>\r\n            Prepare the specified database command object.\r\n            </summary>\r\n            <param name=\"command\">The command to prepare.</param>\r\n            <remarks>\r\n            <para>\r\n            Prepares the database command object by adding\r\n            this parameter to its collection of parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Renders the logging event and set the parameter value in the command.\r\n            </summary>\r\n            <param name=\"command\">The command containing the parameter.</param>\r\n            <param name=\"loggingEvent\">The event to be rendered.</param>\r\n            <remarks>\r\n            <para>\r\n            Renders the logging event using this parameters layout\r\n            object. Sets the value of the parameter on the command object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_parameterName\">\r\n            <summary>\r\n            The name of this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_dbType\">\r\n            <summary>\r\n            The database type for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_inferType\">\r\n            <summary>\r\n            Flag to infer type rather than use the DbType\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_precision\">\r\n            <summary>\r\n            The precision for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_scale\">\r\n            <summary>\r\n            The scale for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_size\">\r\n            <summary>\r\n            The size for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AdoNetAppenderParameter.m_layout\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to render the\r\n            logging event into an object for this parameter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.ParameterName\">\r\n            <summary>\r\n            Gets or sets the name of this parameter.\r\n            </summary>\r\n            <value>\r\n            The name of this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this parameter. The parameter name\r\n            must match up to a named parameter to the SQL stored procedure\r\n            or prepared statement.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\">\r\n            <summary>\r\n            Gets or sets the database type for this parameter.\r\n            </summary>\r\n            <value>\r\n            The database type for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The database type for this parameter. This property should\r\n            be set to the database type from the <see cref=\"P:log4net.Appender.AdoNetAppenderParameter.DbType\"/>\r\n            enumeration. See <see cref=\"P:System.Data.IDataParameter.DbType\"/>.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the type from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDataParameter.DbType\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Precision\">\r\n            <summary>\r\n            Gets or sets the precision for this parameter.\r\n            </summary>\r\n            <value>\r\n            The precision for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum number of digits used to represent the Value.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the precision from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Precision\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Scale\">\r\n            <summary>\r\n            Gets or sets the scale for this parameter.\r\n            </summary>\r\n            <value>\r\n            The scale for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The number of decimal places to which Value is resolved.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the scale from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Scale\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Size\">\r\n            <summary>\r\n            Gets or sets the size for this parameter.\r\n            </summary>\r\n            <value>\r\n            The size for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The maximum size, in bytes, of the data within the column.\r\n            </para>\r\n            <para>\r\n            This property is optional. If not specified the ADO.NET provider \r\n            will attempt to infer the size from the value.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:System.Data.IDbDataParameter.Size\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AdoNetAppenderParameter.Layout\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Layout.IRawLayout\"/> to use to \r\n            render the logging event into an object for this \r\n            parameter.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> used to render the\r\n            logging event into an object for this parameter.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.IRawLayout\"/> that renders the value for this\r\n            parameter.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.RawLayoutConverter\"/> can be used to adapt\r\n            any <see cref=\"T:log4net.Layout.ILayout\"/> into a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            for use in the property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender\">\r\n            <summary>\r\n            Appends logging events to the terminal using ANSI color escape sequences.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            AnsiColorTerminalAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific level of message to be set.\r\n            </para>\r\n            <note>\r\n            This appender expects the terminal to understand the VT100 control set \r\n            in order to interpret the color codes. If the terminal or console does not\r\n            understand the control codes the behavior is not defined.\r\n            </note>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            <para>\r\n            When configuring the ANSI colored terminal appender, a mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red\"/>\r\n                <attributes value=\"Bright,Underscore\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            </list>\r\n            These color values cannot be combined together to make new colors.\r\n            </para>\r\n            <para>\r\n            The attributes can be any combination of the following:\r\n            <list type=\"bullet\">\r\n            <item><term>Bright</term><description>foreground is brighter</description></item>\r\n            <item><term>Dim</term><description>foreground is dimmer</description></item>\r\n            <item><term>Underscore</term><description>message is underlined</description></item>\r\n            <item><term>Blink</term><description>foreground is blinking (does not work on all terminals)</description></item>\r\n            <item><term>Reverse</term><description>foreground and background are reversed</description></item>\r\n            <item><term>Hidden</term><description>output is hidden</description></item>\r\n            <item><term>Strikethrough</term><description>message has a line through it</description></item>\r\n            </list>\r\n            While any of these attributes may be combined together not all combinations\r\n            work well together, for example setting both <i>Bright</i> and <i>Dim</i> attributes makes\r\n            no sense.\r\n            </para>\r\n            </remarks>\r\n            <author>Patrick Wagstrom</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.PostEventCodes\">\r\n            <summary>\r\n            Ansi code to reset terminal\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.AddMapping(log4net.Appender.AnsiColorTerminalAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colours\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for this appender\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize the level to color mappings set on this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_writeToErrorStream\">\r\n            <summary>\r\n            Flag to write output to the error stream rather than the standard output stream\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to color value\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.Target\">\r\n            <summary>\r\n            Target is the value of the console output stream.\r\n            </summary>\r\n            <value>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes\">\r\n            <summary>\r\n            The enum of possible display attributes\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the ANSI color attributes.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Bright\">\r\n            <summary>\r\n            text is bright\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Dim\">\r\n            <summary>\r\n            text is dim\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Underscore\">\r\n            <summary>\r\n            text is underlined\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Blink\">\r\n            <summary>\r\n            text is blinking\r\n            </summary>\r\n            <remarks>\r\n            Not all terminals support this attribute\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Reverse\">\r\n            <summary>\r\n            text and background colors are reversed\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Hidden\">\r\n            <summary>\r\n            text is hidden\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Strikethrough\">\r\n            <summary>\r\n            text is displayed with a strikethrough\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.AnsiColor\">\r\n            <summary>\r\n            The enum of possible foreground or background color values for \r\n            use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The output can be in one for the following ANSI colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.AnsiColorTerminalAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Black\">\r\n            <summary>\r\n            color is black\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Red\">\r\n            <summary>\r\n            color is red\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Green\">\r\n            <summary>\r\n            color is green\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Yellow\">\r\n            <summary>\r\n            color is yellow\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Blue\">\r\n            <summary>\r\n            color is blue\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Magenta\">\r\n            <summary>\r\n            color is magenta\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Cyan\">\r\n            <summary>\r\n            color is cyan\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.White\">\r\n            <summary>\r\n            color is white\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AnsiColorTerminalAppender.LevelColors\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the color it should be displayed as.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the mapping between a level and the color it should be displayed in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMappingEntry\">\r\n            <summary>\r\n            An entry in the <see cref=\"T:log4net.Util.LevelMapping\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract base class for types that are stored in the\r\n            <see cref=\"T:log4net.Util.LevelMapping\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.#ctor\">\r\n            <summary>\r\n            Default protected constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default protected constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMappingEntry.ActivateOptions\">\r\n            <summary>\r\n            Initialize any options defined on this entry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Should be overridden by any classes that need to initialise based on their options\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LevelMappingEntry.Level\">\r\n            <summary>\r\n            The level that is the key for this mapping \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this mapping \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set the <see cref=\"P:log4net.Util.LevelMappingEntry.Level\"/> that is the key for this\r\n            mapping subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> together\r\n            and append the attributes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\">\r\n            <summary>\r\n            The mapped foreground color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped foreground color for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\">\r\n            <summary>\r\n            The mapped background color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped background color for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\">\r\n            <summary>\r\n            The color attributes for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The color attributes for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor\"/>, <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor\"/> and\r\n            <see cref=\"P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes\"/> suitable for setting the ansi terminal color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Appender.IAppender\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ReadOnly(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Creates a read-only wrapper for a <c>AppenderCollection</c> instance.\r\n            </summary>\r\n            <param name=\"list\">list to create a readonly wrapper arround</param>\r\n            <returns>\r\n            An <c>AppenderCollection</c> wrapper that is read-only.\r\n            </returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.EmptyCollection\">\r\n            <summary>\r\n            An empty readonly static AppenderCollection\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that is empty and has the default initial capacity.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Int32)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that has the specified initial capacity.\r\n            </summary>\r\n            <param name=\"capacity\">\r\n            The number of elements that the new <c>AppenderCollection</c> is initially capable of storing.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"c\">The <c>AppenderCollection</c> whose elements are copied to the new collection.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>AppenderCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Appender.IAppender\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection.Tag)\">\r\n            <summary>\r\n            Allow subclasses to avoid our default constructors\r\n            </summary>\r\n            <param name=\"tag\"></param>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>AppenderCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Appender.IAppender\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Appender.IAppender\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Add(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Appender.IAppender\"/> to the end of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clear\">\r\n            <summary>\r\n            Removes all elements from the <c>AppenderCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Appender.AppenderCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Contains(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Appender.IAppender\"/> is in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>AppenderCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IndexOf(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Appender.IAppender\"/>\r\n            in the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to locate in the <c>AppenderCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>AppenderCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Insert(System.Int32,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Inserts an element into the <c>AppenderCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Remove(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Appender.IAppender\"/> from the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Appender.IAppender\"/> to remove from the <c>AppenderCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Appender.IAppender\"/> was not found in the <c>AppenderCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>AppenderCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Appender.AppenderCollection.Enumerator\"/> for the entire <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>AppenderCollection</c> to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>AppenderCollection</c> whose elements should be added to the end of the current <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> array to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Appender.IAppender\"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Appender.IAppender\"/> collection to the current <c>AppenderCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Appender.IAppender\"/> collection whose elements should be added to the end of the <c>AppenderCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/> of the <c>AppenderCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.TrimToSize\">\r\n            <summary>\r\n            Sets the capacity to the actual number of elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ToArray\">\r\n            <summary>\r\n            Return the collection elements as an array\r\n            </summary>\r\n            <returns>the array</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements actually contained in the <c>AppenderCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\r\n            </summary>\r\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.IAppender\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            \t<para><paramref name=\"index\"/> is less than zero</para>\r\n            \t<para>-or-</para>\r\n            \t<para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Appender.AppenderCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the collection has a fixed size.\r\n            </summary>\r\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the IList is read-only.\r\n            </summary>\r\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Capacity\">\r\n            <summary>\r\n            Gets or sets the number of elements the <c>AppenderCollection</c> can contain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Tag\">\r\n            <summary>\r\n            Type visible only to our subclasses\r\n            Used to access protected constructor\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AppenderCollection.Tag.Default\">\r\n            <summary>\r\n            A value\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Appender.AppenderCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.#ctor(log4net.Appender.AppenderCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>Enumerator</c> class.\r\n            </summary>\r\n            <param name=\"tc\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AppenderCollection.Enumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AppenderCollection.Enumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AppenderCollection.ReadOnlyAppenderCollection\">\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.AspNetTraceAppender\">\r\n            <summary>\r\n            <para>\r\n            Appends log events to the ASP.NET <see cref=\"T:System.Web.TraceContext\"/> system.\r\n            </para>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Diagnostic information and tracing messages that you specify are appended to the output \r\n            of the page that is sent to the requesting browser. Optionally, you can view this information\r\n            from a separate trace viewer (Trace.axd) that displays trace information for every page in a \r\n            given application.\r\n            </para>\r\n            <para>\r\n            Trace statements are processed and displayed only when tracing is enabled. You can control \r\n            whether tracing is displayed to a page, to the trace viewer, or both.\r\n            </para>\r\n            <para>\r\n            The logging event is passed to the <see cref=\"M:System.Web.TraceContext.Write(System.String)\"/> or \r\n            <see cref=\"M:System.Web.TraceContext.Warn(System.String)\"/> method depending on the level of the logging event.\r\n            The event's logger name is the default value for the category parameter of the Write/Warn method. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.AspNetTraceAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.AspNetTraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the logging event to the ASP.NET trace\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Write the logging event to the ASP.NET trace\r\n            <c>HttpContext.Current.Trace</c> \r\n            (<see cref=\"T:System.Web.TraceContext\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.AspNetTraceAppender.m_category\">\r\n            <summary>\r\n            Defaults to %logger\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.AspNetTraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.BufferingForwardingAppender\">\r\n            <summary>\r\n            Buffers events and then forwards them to attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The events are buffered in this appender until conditions are\r\n            met to allow the appender to deliver the events to the attached \r\n            appenders. See <see cref=\"T:log4net.Appender.BufferingAppenderSkeleton\"/> for the\r\n            conditions that cause the buffer to be sent.\r\n            </para>\r\n            <para>The forwarding appender can be used to specify different \r\n            thresholds and filters for the same appender at different locations \r\n            within the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IAppenderAttachable\">\r\n            <summary>\r\n            Interface for attaching appenders to objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface for attaching, removing and retrieving appenders.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Attaches an appender.\r\n            </summary>\r\n            <param name=\"appender\">The appender to add.</param>\r\n            <remarks>\r\n            <para>\r\n            Add the specified appender. The implementation may\r\n            choose to allow or deny duplicate appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.GetAppender(System.String)\">\r\n            <summary>\r\n            Gets an attached appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to get.</param>\r\n            <returns>\r\n            The appender with the name specified, or <c>null</c> if no appender with the\r\n            specified name is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns an attached appender with the <paramref name=\"name\"/> specified.\r\n            If no appender with the specified name is found <c>null</c> will be\r\n            returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Removes and closes all attached appenders\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IAppenderAttachable.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.IAppenderAttachable.Appenders\">\r\n            <summary>\r\n            Gets all attached appenders.\r\n            </summary>\r\n            <value>\r\n            A collection of attached appenders.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets a collection of attached appenders.\r\n            If there are no attached appenders the\r\n            implementation should return an empty \r\n            collection rather than <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.BufferingForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.OnClose\">\r\n            <summary>\r\n            Closes the appender and releases resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Send the events.\r\n            </summary>\r\n            <param name=\"events\">The events that need to be send.</param>\r\n            <remarks>\r\n            <para>\r\n            Forwards the events to the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\r\n            Looks for the appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to lookup.</param>\r\n            <returns>\r\n            The appender with the specified name, or <c>null</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named appender attached to this buffering appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all previously added appenders from this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is useful when re-reading configuration information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.BufferingForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.BufferingForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ColoredConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user. It also allows the color of a specific type of message to be set.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes directly to the application's attached console\r\n            not to the <c>System.Console.Out</c> or <c>System.Console.Error</c> <c>TextWriter</c>.\r\n            The <c>System.Console.Out</c> and <c>System.Console.Error</c> streams can be\r\n            programmatically redirected (for example NUnit does this to capture program output).\r\n            This appender will ignore these redirections because it needs to use Win32\r\n            API calls to colorize the output. To respect these redirections the <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            must be used.\r\n            </para>\r\n            <para>\r\n            When configuring the colored console appender, mapping should be\r\n            specified to map a logging level to a color. For example:\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <mapping>\r\n            \t<level value=\"ERROR\"/>\r\n            \t<foreColor value=\"White\"/>\r\n            \t<backColor value=\"Red, HighIntensity\"/>\r\n            </mapping>\r\n            <mapping>\r\n            \t<level value=\"DEBUG\"/>\r\n            \t<backColor value=\"Green\"/>\r\n            </mapping>\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and ForeColor and BackColor can be any\r\n            combination of the following values:\r\n            <list type=\"bullet\">\r\n            <item><term>Blue</term><description></description></item>\r\n            <item><term>Green</term><description></description></item>\r\n            <item><term>Red</term><description></description></item>\r\n            <item><term>White</term><description></description></item>\r\n            <item><term>Yellow</term><description></description></item>\r\n            <item><term>Purple</term><description></description></item>\r\n            <item><term>Cyan</term><description></description></item>\r\n            <item><term>HighIntensity</term><description></description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Rick Hobbs</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ColoredConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ColoredConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.AddMapping(log4net.Appender.ColoredConsoleAppender.LevelColors)\">\r\n            <summary>\r\n            Add a mapping of level to color - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\"/> mapping to this appender.\r\n            Each mapping defines the foreground and background colors\r\n            for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for this appender\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize the level to color mappings set on this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_writeToErrorStream\">\r\n            <summary>\r\n            Flag to write output to the error stream rather than the standard output stream\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to color value\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.m_consoleOutputWriter\">\r\n            <summary>\r\n            The console output stream writer to write to\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer is not thread safe.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.Target\">\r\n            <summary>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </summary>\r\n            <value>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.Colors\">\r\n            <summary>\r\n            The enum of possible color values for use with the color mapping method\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The following flags can be combined together to\r\n            form the colors.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.ColoredConsoleAppender\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Blue\">\r\n            <summary>\r\n            color is blue\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Green\">\r\n            <summary>\r\n            color is green\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Red\">\r\n            <summary>\r\n            color is red\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.White\">\r\n            <summary>\r\n            color is white\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Yellow\">\r\n            <summary>\r\n            color is yellow\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Purple\">\r\n            <summary>\r\n            color is purple\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.Cyan\">\r\n            <summary>\r\n            color is cyan\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity\">\r\n            <summary>\r\n            color is intensified\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ColoredConsoleAppender.LevelColors\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the color it should be displayed as.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the mapping between a level and the color it should be displayed in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ColoredConsoleAppender.LevelColors.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for the object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Combine the <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> together.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\">\r\n            <summary>\r\n            The mapped foreground color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped foreground color for the specified level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\">\r\n            <summary>\r\n            The mapped background color for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped background color for the specified level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.CombinedColor\">\r\n            <summary>\r\n            The combined <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor\"/> and <see cref=\"P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor\"/> suitable for \r\n            setting the console color.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ConsoleAppender\">\r\n            <summary>\r\n            Appends logging events to the console.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ConsoleAppender appends log events to the standard output stream\r\n            or the error output stream using a layout specified by the \r\n            user.\r\n            </para>\r\n            <para>\r\n            By default, all output is written to the console's standard output stream.\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> property can be set to direct the output to the\r\n            error stream.\r\n            </para>\r\n            <para>\r\n            NOTE: This appender writes each message to the <c>System.Console.Out</c> or \r\n            <c>System.Console.Error</c> that is set at the time the event is appended.\r\n            Therefore it is possible to programmatically redirect the output of this appender \r\n            (for example NUnit does this to capture program output). While this is the desired\r\n            behavior of this appender it may have security implications in your application. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleOut\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ConsoleAppender.ConsoleError\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.ConsoleAppender.Target\"/> to use when writing to the Console \r\n            standard error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <remarks>\r\n            The instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class is set up to write \r\n            to the standard output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ConsoleAppender\"/> class\r\n            with the specified layout.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use for this appender</param>\r\n            <param name=\"writeToErrorStream\">flag set to <c>true</c> to write to the console error stream</param>\r\n            <remarks>\r\n            When <paramref name=\"writeToErrorStream\"/> is set to <c>true</c>, output is written to\r\n            the standard error output stream.  Otherwise, output is written to the standard\r\n            output stream.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ConsoleAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to the console.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.Target\">\r\n            <summary>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </summary>\r\n            <value>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Target is the value of the console output stream.\r\n            This is either <c>\"Console.Out\"</c> or <c>\"Console.Error\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ConsoleAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.DebugAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Debug\"/> class for details on configuring the\r\n            debug system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <see cref=\"M:System.Diagnostics.Debug.Write(System.String,System.String)\"/>\r\n            method. The event's logger name is passed as the value for the category name to the Write method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.DebugAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.DebugAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Debug\"/> system.\r\n            If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is <c>true</c> then the <see cref=\"M:System.Diagnostics.Debug.Flush\"/>\r\n            is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.DebugAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.DebugAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.ImmediateFlush\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender will \r\n            flush at the end of each write.\r\n            </summary>\r\n            <remarks>\r\n            <para>The default behavior is to flush at the end of each \r\n            write. If the option is set to<c>false</c>, then the underlying \r\n            stream can defer writing to physical medium to a later time. \r\n            </para>\r\n            <para>\r\n            Avoiding the flush operation at the end of each append results \r\n            in a performance gain of 10 to 20 percent. However, there is safety\r\n            trade-off involved in skipping flushing. Indeed, when flushing is\r\n            skipped, then it is likely that the last few log events will not\r\n            be recorded on disk when the application exits. This is a high\r\n            price to pay even for a 20% performance gain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.DebugAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender\">\r\n            <summary>\r\n            Writes events to the system event log.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges.\r\n            See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog\r\n            </para>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry can be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            The <c>Category</c> of the event log entry can be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            <para>\r\n            When configuring the EventLogAppender a mapping can be\r\n            specified to map a logging level to an event log entry type. For example:\r\n            </para>\r\n            <code lang=\"XML\">\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"ERROR\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Error\" /&gt;\r\n            &lt;/mapping&gt;\r\n            &lt;mapping&gt;\r\n            \t&lt;level value=\"DEBUG\" /&gt;\r\n            \t&lt;eventLogEntryType value=\"Information\" /&gt;\r\n            &lt;/mapping&gt;\r\n            </code>\r\n            <para>\r\n            The Level is the standard log4net logging level and eventLogEntryType can be any value\r\n            from the <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> enum, i.e.:\r\n            <list type=\"bullet\">\r\n            <item><term>Error</term><description>an error event</description></item>\r\n            <item><term>Warning</term><description>a warning event</description></item>\r\n            <item><term>Information</term><description>an informational event</description></item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Thomas Voss</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.EventLogAppender\"/> class\r\n            with the specified <see cref=\"T:log4net.Layout.ILayout\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The <see cref=\"T:log4net.Layout.ILayout\"/> to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.AddMapping(log4net.Appender.EventLogAppender.Level2EventLogEntryType)\">\r\n            <summary>\r\n            Add a mapping of level to <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> - done by the config file\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\"/> mapping to this appender.\r\n            Each mapping defines the event log entry type for a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.EventLogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.CreateEventSource(System.String,System.String,System.String)\">\r\n            <summary>\r\n            Create an event log source\r\n            </summary>\r\n            <remarks>\r\n            Uses different API calls under NET_2_0\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Writes the event to the system event log using the \r\n            <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>.</para>\r\n            \r\n            <para>If the event has an <c>EventID</c> property (see <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            set then this integer will be used as the event log event id.</para>\r\n            \r\n            <para>\r\n            There is a limit of 32K characters for an event log message\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.EventLogAppender.GetEntryType(log4net.Core.Level)\">\r\n            <summary>\r\n            Get the equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/>\r\n            </summary>\r\n            <param name=\"level\">the Level to convert to an EventLogEntryType</param>\r\n            <returns>The equivalent <see cref=\"T:System.Diagnostics.EventLogEntryType\"/> for a <see cref=\"T:log4net.Core.Level\"/> <paramref name=\"level\"/></returns>\r\n            <remarks>\r\n            Because there are fewer applicable <see cref=\"T:System.Diagnostics.EventLogEntryType\"/>\r\n            values to use in logging levels than there are in the \r\n            <see cref=\"T:log4net.Core.Level\"/> this is a one way mapping. There is\r\n            a loss of information during the conversion.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_logName\">\r\n            <summary>\r\n            The log name is the section in the event logs where the messages\r\n            are stored.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_applicationName\">\r\n            <summary>\r\n            Name of the application to use when logging.  This appears in the\r\n            application column of the event log named by <see cref=\"F:log4net.Appender.EventLogAppender.m_logName\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_machineName\">\r\n            <summary>\r\n            The name of the machine which holds the event log. This is\r\n            currently only allowed to be '.' i.e. the current machine.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to EventLogEntryType\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_eventId\">\r\n            <summary>\r\n            The event ID to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.m_category\">\r\n            <summary>\r\n            The event category to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.EventLogAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the EventLogAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.LogName\">\r\n            <summary>\r\n            The name of the log where messages will be stored.\r\n            </summary>\r\n            <value>\r\n            The string name of the log where messages will be stored.\r\n            </value>\r\n            <remarks>\r\n            <para>This is the name of the log as it appears in the Event Viewer\r\n            tree. The default value is to log into the <c>Application</c>\r\n            log, this is where most applications write their events. However\r\n            if you need a separate log for your application (or applications)\r\n            then you should set the <see cref=\"P:log4net.Appender.EventLogAppender.LogName\"/> appropriately.</para>\r\n            <para>This should not be used to distinguish your event log messages\r\n            from those of other applications, the <see cref=\"P:log4net.Appender.EventLogAppender.ApplicationName\"/>\r\n            property should be used to distinguish events. This property should be \r\n            used to group together events into a single log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.ApplicationName\">\r\n            <summary>\r\n            Property used to set the Application name.  This appears in the\r\n            event logs when logging.\r\n            </summary>\r\n            <value>\r\n            The string used to distinguish events from different sources.\r\n            </value>\r\n            <remarks>\r\n            Sets the event log source property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.MachineName\">\r\n            <summary>\r\n            This property is used to return the name of the computer to use\r\n            when accessing the event logs.  Currently, this is the current\r\n            computer, denoted by a dot \".\"\r\n            </summary>\r\n            <value>\r\n            The string name of the machine holding the event log that \r\n            will be logged into.\r\n            </value>\r\n            <remarks>\r\n            This property cannot be changed. It is currently set to '.'\r\n            i.e. the local machine. This may be changed in future.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> used to write to the EventLog.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The system security context used to write to the EventLog.\r\n            </para>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.EventLogAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.EventId\">\r\n            <summary>\r\n            Gets or sets the <c>EventId</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>EventID</c> of the event log entry will normally be\r\n            set using the <c>EventID</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Category\">\r\n            <summary>\r\n            Gets or sets the <c>Category</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>Category</c> of the event log entry will normally be\r\n            set using the <c>Category</c> property (<see cref=\"P:log4net.Core.LoggingEvent.Properties\"/>)\r\n            on the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            This property provides the fallback value which defaults to 0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.EventLogAppender.Level2EventLogEntryType\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the color it should be displayed as.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the mapping between a level and its event log entry type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The <see cref=\"P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType\"/> for this entry\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender\">\r\n            <summary>\r\n            Appends logging events to a file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Logging events are sent to the file specified by\r\n            the <see cref=\"P:log4net.Appender.FileAppender.File\"/> property.\r\n            </para>\r\n            <para>\r\n            The file can be opened in either append or overwrite mode \r\n            by specifying the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property.\r\n            If the file path is relative it is taken as relative from \r\n            the application base directory. The file encoding can be\r\n            specified by setting the <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> property.\r\n            </para>\r\n            <para>\r\n            The layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            values will be written each time the file is opened and closed\r\n            respectively. If the <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is <see langword=\"true\"/>\r\n            then the file may contain multiple copies of the header and footer.\r\n            </para>\r\n            <para>\r\n            This appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> supports pluggable file locking models via\r\n            the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> property.\r\n            The default behavior, implemented by <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> \r\n            is to obtain an exclusive write lock on the file until this appender is closed.\r\n            The alternative models only hold a\r\n            write lock while the appender is writing a logging event (<see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/>)\r\n            or synchronize by using a named system wide Mutex (<see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/>).\r\n            </para>\r\n            <para>\r\n            All locking strategies have issues and you should seriously consider using a different strategy that\r\n            avoids having multiple processes logging to the same file.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Rodrigo B. de Oliveira</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Niall Daley</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TextWriterAppender\">\r\n            <summary>\r\n            Sends logging events to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An Appender that writes to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This appender may be used stand alone if initialized with an appropriate\r\n            writer, however it is typically used as a base class for an appender that\r\n            can open a <see cref=\"T:System.IO.TextWriter\"/> to write to.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.Stream)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and\r\n            sets the output destination to a new <see cref=\"T:System.IO.StreamWriter\"/> initialized \r\n            with the specified <see cref=\"T:System.IO.Stream\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <param name=\"os\">The <see cref=\"T:System.IO.Stream\"/> to output to.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.TextWriter)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TextWriterAppender\"/> class and sets\r\n            the output destination to the specified <see cref=\"T:System.IO.StreamWriter\"/>.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender</param>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to output to</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> must have been previously opened.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PreAppendCheck\">\r\n            <summary>\r\n            This method determines if there is a sense in attempting to append.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method checks if an output target has been set and if a\r\n            layout has been set. \r\n            </para>\r\n            </remarks>\r\n            <returns><c>false</c> if any of the preconditions fail.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method writes all the bulk logged events to the output writer\r\n            before flushing the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.OnClose\">\r\n            <summary>\r\n            Close this appender instance. The underlying stream or writer is also closed.\r\n            </summary>\r\n            <remarks>\r\n            Closed appenders cannot be reused.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooterAndCloseWriter\">\r\n            <summary>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the footer and closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.Reset\">\r\n            <summary>\r\n            Clears internal references to the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            and other variables.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Subclasses can override this method for an alternate closing behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TextWriterAppender.PrepareWriter\">\r\n            <summary>\r\n            Called to allow a subclass to lazily initialize the writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called when an event is logged and the <see cref=\"P:log4net.Appender.TextWriterAppender.Writer\"/> or\r\n            <see cref=\"P:log4net.Appender.TextWriterAppender.QuietWriter\"/> have not been set. This allows a subclass to\r\n            attempt to initialize the writer multiple times.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_qtw\">\r\n            <summary>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying <see cref=\"T:System.IO.TextWriter\"/> \r\n            or output stream will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logging events are not actually persisted if and when the application \r\n            crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TextWriterAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the TextWriterAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ImmediateFlush\">\r\n            <summary>\r\n            Gets or set whether the appender will flush at the end \r\n            of each append operation.\r\n            </summary>\r\n            <value>\r\n            <para>\r\n            The default behavior is to flush at the end of each \r\n            append operation.\r\n            </para>\r\n            <para>\r\n            If this option is set to <c>false</c>, then the underlying \r\n            stream can defer persisting the logging event to a later \r\n            time.\r\n            </para>\r\n            </value>\r\n            <remarks>\r\n            Avoiding the flush operation at the end of each append results in\r\n            a performance gain of 10 to 20 percent. However, there is safety\r\n            trade-off involved in skipping flushing. Indeed, when flushing is\r\n            skipped, then it is likely that the last few log events will not\r\n            be recorded on disk when the application exits. This is a high\r\n            price to pay even for a 20% performance gain.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.Writer\">\r\n            <summary>\r\n            Sets the <see cref=\"T:System.IO.TextWriter\"/> where the log output will go.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The specified <see cref=\"T:System.IO.TextWriter\"/> must be open and writable.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.IO.TextWriter\"/> will be closed when the appender \r\n            instance is closed.\r\n            </para>\r\n            <para>\r\n            <b>Note:</b> Logging to an unopened <see cref=\"T:System.IO.TextWriter\"/> will fail.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\">\r\n            <summary>\r\n            Gets or set the <see cref=\"T:log4net.Core.IErrorHandler\"/> and the underlying \r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/>, if any, for this appender. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.IErrorHandler\"/> for this appender.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TextWriterAppender.QuietWriter\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events are written.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the <see cref=\"T:log4net.Util.QuietTextWriter\"/> where logging events\r\n            will be written to. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String,System.Boolean)\">\r\n            <summary>\r\n            Construct a new appender using the layout, file and append mode.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use with this appender</param>\r\n            <param name=\"filename\">the full path to the file to write to</param>\r\n            <param name=\"append\">flag to indicate if the file should be appended to</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String)\">\r\n            <summary>\r\n            Construct a new appender using the layout and file specified.\r\n            The file will be appended to.\r\n            </summary>\r\n            <param name=\"layout\">the layout to use with this appender</param>\r\n            <param name=\"filename\">the full path to the file to write to</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on the file appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.FileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This will cause the file to be opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Reset\">\r\n            <summary>\r\n            Closes any previously opened file and calls the parent's <see cref=\"M:log4net.Appender.TextWriterAppender.Reset\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets the filename and the file stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.PrepareWriter\">\r\n            <summary>\r\n            Called to initialize the file writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Will be called for each logged message until the file is\r\n            successfully opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a log statement to the output stream if the output stream exists \r\n            and is writable.  \r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])\"/>\r\n            method. \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Acquires the output file locks once before writing all the events to\r\n            the stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteFooter\">\r\n            <summary>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a footer as produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Footer\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.WriteHeader\">\r\n            <summary>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes a header produced by the embedded layout's <see cref=\"P:log4net.Layout.ILayout.Header\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseWriter\">\r\n            <summary>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.CloseFile\">\r\n            <summary>\r\n            Closes the previously opened file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Layout.ILayout.Footer\"/> to the file and then\r\n            closes the file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SafeOpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\r\n            </summary>\r\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\r\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\r\n            <remarks>\r\n            <para>\r\n            Calls <see cref=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\"/> but guarantees not to throw an exception.\r\n            Errors are passed to the <see cref=\"P:log4net.Appender.TextWriterAppender.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.\r\n            </summary>\r\n            <param name=\"fileName\">The path to the log file. Must be a fully qualified path.</param>\r\n            <param name=\"append\">If true will append to fileName. Otherwise will truncate fileName</param>\r\n            <remarks>\r\n            <para>\r\n            If there was already an opened file, then the previous file\r\n            is closed first.\r\n            </para>\r\n            <para>\r\n            This method will ensure that the directory structure\r\n            for the <paramref name=\"fileName\"/> specified exists.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\">\r\n            <summary>\r\n            Sets the quiet writer used for file output\r\n            </summary>\r\n            <param name=\"fileStream\">the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This implementation of <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)\"/> creates a <see cref=\"T:System.IO.StreamWriter\"/>\r\n            over the <paramref name=\"fileStream\"/> and passes it to the \r\n            <see cref=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\"/> method.\r\n            </para>\r\n            <para>\r\n            This method can be overridden by sub classes that want to wrap the\r\n            <see cref=\"T:System.IO.Stream\"/> in some way, for example to encrypt the output\r\n            data using a <c>System.Security.Cryptography.CryptoStream</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\r\n            Sets the quiet writer being used.\r\n            </summary>\r\n            <param name=\"writer\">the writer over the file stream that has been opened for writing</param>\r\n            <remarks>\r\n            <para>\r\n            This method can be overridden by sub classes that want to\r\n            wrap the <see cref=\"T:System.IO.TextWriter\"/> in some way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\r\n            Convert a path into a fully qualified path.\r\n            </summary>\r\n            <param name=\"path\">The path to convert.</param>\r\n            <returns>The fully qualified path.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the path specified to a fully\r\n            qualified path. If the path is relative it is\r\n            taken as relative from the application base \r\n            directory.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_appendToFile\">\r\n            <summary>\r\n            Flag to indicate if we should append to the file\r\n            or overwrite the file. The default is to append.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_fileName\">\r\n            <summary>\r\n            The name of the log file.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_encoding\">\r\n            <summary>\r\n            The encoding to use for the file stream.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_stream\">\r\n            <summary>\r\n            The stream to log to. Has added locking semantics\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.m_lockingModel\">\r\n            <summary>\r\n            The locking model to use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.FileAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the FileAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.File\">\r\n            <summary>\r\n            Gets or sets the path to the file that logging will be written to.\r\n            </summary>\r\n            <value>\r\n            The path to the file that logging will be written to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If the path is relative it is taken as relative from \r\n            the application base directory.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.AppendToFile\">\r\n            <summary>\r\n            Gets or sets a flag that indicates whether the file should be\r\n            appended to or overwritten.\r\n            </summary>\r\n            <value>\r\n            Indicates whether the file should be appended to or overwritten.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If the value is set to false then the file will be overwritten, if \r\n            it is set to true then the file will be appended to.\r\n            </para>\r\n            The default value is true.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.Encoding\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default encoding set is <see cref=\"P:System.Text.Encoding.Default\"/>\r\n            which is the encoding for the system's current ANSI code page.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> used to write to the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.FileAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModel\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to lock the file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.FileAppender.LockingModel\"/> used to handle locking of the file.\r\n            </para>\r\n            <para>\r\n            There are three built in locking models, <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>, <see cref=\"T:log4net.Appender.FileAppender.MinimalLock\"/> and <see cref=\"T:log4net.Appender.FileAppender.InterProcessLock\"/> .\r\n            The first locks the file from the start of logging to the end, the \r\n            second locks only for the minimal amount of time when logging each message\r\n            and the last synchronizes processes using a named system wide Mutex.\r\n            </para>\r\n            <para>\r\n            The default locking model is the <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingStream\">\r\n            <summary>\r\n            Write only <see cref=\"T:System.IO.Stream\"/> that uses the <see cref=\"T:log4net.Appender.FileAppender.LockingModelBase\"/> \r\n            to manage access to an underlying resource.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)\">\r\n            <summary>\r\n            True asynchronous writes are not supported, the implementation forces a synchronous write.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LogException\">\r\n            <summary>\r\n            Exception base type for log4net.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class with\r\n            the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LogException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.LockingModelBase\">\r\n            <summary>\r\n            Locking model base class\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Base class for the locking models available to the <see cref=\"T:log4net.Appender.FileAppender\"/> derived loggers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the output file\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CreateStream(System.String,System.Boolean,System.IO.FileShare)\">\r\n            <summary>\r\n            Helper method that creates a FileStream under CurrentAppender's SecurityContext.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Typically called during OpenFile or AcquireLock. \r\n            </para>\r\n            <para>\r\n            If the directory portion of the <paramref name=\"filename\"/> does not exist, it is created\r\n            via Directory.CreateDirecctory.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"filename\"></param>\r\n            <param name=\"append\"></param>\r\n            <param name=\"fileShare\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.LockingModelBase.CloseStream(System.IO.Stream)\">\r\n            <summary>\r\n            Helper method to close <paramref name=\"stream\"/> under CurrentAppender's SecurityContext.\r\n            </summary>\r\n            <remarks>\r\n            Does not set <paramref name=\"stream\"/> to null.\r\n            </remarks>\r\n            <param name=\"stream\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.FileAppender.LockingModelBase.CurrentAppender\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Appender.FileAppender\"/> for this LockingModel\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The file appender this locking model is attached to and working on\r\n            behalf of.\r\n            </para>\r\n            <para>\r\n            The file appender is used to locate the security context and the error handler to use.\r\n            </para>\r\n            <para>\r\n            The value of this property will be set before <see cref=\"M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)\"/> is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.ExclusiveLock\">\r\n            <summary>\r\n            Hold an exclusive lock on the output file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Open the file once for writing and hold it open until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/> is called. \r\n            Maintains an exclusive lock on the file during this time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Does nothing. The lock is already taken\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Does nothing. The lock will be released when the file is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.MinimalLock\">\r\n            <summary>\r\n            Acquires the file lock for each write\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Opens the file once for each <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>/<see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> cycle, \r\n            thus holding the lock for the minimal amount of time. This method of locking\r\n            is considerably slower than <see cref=\"T:log4net.Appender.FileAppender.ExclusiveLock\"/> but allows \r\n            other processes to move/delete the log file whilst logging continues.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Prepares to open the file when the first message is logged.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/>,\r\n            <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Acquire the lock on the file in preparation for writing to it. \r\n            Return a stream pointing to the file. <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\"/>\r\n            must be called to release the lock on the output file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock\">\r\n            <summary>\r\n            Release the lock on the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Release the lock on the file. No further writes will be made to the \r\n            stream until <see cref=\"M:log4net.Appender.FileAppender.MinimalLock.AcquireLock\"/> is called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.FileAppender.InterProcessLock\">\r\n            <summary>\r\n            Provides cross-process file locking.\r\n            </summary>\r\n            <author>Ron Grabowski</author>\r\n            <author>Steve Wranovsky</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)\">\r\n            <summary>\r\n            Open the file specified and prepare for logging.\r\n            </summary>\r\n            <param name=\"filename\">The filename to use</param>\r\n            <param name=\"append\">Whether to append to the file, or overwrite</param>\r\n            <param name=\"encoding\">The encoding to use</param>\r\n            <remarks>\r\n            <para>\r\n            Open the file specified and prepare for logging. \r\n            No writes will be made until <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/> is called.\r\n            Must be called before any calls to <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\"/>,\r\n            -<see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\"/> and <see cref=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.CloseFile\">\r\n            <summary>\r\n            Close the file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the file. No further writes will be made.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock\">\r\n            <summary>\r\n            Acquire the lock on the file\r\n            </summary>\r\n            <returns>A stream that is ready to be written to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Does nothing. The lock is already taken\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.ForwardingAppender\">\r\n            <summary>\r\n            This appender forwards logging events to attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The forwarding appender can be used to specify different thresholds\r\n            and filters for the same appender at different locations within the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.ForwardingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.OnClose\">\r\n            <summary>\r\n            Closes the appender and releases resources.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Releases any resources allocated within the appender such as file handles, \r\n            network connections, etc.\r\n            </para>\r\n            <para>\r\n            It is a programming error to append to a closed appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Forward the logging event to the attached appenders \r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers the logging event to all the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Forward the logging events to the attached appenders \r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers the logging events to all the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Adds an <see cref=\"T:log4net.Appender.IAppender\"/> to the list of appenders of this\r\n            instance.\r\n            </summary>\r\n            <param name=\"newAppender\">The <see cref=\"T:log4net.Appender.IAppender\"/> to add to this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            If the specified <see cref=\"T:log4net.Appender.IAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.GetAppender(System.String)\">\r\n            <summary>\r\n            Looks for the appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to lookup.</param>\r\n            <returns>\r\n            The appender with the specified name, or <c>null</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named appender attached to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all previously added appenders from this appender.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is useful when re-reading configuration information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.ForwardingAppender.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.ForwardingAppender.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.ForwardingAppender.Appenders\">\r\n            <summary>\r\n            Gets the appenders contained in this appender as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            If no appenders can be found, then an <see cref=\"T:log4net.Util.EmptyCollection\"/> \r\n            is returned.\r\n            </remarks>\r\n            <returns>\r\n            A collection of the appenders in this appender.\r\n            </returns>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender\">\r\n            <summary>\r\n            Logs events to a local syslog service.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            This appender uses the POSIX libc library functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c>.\r\n            If these functions are not available on the local system then this appender will not work!\r\n            </note>\r\n            <para>\r\n            The functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c> are specified in SUSv2 and \r\n            POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service.\r\n            </para>\r\n            <para>\r\n            This appender talks to a local syslog service. If you need to log to a remote syslog\r\n            daemon and you cannot configure your local syslog service to do this you may be\r\n            able to use the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> to log via UDP.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.LocalSyslogAppender\"/> class is set up to write \r\n            to a local syslog service.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/> to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.OnClose\">\r\n            <summary>\r\n            Close the syslog when the appender is closed\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the syslog when the appender is closed\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\r\n            Translates a log4net level to a syslog severity.\r\n            </summary>\r\n            <param name=\"level\">A log4net level.</param>\r\n            <returns>A syslog severity.</returns>\r\n            <remarks>\r\n            <para>\r\n            Translates a log4net level to a syslog severity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.GeneratePriority(log4net.Appender.LocalSyslogAppender.SyslogFacility,log4net.Appender.LocalSyslogAppender.SyslogSeverity)\">\r\n            <summary>\r\n            Generate a syslog priority.\r\n            </summary>\r\n            <param name=\"facility\">The syslog facility.</param>\r\n            <param name=\"severity\">The syslog severity.</param>\r\n            <returns>A syslog priority.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_identity\">\r\n            <summary>\r\n            The message identity\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_handleToIdentity\">\r\n            <summary>\r\n            Marshaled handle to the identity string. We have to hold on to the\r\n            string as the <c>openlog</c> and <c>syslog</c> APIs just hold the\r\n            pointer to the ident and dereference it for each log message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to syslog severity\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.openlog(System.IntPtr,System.Int32,log4net.Appender.LocalSyslogAppender.SyslogFacility)\">\r\n            <summary>\r\n            Open connection to system logger.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.syslog(System.Int32,System.String,System.String)\">\r\n            <summary>\r\n            Generate a log message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The libc syslog method takes a format string and a variable argument list similar\r\n            to the classic printf function. As this type of vararg list is not supported\r\n            by C# we need to specify the arguments explicitly. Here we have specified the\r\n            format string with a single message argument. The caller must set the format \r\n            string to <c>\"%s\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.LocalSyslogAppender.closelog\">\r\n            <summary>\r\n            Close descriptor used to write to system logger.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"P:log4net.Appender.AppenderSkeleton.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogSeverity\">\r\n            <summary>\r\n            syslog severities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The log4net Level maps to a syslog severity using the\r\n            <see cref=\"M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)\"/> method and the <see cref=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\"/>\r\n            class. The severity is set on <see cref=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\r\n            system is unusable\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\r\n            action must be taken immediately\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\r\n            critical conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\r\n            error conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\r\n            warning conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\r\n            normal but significant condition\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\r\n            informational\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\r\n            debug-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.SyslogFacility\">\r\n            <summary>\r\n            syslog facilities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog facility defines which subsystem the logging comes from.\r\n            This is set on the <see cref=\"P:log4net.Appender.LocalSyslogAppender.Facility\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\r\n            kernel messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User\">\r\n            <summary>\r\n            random user-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\r\n            mail system\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\r\n            system daemons\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\r\n            security/authorization messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\r\n            messages generated internally by syslogd\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\r\n            line printer subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.News\">\r\n            <summary>\r\n            network news subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\r\n            UUCP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\r\n            clock (cron/at) daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\r\n            security/authorization  messages (private)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\r\n            ftp daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\r\n            NTP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\r\n            log audit\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\r\n            log alert\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\r\n            clock daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.LocalSyslogAppender.LevelSeverity\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\r\n            The mapped syslog severity for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped syslog severity for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.MemoryAppender\">\r\n            <summary>\r\n            Stores logging events in an array.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The memory appender stores all the logging events\r\n            that are appended in an in-memory array.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.GetEvents\"/> method to get\r\n            the current list of events that have been appended.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Appender.MemoryAppender.Clear\"/> method to clear the\r\n            current list of events.\r\n            </para>\r\n            </remarks>\r\n            <author>Julian Biddle</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.MemoryAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.GetEvents\">\r\n            <summary>\r\n            Gets the events that have been logged.\r\n            </summary>\r\n            <returns>The events that have been logged</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the events that have been logged.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method. \r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>Stores the <paramref name=\"loggingEvent\"/> in the events list.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.MemoryAppender.Clear\">\r\n            <summary>\r\n            Clear the list of events\r\n            </summary>\r\n            <remarks>\r\n            Clear the list of events\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_eventsList\">\r\n            <summary>\r\n            The list of events that have been appended.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.MemoryAppender.m_fixFlags\">\r\n            <summary>\r\n            Value indicating which fields in the event should be fixed\r\n            </summary>\r\n            <remarks>\r\n            By default all fields are fixed\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.OnlyFixPartialEventData\">\r\n            <summary>\r\n            Gets or sets a value indicating whether only part of the logging event \r\n            data should be fixed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the appender should only fix part of the logging event \r\n            data, otherwise <c>false</c>. The default is <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting this property to <c>true</c> will cause only part of the event \r\n            data to be fixed and stored in the appender, hereby improving performance. \r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.MemoryAppender.Fix\">\r\n            <summary>\r\n            Gets or sets the fields that will be fixed in the event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The logging event needs to have certain thread specific values \r\n            captured before it can be buffered. See <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>\r\n            for details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.NetSendAppender\">\r\n            <summary>\r\n            Logs entries by sending network messages using the \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> native function.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can send messages only to names that are active \r\n            on the network. If you send the message to a user name, \r\n            that user must be logged on and running the Messenger \r\n            service to receive the message.\r\n            </para>\r\n            <para>\r\n            The receiver will get a top most window displaying the \r\n            messages one at a time, therefore this appender should \r\n            not be used to deliver a high volume of messages.\r\n            </para>\r\n            <para>\r\n            The following table lists some possible uses for this appender :\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Action</term>\r\n                    <description>Property Value(s)</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>Send a message to a user account on the local machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a user account on a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to a domain user account</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of a domain controller | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;user name&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message to all the names in a workgroup or domain</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;workgroup name | domain name&gt;*\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Send a message from the local machine to a remote machine</term>\r\n                    <description>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Server\"/> = &lt;name of the local machine | uninitialized&gt;\r\n                        </para>\r\n                        <para>\r\n                        <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> = &lt;name of the remote machine&gt;\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            <b>Note :</b> security restrictions apply for sending \r\n            network messages, see <see cref=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\"/> \r\n            for more information.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            An example configuration section to log information \r\n            using this appender from the local machine, named \r\n            LOCAL_PC, to machine OPERATOR_PC :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <appender name=\"NetSendAppender_Operator\" type=\"log4net.Appender.NetSendAppender\">\r\n                <server value=\"LOCAL_PC\"/>\r\n                <recipient value=\"OPERATOR_PC\"/>\r\n                <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5p %c [%x] - %m%n\"/>\r\n            </appender>\r\n            </code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_server\">\r\n            <summary>\r\n            The DNS or NetBIOS name of the server on which the function is to execute.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_sender\">\r\n            <summary>\r\n            The sender of the network message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_recipient\">\r\n            <summary>\r\n            The message alias to which the message should be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.NetSendAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.#ctor\">\r\n            <summary>\r\n            Initializes the appender.\r\n            </summary>\r\n            <remarks>\r\n            The default constructor initializes all fields to their default values.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.NetSendAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.NetSendAppender.Recipient\"/> was not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using a network message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)\">\r\n            <summary>\r\n            Sends a buffer of information to a registered message alias.\r\n            </summary>\r\n            <param name=\"serverName\">The DNS or NetBIOS name of the server on which the function is to execute.</param>\r\n            <param name=\"msgName\">The message alias to which the message buffer should be sent</param>\r\n            <param name=\"fromName\">The originator of the message.</param>\r\n            <param name=\"buffer\">The message text.</param>\r\n            <param name=\"bufferSize\">The length, in bytes, of the message text.</param>\r\n            <remarks>\r\n            <para>\r\n            The following restrictions apply for sending network messages:\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Platform</term>\r\n                    <description>Requirements</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>Windows NT</term>\r\n                    <description>\r\n                        <para>\r\n                        No special group membership is required to send a network message.\r\n                        </para>\r\n                        <para>\r\n                        Admin, Accounts, Print, or Server Operator group membership is required to \r\n                        successfully send a network message on a remote server.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>Windows 2000 or later</term>\r\n                    <description>\r\n                        <para>\r\n                        If you send a message on a domain controller that is running Active Directory, \r\n                        access is allowed or denied based on the access control list (ACL) for the securable \r\n                        object. The default ACL permits only Domain Admins and Account Operators to send a network message. \r\n                        </para>\r\n                        <para>\r\n                        On a member server or workstation, only Administrators and Server Operators can send a network message. \r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            For more information see <a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/security_requirements_for_the_network_management_functions.asp\">Security Requirements for the Network Management Functions</a>.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <para>\r\n            If the function succeeds, the return value is zero.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Sender\">\r\n            <summary>\r\n            Gets or sets the sender of the message.\r\n            </summary>\r\n            <value>\r\n            The sender of the message.\r\n            </value>\r\n            <remarks>\r\n            If this property is not specified, the message is sent from the local computer.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Recipient\">\r\n            <summary>\r\n            Gets or sets the message alias to which the message should be sent.\r\n            </summary>\r\n            <value>\r\n            The recipient of the message.\r\n            </value>\r\n            <remarks>\r\n            This property should always be specified in order to send a message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.Server\">\r\n            <summary>\r\n            Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute.\r\n            </summary>\r\n            <value>\r\n            DNS or NetBIOS name of the remote server on which the function is to execute.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For Windows NT 4.0 and earlier, the string should begin with \\\\.\r\n            </para>\r\n            <para>\r\n            If this property is not specified, the local computer is used. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> used to call the NetSend method.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.NetSendAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.NetSendAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.OutputDebugStringAppender\">\r\n            <summary>\r\n            Appends log events to the OutputDebugString system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            OutputDebugStringAppender appends log events to the\r\n            OutputDebugString system.\r\n            </para>\r\n            <para>\r\n            The string is passed to the native <c>OutputDebugString</c> \r\n            function.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.OutputDebugStringAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the logging event to the output debug string API\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            Write the logging event to the output debug string API\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.OutputDebugStringAppender.OutputDebugString(System.String)\">\r\n            <summary>\r\n            Stub for OutputDebugString native method\r\n            </summary>\r\n            <param name=\"message\">the string to output</param>\r\n            <remarks>\r\n            <para>\r\n            Stub for OutputDebugString native method\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.OutputDebugStringAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender\">\r\n            <summary>\r\n            Logs events to a remote syslog daemon.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The BSD syslog protocol is used to remotely log to\r\n            a syslog daemon. The syslogd listens for for messages\r\n            on UDP port 514.\r\n            </para>\r\n            <para>\r\n            The syslog UDP protocol is not authenticated. Most syslog daemons\r\n            do not accept remote log messages because of the security implications.\r\n            You may be able to use the LocalSyslogAppender to talk to a local\r\n            syslog service.\r\n            </para>\r\n            <para>\r\n            There is an RFC 3164 that claims to document the BSD Syslog Protocol.\r\n            This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html.\r\n            This appender generates what the RFC calls an \"Original Device Message\",\r\n            i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation\r\n            this format of message will be accepted by all current syslog daemon\r\n            implementations. The daemon will attach the current time and the source\r\n            hostname or IP address to any messages received.\r\n            </para>\r\n            <para>\r\n            Syslog messages must have a facility and and a severity. The severity\r\n            is derived from the Level of the logging event.\r\n            The facility must be chosen from the set of defined syslog \r\n            <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The facilities list is predefined\r\n            and cannot be extended.\r\n            </para>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Rob Lyon</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.UdpAppender\">\r\n             <summary>\r\n             Sends logging events as connectionless UDP datagrams to a remote host or a \r\n             multicast group using an <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n             </summary>\r\n             <remarks>\r\n             <para>\r\n             UDP guarantees neither that messages arrive, nor that they arrive in the correct order.\r\n             </para>\r\n             <para>\r\n             To view the logging results, a custom application can be developed that listens for logging \r\n             events.\r\n             </para>\r\n             <para>\r\n             When decoding events send via this appender remember to use the same encoding\r\n             to decode the events as was used to send the events. See the <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/>\r\n             property to specify the encoding to use.\r\n             </para>\r\n             </remarks>\r\n             <example>\r\n             This example shows how to log receive logging events that are sent \r\n             on IP address 244.0.0.1 and port 8080 to the console. The event is \r\n             encoded in the packet as a unicode string and it is decoded as such. \r\n             <code lang=\"C#\">\r\n             IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);\r\n             UdpClient udpClient;\r\n             byte[] buffer;\r\n             string loggingEvent;\r\n             \r\n             try \r\n             {\r\n                 udpClient = new UdpClient(8080);\r\n                 \r\n                 while(true) \r\n                 {\r\n                     buffer = udpClient.Receive(ref remoteEndPoint);\r\n                     loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);\r\n                     Console.WriteLine(loggingEvent);\r\n                 }\r\n             } \r\n             catch(Exception e) \r\n             {\r\n                 Console.WriteLine(e.ToString());\r\n             }\r\n             </code>\r\n             <code lang=\"Visual Basic\">\r\n             Dim remoteEndPoint as IPEndPoint\r\n             Dim udpClient as UdpClient\r\n             Dim buffer as Byte()\r\n             Dim loggingEvent as String\r\n             \r\n             Try \r\n                 remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)\r\n                 udpClient = new UdpClient(8080)\r\n            \r\n                 While True\r\n                     buffer = udpClient.Receive(ByRef remoteEndPoint)\r\n                     loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)\r\n                     Console.WriteLine(loggingEvent)\r\n                 Wend\r\n             Catch e As Exception\r\n                 Console.WriteLine(e.ToString())\r\n             End Try\r\n             </code>\r\n             <para>\r\n             An example configuration section to log information using this appender to the \r\n             IP 224.0.0.1 on port 8080:\r\n             </para>\r\n             <code lang=\"XML\" escaped=\"true\">\r\n             <appender name=\"UdpAppender\" type=\"log4net.Appender.UdpAppender\">\r\n                 <remoteAddress value=\"224.0.0.1\"/>\r\n                 <remotePort value=\"8080\"/>\r\n                 <layout type=\"log4net.Layout.PatternLayout\" value=\"%-5level %logger [%ndc] - %message%newline\"/>\r\n             </appender>\r\n             </code>\r\n             </example>\r\n             <author>Gert Driesen</author>\r\n             <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.UdpAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            The default constructor initializes all fields to their default values.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The appender will be ignored if no <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was specified or \r\n            an invalid remote or local TCP port number was specified.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required property <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> was not specified.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The TCP port number assigned to <see cref=\"P:log4net.Appender.UdpAppender.LocalPort\"/> or <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/> is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the event using an UDP datagram.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.OnClose\">\r\n            <summary>\r\n            Closes the UDP connection and releases all resources associated with \r\n            this <see cref=\"T:log4net.Appender.UdpAppender\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Disables the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> and releases all managed \r\n            and unmanaged resources associated with the <see cref=\"T:log4net.Appender.UdpAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.UdpAppender.InitializeClientConnection\">\r\n            <summary>\r\n            Initializes the underlying  <see cref=\"T:System.Net.Sockets.UdpClient\"/> connection.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> is initialized and binds to the \r\n            port number from which you intend to communicate.\r\n            </para>\r\n            <para>\r\n            Exceptions are passed to the <see cref=\"P:log4net.Appender.AppenderSkeleton.ErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteAddress\">\r\n            <summary>\r\n            The IP address of the remote host or multicast group to which \r\n            the logging event will be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remotePort\">\r\n            <summary>\r\n            The TCP port number of the remote host or multicast group to \r\n            which the logging event will be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_remoteEndPoint\">\r\n            <summary>\r\n            The cached remote endpoint to which the logging events will be sent.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_localPort\">\r\n            <summary>\r\n            The TCP port number from which the <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_client\">\r\n            <summary>\r\n            The <see cref=\"T:System.Net.Sockets.UdpClient\"/> instance that will be used for sending the \r\n            logging events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.UdpAppender.m_encoding\">\r\n            <summary>\r\n            The encoding to use for the packet.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteAddress\">\r\n            <summary>\r\n            Gets or sets the IP address of the remote host or multicast group to which\r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            The IP address of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Multicast addresses are identified by IP class <b>D</b> addresses (in the range 224.0.0.0 to\r\n            239.255.255.255).  Multicast packets can pass across different networks through routers, so\r\n            it is possible to use multicasts in an Internet scenario as long as your network provider \r\n            supports multicasting.\r\n            </para>\r\n            <para>\r\n            Hosts that want to receive particular multicast messages must register their interest by joining\r\n            the multicast group.  Multicast messages are not sent to networks where no host has joined\r\n            the multicast group.  Class <b>D</b> IP addresses are used for multicast groups, to differentiate\r\n            them from normal host addresses, allowing nodes to easily detect if a message is of interest.\r\n            </para>\r\n            <para>\r\n            Static multicast addresses that are needed globally are assigned by IANA.  A few examples are listed in the table below:\r\n            </para>\r\n            <para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>IP Address</term>\r\n                    <description>Description</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>224.0.0.1</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all system on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.2</term>\r\n                    <description>\r\n                        <para>\r\n                        Sends a message to all routers on the subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>224.0.0.12</term>\r\n                    <description>\r\n                        <para>\r\n                        The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            A complete list of actually reserved multicast addresses and their owners in the ranges\r\n            defined by RFC 3171 can be found at the <A href=\"http://www.iana.org/assignments/multicast-addresses\">IANA web site</A>. \r\n            </para>\r\n            <para>\r\n            The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative \r\n            addresses.  These addresses can be reused with other local groups.  Routers are typically \r\n            configured with filters to prevent multicast traffic in this range from flowing outside\r\n            of the local network.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemotePort\">\r\n            <summary>\r\n            Gets or sets the TCP port number of the remote host or multicast group to which \r\n            the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> should sent the logging event.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number of the remote host or multicast group to which the logging event \r\n            will be sent.\r\n            </value>\r\n            <remarks>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will send messages to this TCP port number\r\n            on the remote host or multicast group.\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.LocalPort\">\r\n            <summary>\r\n            Gets or sets the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number from which the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will communicate.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/> will bind to this port for sending messages.\r\n            </para>\r\n            <para>\r\n            Setting the value to 0 (the default) will cause the udp client not to bind to\r\n            a local port.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Encoding\">\r\n            <summary>\r\n            Gets or sets <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Appender.UdpAppender.Encoding\"/> used to write the packets.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.Client\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>.\r\n            </value>\r\n            <remarks>\r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> creates a <see cref=\"T:System.Net.Sockets.UdpClient\"/> to send logging events \r\n            over a network.  Classes deriving from <see cref=\"T:log4net.Appender.UdpAppender\"/> can use this\r\n            property to get or set this <see cref=\"T:System.Net.Sockets.UdpClient\"/>.  Use the underlying <see cref=\"T:System.Net.Sockets.UdpClient\"/>\r\n            returned from <see cref=\"P:log4net.Appender.UdpAppender.Client\"/> if you require access beyond that which \r\n            <see cref=\"T:log4net.Appender.UdpAppender\"/> provides.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RemoteEndPoint\">\r\n            <summary>\r\n            Gets or sets the cached remote endpoint to which the logging events should be sent.\r\n            </summary>\r\n            <value>\r\n            The cached remote endpoint to which the logging events will be sent.\r\n            </value>\r\n            <remarks>\r\n            The <see cref=\"M:log4net.Appender.UdpAppender.ActivateOptions\"/> method will initialize the remote endpoint \r\n            with the values of the <see cref=\"P:log4net.Appender.UdpAppender.RemoteAddress\"/> and <see cref=\"P:log4net.Appender.UdpAppender.RemotePort\"/>\r\n            properties.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.UdpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.DefaultSyslogPort\">\r\n            <summary>\r\n            Syslog port 514\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            This instance of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender\"/> class is set up to write \r\n            to a remote syslog daemon.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.AddMapping(log4net.Appender.RemoteSyslogAppender.LevelSeverity)\">\r\n            <summary>\r\n            Add a mapping of level to severity\r\n            </summary>\r\n            <param name=\"mapping\">The mapping to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a <see cref=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\"/> mapping to this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This method is called by the <see cref=\"M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the event to a remote syslog daemon.\r\n            </para>\r\n            <para>\r\n            The format of the output will depend on the appender's layout.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the options for this appender\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize the level to syslog severity mappings set on this appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GetSeverity(log4net.Core.Level)\">\r\n            <summary>\r\n            Translates a log4net level to a syslog severity.\r\n            </summary>\r\n            <param name=\"level\">A log4net level.</param>\r\n            <returns>A syslog severity.</returns>\r\n            <remarks>\r\n            <para>\r\n            Translates a log4net level to a syslog severity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemoteSyslogAppender.GeneratePriority(log4net.Appender.RemoteSyslogAppender.SyslogFacility,log4net.Appender.RemoteSyslogAppender.SyslogSeverity)\">\r\n            <summary>\r\n            Generate a syslog priority.\r\n            </summary>\r\n            <param name=\"facility\">The syslog facility.</param>\r\n            <param name=\"severity\">The syslog severity.</param>\r\n            <returns>A syslog priority.</returns>\r\n            <remarks>\r\n            <para>\r\n            Generate a syslog priority.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_facility\">\r\n            <summary>\r\n            The facility. The default facility is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_identity\">\r\n            <summary>\r\n            The message identity\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.m_levelMapping\">\r\n            <summary>\r\n            Mapping from level object to syslog severity\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Identity\">\r\n            <summary>\r\n            Message identity\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An identifier is specified with each log message. This can be specified\r\n            by setting the <see cref=\"P:log4net.Appender.RemoteSyslogAppender.Identity\"/> property. The identity (also know \r\n            as the tag) must not contain white space. The default value for the\r\n            identity is the application name (from <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/>).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.Facility\">\r\n            <summary>\r\n            Syslog facility\r\n            </summary>\r\n            <remarks>\r\n            Set to one of the <see cref=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\"/> values. The list of\r\n            facilities is predefined and cannot be extended. The default value\r\n            is <see cref=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogSeverity\">\r\n            <summary>\r\n            syslog severities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog severities.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Emergency\">\r\n            <summary>\r\n            system is unusable\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Alert\">\r\n            <summary>\r\n            action must be taken immediately\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Critical\">\r\n            <summary>\r\n            critical conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Error\">\r\n            <summary>\r\n            error conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Warning\">\r\n            <summary>\r\n            warning conditions\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Notice\">\r\n            <summary>\r\n            normal but significant condition\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Informational\">\r\n            <summary>\r\n            informational\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Debug\">\r\n            <summary>\r\n            debug-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.SyslogFacility\">\r\n            <summary>\r\n            syslog facilities\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The syslog facilities\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Kernel\">\r\n            <summary>\r\n            kernel messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User\">\r\n            <summary>\r\n            random user-level messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Mail\">\r\n            <summary>\r\n            mail system\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Daemons\">\r\n            <summary>\r\n            system daemons\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization\">\r\n            <summary>\r\n            security/authorization messages\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Syslog\">\r\n            <summary>\r\n            messages generated internally by syslogd\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Printer\">\r\n            <summary>\r\n            line printer subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.News\">\r\n            <summary>\r\n            network news subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Uucp\">\r\n            <summary>\r\n            UUCP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock\">\r\n            <summary>\r\n            clock (cron/at) daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization2\">\r\n            <summary>\r\n            security/authorization  messages (private)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ftp\">\r\n            <summary>\r\n            ftp daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ntp\">\r\n            <summary>\r\n            NTP subsystem\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Audit\">\r\n            <summary>\r\n            log audit\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Alert\">\r\n            <summary>\r\n            log alert\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock2\">\r\n            <summary>\r\n            clock daemon\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local0\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local1\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local2\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local3\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local4\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local5\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local6\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local7\">\r\n            <summary>\r\n            reserved for local use\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemoteSyslogAppender.LevelSeverity\">\r\n            <summary>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to act as a mapping between the level that a logging call is made at and\r\n            the syslog severity that is should be logged at.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemoteSyslogAppender.LevelSeverity.Severity\">\r\n            <summary>\r\n            The mapped syslog severity for the specified level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Required property.\r\n            The mapped syslog severity for the specified level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender\">\r\n            <summary>\r\n            Delivers logging events to a remote logging sink. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This Appender is designed to deliver events to a remote sink. \r\n            That is any object that implements the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface. It delivers the events using .NET remoting. The\r\n            object to deliver events to is specified by setting the\r\n            appenders <see cref=\"P:log4net.Appender.RemotingAppender.Sink\"/> property.</para>\r\n            <para>\r\n            The RemotingAppender buffers events before sending them. This allows it to \r\n            make more efficient use of the remoting infrastructure.</para>\r\n            <para>\r\n            Once the buffer is full the events are still not sent immediately. \r\n            They are scheduled to be sent using a pool thread. The effect is that \r\n            the send occurs asynchronously. This is very important for a \r\n            number of non obvious reasons. The remoting infrastructure will \r\n            flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.</para>\r\n            <para>\r\n            Because the events are sent asynchronously using pool threads it is possible to close \r\n            this appender before all the queued events have been sent.\r\n            When closing the appender attempts to wait until all the queued events have been sent, but \r\n            this will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If this appender is being closed because the <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for. If the runtime terminates the threads before\r\n            the queued events have been sent then they will be lost. To ensure that all events\r\n            are sent the appender must be closed before the application exits. See \r\n            <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/> for details on how to shutdown\r\n            log4net programmatically.</para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RemotingAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RemotingAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            The events are not sent immediately. They are scheduled to be sent\r\n            using a pool thread. The effect is that the send occurs asynchronously.\r\n            This is very important for a number of non obvious reasons. The remoting\r\n            infrastructure will flow thread local variables (stored in the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>),\r\n            if they are marked as <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>, across the \r\n            remoting boundary. If the server is not contactable then\r\n            the remoting infrastructure will clear the <see cref=\"T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative\"/>\r\n            objects from the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/>. To prevent a logging failure from\r\n            having side effects on the calling application the remoting call must be made\r\n            from a separate thread to the one used by the application. A <see cref=\"T:System.Threading.ThreadPool\"/>\r\n            thread is used for this. If no <see cref=\"T:System.Threading.ThreadPool\"/> thread is available then\r\n            the events will block in the thread pool manager until a thread is available.\r\n            </remarks>\r\n            <param name=\"events\">The events to send.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.OnClose\">\r\n            <summary>\r\n            Override base class close.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method waits while there are queued work items. The events are\r\n            sent asynchronously using <see cref=\"T:System.Threading.ThreadPool\"/> work items. These items\r\n            will be sent once a thread pool thread is available to send them, therefore\r\n            it is possible to close the appender before all the queued events have been\r\n            sent.</para>\r\n            <para>\r\n            This method attempts to wait until all the queued events have been sent, but this \r\n            method will timeout after 30 seconds regardless.</para>\r\n            <para>\r\n            If the appender is being closed because the <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event has fired it may not be possible to send all the queued events. During process\r\n            exit the runtime limits the time that a <see cref=\"E:System.AppDomain.ProcessExit\"/>\r\n            event handler is allowed to run for.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.BeginAsyncSend\">\r\n            <summary>\r\n            A work item is being queued into the thread pool\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.EndAsyncSend\">\r\n            <summary>\r\n            A work item from the thread pool has completed\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.SendBufferCallback(System.Object)\">\r\n            <summary>\r\n            Send the contents of the buffer to the remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This method is designed to be used with the <see cref=\"T:System.Threading.ThreadPool\"/>.\r\n            This method expects to be passed an array of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the state param.\r\n            </remarks>\r\n            <param name=\"state\">the logging events to send</param>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkUrl\">\r\n            <summary>\r\n            The URL of the remote sink.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_sinkObj\">\r\n            <summary>\r\n            The local proxy (.NET remoting) for the remote logging sink.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_queuedCallbackCount\">\r\n            <summary>\r\n            The number of queued callbacks currently waiting or executing\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RemotingAppender.m_workQueueEmptyEvent\">\r\n            <summary>\r\n            Event used to signal when there are no queued work items\r\n            </summary>\r\n            <remarks>\r\n            This event is set when there are no queued work items. In this\r\n            state it is safe to close the appender.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RemotingAppender.Sink\">\r\n            <summary>\r\n            Gets or sets the URL of the well-known object that will accept \r\n            the logging events.\r\n            </summary>\r\n            <value>\r\n            The well-known URL of the remote sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The URL of the remoting sink that will accept logging events.\r\n            The sink must implement the <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\">\r\n            <summary>\r\n            Interface used to deliver <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            This interface must be implemented by a remoting sink\r\n            if the <see cref=\"T:log4net.Appender.RemotingAppender\"/> is to be used\r\n            to deliver logging events to the sink.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Delivers logging events to the remote sink\r\n            </summary>\r\n            <param name=\"events\">Array of events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers logging events to the remote sink\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender\">\r\n            <summary>\r\n            Appender that rolls log files based on size or date or both.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            RollingFileAppender can roll log files based on size or date or both\r\n            depending on the setting of the <see cref=\"P:log4net.Appender.RollingFileAppender.RollingStyle\"/> property.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\"/> the log file will be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\"/> the log file will be rolled\r\n            once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/> the log file will be\r\n            rolled once the date boundary specified in the <see cref=\"P:log4net.Appender.RollingFileAppender.DatePattern\"/> property\r\n            is crossed, but within a date boundary the file will also be rolled\r\n            once its size exceeds the <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/>.\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> the log file will be rolled when\r\n            the appender is configured. This effectively means that the log file can be\r\n            rolled once per program execution.\r\n            </para>\r\n            <para>\r\n            A of few additional optional features have been added:\r\n            <list type=\"bullet\">\r\n            <item>Attach date pattern for current log file <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/></item>\r\n            <item>Backup number increments for newer files <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/></item>\r\n            <item>Infinite number of backups by file size <see cref=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\"/></item>\r\n            </list>\r\n            </para>\r\n            \r\n            <note>\r\n            <para>\r\n            For large or infinite numbers of backup files a <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> \r\n            greater than zero is highly recommended, otherwise all the backup files need\r\n            to be renamed each time a new backup is created.\r\n            </para>\r\n            <para>\r\n            When Date/Time based rolling is used setting <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> \r\n            to <see langword=\"true\"/> will reduce the number of file renamings to few or none.\r\n            </para>\r\n            </note>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            Changing <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> or <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> without clearing\r\n            the log file directory of backup files will cause unexpected and unwanted side effects.  \r\n            </para>\r\n            </note>\r\n            \r\n            <para>\r\n            If Date/Time based rolling is enabled this appender will attempt to roll existing files\r\n            in the directory without a Date/Time tag based on the last write date of the base log file.\r\n            The appender only rolls the log file when a message is logged. If Date/Time based rolling \r\n            is enabled then the appender will not roll the log file at the Date/Time boundary but\r\n            at the point when the next message is logged after the boundary has been crossed.\r\n            </para>\r\n            \r\n            <para>\r\n            The <see cref=\"T:log4net.Appender.RollingFileAppender\"/> extends the <see cref=\"T:log4net.Appender.FileAppender\"/> and\r\n            has the same behavior when opening the log file.\r\n            The appender will first try to open the file for writing when <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>\r\n            is called. This will typically be during configuration.\r\n            If the file cannot be opened for writing the appender will attempt\r\n            to open the file again each time a message is logged to the appender.\r\n            If the file cannot be opened for writing when a message is logged then\r\n            the message will be discarded by this appender.\r\n            </para>\r\n            <para>\r\n            When rolling a backup file necessitates deleting an older backup file the\r\n            file to be deleted is moved to a temporary name before being deleted.\r\n            </para>\r\n            \r\n            <note type=\"caution\">\r\n            <para>\r\n            A maximum number of backup files when rolling on date/time boundaries is not supported.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Edward Smit</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.RollingFileAppender\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RollingFileAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.SetQWForFiles(System.IO.TextWriter)\">\r\n            <summary>\r\n            Sets the quiet writer being used.\r\n            </summary>\r\n            <remarks>\r\n            This method can be overridden by sub classes.\r\n            </remarks>\r\n            <param name=\"writer\">the writer to set</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write out a logging event.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to write to file.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles append time behavior for RollingFileAppender.  This checks\r\n            if a roll over either by date (checked first) or time (checked second)\r\n            is need and then appends to the file last.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Write out an array of logging events.\r\n            </summary>\r\n            <param name=\"loggingEvents\">the events to write to file.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles append time behavior for RollingFileAppender.  This checks\r\n            if a roll over either by date (checked first) or time (checked second)\r\n            is need and then appends to the file last.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.AdjustFileBeforeAppend\">\r\n            <summary>\r\n            Performs any required rolling before outputting the next event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Handles append time behavior for RollingFileAppender.  This checks\r\n            if a roll over either by date (checked first) or time (checked second)\r\n            is need and then appends to the file last.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.OpenFile(System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates and opens the file for logging.  If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/>\r\n            is false then the fully qualified name is determined and used.\r\n            </summary>\r\n            <param name=\"fileName\">the name of the file to open</param>\r\n            <param name=\"append\">true to append to existing file</param>\r\n            <remarks>\r\n            <para>This method will ensure that the directory structure\r\n            for the <paramref name=\"fileName\"/> specified exists.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetNextOutputFileName(System.String)\">\r\n            <summary>\r\n            Get the current output file name\r\n            </summary>\r\n            <param name=\"fileName\">the base file name</param>\r\n            <returns>the output file name</returns>\r\n            <remarks>\r\n            The output file name is based on the base fileName specified.\r\n            If <see cref=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\"/> is set then the output \r\n            file name is the same as the base file passed in. Otherwise\r\n            the output file depends on the date pattern, on the count\r\n            direction or both.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DetermineCurSizeRollBackups\">\r\n            <summary>\r\n            Determines curSizeRollBackups (only within the current roll point)\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetWildcardPatternForFile(System.String)\">\r\n            <summary>\r\n            Generates a wildcard pattern that can be used to find all files\r\n            that are similar to the base file name.\r\n            </summary>\r\n            <param name=\"baseFileName\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetExistingFiles(System.String)\">\r\n            <summary>\r\n            Builds a list of filenames for all files matching the base filename plus a file\r\n            pattern.\r\n            </summary>\r\n            <param name=\"baseFilePath\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverIfDateBoundaryCrossing\">\r\n            <summary>\r\n            Initiates a roll over if needed for crossing a date boundary since the last run.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ExistingInit\">\r\n            <summary>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes based on existing conditions at time of <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/>.\r\n            The following is done\r\n            <list type=\"bullet\">\r\n            <item>determine curSizeRollBackups (only within the current roll point)</item>\r\n            <item>initiates a roll over if needed for crossing a date boundary since the last run.</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeFromOneFile(System.String,System.String)\">\r\n            <summary>\r\n            Does the work of bumping the 'current' file counter higher\r\n            to the highest count when an incremental file name is seen.\r\n            The highest count is either the first file (when count direction\r\n            is greater than 0) or the last file (when count direction less than 0).\r\n            In either case, we want to know the highest count that is present.\r\n            </summary>\r\n            <param name=\"baseFile\"></param>\r\n            <param name=\"curFileName\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.GetBackUpIndex(System.String)\">\r\n            <summary>\r\n            Attempts to extract a number from the end of the file name that indicates\r\n            the number of the times the file has been rolled over.\r\n            </summary>\r\n            <remarks>\r\n            Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes.\r\n            </remarks>\r\n            <param name=\"curFileName\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.InitializeRollBackups(System.String,System.Collections.ArrayList)\">\r\n            <summary>\r\n            Takes a list of files and a base file name, and looks for \r\n            'incremented' versions of the base file.  Bumps the max\r\n            count up to the highest count seen.\r\n            </summary>\r\n            <param name=\"baseFile\"></param>\r\n            <param name=\"arrayFiles\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ComputeCheckPeriod(System.String)\">\r\n            <summary>\r\n            Calculates the RollPoint for the datePattern supplied.\r\n            </summary>\r\n            <param name=\"datePattern\">the date pattern to calculate the check period for</param>\r\n            <returns>The RollPoint that is most accurate for the date pattern supplied</returns>\r\n            <remarks>\r\n            Essentially the date pattern is examined to determine what the\r\n            most suitable roll point is. The roll point chosen is the roll point\r\n            with the smallest period that can be detected using the date pattern\r\n            supplied. i.e. if the date pattern only outputs the year, month, day \r\n            and hour then the smallest roll point that can be detected would be\r\n            and hourly roll point as minutes could not be detected.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.RollingFileAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Sets initial conditions including date/time roll over information, first check,\r\n            scheduledFilename, and calls <see cref=\"M:log4net.Appender.RollingFileAppender.ExistingInit\"/> to initialize\r\n            the current number of backups.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.CombinePath(System.String,System.String)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"path1\"></param>\r\n            <param name=\"path2\">.1, .2, .3, etc.</param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverTime(System.Boolean)\">\r\n            <summary>\r\n            Rollover the file(s) to date/time tagged file(s).\r\n            </summary>\r\n            <param name=\"fileIsOpen\">set to true if the file to be rolled is currently open</param>\r\n            <remarks>\r\n            <para>\r\n            Rollover the file(s) to date/time tagged file(s).\r\n            Resets curSizeRollBackups. \r\n            If fileIsOpen is set then the new file is opened (through SafeOpenFile).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollFile(System.String,System.String)\">\r\n            <summary>\r\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>.\r\n            </summary>\r\n            <param name=\"fromFile\">Name of existing file to roll.</param>\r\n            <param name=\"toFile\">New name for file.</param>\r\n            <remarks>\r\n            <para>\r\n            Renames file <paramref name=\"fromFile\"/> to file <paramref name=\"toFile\"/>. It\r\n            also checks for existence of target file and deletes if it does.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.FileExists(System.String)\">\r\n            <summary>\r\n            Test if a file exists at a specified path\r\n            </summary>\r\n            <param name=\"path\">the path to the file</param>\r\n            <returns>true if the file exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a file exists at a specified path\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.DeleteFile(System.String)\">\r\n            <summary>\r\n            Deletes the specified file if it exists.\r\n            </summary>\r\n            <param name=\"fileName\">The file to delete.</param>\r\n            <remarks>\r\n            <para>\r\n            Delete a file if is exists.\r\n            The file is first moved to a new filename then deleted.\r\n            This allows the file to be removed even when it cannot\r\n            be deleted, but it still can be moved.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverSize\">\r\n            <summary>\r\n            Implements file roll base on file size.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the maximum number of size based backups is reached\r\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\r\n            file is deleted -- its index determined by the sign of countDirection.\r\n            If <c>countDirection</c> &lt; 0, then files\r\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\r\n            are renamed to {<c>File.2</c>, ...,\r\n            <c>File.curSizeRollBackups</c>}. Moreover, <c>File</c> is\r\n            renamed <c>File.1</c> and closed.\r\n            </para>\r\n            <para>\r\n            A new file is created to receive further log output.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\r\n            <c>File</c> is truncated with no backup files created.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\r\n            renamed if needed and no files are deleted.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.RollOverRenameFiles(System.String)\">\r\n            <summary>\r\n            Implements file roll.\r\n            </summary>\r\n            <param name=\"baseFileName\">the base name to rename</param>\r\n            <remarks>\r\n            <para>\r\n            If the maximum number of size based backups is reached\r\n            (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest\r\n            file is deleted -- its index determined by the sign of countDirection.\r\n            If <c>countDirection</c> &lt; 0, then files\r\n            {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}\r\n            are renamed to {<c>File.2</c>, ...,\r\n            <c>File.curSizeRollBackups</c>}. \r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> is equal to zero, then the\r\n            <c>File</c> is truncated with no backup files created.\r\n            </para>\r\n            <para>\r\n            If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is\r\n            renamed if needed and no files are deleted.\r\n            </para>\r\n            <para>\r\n            This is called by <see cref=\"M:log4net.Appender.RollingFileAppender.RollOverSize\"/> to rename the files.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.RollingFileAppender.NextCheckDate(System.DateTime,log4net.Appender.RollingFileAppender.RollPoint)\">\r\n            <summary>\r\n            Get the start time of the next window for the current rollpoint\r\n            </summary>\r\n            <param name=\"currentDateTime\">the current date</param>\r\n            <param name=\"rollPoint\">the type of roll point we are working with</param>\r\n            <returns>the start time for the next roll point an interval after the currentDateTime date</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the date of the next roll point after the currentDateTime date passed to the method.\r\n            </para>\r\n            <para>\r\n            The basic strategy is to subtract the time parts that are less significant\r\n            than the rollpoint from the current time. This should roll the time back to\r\n            the start of the time window for the current rollpoint. Then we add 1 window\r\n            worth of time and get the start time of the next window for the rollpoint.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_dateTime\">\r\n            <summary>\r\n            This object supplies the current date/time.  Allows test code to plug in\r\n            a method to control this class when testing date/time based rolling. The default\r\n            implementation uses the underlying value of DateTime.Now.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_datePattern\">\r\n            <summary>\r\n            The date pattern. By default, the pattern is set to <c>\".yyyy-MM-dd\"</c> \r\n            meaning daily rollover.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_scheduledFilename\">\r\n            <summary>\r\n            The actual formatted filename that is currently being written to\r\n            or will be the file transferred to on roll over\r\n            (based on staticLogFileName).\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_nextCheck\">\r\n            <summary>\r\n            The timestamp when we shall next recompute the filename.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_now\">\r\n            <summary>\r\n            Holds date of last roll over\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollPoint\">\r\n            <summary>\r\n            The type of rolling done\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxFileSize\">\r\n            <summary>\r\n            The default maximum file size is 10MB\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_maxSizeRollBackups\">\r\n            <summary>\r\n            There is zero backup files by default\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_curSizeRollBackups\">\r\n            <summary>\r\n            How many sized based backups have been made so far\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_countDirection\">\r\n            <summary>\r\n            The rolling file count direction. \r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollingStyle\">\r\n            <summary>\r\n            The rolling mode used in this appender.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollDate\">\r\n            <summary>\r\n            Cache flag set if we are rolling by date.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_rollSize\">\r\n            <summary>\r\n            Cache flag set if we are rolling by size.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_staticLogFileName\">\r\n            <summary>\r\n            Value indicating whether to always log to the same file.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_preserveLogFileNameExtension\">\r\n            <summary>\r\n            Value indicating whether to preserve the file name extension when rolling.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.m_baseFileName\">\r\n            <summary>\r\n            FileName provided in configuration.  Used for rolling properly\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.s_date1970\">\r\n            <summary>\r\n            The 1st of January 1970 in UTC\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DateTimeStrategy\">\r\n            <summary>\r\n            Gets or sets the strategy for determining the current date and time. The default\r\n            implementation is to use LocalDateTime which internally calls through to DateTime.Now. \r\n            DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying\r\n            <see cref=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\"/>.\r\n            </summary>\r\n            <value>\r\n            An implementation of the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> interface which returns the current date and time.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> used to return the current date and time.\r\n            </para>\r\n            <para>\r\n            There are two built strategies for determining the current date and time, \r\n            <see cref=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\"/>\r\n            and <see cref=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The default strategy is <see cref=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.DatePattern\">\r\n            <summary>\r\n            Gets or sets the date pattern to be used for generating file names\r\n            when rolling over on date.\r\n            </summary>\r\n            <value>\r\n            The date pattern to be used for generating file names when rolling \r\n            over on date.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Takes a string in the same format as expected by \r\n            <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/>.\r\n            </para>\r\n            <para>\r\n            This property determines the rollover schedule when rolling over\r\n            on date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups\">\r\n            <summary>\r\n            Gets or sets the maximum number of backup files that are kept before\r\n            the oldest is erased.\r\n            </summary>\r\n            <value>\r\n            The maximum number of backup files that are kept before the oldest is\r\n            erased.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If set to zero, then there will be no backup files and the log file \r\n            will be truncated when it reaches <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/>.  \r\n            </para>\r\n            <para>\r\n            If a negative number is supplied then no deletions will be made.  Note \r\n            that this could result in very slow performance as a large number of \r\n            files are rolled over unless <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> is used.\r\n            </para>\r\n            <para>\r\n            The maximum applies to <b>each</b> time based group of files and \r\n            <b>not</b> the total.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size in bytes that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property is equivalent to <see cref=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\"/> except\r\n            that it is required for differentiating the setter taking a\r\n            <see cref=\"T:System.Int64\"/> argument from the setter taking a <see cref=\"T:System.String\"/> \r\n            argument.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB (10*1024*1024).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.MaximumFileSize\">\r\n            <summary>\r\n            Gets or sets the maximum size that the output file is allowed to reach\r\n            before being rolled over to backup files.\r\n            </summary>\r\n            <value>\r\n            The maximum size that the output file is allowed to reach before being \r\n            rolled over to backup files.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property allows you to specify the maximum size with the\r\n            suffixes \"KB\", \"MB\" or \"GB\" so that the size is interpreted being \r\n            expressed respectively in kilobytes, megabytes or gigabytes. \r\n            </para>\r\n            <para>\r\n            For example, the value \"10KB\" will be interpreted as 10240 bytes.\r\n            </para>\r\n            <para>\r\n            The default maximum file size is 10MB.\r\n            </para>\r\n            <para>\r\n            If you have the option to set the maximum file size programmatically\r\n            consider using the <see cref=\"P:log4net.Appender.RollingFileAppender.MaxFileSize\"/> property instead as this\r\n            allows you to set the size in bytes as a <see cref=\"T:System.Int64\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.CountDirection\">\r\n            <summary>\r\n            Gets or sets the rolling file count direction. \r\n            </summary>\r\n            <value>\r\n            The rolling file count direction.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Indicates if the current file is the lowest numbered file or the\r\n            highest numbered file.\r\n            </para>\r\n            <para>\r\n            By default newer files have lower numbers (<see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &lt; 0),\r\n            i.e. log.1 is most recent, log.5 is the 5th backup, etc...\r\n            </para>\r\n            <para>\r\n            <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 does the opposite i.e.\r\n            log.1 is the first backup made, log.5 is the 5th backup made, etc.\r\n            For infinite backups use <see cref=\"P:log4net.Appender.RollingFileAppender.CountDirection\"/> &gt;= 0 to reduce \r\n            rollover costs.\r\n            </para>\r\n            <para>The default file count direction is -1.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.RollingStyle\">\r\n            <summary>\r\n            Gets or sets the rolling style.\r\n            </summary>\r\n            <value>The rolling style.</value>\r\n            <remarks>\r\n            <para>\r\n            The default rolling style is <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\"/>.\r\n            </para>\r\n            <para>\r\n            When set to <see cref=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\"/> this appender's\r\n            <see cref=\"P:log4net.Appender.FileAppender.AppendToFile\"/> property is set to <c>false</c>, otherwise\r\n            the appender would append to a single file rather than rolling\r\n            the file each time it is opened.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to preserve the file name extension when rolling.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the file name extension should be preserved.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup.\r\n            However, under Windows the new file name will loose any program associations as the\r\n            extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or\r\n            file.curSizeRollBackup.log to maintain any program associations.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.StaticLogFileName\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to always log to\r\n            the same file.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if always should be logged to the same file, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            By default file.log is always the current file.  Optionally\r\n            file.log.yyyy-mm-dd for current formatted datePattern can by the currently\r\n            logging file (or file.log.curSizeRollBackup or even\r\n            file.log.yyyy-mm-dd.curSizeRollBackup).\r\n            </para>\r\n            <para>\r\n            This will make time based rollovers with a large number of backups \r\n            much faster as the appender it won't have to rename all the backups!\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollingMode\">\r\n            <summary>\r\n            Style of rolling to use\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Style of rolling to use\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Once\">\r\n            <summary>\r\n            Roll files once per program execution\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Roll files once per program execution.\r\n            Well really once each time this appender is\r\n            configured.\r\n            </para>\r\n            <para>\r\n            Setting this option also sets <c>AppendToFile</c> to\r\n            <c>false</c> on the <c>RollingFileAppender</c>, otherwise\r\n            this appender would just be a normal file appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Size\">\r\n            <summary>\r\n            Roll files based only on the size of the file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Date\">\r\n            <summary>\r\n            Roll files based only on the date\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollingMode.Composite\">\r\n            <summary>\r\n            Roll files based on both the size and date of the file\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.RollPoint\">\r\n            <summary>\r\n            The code assumes that the following 'time' constants are in a increasing sequence.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The code assumes that the following 'time' constants are in a increasing sequence.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.InvalidRollPoint\">\r\n            <summary>\r\n            Roll the log not based on the date\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMinute\">\r\n            <summary>\r\n            Roll the log for each minute\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfHour\">\r\n            <summary>\r\n            Roll the log for each hour\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.HalfDay\">\r\n            <summary>\r\n            Roll the log twice a day (midday and midnight)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfDay\">\r\n            <summary>\r\n            Roll the log each day (midnight)\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfWeek\">\r\n            <summary>\r\n            Roll the log each week\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMonth\">\r\n            <summary>\r\n            Roll the log each month\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.IDateTime\">\r\n            <summary>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            This interface is used to supply Date/Time information to the <see cref=\"T:log4net.Appender.RollingFileAppender\"/>.\r\n            Used primarily to allow test classes to plug themselves in so they can\r\n            supply test date/times.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.IDateTime.Now\">\r\n            <summary>\r\n            Gets the <i>current</i> time.\r\n            </summary>\r\n            <value>The <i>current</i> time.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <i>current</i> time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.LocalDateTime\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> that returns the current time.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.LocalDateTime.Now\">\r\n            <summary>\r\n            Gets the <b>current</b> time.\r\n            </summary>\r\n            <value>The <b>current</b> time.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <b>current</b> time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.RollingFileAppender.UniversalDateTime\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.Appender.RollingFileAppender.IDateTime\"/> that returns the current time as the coordinated universal time (UTC).\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.RollingFileAppender.UniversalDateTime.Now\">\r\n            <summary>\r\n            Gets the <b>current</b> time.\r\n            </summary>\r\n            <value>The <b>current</b> time.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <b>current</b> time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender\">\r\n            <summary>\r\n            Send an e-mail when a specific logging event occurs, typically on errors \r\n            or fatal errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            <note type=\"caution\">\r\n            Authentication and setting the server Port are only available on the MS .NET 1.1 runtime.\r\n            For these features to be enabled you need to ensure that you are using a version of\r\n            the log4net assembly that is built against the MS .NET 1.1 framework and that you are\r\n            running the your application on the MS .NET 1.1 runtime. On all other platforms only sending\r\n            unauthenticated messages to a server listening on port 25 (the default) is supported.\r\n            </note>\r\n            <para>\r\n            Authentication is supported by setting the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property to\r\n            either <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> or <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>.\r\n            If using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> authentication then the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/>\r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> properties must also be set.\r\n            </para>\r\n            <para>\r\n            To set the SMTP server port use the <see cref=\"P:log4net.Appender.SmtpAppender.Port\"/> property. The default port is 25.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Sends the contents of the cyclic buffer as an e-mail message.\r\n            </summary>\r\n            <param name=\"events\">The logging events to send.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpAppender.SendEmail(System.String)\">\r\n            <summary>\r\n            Send the email message\r\n            </summary>\r\n            <param name=\"messageBody\">the body text to include in the mail</param>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.To\">\r\n            <summary>\r\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions).\r\n            </summary>\r\n            <value>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Cc\">\r\n            <summary>\r\n            Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses \r\n            that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions).\r\n            </summary>\r\n            <value>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            <para>\r\n            For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Bcc\">\r\n            <summary>\r\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses\r\n            that will be blind carbon copied.\r\n            </summary>\r\n            <value>\r\n            A semicolon-delimited list of e-mail addresses.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A semicolon-delimited list of recipient e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.From\">\r\n            <summary>\r\n            Gets or sets the e-mail address of the sender.\r\n            </summary>\r\n            <value>\r\n            The e-mail address of the sender.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The e-mail address of the sender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Subject\">\r\n            <summary>\r\n            Gets or sets the subject line of the e-mail message.\r\n            </summary>\r\n            <value>\r\n            The subject line of the e-mail message.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The subject line of the e-mail message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.SmtpHost\">\r\n            <summary>\r\n            Gets or sets the name of the SMTP relay mail server to use to send \r\n            the e-mail messages.\r\n            </summary>\r\n            <value>\r\n            The name of the e-mail relay server. If SmtpServer is not set, the \r\n            name of the local SMTP server is used.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the e-mail relay server. If SmtpServer is not set, the \r\n            name of the local SMTP server is used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.LocationInfo\">\r\n            <summary>\r\n            Obsolete\r\n            </summary>\r\n            <remarks>\r\n            Use the BufferingAppenderSkeleton Fix methods instead \r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            Obsolete property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Authentication\">\r\n            <summary>\r\n            The mode to use to authentication with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            Valid Authentication mode values are: <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>, \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, and <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/>. \r\n            The default value is <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\"/>. When using \r\n            <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/> you must specify the <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> \r\n            and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> to use to authenticate.\r\n            When using <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\"/> the Windows credentials for the current\r\n            thread, if impersonating, or the process will be used to authenticate. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Username\">\r\n            <summary>\r\n            The username to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the username will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Password\">\r\n            <summary>\r\n            The password to use to authenticate with the SMTP server\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Authentication is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            A <see cref=\"P:log4net.Appender.SmtpAppender.Username\"/> and <see cref=\"P:log4net.Appender.SmtpAppender.Password\"/> must be specified when \r\n            <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> is set to <see cref=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\"/>, \r\n            otherwise the password will be ignored. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Port\">\r\n            <summary>\r\n            The port on which the SMTP server is listening\r\n            </summary>\r\n            <remarks>\r\n            <note type=\"caution\">Server Port is only available on the MS .NET 1.1 runtime.</note>\r\n            <para>\r\n            The port on which the SMTP server is listening. The default\r\n            port is <c>25</c>. The Port can only be changed when running on\r\n            the MS .NET 1.1 runtime.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.Priority\">\r\n            <summary>\r\n            Gets or sets the priority of the e-mail message\r\n            </summary>\r\n            <value>\r\n            One of the <see cref=\"T:System.Net.Mail.MailPriority\"/> values.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Sets the priority of the e-mails generated by this\r\n            appender. The default priority is <see cref=\"F:System.Net.Mail.MailPriority.Normal\"/>.\r\n            </para>\r\n            <para>\r\n            If you are using this appender to report errors then\r\n            you may want to set the priority to <see cref=\"F:System.Net.Mail.MailPriority.High\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.EnableSsl\">\r\n            <summary>\r\n            Enable or disable use of SSL when sending e-mail message\r\n            </summary>\r\n            <remarks>\r\n            This is available on MS .NET 2.0 runtime and higher\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.ReplyTo\">\r\n            <summary>\r\n            Gets or sets the reply-to e-mail address.\r\n            </summary>\r\n            <remarks>\r\n            This is available on MS .NET 2.0 runtime and higher\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpAppender.SmtpAuthentication\">\r\n            <summary>\r\n            Values for the <see cref=\"P:log4net.Appender.SmtpAppender.Authentication\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            SMTP authentication modes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.None\">\r\n            <summary>\r\n            No authentication\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic\">\r\n            <summary>\r\n            Basic authentication.\r\n            </summary>\r\n            <remarks>\r\n            Requires a username and password to be supplied\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm\">\r\n            <summary>\r\n            Integrated authentication\r\n            </summary>\r\n            <remarks>\r\n            Uses the Windows credentials from the current thread or process to authenticate.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.SmtpPickupDirAppender\">\r\n            <summary>\r\n            Send an email when a specific logging event occurs, typically on errors \r\n            or fatal errors. Rather than sending via smtp it writes a file into the\r\n            directory specified by <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>. This allows services such\r\n            as the IIS SMTP agent to manage sending the messages.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The configuration for this appender is identical to that of the <c>SMTPAppender</c>,\r\n            except that instead of specifying the <c>SMTPAppender.SMTPHost</c> you specify\r\n            <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\"/>.\r\n            </para>\r\n            <para>\r\n            The number of logging events delivered in this e-mail depend on\r\n            the value of <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> option. The\r\n            <see cref=\"T:log4net.Appender.SmtpPickupDirAppender\"/> keeps only the last\r\n            <see cref=\"P:log4net.Appender.BufferingAppenderSkeleton.BufferSize\"/> logging events in its \r\n            cyclic buffer. This keeps memory requirements at a reasonable level while \r\n            still delivering useful application context.\r\n            </para>\r\n            </remarks>\r\n            <author>Niall Daley</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.SendBuffer(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Sends the contents of the cyclic buffer as an e-mail message.\r\n            </summary>\r\n            <param name=\"events\">The logging events to send.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the contents of the cyclic buffer as an e-mail message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\">\r\n            <summary>\r\n            Activate the options on this appender. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.SmtpPickupDirAppender.ConvertToFullPath(System.String)\">\r\n            <summary>\r\n            Convert a path into a fully qualified path.\r\n            </summary>\r\n            <param name=\"path\">The path to convert.</param>\r\n            <returns>The fully qualified path.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the path specified to a fully\r\n            qualified path. If the path is relative it is\r\n            taken as relative from the application base \r\n            directory.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.SmtpPickupDirAppender.m_securityContext\">\r\n            <summary>\r\n            The security context to use for privileged calls\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.To\">\r\n            <summary>\r\n            Gets or sets a semicolon-delimited list of recipient e-mail addresses.\r\n            </summary>\r\n            <value>\r\n            A semicolon-delimited list of e-mail addresses.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A semicolon-delimited list of e-mail addresses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.From\">\r\n            <summary>\r\n            Gets or sets the e-mail address of the sender.\r\n            </summary>\r\n            <value>\r\n            The e-mail address of the sender.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The e-mail address of the sender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.Subject\">\r\n            <summary>\r\n            Gets or sets the subject line of the e-mail message.\r\n            </summary>\r\n            <value>\r\n            The subject line of the e-mail message.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The subject line of the e-mail message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.PickupDir\">\r\n            <summary>\r\n            Gets or sets the path to write the messages to.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the path to write the messages to. This should be the same\r\n            as that used by the agent sending the messages.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> used to write to the pickup directory.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Unless a <see cref=\"P:log4net.Appender.SmtpPickupDirAppender.SecurityContext\"/> specified here for this appender\r\n            the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is queried for the\r\n            security context to use. The default behavior is to use the security context\r\n            of the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.SmtpPickupDirAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender\">\r\n            <summary>\r\n            Appender that allows clients to connect via Telnet to receive log messages\r\n            </summary>\r\n            <remarks>\t\r\n            <para>\r\n            The TelnetAppender accepts socket connections and streams logging messages\r\n            back to the client.  \r\n            The output is provided in a telnet-friendly way so that a log can be monitored \r\n            over a TCP/IP socket.\r\n            This allows simple remote monitoring of application logging.\r\n            </para>\r\n            <para>\r\n            The default <see cref=\"P:log4net.Appender.TelnetAppender.Port\"/> is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <author>Keith Long</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TelnetAppender.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the TelnetAppender class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.OnClose\">\r\n            <summary>\r\n            Overrides the parent method to close the socket handler\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes all the outstanding connections.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.ActivateOptions\">\r\n            <summary>\r\n            Initialize the appender based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Appender.TelnetAppender.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Create the socket handler and wait for connections\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to each connected client.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to each connected client.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.Port\">\r\n            <summary>\r\n            Gets or sets the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </summary>\r\n            <value>\r\n            An integer value in the range <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> to <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/> \r\n            indicating the TCP port number on which this <see cref=\"T:log4net.Appender.TelnetAppender\"/> will listen for connections.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value is 23 (the telnet port).\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The value specified is less than <see cref=\"F:System.Net.IPEndPoint.MinPort\"/> \r\n            or greater than <see cref=\"F:System.Net.IPEndPoint.MaxPort\"/>.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler\">\r\n            <summary>\r\n            Helper class to manage connected clients\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The SocketHandler class is used to accept connections from\r\n            clients.  It is threaded so that clients can connect/disconnect\r\n            asynchronously.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.#ctor(System.Int32)\">\r\n            <summary>\r\n            Opens a new server port on <paramref ref=\"port\"/>\r\n            </summary>\r\n            <param name=\"port\">the local port to listen on for connections</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a socket handler on the specified local server port.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Send(System.String)\">\r\n            <summary>\r\n            Sends a string message to each of the connected clients\r\n            </summary>\r\n            <param name=\"message\">the text to send</param>\r\n            <remarks>\r\n            <para>\r\n            Sends a string message to each of the connected clients\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.AddClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\r\n            Add a client to the internal clients list\r\n            </summary>\r\n            <param name=\"client\">client to add</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.RemoveClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)\">\r\n            <summary>\r\n            Remove a client from the internal clients list\r\n            </summary>\r\n            <param name=\"client\">client to remove</param>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.OnConnect(System.IAsyncResult)\">\r\n            <summary>\r\n            Callback used to accept a connection on the server socket\r\n            </summary>\r\n            <param name=\"asyncResult\">The result of the asynchronous operation</param>\r\n            <remarks>\r\n            <para>\r\n            On connection adds to the list of connections \r\n            if there are two many open connections you will be disconnected\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.Dispose\">\r\n            <summary>\r\n            Close all network connections\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Make sure we close all network connections\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TelnetAppender.SocketHandler.HasConnections\">\r\n            <summary>\r\n            Test if this handler has active connections\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this handler has active connections\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property will be <c>true</c> while this handler has\r\n            active connections, that is at least one connection that \r\n            the handler will attempt to send a message to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\">\r\n            <summary>\r\n            Class that represents a client connected to this handler\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class that represents a client connected to this handler\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.#ctor(System.Net.Sockets.Socket)\">\r\n            <summary>\r\n            Create this <see cref=\"T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient\"/> for the specified <see cref=\"T:System.Net.Sockets.Socket\"/>\r\n            </summary>\r\n            <param name=\"socket\">the client's socket</param>\r\n            <remarks>\r\n            <para>\r\n            Opens a stream writer on the socket.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Send(System.String)\">\r\n            <summary>\r\n            Write a string to the client\r\n            </summary>\r\n            <param name=\"message\">string to send</param>\r\n            <remarks>\r\n            <para>\r\n            Write a string to the client\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Dispose\">\r\n            <summary>\r\n            Cleanup the clients connection\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Close the socket connection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Appender.TraceAppender\">\r\n            <summary>\r\n            Appends log events to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application configuration file can be used to control what listeners \r\n            are actually used. See the MSDN documentation for the \r\n            <see cref=\"T:System.Diagnostics.Trace\"/> class for details on configuring the\r\n            trace system.\r\n            </para>\r\n            <para>\r\n            Events are written using the <c>System.Diagnostics.Trace.Write(string,string)</c>\r\n            method. The event's logger name is the default value for the category parameter \r\n            of the Write method. \r\n            </para>\r\n            <para>\r\n            <b>Compact Framework</b><br/>\r\n            The Compact Framework does not support the <see cref=\"T:System.Diagnostics.Trace\"/>\r\n            class for any operation except <c>Assert</c>. When using the Compact Framework this\r\n            appender will write to the <see cref=\"T:System.Diagnostics.Debug\"/> system rather than\r\n            the Trace system. This appender will therefore behave like the <see cref=\"T:log4net.Appender.DebugAppender\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Appender.TraceAppender\"/> \r\n            with a specified layout.\r\n            </summary>\r\n            <param name=\"layout\">The layout to use with this appender.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Appender.TraceAppender.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the logging event to the <see cref=\"T:System.Diagnostics.Trace\"/> system.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_immediateFlush\">\r\n            <summary>\r\n            Immediate flush means that the underlying writer or output stream\r\n            will be flushed at the end of each append operation.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Immediate flush is slower but ensures that each append request is \r\n            actually written. If <see cref=\"P:log4net.Appender.TraceAppender.ImmediateFlush\"/> is set to\r\n            <c>false</c>, then there is a good chance that the last few\r\n            logs events are not actually written to persistent media if and\r\n            when the application crashes.\r\n            </para>\r\n            <para>\r\n            The default value is <c>true</c>.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Appender.TraceAppender.m_category\">\r\n            <summary>\r\n            Defaults to %logger\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.ImmediateFlush\">\r\n            <summary>\r\n            Gets or sets a value that indicates whether the appender will \r\n            flush at the end of each write.\r\n            </summary>\r\n            <remarks>\r\n            <para>The default behavior is to flush at the end of each \r\n            write. If the option is set to<c>false</c>, then the underlying \r\n            stream can defer writing to physical medium to a later time. \r\n            </para>\r\n            <para>\r\n            Avoiding the flush operation at the end of each append results \r\n            in a performance gain of 10 to 20 percent. However, there is safety\r\n            trade-off involved in skipping flushing. Indeed, when flushing is\r\n            skipped, then it is likely that the last few log events will not\r\n            be recorded on disk when the application exits. This is a high\r\n            price to pay even for a 20% performance gain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.Category\">\r\n            <summary>\r\n            The category parameter sent to the Trace method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defaults to %logger which will use the logger name of the current \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as the category parameter.\r\n            </para>\r\n            <para>\r\n            </para> \r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Appender.TraceAppender.RequiresLayout\">\r\n            <summary>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            This appender requires a <see cref=\"N:log4net.Layout\"/> to be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasDomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a domain to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.DomainAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's domain to its repository by\r\n            specifying this attribute with the name of the target domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required domains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.AliasRepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a repository to alias to this assembly's repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An assembly's logger repository is defined by its <see cref=\"T:log4net.Config.RepositoryAttribute\"/>,\r\n            however this can be overridden by an assembly loaded before the target assembly.\r\n            </para>\r\n            <para>\r\n            An assembly can alias another assembly's repository to its repository by\r\n            specifying this attribute with the name of the target repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may be used\r\n            as many times as necessary to alias all the required repositories.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.AliasRepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The repository to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> class with \r\n            the specified repository to alias to this assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.AliasRepositoryAttribute.Name\">\r\n            <summary>\r\n            Gets or sets the repository to alias to this assemby's repository.\r\n            </summary>\r\n            <value>\r\n            The repository to alias to this assemby's repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the repository to alias to this assemby's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.AliasDomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.AliasDomainAttribute\"/> class with \r\n            the specified domain to alias to this assembly's repository.\r\n            </summary>\r\n            <param name=\"name\">The domain to alias to this assemby's repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use <see cref=\"T:log4net.Config.AliasRepositoryAttribute\"/> instead of <see cref=\"T:log4net.Config.AliasDomainAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.BasicConfigurator\">\r\n            <summary>\r\n            Use this class to quickly configure a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Allows very simple programmatic configuration of log4net.\r\n            </para>\r\n            <para>\r\n            Only one appender can be configured using this configurator.\r\n            The appender is set at the root of the hierarchy and all logging\r\n            events will be delivered to that appender.\r\n            </para>\r\n            <para>\r\n            Appenders can also implement the <see cref=\"T:log4net.Core.IOptionHandler\"/> interface. Therefore\r\n            they would require that the <see cref=\"M:log4net.Core.IOptionHandler.ActivateOptions\"/> method\r\n            be called after the appenders properties have been configured.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Config.BasicConfigurator.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the BasicConfigurator class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.BasicConfigurator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure\">\r\n            <summary>\r\n            Initializes the log4net system with a default configuration.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net logging system using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initializes the log4net system using the specified appender.\r\n            </summary>\r\n            <param name=\"appender\">The appender to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net system using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes the log4net system using the specified appenders.\r\n            </summary>\r\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the log4net system using the specified appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> with a default configuration.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the specified repository using a <see cref=\"T:log4net.Appender.ConsoleAppender\"/>\r\n            that will write to <c>Console.Out</c>. The log messages are\r\n            formatted using the <see cref=\"T:log4net.Layout.PatternLayout\"/> layout object\r\n            with the <see cref=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\"/>\r\n            layout style.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appender\">The appender to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appenders.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"appenders\">The appenders to use to log all logging events.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.ConfiguratorAttribute\">\r\n            <summary>\r\n            Base class for all log4net configuration attributes.\r\n            </summary>\r\n            <remarks>\r\n            This is an abstract class that must be extended by \r\n            specific configurators. This attribute allows the\r\n            configurator to be parameterized by an assembly level\r\n            attribute.\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.#ctor(System.Int32)\">\r\n            <summary>\r\n            Constructor used by subclasses.\r\n            </summary>\r\n            <param name=\"priority\">the ordering priority for this configurator</param>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"priority\"/> is used to order the configurator\r\n            attributes before they are invoked. Higher priority configurators are executed\r\n            before lower priority ones.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Abstract method implemented by a subclass. When this method is called\r\n            the subclass should configure the <paramref name=\"targetRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.ConfiguratorAttribute.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compare this instance to another ConfiguratorAttribute\r\n            </summary>\r\n            <param name=\"obj\">the object to compare to</param>\r\n            <returns>see <see cref=\"M:System.IComparable.CompareTo(System.Object)\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the priorities of the two <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> instances.\r\n            Sorts by priority in descending order. Objects with the same priority are\r\n            randomly ordered.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DomainAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging domain for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            Assemblies are mapped to logging domains. Each domain has its own\r\n            logging repository. This attribute specified on the assembly controls\r\n            the configuration of the domain. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the domain that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the repository objects to create for the domain. If \r\n            this attribute is not specified and a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> is not specified\r\n            then the assembly will be part of the default shared logging domain.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.RepositoryAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies the logging repository for the assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Assemblies are mapped to logging repository. This attribute specified \r\n            on the assembly controls\r\n            the configuration of the repository. The <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> property specifies the name\r\n            of the repository that this assembly is a part of. The <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/>\r\n            specifies the type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> object \r\n            to create for the assembly. If this attribute is not specified or a <see cref=\"P:log4net.Config.RepositoryAttribute.Name\"/> \r\n            is not specified then the assembly will be part of the default shared logging repository.\r\n            </para>\r\n            <para>\r\n            This attribute can only be specified on the assembly and may only be used\r\n            once per assembly.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.RepositoryAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> class \r\n            with the name of the repository.\r\n            </summary>\r\n            <param name=\"name\">The name of the repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize the attribute with the name for the assembly's repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.Name\">\r\n            <summary>\r\n            Gets or sets the name of the logging repository.\r\n            </summary>\r\n            <value>\r\n            The string name to use as the name of the repository associated with this\r\n            assembly.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This value does not have to be unique. Several assemblies can share the\r\n            same repository. They will share the logging configuration of the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.RepositoryAttribute.RepositoryType\">\r\n            <summary>\r\n            Gets or sets the type of repository to create for this assembly.\r\n            </summary>\r\n            <value>\r\n            The type of repository to create for this assembly.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type of the repository to create for the assembly.\r\n            The type must implement the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            interface.\r\n            </para>\r\n            <para>\r\n            This will be the type of repository created when \r\n            the repository is created. If multiple assemblies reference the\r\n            same repository then the repository is only created once using the\r\n            <see cref=\"P:log4net.Config.RepositoryAttribute.RepositoryType\"/> of the first assembly to call into the \r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DomainAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Config.DomainAttribute\"/> class \r\n            with the name of the domain.\r\n            </summary>\r\n            <param name=\"name\">The name of the domain.</param>\r\n            <remarks>\r\n            <para>\r\n            Obsolete. Use RepositoryAttribute instead of DomainAttribute.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure\">\r\n            <summary>\r\n            Automatically configures the log4net system based on the \r\n            application's configuration settings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures log4net using a <c>log4net</c> element\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.DOMConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>\r\n            </para>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Config.DOMConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>\r\n            </para>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfiguratorAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            <para>\r\n            If neither of the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>\r\n            properties are set the configuration is loaded from the application's .config file.\r\n            If set the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property takes priority over the\r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property. The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> property\r\n            specifies a path to a file to load the config from. The path is relative to the\r\n            application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> property is used as a postfix to the assembly file name.\r\n            The config file must be located in the  application's base directory; <see cref=\"P:System.AppDomain.BaseDirectory\"/>.\r\n            For example in a console application setting the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> to\r\n            <c>config</c> has the same effect as not specifying the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> or \r\n            <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> properties.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\"/> property can be set to cause the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            to watch the configuration file for changes.\r\n            </para>\r\n            <note>\r\n            <para>\r\n            Log4net will only look for assembly level configuration attributes once.\r\n            When using the log4net assembly level attributes to control the configuration \r\n            of log4net you must ensure that the first call to any of the \r\n            <see cref=\"T:log4net.Core.LoggerManager\"/> methods is made from the assembly with the configuration\r\n            attributes. \r\n            </para>\r\n            <para>\r\n            If you cannot guarantee the order in which log4net calls will be made from \r\n            different assemblies you must use programmatic configuration instead, i.e.\r\n            call the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/> method directly.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository using the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            The <paramref name=\"targetRepository\"/> specified must extend the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>\r\n            class otherwise the <see cref=\"T:log4net.Config.XmlConfigurator\"/> will not be able to\r\n            configure it.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"targetRepository\"/> does not extend <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attempt to load configuration from the local file system\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configure the specified repository using a <see cref=\"T:System.IO.FileInfo\"/>\r\n            </summary>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <param name=\"configFile\">the FileInfo pointing to the config file</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromUri(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attempt to load configuration from a URI\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfiguratorAttribute.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the XmlConfiguratorAttribute class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\">\r\n            <summary>\r\n            Gets or sets the filename of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The filename of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified, this is the name of the configuration file to use with\r\n            the <see cref=\"T:log4net.Config.XmlConfigurator\"/>. This file path is relative to the\r\n            <b>application base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>).\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\">\r\n            <summary>\r\n            Gets or sets the extension of the configuration file.\r\n            </summary>\r\n            <value>\r\n            The extension of the configuration file.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If specified this is the extension for the configuration file.\r\n            The path to the config file is built by using the <b>application \r\n            base</b> directory (<see cref=\"P:System.AppDomain.BaseDirectory\"/>),\r\n            the <b>assembly file name</b> and the config file extension.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/> is set to <c>MyExt</c> then\r\n            possible config file names would be: <c>MyConsoleApp.exe.MyExt</c> or\r\n            <c>MyClassLibrary.dll.MyExt</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFile\"/> takes priority over the <see cref=\"P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.XmlConfiguratorAttribute.Watch\">\r\n            <summary>\r\n            Gets or sets a value indicating whether to watch the configuration file.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if the configuration should be watched, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If this flag is specified and set to <c>true</c> then the framework\r\n            will watch the configuration file and will reload the config each time \r\n            the file is modified.\r\n            </para>\r\n            <para>\r\n            The config file can only be watched if it is loaded from local disk.\r\n            In a No-Touch (Smart Client) deployment where the application is downloaded\r\n            from a web server the config file may not reside on the local disk\r\n            and therefore it may not be able to watch it.\r\n            </para>\r\n            <note>\r\n            Watching configuration is not supported on the SSCLI.\r\n            </note>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.Log4NetConfigurationSectionHandler\">\r\n            <summary>\r\n            Class to register for the log4net section of the configuration file\r\n            </summary>\r\n            <remarks>\r\n            The log4net section of the configuration file needs to have a section\r\n            handler registered. This is the section handler used. It simply returns\r\n            the XML element that is the root of the section.\r\n            </remarks>\r\n            <example>\r\n            Example of registering the log4net section handler :\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<configSections>\r\n            \t\t<section name=\"log4net\" type=\"log4net.Config.Log4NetConfigurationSectionHandler, log4net\" />\r\n            \t</configSections>\r\n            \t<log4net>\r\n            \t\tlog4net configuration XML goes here\r\n            \t</log4net>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.Log4NetConfigurationSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)\">\r\n            <summary>\r\n            Parses the configuration section.\r\n            </summary>\r\n            <param name=\"parent\">The configuration settings in a corresponding parent configuration section.</param>\r\n            <param name=\"configContext\">The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.</param>\r\n            <param name=\"section\">The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</param>\r\n            <returns>The <see cref=\"T:System.Xml.XmlNode\"/> for the log4net section.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:System.Xml.XmlNode\"/> containing the configuration data,\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.PluginAttribute\">\r\n            <summary>\r\n            Assembly level attribute that specifies a plugin to attach to \r\n            the repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Specifies the type of a plugin to create and attach to the\r\n            assembly's repository. The plugin type must implement the\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPluginFactory\">\r\n            <summary>\r\n            Interface used to create plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used to create  a plugin.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPluginFactory.CreatePlugin\">\r\n            <summary>\r\n            Creates the plugin object.\r\n            </summary>\r\n            <returns>the new plugin instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Create and return a new plugin instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"typeName\">The type name of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            <para>\r\n            Where possible use the constructor that takes a <see cref=\"T:System.Type\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.PluginAttribute\"/> class\r\n            with the specified type.\r\n            </summary>\r\n            <param name=\"type\">The type of plugin to create.</param>\r\n            <remarks>\r\n            <para>\r\n            Create the attribute with the plugin type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.CreatePlugin\">\r\n            <summary>\r\n            Creates the plugin object defined by this attribute.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the instance of the <see cref=\"T:log4net.Plugin.IPlugin\"/> object as \r\n            specified by this attribute.\r\n            </para>\r\n            </remarks>\r\n            <returns>The plugin object.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Config.PluginAttribute.ToString\">\r\n            <summary>\r\n            Returns a representation of the properties of this object.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Overrides base class <see cref=\"M:System.Object.ToString\"/> method to \r\n            return a representation of the properties of this object.\r\n            </para>\r\n            </remarks>\r\n            <returns>A representation of the properties of this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.Type\">\r\n            <summary>\r\n            Gets or sets the type for the plugin.\r\n            </summary>\r\n            <value>\r\n            The type for the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type for the plugin.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.PluginAttribute.TypeName\">\r\n            <summary>\r\n            Gets or sets the type name for the plugin.\r\n            </summary>\r\n            <value>\r\n            The type name for the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type name for the plugin.\r\n            </para>\r\n            <para>\r\n            Where possible use the <see cref=\"P:log4net.Config.PluginAttribute.Type\"/> property instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.SecurityContextProviderAttribute\">\r\n            <summary>\r\n            Assembly level attribute to configure the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This attribute may only be used at the assembly scope and can only\r\n            be used once per assembly.\r\n            </para>\r\n            <para>\r\n            Use this attribute to configure the <see cref=\"T:log4net.Config.XmlConfigurator\"/>\r\n            without calling one of the <see cref=\"M:log4net.Config.XmlConfigurator.Configure\"/>\r\n            methods.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Construct provider attribute with type specified\r\n            </summary>\r\n            <param name=\"providerType\">the type of the provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.SecurityContextProviderAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the SecurityContextProvider\r\n            </summary>\r\n            <param name=\"sourceAssembly\">The assembly that this attribute was defined on.</param>\r\n            <param name=\"targetRepository\">The repository to configure.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a provider instance from the <see cref=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\"/> specified.\r\n            Sets this as the default security context provider <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.SecurityContextProviderAttribute.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the SecurityContextProviderAttribute class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Config.SecurityContextProviderAttribute.ProviderType\">\r\n            <summary>\r\n            Gets or sets the type of the provider to use.\r\n            </summary>\r\n            <value>\r\n            the type of the provider to use.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The provider specified must subclass the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator\">\r\n            <summary>\r\n            Use this class to initialize the log4net environment using an Xml tree.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using an Xml tree.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure\">\r\n            <summary>\r\n            Automatically configures the log4net system based on the \r\n            application's configuration settings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Automatically configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using settings\r\n            stored in the application's configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each application has a configuration file. This has the\r\n            same name as the application with '.config' appended.\r\n            This file is XML and calling this function prompts the\r\n            configurator to look in that file for a section called\r\n            <c>log4net</c> that contains the configuration data.\r\n            </para>\r\n            <para>\r\n            To use this method to configure log4net you must specify \r\n            the <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> section\r\n            handler for the <c>log4net</c> configuration section. See the\r\n            <see cref=\"T:log4net.Config.Log4NetConfigurationSectionHandler\"/> for an example.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures log4net using a <c>log4net</c> element\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified XML \r\n            element.\r\n            </summary>\r\n            <remarks>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration file.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.Uri)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration URI.\r\n            </summary>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.Stream)\">\r\n            <summary>\r\n            Configures log4net using the specified configuration data stream.\r\n            </summary>\r\n            <param name=\"configStream\">A stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the log4net configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The log4net configuration file can possible be specified in the application's\r\n            configuration file (either <c>MyAppName.exe.config</c> for a\r\n            normal application on <c>Web.config</c> for an ASP.NET application).\r\n            </para>\r\n            <para>\r\n            The first element matching <c>&lt;configuration&gt;</c> will be read as the \r\n            configuration. If this file is also a .NET .config file then you must specify \r\n            a configuration section for the <c>log4net</c> element otherwise .NET will \r\n            complain. Set the type for the section handler to <see cref=\"T:System.Configuration.IgnoreSectionHandler\"/>, for example:\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configSections>\r\n            \t<section name=\"log4net\" type=\"System.Configuration.IgnoreSectionHandler\"/>\r\n            </configSections>\r\n            </code>\r\n            </para>\r\n            <example>\r\n            The following example configures log4net using a configuration file, of which the \r\n            location is stored in the application's configuration file :\r\n            </example>\r\n            <code lang=\"C#\">\r\n            using log4net.Config;\r\n            using System.IO;\r\n            using System.Configuration;\r\n            \r\n            ...\r\n            \r\n            XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings[\"log4net-config-file\"]));\r\n            </code>\r\n            <para>\r\n            In the <c>.config</c> file, the path to the log4net can be specified like this :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net-config-file\" value=\"log.config\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Uri)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            URI.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configUri\">A URI to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Net.WebRequest\"/> must support the URI scheme specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the specified configuration \r\n            file.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configStream\">The stream to load the XML configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration data must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            Note that this method will NOT close the stream parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures log4net using the file specified, monitors the file for changes \r\n            and reloads the configuration if a change is detected.\r\n            </summary>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Configures the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> using the file specified, \r\n            monitors the file for changes and reloads the configuration if a change \r\n            is detected.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The XML file to load the configuration from.</param>\r\n            <remarks>\r\n            <para>\r\n            The configuration file must be valid XML. It must contain\r\n            at least one element called <c>log4net</c> that holds\r\n            the configuration data.\r\n            </para>\r\n            <para>\r\n            The configuration file will be monitored using a <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            and depends on the behavior of that class.\r\n            </para>\r\n            <para>\r\n            For more information on how to configure log4net using\r\n            a separate configuration file, see <see cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.InternalConfigureFromXml(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configures the specified repository using a <c>log4net</c> element.\r\n            </summary>\r\n            <param name=\"repository\">The hierarchy to configure.</param>\r\n            <param name=\"element\">The element to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Loads the log4net configuration from the XML element\r\n            supplied as <paramref name=\"element\"/>.\r\n            </para>\r\n            <para>\r\n            This method is ultimately called by one of the Configure methods \r\n            to load the configuration from an <see cref=\"T:System.Xml.XmlElement\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.m_repositoryName2ConfigAndWatchHandler\">\r\n            <summary>\r\n            Maps repository names to ConfigAndWatchHandler instances to allow a particular\r\n            ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is \r\n            reconfigured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the XmlConfigurator class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\">\r\n            <summary>\r\n            Class used to watch config files.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"T:System.IO.FileSystemWatcher\"/> to monitor\r\n            changes to a specified file. Because multiple change notifications\r\n            may be raised when the file is modified, a timer is used to\r\n            compress the notifications into a single event. The timer\r\n            waits for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> time before delivering\r\n            the event notification. If any further <see cref=\"T:System.IO.FileSystemWatcher\"/>\r\n            change notifications arrive while the timer is waiting it\r\n            is reset and waits again for <see cref=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\"/> to\r\n            elapse.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis\">\r\n            <summary>\r\n            The default amount of time to wait after receiving notification\r\n            before reloading the config file.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_configFile\">\r\n            <summary>\r\n            Holds the FileInfo used to configure the XmlConfigurator\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_repository\">\r\n            <summary>\r\n            Holds the repository being configured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_timer\">\r\n            <summary>\r\n            The timer used to compress the notification events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_watcher\">\r\n            <summary>\r\n            Watches file for changes. This object should be disposed when no longer\r\n            needed to free system handles on the watched resources.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.#ctor(log4net.Repository.ILoggerRepository,System.IO.FileInfo)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class to\r\n            watch a specified config file used to configure a repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <param name=\"configFile\">The configuration file to watch.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnChanged(System.Object,System.IO.FileSystemEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnRenamed(System.Object,System.IO.RenamedEventArgs)\">\r\n            <summary>\r\n            Event handler used by <see cref=\"T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler\"/>.\r\n            </summary>\r\n            <param name=\"source\">The <see cref=\"T:System.IO.FileSystemWatcher\"/> firing the event.</param>\r\n            <param name=\"e\">The argument indicates the file that caused the event to be fired.</param>\r\n            <remarks>\r\n            <para>\r\n            This handler reloads the configuration from the file when the event is fired.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.OnWatchedFileChange(System.Object)\">\r\n            <summary>\r\n            Called by the timer when the configuration has been updated.\r\n            </summary>\r\n            <param name=\"state\">null</param>\r\n        </member>\r\n        <member name=\"M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.Dispose\">\r\n            <summary>\r\n            Release the handles held by the watcher and timer.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.CompactRepositorySelector\">\r\n            <summary>\r\n            The implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface suitable\r\n            for use with the compact framework\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.IRepositorySelector\"/> implementation is a simple\r\n            mapping between repository name and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            object.\r\n            </para>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not support retrieving assembly\r\n            level attributes therefore unlike the <c>DefaultRepositorySelector</c>\r\n            this selector does not examine the calling assembly for attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IRepositorySelector\">\r\n            <summary>\r\n            Interface used by the <see cref=\"T:log4net.LogManager\"/> to select the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.LogManager\"/> uses a <see cref=\"T:log4net.Core.IRepositorySelector\"/> \r\n            to specify the policy for selecting the correct <see cref=\"T:log4net.Repository.ILoggerRepository\"/> \r\n            to return to the caller.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association. The results of this method must be repeatable, i.e.\r\n            when called again with the same arguments the result must be the\r\n            save value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to use to lookup to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            Lookup a named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. This is the repository created by\r\n            calling <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly to use to create the domain to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the domain\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            How the association between <see cref=\"T:System.Reflection.Assembly\"/> and <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            is made is not defined. The implementation may choose any method for\r\n            this association.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository with the name specified.\r\n            </summary>\r\n            <param name=\"repositoryName\">The name to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the name\r\n            specified such that a call to <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same name will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>\r\n            An array of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instances created by \r\n            this <see cref=\"T:log4net.Core.IRepositorySelector\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new repository selector\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">the type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new compact repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"defaultRepositoryType\"/> is null</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">throw if <paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Get the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly\r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <param name=\"repositoryName\">the name of the repository to lookup</param>\r\n            <returns>The named <see cref=\"T:log4net.Repository.ILoggerRepository\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Get the named <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The default \r\n            repository is <c>log4net-default-repository</c>. Other repositories \r\n            must be created using the <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>.\r\n            If the named repository does not exist an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> does not exist</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"assembly\">not used</param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"assembly\"/> argument is not used. This selector does not create a\r\n            separate repository for each assembly. \r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"repositoryType\"/> is <c>null</c> then the\r\n            default repository type specified to the constructor is used.\r\n            </para>\r\n            <para>\r\n            As a named repository is not specified the default repository is \r\n            returned. The default repository is named <c>log4net-default-repository</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the repository specified\r\n            </summary>\r\n            <param name=\"repositoryName\">the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <param name=\"repositoryType\">the type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is null then the default repository type is used.</param>\r\n            <returns>the repository created</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            If the named repository already exists an exception will be thrown.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"repositoryType\"/> is <c>null</c> then the default \r\n            repository type specified to the constructor is used.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">throw if <paramref name=\"repositoryName\"/> is null</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\">throw if the <paramref name=\"repositoryName\"/> already exists</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.CompactRepositorySelector.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the CompactRepositorySelector class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.CompactRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has been created\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <event cref=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">LoggerRepositoryCreatedEvent</event>\r\n            event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.DefaultRepositorySelector\">\r\n            <summary>\r\n            The default implementation of the <see cref=\"T:log4net.Core.IRepositorySelector\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses attributes defined on the calling assembly to determine how to\r\n            configure the hierarchy for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.#ctor(System.Type)\">\r\n            <summary>\r\n            Creates a new repository selector.\r\n            </summary>\r\n            <param name=\"defaultRepositoryType\">The type of the repositories to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Create an new repository selector.\r\n            The default type for repositories must be specified,\r\n            an appropriate value would be <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"defaultRepositoryType\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\"><paramref name=\"defaultRepositoryType\"/> does not implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified assembly.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and the repository \r\n            to create can be overridden by specifying the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> \r\n            attribute on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            The default values are to use the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> \r\n            implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically configured using \r\n            any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> attributes defined on\r\n            the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the assembly</returns>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to use to lookup the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the specified repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the named repository. If <paramref name=\"repositoryName\"/> is <c>null</c>\r\n            a <see cref=\"T:System.ArgumentNullException\"/> is thrown. If the repository \r\n            does not exist a <see cref=\"T:log4net.Core.LogException\"/> is thrown.\r\n            </para>\r\n            <para>\r\n            Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/> to create a repository.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> does not exist.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Create a new repository for the assembly specified \r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type,System.String,System.Boolean)\">\r\n            <summary>\r\n            Creates a new repository for the assembly specified.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to create the repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryName\">The name to assign to the created repository</param>\r\n            <param name=\"readAssemblyAttributes\">Set to <c>true</c> to read and apply the assembly attributes</param>\r\n            <returns>The repository created.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            <para>\r\n            The type of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created and\r\n            the repository to create can be overridden by specifying the\r\n            <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the \r\n            <paramref name=\"repositoryAssembly\"/>.  The default values are to use the \r\n            <paramref name=\"repositoryType\"/> implementation of the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface and to use the\r\n            <see cref=\"P:System.Reflection.AssemblyName.Name\"/> as the name of the repository.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be automatically\r\n            configured using any <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/> \r\n            attributes defined on the <paramref name=\"repositoryAssembly\"/>.\r\n            </para>\r\n            <para>\r\n            If a repository for the <paramref name=\"repositoryAssembly\"/> already exists\r\n            that repository will be returned. An error will not be raised and that \r\n            repository may be of a different type to that specified in <paramref name=\"repositoryType\"/>.\r\n            Also the <see cref=\"T:log4net.Config.RepositoryAttribute\"/> attribute on the\r\n            assembly may be used to override the repository type specified in \r\n            <paramref name=\"repositoryType\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryAssembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a new repository for the specified repository.\r\n            </summary>\r\n            <param name=\"repositoryName\">The repository to associate with the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.</param>\r\n            <param name=\"repositoryType\">The type of repository to create, must implement <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            If this param is <see langword=\"null\"/> then the default repository type is used.</param>\r\n            <returns>The new repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> with the\r\n            same repository specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"repositoryName\"/> is <see langword=\"null\"/>.</exception>\r\n            <exception cref=\"T:log4net.Core.LogException\"><paramref name=\"repositoryName\"/> already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ExistsRepository(System.String)\">\r\n            <summary>\r\n            Test if a named repository exists\r\n            </summary>\r\n            <param name=\"repositoryName\">the named repository to check</param>\r\n            <returns><c>true</c> if the repository exists</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if a named repository exists. Use <see cref=\"M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)\"/>\r\n            to create a new repository and <see cref=\"M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)\"/> to retrieve \r\n            a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetAllRepositories\">\r\n            <summary>\r\n            Gets a list of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects\r\n            </summary>\r\n            <returns>an array of all known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all of the repositories created by this selector.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.AliasRepository(System.String,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Aliases a repository to an existing repository.\r\n            </summary>\r\n            <param name=\"repositoryAlias\">The repository to alias.</param>\r\n            <param name=\"repositoryTarget\">The repository that the repository is aliased to.</param>\r\n            <remarks>\r\n            <para>\r\n            The repository specified will be aliased to the repository when created. \r\n            The repository must not already exist.\r\n            </para>\r\n            <para>\r\n            When the repository is created it must utilize the same repository type as \r\n            the repository it is aliased to, otherwise the aliasing will fail.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"repositoryAlias\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repositoryTarget\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Notifies the registered listeners that the repository has been created.\r\n            </summary>\r\n            <param name=\"repository\">The repository that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Raises the <see cref=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.GetInfoForAssembly(System.Reflection.Assembly,System.String@,System.Type@)\">\r\n            <summary>\r\n            Gets the repository name and repository type for the specified assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that has a <see cref=\"T:log4net.Config.RepositoryAttribute\"/>.</param>\r\n            <param name=\"repositoryName\">in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.</param>\r\n            <param name=\"repositoryType\">in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\"><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.ConfigureRepository(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Configures the repository using information from the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly containing <see cref=\"T:log4net.Config.ConfiguratorAttribute\"/>\r\n            attributes which define the configuration for the repository.</param>\r\n            <param name=\"repository\">The repository to configure.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadPlugins(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined plugins on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to add the plugins to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.DefaultRepositorySelector.LoadAliases(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Loads the attribute defined aliases on the assembly.\r\n            </summary>\r\n            <param name=\"assembly\">The assembly that contains the attributes.</param>\r\n            <param name=\"repository\">The repository to alias to.</param>\r\n            <exception cref=\"T:System.ArgumentNullException\">\r\n            <para><paramref name=\"assembly\"/> is <see langword=\"null\"/>.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"repository\"/> is <see langword=\"null\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Core.DefaultRepositorySelector.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the DefaultRepositorySelector class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent\">\r\n            <summary>\r\n            Event to notify that a logger repository has been created.\r\n            </summary>\r\n            <value>\r\n            Event to notify that a logger repository has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a new repository is created.\r\n            The event source will be this selector. The event args will\r\n            be a <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> which\r\n            holds the newly created <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ErrorCode\">\r\n            <summary>\r\n            Defined error codes that can be passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Values passed to the <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.GenericFailure\">\r\n            <summary>\r\n            A general error\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.WriteFailure\">\r\n            <summary>\r\n            Error while writing output\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FlushFailure\">\r\n            <summary>\r\n            Failed to flush file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.CloseFailure\">\r\n            <summary>\r\n            Failed to close file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.FileOpenFailure\">\r\n            <summary>\r\n            Unable to open output file\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.MissingLayout\">\r\n            <summary>\r\n            No layout specified\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ErrorCode.AddressParseFailure\">\r\n            <summary>\r\n            Failed to parse address\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ExceptionEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers on an Exception type\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the type of the Exception\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to a Type in <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.    /// \r\n            </para>\r\n            </remarks>\r\n            <author>Drew Schaeffer</author>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ITriggeringEventEvaluator\">\r\n            <summary>\r\n            Test if an <see cref=\"T:log4net.Core.LoggingEvent\"/> triggers an action\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementations of this interface allow certain appenders to decide\r\n            when to perform an appender specific action.\r\n            </para>\r\n            <para>\r\n            The action or behavior triggered is defined by the implementation.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ITriggeringEventEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Test if this event triggers the action\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Return <c>true</c> if this event triggers the action\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_type\">\r\n            <summary>\r\n            The type that causes the trigger to fire.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.ExceptionEvaluator.m_triggerOnSubclass\">\r\n            <summary>\r\n            Causes subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/> to cause the trigger to fire.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor\">\r\n            <summary>\r\n            Default ctor to allow dynamic creation through a configurator.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.#ctor(System.Type,System.Boolean)\">\r\n            <summary>\r\n            Constructs an evaluator and initializes to trigger on <paramref name=\"exType\"/>\r\n            </summary>\r\n            <param name=\"exType\">the type that triggers this evaluator.</param>\r\n            <param name=\"triggerOnSubClass\">If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the logging event Exception \r\n            Type is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the Exception Type of the event\r\n            passed to <see cref=\"M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\">\r\n            <summary>\r\n            The type that triggers this evaluator.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ExceptionEvaluator.TriggerOnSubclass\">\r\n            <summary>\r\n            If true, this evaluator will trigger on subclasses of <see cref=\"P:log4net.Core.ExceptionEvaluator.ExceptionType\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IErrorHandler\">\r\n            <summary>\r\n            Appenders may delegate their error handling to an <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Error handling is a particularly tedious to get right because by\r\n            definition errors are hard to predict and to reproduce. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <param name=\"errorCode\">The error code associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            Handles the error and information about the error condition is passed as \r\n            a parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <param name=\"e\">The <see cref=\"T:System.Exception\"/> that was thrown when the error occurred.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IErrorHandler.Error(System.String)\">\r\n            <summary>\r\n            Prints the error message passed as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message associated with the error.</param>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.IFixingRequired\">\r\n            <summary>\r\n            Interface for objects that require fixing.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface that indicates that the object requires fixing before it\r\n            can be taken outside the context of the appender's \r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            <para>\r\n            When objects that implement this interface are stored \r\n            in the context properties maps <see cref=\"T:log4net.GlobalContext\"/>\r\n            <see cref=\"P:log4net.GlobalContext.Properties\"/> and <see cref=\"T:log4net.ThreadContext\"/>\r\n            <see cref=\"P:log4net.ThreadContext.Properties\"/> are fixed \r\n            (see <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/>) the <see cref=\"M:log4net.Core.IFixingRequired.GetFixedObject\"/>\r\n            method will be called.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.IFixingRequired.GetFixedObject\">\r\n            <summary>\r\n            Get a portable version of this object\r\n            </summary>\r\n            <returns>the portable instance of this object</returns>\r\n            <remarks>\r\n            <para>\r\n            Get a portable instance object that represents the current\r\n            state of this object. The portable object can be stored\r\n            and logged from any thread with identical results.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ILogger\">\r\n            <summary>\r\n            Interface that all loggers implement\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports logging events and testing if a level\r\n            is enabled for logging.\r\n            </para>\r\n            <para>\r\n            These methods will not throw exceptions. Note to implementor, ensure\r\n            that the implementation of these methods cannot allow an exception\r\n            to be thrown to the caller.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            This generic form is intended to be used by wrappers.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Generates a logging event for the specified <paramref name=\"level\"/> using\r\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This is the most generic printing method that is intended to be used \r\n            by wrappers.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs the specified logging event through this logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.ILogger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"T:log4net.Core.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Name\">\r\n            <summary>\r\n            Gets the name of the logger.\r\n            </summary>\r\n            <value>\r\n            The name of the logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this logger\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILogger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.ILoggerWrapper\">\r\n            <summary>\r\n            Base interface for all wrappers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Base interface for all wrappers.\r\n            </para>\r\n            <para>\r\n            All wrappers must implement this interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"P:log4net.Core.ILoggerWrapper.Logger\">\r\n            <summary>\r\n            Get the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this object.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that in implementing this\r\n            object. The <c>Logger</c> object may not \r\n            be the same object as this object because of logger decorators.\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository creation event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Core.IRepositorySelector\"/> which created the repository.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\"/> event args\r\n            that holds the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerRepositoryCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent\"/> \r\n            event is raised every time a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerRepositoryCreationEventArgs.m_repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerRepositoryCreationEventArgs.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </summary>\r\n            <param name=\"repository\">the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created</param>\r\n            <remarks>\r\n            <para>\r\n            Construct instance using <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerRepositoryCreationEventArgs.LoggerRepository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has been created\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.Level\">\r\n            <summary>\r\n            Defines the default set of levels recognized by the system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Each <see cref=\"T:log4net.Core.LoggingEvent\"/> has an associated <see cref=\"T:log4net.Core.Level\"/>.\r\n            </para>\r\n            <para>\r\n            Levels have a numeric <see cref=\"P:log4net.Core.Level.Value\"/> that defines the relative \r\n            ordering between levels. Two Levels with the same <see cref=\"P:log4net.Core.Level.Value\"/> \r\n            are deemed to be equivalent.\r\n            </para>\r\n            <para>\r\n            The levels that are recognized by log4net are set for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and each repository can have different levels defined. The levels are stored\r\n            in the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> on the repository. Levels are\r\n            looked up by name from the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>.\r\n            </para>\r\n            <para>\r\n            When logging at level INFO the actual level used is not <see cref=\"F:log4net.Core.Level.Info\"/> but\r\n            the value of <c>LoggerRepository.LevelMap[\"INFO\"]</c>. The default value for this is\r\n            <see cref=\"F:log4net.Core.Level.Info\"/>, but this can be changed by reconfiguring the level map.\r\n            </para>\r\n            <para>\r\n            Each level has a <see cref=\"P:log4net.Core.Level.DisplayName\"/> in addition to its <see cref=\"P:log4net.Core.Level.Name\"/>. The \r\n            <see cref=\"P:log4net.Core.Level.DisplayName\"/> is the string that is written into the output log. By default\r\n            the display name is the same as the level name, but this can be used to alias levels\r\n            or to localize the log output.\r\n            </para>\r\n            <para>\r\n            Some of the predefined levels recognized by the system are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Off\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Fatal\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Error\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Warn\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Info\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.Debug\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description><see cref=\"F:log4net.Core.Level.All\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <param name=\"displayName\">The display name for this level. This may be localized or otherwise different from the name</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"level\">Integer value for this level, higher values represent more severe levels.</param>\r\n            <param name=\"levelName\">The string name of this level.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.Level\"/> class with\r\n            the specified level name and value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.ToString\">\r\n            <summary>\r\n            Returns the <see cref=\"T:System.String\"/> representation of the current \r\n            <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <returns>\r\n            A <see cref=\"T:System.String\"/> representation of the current <see cref=\"T:log4net.Core.Level\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the level <see cref=\"P:log4net.Core.Level.Name\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Equals(System.Object)\">\r\n            <summary>\r\n            Compares levels.\r\n            </summary>\r\n            <param name=\"o\">The object to compare against.</param>\r\n            <returns><c>true</c> if the objects are equal.</returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the levels of <see cref=\"T:log4net.Core.Level\"/> instances, and \r\n            defers to base class if the target object is not a <see cref=\"T:log4net.Core.Level\"/>\r\n            instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.GetHashCode\">\r\n            <summary>\r\n            Returns a hash code\r\n            </summary>\r\n            <returns>A hash code for the current <see cref=\"T:log4net.Core.Level\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a hash code suitable for use in hashing algorithms and data \r\n            structures like a hash table.\r\n            </para>\r\n            <para>\r\n            Returns the hash code of the level <see cref=\"P:log4net.Core.Level.Value\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.CompareTo(System.Object)\">\r\n            <summary>\r\n            Compares this instance to a specified object and returns an \r\n            indication of their relative values.\r\n            </summary>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> instance or <see langword=\"null\"/> to compare with this instance.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description>This instance is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description>This instance is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description>\r\n            \t\t\t<para>This instance is greater than <paramref name=\"r\"/>.</para>\r\n            \t\t\t<para>-or-</para>\r\n            \t\t\t<para><paramref name=\"r\"/> is <see langword=\"null\"/>.</para>\r\n            \t\t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <paramref name=\"r\"/> must be an instance of <see cref=\"T:log4net.Core.Level\"/> \r\n            or <see langword=\"null\"/>; otherwise, an exception is thrown.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\"><paramref name=\"r\"/> is not a <see cref=\"T:log4net.Core.Level\"/>.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThan(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_GreaterThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is greater than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is greater than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_LessThanOrEqual(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether a specified <see cref=\"T:log4net.Core.Level\"/> \r\n            is less than or equal to another specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/></param>\r\n            <returns>\r\n            <c>true</c> if <paramref name=\"l\"/> is less than or equal to \r\n            <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Equality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have the same value.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is the same as the \r\n            value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.op_Inequality(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Returns a value indicating whether two specified <see cref=\"T:log4net.Core.Level\"/> \r\n            objects have different values.\r\n            </summary>\r\n            <param name=\"l\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <param name=\"r\">A <see cref=\"T:log4net.Core.Level\"/> or <see langword=\"null\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the value of <paramref name=\"l\"/> is different from\r\n            the value of <paramref name=\"r\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.Level.Compare(log4net.Core.Level,log4net.Core.Level)\">\r\n            <summary>\r\n            Compares two specified <see cref=\"T:log4net.Core.Level\"/> instances.\r\n            </summary>\r\n            <param name=\"l\">The first <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <param name=\"r\">The second <see cref=\"T:log4net.Core.Level\"/> to compare.</param>\r\n            <returns>\r\n            A 32-bit signed integer that indicates the relative order of the \r\n            two values compared. The return value has these meanings:\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Meaning</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>Less than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is less than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is equal to <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>Greater than zero</term>\r\n            \t\t<description><paramref name=\"l\"/> is greater than <paramref name=\"r\"/>.</description>\r\n            \t</item>\r\n            </list>\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares two levels.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Off\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Off\"/> level designates a higher level than all the rest.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Log4Net_Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Emergency\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Emergency\"/> level designates very severe error events. \r\n            System unusable, emergencies.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fatal\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fatal\"/> level designates very severe error events \r\n            that will presumably lead the application to abort.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Alert\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Alert\"/> level designates very severe error events. \r\n            Take immediate action, alerts.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Critical\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Critical\"/> level designates very severe error events. \r\n            Critical condition, critical.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Severe\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Severe\"/> level designates very severe error events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Error\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Error\"/> level designates error events that might \r\n            still allow the application to continue running.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Warn\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Warn\"/> level designates potentially harmful \r\n            situations.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Notice\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Notice\"/> level designates informational messages \r\n            that highlight the progress of the application at the highest level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Info\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Info\"/> level designates informational messages that \r\n            highlight the progress of the application at coarse-grained level.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Debug\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Debug\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Fine\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Fine\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Trace\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Trace\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finer\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finer\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Verbose\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Verbose\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.Finest\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.Finest\"/> level designates fine-grained informational \r\n            events that are most useful to debug an application.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.Level.All\">\r\n            <summary>\r\n            The <see cref=\"F:log4net.Core.Level.All\"/> level designates the lowest level possible.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Name\">\r\n            <summary>\r\n            Gets the name of this level.\r\n            </summary>\r\n            <value>\r\n            The name of this level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the name of this level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.Value\">\r\n            <summary>\r\n            Gets the value of this level.\r\n            </summary>\r\n            <value>\r\n            The value of this level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the value of this level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.Level.DisplayName\">\r\n            <summary>\r\n            Gets the display name of this level.\r\n            </summary>\r\n            <value>\r\n            The display name of this level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the display name of this level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Core.Level\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ReadOnly(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Creates a read-only wrapper for a <c>LevelCollection</c> instance.\r\n            </summary>\r\n            <param name=\"list\">list to create a readonly wrapper arround</param>\r\n            <returns>\r\n            A <c>LevelCollection</c> wrapper that is read-only.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that is empty and has the default initial capacity.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Int32)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that has the specified initial capacity.\r\n            </summary>\r\n            <param name=\"capacity\">\r\n            The number of elements that the new <c>LevelCollection</c> is initially capable of storing.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"c\">The <c>LevelCollection</c> whose elements are copied to the new collection.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.Level[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>LevelCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Core.Level\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection.Tag)\">\r\n            <summary>\r\n            Allow subclasses to avoid our default constructors\r\n            </summary>\r\n            <param name=\"tag\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[])\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>LevelCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Core.Level\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Core.Level\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Add(log4net.Core.Level)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Core.Level\"/> to the end of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clear\">\r\n            <summary>\r\n            Removes all elements from the <c>LevelCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Core.LevelCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Contains(log4net.Core.Level)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Core.Level\"/> is in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>LevelCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.IndexOf(log4net.Core.Level)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Core.Level\"/>\r\n            in the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to locate in the <c>LevelCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>LevelCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Insert(System.Int32,log4net.Core.Level)\">\r\n            <summary>\r\n            Inserts an element into the <c>LevelCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Remove(log4net.Core.Level)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Core.Level\"/> from the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Core.Level\"/> to remove from the <c>LevelCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Core.Level\"/> was not found in the <c>LevelCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>LevelCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Core.LevelCollection.Enumerator\"/> for the entire <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>LevelCollection</c> to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>LevelCollection</c> whose elements should be added to the end of the current <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(log4net.Core.Level[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> array to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Core.Level\"/> array whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Core.Level\"/> collection to the current <c>LevelCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Core.Level\"/> collection whose elements should be added to the end of the <c>LevelCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Core.LevelCollection.Count\"/> of the <c>LevelCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.TrimToSize\">\r\n            <summary>\r\n            Sets the capacity to the actual number of elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements actually contained in the <c>LevelCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\r\n            </summary>\r\n            <value>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</value>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Core.Level\"/> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Core.LevelCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the collection has a fixed size.\r\n            </summary>\r\n            <value>true if the collection has a fixed size; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the IList is read-only.\r\n            </summary>\r\n            <value>true if the collection is read-only; otherwise, false. The default is false</value>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Capacity\">\r\n            <summary>\r\n            Gets or sets the number of elements the <c>LevelCollection</c> can contain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.ILevelCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Tag\">\r\n            <summary>\r\n            Type visible only to our subclasses\r\n            Used to access protected constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelCollection.Tag.Default\">\r\n            <summary>\r\n            A value\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Core.LevelCollection\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.#ctor(log4net.Core.LevelCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>Enumerator</c> class.\r\n            </summary>\r\n            <param name=\"tc\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelCollection.Enumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelCollection.Enumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers at a threshold level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelEvaluator.m_threshold\">\r\n            <summary>\r\n            The threshold for triggering\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.Level.Off\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </summary>\r\n            <param name=\"threshold\">the threshold to trigger at</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified <see cref=\"T:log4net.Core.Level\"/> threshold.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the event level\r\n            is equal or higher than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelEvaluator.Threshold\">\r\n            <summary>\r\n            the threshold to trigger at\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that will cause this evaluator to trigger\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the level of the event\r\n            passed to <see cref=\"M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\"/>\r\n            is equal to or greater than the <see cref=\"P:log4net.Core.LevelEvaluator.Threshold\"/>\r\n            level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LevelMap\">\r\n            <summary>\r\n            Mapping between string name and Level object\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Mapping between string name and <see cref=\"T:log4net.Core.Level\"/> object.\r\n            This mapping is held separately for each <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The level name is case insensitive.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LevelMap.m_mapName2Level\">\r\n            <summary>\r\n            Mapping from level name to Level object. The\r\n            level name is case insensitive\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.#ctor\">\r\n            <summary>\r\n            Construct the level map\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Construct the level map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Clear\">\r\n            <summary>\r\n            Clear the internal maps of all levels\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the internal maps of all levels\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32)\">\r\n            <summary>\r\n            Create a new Level and add it to the map\r\n            </summary>\r\n            <param name=\"name\">the string to display for the Level</param>\r\n            <param name=\"value\">the level value to give to the Level</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new Level and add it to the map\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)\">\r\n            <summary>\r\n            Create a new Level and add it to the map\r\n            </summary>\r\n            <param name=\"name\">the string to display for the Level</param>\r\n            <param name=\"value\">the level value to give to the Level</param>\r\n            <param name=\"displayName\">the display name to give to the Level</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new Level and add it to the map\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.Add(log4net.Core.Level)\">\r\n            <summary>\r\n            Add a Level to the map\r\n            </summary>\r\n            <param name=\"level\">the Level to add</param>\r\n            <remarks>\r\n            <para>\r\n            Add a Level to the map\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LevelMap.LookupWithDefault(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup a named level from the map\r\n            </summary>\r\n            <param name=\"defaultLevel\">the name of the level to lookup is taken from this level. \r\n            If the level is not set on the map then this level is added</param>\r\n            <returns>the level in the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a named level from the map. The name of the level to lookup is taken\r\n            from the <see cref=\"P:log4net.Core.Level.Name\"/> property of the <paramref name=\"defaultLevel\"/>\r\n            argument.\r\n            </para>\r\n            <para>\r\n            If no level with the specified name is found then the \r\n            <paramref name=\"defaultLevel\"/> argument is added to the level map\r\n            and returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.Item(System.String)\">\r\n            <summary>\r\n            Lookup a <see cref=\"T:log4net.Core.Level\"/> by name\r\n            </summary>\r\n            <param name=\"name\">The name of the Level to lookup</param>\r\n            <returns>a Level from the map with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"T:log4net.Core.Level\"/> from the\r\n            map with the name specified. If the no level is\r\n            found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LevelMap.AllLevels\">\r\n            <summary>\r\n            Return all possible levels as a list of Level objects.\r\n            </summary>\r\n            <returns>all possible levels as a list of Level objects</returns>\r\n            <remarks>\r\n            <para>\r\n            Return all possible levels as a list of Level objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LocationInfo\">\r\n            <summary>\r\n            The internal representation of caller location information.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class uses the <c>System.Diagnostics.StackTrace</c> class to generate\r\n            a call stack. The caller's information is then extracted from this stack.\r\n            </para>\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \r\n            .NET Compact Framework 1.0 therefore caller location information is not\r\n            available on that framework.\r\n            </para>\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\r\n            </para>\r\n            <para>\r\n            \"StackTrace information will be most informative with Debug build configurations. \r\n            By default, Debug builds include debug symbols, while Release builds do not. The \r\n            debug symbols contain most of the file, method name, line number, and column \r\n            information used in constructing StackFrame and StackTrace objects. StackTrace \r\n            might not report as many method calls as expected, due to code transformations \r\n            that occur during optimization.\"\r\n            </para>\r\n            <para>\r\n            This means that in a Release build the caller information may be incomplete or may \r\n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.NA\">\r\n            <summary>\r\n            When location information is not available the constant\r\n            <c>NA</c> is returned. Current value of this string\r\n            constant is <b>?</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.Type)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class based on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LocationInfo.#ctor(System.String,System.String,System.String,System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"className\">The fully qualified class name.</param>\r\n            <param name=\"methodName\">The method name.</param>\r\n            <param name=\"fileName\">The file name.</param>\r\n            <param name=\"lineNumber\">The line number of the method within the file.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LocationInfo\"/>\r\n            class with the specified data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LocationInfo.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LocationInfo class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.ClassName\">\r\n            <summary>\r\n            Gets the fully qualified class name of the caller making the logging \r\n            request.\r\n            </summary>\r\n            <value>\r\n            The fully qualified class name of the caller making the logging \r\n            request.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the fully qualified class name of the caller making the logging \r\n            request.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FileName\">\r\n            <summary>\r\n            Gets the file name of the caller.\r\n            </summary>\r\n            <value>\r\n            The file name of the caller.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the file name of the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.LineNumber\">\r\n            <summary>\r\n            Gets the line number of the caller.\r\n            </summary>\r\n            <value>\r\n            The line number of the caller.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the line number of the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.MethodName\">\r\n            <summary>\r\n            Gets the method name of the caller.\r\n            </summary>\r\n            <value>\r\n            The method name of the caller.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the method name of the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.FullInfo\">\r\n            <summary>\r\n            Gets all available caller information\r\n            </summary>\r\n            <value>\r\n            All available caller information, in the format\r\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets all available caller information, in the format\r\n            <c>fully.qualified.classname.of.caller.methodName(Filename:line)</c>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LocationInfo.StackFrames\">\r\n            <summary>\r\n            Gets the stack frames from the stack trace of the caller making the log request\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerManager\">\r\n            <summary>\r\n            Static manager that controls the creation of repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Static manager that controls the creation of repositories\r\n            </para>\r\n            <para>\r\n            This class is used by the wrapper managers (e.g. <see cref=\"T:log4net.LogManager\"/>)\r\n            to provide access to the <see cref=\"T:log4net.Core.ILogger\"/> objects.\r\n            </para>\r\n            <para>\r\n            This manager also holds the <see cref=\"T:log4net.Core.IRepositorySelector\"/> that is used to\r\n            lookup and create repositories. The selector can be set either programmatically using\r\n            the <see cref=\"P:log4net.Core.LoggerManager.RepositorySelector\"/> property, or by setting the <c>log4net.RepositorySelector</c>\r\n            AppSetting in the applications config file to the fully qualified type name of the\r\n            selector to use. \r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#ctor\">\r\n            <summary>\r\n            Private constructor to prevent instances. Only static methods should be used.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Private constructor to prevent instances. Only static methods should be used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.#cctor\">\r\n            <summary>\r\n            Hook the shutdown event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            On the full .NET runtime, the static constructor hooks up the \r\n            <c>AppDomain.ProcessExit</c> and <c>AppDomain.DomainUnload</c>> events. \r\n            These are used to shutdown the log4net system as the application exits.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.RegisterAppDomainEvents\">\r\n            <summary>\r\n            Register for ProcessExit and DomainUnload events on the AppDomain\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This needs to be in a separate method because the events make\r\n            a LinkDemand for the ControlAppDomain SecurityPermission. Because\r\n            this is a LinkDemand it is demanded at JIT time. Therefore we cannot\r\n            catch the exception in the method itself, we have to catch it in the\r\n            caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repository\">the repository to lookup in</param>\r\n            <returns>Return the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.String,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger found, or <c>null</c> if the named logger does not exist in the\r\n            specified repository.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the specified repository) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger found, or <c>null</c> if the named logger does not exist in the\r\n            specified assembly's repository.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the specified assembly's repository) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <returns>All the defined loggers.</returns>\r\n            <remarks>\r\n            <para>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified assembly's repository.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <returns>All the defined loggers.</returns>\r\n            <remarks>\r\n            <para>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Retrieves a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Retrieves a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">the assembly to use to lookup the repository</param>\r\n            <param name=\"type\">The <paramref name=\"type\"/> of which the fullname will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.Shutdown\">\r\n            <summary>\r\n            Shuts down the log4net system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in all the\r\n            default repositories.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.String)\">\r\n            <summary>\r\n            Shuts down the repository for the repository specified.\r\n            </summary>\r\n            <param name=\"repository\">The repository to shutdown.</param>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            repository for the <paramref name=\"repository\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Shuts down the repository for the repository specified.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            repository for the repository. The repository is looked up using\r\n            the <paramref name=\"repositoryAssembly\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An Exception will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.Core.LoggerManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets an array of all currently defined repositories.\r\n            </summary>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets an array of all currently defined repositories.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.GetVersionInfo\">\r\n            <summary>\r\n            Internal method to get pertinent version info.\r\n            </summary>\r\n            <returns>A string of version info.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnDomainUnload(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"E:System.AppDomain.DomainUnload\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"E:System.AppDomain.DomainUnload\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerManager.OnProcessExit(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Called when the <see cref=\"E:System.AppDomain.ProcessExit\"/> event fires\r\n            </summary>\r\n            <param name=\"sender\">the <see cref=\"T:System.AppDomain\"/> that is exiting</param>\r\n            <param name=\"e\">null</param>\r\n            <remarks>\r\n            <para>\r\n            Called when the <see cref=\"E:System.AppDomain.ProcessExit\"/> event fires.\r\n            </para>\r\n            <para>\r\n            When the event is triggered the log4net system is <see cref=\"M:log4net.Core.LoggerManager.Shutdown\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LoggerManager class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerManager.s_repositorySelector\">\r\n            <summary>\r\n            Initialize the default repository selector\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerManager.RepositorySelector\">\r\n            <summary>\r\n            Gets or sets the repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </summary>\r\n            <value>\r\n            The repository selector used by the <see cref=\"T:log4net.LogManager\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The repository selector (<see cref=\"T:log4net.Core.IRepositorySelector\"/>) is used by \r\n            the <see cref=\"T:log4net.LogManager\"/> to create and select repositories \r\n            (<see cref=\"T:log4net.Repository.ILoggerRepository\"/>).\r\n            </para>\r\n            <para>\r\n            The caller to <see cref=\"T:log4net.LogManager\"/> supplies either a string name \r\n            or an assembly (if not supplied the assembly is inferred using \r\n            <see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            <para>\r\n            This context is used by the selector to lookup a specific repository.\r\n            </para>\r\n            <para>\r\n            For the full .NET Framework, the default repository is <c>DefaultRepositorySelector</c>;\r\n            for the .NET Compact Framework <c>CompactRepositorySelector</c> is the default\r\n            repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggerWrapperImpl\">\r\n            <summary>\r\n            Implementation of the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class should be used as the base for all wrapper implementations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggerWrapperImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Constructs a new wrapper for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <remarks>\r\n            <para>\r\n            Constructs a new wrapper for the specified logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggerWrapperImpl.m_logger\">\r\n            <summary>\r\n            The logger that this object is wrapping\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggerWrapperImpl.Logger\">\r\n            <summary>\r\n            Gets the implementation behind this wrapper object.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Core.ILogger\"/> object that this object is implementing.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>Logger</c> object may not be the same object as this object \r\n            because of logger decorators.\r\n            </para>\r\n            <para>\r\n            This gets the actual underlying objects that is used to process\r\n            the log events.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEventData\">\r\n            <summary>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Portable data structure used by <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LoggerName\">\r\n            <summary>\r\n            The logger name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The logger name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Level\">\r\n            <summary>\r\n            Level of logging event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Level of logging event. Level cannot be Serializable\r\n            because it is a flyweight.  Due to its special serialization it\r\n            cannot be declared final either.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Message\">\r\n            <summary>\r\n            The application supplied message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The application supplied message of logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ThreadName\">\r\n            <summary>\r\n            The name of thread\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The name of thread in which this logging event was generated\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.TimeStamp\">\r\n            <summary>\r\n            The time the event was logged\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The TimeStamp is stored in the local time zone for this computer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.LocationInfo\">\r\n            <summary>\r\n            Location information for the caller.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Location information for the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.UserName\">\r\n            <summary>\r\n            String representation of the user\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            String representation of the user's windows name,\r\n            like DOMAIN\\username\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Identity\">\r\n            <summary>\r\n            String representation of the identity.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            String representation of the current thread's principal identity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.ExceptionString\">\r\n            <summary>\r\n            The string representation of the exception\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The string representation of the exception\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Domain\">\r\n            <summary>\r\n            String representation of the AppDomain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            String representation of the AppDomain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEventData.Properties\">\r\n            <summary>\r\n            Additional event specific properties\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A logger or an appender may attach additional\r\n            properties to specific events. These properties\r\n            have a string key and an object value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.FixFlags\">\r\n            <summary>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flags passed to the <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> property\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Mdc\">\r\n            <summary>\r\n            Fix the MDC\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Ndc\">\r\n            <summary>\r\n            Fix the NDC\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Message\">\r\n            <summary>\r\n            Fix the rendered message\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.ThreadName\">\r\n            <summary>\r\n            Fix the thread name\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.LocationInfo\">\r\n            <summary>\r\n            Fix the callers location information\r\n            </summary>\r\n            <remarks>\r\n            CAUTION: Very slow to generate\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.UserName\">\r\n            <summary>\r\n            Fix the callers windows user name\r\n            </summary>\r\n            <remarks>\r\n            CAUTION: Slow to generate\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Domain\">\r\n            <summary>\r\n            Fix the domain friendly name\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Identity\">\r\n            <summary>\r\n            Fix the callers principal name\r\n            </summary>\r\n            <remarks>\r\n            CAUTION: May be slow to generate\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Exception\">\r\n            <summary>\r\n            Fix the exception text\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Properties\">\r\n            <summary>\r\n            Fix the event properties. Active properties must implement <see cref=\"T:log4net.Core.IFixingRequired\"/> in order to be eligible for fixing.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.None\">\r\n            <summary>\r\n            No fields fixed\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.All\">\r\n            <summary>\r\n            All fields fixed\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.FixFlags.Partial\">\r\n            <summary>\r\n            Partial fields fixed\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This set of partial fields gives good performance. The following fields are fixed:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Message\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.ThreadName\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Exception\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Domain\"/></description></item>\r\n            <item><description><see cref=\"F:log4net.Core.FixFlags.Properties\"/></description></item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LoggingEvent\">\r\n            <summary>\r\n            The internal representation of logging events. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            When an affirmative decision is made to log then a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> instance is created. This instance \r\n            is passed around to the different log4net components.\r\n            </para>\r\n            <para>\r\n            This class is of concern to those wishing to extend log4net.\r\n            </para>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.HostNameProperty\">\r\n            <summary>\r\n            The key into the Properties map for the host name value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.IdentityProperty\">\r\n            <summary>\r\n            The key into the Properties map for the thread identity value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.UserNameProperty\">\r\n            <summary>\r\n            The key into the Properties map for the user name value.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,System.String,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class\r\n            from the supplied parameters.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"loggerName\">The name of the logger of this event.</param>\r\n            <param name=\"level\">The level of this event.</param>\r\n            <param name=\"message\">The message of this event.</param>\r\n            <param name=\"exception\">The exception for this event.</param>\r\n            <remarks>\r\n            <para>\r\n            Except <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>, <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> and <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/>, \r\n            all fields of <c>LoggingEvent</c> are filled when actually needed. Call\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> to cache all data locally\r\n            to prevent inconsistencies.\r\n            </para>\r\n            <para>This method is called by the log4net framework\r\n            to create a logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData,log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <param name=\"fixedData\">The fields in the <paranref name=\"data\"/> struct that have already been fixed.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fixedData\"/> parameter should be used to specify which fields in the\r\n            <paramref name=\"data\"/> struct have been preset. Fields not specified in the <paramref name=\"fixedData\"/>\r\n            will be captured from the environment if requested or fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Type,log4net.Repository.ILoggerRepository,log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"repository\">The repository this event is logged in.</param>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(log4net.Core.LoggingEventData)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            using specific data.\r\n            </summary>\r\n            <param name=\"data\">Data used to initialize the logging event.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is provided to allow a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to be created independently of the log4net framework. This can\r\n            be useful if you require a custom serialization scheme.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\"/> method to obtain an \r\n            instance of the <see cref=\"T:log4net.Core.LoggingEventData\"/> class.\r\n            </para>\r\n            <para>\r\n            This constructor sets this objects <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> flags to <see cref=\"F:log4net.Core.FixFlags.All\"/>,\r\n            this assumes that all the data relating to this event is passed in via the <paramref name=\"data\"/>\r\n            parameter and no other data should be captured from the environment.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.LoggingEvent\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.EnsureRepository(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Ensure that the repository is set.\r\n            </summary>\r\n            <param name=\"repository\">the value for the repository</param>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\">\r\n            <summary>\r\n            Write the rendered message to a TextWriter\r\n            </summary>\r\n            <param name=\"writer\">the writer to write the message to</param>\r\n            <remarks>\r\n            <para>\r\n            Unlike the <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property this method\r\n            does store the message data in the internal cache. Therefore \r\n            if called only once this method should be faster than the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property, however if the message is\r\n            to be accessed multiple times then the property will be more efficient.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            The data in this event must be fixed before it can be serialized.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> method must be called during the\r\n            <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method call if this event \r\n            is to be used outside that method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            <para>\r\n            Does a <see cref=\"F:log4net.Core.FixFlags.Partial\"/> fix of the data\r\n            in the logging event before returning the event data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetLoggingEventData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Gets the portable data for this <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <param name=\"fixFlags\">The set of data to ensure is fixed in the LoggingEventData</param>\r\n            <returns>The <see cref=\"T:log4net.Core.LoggingEventData\"/> for this event.</returns>\r\n            <remarks>\r\n            <para>\r\n            A new <see cref=\"T:log4net.Core.LoggingEvent\"/> can be constructed using a\r\n            <see cref=\"T:log4net.Core.LoggingEventData\"/> instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionStrRep\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            <b>Obsolete. Use <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> instead.</b>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetExceptionString\">\r\n            <summary>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <returns>\r\n            This event's exception's rendered using the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Returns this event's exception's rendered using the \r\n            <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData\">\r\n            <summary>\r\n            Fix instance fields that hold volatile data.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            Calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> is equivalent to\r\n            calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> passing the parameter\r\n            <c>false</c>.\r\n            </para>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\"/> for more\r\n            information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(System.Boolean)\">\r\n            <summary>\r\n            Fixes instance fields that hold volatile data.\r\n            </summary>\r\n            <param name=\"fastButLoose\">Set to <c>true</c> to not fix data that takes a long time to fix.</param>\r\n            <remarks>\r\n            <para>\r\n            Some of the values in instances of <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            are considered volatile, that is the values are correct at the\r\n            time the event is delivered to appenders, but will not be consistent\r\n            at any time afterwards. If an event is to be stored and then processed\r\n            at a later time these volatile values must be fixed by calling\r\n            <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/>. There is a performance penalty\r\n            for incurred by calling <see cref=\"M:log4net.Core.LoggingEvent.FixVolatileData\"/> but it\r\n            is essential to maintaining data consistency.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"fastButLoose\"/> param controls the data that\r\n            is fixed. Some of the data that can be fixed takes a long time to \r\n            generate, therefore if you do not require those settings to be fixed\r\n            they can be ignored by setting the <paramref name=\"fastButLoose\"/> param\r\n            to <c>true</c>. This setting will ignore the <see cref=\"P:log4net.Core.LoggingEvent.LocationInformation\"/>\r\n            and <see cref=\"P:log4net.Core.LoggingEvent.UserName\"/> settings.\r\n            </para>\r\n            <para>\r\n            Set <paramref name=\"fastButLoose\"/> to <c>false</c> to ensure that all \r\n            settings are fixed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.FixVolatileData(log4net.Core.FixFlags)\">\r\n            <summary>\r\n            Fix the fields specified by the <see cref=\"T:log4net.Core.FixFlags\"/> parameter\r\n            </summary>\r\n            <param name=\"flags\">the fields to fix</param>\r\n            <remarks>\r\n            <para>\r\n            Only fields specified in the <paramref name=\"flags\"/> will be fixed.\r\n            Fields will not be fixed if they have previously been fixed.\r\n            It is not possible to 'unfix' a field.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\">\r\n            <summary>\r\n            Lookup a composite property in this event\r\n            </summary>\r\n            <param name=\"key\">the key for the property to lookup</param>\r\n            <returns>the value for the property</returns>\r\n            <remarks>\r\n            <para>\r\n            This event has composite properties that combine together properties from\r\n            several different contexts in the following order:\r\n            <list type=\"definition\">\r\n            \t<item>\r\n            \t\t<term>this events properties</term>\r\n            \t\t<description>\r\n            \t\tThis event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\tproperties are specific to this event only.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the thread properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>the global properties</term>\r\n            \t\t<description>\r\n            \t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LoggingEvent.GetProperties\">\r\n            <summary>\r\n            Get all the composite properties in this event\r\n            </summary>\r\n            <returns>the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the properties</returns>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/> for details of the composite properties \r\n            stored by the event.\r\n            </para>\r\n            <para>\r\n            This method returns a single <see cref=\"T:log4net.Util.PropertiesDictionary\"/> containing all the\r\n            properties defined for this event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_data\">\r\n            <summary>\r\n            The internal logging event data.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_compositeProperties\">\r\n            <summary>\r\n            The internal logging event data.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_eventProperties\">\r\n            <summary>\r\n            The internal logging event data.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_callerStackBoundaryDeclaringType\">\r\n            <summary>\r\n            The fully qualified Type of the calling \r\n            logger class in the stack frame (i.e. the declaring type of the method).\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_message\">\r\n            <summary>\r\n            The application supplied message of logging event.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_thrownException\">\r\n            <summary>\r\n            The exception that was thrown.\r\n            </summary>\r\n            <remarks>\r\n            This is not serialized. The string representation\r\n            is serialized instead.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_repository\">\r\n            <summary>\r\n            The repository that generated the logging event\r\n            </summary>\r\n            <remarks>\r\n            This is not serialized.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_fixFlags\">\r\n            <summary>\r\n            The fix state for this event\r\n            </summary>\r\n            <remarks>\r\n            These flags indicate which fields have been fixed.\r\n            Not serialized.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LoggingEvent.m_cacheUpdatable\">\r\n            <summary>\r\n            Indicated that the internal cache is updateable (ie not fixed)\r\n            </summary>\r\n            <remarks>\r\n            This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler\r\n            changes in the caching strategy.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.StartTime\">\r\n            <summary>\r\n            Gets the time when the current process started.\r\n            </summary>\r\n            <value>\r\n            This is the time when this process started.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The TimeStamp is stored in the local time zone for this computer.\r\n            </para>\r\n            <para>\r\n            Tries to get the start time for the current process.\r\n            Failing that it returns the time of the first call to\r\n            this property.\r\n            </para>\r\n            <para>\r\n            Note that AppDomains may be loaded and unloaded within the\r\n            same process without the process terminating and therefore\r\n            without the process start time being reset.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Level\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.Level\"/> of the logging event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.TimeStamp\">\r\n            <summary>\r\n            Gets the time of the logging event.\r\n            </summary>\r\n            <value>\r\n            The time of the logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The TimeStamp is stored in the local time zone for this computer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LoggerName\">\r\n            <summary>\r\n            Gets the name of the logger that logged the event.\r\n            </summary>\r\n            <value>\r\n            The name of the logger that logged the event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the name of the logger that logged the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.LocationInformation\">\r\n            <summary>\r\n            Gets the location information for this logging event.\r\n            </summary>\r\n            <value>\r\n            The location information for this logging event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Core.LocationInfo\"/> class for more information on\r\n            supported frameworks and the different behavior in Debug and\r\n            Release builds.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.MessageObject\">\r\n            <summary>\r\n            Gets the message object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The message object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the message object used to initialize this event.\r\n            Note that this event may not have a valid message object.\r\n            If the event is serialized the message object will not \r\n            be transferred. To get the text of the message the\r\n            <see cref=\"P:log4net.Core.LoggingEvent.RenderedMessage\"/> property must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined message object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ExceptionObject\">\r\n            <summary>\r\n            Gets the exception object used to initialize this event.\r\n            </summary>\r\n            <value>\r\n            The exception object used to initialize this event.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the exception object used to initialize this event.\r\n            Note that this event may not have a valid exception object.\r\n            If the event is serialized the exception object will not \r\n            be transferred. To get the text of the exception the\r\n            <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/> method must be used \r\n            not this property.\r\n            </para>\r\n            <para>\r\n            If there is no defined exception object for this event then\r\n            null will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Repository\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this event was created in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.RenderedMessage\">\r\n            <summary>\r\n            Gets the message, rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </summary>\r\n            <value>\r\n            The message rendered through the <see cref=\"P:log4net.Repository.ILoggerRepository.RendererMap\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.ThreadName\">\r\n            <summary>\r\n            Gets the name of the current thread.  \r\n            </summary>\r\n            <value>\r\n            The name of the current thread, or the thread ID when \r\n            the name is not available.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The collected information is cached for future use.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.UserName\">\r\n            <summary>\r\n            Gets the name of the current user.\r\n            </summary>\r\n            <value>\r\n            The name of the current user, or <c>NOT AVAILABLE</c> when the \r\n            underlying runtime has no support for retrieving the name of the \r\n            current user.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Calls <c>WindowsIdentity.GetCurrent().Name</c> to get the name of\r\n            the current windows user.\r\n            </para>\r\n            <para>\r\n            To improve performance, we could cache the string representation of \r\n            the name, and reuse that as long as the identity stayed constant.  \r\n            Once the identity changed, we would need to re-assign and re-render \r\n            the string.\r\n            </para>\r\n            <para>\r\n            However, the <c>WindowsIdentity.GetCurrent()</c> call seems to \r\n            return different objects every time, so the current implementation \r\n            doesn't do this type of caching.\r\n            </para>\r\n            <para>\r\n            Timing for these operations:\r\n            </para>\r\n            <list type=\"table\">\r\n              <listheader>\r\n                <term>Method</term>\r\n                <description>Results</description>\r\n              </listheader>\r\n              <item>\r\n                <term><c>WindowsIdentity.GetCurrent()</c></term>\r\n                <description>10000 loops, 00:00:00.2031250 seconds</description>\r\n              </item>\r\n              <item>\r\n                <term><c>WindowsIdentity.GetCurrent().Name</c></term>\r\n                <description>10000 loops, 00:00:08.0468750 seconds</description>\r\n              </item>\r\n            </list>\r\n            <para>\r\n            This means we could speed things up almost 40 times by caching the \r\n            value of the <c>WindowsIdentity.GetCurrent().Name</c> property, since \r\n            this takes (8.04-0.20) = 7.84375 seconds.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Identity\">\r\n            <summary>\r\n            Gets the identity of the current thread principal.\r\n            </summary>\r\n            <value>\r\n            The string name of the identity of the current thread principal.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Calls <c>System.Threading.Thread.CurrentPrincipal.Identity.Name</c> to get\r\n            the name of the current thread principal.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Domain\">\r\n            <summary>\r\n            Gets the AppDomain friendly name.\r\n            </summary>\r\n            <value>\r\n            The AppDomain friendly name.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the AppDomain friendly name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Properties\">\r\n            <summary>\r\n            Additional event specific properties.\r\n            </summary>\r\n            <value>\r\n            Additional event specific properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            A logger or an appender may attach additional\r\n            properties to specific events. These properties\r\n            have a string key and an object value.\r\n            </para>\r\n            <para>\r\n            This property is for events that have been added directly to\r\n            this event. The aggregate properties (which include these\r\n            event properties) can be retrieved using <see cref=\"M:log4net.Core.LoggingEvent.LookupProperty(System.String)\"/>\r\n            and <see cref=\"M:log4net.Core.LoggingEvent.GetProperties\"/>.\r\n            </para>\r\n            <para>\r\n            Once the properties have been fixed <see cref=\"P:log4net.Core.LoggingEvent.Fix\"/> this property\r\n            returns the combined cached properties. This ensures that updates to\r\n            this property are always reflected in the underlying storage. When\r\n            returning the combined properties there may be more keys in the\r\n            Dictionary than expected.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LoggingEvent.Fix\">\r\n            <summary>\r\n            The fixed fields in this event\r\n            </summary>\r\n            <value>\r\n            The set of fields that are fixed in this event\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Fields will not be fixed if they have previously been fixed.\r\n            It is not possible to 'unfix' a field.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.LogImpl\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.ILog\"/> wrapper interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This implementation of the <see cref=\"T:log4net.ILog\"/> interface\r\n            forwards to the <see cref=\"T:log4net.Core.ILogger\"/> held by the base class.\r\n            </para>\r\n            <para>\r\n            This logger has methods to allow the caller to log at the following\r\n            levels:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <item>\r\n                <term>DEBUG</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>DEBUG</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Debug\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>INFO</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>INFO</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Info\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsInfoEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>WARN</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>WARN</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Warn\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsWarnEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>ERROR</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>ERROR</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Error\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsErrorEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n              <item>\r\n                <term>FATAL</term>\r\n                <description>\r\n                The <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> and <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\"/> methods log messages\r\n                at the <c>FATAL</c> level. That is the level with that name defined in the\r\n                repositories <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/>. The default value\r\n                for this level is <see cref=\"F:log4net.Core.Level.Fatal\"/>. The <see cref=\"P:log4net.Core.LogImpl.IsFatalEnabled\"/>\r\n                property tests if this level is enabled for logging.\r\n                </description>\r\n              </item>\r\n            </list>\r\n            <para>\r\n            The values for these levels and their semantic meanings can be changed by \r\n            configuring the <see cref=\"P:log4net.Repository.ILoggerRepository.LevelMap\"/> for the repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ILog\">\r\n            <summary>\r\n            The ILog interface is use by application to log messages into\r\n            the log4net framework.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use the <see cref=\"T:log4net.LogManager\"/> to obtain logger instances\r\n            that implement this interface. The <see cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            static method is used to get logger instances.\r\n            </para>\r\n            <para>\r\n            This class contains methods for logging at different levels and also\r\n            has properties for determining if those logging levels are\r\n            enabled in the current configuration.\r\n            </para>\r\n            <para>\r\n            This interface can be implemented in different ways. This documentation\r\n            specifies reasonable behavior that a caller can expect from the actual\r\n            implementation, however different implementations reserve the right to\r\n            do things differently.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <seealso cref=\"T:log4net.LogManager\"/>\r\n            <seealso cref=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Debug\"/> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Debug\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Debug(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Info\"/> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsInfoEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Warn\"/> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Warn\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsWarnEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Error\"/> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Error\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsErrorEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object)\">\r\n            <overloads>Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <see cref=\"F:log4net.Core.Level.Fatal\"/> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para><b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Log a message object with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> passed\r\n            as a parameter.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object[])\">\r\n            <overloads>Log a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.</overloads>\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <c>String.Format</c> method. See\r\n            <see cref=\"M:System.String.Format(System.String,System.Object[])\"/> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object,System.Exception)\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsFatalEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsDebugEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Debug\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Debug\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This function is intended to lessen the computational cost of\r\n            disabled log debug statements.\r\n            </para>\r\n            <para> For some ILog interface <c>log</c>, when you write:</para>\r\n            <code lang=\"C#\">\r\n            log.Debug(\"This is entry number: \" + i );\r\n            </code>\r\n            <para>\r\n            You incur the cost constructing the message, string construction and concatenation in\r\n            this case, regardless of whether the message is logged or not.\r\n            </para>\r\n            <para>\r\n            If you are worried about speed (who isn't), then you should write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (log.IsDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way you will not incur the cost of parameter\r\n            construction if debugging is disabled for <c>log</c>. On\r\n            the other hand, if the <c>log</c> is debug enabled, you\r\n            will incur the cost of evaluating whether the logger is debug\r\n            enabled twice. Once in <see cref=\"P:log4net.ILog.IsDebugEnabled\"/> and once in\r\n            the <see cref=\"M:log4net.ILog.Debug(System.Object)\"/>.  This is an insignificant overhead\r\n            since evaluating a logger takes about 1% of the time it\r\n            takes to actually log. This is the preferred style of logging.\r\n            </para>\r\n            <para>Alternatively if your logger is available statically then the is debug\r\n            enabled state can be stored in a static variable like this:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            private static readonly bool isDebugEnabled = log.IsDebugEnabled;\r\n            </code>\r\n            <para>\r\n            Then when you come to log you can write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (isDebugEnabled)\r\n            { \r\n                log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way the debug enabled state is only queried once\r\n            when the class is loaded. Using a <c>private static readonly</c>\r\n            variable is the most efficient because it is a run time constant\r\n            and can be heavily optimized by the JIT compiler.\r\n            </para>\r\n            <para>\r\n            Of course if you use a static readonly variable to\r\n            hold the enabled state of the logger then you cannot\r\n            change the enabled state at runtime to vary the logging\r\n            that is produced. You have to decide if you need absolute\r\n            speed or runtime flexibility.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Debug(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Info\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Info\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Info(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Warn\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Warn\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Warn(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Error\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Error\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Error(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.ILog.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <see cref=\"F:log4net.Core.Level.Fatal\"/> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <see cref=\"F:log4net.Core.Level.Fatal\"/> events, <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            For more information see <see cref=\"P:log4net.ILog.IsDebugEnabled\"/>.\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.ILog.Fatal(System.Object)\"/>\r\n            <seealso cref=\"M:log4net.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.#ctor(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Construct a new wrapper for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <remarks>\r\n            <para>\r\n            Construct a new wrapper for the specified logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ReloadLevels(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Virtual method called when the configuration of the repository changes\r\n            </summary>\r\n            <param name=\"repository\">the repository holding the levels</param>\r\n            <remarks>\r\n            <para>\r\n            Virtual method called when the configuration of the repository changes\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>DEBUG</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>DEBUG</c> level. If this logger is\r\n            <c>DEBUG</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Debug(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>DEBUG</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>DEBUG</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> passed\r\n            as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.DebugFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>DEBUG</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Debug(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>INFO</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>INFO</c> level. If this logger is\r\n            <c>INFO</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger \r\n            and also higher in the hierarchy depending on the value of \r\n            the additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> \r\n            to this method will print the name of the <see cref=\"T:System.Exception\"/> \r\n            but no stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Info(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>INFO</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.InfoFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>INFO</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Info(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"message\">the message object to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>WARN</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>WARN</c> level. If this logger is\r\n            <c>WARN</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Warn(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>WARN</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>WARN</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.WarnFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>WARN</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Warn(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>ERROR</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>ERROR</c> level. If this logger is\r\n            <c>ERROR</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Error(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>ERROR</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>ERROR</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.ErrorFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>ERROR</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Error(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <remarks>\r\n            <para>\r\n            This method first checks if this logger is <c>FATAL</c>\r\n            enabled by comparing the level of this logger with the \r\n            <c>FATAL</c> level. If this logger is\r\n            <c>FATAL</c> enabled, then it converts the message object\r\n            (passed as parameter) to a string by invoking the appropriate\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>. It then \r\n            proceeds to call all the registered appenders in this logger and \r\n            also higher in the hierarchy depending on the value of the \r\n            additivity flag.\r\n            </para>\r\n            <para>\r\n            <b>WARNING</b> Note that passing an <see cref=\"T:System.Exception\"/> to this\r\n            method will print the name of the <see cref=\"T:System.Exception\"/> but no\r\n            stack trace. To print a stack trace use the \r\n            <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\"/> form instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.Fatal(System.Object,System.Exception)\">\r\n            <summary>\r\n            Logs a message object with the <c>FATAL</c> level\r\n            </summary>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs a message object with the <c>FATAL</c> level including\r\n            the stack trace of the <see cref=\"T:System.Exception\"/> <paramref name=\"exception\"/> \r\n            passed as a parameter.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/> form for more detailed information.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.String,System.Object,System.Object,System.Object)\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"arg0\">An Object to format</param>\r\n            <param name=\"arg1\">An Object to format</param>\r\n            <param name=\"arg2\">An Object to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            The string is formatted using the <see cref=\"P:System.Globalization.CultureInfo.InvariantCulture\"/>\r\n            format provider. To specify a localized provider use the\r\n            <see cref=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\"/> method.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.FatalFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Logs a formatted message string with the <c>FATAL</c> level.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information</param>\r\n            <param name=\"format\">A String containing zero or more format items</param>\r\n            <param name=\"args\">An Object array containing zero or more objects to format</param>\r\n            <remarks>\r\n            <para>\r\n            The message is formatted using the <see cref=\"M:System.String.Format(System.IFormatProvider,System.String,System.Object[])\"/> method. See\r\n            <c>String.Format</c> for details of the syntax of the format string and the behavior\r\n            of the formatting.\r\n            </para>\r\n            <para>\r\n            This method does not take an <see cref=\"T:System.Exception\"/> object to include in the\r\n            log event. To pass an <see cref=\"T:System.Exception\"/> use one of the <see cref=\"M:log4net.Core.LogImpl.Fatal(System.Object)\"/>\r\n            methods instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.LogImpl.LoggerRepositoryConfigurationChanged(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Event handler for the <see cref=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\"/> event\r\n            </summary>\r\n            <param name=\"sender\">the repository</param>\r\n            <param name=\"e\">Empty</param>\r\n        </member>\r\n        <member name=\"F:log4net.Core.LogImpl.ThisDeclaringType\">\r\n            <summary>\r\n            The fully qualified name of this declaring type not the type of any subclass.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsDebugEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>DEBUG</c>\r\n            level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>DEBUG</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This function is intended to lessen the computational cost of\r\n            disabled log debug statements.\r\n            </para>\r\n            <para>\r\n            For some <c>log</c> Logger object, when you write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            log.Debug(\"This is entry number: \" + i );\r\n            </code>\r\n            <para>\r\n            You incur the cost constructing the message, concatenation in\r\n            this case, regardless of whether the message is logged or not.\r\n            </para>\r\n            <para>\r\n            If you are worried about speed, then you should write:\r\n            </para>\r\n            <code lang=\"C#\">\r\n            if (log.IsDebugEnabled())\r\n            { \r\n             log.Debug(\"This is entry number: \" + i );\r\n            }\r\n            </code>\r\n            <para>\r\n            This way you will not incur the cost of parameter\r\n            construction if debugging is disabled for <c>log</c>. On\r\n            the other hand, if the <c>log</c> is debug enabled, you\r\n            will incur the cost of evaluating whether the logger is debug\r\n            enabled twice. Once in <c>IsDebugEnabled</c> and once in\r\n            the <c>Debug</c>.  This is an insignificant overhead\r\n            since evaluating a logger takes about 1% of the time it\r\n            takes to actually log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsInfoEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>INFO</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>INFO</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsWarnEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>WARN</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>WARN</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples \r\n            of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsErrorEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>ERROR</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>ERROR</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"P:log4net.Core.LogImpl.IsFatalEnabled\">\r\n            <summary>\r\n            Checks if this logger is enabled for the <c>FATAL</c> level.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this logger is enabled for <c>FATAL</c> events,\r\n            <c>false</c> otherwise.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Core.LogImpl.IsDebugEnabled\"/> for more information and examples of using this method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"P:log4net.ILog.IsDebugEnabled\"/>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContext\">\r\n            <summary>\r\n            A SecurityContext used by log4net when interacting with protected resources\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A SecurityContext used by log4net when interacting with protected resources\r\n            for example with operating system services. This can be used to impersonate\r\n            a principal that has been granted privileges on the system resources.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate this SecurityContext\r\n            </summary>\r\n            <param name=\"state\">State supplied by the caller</param>\r\n            <returns>An <see cref=\"T:System.IDisposable\"/> instance that will\r\n            revoke the impersonation of this SecurityContext, or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Impersonate this security context. Further calls on the current\r\n            thread should now be made in the security context provided\r\n            by this object. When the <see cref=\"T:System.IDisposable\"/> result \r\n            <see cref=\"M:System.IDisposable.Dispose\"/> method is called the security\r\n            context of the thread should be reverted to the state it was in\r\n            before <see cref=\"M:log4net.Core.SecurityContext.Impersonate(System.Object)\"/> was called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.SecurityContextProvider\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.SecurityContextProvider\"/> providers default <see cref=\"T:log4net.Core.SecurityContext\"/> instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A configured component that interacts with potentially protected system\r\n            resources uses a <see cref=\"T:log4net.Core.SecurityContext\"/> to provide the elevated\r\n            privileges required. If the <see cref=\"T:log4net.Core.SecurityContext\"/> object has\r\n            been not been explicitly provided to the component then the component\r\n            will request one from this <see cref=\"T:log4net.Core.SecurityContextProvider\"/>.\r\n            </para>\r\n            <para>\r\n            By default the <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> is\r\n            an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/> which returns only\r\n            <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects. This is a reasonable default\r\n            where the privileges required are not know by the system.\r\n            </para>\r\n            <para>\r\n            This default behavior can be overridden by subclassing the <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            and overriding the <see cref=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\"/> method to return\r\n            the desired <see cref=\"T:log4net.Core.SecurityContext\"/> objects. The default provider\r\n            can be replaced by programmatically setting the value of the \r\n            <see cref=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\"/> property.\r\n            </para>\r\n            <para>\r\n            An alternative is to use the <c>log4net.Config.SecurityContextProviderAttribute</c>\r\n            This attribute can be applied to an assembly in the same way as the\r\n            <c>log4net.Config.XmlConfiguratorAttribute\"</c>. The attribute takes\r\n            the type to use as the <see cref=\"T:log4net.Core.SecurityContextProvider\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.SecurityContextProvider.s_defaultProvider\">\r\n            <summary>\r\n            The default provider\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.#ctor\">\r\n            <summary>\r\n            Protected default constructor to allow subclassing\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Protected default constructor to allow subclassing\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.SecurityContextProvider.CreateSecurityContext(System.Object)\">\r\n            <summary>\r\n            Create a SecurityContext for a consumer\r\n            </summary>\r\n            <param name=\"consumer\">The consumer requesting the SecurityContext</param>\r\n            <returns>An impersonation context</returns>\r\n            <remarks>\r\n            <para>\r\n            The default implementation is to return a <see cref=\"T:log4net.Util.NullSecurityContext\"/>.\r\n            </para>\r\n            <para>\r\n            Subclasses should override this method to provide their own\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.SecurityContextProvider.DefaultProvider\">\r\n            <summary>\r\n            Gets or sets the default SecurityContextProvider\r\n            </summary>\r\n            <value>\r\n            The default SecurityContextProvider\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default provider is used by configured components that\r\n            require a <see cref=\"T:log4net.Core.SecurityContext\"/> and have not had one\r\n            given to them.\r\n            </para>\r\n            <para>\r\n            By default this is an instance of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that returns <see cref=\"T:log4net.Util.NullSecurityContext\"/> objects.\r\n            </para>\r\n            <para>\r\n            The default provider can be set programmatically by setting\r\n            the value of this property to a sub class of <see cref=\"T:log4net.Core.SecurityContextProvider\"/>\r\n            that has the desired behavior.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.TimeEvaluator\">\r\n            <summary>\r\n            An evaluator that triggers after specified number of seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n            <author>Robert Sevcik</author>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\">\r\n            <summary>\r\n            The default time threshold for triggering in seconds. Zero means it won't trigger at all.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_interval\">\r\n            <summary>\r\n            The time threshold for triggering in seconds. Zero means it won't trigger at all.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.TimeEvaluator.m_lasttime\">\r\n            <summary>\r\n            The time of last check. This gets updated when the object is created and when the evaluator triggers.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor\">\r\n            <summary>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the <see cref=\"F:log4net.Core.TimeEvaluator.DEFAULT_INTERVAL\"/> time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.#ctor(System.Int32)\">\r\n            <summary>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </summary>\r\n            <param name=\"interval\">\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </param>\r\n            <remarks>\r\n            <para>\r\n            Create a new evaluator using the specified time threshold in seconds.\r\n            </para>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.TimeEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Is this <paramref name=\"loggingEvent\"/> the triggering event?\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to check</param>\r\n            <returns>This method returns <c>true</c>, if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.. \r\n            Otherwise it returns <c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Core.TimeEvaluator.Interval\">\r\n            <summary>\r\n            The time threshold in seconds to trigger after\r\n            </summary>\r\n            <value>\r\n            The time threshold in seconds to trigger after.\r\n            Zero means it won't trigger at all.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This evaluator will trigger if the specified time period \r\n            <see cref=\"P:log4net.Core.TimeEvaluator.Interval\"/> has passed since last check.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperCreationHandler\">\r\n            <summary>\r\n            Delegate used to handle creation of new wrappers.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle creation of new wrappers. This delegate\r\n            is called from the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method to construct the wrapper for the specified logger.\r\n            </para>\r\n            <para>\r\n            The delegate to use is supplied to the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Core.WrapperMap\">\r\n            <summary>\r\n            Maps between logger objects and wrapper objects.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class maintains a mapping between <see cref=\"T:log4net.Core.ILogger\"/> objects and\r\n            <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects. Use the <see cref=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\"/> method to \r\n            lookup the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> for the specified <see cref=\"T:log4net.Core.ILogger\"/>.\r\n            </para>\r\n            <para>\r\n            New wrapper instances are created by the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/>\r\n            method. The default behavior is for this method to delegate construction\r\n            of the wrapper to the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/> delegate supplied\r\n            to the constructor. This allows specialization of the behavior without\r\n            requiring subclassing of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.#ctor(log4net.Core.WrapperCreationHandler)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/>\r\n            </summary>\r\n            <param name=\"createWrapperHandler\">The handler to use to create the wrapper objects.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Core.WrapperMap\"/> class with \r\n            the specified handler to create the wrapper objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.GetWrapper(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Gets the wrapper object for the specified logger.\r\n            </summary>\r\n            <returns>The wrapper object for the specified logger</returns>\r\n            <remarks>\r\n            <para>\r\n            If the logger is null then the corresponding wrapper is null.\r\n            </para>\r\n            <para>\r\n            Looks up the wrapper it it has previously been requested and\r\n            returns it. If the wrapper has never been requested before then\r\n            the <see cref=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\"/> virtual method is\r\n            called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.CreateNewWrapperObject(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Creates the wrapper object for the specified logger.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap in a wrapper.</param>\r\n            <returns>The wrapper object for the logger.</returns>\r\n            <remarks>\r\n            <para>\r\n            This implementation uses the <see cref=\"T:log4net.Core.WrapperCreationHandler\"/>\r\n            passed to the constructor to create the wrapper. This method\r\n            can be overridden in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.RepositoryShutdown(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Called when a monitored repository shutdown event is received.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called when a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this\r\n            <see cref=\"T:log4net.Core.WrapperMap\"/> is holding loggers for has signaled its shutdown\r\n            event <see cref=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\"/>. The default\r\n            behavior of this method is to release the references to the loggers\r\n            and their wrappers generated for this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Core.WrapperMap.ILoggerRepository_Shutdown(System.Object,System.EventArgs)\">\r\n            <summary>\r\n            Event handler for repository shutdown event.\r\n            </summary>\r\n            <param name=\"sender\">The sender of the event.</param>\r\n            <param name=\"e\">The event args.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_repositories\">\r\n            <summary>\r\n            Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_createWrapperHandler\">\r\n            <summary>\r\n            The handler to use to create the extension wrapper objects.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Core.WrapperMap.m_shutdownHandler\">\r\n            <summary>\r\n            Internal reference to the delegate used to register for repository shutdown events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Core.WrapperMap.Repositories\">\r\n            <summary>\r\n            Gets the map of logger repositories.\r\n            </summary>\r\n            <value>\r\n            Map of logger repositories.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the hashtable that is keyed on <see cref=\"T:log4net.Repository.ILoggerRepository\"/>. The\r\n            values are hashtables keyed on <see cref=\"T:log4net.Core.ILogger\"/> with the\r\n            value being the corresponding <see cref=\"T:log4net.Core.ILoggerWrapper\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.IDateFormatter\">\r\n            <summary>\r\n            Render a <see cref=\"T:System.DateTime\"/> as a string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface to abstract the rendering of a <see cref=\"T:System.DateTime\"/>\r\n            instance into a string.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/> method is used to render the\r\n            date to a text writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.IDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the specified date as a string.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:System.DateTime\"/> as a string and write it\r\n            to the <see cref=\"T:System.IO.TextWriter\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.AbsoluteTimeDateFormat\">\r\n            <summary>\r\n            String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is <b>ABSOLUTE</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.DateAndTimeDateFormat\">\r\n            <summary>\r\n            String constant used to specify DateTimeDateFormat in layouts.  Current value is <b>DATE</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.Iso8601TimeDateFormat\">\r\n            <summary>\r\n            String constant used to specify ISO8601DateFormat in layouts. Current value is <b>ISO8601</b>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Renders the date into a string. Format is <c>\"HH:mm:ss\"</c>.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to render into a string.</param>\r\n            <param name=\"buffer\">The string builder to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Subclasses should override this method to render the date\r\n            into a string using a precision up to the second. This method\r\n            will be called at most once per second and the result will be\r\n            reused if it is needed again during the same second.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Renders the date into a string. Format is \"HH:mm:ss,fff\".\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to render into a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> method to generate the\r\n            time string up to the seconds and then appends the current\r\n            milliseconds. The results from <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> are\r\n            cached and <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/> is called at most once\r\n            per second.\r\n            </para>\r\n            <para>\r\n            Sub classes should override <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\"/>\r\n            rather than <see cref=\"M:log4net.DateFormatter.AbsoluteTimeDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeToTheSecond\">\r\n            <summary>\r\n            Last stored time with precision up to the second.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeBuf\">\r\n            <summary>\r\n            Last stored time with precision up to the second, formatted\r\n            as a string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.AbsoluteTimeDateFormatter.s_lastTimeString\">\r\n            <summary>\r\n            Last stored time with precision up to the second, formatted\r\n            as a string.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.DateTimeDateFormatter\">\r\n            <summary>\r\n            Formats a <see cref=\"T:System.DateTime\"/> as <c>\"dd MMM yyyy HH:mm:ss,fff\"</c>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats a <see cref=\"T:System.DateTime\"/> in the format \r\n            <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, \r\n            <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Angelika Schnagl</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.DateTimeDateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Formats the date without the milliseconds part\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"buffer\">The string builder to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Formats a DateTime in the format <c>\"dd MMM yyyy HH:mm:ss\"</c>\r\n            for example, <c>\"06 Nov 1994 15:49:37\"</c>.\r\n            </para>\r\n            <para>\r\n            The base class will append the <c>\",fff\"</c> milliseconds section.\r\n            This method will only be called at most once per second.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.DateTimeDateFormatter.m_dateTimeFormatInfo\">\r\n            <summary>\r\n            The format info for the invariant culture.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.Iso8601DateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> as <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> specified as a string: <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.Iso8601DateFormatter.FormatDateWithoutMillis(System.DateTime,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Formats the date without the milliseconds part\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to format.</param>\r\n            <param name=\"buffer\">The string builder to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Formats the date specified as a string: <c>\"yyyy-MM-dd HH:mm:ss\"</c>.\r\n            </para>\r\n            <para>\r\n            The base class will append the <c>\",fff\"</c> milliseconds section.\r\n            This method will only be called at most once per second.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.DateFormatter.SimpleDateFormatter\">\r\n            <summary>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the <see cref=\"T:System.DateTime\"/> using the <see cref=\"T:System.DateTime\"/> <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"format\">The format string.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> class \r\n            with the specified format string.\r\n            </para>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.DateFormatter.SimpleDateFormatter.FormatDate(System.DateTime,System.IO.TextWriter)\">\r\n            <summary>\r\n            Formats the date using <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </summary>\r\n            <param name=\"dateToFormat\">The date to convert to a string.</param>\r\n            <param name=\"writer\">The writer to write to.</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the date format string supplied to the constructor to call\r\n            the <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/> method to format the date.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.DateFormatter.SimpleDateFormatter.m_formatString\">\r\n            <summary>\r\n            The format string used to format the <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The format string must be compatible with the options\r\n            that can be supplied to <see cref=\"M:System.DateTime.ToString(System.String,System.IFormatProvider)\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.DenyAllFilter\">\r\n            <summary>\r\n            This filter drops all <see cref=\"T:log4net.Core.LoggingEvent\"/>. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            You can add this filter to the end of a filter chain to\r\n            switch from the default \"accept all unless instructed otherwise\"\r\n            filtering behavior to a \"deny all unless instructed otherwise\"\r\n            behavior.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterSkeleton\">\r\n            <summary>\r\n            Subclass this type to implement customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should extend this class to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.IFilter\">\r\n            <summary>\r\n            Implement this interface to provide customized logging event filtering\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Users should implement this interface to implement customized logging\r\n            event filtering. Note that <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> and \r\n            <see cref=\"T:log4net.Appender.AppenderSkeleton\"/>, the parent class of all standard\r\n            appenders, have built-in filtering rules. It is suggested that you\r\n            first use and understand the built-in rules before rushing to write\r\n            your own custom filters.\r\n            </para>\r\n            <para>\r\n            This abstract class assumes and also imposes that filters be\r\n            organized in a linear chain. The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            method of each filter is called sequentially, in the order of their \r\n            addition to the chain.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/> method must return one\r\n            of the integer constants <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> or <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned, then the log event is dropped \r\n            immediately without consulting with the remaining filters.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned, then the next filter\r\n            in the chain is consulted. If there are no more filters in the\r\n            chain, then the log event is logged. Thus, in the presence of no\r\n            filters, the default behavior is to log all logging events.\r\n            </para>\r\n            <para>\r\n            If the value <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, then the log\r\n            event is logged without consulting the remaining filters.\r\n            </para>\r\n            <para>\r\n            The philosophy of log4net filters is largely inspired from the\r\n            Linux ipchains.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the logging event should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The LoggingEvent to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.IFilter.Next\">\r\n            <summary>\r\n            Property to get and set the next filter\r\n            </summary>\r\n            <value>\r\n            The next filter in the chain\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Filters are typically composed into chains. This property allows the next filter in \r\n            the chain to be accessed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterSkeleton.m_next\">\r\n            <summary>\r\n            Points to the next filter in the filter chain.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Filter.FilterSkeleton.Next\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Initialize the filter with the options set\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.FilterSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Typically filter's options become active immediately on set, \r\n            however this method must still be called. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.FilterSkeleton.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Decide if the <see cref=\"T:log4net.Core.LoggingEvent\"/> should be logged through an appender.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> to decide upon</param>\r\n            <returns>The decision of the filter</returns>\r\n            <remarks>\r\n            <para>\r\n            If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>, then the event will be\r\n            dropped. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>, then the next\r\n            filter, if any, will be invoked. If the decision is <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> then\r\n            the event will be logged without consulting with other filters in\r\n            the chain.\r\n            </para>\r\n            <para>\r\n            This method is marked <c>abstract</c> and must be implemented\r\n            in a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.FilterSkeleton.Next\">\r\n            <summary>\r\n            Property to get and set the next filter\r\n            </summary>\r\n            <value>\r\n            The next filter in the chain\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Filters are typically composed into chains. This property allows the next filter in \r\n            the chain to be accessed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.DenyAllFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Always returns the integer constant <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">the LoggingEvent to filter</param>\r\n            <returns>Always returns <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Ignores the event being logged and just returns\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This can be used to change the default filter\r\n            chain behavior from <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> to <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. This filter\r\n            should only be used as the last filter in the chain\r\n            as any further filters will be ignored!\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.FilterDecision\">\r\n            <summary>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The return result from <see cref=\"M:log4net.Filter.IFilter.Decide(log4net.Core.LoggingEvent)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Deny\">\r\n            <summary>\r\n            The log event must be dropped immediately without \r\n            consulting with the remaining filters, if any, in the chain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Neutral\">\r\n            <summary>\r\n            This filter is neutral with respect to the log event. \r\n            The remaining filters, if any, should be consulted for a final decision.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.FilterDecision.Accept\">\r\n            <summary>\r\n            The log event must be logged immediately without \r\n            consulting with the remaining filters, if any, in the chain.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelMatchFilter\">\r\n            <summary>\r\n            This is a very simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits two options <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> and\r\n            <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If there is an exact match between the value\r\n            of the <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/> option and the <see cref=\"T:log4net.Core.Level\"/> of the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the <see cref=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> option value is set\r\n            to <c>true</c>, if it is <c>false</c> then \r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            flag to indicate if the filter should <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> on a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelMatchFilter.m_levelToMatch\">\r\n            <summary>\r\n            the <see cref=\"T:log4net.Core.Level\"/> to match against\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Tests if the <see cref=\"T:log4net.Core.Level\"/> of the logging event matches that of the filter\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event to filter</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the event matches the level of the\r\n            filter then the result of the function depends on the\r\n            value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>. If it is true then\r\n            the function will return <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/>, it it is false then it\r\n            will return <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>. If the <see cref=\"T:log4net.Core.Level\"/> does not match then\r\n            the result will be <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelMatchFilter.LevelToMatch\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Core.Level\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LevelRangeFilter\">\r\n            <summary>\r\n            This is a simple filter based on <see cref=\"T:log4net.Core.Level\"/> matching.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The filter admits three options <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            that determine the range of priorities that are matched, and\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>. If there is a match between the range\r\n            of priorities and the <see cref=\"T:log4net.Core.Level\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the \r\n            <see cref=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in case the <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> \r\n            option value is set to <c>true</c>, if it is <c>false</c>\r\n            then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned. If there is no match, <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when matching a <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMin\">\r\n            <summary>\r\n            the minimum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LevelRangeFilter.m_levelMax\">\r\n            <summary>\r\n            the maximum <see cref=\"T:log4net.Core.Level\"/> value to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LevelRangeFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if the event should be logged.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the logging event to check</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Core.Level\"/> of the logging event is outside the range\r\n            matched by this filter then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/>\r\n            is returned. If the <see cref=\"T:log4net.Core.Level\"/> is matched then the value of\r\n            <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> is checked. If it is true then\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned, otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMin\"/> and <see cref=\"P:log4net.Filter.LevelRangeFilter.LevelMax\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMin\">\r\n            <summary>\r\n            Set the minimum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The minimum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LevelRangeFilter.LevelMax\">\r\n            <summary>\r\n            Sets the maximum matched <see cref=\"T:log4net.Core.Level\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The maximum level that this filter will attempt to match against the \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> level. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LevelRangeFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.LoggerMatchFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the event's logger name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The works very similar to the <see cref=\"T:log4net.Filter.LevelMatchFilter\"/>. It admits two \r\n            options <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> and <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>. If the \r\n            <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <see cref=\"T:log4net.Core.LoggingEvent\"/> starts \r\n            with the value of the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> option, then the \r\n            <see cref=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\"/> method returns <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> in \r\n            case the <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> option value is set to <c>true</c>, \r\n            if it is <c>false</c> then <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when we have a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.LoggerMatchFilter.m_loggerToMatch\">\r\n            <summary>\r\n            The logger name string to substring match against the event\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.LoggerMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/> equals the beginning of \r\n            the incoming <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> (<see cref=\"M:System.String.StartsWith(System.String)\"/>)\r\n            then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.LoggerMatchFilter.LoggerToMatch\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> that the filter will match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This filter will attempt to match this value against logger name in\r\n            the following way. The match will be done against the beginning of the\r\n            logger name (using <see cref=\"M:System.String.StartsWith(System.String)\"/>). The match is\r\n            case sensitive. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.LoggerMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.MdcFilter\">\r\n            <summary>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a keyed string in the <see cref=\"T:log4net.MDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with layered properties the\r\n            <see cref=\"T:log4net.Filter.PropertyFilter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.PropertyFilter\">\r\n            <summary>\r\n            Simple filter to match a string an event property\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the value for a\r\n            specific event property\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.StringMatchFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the rendered message\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the rendered message\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_acceptOnMatch\">\r\n            <summary>\r\n            Flag to indicate the behavior when we have a match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringToMatch\">\r\n            <summary>\r\n            The string to substring match against the message\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_stringRegexToMatch\">\r\n            <summary>\r\n            A string regex to match\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.StringMatchFilter.m_regexToMatch\">\r\n            <summary>\r\n            A regex object to match (generated from m_stringRegexToMatch)\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\">\r\n            <summary>\r\n            Initialize and precompile the Regex if required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Filter.StringMatchFilter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.StringMatchFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The rendered message is matched against the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the message then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\">\r\n            <summary>\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> when matching <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> property is a flag that determines\r\n            the behavior when a matching <see cref=\"T:log4net.Core.Level\"/> is found. If the\r\n            flag is set to true then the filter will <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the \r\n            logging event, otherwise it will <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/> the event.\r\n            </para>\r\n            <para>\r\n            The default is <c>true</c> i.e. to <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.StringToMatch\">\r\n            <summary>\r\n            Sets the static string to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The string that will be substring matched against\r\n            the rendered message. If the message contains this\r\n            string then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\">\r\n            <summary>\r\n            Sets the regular expression to match\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The regular expression pattern that will be matched against\r\n            the rendered message. If the message matches this\r\n            pattern then the filter will match. If a match is found then\r\n            the result depends on the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/>.\r\n            </para>\r\n            <para>\r\n            One of <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> or <see cref=\"P:log4net.Filter.StringMatchFilter.RegexToMatch\"/>\r\n            must be specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Filter.PropertyFilter.m_key\">\r\n            <summary>\r\n            The key to use to lookup the string from the event properties\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.PropertyFilter.Decide(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Check if this filter should allow the event to be logged\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>see remarks</returns>\r\n            <remarks>\r\n            <para>\r\n            The event property for the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> is matched against \r\n            the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/>.\r\n            If the <see cref=\"P:log4net.Filter.StringMatchFilter.StringToMatch\"/> occurs as a substring within\r\n            the property value then a match will have occurred. If no match occurs\r\n            this function will return <see cref=\"F:log4net.Filter.FilterDecision.Neutral\"/>\r\n            allowing other filters to check the event. If a match occurs then\r\n            the value of <see cref=\"P:log4net.Filter.StringMatchFilter.AcceptOnMatch\"/> is checked. If it is\r\n            true then <see cref=\"F:log4net.Filter.FilterDecision.Accept\"/> is returned otherwise\r\n            <see cref=\"F:log4net.Filter.FilterDecision.Deny\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Filter.PropertyFilter.Key\">\r\n            <summary>\r\n            The key to lookup in the event properties and then match against.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The key name to use to lookup in the properties map of the\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>. The match will be performed against \r\n            the value of this property if it exists.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Filter.NdcFilter\">\r\n            <summary>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Simple filter to match a string in the <see cref=\"T:log4net.NDC\"/>\r\n            </para>\r\n            <para>\r\n            As the MDC has been replaced with named stacks stored in the\r\n            properties collections the <see cref=\"T:log4net.Filter.PropertyFilter\"/> should \r\n            be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Filter.NdcFilter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Sets the <see cref=\"P:log4net.Filter.PropertyFilter.Key\"/> to <c>\"NDC\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AppDomainPatternConverter\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PatternLayoutConverter\">\r\n            <summary>\r\n            Abstract class that provides the formatting functionality that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            Conversion specifiers in a conversion patterns are parsed to\r\n            individual PatternConverters. Each of which is responsible for\r\n            converting a logging event in a converter specific manner.\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternConverter\">\r\n            <summary>\r\n            Abstract class that provides the formatting functionality that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Conversion specifiers in a conversion patterns are parsed to\r\n            individual PatternConverters. Each of which is responsible for\r\n            converting a logging event in a converter specific manner.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferSize\">\r\n            <summary>\r\n            Initial buffer size\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.c_renderBufferMaxCapacity\">\r\n            <summary>\r\n            Maximum buffer size before it is recycled\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.#ctor\">\r\n            <summary>\r\n            Protected constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternConverter\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Evaluate this pattern converter and write the output to a writer.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the appropriate way.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Set the next pattern converter in the chains\r\n            </summary>\r\n            <param name=\"patternConverter\">the pattern converter that should follow this converter in the chain</param>\r\n            <returns>the next converter</returns>\r\n            <remarks>\r\n            <para>\r\n            The PatternConverter can merge with its neighbor during this method (or a sub class).\r\n            Therefore the return value may or may not be the value of the argument passed in.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the pattern converter to the writer with appropriate formatting\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n            <remarks>\r\n            <para>\r\n            This method calls <see cref=\"M:log4net.Util.PatternConverter.Convert(System.IO.TextWriter,System.Object)\"/> to allow the subclass to perform\r\n            appropriate conversion of the pattern converter. If formatting options have\r\n            been specified via the <see cref=\"P:log4net.Util.PatternConverter.FormattingInfo\"/> then this method will\r\n            apply those formattings before writing the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.SpacePad(System.IO.TextWriter,System.Int32)\">\r\n            <summary>\r\n            Fast space padding method.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> to which the spaces will be appended.</param>\r\n            <param name=\"length\">The number of spaces to be padded.</param>\r\n            <remarks>\r\n            <para>\r\n            Fast space padding method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternConverter.m_option\">\r\n            <summary>\r\n            The option string to the converter\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionary)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionary\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteDictionary(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Collections.IDictionaryEnumerator)\">\r\n            <summary>\r\n            Write an dictionary to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> to a writer in the form:\r\n            </para>\r\n            <code>\r\n            {key1=value1, key2=value2, key3=value3}\r\n            </code>\r\n            <para>\r\n            If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the key and value to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternConverter.WriteObject(System.IO.TextWriter,log4net.Repository.ILoggerRepository,System.Object)\">\r\n            <summary>\r\n            Write an object to a <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"repository\">a <see cref=\"T:log4net.Repository.ILoggerRepository\"/> to use for object conversion</param>\r\n            <param name=\"value\">the value to write to the writer</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the Object to a writer. If the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> specified\r\n            is not null then it is used to render the object to text, otherwise\r\n            the object's ToString method is called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Next\">\r\n            <summary>\r\n            Get the next pattern converter in the chain\r\n            </summary>\r\n            <value>\r\n            the next pattern converter in the chain\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the next pattern converter in the chain\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.FormattingInfo\">\r\n            <summary>\r\n            Gets or sets the formatting info for this converter\r\n            </summary>\r\n            <value>\r\n            The formatting info for this converter\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the formatting info for this converter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Option\">\r\n            <summary>\r\n            Gets or sets the option value for this converter\r\n            </summary>\r\n            <summary>\r\n            The option for this converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the option value for this converter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternConverter.Properties\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.Pattern.PatternLayoutConverter\"/> class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PatternLayoutConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">The state object on which the pattern converter should be executed.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.PatternLayoutConverter.m_ignoresException\">\r\n            <summary>\r\n            Flag indicating if this converter handles exceptions\r\n            </summary>\r\n            <remarks>\r\n            <c>false</c> if this converter handles exceptions\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.Pattern.PatternLayoutConverter.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this converter handles the logging event exception\r\n            </summary>\r\n            <value><c>false</c> if this converter handles the logging event exception</value>\r\n            <remarks>\r\n            <para>\r\n            If this converter handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then this property should be set to\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the property should be set to <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this converter does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AppDomainPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event appdomain name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.Domain\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetCachePatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetPatternLayoutConverter\">\r\n            <summary>\r\n            Abstract class that provides access to the current HttpContext (<see cref=\"P:System.Web.HttpContext.Current\"/>) that \r\n            derived classes need.\r\n            </summary>\r\n            <remarks>\r\n            This class handles the case when HttpContext.Current is null by writing\r\n            <see cref=\"P:log4net.Util.SystemInfo.NotAvailableText\"/> to the writer.\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetPatternLayoutConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Derived pattern converters must override this method in order to\r\n            convert conversion specifiers in the correct way.\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetCachePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Cache will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetContextPatternConverter\">\r\n            <summary>\r\n            Converter for items in the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"T:System.Web.HttpContext\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetContextPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net HttpContext item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetRequestPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetRequestPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.AspNetSessionPatternConverter\">\r\n            <summary>\r\n            Converter for items in the ASP.Net Cache.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs an item from the <see cref=\"P:System.Web.HttpRuntime.Cache\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.AspNetSessionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent,System.Web.HttpContext)\">\r\n            <summary>\r\n            Write the ASP.Net Cache item to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">The <see cref=\"T:log4net.Core.LoggingEvent\"/> on which the pattern converter should be executed.</param>\r\n            <param name=\"httpContext\">The <see cref=\"T:System.Web.HttpContext\"/> under which the ASP.Net request is running.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property. If no property has been set, all key value pairs from the Session will\r\n            be written to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.DatePatternConverter\">\r\n            <summary>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Render the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,yyyy\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter pattern based on the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.DatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.DatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the DatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ExceptionPatternConverter\">\r\n            <summary>\r\n            Write the exception text to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If an exception object is stored in the logging event\r\n            it will be rendered into the pattern output with a\r\n            trailing newline.\r\n            </para>\r\n            <para>\r\n            If there is no exception then nothing will be output\r\n            and no trailing newline will be appended.\r\n            It is typical to put a newline before the exception\r\n            and to have the exception as the last data in the pattern.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ExceptionPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the exception text to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            If an exception object is stored in the logging event\r\n            it will be rendered into the pattern output with a\r\n            trailing newline.\r\n            </para>\r\n            <para>\r\n            If there is no exception or the exception property specified\r\n            by the Option value does not exist then nothing will be output\r\n            and no trailing newline will be appended.\r\n            It is typical to put a newline before the exception\r\n            and to have the exception as the last data in the pattern.\r\n            </para>\r\n            <para>\r\n            Recognized values for the Option parameter are:\r\n            </para>\r\n            <list type=\"bullet\">\r\n            \t<item>\r\n            \t\t<description>Message</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>Source</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>StackTrace</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>TargetSite</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<description>HelpLink</description>\r\n            \t</item>\t\t\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FileLocationPatternConverter\">\r\n            <summary>\r\n            Writes the caller location file name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FileLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location file name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.FileName\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.FullLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.FullLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location info to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.FullInfo\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.IdentityPatternConverter\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Daniel Cazzulino</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.IdentityPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event identity to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <paramref name=\"loggingEvent\"/> \r\n            <see cref=\"P:log4net.Core.LoggingEvent.Identity\"/> to\r\n            the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LevelPatternConverter\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the display name of the event <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LevelPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event level to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.Level.DisplayName\"/> of the <paramref name=\"loggingEvent\"/> <see cref=\"P:log4net.Core.LoggingEvent.Level\"/>\r\n            to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LineLocationPatternConverter\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the event to the output writer.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LineLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the caller location line number to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the value of the <see cref=\"P:log4net.Core.LocationInfo.LineNumber\"/> for\r\n            the <paramref name=\"loggingEvent\"/> to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.LoggerPatternConverter\">\r\n            <summary>\r\n            Converter for logger name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NamedPatternConverter\">\r\n            <summary>\r\n            Converter to output and truncate <c>'.'</c> separated strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This abstract class supports truncating a <c>'.'</c> separated string\r\n            to show a specified number of elements from the right hand side.\r\n            This is used to truncate class names that are fully qualified.\r\n            </para>\r\n            <para>\r\n            Subclasses should override the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> method to\r\n            return the fully qualified string.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Get the fully qualified string data\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>the fully qualified name</returns>\r\n            <remarks>\r\n            <para>\r\n            Overridden by subclasses to get the fully qualified name before the\r\n            precision is applied to it.\r\n            </para>\r\n            <para>\r\n            Return the fully qualified <c>'.'</c> (dot/period) separated string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NamedPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            Render the <see cref=\"M:log4net.Layout.Pattern.NamedPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\"/> to the precision\r\n            specified by the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.NamedPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the NamedPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.LoggerPatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the logger\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified logger name</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LoggingEvent.LoggerName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MessagePatternConverter\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MessagePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Writes the event message to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Core.LoggingEvent.WriteRenderedMessage(System.IO.TextWriter)\"/> method\r\n            to write out the event message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.MethodLocationPatternConverter\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.MethodLocationPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the method name to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the caller location <see cref=\"P:log4net.Core.LocationInfo.MethodName\"/> to\r\n            the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.NdcPatternConverter\">\r\n            <summary>\r\n            Converter to include event NDC\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the value of the event property named <c>NDC</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.NdcPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the event NDC to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            As the thread context stacks are now stored in named event properties\r\n            this converter simply looks up the value of the <c>NDC</c> property.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Layout.Pattern.PropertyPatternConverter\"/> should be used instead.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.PropertyPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.RelativeTimePatternConverter\">\r\n            <summary>\r\n            Converter to output the relative time of the event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Converter to output the time of the event relative to the start of the program.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the relative time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the relative time of the event in milliseconds.\r\n            That is the number of milliseconds between the event <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/>\r\n            and the <see cref=\"P:log4net.Core.LoggingEvent.StartTime\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.RelativeTimePatternConverter.TimeDifferenceInMillis(System.DateTime,System.DateTime)\">\r\n            <summary>\r\n            Helper method to get the time difference between two DateTime objects\r\n            </summary>\r\n            <param name=\"start\">start time (in the current local time zone)</param>\r\n            <param name=\"end\">end time (in the current local time zone)</param>\r\n            <returns>the time difference in milliseconds</returns>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTraceDetailPatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            </para>\r\n            </remarks>\r\n            <author>Adam Davies</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.StackTracePatternConverter\">\r\n            <summary>\r\n            Write the caller stack frames to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer, using format:\r\n            type3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            </para>\r\n            </remarks>\r\n            <author>Michael Cromwell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.Pattern.StackTracePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the strack frames to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LocationInfo.StackFrames\"/> to the output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.StackTracePatternConverter.GetMethodInformation(System.Reflection.MethodBase)\">\r\n            <summary>\r\n            Returns the Name of the method\r\n            </summary>\r\n            <param name=\"method\"></param>\r\n            <remarks>This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter</remarks>\r\n            <returns>string</returns>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTracePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the StackTracePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.StackTraceDetailPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the StackTraceDetailPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.ThreadPatternConverter\">\r\n            <summary>\r\n            Converter to include event thread name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.ThreadPatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the ThreadName to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the <see cref=\"P:log4net.Core.LoggingEvent.ThreadName\"/> to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.TypeNamePatternConverter\">\r\n            <summary>\r\n            Pattern converter for the class name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Outputs the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the event.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.TypeNamePatternConverter.GetFullyQualifiedName(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the fully qualified name of the class\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <returns>The fully qualified type name for the caller location</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the <see cref=\"P:log4net.Core.LocationInfo.ClassName\"/> of the <paramref name=\"loggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UserNamePatternConverter\">\r\n            <summary>\r\n            Converter to include event user name\r\n            </summary>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UserNamePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convert the pattern to the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Pattern.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the date of a <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            <para>\r\n            Uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> \r\n            in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Pattern.UtcDatePatternConverter.Convert(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Write the TimeStamp to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> passed is in the local time zone, this is converted\r\n            to Universal time before it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Layout.Pattern.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Pattern.UtcDatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the UtcDatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.ExceptionLayout\">\r\n            <summary>\r\n            A Layout that renders only the Exception text from the logging event\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A Layout that renders only the Exception text from the logging event.\r\n            </para>\r\n            <para>\r\n            This Layout should only be used with appenders that utilize multiple\r\n            layouts (e.g. <see cref=\"T:log4net.Appender.AdoNetAppender\"/>).\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.LayoutSkeleton\">\r\n            <summary>\r\n            Extend this abstract class to create your own log layout format.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the base implementation of the <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            interface. Most layout objects should extend this class.\r\n            </para>\r\n            </remarks>\r\n            <remarks>\r\n            <note type=\"inheritinfo\">\r\n            <para>\r\n            Subclasses must implement the <see cref=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/>\r\n            method.\r\n            </para>\r\n            <para>\r\n            Subclasses should set the <see cref=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\"/> in their default\r\n            constructor.\r\n            </para>\r\n            </note>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.ILayout\">\r\n            <summary>\r\n            Interface implemented by layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An <see cref=\"T:log4net.Layout.ILayout\"/> object is used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            as text. The <see cref=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> method is called by an\r\n            appender to transform the <see cref=\"T:log4net.Core.LoggingEvent\"/> into a string.\r\n            </para>\r\n            <para>\r\n            The layout can also supply <see cref=\"P:log4net.Layout.ILayout.Header\"/> and <see cref=\"P:log4net.Layout.ILayout.Footer\"/>\r\n            text that is appender before any events and after all the events respectively.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ILayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called by an appender to format\r\n            the <paramref name=\"loggingEvent\"/> as text and output to a writer.\r\n            </para>\r\n            <para>\r\n            If the caller does not have a <see cref=\"T:System.IO.TextWriter\"/> and prefers the\r\n            event to be formatted as a <see cref=\"T:System.String\"/> then the following\r\n            code can be used to format the event into a <see cref=\"T:System.IO.StringWriter\"/>.\r\n            </para>\r\n            <code lang=\"C#\">\r\n            StringWriter writer = new StringWriter();\r\n            Layout.Format(writer, loggingEvent);\r\n            string formattedEvent = writer.ToString();\r\n            </code>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.ContentType\">\r\n            <summary>\r\n            The content type output by this layout. \r\n            </summary>\r\n            <value>The content type</value>\r\n            <remarks>\r\n            <para>\r\n            The content type output by this layout.\r\n            </para>\r\n            <para>\r\n            This is a MIME type e.g. <c>\"text/plain\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Header\">\r\n            <summary>\r\n            The header for the layout format.\r\n            </summary>\r\n            <value>the layout header</value>\r\n            <remarks>\r\n            <para>\r\n            The Header text will be appended before any logging events\r\n            are formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.Footer\">\r\n            <summary>\r\n            The footer for the layout format.\r\n            </summary>\r\n            <value>the layout footer</value>\r\n            <remarks>\r\n            <para>\r\n            The Footer text will be appended after all the logging events\r\n            have been formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.ILayout.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handle exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_header\">\r\n            <summary>\r\n            The header text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Header\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_footer\">\r\n            <summary>\r\n            The footer text\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See <see cref=\"P:log4net.Layout.LayoutSkeleton.Footer\"/> for more information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.LayoutSkeleton.m_ignoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handles exceptions\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <c>false</c> if this layout handles exceptions\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.#ctor\">\r\n            <summary>\r\n            Empty default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Empty default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.LayoutSkeleton.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            This method must be implemented by the subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <remarks>\r\n            <para>\r\n            This method is called by an appender to format\r\n            the <paramref name=\"loggingEvent\"/> as text.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.LayoutSkeleton.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Convenience method for easily formatting the logging event into a string variable.\r\n            </summary>\r\n            <param name=\"loggingEvent\"></param>\r\n            <remarks>\r\n            Creates a new StringWriter instance to store the formatted logging event.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.ContentType\">\r\n            <summary>\r\n            The content type output by this layout. \r\n            </summary>\r\n            <value>The content type is <c>\"text/plain\"</c></value>\r\n            <remarks>\r\n            <para>\r\n            The content type output by this layout.\r\n            </para>\r\n            <para>\r\n            This base class uses the value <c>\"text/plain\"</c>.\r\n            To change this value a subclass must override this\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Header\">\r\n            <summary>\r\n            The header for the layout format.\r\n            </summary>\r\n            <value>the layout header</value>\r\n            <remarks>\r\n            <para>\r\n            The Header text will be appended before any logging events\r\n            are formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.Footer\">\r\n            <summary>\r\n            The footer for the layout format.\r\n            </summary>\r\n            <value>the layout footer</value>\r\n            <remarks>\r\n            <para>\r\n            The Footer text will be appended after all the logging events\r\n            have been formatted and appended.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.LayoutSkeleton.IgnoresException\">\r\n            <summary>\r\n            Flag indicating if this layout handles exceptions\r\n            </summary>\r\n            <value><c>false</c> if this layout handles exceptions</value>\r\n            <remarks>\r\n            <para>\r\n            If this layout handles the exception object contained within\r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/>, then the layout should return\r\n            <c>false</c>. Otherwise, if the layout ignores the exception\r\n            object, then the layout should return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            Set this value to override a this default setting. The default\r\n            value is <c>true</c>, this layout does not handle the exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Constructs a ExceptionLayout\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.ActivateOptions\">\r\n            <summary>\r\n            Activate component options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> component activation\r\n            framework.\r\n            </para>\r\n            <para>\r\n            This method does nothing as options become effective immediately.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.ExceptionLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the exception text from the logging event\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <remarks>\r\n            <para>\r\n            Write the exception string to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            The exception string is retrieved from <see cref=\"M:log4net.Core.LoggingEvent.GetExceptionString\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.IRawLayout\">\r\n            <summary>\r\n            Interface for raw layout objects\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used to format a <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            to an object.\r\n            </para>\r\n            <para>\r\n            This interface should not be confused with the\r\n            <see cref=\"T:log4net.Layout.ILayout\"/> interface. This interface is used in\r\n            only certain specialized situations where a raw object is\r\n            required rather than a formatted string. The <see cref=\"T:log4net.Layout.ILayout\"/>\r\n            is not generally useful than this interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.IRawLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Implement this method to create your own layout format.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the formatted event</returns>\r\n            <remarks>\r\n            <para>\r\n            Implement this method to create your own layout format.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.Layout2RawLayoutAdapter\">\r\n            <summary>\r\n            Adapts any <see cref=\"T:log4net.Layout.ILayout\"/> to a <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Where an <see cref=\"T:log4net.Layout.IRawLayout\"/> is required this adapter\r\n            allows a <see cref=\"T:log4net.Layout.ILayout\"/> to be specified.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.Layout2RawLayoutAdapter.m_layout\">\r\n            <summary>\r\n            The layout to adapt\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.#ctor(log4net.Layout.ILayout)\">\r\n            <summary>\r\n            Construct a new adapter\r\n            </summary>\r\n            <param name=\"layout\">the layout to adapt</param>\r\n            <remarks>\r\n            <para>\r\n            Create the adapter for the specified <paramref name=\"layout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.Layout2RawLayoutAdapter.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Format the logging event as an object.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the formatted event</returns>\r\n            <remarks>\r\n            <para>\r\n            Format the logging event as an object.\r\n            </para>\r\n            <para>\r\n            Uses the <see cref=\"T:log4net.Layout.ILayout\"/> object supplied to \r\n            the constructor to perform the formatting.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.PatternLayout\">\r\n            <summary>\r\n            A flexible layout configurable with pattern string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The goal of this class is to <see cref=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\"/> a \r\n            <see cref=\"T:log4net.Core.LoggingEvent\"/> as a string. The results\r\n            depend on the <i>conversion pattern</i>.\r\n            </para>\r\n            <para>\r\n            The conversion pattern is closely related to the conversion\r\n            pattern of the printf function in C. A conversion pattern is\r\n            composed of literal text and format control expressions called\r\n            <i>conversion specifiers</i>.\r\n            </para>\r\n            <para>\r\n            <i>You are free to insert any literal text within the conversion\r\n            pattern.</i>\r\n            </para>\r\n            <para>\r\n            Each conversion specifier starts with a percent sign (%) and is\r\n            followed by optional <i>format modifiers</i> and a <i>conversion\r\n            pattern name</i>. The conversion pattern name specifies the type of\r\n            data, e.g. logger, level, date, thread name. The format\r\n            modifiers control such things as field width, padding, left and\r\n            right justification. The following is a simple example.\r\n            </para>\r\n            <para>\r\n            Let the conversion pattern be <b>\"%-5level [%thread]: %message%newline\"</b> and assume\r\n            that the log4net environment was set to use a PatternLayout. Then the\r\n            statements\r\n            </para>\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(typeof(TestApp));\r\n            log.Debug(\"Message 1\");\r\n            log.Warn(\"Message 2\");   \r\n            </code>\r\n            <para>would yield the output</para>\r\n            <code>\r\n            DEBUG [main]: Message 1\r\n            WARN  [main]: Message 2  \r\n            </code>\r\n            <para>\r\n            Note that there is no explicit separator between text and\r\n            conversion specifiers. The pattern parser knows when it has reached\r\n            the end of a conversion specifier when it reads a conversion\r\n            character. In the example above the conversion specifier\r\n            <b>%-5level</b> means the level of the logging event should be left\r\n            justified to a width of five characters.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>a</term>\r\n                    <description>Equivalent to <b>appdomain</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n            \t\t\tUsed to output the friendly name of the AppDomain where the \r\n            \t\t\tlogging event was generated. \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-cache</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all cache items in the case of <b>%aspnet-cache</b> or just one named item if used as <b>%aspnet-cache{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-context</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all context items in the case of <b>%aspnet-context</b> or just one named item if used as <b>%aspnet-context{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-request</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all request parameters in the case of <b>%aspnet-request</b> or just one named param if used as <b>%aspnet-request{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>aspnet-session</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output all session items in the case of <b>%aspnet-session</b> or just one named item if used as <b>%aspnet-session{key}</b>\r\n                        </para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework or Client Profile assemblies.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>c</term>\r\n                    <description>Equivalent to <b>logger</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>C</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>class</term>\r\n                    <description>Equivalent to <b>type</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>d</term>\r\n                    <description>Equivalent to <b>date</b></description>\r\n                </item>\r\n                <item>\r\n            \t\t<term>date</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>exception</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the exception passed in with the log message.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf an exception object is stored in the logging event\r\n            \t\t\tit will be rendered into the pattern output with a\r\n            \t\t\ttrailing newline.\r\n            \t\t\tIf there is no exception then nothing will be output\r\n            \t\t\tand no trailing newline will be appended.\r\n            \t\t\tIt is typical to put a newline before the exception\r\n            \t\t\tand to have the exception as the last data in the pattern.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>F</term>\r\n                    <description>Equivalent to <b>file</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>file</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the file name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>identity</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>l</term>\r\n                    <description>Equivalent to <b>location</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>L</term>\r\n                    <description>Equivalent to <b>line</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>location</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output location information of the caller which generated\r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information depends on the CLI implementation but\r\n            \t\t\tusually consists of the fully qualified name of the calling\r\n            \t\t\tmethod followed by the callers source the file name and line\r\n            \t\t\tnumber between parentheses.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe location information can be very useful. However, its\r\n            \t\t\tgeneration is <b>extremely</b> slow. Its use should be avoided\r\n            \t\t\tunless execution speed is not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>level</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the level of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>line</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the line number from where the logging request\r\n            \t\t\twas issued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>logger</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the logger of the logging event. The\r\n            \t\t\tlogger conversion specifier can be optionally followed by\r\n            \t\t\t<i>precision specifier</i>, that is a decimal constant in\r\n            \t\t\tbrackets.\r\n                        </para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the logger name will be\r\n            \t\t\tprinted. By default the logger name is printed in full.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the logger name \"a.b.c\" the pattern\r\n            \t\t\t<b>%logger{2}</b> will output \"b.c\".\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>m</term>\r\n                    <description>Equivalent to <b>message</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>M</term>\r\n                    <description>Equivalent to <b>method</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>message</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the application supplied message associated with \r\n            \t\t\tthe logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>mdc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe MDC (old name for the ThreadContext.Properties) is now part of the\r\n            \t\t\tcombined event properties. This pattern is supported for compatibility\r\n            \t\t\tbut is equivalent to <b>property</b>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>method</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the method name where the logging request was\r\n            \t\t\tissued.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller location information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>n</term>\r\n                    <description>Equivalent to <b>newline</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>newline</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ndc</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the NDC (nested diagnostic context) associated\r\n            \t\t\twith the thread that generated the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>p</term>\r\n                    <description>Equivalent to <b>level</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>P</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>properties</term>\r\n                    <description>Equivalent to <b>property</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>property</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the an event specific property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are added to events by loggers or appenders. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the event properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe event has <see cref=\"P:log4net.Core.LoggingEvent.Properties\"/> that can be set. These \r\n            \t\t\t\t\tproperties are specific to this event only.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n            \t\t\t\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>r</term>\r\n                    <description>Equivalent to <b>timestamp</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>stacktrace</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktrace{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n            \t\t\ttype3.MethodCall3 &gt; type2.MethodCall2 &gt; type1.MethodCall1\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>stacktracedetail</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the stack trace of the logging event\r\n            \t\t\tThe stack trace level specifier may be enclosed \r\n            \t\t\tbetween braces. For example, <b>%stacktracedetail{level}</b>.  \r\n            \t\t\tIf no stack trace level specifier is given then 1 is assumed \r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tOutput uses the format:\r\n                        type3.MethodCall3(type param,...) &gt; type2.MethodCall2(type param,...) &gt; type1.MethodCall1(type param,...)\r\n            \t\t\t</para>\r\n                        <para>\r\n                        This pattern is not available for Compact Framework assemblies.\r\n                        </para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>t</term>\r\n                    <description>Equivalent to <b>thread</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>timestamp</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the number of milliseconds elapsed since the start\r\n            \t\t\tof the application until the creation of the logging event.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>thread</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the name of the thread that generated the\r\n            \t\t\tlogging event. Uses the thread number if no name is available.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>type</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the fully qualified type name of the caller\r\n            \t\t\tissuing the logging request. This conversion specifier\r\n            \t\t\tcan be optionally followed by <i>precision specifier</i>, that\r\n            \t\t\tis a decimal constant in brackets.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf a precision specifier is given, then only the corresponding\r\n            \t\t\tnumber of right most components of the class name will be\r\n            \t\t\tprinted. By default the class name is output in fully qualified form.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor example, for the class name \"log4net.Layout.PatternLayout\", the\r\n            \t\t\tpattern <b>%type{1}</b> will output \"PatternLayout\".\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating the caller class information is\r\n            \t\t\tslow. Thus, its use should be avoided unless execution speed is\r\n            \t\t\tnot an issue.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tSee the note below on the availability of caller location information.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n                </item>\r\n                <item>\r\n                    <term>u</term>\r\n                    <description>Equivalent to <b>identity</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>username</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\t<b>WARNING</b> Generating caller WindowsIdentity information is\r\n            \t\t\textremely slow. Its use should be avoided unless execution speed\r\n            \t\t\tis not an issue.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n            \t\t<term>utcdate</term> \r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n                <item>\r\n                    <term>w</term>\r\n                    <description>Equivalent to <b>username</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>x</term>\r\n                    <description>Equivalent to <b>ndc</b></description>\r\n                </item>\r\n                <item>\r\n                    <term>X</term>\r\n                    <description>Equivalent to <b>mdc</b></description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            The single letter patterns are deprecated in favor of the \r\n            longer more descriptive pattern names.\r\n            </para>\r\n            <para>\r\n            By default the relevant information is output as is. However,\r\n            with the aid of format modifiers it is possible to change the\r\n            minimum field width, the maximum field width and justification.\r\n            </para>\r\n            <para>\r\n            The optional format modifier is placed between the percent sign\r\n            and the conversion pattern name.\r\n            </para>\r\n            <para>\r\n            The first optional format modifier is the <i>left justification\r\n            flag</i> which is just the minus (-) character. Then comes the\r\n            optional <i>minimum field width</i> modifier. This is a decimal\r\n            constant that represents the minimum number of characters to\r\n            output. If the data item requires fewer characters, it is padded on\r\n            either the left or the right until the minimum width is\r\n            reached. The default is to pad on the left (right justify) but you\r\n            can specify right padding with the left justification flag. The\r\n            padding character is space. If the data item is larger than the\r\n            minimum field width, the field is expanded to accommodate the\r\n            data. The value is never truncated.\r\n            </para>\r\n            <para>\r\n            This behavior can be changed using the <i>maximum field\r\n            width</i> modifier which is designated by a period followed by a\r\n            decimal constant. If the data item is longer than the maximum\r\n            field, then the extra characters are removed from the\r\n            <i>beginning</i> of the data item and not from the end. For\r\n            example, it the maximum field width is eight and the data item is\r\n            ten characters long, then the first two characters of the data item\r\n            are dropped. This behavior deviates from the printf function in C\r\n            where truncation is done from the end.\r\n            </para>\r\n            <para>\r\n            Below are various format modifier examples for the logger\r\n            conversion specifier.\r\n            </para>\r\n            <div class=\"tablediv\">\r\n            \t<table class=\"dtTABLE\" cellspacing=\"0\">\r\n            \t\t<tr>\r\n            \t\t\t<th>Format modifier</th>\r\n            \t\t\t<th>left justify</th>\r\n            \t\t\t<th>minimum width</th>\r\n            \t\t\t<th>maximum width</th>\r\n            \t\t\t<th>comment</th>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%20logger</td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is less than 20\r\n            \t\t\t\tcharacters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger \r\n            \t\t\t\tname is less than 20 characters long.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%.30logger</td>\r\n            \t\t\t<td align=\"center\">NA</td>\r\n            \t\t\t<td align=\"center\">none</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tTruncate from the beginning if the logger \r\n            \t\t\t\tname is longer than 30 characters.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\"><nobr>%20.30logger</nobr></td>\r\n            \t\t\t<td align=\"center\">false</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tLeft pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t\t<tr>\r\n            \t\t\t<td align=\"center\">%-20.30logger</td>\r\n            \t\t\t<td align=\"center\">true</td>\r\n            \t\t\t<td align=\"center\">20</td>\r\n            \t\t\t<td align=\"center\">30</td>\r\n            \t\t\t<td>\r\n            \t\t\t\t<para>\r\n            \t\t\t\tRight pad with spaces if the logger name is shorter than 20\r\n            \t\t\t\tcharacters. However, if logger name is longer than 30 characters,\r\n            \t\t\t\tthen truncate from the beginning.\r\n            \t\t\t\t</para>\r\n            \t\t\t</td>\r\n            \t\t</tr>\r\n            \t</table>\r\n            </div>\r\n            <para>\r\n            <b>Note about caller location information.</b><br/>\r\n            The following patterns <c>%type %file %line %method %location %class %C %F %L %l %M</c> \r\n            all generate caller location information.\r\n            Location information uses the <c>System.Diagnostics.StackTrace</c> class to generate\r\n            a call stack. The caller's information is then extracted from this stack.\r\n            </para>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class is not supported on the \r\n            .NET Compact Framework 1.0 therefore caller location information is not\r\n            available on that framework.\r\n            </para>\r\n            </note>\r\n            <note type=\"caution\">\r\n            <para>\r\n            The <c>System.Diagnostics.StackTrace</c> class has this to say about Release builds:\r\n            </para>\r\n            <para>\r\n            \"StackTrace information will be most informative with Debug build configurations. \r\n            By default, Debug builds include debug symbols, while Release builds do not. The \r\n            debug symbols contain most of the file, method name, line number, and column \r\n            information used in constructing StackFrame and StackTrace objects. StackTrace \r\n            might not report as many method calls as expected, due to code transformations \r\n            that occur during optimization.\"\r\n            </para>\r\n            <para>\r\n            This means that in a Release build the caller information may be incomplete or may \r\n            not exist at all! Therefore caller location information cannot be relied upon in a Release build.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            instance using the <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            This is a more detailed pattern.\r\n            <code><b>%timestamp [%thread] %level %logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <example>\r\n            A similar pattern except that the relative time is\r\n            right padded if less than 6 digits, thread name is right padded if\r\n            less than 15 characters and truncated if longer and the logger\r\n            name is left padded if shorter than 30 characters and truncated if\r\n            longer.\r\n            <code><b>%-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline</b></code>\r\n            </example>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Douglas de la Torre</author>\r\n            <author>Daniel Cazzulino</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DefaultConversionPattern\">\r\n            <summary>\r\n            Default pattern string for log output. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default pattern string for log output. \r\n            Currently set to the string <b>\"%message%newline\"</b> \r\n            which just prints the application supplied message. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.DetailConversionPattern\">\r\n            <summary>\r\n            A detailed conversion pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A conversion pattern which includes Time, Thread, Logger, and Nested Context.\r\n            Current value is <b>%timestamp [%thread] %level %logger %ndc - %message%newline</b>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.s_globalRulesRegistry\">\r\n            <summary>\r\n            Internal map of converter identifiers to converter types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This static map is overridden by the m_converterRegistry instance map\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_pattern\">\r\n            <summary>\r\n            the pattern\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_head\">\r\n            <summary>\r\n            the head of the pattern converter chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.PatternLayout.m_instanceRulesRegistry\">\r\n            <summary>\r\n            patterns defined on this PatternLayout only\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#cctor\">\r\n            <summary>\r\n            Initialize the global registry\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Defines the builtin global rules.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor\">\r\n            <summary>\r\n            Constructs a PatternLayout using the DefaultConversionPattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default pattern just produces the application supplied message.\r\n            </para>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            As per the <see cref=\"T:log4net.Core.IOptionHandler\"/> contract the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>\r\n            method must be called after the properties on this object have been\r\n            configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternLayout using the supplied conversion pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to use</param>\r\n            <remarks>\r\n            <para>\r\n            Note to Inheritors: This constructor calls the virtual method\r\n            <see cref=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\"/>. If you override this method be\r\n            aware that it will be called before your is called constructor.\r\n            </para>\r\n            <para>\r\n            When using this constructor the <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method \r\n            need not be called. This may not be the case when using a subclass.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the pattern parser instance\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/> that will format the event</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the conversion string. Sets the\r\n            global and instance rules on the <see cref=\"T:log4net.Util.PatternParser\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string as specified by the conversion pattern.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Parse the <see cref=\"T:log4net.Core.LoggingEvent\"/> using the patter format\r\n            specified in the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.PatternLayout.AddConverter(System.String,System.Type)\">\r\n            <summary>\r\n            Add a converter to this PatternLayout\r\n            </summary>\r\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\r\n            <param name=\"type\">the type of the converter</param>\r\n            <remarks>\r\n            <para>\r\n            Add a named pattern converter to this instance. This\r\n            converter will be used in the formatting of the event.\r\n            This method must be called before <see cref=\"M:log4net.Layout.PatternLayout.ActivateOptions\"/>.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"type\"/> specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.PatternLayout.ConversionPattern\">\r\n            <summary>\r\n            The pattern formatting string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <b>ConversionPattern</b> option. This is the string which\r\n            controls formatting and consists of a mix of literal content and\r\n            conversion specifiers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawLayoutConverter\">\r\n            <summary>\r\n            Type converter for the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to convert objects to the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface.\r\n            Supports converting from the <see cref=\"T:log4net.Layout.ILayout\"/> interface to\r\n            the <see cref=\"T:log4net.Layout.IRawLayout\"/> interface using the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertFrom\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from arbitrary types\r\n            to a single target type. See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the <paramref name=\"sourceType\"/> can be converted to the\r\n            type supported by this converter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertFrom.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the source object to the type supported by this object\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the <paramref name=\"source\"/> to the type supported\r\n            by this converter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the sourceType be converted to an <see cref=\"T:log4net.Layout.IRawLayout\"/>\r\n            </summary>\r\n            <param name=\"sourceType\">the source to be to be converted</param>\r\n            <returns><c>true</c> if the source type can be converted to <see cref=\"T:log4net.Layout.IRawLayout\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the <paramref name=\"sourceType\"/> can be converted to a\r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/>. Only <see cref=\"T:log4net.Layout.ILayout\"/> is supported\r\n            as the <paramref name=\"sourceType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the value to a <see cref=\"T:log4net.Layout.IRawLayout\"/> object\r\n            </summary>\r\n            <param name=\"source\">the value to convert</param>\r\n            <returns>the <see cref=\"T:log4net.Layout.IRawLayout\"/> object</returns>\r\n            <remarks>\r\n            <para>\r\n            Convert the <paramref name=\"source\"/> object to a \r\n            <see cref=\"T:log4net.Layout.IRawLayout\"/> object. If the <paramref name=\"source\"/> object\r\n            is a <see cref=\"T:log4net.Layout.ILayout\"/> then the <see cref=\"T:log4net.Layout.Layout2RawLayoutAdapter\"/>\r\n            is used to adapt between the two interfaces, otherwise an\r\n            exception is thrown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawPropertyLayout\">\r\n            <summary>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the value of a property from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.#ctor\">\r\n            <summary>\r\n            Constructs a RawPropertyLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawPropertyLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Lookup the property for <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns property value</returns>\r\n            <remarks>\r\n            <para>\r\n            Looks up and returns the object value of the property\r\n            named <see cref=\"P:log4net.Layout.RawPropertyLayout.Key\"/>. If there is no property defined\r\n            with than name then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.RawPropertyLayout.Key\">\r\n            <summary>\r\n            The name of the value to lookup in the LoggingEvent Properties collection.\r\n            </summary>\r\n            <value>\r\n            Value to lookup in the LoggingEvent Properties collection\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            String name of the property to lookup in the <see cref=\"T:log4net.Core.LoggingEvent\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.#ctor\">\r\n            <summary>\r\n            Constructs a RawTimeStampLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in local time. To format the time stamp\r\n            in universal time use <see cref=\"T:log4net.Layout.RawUtcTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.RawUtcTimeStampLayout\">\r\n            <summary>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Extract the date from the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.#ctor\">\r\n            <summary>\r\n            Constructs a RawUtcTimeStampLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.RawUtcTimeStampLayout.Format(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to format</param>\r\n            <returns>returns the time stamp</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"P:log4net.Core.LoggingEvent.TimeStamp\"/> as a <see cref=\"T:System.DateTime\"/>.\r\n            </para>\r\n            <para>\r\n            The time stamp is in universal time. To format the time stamp\r\n            in local time use <see cref=\"T:log4net.Layout.RawTimeStampLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.SimpleLayout\">\r\n            <summary>\r\n            A very simple layout\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            SimpleLayout consists of the level of the log statement,\r\n            followed by \" - \" and then the log message itself. For example,\r\n            <code>\r\n            DEBUG - Hello world\r\n            </code>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.#ctor\">\r\n            <summary>\r\n            Constructs a SimpleLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.SimpleLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.SimpleLayout.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a simple formatted output.\r\n            </summary>\r\n            <param name=\"loggingEvent\">the event being logged</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Formats the event as the level of the even,\r\n            followed by \" - \" and then the log message itself. The\r\n            output is terminated by a newline.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayout\">\r\n             <summary>\r\n             Layout that formats the log events as XML elements.\r\n             </summary>\r\n             <remarks>\r\n             <para>\r\n             The output of the <see cref=\"T:log4net.Layout.XmlLayout\"/> consists of a series of \r\n             log4net:event elements. It does not output a complete well-formed XML \r\n             file. The output is designed to be included as an <em>external entity</em>\r\n             in a separate file to form a correct XML file.\r\n             </para>\r\n             <para>\r\n             For example, if <c>abc</c> is the name of the file where\r\n             the <see cref=\"T:log4net.Layout.XmlLayout\"/> output goes, then a well-formed XML file would \r\n             be:\r\n             </para>\r\n             <code lang=\"XML\">\r\n             &lt;?xml version=\"1.0\" ?&gt;\r\n             \r\n             &lt;!DOCTYPE log4net:events SYSTEM \"log4net-events.dtd\" [&lt;!ENTITY data SYSTEM \"abc\"&gt;]&gt;\r\n            \r\n             &lt;log4net:events version=\"1.2\" xmlns:log4net=\"http://logging.apache.org/log4net/schemas/log4net-events-1.2&gt;\r\n                 &amp;data;\r\n             &lt;/log4net:events&gt;\r\n             </code>\r\n             <para>\r\n             This approach enforces the independence of the <see cref=\"T:log4net.Layout.XmlLayout\"/> \r\n             and the appender where it is embedded.\r\n             </para>\r\n             <para>\r\n             The <c>version</c> attribute helps components to correctly\r\n             interpret output generated by <see cref=\"T:log4net.Layout.XmlLayout\"/>. The value of \r\n             this attribute should be \"1.2\" for release 1.2 and later.\r\n             </para>\r\n             <para>\r\n             Alternatively the <c>Header</c> and <c>Footer</c> properties can be\r\n             configured to output the correct XML header, open tag and close tag.\r\n             When setting the <c>Header</c> and <c>Footer</c> properties it is essential\r\n             that the underlying data store not be appendable otherwise the data\r\n             will become invalid XML.\r\n             </para>\r\n             </remarks>\r\n             <author>Nicko Cadell</author>\r\n             <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutBase\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is an abstract class that must be subclassed by an implementation \r\n            to conform to a specific schema.\r\n            </para>\r\n            <para>\r\n            Deriving classes must implement the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor\">\r\n            <summary>\r\n            Protected constructor to support subclasses\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Layout.XmlLayoutBase\"/> class\r\n            with no location info.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Protected constructor to support subclasses\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"locationInfo\" /> parameter determines whether \r\n            location information will be output by the layout. If \r\n            <paramref name=\"locationInfo\" /> is set to <c>true</c>, then the \r\n            file name and line number of the statement at the origin of the log \r\n            statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an SMTPAppender\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.Format(System.IO.TextWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Produces a formatted string.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Format the <see cref=\"T:log4net.Core.LoggingEvent\"/> and write it to the <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            <para>\r\n            This method creates an <see cref=\"T:System.Xml.XmlTextWriter\"/> that writes to the\r\n            <paramref name=\"writer\"/>. The <see cref=\"T:System.Xml.XmlTextWriter\"/> is passed \r\n            to the <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method. Subclasses should override the\r\n            <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method rather than this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Subclasses should override this method to format\r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> as XML.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_locationInfo\">\r\n            <summary>\r\n            Flag to indicate if location information should be included in\r\n            the XML events.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutBase.m_invalidCharReplacement\">\r\n            <summary>\r\n            The string to replace invalid chars with\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\">\r\n            <summary>\r\n            Gets a value indicating whether to include location information in \r\n            the XML events.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if location information should be included in the XML \r\n            events; otherwise, <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If <see cref=\"P:log4net.Layout.XmlLayoutBase.LocationInfo\"/> is set to <c>true</c>, then the file \r\n            name and line number of the statement at the origin of the log \r\n            statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an <c>SMTPAppender</c>\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\">\r\n            <summary>\r\n            The string to replace characters that can not be expressed in XML with.\r\n            <remarks>\r\n            <para>\r\n            Not all characters may be expressed in XML. This property contains the\r\n            string to replace those that can not with. This defaults to a ?. Set it\r\n            to the empty string to simply remove offending characters. For more\r\n            details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets\r\n            Character replacement will occur in  the log message, the property names \r\n            and the property values.\r\n            </para>\r\n            </remarks>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutBase.ContentType\">\r\n            <summary>\r\n            Gets the content type output by this layout. \r\n            </summary>\r\n            <value>\r\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As this is the XML layout, the value is always <c>\"text/xml\"</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor\">\r\n            <summary>\r\n            Constructs an XmlLayout\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Constructs an XmlLayout.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <b>LocationInfo</b> option takes a boolean value. By\r\n            default, it is set to false which means there will be no location\r\n            information output by this layout. If the the option is set to\r\n            true, then the file name and line number of the statement\r\n            at the origin of the log statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an SmtpAppender\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.ActivateOptions\">\r\n            <summary>\r\n            Initialize layout options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Layout.XmlLayout.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            Builds a cache of the element names\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayout.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Does the actual writing of the XML.\r\n            </summary>\r\n            <param name=\"writer\">The writer to use to output the event to.</param>\r\n            <param name=\"loggingEvent\">The event to write.</param>\r\n            <remarks>\r\n            <para>\r\n            Override the base class <see cref=\"M:log4net.Layout.XmlLayoutBase.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\"/> method\r\n            to write the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the <see cref=\"T:System.Xml.XmlWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayout.m_prefix\">\r\n            <summary>\r\n            The prefix to use for all generated element names\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Prefix\">\r\n            <summary>\r\n            The prefix to use for all element names\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default prefix is <b>log4net</b>. Set this property\r\n            to change the prefix. If the prefix is set to an empty string\r\n            then no prefix will be written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeMessage\">\r\n            <summary>\r\n            Set whether or not to base64 encode the message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the log message will be written as text to the xml\r\n            output. This can cause problems when the message contains binary\r\n            data. By setting this to true the contents of the message will be\r\n            base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the log message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayout.Base64EncodeProperties\">\r\n            <summary>\r\n            Set whether or not to base64 encode the property values.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            By default the properties will be written as text to the xml\r\n            output. This can cause problems when one or more properties contain\r\n            binary data. By setting this to true the values of the properties\r\n            will be base64 encoded. If this is set then invalid character replacement\r\n            (see <see cref=\"P:log4net.Layout.XmlLayoutBase.InvalidCharReplacement\"/>) will not be performed\r\n            on the property values.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Layout.XmlLayoutSchemaLog4j\">\r\n            <summary>\r\n            Layout that formats the log events as XML elements compatible with the log4j schema\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Formats the log events according to the http://logging.apache.org/log4j schema.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Layout.XmlLayoutSchemaLog4j.s_date1970\">\r\n            <summary>\r\n            The 1st of January 1970 in UTC\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor\">\r\n            <summary>\r\n            Constructs an XMLLayoutSchemaLog4j\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.#ctor(System.Boolean)\">\r\n            <summary>\r\n            Constructs an XMLLayoutSchemaLog4j.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <b>LocationInfo</b> option takes a boolean value. By\r\n            default, it is set to false which means there will be no location\r\n            information output by this layout. If the the option is set to\r\n            true, then the file name and line number of the statement\r\n            at the origin of the log statement will be output. \r\n            </para>\r\n            <para>\r\n            If you are embedding this layout within an SMTPAppender\r\n            then make sure to set the <b>LocationInfo</b> option of that \r\n            appender as well.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Layout.XmlLayoutSchemaLog4j.FormatXml(System.Xml.XmlWriter,log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Actually do the writing of the xml\r\n            </summary>\r\n            <param name=\"writer\">the writer to use</param>\r\n            <param name=\"loggingEvent\">the event to write</param>\r\n            <remarks>\r\n            <para>\r\n            Generate XML that is compatible with the log4j schema.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Layout.XmlLayoutSchemaLog4j.Version\">\r\n            <summary>\r\n            The version of the log4j schema to use.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Only version 1.2 of the log4j schema is supported.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.DefaultRenderer\">\r\n            <summary>\r\n            The default object Renderer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The default renderer supports rendering objects and collections to strings.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\"/> method for details of the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.IObjectRenderer\">\r\n            <summary>\r\n            Implement this interface in order to render objects as strings\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Certain types require special case conversion to\r\n            string form. This conversion is done by an object renderer.\r\n            Object renderers implement the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>\r\n            interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.IObjectRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a \r\n            string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderObject(log4net.ObjectRenderer.RendererMap,System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the object <paramref name=\"obj\"/> to a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"obj\">The object to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the object <paramref name=\"obj\"/> to a string.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"rendererMap\"/> parameter is\r\n            provided to lookup and render other objects. This is\r\n            very useful where <paramref name=\"obj\"/> contains\r\n            nested objects of unknown type. The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/>\r\n            method can be used to render these objects.\r\n            </para>\r\n            <para>\r\n            The default renderer supports rendering objects to strings as follows:\r\n            </para>\r\n            <list type=\"table\">\r\n            \t<listheader>\r\n            \t\t<term>Value</term>\r\n            \t\t<description>Rendered String</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term><c>null</c></term>\r\n            \t\t<description>\r\n            \t\t<para>\"(null)\"</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Array\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tFor a one dimensional array this is the\r\n            \t\tarray type name, an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace. \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>int[] {1, 2, 3}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tIf the array is not one dimensional the \r\n            \t\t<c>Array.ToString()</c> is returned.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.IEnumerable\"/>, <see cref=\"T:System.Collections.ICollection\"/> &amp; <see cref=\"T:System.Collections.IEnumerator\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as an open brace, followed by a comma\r\n            \t\tseparated list of the elements (using the appropriate\r\n            \t\trenderer), followed by a close brace.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>{a, b, c}</c>.\r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tAll collection classes that implement <see cref=\"T:System.Collections.ICollection\"/> its subclasses, \r\n            \t\tor generic equivalents all implement the <see cref=\"T:System.Collections.IEnumerable\"/> interface.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term><see cref=\"T:System.Collections.DictionaryEntry\"/></term>\r\n            \t\t<description>\r\n            \t\t<para>\r\n            \t\tRendered as the key, an equals sign ('='), and the value (using the appropriate\r\n            \t\trenderer). \r\n            \t\t</para>\r\n            \t\t<para>\r\n            \t\tFor example: <c>key=value</c>.\r\n            \t\t</para>\r\n            \t\t</description>\r\n            \t</item>\t\t\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\t<para><c>Object.ToString()</c></para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderArray(log4net.ObjectRenderer.RendererMap,System.Array,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the array argument into a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"array\">the array to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            For a one dimensional array this is the\r\n            array type name, an open brace, followed by a comma\r\n            separated list of the elements (using the appropriate\r\n            renderer), followed by a close brace. For example:\r\n            <c>int[] {1, 2, 3}</c>.\r\n            </para>\r\n            <para>\r\n            If the array is not one dimensional the \r\n            <c>Array.ToString()</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderEnumerator(log4net.ObjectRenderer.RendererMap,System.Collections.IEnumerator,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the enumerator argument into a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"enumerator\">the enumerator to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Rendered as an open brace, followed by a comma\r\n            separated list of the elements (using the appropriate\r\n            renderer), followed by a close brace. For example:\r\n            <c>{a, b, c}</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.DefaultRenderer.RenderDictionaryEntry(log4net.ObjectRenderer.RendererMap,System.Collections.DictionaryEntry,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render the DictionaryEntry argument into a string\r\n            </summary>\r\n            <param name=\"rendererMap\">The map used to lookup renderers</param>\r\n            <param name=\"entry\">the DictionaryEntry to render</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Render the key, an equals sign ('='), and the value (using the appropriate\r\n            renderer). For example: <c>key=value</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.ObjectRenderer.RendererMap\">\r\n            <summary>\r\n            Map class objects to an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a mapping between types that require special\r\n            rendering and the <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> that\r\n            is used to render them.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\"/> method is used to render an\r\n            <c>object</c> using the appropriate renderers defined in this map.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <returns>the object rendered as a string</returns>\r\n            <remarks>\r\n            <para>\r\n            This is a convenience method used to render an object to a string.\r\n            The alternative method <see cref=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\"/>\r\n            should be used when streaming output to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.FindAndRender(System.Object,System.IO.TextWriter)\">\r\n            <summary>\r\n            Render <paramref name=\"obj\"/> using the appropriate renderer.\r\n            </summary>\r\n            <param name=\"obj\">the object to render to a string</param>\r\n            <param name=\"writer\">The writer to render to</param>\r\n            <remarks>\r\n            <para>\r\n            Find the appropriate renderer for the type of the\r\n            <paramref name=\"obj\"/> parameter. This is accomplished by calling the\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> method. Once a renderer is found, it is\r\n            applied on the object <paramref name=\"obj\"/> and the result is returned\r\n            as a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Object)\">\r\n            <summary>\r\n            Gets the renderer for the specified object type\r\n            </summary>\r\n            <param name=\"obj\">the object to lookup the renderer for</param>\r\n            <returns>the renderer for <paramref name=\"obj\"/></returns>\r\n            <remarks>\r\n            <param>\r\n            Gets the renderer for the specified object type.\r\n            </param>\r\n            <param>\r\n            Syntactic sugar method that calls <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/> \r\n            with the type of the object parameter.\r\n            </param>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\">\r\n            <summary>\r\n            Gets the renderer for the specified type\r\n            </summary>\r\n            <param name=\"type\">the type to lookup the renderer for</param>\r\n            <returns>the renderer for the specified type</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the renderer for the specified type.\r\n            If no specific renderer has been defined the\r\n            <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.SearchTypeAndInterfaces(System.Type)\">\r\n            <summary>\r\n            Internal function to recursively search interfaces\r\n            </summary>\r\n            <param name=\"type\">the type to lookup the renderer for</param>\r\n            <returns>the renderer for the specified type</returns>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Clear\">\r\n            <summary>\r\n            Clear the map of renderers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the custom renderers defined by using\r\n            <see cref=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\"/>. The <see cref=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\"/>\r\n            cannot be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.ObjectRenderer.RendererMap.Put(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\r\n            Register an <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> for <paramref name=\"typeToRender\"/>. \r\n            </summary>\r\n            <param name=\"typeToRender\">the type that will be rendered by <paramref name=\"renderer\"/></param>\r\n            <param name=\"renderer\">the renderer for <paramref name=\"typeToRender\"/></param>\r\n            <remarks>\r\n            <para>\r\n            Register an object renderer for a specific source type.\r\n            This renderer will be returned from a call to <see cref=\"M:log4net.ObjectRenderer.RendererMap.Get(System.Type)\"/>\r\n            specifying the same <paramref name=\"typeToRender\"/> as an argument.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ObjectRenderer.RendererMap.DefaultRenderer\">\r\n            <summary>\r\n            Get the default renderer instance\r\n            </summary>\r\n            <value>the default renderer</value>\r\n            <remarks>\r\n            <para>\r\n            Get the default renderer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.IPlugin\">\r\n            <summary>\r\n            Interface implemented by logger repository plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Plugins define additional behavior that can be associated\r\n            with a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            The <see cref=\"T:log4net.Plugin.PluginMap\"/> held by the <see cref=\"P:log4net.Repository.ILoggerRepository.PluginMap\"/>\r\n            property is used to store the plugins for a repository.\r\n            </para>\r\n            <para>\r\n            The <c>log4net.Config.PluginAttribute</c> can be used to\r\n            attach plugins to repositories created using configuration\r\n            attributes.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches the plugin to the specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.IPlugin.Shutdown\">\r\n            <summary>\r\n            Is called when the plugin is to shutdown.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called to notify the plugin that \r\n            it should stop operating and should detach from\r\n            the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.IPlugin.Name\">\r\n            <summary>\r\n            Gets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection\">\r\n            <summary>\r\n            A strongly-typed collection of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ReadOnly(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Creates a read-only wrapper for a <c>PluginCollection</c> instance.\r\n            </summary>\r\n            <param name=\"list\">list to create a readonly wrapper arround</param>\r\n            <returns>\r\n            A <c>PluginCollection</c> wrapper that is read-only.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that is empty and has the default initial capacity.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Int32)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that has the specified initial capacity.\r\n            </summary>\r\n            <param name=\"capacity\">\r\n            The number of elements that the new <c>PluginCollection</c> is initially capable of storing.\r\n            </param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"c\">The <c>PluginCollection</c> whose elements are copied to the new collection.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"a\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>PluginCollection</c> class\r\n            that contains elements copied from the specified <see cref=\"T:log4net.Plugin.IPlugin\"/> collection.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements are copied to the new list.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.#ctor(log4net.Plugin.PluginCollection.Tag)\">\r\n            <summary>\r\n            Allow subclasses to avoid our default constructors\r\n            </summary>\r\n            <param name=\"tag\"></param>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.CopyTo(log4net.Plugin.IPlugin[],System.Int32)\">\r\n            <summary>\r\n            Copies the entire <c>PluginCollection</c> to a one-dimensional\r\n            <see cref=\"T:log4net.Plugin.IPlugin\"/> array, starting at the specified index of the target array.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:log4net.Plugin.IPlugin\"/> array to copy to.</param>\r\n            <param name=\"start\">The zero-based index in <paramref name=\"array\"/> at which copying begins.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the end of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The index at which the value has been added.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clear\">\r\n            <summary>\r\n            Removes all elements from the <c>PluginCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Clone\">\r\n            <summary>\r\n            Creates a shallow copy of the <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <returns>A new <see cref=\"T:log4net.Plugin.PluginCollection\"/> with a shallow copy of the collection data.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Contains(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Determines whether a given <see cref=\"T:log4net.Plugin.IPlugin\"/> is in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to check for.</param>\r\n            <returns><c>true</c> if <paramref name=\"item\"/> is found in the <c>PluginCollection</c>; otherwise, <c>false</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IndexOf(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Returns the zero-based index of the first occurrence of a <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            in the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to locate in the <c>PluginCollection</c>.</param>\r\n            <returns>\r\n            The zero-based index of the first occurrence of <paramref name=\"item\"/> \r\n            in the entire <c>PluginCollection</c>, if found; otherwise, -1.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Insert(System.Int32,log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Inserts an element into the <c>PluginCollection</c> at the specified index.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index at which <paramref name=\"item\"/> should be inserted.</param>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to insert.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes the first occurrence of a specific <see cref=\"T:log4net.Plugin.IPlugin\"/> from the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"item\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the <c>PluginCollection</c>.</param>\r\n            <exception cref=\"T:System.ArgumentException\">\r\n            The specified <see cref=\"T:log4net.Plugin.IPlugin\"/> was not found in the <c>PluginCollection</c>.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.RemoveAt(System.Int32)\">\r\n            <summary>\r\n            Removes the element at the specified index of the <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"index\">The zero-based index of the element to remove.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through the <c>PluginCollection</c>.\r\n            </summary>\r\n            <returns>An <see cref=\"T:log4net.Plugin.PluginCollection.Enumerator\"/> for the entire <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Adds the elements of another <c>PluginCollection</c> to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <c>PluginCollection</c> whose elements should be added to the end of the current <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(log4net.Plugin.IPlugin[])\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> array to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"x\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> array whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.AddRange(System.Collections.ICollection)\">\r\n            <summary>\r\n            Adds the elements of a <see cref=\"T:log4net.Plugin.IPlugin\"/> collection to the current <c>PluginCollection</c>.\r\n            </summary>\r\n            <param name=\"col\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> collection whose elements should be added to the end of the <c>PluginCollection</c>.</param>\r\n            <returns>The new <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/> of the <c>PluginCollection</c>.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.TrimToSize\">\r\n            <summary>\r\n            Sets the capacity to the actual number of elements.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.ValidateIndex(System.Int32,System.Boolean)\">\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"i\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"i\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements actually contained in the <c>PluginCollection</c>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating whether access to the collection is synchronized (thread-safe).\r\n            </summary>\r\n            <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the collection.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the collection.\r\n            </value>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Item(System.Int32)\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> at the specified index.\r\n            </value>\r\n            <param name=\"index\">The zero-based index of the element to get or set.</param>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">\r\n            <para><paramref name=\"index\"/> is less than zero.</para>\r\n            <para>-or-</para>\r\n            <para><paramref name=\"index\"/> is equal to or greater than <see cref=\"P:log4net.Plugin.PluginCollection.Count\"/>.</para>\r\n            </exception>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the collection has a fixed size.\r\n            </summary>\r\n            <value><c>true</c> if the collection has a fixed size; otherwise, <c>false</c>. The default is <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the IList is read-only.\r\n            </summary>\r\n            <value><c>true</c> if the collection is read-only; otherwise, <c>false</c>. The default is <c>false</c>.</value>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Capacity\">\r\n            <summary>\r\n            Gets or sets the number of elements the <c>PluginCollection</c> can contain.\r\n            </summary>\r\n            <value>\r\n            The number of elements the <c>PluginCollection</c> can contain.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator\">\r\n            <summary>\r\n            Supports type-safe iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.IPluginCollectionEnumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Tag\">\r\n            <summary>\r\n            Type visible only to our subclasses\r\n            Used to access protected constructor\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginCollection.Tag.Default\">\r\n            <summary>\r\n            A value\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.Enumerator\">\r\n            <summary>\r\n            Supports simple iteration over a <see cref=\"T:log4net.Plugin.PluginCollection\"/>.\r\n            </summary>\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.#ctor(log4net.Plugin.PluginCollection)\">\r\n            <summary>\r\n            Initializes a new instance of the <c>Enumerator</c> class.\r\n            </summary>\r\n            <param name=\"tc\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.MoveNext\">\r\n            <summary>\r\n            Advances the enumerator to the next element in the collection.\r\n            </summary>\r\n            <returns>\r\n            <c>true</c> if the enumerator was successfully advanced to the next element; \r\n            <c>false</c> if the enumerator has passed the end of the collection.\r\n            </returns>\r\n            <exception cref=\"T:System.InvalidOperationException\">\r\n            The collection was modified after the enumerator was created.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginCollection.Enumerator.Reset\">\r\n            <summary>\r\n            Sets the enumerator to its initial position, before the first element in the collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginCollection.Enumerator.Current\">\r\n            <summary>\r\n            Gets the current element in the collection.\r\n            </summary>\r\n            <value>\r\n            The current element in the collection.\r\n            </value>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginCollection.ReadOnlyPluginCollection\">\r\n            <exclude/>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginMap\">\r\n            <summary>\r\n            Map of repository plugins.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class is a name keyed map of the plugins that are\r\n            attached to a repository.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository that the plugins should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of the <see cref=\"T:log4net.Plugin.PluginMap\"/> class with a \r\n            repository that the plugins should be attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Add(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Adds a <see cref=\"T:log4net.Plugin.IPlugin\"/> to the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to add to the map.</param>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> will be attached to the repository when added.\r\n            </para>\r\n            <para>\r\n            If there already exists a plugin with the same name \r\n            attached to the repository then the old plugin will\r\n            be <see cref=\"M:log4net.Plugin.IPlugin.Shutdown\"/> and replaced with\r\n            the new plugin.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginMap.Remove(log4net.Plugin.IPlugin)\">\r\n            <summary>\r\n            Removes a <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map.\r\n            </summary>\r\n            <param name=\"plugin\">The <see cref=\"T:log4net.Plugin.IPlugin\"/> to remove from the map.</param>\r\n            <remarks>\r\n            <para>\r\n            Remove a specific plugin from this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.Item(System.String)\">\r\n            <summary>\r\n            Gets a <see cref=\"T:log4net.Plugin.IPlugin\"/> by name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Plugin.IPlugin\"/> to lookup.</param>\r\n            <returns>\r\n            The <see cref=\"T:log4net.Plugin.IPlugin\"/> from the map with the name specified, or \r\n            <c>null</c> if no plugin is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup a plugin by name. If the plugin is not found <c>null</c>\r\n            will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginMap.AllPlugins\">\r\n            <summary>\r\n            Gets all possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.\r\n            </summary>\r\n            <value>All possible plugins as a list of <see cref=\"T:log4net.Plugin.IPlugin\"/> objects.</value>\r\n            <remarks>\r\n            <para>\r\n            Get a collection of all the plugins defined in this map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.PluginSkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Plugin.IPlugin\"/>\r\n            interface. This base class can be used by implementors\r\n            of the <see cref=\"T:log4net.Plugin.IPlugin\"/> interface.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"name\">the name of the plugin</param>\r\n            <remarks>\r\n            Initializes a new Plugin with the specified name.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.PluginSkeleton.Shutdown\">\r\n            <summary>\r\n            Is called when the plugin is to shutdown.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method is called to notify the plugin that \r\n            it should stop operating and should detach from\r\n            the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_name\">\r\n            <summary>\r\n            The name of this plugin.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.PluginSkeleton.m_repository\">\r\n            <summary>\r\n            The repository this plugin is attached to.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.Name\">\r\n            <summary>\r\n            Gets or sets the name of the plugin.\r\n            </summary>\r\n            <value>\r\n            The name of the plugin.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Plugins are stored in the <see cref=\"T:log4net.Plugin.PluginMap\"/>\r\n            keyed by name. Each plugin instance attached to a\r\n            repository must be a unique name.\r\n            </para>\r\n            <para>\r\n            The name of the plugin must not change one the \r\n            plugin has been attached to a repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.PluginSkeleton.LoggerRepository\">\r\n            <summary>\r\n            The repository for this plugin\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is attached to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin is \r\n            attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin\">\r\n            <summary>\r\n            Plugin that listens for events from the <see cref=\"T:log4net.Appender.RemotingAppender\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This plugin publishes an instance of <see cref=\"T:log4net.Appender.RemotingAppender.IRemoteLoggingSink\"/> \r\n            on a specified <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/>. This listens for logging events delivered from\r\n            a remote <see cref=\"T:log4net.Appender.RemotingAppender\"/>.\r\n            </para>\r\n            <para>\r\n            When an event is received it is relogged within the attached repository\r\n            as if it had been raised locally.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> property must be set.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.#ctor(System.String)\">\r\n            <summary>\r\n            Construct with sink Uri.\r\n            </summary>\r\n            <param name=\"sinkUri\">The name to publish the sink under in the remoting infrastructure. \r\n            See <see cref=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\"/> for more details.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin\"/> class\r\n            with specified name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Attach(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Attaches this plugin to a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this plugin should be attached to.</param>\r\n            <remarks>\r\n            <para>\r\n            A plugin may only be attached to a single repository.\r\n            </para>\r\n            <para>\r\n            This method is called when the plugin is attached to the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.Shutdown\">\r\n            <summary>\r\n            Is called when the plugin is to shutdown.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            When the plugin is shutdown the remote logging\r\n            sink is disconnected.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RemoteLoggingServerPlugin class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Plugin.RemoteLoggingServerPlugin.SinkUri\">\r\n            <summary>\r\n            Gets or sets the URI of this sink.\r\n            </summary>\r\n            <value>\r\n            The URI of this sink.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This is the name under which the object is marshaled.\r\n            <see cref=\"M:System.Runtime.Remoting.RemotingServices.Marshal(System.MarshalByRefObject,System.String,System.Type)\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\">\r\n            <summary>\r\n            Delivers <see cref=\"T:log4net.Core.LoggingEvent\"/> objects to a remote sink.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to listen for logging events\r\n            and deliver them to the local repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.#ctor(log4net.Repository.ILoggerRepository)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"repository\">The repository to log to.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl\"/> for the\r\n            specified <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.LogEvents(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Logs the events to the repository.\r\n            </summary>\r\n            <param name=\"events\">The events to log.</param>\r\n            <remarks>\r\n            <para>\r\n            The events passed are logged to the <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.InitializeLifetimeService\">\r\n            <summary>\r\n            Obtains a lifetime service object to control the lifetime \r\n            policy for this instance.\r\n            </summary>\r\n            <returns><c>null</c> to indicate that this instance should live forever.</returns>\r\n            <remarks>\r\n            <para>\r\n            Obtains a lifetime service object to control the lifetime \r\n            policy for this instance. This object should live forever\r\n            therefore this implementation returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Plugin.RemoteLoggingServerPlugin.RemoteLoggingSinkImpl.m_repository\">\r\n            <summary>\r\n            The underlying <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that events should\r\n            be logged to.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\">\r\n            <summary>\r\n            Default implementation of <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This default implementation of the <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            interface is used to create the default subclass\r\n            of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> object.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ILoggerFactory\">\r\n            <summary>\r\n            Interface abstracts creation of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to \r\n            create new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> objects.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\"/> method is called\r\n            to create a named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            <para>\r\n            Implement this interface to create new subclasses of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ILoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.CreateLogger(log4net.Repository.ILoggerRepository,System.String)\">\r\n            <summary>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance\r\n            </summary>\r\n            <param name=\"repository\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that will own the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance for the specified name.</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance with the \r\n            specified name.\r\n            </para>\r\n            <para>\r\n            Called by the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> to create\r\n            new named <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instances.\r\n            </para>\r\n            <para>\r\n            If the <paramref name=\"name\"/> is <c>null</c> then the root logger\r\n            must be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\">\r\n            <summary>\r\n            Default internal subclass of <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This subclass has no additional behavior over the\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class but does allow instances\r\n            to be created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Logger\">\r\n            <summary>\r\n            Implementation of <see cref=\"T:log4net.Core.ILogger\"/> used by <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to provide implementation of <see cref=\"T:log4net.Core.ILogger\"/>\r\n            interface. Applications should use <see cref=\"T:log4net.LogManager\"/> to get\r\n            logger instances.\r\n            </para>\r\n            <para>\r\n            This is one of the central classes in the log4net implementation. One of the\r\n            distinctive features of log4net are hierarchical loggers and their\r\n            evaluation. The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> organizes the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>\r\n            instances into a rooted tree hierarchy.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> class is abstract. Only concrete subclasses of\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> can be created. The <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>\r\n            is used to create instances of this type for the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Aspi Havewala</author>\r\n            <author>Douglas de la Torre</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.#ctor(System.String)\">\r\n            <summary>\r\n            This constructor created a new <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance and\r\n            sets its name.\r\n            </summary>\r\n            <param name=\"name\">The name of the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/>.</param>\r\n            <remarks>\r\n            <para>\r\n            This constructor is protected and designed to be used by\r\n            a subclass that is not abstract.\r\n            </para>\r\n            <para>\r\n            Loggers are constructed by <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> \r\n            objects. See <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory\"/> for the default\r\n            logger creator.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\r\n            Logger instance.\r\n            </summary>\r\n            <param name=\"newAppender\">An appender to add to this logger</param>\r\n            <remarks>\r\n            <para>\r\n            Add <paramref name=\"newAppender\"/> to the list of appenders of this\r\n            Logger instance.\r\n            </para>\r\n            <para>\r\n            If <paramref name=\"newAppender\"/> is already in the list of\r\n            appenders, then it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.GetAppender(System.String)\">\r\n            <summary>\r\n            Look for the appender named as <c>name</c>\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to lookup</param>\r\n            <returns>The appender with the name specified, or <c>null</c>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the named appender, or null if the appender is not found.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAllAppenders\">\r\n            <summary>\r\n            Remove all previously added appenders from this Logger instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Remove all previously added appenders from this Logger instance.\r\n            </para>\r\n            <para>\r\n            This is useful when re-reading configuration information.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Remove the appender passed as parameter form the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the named appender passed as parameter form the list of appenders.\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            This generic form is intended to be used by wrappers.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Generate a logging event for the specified <paramref name=\"level\"/> using\r\n            the <paramref name=\"message\"/> and <paramref name=\"exception\"/>.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            This is the most generic printing method that is intended to be used \r\n            by wrappers.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            <para>\r\n            Logs the specified logging event through this logger.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.IsEnabledFor(log4net.Core.Level)\">\r\n            <summary>\r\n            Checks if this logger is enabled for a given <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> passed as parameter.\r\n            </summary>\r\n            <param name=\"level\">The level to check.</param>\r\n            <returns>\r\n            <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this logger is going to log events of the specified <paramref name=\"level\"/>.\r\n            </para>\r\n            <para>\r\n            This method must not throw any exception to the caller.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CallAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Deliver the <see cref=\"T:log4net.Core.LoggingEvent\"/> to the attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Call the appenders in the hierarchy starting at\r\n            <c>this</c>. If no appenders could be found, emit a\r\n            warning.\r\n            </para>\r\n            <para>\r\n            This method calls all the appenders inherited from the\r\n            hierarchy circumventing any evaluation of whether to log or not\r\n            to log the particular log request.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.CloseNestedAppenders\">\r\n            <summary>\r\n            Closes all attached appenders implementing the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Used to ensure that the appenders are correctly shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.Log(log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            This is the most generic printing method. This generic form is intended to be used by wrappers\r\n            </summary>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Generate a logging event for the specified <paramref name=\"level\"/> using\r\n            the <paramref name=\"message\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(System.Type,log4net.Core.Level,System.Object,System.Exception)\">\r\n            <summary>\r\n            Creates a new logging event and logs the event without further checks.\r\n            </summary>\r\n            <param name=\"callerStackBoundaryDeclaringType\">The declaring type of the method that is\r\n            the stack boundary into the logging system for this call.</param>\r\n            <param name=\"level\">The level of the message to be logged.</param>\r\n            <param name=\"message\">The message object to log.</param>\r\n            <param name=\"exception\">The exception to log, including its stack trace.</param>\r\n            <remarks>\r\n            <para>\r\n            Generates a logging event and delivers it to the attached\r\n            appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Logger.ForcedLog(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Creates a new logging event and logs the event without further checks.\r\n            </summary>\r\n            <param name=\"logEvent\">The event being logged.</param>\r\n            <remarks>\r\n            <para>\r\n            Delivers the logging event to the attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the Logger class.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_name\">\r\n            <summary>\r\n            The name of this logger.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_level\">\r\n            <summary>\r\n            The assigned level of this logger. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>level</c> variable need not be \r\n            assigned a value in which case it is inherited \r\n            form the hierarchy.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_parent\">\r\n            <summary>\r\n            The parent of this logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The parent of this logger. \r\n            All loggers have at least one ancestor which is the root logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_hierarchy\">\r\n            <summary>\r\n            Loggers need to know what Hierarchy they are in.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Loggers need to know what Hierarchy they are in.\r\n            The hierarchy that this logger is a member of is stored\r\n            here.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderAttachedImpl\">\r\n            <summary>\r\n            Helper implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_additive\">\r\n            <summary>\r\n            Flag indicating if child loggers inherit their parents appenders\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Additivity is set to true by default, that is children inherit\r\n            the appenders of their ancestors by default. If this variable is\r\n            set to <c>false</c> then the appenders found in the\r\n            ancestors of this logger are not used. However, the children\r\n            of this logger will inherit its appenders, unless the children\r\n            have their additivity flag set to <c>false</c> too. See\r\n            the user manual for more details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Logger.m_appenderLock\">\r\n            <summary>\r\n            Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Parent\">\r\n            <summary>\r\n            Gets or sets the parent logger in the hierarchy.\r\n            </summary>\r\n            <value>\r\n            The parent logger in the hierarchy.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Part of the Composite pattern that makes the hierarchy.\r\n            The hierarchy is parent linked rather than child linked.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Additivity\">\r\n            <summary>\r\n            Gets or sets a value indicating if child loggers inherit their parent's appenders.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if child loggers inherit their parent's appenders.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Additivity is set to <c>true</c> by default, that is children inherit\r\n            the appenders of their ancestors by default. If this variable is\r\n            set to <c>false</c> then the appenders found in the\r\n            ancestors of this logger are not used. However, the children\r\n            of this logger will inherit its appenders, unless the children\r\n            have their additivity flag set to <c>false</c> too. See\r\n            the user manual for more details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.EffectiveLevel\">\r\n            <summary>\r\n            Gets the effective level for this logger.\r\n            </summary>\r\n            <returns>The nearest level in the logger hierarchy.</returns>\r\n            <remarks>\r\n            <para>\r\n            Starting from this logger, searches the logger hierarchy for a\r\n            non-null level and returns it. Otherwise, returns the level of the\r\n            root logger.\r\n            </para>\r\n            <para>The Logger class is designed so that this method executes as\r\n            quickly as possible.</para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\">\r\n            <summary>\r\n            Gets or sets the <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>The hierarchy that this logger belongs to.</value>\r\n            <remarks>\r\n            <para>\r\n            This logger must be attached to a single <see cref=\"P:log4net.Repository.Hierarchy.Logger.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>, if any, for this Logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> of this logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The assigned <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/> can be <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Appenders\">\r\n            <summary>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <returns>A collection of the appenders in this logger</returns>\r\n            <remarks>\r\n            <para>\r\n            Get the appenders contained in this logger as an \r\n            <see cref=\"T:System.Collections.ICollection\"/>. If no appenders \r\n            can be found, then a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Name\">\r\n            <summary>\r\n            Gets the logger name.\r\n            </summary>\r\n            <value>\r\n            The name of the logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this logger\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Logger.Repository\">\r\n            <summary>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that this logger belongs to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> where this \r\n            <c>Logger</c> instance is attached to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl.#ctor(System.String)\">\r\n            <summary>\r\n            Construct a new Logger\r\n            </summary>\r\n            <param name=\"name\">the name of the logger</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.DefaultLoggerFactory.LoggerImpl\"/> class\r\n            with the specified name. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger creation event notifications.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> in which the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> has been created.</param>\r\n            <param name=\"e\">The <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event args that hold the <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> instance that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger creation event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\">\r\n            <summary>\r\n            Provides data for the <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\"/> event is raised every time a\r\n            <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.LoggerCreationEventArgs.m_log\">\r\n            <summary>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> created\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerCreationEventArgs.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"log\">The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerCreationEventArgs\"/> event argument \r\n            class,with the specified <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\">\r\n            <summary>\r\n            Gets the <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.LoggerCreationEventArgs.Logger\"/> that has been created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy\">\r\n            <summary>\r\n            Hierarchical organization of loggers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <i>The casual user should not have to deal with this class\r\n            directly.</i>\r\n            </para>\r\n            <para>\r\n            This class is specialized in retrieving loggers by name and\r\n            also maintaining the logger hierarchy. Implements the \r\n            <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            The structure of the logger hierarchy is maintained by the\r\n            <see cref=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\"/> method. The hierarchy is such that children\r\n            link to their parent but parents do not have any references to their\r\n            children. Moreover, loggers can be instantiated in any order, in\r\n            particular descendant before ancestor.\r\n            </para>\r\n            <para>\r\n            In case a descendant is created before a particular ancestor,\r\n            then it creates a provision node for the ancestor and adds itself\r\n            to the provision node. Other descendants of the same ancestor add\r\n            themselves to the previously created provision node.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositorySkeleton\">\r\n            <summary>\r\n            Base implementation of <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default abstract implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            </para>\r\n            <para>\r\n            Skeleton implementation of the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> interface.\r\n            All <see cref=\"T:log4net.Repository.ILoggerRepository\"/> types can extend this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.ILoggerRepository\">\r\n            <summary>\r\n            Interface implemented by logger repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface is implemented by logger repositories. e.g. \r\n            <see cref=\"N:log4net.Repository.Hierarchy\"/>.\r\n            </para>\r\n            <para>\r\n            This interface is used by the <see cref=\"T:log4net.LogManager\"/>\r\n            to obtain <see cref=\"T:log4net.ILog\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Exists(System.String)\">\r\n            <summary>\r\n            Check if the named logger exists in the repository. If so return\r\n            its reference, otherwise returns <c>null</c>.\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to lookup</param>\r\n            <returns>The Logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            If the names logger exists it is returned, otherwise\r\n            <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetCurrentLoggers\">\r\n            <summary>\r\n            Returns all the currently defined loggers as an Array.\r\n            </summary>\r\n            <returns>All the defined loggers</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the currently defined loggers as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetLogger(System.String)\">\r\n            <summary>\r\n            Returns a named logger instance\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <returns>The logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a named logger instance.\r\n            </para>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned.  Otherwise, a new logger will be instantiated and\r\n            then linked with its existing ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Shutdown\">\r\n            <summary>Shutdown the repository</summary>\r\n            <remarks>\r\n            <para>\r\n            Shutting down a repository will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the\r\n            application exists. Otherwise, pending logging events might be\r\n            lost.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"M:log4net.Repository.ILoggerRepository.Shutdown\"/> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.ResetConfiguration\">\r\n            <summary>\r\n            Reset the repositories configuration to a default state\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this instance to their\r\n            default state.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the <see cref=\"T:log4net.Core.LoggingEvent\"/> through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ILoggerRepository.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </summary>\r\n            <returns>All the Appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Name\">\r\n            <summary>\r\n            The name of the repository\r\n            </summary>\r\n            <value>\r\n            The name of the repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Threshold\">\r\n            <summary>\r\n            The threshold for all events in this repository\r\n            </summary>\r\n            <value>\r\n            The threshold for all events in this repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The threshold for all events in this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Configured\">\r\n            <summary>\r\n            Flag indicates if this repository has been configured.\r\n            </summary>\r\n            <value>\r\n            Flag indicates if this repository has been configured.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Flag indicates if this repository has been configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.ConfigurationMessages\">\r\n            <summary>\r\n            Collection of internal messages captured during the most \r\n            recent configuration process.\r\n            </summary>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ShutdownEvent\">\r\n            <summary>\r\n            Event to notify that the repository has been shutdown.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has been shutdown.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository has been shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationReset\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been\r\n            reset to default.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.ILoggerRepository.ConfigurationChanged\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been changed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ILoggerRepository.Properties\">\r\n            <summary>\r\n            Repository specific properties\r\n            </summary>\r\n            <value>\r\n            Repository specific properties\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            These properties can be specified on a repository specific basis.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes the repository with default (empty) properties.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Construct the repository using specific properties\r\n            </summary>\r\n            <param name=\"properties\">the properties to set for this repository</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes the repository with specified properties.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Exists(System.String)\">\r\n            <summary>\r\n            Test if logger exists\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to lookup</param>\r\n            <returns>The Logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Check if the named logger exists in the repository. If so return\r\n            its reference, otherwise returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetCurrentLoggers\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the repository\r\n            </summary>\r\n            <returns>All the defined loggers</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the currently defined loggers in the repository as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetLogger(System.String)\">\r\n            <summary>\r\n            Return a new logger instance\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <returns>The logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Return a new logger instance.\r\n            </para>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned. Otherwise, a new logger will be instantiated and\r\n            then linked with its existing ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Shutdown\">\r\n            <summary>\r\n            Shutdown the repository\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Shutdown the repository. Can be overridden in a subclass.\r\n            This base class implementation notifies the <see cref=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\"/>\r\n            listeners and all attached plugins of the shutdown event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.ResetConfiguration\">\r\n            <summary>\r\n            Reset the repositories configuration to a default state\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this instance to their\r\n            default state.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this repository.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </summary>\r\n            <returns>All the Appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the Appenders that are configured as an Array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.LoggerRepositorySkeleton.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LoggerRepositorySkeleton class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.AddRenderer(System.Type,log4net.ObjectRenderer.IObjectRenderer)\">\r\n            <summary>\r\n            Adds an object renderer for a specific class. \r\n            </summary>\r\n            <param name=\"typeToRender\">The type that will be rendered by the renderer supplied.</param>\r\n            <param name=\"rendererInstance\">The object renderer used to render the object.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds an object renderer for a specific class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnShutdown(System.EventArgs)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository is shutting down\r\n            </summary>\r\n            <param name=\"e\">Empty EventArgs</param>\r\n            <remarks>\r\n            <para>\r\n            Notify any listeners that this repository is shutting down.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationReset(System.EventArgs)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has had its configuration reset\r\n            </summary>\r\n            <param name=\"e\">Empty EventArgs</param>\r\n            <remarks>\r\n            <para>\r\n            Notify any listeners that this repository's configuration has been reset.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.OnConfigurationChanged(System.EventArgs)\">\r\n            <summary>\r\n            Notify the registered listeners that the repository has had its configuration changed\r\n            </summary>\r\n            <param name=\"e\">Empty EventArgs</param>\r\n            <remarks>\r\n            <para>\r\n            Notify any listeners that this repository's configuration has changed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.LoggerRepositorySkeleton.RaiseConfigurationChanged(System.EventArgs)\">\r\n            <summary>\r\n            Raise a configuration changed event on this repository\r\n            </summary>\r\n            <param name=\"e\">EventArgs.Empty</param>\r\n            <remarks>\r\n            <para>\r\n            Applications that programmatically change the configuration of the repository should\r\n            raise this event notification to notify listeners.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Name\">\r\n            <summary>\r\n            The name of the repository\r\n            </summary>\r\n            <value>\r\n            The string name of the repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of this repository. The name is\r\n            used to store and lookup the repositories \r\n            stored by the <see cref=\"T:log4net.Core.IRepositorySelector\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Threshold\">\r\n            <summary>\r\n            The threshold for all events in this repository\r\n            </summary>\r\n            <value>\r\n            The threshold for all events in this repository\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The threshold for all events in this repository\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.RendererMap\">\r\n            <summary>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </summary>\r\n            <value>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            RendererMap accesses the object renderer map for this repository.\r\n            </para>\r\n            <para>\r\n            The RendererMap holds a mapping between types and\r\n            <see cref=\"T:log4net.ObjectRenderer.IObjectRenderer\"/> objects.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.PluginMap\">\r\n            <summary>\r\n            The plugin map for this repository.\r\n            </summary>\r\n            <value>\r\n            The plugin map for this repository.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The plugin map holds the <see cref=\"T:log4net.Plugin.IPlugin\"/> instances\r\n            that have been attached to this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.LevelMap\">\r\n            <summary>\r\n            Get the level map for the Repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the level map for the Repository.\r\n            </para>\r\n            <para>\r\n            The level map defines the mappings between\r\n            level names and <see cref=\"T:log4net.Core.Level\"/> objects in\r\n            this repository.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Configured\">\r\n            <summary>\r\n            Flag indicates if this repository has been configured.\r\n            </summary>\r\n            <value>\r\n            Flag indicates if this repository has been configured.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Flag indicates if this repository has been configured.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.ConfigurationMessages\">\r\n            <summary>\r\n            Contains a list of internal messages captures during the \r\n            last configuration.\r\n            </summary>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ShutdownEvent\">\r\n            <summary>\r\n            Event to notify that the repository has been shutdown.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has been shutdown.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository has been shutdown.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationReset\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration reset.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been\r\n            reset to default.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.LoggerRepositorySkeleton.ConfigurationChanged\">\r\n            <summary>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </summary>\r\n            <value>\r\n            Event to notify that the repository has had its configuration changed.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Event raised when the repository's configuration has been changed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.LoggerRepositorySkeleton.Properties\">\r\n            <summary>\r\n            Repository specific properties\r\n            </summary>\r\n            <value>\r\n            Repository specific properties\r\n            </value>\r\n            <remarks>\r\n            These properties can be specified on a repository specific basis\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.IBasicRepositoryConfigurator\">\r\n            <summary>\r\n            Basic Configurator interface for repositories\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by basic configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            with a default <see cref=\"T:log4net.Appender.IAppender\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.BasicConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initialize the repository using the specified appender\r\n            </summary>\r\n            <param name=\"appender\">the appender to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository to route all logging events to the\r\n            specified appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the repository using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the repository to route all logging events to the\r\n            specified appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.IXmlRepositoryConfigurator\">\r\n            <summary>\r\n            Configure repository using XML\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Interface used by Xml configurator to configure a <see cref=\"T:log4net.Repository.ILoggerRepository\"/>.\r\n            </para>\r\n            <para>\r\n            A <see cref=\"T:log4net.Repository.ILoggerRepository\"/> should implement this interface to support\r\n            configuration by the <see cref=\"T:log4net.Config.XmlConfigurator\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.IXmlRepositoryConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the repository using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n            <remarks>\r\n            <para>\r\n            The schema for the XML configuration data is defined by\r\n            the implementation.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Construct with properties\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with a logger factory\r\n            </summary>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.#ctor(log4net.Util.PropertiesDictionary,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Construct with properties and a logger factory\r\n            </summary>\r\n            <param name=\"properties\">The properties to pass to this repository.</param>\r\n            <param name=\"loggerFactory\">The factory to use to create new logger instances.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> class with \r\n            the specified <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Exists(System.String)\">\r\n            <summary>\r\n            Test if a logger exists\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to lookup</param>\r\n            <returns>The Logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Check if the named logger exists in the hierarchy. If so return\r\n            its reference, otherwise returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetCurrentLoggers\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the hierarchy as an Array\r\n            </summary>\r\n            <returns>All the defined loggers</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the currently defined loggers in the hierarchy as an Array.\r\n            The root logger is <b>not</b> included in the returned\r\n            enumeration.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String)\">\r\n            <summary>\r\n            Return a new logger instance named as the first parameter using\r\n            the default factory.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Return a new logger instance named as the first parameter using\r\n            the default factory.\r\n            </para>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned.  Otherwise, a new logger will be instantiated and\r\n            then linked with its existing ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <returns>The logger object with the name specified</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Shutdown\">\r\n            <summary>\r\n            Shutting down a hierarchy will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Shutting down a hierarchy will <i>safely</i> close and remove\r\n            all appenders in all loggers including the root logger.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the\r\n            application exists. Otherwise, pending logging events might be\r\n            lost.\r\n            </para>\r\n            <para>\r\n            The <c>Shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.ResetConfiguration\">\r\n            <summary>\r\n            Reset all values contained in this hierarchy instance to their default.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in this hierarchy instance to their\r\n            default.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set its default \"off\" value.\r\n            </para>\r\n            <para>\r\n            Existing loggers are not removed. They are just reset.\r\n            </para>\r\n            <para>\r\n            This method should be used sparingly and with care as it will\r\n            block all logging until it is completed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Log(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Log the logEvent through this hierarchy.\r\n            </summary>\r\n            <param name=\"logEvent\">the event to log</param>\r\n            <remarks>\r\n            <para>\r\n            This method should not normally be used to log.\r\n            The <see cref=\"T:log4net.ILog\"/> interface should be used \r\n            for routine logging. This interface can be obtained\r\n            using the <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method.\r\n            </para>\r\n            <para>\r\n            The <c>logEvent</c> is delivered to the appropriate logger and\r\n            that logger is then responsible for logging the event.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetAppenders\">\r\n            <summary>\r\n            Returns all the Appenders that are currently configured\r\n            </summary>\r\n            <returns>An array containing all the currently configured appenders</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns all the <see cref=\"T:log4net.Appender.IAppender\"/> instances that are currently configured.\r\n            All the loggers are searched for appenders. The appenders may also be containers\r\n            for appenders and these are also searched for additional loggers.\r\n            </para>\r\n            <para>\r\n            The list returned is unordered but does not contain duplicates.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppender(System.Collections.ArrayList,log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/>.\r\n            The appender may also be a container.\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"appender\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.CollectAppenders(System.Collections.ArrayList,log4net.Core.IAppenderAttachable)\">\r\n            <summary>\r\n            Collect the appenders from an <see cref=\"T:log4net.Core.IAppenderAttachable\"/> container\r\n            </summary>\r\n            <param name=\"appenderList\"></param>\r\n            <param name=\"container\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appender\r\n            </summary>\r\n            <param name=\"appender\">the appender to use to log all logging events</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IBasicRepositoryConfigurator#Configure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.BasicRepositoryConfigure(log4net.Appender.IAppender[])\">\r\n            <summary>\r\n            Initialize the log4net system using the specified appenders\r\n            </summary>\r\n            <param name=\"appenders\">the appenders to use to log all logging events</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.log4net#Repository#IXmlRepositoryConfigurator#Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.XmlRepositoryConfigure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Initialize the log4net system using the specified config\r\n            </summary>\r\n            <param name=\"element\">the element containing the root of the config</param>\r\n            <remarks>\r\n            <para>\r\n            This method provides the same functionality as the \r\n            <see cref=\"M:log4net.Repository.IBasicRepositoryConfigurator.Configure(log4net.Appender.IAppender)\"/> method implemented\r\n            on this object, but it is protected and therefore can be called by subclasses.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.IsDisabled(log4net.Core.Level)\">\r\n            <summary>\r\n            Test if this hierarchy is disabled for the specified <see cref=\"T:log4net.Core.Level\"/>.\r\n            </summary>\r\n            <param name=\"level\">The level to check against.</param>\r\n            <returns>\r\n            <c>true</c> if the repository is disabled for the level argument, <c>false</c> otherwise.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            If this hierarchy has not been configured then this method will\r\n            always return <c>true</c>.\r\n            </para>\r\n            <para>\r\n            This method will return <c>true</c> if this repository is\r\n            disabled for <c>level</c> object passed as parameter and\r\n            <c>false</c> otherwise.\r\n            </para>\r\n            <para>\r\n            See also the <see cref=\"P:log4net.Repository.ILoggerRepository.Threshold\"/> property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.Clear\">\r\n            <summary>\r\n            Clear all logger definitions from the internal hashtable\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This call will clear all logger definitions from the internal\r\n            hashtable. Invoking this method will irrevocably mess up the\r\n            logger hierarchy.\r\n            </para>\r\n            <para>\r\n            You should <b>really</b> know what you are doing before\r\n            invoking this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.GetLogger(System.String,log4net.Repository.Hierarchy.ILoggerFactory)\">\r\n            <summary>\r\n            Return a new logger instance named as the first parameter using\r\n            <paramref name=\"factory\"/>.\r\n            </summary>\r\n            <param name=\"name\">The name of the logger to retrieve</param>\r\n            <param name=\"factory\">The factory that will make the new logger instance</param>\r\n            <returns>The logger object with the name specified</returns>\r\n            <remarks>\r\n            <para>\r\n            If a logger of that name already exists, then it will be\r\n            returned. Otherwise, a new logger will be instantiated by the\r\n            <paramref name=\"factory\"/> parameter and linked with its existing\r\n            ancestors as well as children.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.OnLoggerCreationEvent(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Sends a logger creation event to all registered listeners\r\n            </summary>\r\n            <param name=\"logger\">The newly created logger</param>\r\n            <remarks>\r\n            Raises the logger creation event.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateParents(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Updates all the parents of the specified logger\r\n            </summary>\r\n            <param name=\"log\">The logger to update the parents for</param>\r\n            <remarks>\r\n            <para>\r\n            This method loops through all the <i>potential</i> parents of\r\n            <paramref name=\"log\"/>. There 3 possible cases:\r\n            </para>\r\n            <list type=\"number\">\r\n            \t<item>\r\n            \t\t<term>No entry for the potential parent of <paramref name=\"log\"/> exists</term>\r\n            \t\t<description>\r\n            \t\tWe create a ProvisionNode for this potential \r\n            \t\tparent and insert <paramref name=\"log\"/> in that provision node.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>The entry is of type Logger for the potential parent.</term>\r\n            \t\t<description>\r\n            \t\tThe entry is <paramref name=\"log\"/>'s nearest existing parent. We \r\n            \t\tupdate <paramref name=\"log\"/>'s parent field with this entry. We also break from \r\n            \t\the loop because updating our parent's parent is our parent's \r\n            \t\tresponsibility.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>The entry is of type ProvisionNode for this potential parent.</term>\r\n            \t\t<description>\r\n            \t\tWe add <paramref name=\"log\"/> to the list of children for this \r\n            \t\tpotential parent.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.UpdateChildren(log4net.Repository.Hierarchy.ProvisionNode,log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Replace a <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> with a <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> in the hierarchy.\r\n            </summary>\r\n            <param name=\"pn\"></param>\r\n            <param name=\"log\"></param>\r\n            <remarks>\r\n            <para>\r\n            We update the links for all the children that placed themselves\r\n            in the provision node 'pn'. The second argument 'log' is a\r\n            reference for the newly created Logger, parent of all the\r\n            children in 'pn'.\r\n            </para>\r\n            <para>\r\n            We loop on all the children 'c' in 'pn'.\r\n            </para>\r\n            <para>\r\n            If the child 'c' has been already linked to a child of\r\n            'log' then there is no need to update 'c'.\r\n            </para>\r\n            <para>\r\n            Otherwise, we set log's parent field to c's parent and set\r\n            c's parent field to log.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddLevel(log4net.Repository.Hierarchy.Hierarchy.LevelEntry)\">\r\n            <summary>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"levelEntry\">the level values</param>\r\n            <remarks>\r\n            <para>\r\n            Define or redefine a Level using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </para>\r\n            <para>\r\n            Supports setting levels via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument\r\n            </summary>\r\n            <param name=\"propertyEntry\">the property value</param>\r\n            <remarks>\r\n            <para>\r\n            Set a Property using the values in the <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\"/> argument.\r\n            </para>\r\n            <para>\r\n            Supports setting property values via the configuration file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.Hierarchy.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the Hierarchy class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"E:log4net.Repository.Hierarchy.Hierarchy.LoggerCreatedEvent\">\r\n            <summary>\r\n            Event used to notify that a logger has been created.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Event raised when a logger is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.EmittedNoAppenderWarning\">\r\n            <summary>\r\n            Has no appender warning been emitted\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Flag to indicate if we have already issued a warning\r\n            about not having an appender warning.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.Root\">\r\n            <summary>\r\n            Get the root of this hierarchy\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get the root of this hierarchy.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LoggerFactory\">\r\n            <summary>\r\n            Gets or sets the default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/> instance.\r\n            </summary>\r\n            <value>The default <see cref=\"T:log4net.Repository.Hierarchy.ILoggerFactory\"/></value>\r\n            <remarks>\r\n            <para>\r\n            The logger factory is used to create logger instances.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.Hierarchy.LevelEntry\">\r\n            <summary>\r\n            A class to hold the value, name and display name for a level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to hold the value, name and display name for a level\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.ToString\">\r\n            <summary>\r\n            Override <c>Object.ToString</c> to return sensible debug info\r\n            </summary>\r\n            <returns>string info about this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Value\">\r\n            <summary>\r\n            Value of the level\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the value is not set (defaults to -1) the value will be looked\r\n            up for the current level with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.Name\">\r\n            <summary>\r\n            Name of the level\r\n            </summary>\r\n            <value>\r\n            The name of the level\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The name of the level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.Hierarchy.LevelEntry.DisplayName\">\r\n            <summary>\r\n            Display name for the level\r\n            </summary>\r\n            <value>\r\n            The display name of the level\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The display name of the level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.LoggerKey\">\r\n            <summary>\r\n            Used internally to accelerate hash table searches.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Internal class used to improve performance of \r\n            string keyed hashtables.\r\n            </para>\r\n            <para>\r\n            The hashcode of the string is cached for reuse.\r\n            The string is stored as an interned value.\r\n            When comparing two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> objects for equality \r\n            the reference equality of the interned strings is compared.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.#ctor(System.String)\">\r\n            <summary>\r\n            Construct key with string name\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> class \r\n            with the specified name.\r\n            </para>\r\n            <para>\r\n            Stores the hashcode of the string and interns\r\n            the string key to optimize comparisons.\r\n            </para>\r\n            <note>\r\n            The Compact Framework 1.0 the <see cref=\"M:System.String.Intern(System.String)\"/>\r\n            method does not work. On the Compact Framework\r\n            the string keys are not interned nor are they\r\n            compared by reference.\r\n            </note>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.GetHashCode\">\r\n            <summary>\r\n            Returns a hash code for the current instance.\r\n            </summary>\r\n            <returns>A hash code for the current instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns the cached hashcode.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.LoggerKey.Equals(System.Object)\">\r\n            <summary>\r\n            Determines whether two <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/> instances \r\n            are equal.\r\n            </summary>\r\n            <param name=\"obj\">The <see cref=\"T:System.Object\"/> to compare with the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>.</param>\r\n            <returns>\r\n            <c>true</c> if the specified <see cref=\"T:System.Object\"/> is equal to the current <see cref=\"T:log4net.Repository.Hierarchy.LoggerKey\"/>; otherwise, <c>false</c>.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Compares the references of the interned strings.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.ProvisionNode\">\r\n            <summary>\r\n            Provision nodes are used where no logger instance has been specified\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> instances are used in the \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> when there is no specified \r\n            <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> for that node.\r\n            </para>\r\n            <para>\r\n            A provision node holds a list of child loggers on behalf of\r\n            a logger that does not exist.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.ProvisionNode.#ctor(log4net.Repository.Hierarchy.Logger)\">\r\n            <summary>\r\n            Create a new provision node with child node\r\n            </summary>\r\n            <param name=\"log\">A child logger to add to this node.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.ProvisionNode\"/> class \r\n            with the specified child logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.RootLogger\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> sits at the root of the logger hierarchy tree. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> is a regular <see cref=\"T:log4net.Repository.Hierarchy.Logger\"/> except \r\n            that it provides several guarantees.\r\n            </para>\r\n            <para>\r\n            First, it cannot be assigned a <c>null</c>\r\n            level. Second, since the root logger cannot have a parent, the\r\n            <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\"/> property always returns the value of the\r\n            level field without walking the hierarchy.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.RootLogger.#ctor(log4net.Core.Level)\">\r\n            <summary>\r\n            Construct a <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/>\r\n            </summary>\r\n            <param name=\"level\">The level to assign to the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.RootLogger\"/> class with\r\n            the specified logging level.\r\n            </para>\r\n            <para>\r\n            The root logger names itself as \"root\". However, the root\r\n            logger cannot be retrieved by name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.RootLogger.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RootLogger class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.EffectiveLevel\">\r\n            <summary>\r\n            Gets the assigned level value without walking the logger hierarchy.\r\n            </summary>\r\n            <value>The assigned level value without walking the logger hierarchy.</value>\r\n            <remarks>\r\n            <para>\r\n            Because the root logger cannot have a parent and its level\r\n            must not be <c>null</c> this property just returns the\r\n            value of <see cref=\"P:log4net.Repository.Hierarchy.Logger.Level\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.Hierarchy.RootLogger.Level\">\r\n            <summary>\r\n            Gets or sets the assigned <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> for the root logger.  \r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Repository.Hierarchy.RootLogger.Level\"/> of the root logger.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Setting the level of the root logger to a <c>null</c> reference\r\n            may have catastrophic results. We prevent this here.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\">\r\n            <summary>\r\n            Initializes the log4net environment using an XML DOM.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Configures a <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> using an XML DOM.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.#ctor(log4net.Repository.Hierarchy.Hierarchy)\">\r\n            <summary>\r\n            Construct the configurator for a hierarchy\r\n            </summary>\r\n            <param name=\"hierarchy\">The hierarchy to build.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Repository.Hierarchy.XmlHierarchyConfigurator\"/> class\r\n            with the specified <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.Configure(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Configure the hierarchy by parsing a DOM tree of XML elements.\r\n            </summary>\r\n            <param name=\"element\">The root element to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Configure the hierarchy by parsing a DOM tree of XML elements.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindAppenderByReference(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parse appenders by IDREF.\r\n            </summary>\r\n            <param name=\"appenderRef\">The appender ref element.</param>\r\n            <returns>The instance of the appender that the ref refers to.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents an appender and return \r\n            the appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses an appender element.\r\n            </summary>\r\n            <param name=\"appenderElement\">The appender element.</param>\r\n            <returns>The appender instance or <c>null</c> when parsing failed.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents an appender and return\r\n            the appender instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLogger(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses a logger element.\r\n            </summary>\r\n            <param name=\"loggerElement\">The logger element.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents a logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRoot(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses the root logger element.\r\n            </summary>\r\n            <param name=\"rootElement\">The root element.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents the root logger.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseChildrenOfLoggerElement(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\r\n            Parses the children of a logger element.\r\n            </summary>\r\n            <param name=\"catElement\">The category element.</param>\r\n            <param name=\"log\">The logger instance.</param>\r\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse the child elements of a &lt;logger&gt; element.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseRenderer(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Parses an object renderer.\r\n            </summary>\r\n            <param name=\"element\">The renderer element.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents a renderer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseLevel(System.Xml.XmlElement,log4net.Repository.Hierarchy.Logger,System.Boolean)\">\r\n            <summary>\r\n            Parses a level element.\r\n            </summary>\r\n            <param name=\"element\">The level element.</param>\r\n            <param name=\"log\">The logger object to set the level on.</param>\r\n            <param name=\"isRoot\">Flag to indicate if the logger is the root logger.</param>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element that represents a level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(System.Xml.XmlElement,System.Object)\">\r\n            <summary>\r\n            Sets a parameter on an object.\r\n            </summary>\r\n            <param name=\"element\">The parameter element.</param>\r\n            <param name=\"target\">The object to set the parameter on.</param>\r\n            <remarks>\r\n            The parameter name must correspond to a writable property\r\n            on the object. The value of the parameter is a string,\r\n            therefore this function will attempt to set a string\r\n            property first. If unable to set a string property it\r\n            will inspect the property and its argument type. It will\r\n            attempt to call a static method called <c>Parse</c> on the\r\n            type of the property. This method will take a single\r\n            string argument and return a value that can be used to\r\n            set the property.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.HasAttributesOrElements(System.Xml.XmlElement)\">\r\n            <summary>\r\n            Test if an element has no attributes or child elements\r\n            </summary>\r\n            <param name=\"element\">the element to inspect</param>\r\n            <returns><c>true</c> if the element has any attributes or child elements, <c>false</c> otherwise</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.IsTypeConstructible(System.Type)\">\r\n            <summary>\r\n            Test if a <see cref=\"T:System.Type\"/> is constructible with <c>Activator.CreateInstance</c>.\r\n            </summary>\r\n            <param name=\"type\">the type to inspect</param>\r\n            <returns><c>true</c> if the type is creatable using a default constructor, <c>false</c> otherwise</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.FindMethodInfo(System.Type,System.String)\">\r\n            <summary>\r\n            Look for a method on the <paramref name=\"targetType\"/> that matches the <paramref name=\"name\"/> supplied\r\n            </summary>\r\n            <param name=\"targetType\">the type that has the method</param>\r\n            <param name=\"name\">the name of the method</param>\r\n            <returns>the method info found</returns>\r\n            <remarks>\r\n            <para>\r\n            The method must be a public instance method on the <paramref name=\"targetType\"/>.\r\n            The method must be named <paramref name=\"name\"/> or \"Add\" followed by <paramref name=\"name\"/>.\r\n            The method must take a single parameter.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\r\n            Converts a string value to a target type.\r\n            </summary>\r\n            <param name=\"type\">The type of object to convert the string to.</param>\r\n            <param name=\"value\">The string value to use as the value of the object.</param>\r\n            <returns>\r\n            <para>\r\n            An object of type <paramref name=\"type\"/> with value <paramref name=\"value\"/> or \r\n            <c>null</c> when the conversion could not be performed.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(System.Xml.XmlElement,System.Type,System.Type)\">\r\n            <summary>\r\n            Creates an object as specified in XML.\r\n            </summary>\r\n            <param name=\"element\">The XML element that contains the definition of the object.</param>\r\n            <param name=\"defaultTargetType\">The object type to use if not explicitly specified.</param>\r\n            <param name=\"typeConstraint\">The type that the returned object must be or must inherit from.</param>\r\n            <returns>The object or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Parse an XML element and create an object instance based on the configuration\r\n            data.\r\n            </para>\r\n            <para>\r\n            The type of the instance may be specified in the XML. If not\r\n            specified then the <paramref name=\"defaultTargetType\"/> is used\r\n            as the type. However the type is specified it must support the\r\n            <paramref name=\"typeConstraint\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_appenderBag\">\r\n            <summary>\r\n            key: appenderName, value: appender.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.m_hierarchy\">\r\n            <summary>\r\n            The Hierarchy being configured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Repository.Hierarchy.XmlHierarchyConfigurator.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the XmlHierarchyConfigurator class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.ConfigurationChangedEventArgs\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Repository.ConfigurationChangedEventArgs.#ctor(System.Collections.ICollection)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"configurationMessages\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Repository.ConfigurationChangedEventArgs.ConfigurationMessages\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryShutdownEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository shutdown event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that is shutting down.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository shutdown event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationResetEventHandler\">\r\n            <summary>\r\n            Delegate used to handle logger repository configuration reset event notifications\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration reset.</param>\r\n            <param name=\"e\">Empty event args</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle logger repository configuration reset event notifications.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Repository.LoggerRepositoryConfigurationChangedEventHandler\">\r\n            <summary>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </summary>\r\n            <param name=\"sender\">The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> that has had its configuration changed.</param>\r\n            <param name=\"e\">Empty event arguments.</param>\r\n            <remarks>\r\n            <para>\r\n            Delegate used to handle event notifications for logger repository configuration changes.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.AppDomainPatternConverter\">\r\n            <summary>\r\n            Write the name of the current AppDomain to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the name of the current AppDomain to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.AppDomainPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the name of the current AppDomain to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes name of the current AppDomain to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time to the writer as a string.\r\n            </para>\r\n            <para>\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the formatting of the date. The following values are allowed:\r\n            <list type=\"definition\">\r\n            \t<listheader>\r\n            \t\t<term>Option value</term>\r\n            \t\t<description>Output</description>\r\n            \t</listheader>\r\n            \t<item>\r\n            \t\t<term>ISO8601</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"yyyy-MM-dd HH:mm:ss,fff\"</c> pattern.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>DATE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"dd MMM yyyy HH:mm:ss,fff\"</c> for example, <c>\"06 Nov 1994 15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>ABSOLUTE</term>\r\n            \t\t<description>\r\n            \t\tUses the <see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/> formatter. \r\n            \t\tFormats using the <c>\"HH:mm:ss,fff\"</c> for example, <c>\"15:49:37,459\"</c>.\r\n            \t\t</description>\r\n            \t</item>\r\n            \t<item>\r\n            \t\t<term>other</term>\r\n            \t\t<description>\r\n            \t\tAny other pattern string uses the <see cref=\"T:log4net.DateFormatter.SimpleDateFormatter\"/> formatter. \r\n            \t\tThis formatter passes the pattern string to the <see cref=\"T:System.DateTime\"/> \r\n            \t\t<see cref=\"M:System.DateTime.ToString(System.String)\"/> method.\r\n            \t\tFor details on valid patterns see \r\n            \t\t<a href=\"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp\">DateTimeFormatInfo Class</a>.\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            </para>\r\n            <para>\r\n            The date and time is in the local time zone and is rendered in that zone.\r\n            To output the time in Universal time see <see cref=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.m_dateFormatter\">\r\n            <summary>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> used to render the date to a string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.DatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date and time passed is in the local time zone.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.DatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the DatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter\">\r\n            <summary>\r\n            Write an <see cref=\"T:System.Environment.SpecialFolder\"/> folder path to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an special path environment folder path to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output. <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            should be a value in the <see cref=\"T:System.Environment.SpecialFolder\"/> enumeration.\r\n            </para>\r\n            </remarks>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an special path environment folder path to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the special path environment folder path to the output <paramref name=\"writer\"/>.\r\n            The name of the special path environment folder path to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentFolderPathPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the EnvironmentFolderPathPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.EnvironmentPatternConverter\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write an environment variable to the output writer.\r\n            The value of the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> determines \r\n            the name of the variable to output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write an environment variable to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the environment variable to the output <paramref name=\"writer\"/>.\r\n            The name of the environment variable to output must be set\r\n            using the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.EnvironmentPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the EnvironmentPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.IdentityPatternConverter\">\r\n            <summary>\r\n            Write the current thread identity to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the current thread identity to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.IdentityPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current thread identity to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes the current thread identity to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.IdentityPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the IdentityPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\">\r\n            <summary>\r\n            Pattern converter for literal string instances in the pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the literal string value specified in the \r\n            <see cref=\"P:log4net.Util.PatternConverter.Option\"/> property to \r\n            the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.SetNext(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Set the next converter in the chain\r\n            </summary>\r\n            <param name=\"pc\">The next pattern converter in the chain</param>\r\n            <returns>The next pattern converter</returns>\r\n            <remarks>\r\n            <para>\r\n            Special case the building of the pattern converter chain\r\n            for <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> instances. Two adjacent\r\n            literals in the pattern can be represented by a single combined\r\n            pattern converter. This implementation detects when a \r\n            <see cref=\"T:log4net.Util.PatternStringConverters.LiteralPatternConverter\"/> is added to the chain\r\n            after this converter and combines its value with this converter's\r\n            literal value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Format(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the literal to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            Override the formatting behavior to ignore the FormattingInfo\r\n            because we have a literal instead.\r\n            </para>\r\n            <para>\r\n            Writes the value of <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.LiteralPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Convert this pattern into the rendered message\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, not set</param>\r\n            <remarks>\r\n            <para>\r\n            This method is not used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.NewLinePatternConverter\">\r\n            <summary>\r\n            Writes a newline to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Writes the system dependent line terminator to the output.\r\n            This behavior can be overridden by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>:\r\n            </para>\r\n            <list type=\"definition\">\r\n              <listheader>\r\n                <term>Option Value</term>\r\n                <description>Output</description>\r\n              </listheader>\r\n              <item>\r\n                <term>DOS</term>\r\n                <description>DOS or Windows line terminator <c>\"\\r\\n\"</c></description>\r\n              </item>\r\n              <item>\r\n                <term>UNIX</term>\r\n                <description>UNIX line terminator <c>\"\\n\"</c></description>\r\n              </item>\r\n            </list>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.NewLinePatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.ProcessIdPatternConverter\">\r\n            <summary>\r\n            Write the current process ID to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the current process ID to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current process ID to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Write the current process ID to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.ProcessIdPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the ProcessIdPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.PropertyPatternConverter\">\r\n            <summary>\r\n            Property pattern converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This pattern converter reads the thread and global properties.\r\n            The thread properties take priority over global properties.\r\n            See <see cref=\"P:log4net.ThreadContext.Properties\"/> for details of the \r\n            thread properties. See <see cref=\"P:log4net.GlobalContext.Properties\"/> for\r\n            details of the global properties.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified then that will be used to\r\n            lookup a single property. If no <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is specified\r\n            then all properties will be dumped as a list of key value pairs.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.PropertyPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the property value to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Writes out the value of a named property. The property name\r\n            should be set in the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            property.\r\n            </para>\r\n            <para>\r\n            If the <see cref=\"P:log4net.Util.PatternConverter.Option\"/> is set to <c>null</c>\r\n            then all the properties are written as key value pairs.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.RandomStringPatternConverter\">\r\n            <summary>\r\n            A Pattern converter that generates a string of random characters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The converter generates a string of random characters. By default\r\n            the string is length 4. This can be changed by setting the <see cref=\"P:log4net.Util.PatternConverter.Option\"/>\r\n            to the string value of the length required.\r\n            </para>\r\n            <para>\r\n            The random characters in the string are limited to uppercase letters\r\n            and numbers only.\r\n            </para>\r\n            <para>\r\n            The random number generator used by this class is not cryptographically secure.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.s_random\">\r\n            <summary>\r\n            Shared random number generator\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.m_length\">\r\n            <summary>\r\n            Length of random string to generate. Default length 4.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\">\r\n            <summary>\r\n            Initialize the converter options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.RandomStringPatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write a randoim string to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Write a randoim string to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.RandomStringPatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the RandomStringPatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UserNamePatternConverter\">\r\n            <summary>\r\n            Write the current threads username to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Write the current threads username to the output writer\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UserNamePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current threads username to the output\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Write the current threads username to the output <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UserNamePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the UserNamePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternStringConverters.UtcDatePatternConverter\">\r\n            <summary>\r\n            Write the UTC date time to the output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Date pattern converter, uses a <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/> to format \r\n            the current date and time in Universal time.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/> for details on the date pattern syntax.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternStringConverters.UtcDatePatternConverter.Convert(System.IO.TextWriter,System.Object)\">\r\n            <summary>\r\n            Write the current date and time to the output\r\n            </summary>\r\n            <param name=\"writer\"><see cref=\"T:System.IO.TextWriter\"/> that will receive the formatted result.</param>\r\n            <param name=\"state\">null, state is not set</param>\r\n            <remarks>\r\n            <para>\r\n            Pass the current date and time to the <see cref=\"T:log4net.DateFormatter.IDateFormatter\"/>\r\n            for it to render it to the writer.\r\n            </para>\r\n            <para>\r\n            The date is in Universal time when it is rendered.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.PatternStringConverters.DatePatternConverter\"/>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternStringConverters.UtcDatePatternConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the UtcDatePatternConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.BooleanConverter\">\r\n            <summary>\r\n            Type converter for Boolean.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <c>bool</c> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.BooleanConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Convert the source object to the type supported by this object\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Boolean.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Boolean\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.BooleanConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            <summary>\r\n            Exception base type for conversion errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This type extends <see cref=\"T:System.ApplicationException\"/>. It\r\n            does not add any new functionality but does differentiate the\r\n            type of exception being thrown.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.String,System.Exception)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">A message to include with the exception.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class\r\n            with the specified message and inner exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data about the exception being thrown.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConversionNotSupportedException.Create(System.Type,System.Object,System.Exception)\">\r\n            <summary>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </summary>\r\n            <param name=\"destinationType\">The conversion destination type.</param>\r\n            <param name=\"sourceValue\">The value to convert.</param>\r\n            <param name=\"innerException\">A nested exception to include.</param>\r\n            <returns>An instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.ConverterRegistry\">\r\n            <summary>\r\n            Register of type converters for specific types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Maintains a registry of type converters used to convert between\r\n            types.\r\n            </para>\r\n            <para>\r\n            Use the <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\"/> and \r\n            <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\"/> methods to register new converters.\r\n            The <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\"/> and <see cref=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\"/> methods\r\n            lookup appropriate converters to use.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n            <remarks>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/> class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.#cctor\">\r\n            <summary>\r\n            Static constructor.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This constructor defines the intrinsic type converters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Object)\">\r\n            <summary>\r\n            Adds a converter for a specific type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <param name=\"converter\">The type converter to use to convert to the destination type.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a converter instance for a specific type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.AddConverter(System.Type,System.Type)\">\r\n            <summary>\r\n            Adds a converter for a specific type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <param name=\"converterType\">The type of the type converter to use to convert to the destination type.</param>\r\n            <remarks>\r\n            <para>\r\n            Adds a converter <see cref=\"T:System.Type\"/> for a specific type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertTo(System.Type,System.Type)\">\r\n            <summary>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </summary>\r\n            <param name=\"sourceType\">The type being converted from.</param>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConvertFrom(System.Type)\">\r\n            <summary>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the type converter to use to convert values to the destination type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.GetConverterFromAttribute(System.Type)\">\r\n            <summary>\r\n            Lookups the type converter to use as specified by the attributes on the \r\n            destination type.\r\n            </summary>\r\n            <param name=\"destinationType\">The type being converted to.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.ConverterRegistry.CreateConverterInstance(System.Type)\">\r\n            <summary>\r\n            Creates the instance of the type converter.\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter.</param>\r\n            <returns>\r\n            The type converter instance to use for type conversions or <c>null</c> \r\n            if no type converter is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The type specified for the type converter must implement \r\n            the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> or <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces \r\n            and must have a public default (no argument) constructor.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the ConverterRegistry class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.ConverterRegistry.s_type2converter\">\r\n            <summary>\r\n            Mapping from <see cref=\"T:System.Type\"/> to type converter.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.EncodingConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Text.Encoding\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.EncodingConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an encoding</param>\r\n            <returns>the encoding</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Text.Encoding.GetEncoding(System.String)\"/> method to \r\n            convert the <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Text.Encoding\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.EncodingConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IConvertTo\">\r\n            <summary>\r\n            Interface supported by type converters\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This interface supports conversion from a single type to arbitrary types.\r\n            See <see cref=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.CanConvertTo(System.Type)\">\r\n            <summary>\r\n            Returns whether this converter can convert the object to the specified type\r\n            </summary>\r\n            <param name=\"targetType\">A Type that represents the type you want to convert to</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the type supported by this converter can be converted to the\r\n            <paramref name=\"targetType\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IConvertTo.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts the given value object to the specified type, using the arguments\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the <paramref name=\"source\"/> (which must be of the type supported\r\n            by this converter) to the <paramref name=\"targetType\"/> specified..\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.IPAddressConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Net.IPAddress\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.IPAddressConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to an IPAddress</param>\r\n            <returns>the IPAddress</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Net.IPAddress.Parse(System.String)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to an <see cref=\"T:System.Net.IPAddress\"/>.\r\n            If that fails then the string is resolved as a DNS hostname.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.IPAddressConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.IPAddressConverter.validIpAddressChars\">\r\n            <summary>\r\n            Valid characters in an IPv4 or IPv6 address string. (Does not support subnets)\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternLayoutConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Layout.PatternLayout\"/> type.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Layout.PatternLayout\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternLayout</param>\r\n            <returns>the PatternLayout</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Layout.PatternLayout\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Layout.PatternLayout.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternLayoutConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.PatternStringConverter\">\r\n            <summary>\r\n            Convert between string and <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:log4net.Util.PatternString\"/> type, \r\n            and from a <see cref=\"T:log4net.Util.PatternString\"/> type to a string.\r\n            </para>\r\n            <para>\r\n            The string is used as the <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/> \r\n            of the <see cref=\"T:log4net.Util.PatternString\"/>.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\">\r\n            <summary>\r\n            Can the target type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"targetType\">A <see cref=\"T:System.Type\"/> that represents the type you want to convert to</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"targetType\"/> is\r\n            assignable from a <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts the given value object to the specified type, using the arguments\r\n            </summary>\r\n            <param name=\"source\">the object to convert</param>\r\n            <param name=\"targetType\">The Type to convert the value parameter to</param>\r\n            <returns>the converted object</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:log4net.Util.PatternString.Format\"/> method to convert the\r\n            <see cref=\"T:log4net.Util.PatternString\"/> argument to a <see cref=\"T:System.String\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            <paramref name=\"targetType\"/>. To check for this condition use the \r\n            <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertTo(System.Type)\"/> method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.PatternStringConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a PatternString</param>\r\n            <returns>the PatternString</returns>\r\n            <remarks>\r\n            <para>\r\n            Creates and returns a new <see cref=\"T:log4net.Util.PatternString\"/> using\r\n            the <paramref name=\"source\"/> <see cref=\"T:System.String\"/> as the\r\n            <see cref=\"P:log4net.Util.PatternString.ConversionPattern\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.PatternStringConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverter\">\r\n            <summary>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Supports conversion from string to <see cref=\"T:System.Type\"/> type.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.ConverterRegistry\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/>\r\n            <seealso cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\">\r\n            <summary>\r\n            Can the source type be converted to the type supported by this object\r\n            </summary>\r\n            <param name=\"sourceType\">the type to convert</param>\r\n            <returns>true if the conversion is possible</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns <c>true</c> if the <paramref name=\"sourceType\"/> is\r\n            the <see cref=\"T:System.String\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverter.ConvertFrom(System.Object)\">\r\n            <summary>\r\n            Overrides the ConvertFrom method of IConvertFrom.\r\n            </summary>\r\n            <param name=\"source\">the object to convert to a Type</param>\r\n            <returns>the Type</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/> method to convert the\r\n            <see cref=\"T:System.String\"/> argument to a <see cref=\"T:System.Type\"/>.\r\n            Additional effort is made to locate partially specified types\r\n            by searching the loaded assemblies.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:log4net.Util.TypeConverters.ConversionNotSupportedException\">\r\n            The <paramref name=\"source\"/> object cannot be converted to the\r\n            target type. To check for this condition use the <see cref=\"M:log4net.Util.TypeConverters.TypeConverter.CanConvertFrom(System.Type)\"/>\r\n            method.\r\n            </exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TypeConverters.TypeConverterAttribute\">\r\n            <summary>\r\n            Attribute used to associate a type converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class and Interface level attribute that specifies a type converter\r\n            to use with the associated type.\r\n            </para>\r\n            <para>\r\n            To associate a type converter with a target type apply a\r\n            <c>TypeConverterAttribute</c> to the target type. Specify the\r\n            type of the type converter on the attribute.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TypeConverters.TypeConverterAttribute.m_typeName\">\r\n            <summary>\r\n            The string type name of the type converter\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.String)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type name\r\n            </summary>\r\n            <param name=\"typeName\">The string type name of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TypeConverters.TypeConverterAttribute.#ctor(System.Type)\">\r\n            <summary>\r\n            Create a new type converter attribute for the specified type\r\n            </summary>\r\n            <param name=\"converterType\">The type of the type converter</param>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TypeConverters.TypeConverterAttribute.ConverterTypeName\">\r\n            <summary>\r\n            The string type name of the type converter \r\n            </summary>\r\n            <value>\r\n            The string type name of the type converter \r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The type specified must implement the <see cref=\"T:log4net.Util.TypeConverters.IConvertFrom\"/> \r\n            or the <see cref=\"T:log4net.Util.TypeConverters.IConvertTo\"/> interfaces.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.AppenderAttachedImpl\">\r\n            <summary>\r\n            A straightforward implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the default implementation of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/>\r\n            interface. Implementors of the <see cref=\"T:log4net.Core.IAppenderAttachable\"/> interface\r\n            should aggregate an instance of this type.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.AppenderAttachedImpl\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Append on on all attached appenders.\r\n            </summary>\r\n            <param name=\"loggingEvents\">The array of events being logged.</param>\r\n            <returns>The number of appenders called.</returns>\r\n            <remarks>\r\n            <para>\r\n            Calls the <see cref=\"M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)\"/> method on all \r\n            attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.CallAppend(log4net.Appender.IAppender,log4net.Core.LoggingEvent[])\">\r\n            <summary>\r\n            Calls the DoAppende method on the <see cref=\"T:log4net.Appender.IAppender\"/> with \r\n            the <see cref=\"T:log4net.Core.LoggingEvent\"/> objects supplied.\r\n            </summary>\r\n            <param name=\"appender\">The appender</param>\r\n            <param name=\"loggingEvents\">The events</param>\r\n            <remarks>\r\n            <para>\r\n            If the <paramref name=\"appender\"/> supports the <see cref=\"T:log4net.Appender.IBulkAppender\"/>\r\n            interface then the <paramref name=\"loggingEvents\"/> will be passed \r\n            through using that interface. Otherwise the <see cref=\"T:log4net.Core.LoggingEvent\"/>\r\n            objects in the array will be passed one at a time.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.AddAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Attaches an appender.\r\n            </summary>\r\n            <param name=\"newAppender\">The appender to add.</param>\r\n            <remarks>\r\n            <para>\r\n            If the appender is already in the list it won't be added again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.GetAppender(System.String)\">\r\n            <summary>\r\n            Gets an attached appender with the specified name.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to get.</param>\r\n            <returns>\r\n            The appender with the name specified, or <c>null</c> if no appender with the\r\n            specified name is found.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup an attached appender by name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAllAppenders\">\r\n            <summary>\r\n            Removes all attached appenders.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Removes and closes all attached appenders\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(log4net.Appender.IAppender)\">\r\n            <summary>\r\n            Removes the specified appender from the list of attached appenders.\r\n            </summary>\r\n            <param name=\"appender\">The appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.AppenderAttachedImpl.RemoveAppender(System.String)\">\r\n            <summary>\r\n            Removes the appender with the specified name from the list of appenders.\r\n            </summary>\r\n            <param name=\"name\">The name of the appender to remove.</param>\r\n            <returns>The appender removed from the list</returns>\r\n            <remarks>\r\n            <para>\r\n            The appender removed is not closed.\r\n            If you are discarding the appender you must call\r\n            <see cref=\"M:log4net.Appender.IAppender.Close\"/> on the appender removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderList\">\r\n            <summary>\r\n            List of appenders\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.m_appenderArray\">\r\n            <summary>\r\n            Array of appenders, used to cache the m_appenderList\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.AppenderAttachedImpl.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the AppenderAttachedImpl class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.AppenderAttachedImpl.Appenders\">\r\n            <summary>\r\n            Gets all attached appenders.\r\n            </summary>\r\n            <returns>\r\n            A collection of attached appenders, or <c>null</c> if there\r\n            are no attached appenders.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The read only collection of all currently attached appenders.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.CompositeProperties\">\r\n            <summary>\r\n            This class aggregates several PropertiesDictionary collections together.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Provides a dictionary style lookup over an ordered list of\r\n            <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CompositeProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Add(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Add a Properties Dictionary to this composite collection\r\n            </summary>\r\n            <param name=\"properties\">the properties to add</param>\r\n            <remarks>\r\n            <para>\r\n            Properties dictionaries added first take precedence over dictionaries added\r\n            later.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CompositeProperties.Flatten\">\r\n            <summary>\r\n            Flatten this composite collection into a single properties dictionary\r\n            </summary>\r\n            <returns>the flattened dictionary</returns>\r\n            <remarks>\r\n            <para>\r\n            Reduces the collection of ordered dictionaries to a single dictionary\r\n            containing the resultant values for the keys.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CompositeProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Looks up the value for the <paramref name=\"key\"/> specified.\r\n            The <see cref=\"T:log4net.Util.PropertiesDictionary\"/> collections are searched\r\n            in the order in which they were added to this collection. The value\r\n            returned is the value held by the first collection that contains\r\n            the specified key.\r\n            </para>\r\n            <para>\r\n            If none of the collections contain the specified key then\r\n            <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ContextPropertiesBase\">\r\n            <summary>\r\n            Base class for Context Properties implementations\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class defines a basic property get set accessor\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ContextPropertiesBase.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the value of a property\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ConverterInfo\">\r\n            <summary>\r\n            Wrapper class used to map converter names to converter types\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Pattern converter info class used during configuration by custom\r\n            PatternString and PatternLayer converters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.#ctor\">\r\n            <summary>\r\n            default constructor\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ConverterInfo.AddProperty(log4net.Util.PropertyEntry)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"entry\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Name\">\r\n            <summary>\r\n            Gets or sets the name of the conversion pattern\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The name of the pattern in the format string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Type\">\r\n            <summary>\r\n            Gets or sets the type of the converter\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The value specified must extend the \r\n            <see cref=\"T:log4net.Util.PatternConverter\"/> type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ConverterInfo.Properties\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.CountingQuietTextWriter\">\r\n            <summary>\r\n            Subclass of <see cref=\"T:log4net.Util.QuietTextWriter\"/> that maintains a count of \r\n            the number of bytes written.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer counts the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.QuietTextWriter\">\r\n            <summary>\r\n            <see cref=\"T:System.IO.TextWriter\"/> that does not leak exceptions\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:log4net.Util.QuietTextWriter\"/> does not throw exceptions when things go wrong. \r\n            Instead, it delegates error handling to its <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.TextWriterAdapter\">\r\n            <summary>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Adapter that extends <see cref=\"T:System.IO.TextWriter\"/> and forwards all\r\n            messages to an instance of <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.TextWriterAdapter.m_writer\">\r\n            <summary>\r\n            The writer to forward messages to\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to forward to</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.TextWriterAdapter\"/> that forwards all\r\n            messages to a <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Close\">\r\n            <summary>\r\n            Closes the writer and releases any system resources associated with the writer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Dispose(System.Boolean)\">\r\n            <summary>\r\n            Dispose this writer\r\n            </summary>\r\n            <param name=\"disposing\">flag indicating if we are being disposed</param>\r\n            <remarks>\r\n            <para>\r\n            Dispose this writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Flush\">\r\n            <summary>\r\n            Flushes any buffered output\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears all buffers for the writer and causes any buffered data to be written \r\n            to the underlying device\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the wrapped TextWriter\r\n            </summary>\r\n            <param name=\"value\">the value to write to the TextWriter</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a character to the wrapped TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a character buffer to the wrapped TextWriter\r\n            </summary>\r\n            <param name=\"buffer\">the data buffer</param>\r\n            <param name=\"index\">the start index</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a character buffer to the wrapped TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.TextWriterAdapter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the wrapped TextWriter\r\n            </summary>\r\n            <param name=\"value\">the value to write to the TextWriter</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a string to the wrapped TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Writer\">\r\n            <summary>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </summary>\r\n            <value>\r\n            The underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the underlying <see cref=\"T:System.IO.TextWriter\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.Encoding\">\r\n            <summary>\r\n            The Encoding in which the output is written\r\n            </summary>\r\n            <value>\r\n            The <see cref=\"P:log4net.Util.TextWriterAdapter.Encoding\"/>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The Encoding in which the output is written\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.FormatProvider\">\r\n            <summary>\r\n            Gets an object that controls formatting\r\n            </summary>\r\n            <value>\r\n            The format provider\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets an object that controls formatting\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.TextWriterAdapter.NewLine\">\r\n            <summary>\r\n            Gets or sets the line terminator string used by the TextWriter\r\n            </summary>\r\n            <value>\r\n            The line terminator to use\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the line terminator string used by the TextWriter\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">the writer to actually write to</param>\r\n            <param name=\"errorHandler\">the error handler to report error to</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new QuietTextWriter using a writer and error handler\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the underlying writer\r\n            </summary>\r\n            <param name=\"value\">the char to write</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a character to the underlying writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a buffer to the underlying writer\r\n            </summary>\r\n            <param name=\"buffer\">the buffer to write</param>\r\n            <param name=\"index\">the start index to write from</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a buffer to the underlying writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the output.\r\n            </summary>\r\n            <param name=\"value\">The string data to write to the output.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes a string to the output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.QuietTextWriter.Close\">\r\n            <summary>\r\n            Closes the underlying output writer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Closes the underlying output writer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_errorHandler\">\r\n            <summary>\r\n            The error handler instance to pass all errors to\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.QuietTextWriter.m_closed\">\r\n            <summary>\r\n            Flag to indicate if this writer is closed\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.ErrorHandler\">\r\n            <summary>\r\n            Gets or sets the error handler that all errors are passed to.\r\n            </summary>\r\n            <value>\r\n            The error handler that all errors are passed to.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the error handler that all errors are passed to.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.QuietTextWriter.Closed\">\r\n            <summary>\r\n            Gets a value indicating whether this writer is closed.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if this writer is closed, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets a value indicating whether this writer is closed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.#ctor(System.IO.TextWriter,log4net.Core.IErrorHandler)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">The <see cref=\"T:System.IO.TextWriter\"/> to actually write to.</param>\r\n            <param name=\"errorHandler\">The <see cref=\"T:log4net.Core.IErrorHandler\"/> to report errors to.</param>\r\n            <remarks>\r\n            <para>\r\n            Creates a new instance of the <see cref=\"T:log4net.Util.CountingQuietTextWriter\"/> class \r\n            with the specified <see cref=\"T:System.IO.TextWriter\"/> and <see cref=\"T:log4net.Core.IErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char)\">\r\n            <summary>\r\n            Writes a character to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"value\">the char to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.Char[],System.Int32,System.Int32)\">\r\n            <summary>\r\n            Writes a buffer to the underlying writer and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"buffer\">the buffer to write</param>\r\n            <param name=\"index\">the start index to write from</param>\r\n            <param name=\"count\">the number of characters to write</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CountingQuietTextWriter.Write(System.String)\">\r\n            <summary>\r\n            Writes a string to the output and counts the number of bytes written.\r\n            </summary>\r\n            <param name=\"str\">The string data to write to the output.</param>\r\n            <remarks>\r\n            <para>\r\n            Overrides implementation of <see cref=\"T:log4net.Util.QuietTextWriter\"/>. Counts\r\n            the number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.CountingQuietTextWriter.m_countBytes\">\r\n            <summary>\r\n            Total number of bytes written.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CountingQuietTextWriter.Count\">\r\n            <summary>\r\n            Gets or sets the total number of bytes written.\r\n            </summary>\r\n            <value>\r\n            The total number of bytes written.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the total number of bytes written.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.CyclicBuffer\">\r\n            <summary>\r\n            A fixed size rolling buffer of logging events.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            An array backed fixed size leaky bucket.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.#ctor(System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"maxSize\">The maximum number of logging events in the buffer.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.CyclicBuffer\"/> class with \r\n            the specified maximum number of buffered logging events.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentOutOfRangeException\">The <paramref name=\"maxSize\"/> argument is not a positive integer.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Append(log4net.Core.LoggingEvent)\">\r\n            <summary>\r\n            Appends a <paramref name=\"loggingEvent\"/> to the buffer.\r\n            </summary>\r\n            <param name=\"loggingEvent\">The event to append to the buffer.</param>\r\n            <returns>The event discarded from the buffer, if the buffer is full, otherwise <c>null</c>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Append an event to the buffer. If the buffer still contains free space then\r\n            <c>null</c> is returned. If the buffer is full then an event will be dropped\r\n            to make space for the new event, the event dropped is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopOldest\">\r\n            <summary>\r\n            Get and remove the oldest event in the buffer.\r\n            </summary>\r\n            <returns>The oldest logging event in the buffer</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the oldest (first) logging event in the buffer and removes it \r\n            from the buffer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.PopAll\">\r\n            <summary>\r\n            Pops all the logging events from the buffer into an array.\r\n            </summary>\r\n            <returns>An array of all the logging events in the buffer.</returns>\r\n            <remarks>\r\n            <para>\r\n            Get all the events in the buffer and clear the buffer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.CyclicBuffer.Clear\">\r\n            <summary>\r\n            Clear the buffer\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear the buffer of all events. The events in the buffer are lost.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Item(System.Int32)\">\r\n            <summary>\r\n            Gets the <paramref name=\"i\"/>th oldest event currently in the buffer.\r\n            </summary>\r\n            <value>The <paramref name=\"i\"/>th oldest event currently in the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            If <paramref name=\"i\"/> is outside the range 0 to the number of events\r\n            currently in the buffer, then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.MaxSize\">\r\n            <summary>\r\n            Gets the maximum size of the buffer.\r\n            </summary>\r\n            <value>The maximum size of the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the maximum size of the buffer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.CyclicBuffer.Length\">\r\n            <summary>\r\n            Gets the number of logging events in the buffer.\r\n            </summary>\r\n            <value>The number of logging events in the buffer.</value>\r\n            <remarks>\r\n            <para>\r\n            This number is guaranteed to be in the range 0 to <see cref=\"P:log4net.Util.CyclicBuffer.MaxSize\"/>\r\n            (inclusive).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyCollection\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.ICollection\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyCollection\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyCollection.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyCollection.s_instance\">\r\n            <summary>\r\n            The singleton instance of the empty collection.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the empty collection.\r\n            </summary>\r\n            <returns>The singleton instance of the empty collection.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the empty collection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyCollection.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyCollection.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyCollection.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.EmptyDictionary\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionary\"/>\r\n            interface that always represents an empty collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            Copies the elements of the <see cref=\"T:System.Collections.ICollection\"/> to an \r\n            <see cref=\"T:System.Array\"/>, starting at a particular Array index.\r\n            </summary>\r\n            <param name=\"array\">The one-dimensional <see cref=\"T:System.Array\"/> \r\n            that is the destination of the elements copied from \r\n            <see cref=\"T:System.Collections.ICollection\"/>. The Array must have zero-based \r\n            indexing.</param>\r\n            <param name=\"index\">The zero-based index in array at which \r\n            copying begins.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values are copied into the array.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Add(System.Object,System.Object)\">\r\n            <summary>\r\n            Adds an element with the provided key and value to the \r\n            <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The <see cref=\"T:System.Object\"/> to use as the key of the element to add.</param>\r\n            <param name=\"value\">The <see cref=\"T:System.Object\"/> to use as the value of the element to add.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no new values can be added. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Clear\">\r\n            <summary>\r\n            Removes all elements from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\">\r\n            <summary>\r\n            Determines whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> contains an element \r\n            with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key to locate in the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</param>\r\n            <returns><c>false</c></returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"M:log4net.Util.EmptyDictionary.Contains(System.Object)\"/> method always returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.GetEnumerator\">\r\n            <summary>\r\n            Returns an enumerator that can iterate through a collection.\r\n            </summary>\r\n            <returns>\r\n            An <see cref=\"T:System.Collections.IEnumerator\"/> that can be used to \r\n            iterate through the collection.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.NullEnumerator\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.EmptyDictionary.Remove(System.Object)\">\r\n            <summary>\r\n            Removes the element with the specified key from the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to remove.</param>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be removed. A <see cref=\"T:System.InvalidOperationException\"/>\r\n            is thrown if this method is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"F:log4net.Util.EmptyDictionary.s_instance\">\r\n            <summary>\r\n            The singleton instance of the empty dictionary.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsSynchronized\">\r\n            <summary>\r\n            Gets a value indicating if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe).\r\n            </summary>\r\n            <value>\r\n            <b>true</b> if access to the <see cref=\"T:System.Collections.ICollection\"/> is synchronized (thread-safe); otherwise, <b>false</b>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            For the <see cref=\"T:log4net.Util.EmptyCollection\"/> this property is always <b>true</b>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Count\">\r\n            <summary>\r\n            Gets the number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>\r\n            </summary>\r\n            <value>\r\n            The number of elements contained in the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty the <see cref=\"P:log4net.Util.EmptyDictionary.Count\"/> is always <c>0</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.SyncRoot\">\r\n            <summary>\r\n            Gets an object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </summary>\r\n            <value>\r\n            An object that can be used to synchronize access to the <see cref=\"T:System.Collections.ICollection\"/>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty and thread safe and synchronized this instance is also\r\n            the <see cref=\"P:log4net.Util.EmptyDictionary.SyncRoot\"/> object.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsFixedSize\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> has a fixed size.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsFixedSize\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.IsReadOnly\">\r\n            <summary>\r\n            Gets a value indicating whether the <see cref=\"T:log4net.Util.EmptyDictionary\"/> is read-only.\r\n            </summary>\r\n            <value><c>true</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty <see cref=\"P:log4net.Util.EmptyDictionary.IsReadOnly\"/> always returns <c>true</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Keys\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the keys of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Values\">\r\n            <summary>\r\n            Gets an <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.\r\n            </summary>\r\n            <value>An <see cref=\"T:System.Collections.ICollection\"/> containing the values of the <see cref=\"T:log4net.Util.EmptyDictionary\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty a <see cref=\"T:log4net.Util.EmptyCollection\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.EmptyDictionary.Item(System.Object)\">\r\n            <summary>\r\n            Gets or sets the element with the specified key.\r\n            </summary>\r\n            <param name=\"key\">The key of the element to get or set.</param>\r\n            <value><c>null</c></value>\r\n            <remarks>\r\n            <para>\r\n            As the collection is empty no values can be looked up or stored. \r\n            If the index getter is called then <c>null</c> is returned.\r\n            A <see cref=\"T:System.InvalidOperationException\"/> is thrown if the setter is called.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">This dictionary is always empty and cannot be modified.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.FormattingInfo\">\r\n            <summary>\r\n            Contain the information obtained when parsing formatting modifiers \r\n            in conversion modifiers.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Holds the formatting information extracted from the format string by\r\n            the <see cref=\"T:log4net.Util.PatternParser\"/>. This is used by the <see cref=\"T:log4net.Util.PatternConverter\"/>\r\n            objects when rendering the output.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor\">\r\n            <summary>\r\n            Defaut Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.FormattingInfo.#ctor(System.Int32,System.Int32,System.Boolean)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.FormattingInfo\"/> class\r\n            with the specified parameters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Min\">\r\n            <summary>\r\n            Gets or sets the minimum value.\r\n            </summary>\r\n            <value>\r\n            The minimum value.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the minimum value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.Max\">\r\n            <summary>\r\n            Gets or sets the maximum value.\r\n            </summary>\r\n            <value>\r\n            The maximum value.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the maximum value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.FormattingInfo.LeftAlign\">\r\n            <summary>\r\n            Gets or sets a flag indicating whether left align is enabled\r\n            or not.\r\n            </summary>\r\n            <value>\r\n            A flag indicating whether left align is enabled or not.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets a flag indicating whether left align is enabled or not.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.GlobalContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.GlobalContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class implements a properties collection that is thread safe and supports both\r\n            storing properties and capturing a read only copy of the current propertied.\r\n            </para>\r\n            <para>\r\n            This class is optimized to the scenario where the properties are read frequently\r\n            and are modified infrequently.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_readOnlyProperties\">\r\n            <summary>\r\n            The read only copy of the properties.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This variable is declared <c>volatile</c> to prevent the compiler and JIT from\r\n            reordering reads and writes of this thread performed on different threads.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.GlobalContextProperties.m_syncRoot\">\r\n            <summary>\r\n            Lock object used to synchronize updates within this instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.GlobalContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Remove(System.String)\">\r\n            <summary>\r\n            Remove a property from the global context\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Removing an entry from the global context properties is relatively expensive compared\r\n            with reading a value. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.Clear\">\r\n            <summary>\r\n            Clear the global context properties\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.GlobalContextProperties.GetReadOnlyProperties\">\r\n            <summary>\r\n            Get a readonly immutable copy of the properties\r\n            </summary>\r\n            <returns>the current global context properties</returns>\r\n            <remarks>\r\n            <para>\r\n            This implementation is fast because the GlobalContextProperties class\r\n            stores a readonly copy of the properties.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.GlobalContextProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Reading the value for a key is faster than setting the value.\r\n            When the value is written a new read only copy of \r\n            the properties is created.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LevelMapping\">\r\n            <summary>\r\n            Manages a mapping from levels to <see cref=\"T:log4net.Util.LevelMappingEntry\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Manages an ordered mapping from <see cref=\"T:log4net.Core.Level\"/> instances \r\n            to <see cref=\"T:log4net.Util.LevelMappingEntry\"/> subclasses.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialise a new instance of <see cref=\"T:log4net.Util.LevelMapping\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Add(log4net.Util.LevelMappingEntry)\">\r\n            <summary>\r\n            Add a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> to this mapping\r\n            </summary>\r\n            <param name=\"entry\">the entry to add</param>\r\n            <remarks>\r\n            <para>\r\n            If a <see cref=\"T:log4net.Util.LevelMappingEntry\"/> has previously been added\r\n            for the same <see cref=\"T:log4net.Core.Level\"/> then that entry will be \r\n            overwritten.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.Lookup(log4net.Core.Level)\">\r\n            <summary>\r\n            Lookup the mapping for the specified level\r\n            </summary>\r\n            <param name=\"level\">the level to lookup</param>\r\n            <returns>the <see cref=\"T:log4net.Util.LevelMappingEntry\"/> for the level or <c>null</c> if no mapping found</returns>\r\n            <remarks>\r\n            <para>\r\n            Lookup the value for the specified level. Finds the nearest\r\n            mapping value for the level that is equal to or less than the\r\n            <paramref name=\"level\"/> specified.\r\n            </para>\r\n            <para>\r\n            If no mapping could be found then <c>null</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LevelMapping.ActivateOptions\">\r\n            <summary>\r\n            Initialize options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Caches the sorted list of <see cref=\"T:log4net.Util.LevelMappingEntry\"/> in an array\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogicalThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.LogicalThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            <para>\r\n            This class stores its properties in a slot on the <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> named\r\n            <c>log4net.Util.LogicalThreadContextProperties</c>.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.m_disabled\">\r\n            <summary>\r\n            Flag used to disable this context if we don't have permission to access the CallContext.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogicalThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Remove(System.String)\">\r\n            <summary>\r\n            Remove a property\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the value for the specified <paramref name=\"key\"/> from the context.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.Clear\">\r\n            <summary>\r\n            Clear all the context properties\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear all the context properties\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\r\n            Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread.\r\n            </summary>\r\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\r\n            <returns>the properties for this thread</returns>\r\n            <remarks>\r\n            <para>\r\n            The collection returned is only to be used on the calling thread. If the\r\n            caller needs to share the collection between different threads then the \r\n            caller must clone the collection before doings so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.GetCallContextData\">\r\n            <summary>\r\n            Gets the call context get data.\r\n            </summary>\r\n            <returns>The peroperties dictionary stored in the call context</returns>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.GetData(System.String)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogicalThreadContextProperties.SetCallContextData(log4net.Util.PropertiesDictionary)\">\r\n            <summary>\r\n            Sets the call context data.\r\n            </summary>\r\n            <param name=\"properties\">The properties.</param>\r\n            <remarks>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> method <see cref=\"M:System.Runtime.Remoting.Messaging.CallContext.SetData(System.String,System.Object)\"/> has a\r\n            security link demand, therfore we must put the method call in a seperate method\r\n            that we can wrap in an exception handler.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogicalThreadContextProperties.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the LogicalThreadContextProperties class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogicalThreadContextProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set the property value for the <paramref name=\"key\"/> specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventHandler\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"e\"></param>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog\">\r\n            <summary>\r\n            Outputs log statements from within the log4net assembly.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Log4net components cannot make log4net logging calls. However, it is\r\n            sometimes useful for the user to learn about what log4net is\r\n            doing.\r\n            </para>\r\n            <para>\r\n            All log4net internal debug calls go to the standard output stream\r\n            whereas internal error messages are sent to the standard error output \r\n            stream.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.ToString\">\r\n            <summary>\r\n            Formats Prefix, Source, and Message in the same format as the value\r\n            sent to Console.Out and Trace.Write.\r\n            </summary>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#ctor(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.LogLog\"/> class. \r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"prefix\"></param>\r\n            <param name=\"message\"></param>\r\n            <param name=\"exception\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.#cctor\">\r\n            <summary>\r\n            Static constructor that initializes logging by reading \r\n            settings from the application configuration file.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>log4net.Internal.Debug</c> application setting\r\n            controls internal debugging. This setting should be set\r\n            to <c>true</c> to enable debugging.\r\n            </para>\r\n            <para>\r\n            The <c>log4net.Internal.Quiet</c> application setting\r\n            suppresses all internal logging including error messages. \r\n            This setting should be set to <c>true</c> to enable message\r\n            suppression.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.OnLogReceived(System.Type,System.String,System.String,System.Exception)\">\r\n            <summary>\r\n            Raises the LogReceived event when an internal messages is received.\r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"prefix\"></param>\r\n            <param name=\"message\"></param>\r\n            <param name=\"exception\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String)\">\r\n            <summary>\r\n            Writes log4net internal debug messages to the \r\n            standard output stream.\r\n            </summary>\r\n            <param name=\"source\"></param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal debug messages are prepended with \r\n            the string \"log4net: \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Debug(System.Type,System.String,System.Exception)\">\r\n            <summary>\r\n            Writes log4net internal debug messages to the \r\n            standard output stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <param name=\"exception\">An exception to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal debug messages are prepended with \r\n            the string \"log4net: \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String)\">\r\n            <summary>\r\n            Writes log4net internal warning messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal warning messages are prepended with \r\n            the string \"log4net:WARN \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Warn(System.Type,System.String,System.Exception)\">\r\n            <summary>\r\n            Writes log4net internal warning messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <param name=\"exception\">An exception to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal warning messages are prepended with \r\n            the string \"log4net:WARN \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String)\">\r\n            <summary>\r\n            Writes log4net internal error messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal error messages are prepended with \r\n            the string \"log4net:ERROR \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.Error(System.Type,System.String,System.Exception)\">\r\n            <summary>\r\n            Writes log4net internal error messages to the \r\n            standard error stream.\r\n            </summary>\r\n            <param name=\"source\">The Type that generated this message.</param>\r\n            <param name=\"message\">The message to log.</param>\r\n            <param name=\"exception\">An exception to log.</param>\r\n            <remarks>\r\n            <para>\r\n            All internal debug messages are prepended with \r\n            the string \"log4net:ERROR \".\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitOutLine(System.String)\">\r\n            <summary>\r\n            Writes output to the standard output stream.  \r\n            </summary>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes to both Console.Out and System.Diagnostics.Trace.\r\n            Note that the System.Diagnostics.Trace is not supported\r\n            on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            If the AppDomain is not configured with a config file then\r\n            the call to System.Diagnostics.Trace may fail. This is only\r\n            an issue if you are programmatically creating your own AppDomains.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.EmitErrorLine(System.String)\">\r\n            <summary>\r\n            Writes output to the standard error stream.  \r\n            </summary>\r\n            <param name=\"message\">The message to log.</param>\r\n            <remarks>\r\n            <para>\r\n            Writes to both Console.Error and System.Diagnostics.Trace.\r\n            Note that the System.Diagnostics.Trace is not supported\r\n            on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            If the AppDomain is not configured with a config file then\r\n            the call to System.Diagnostics.Trace may fail. This is only\r\n            an issue if you are programmatically creating your own AppDomains.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_debugEnabled\">\r\n            <summary>\r\n             Default debug level\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.LogLog.s_quietMode\">\r\n            <summary>\r\n            In quietMode not even errors generate any output.\r\n            </summary>\r\n        </member>\r\n        <member name=\"E:log4net.Util.LogLog.LogReceived\">\r\n            <summary>\r\n            The event raised when an internal message has been received.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Source\">\r\n            <summary>\r\n            The Type that generated the internal message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.TimeStamp\">\r\n            <summary>\r\n            The DateTime stamp of when the internal message was received.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Prefix\">\r\n            <summary>\r\n            A string indicating the severity of the internal message.\r\n            </summary>\r\n            <remarks>\r\n            \"log4net: \", \r\n            \"log4net:ERROR \", \r\n            \"log4net:WARN \"\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Message\">\r\n            <summary>\r\n            The internal log message.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.Exception\">\r\n            <summary>\r\n            The Exception related to the message.\r\n            </summary>\r\n            <remarks>\r\n            Optional. Will be null if no Exception was passed.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.InternalDebugging\">\r\n            <summary>\r\n            Gets or sets a value indicating whether log4net internal logging\r\n            is enabled or disabled.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if log4net internal logging is enabled, otherwise \r\n            <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            When set to <c>true</c>, internal debug level logging will be \r\n            displayed.\r\n            </para>\r\n            <para>\r\n            This value can be set by setting the application setting \r\n            <c>log4net.Internal.Debug</c> in the application configuration\r\n            file.\r\n            </para>\r\n            <para>\r\n            The default value is <c>false</c>, i.e. debugging is\r\n            disabled.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <para>\r\n            The following example enables internal debugging using the \r\n            application configuration file :\r\n            </para>\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net.Internal.Debug\" value=\"true\" />\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.QuietMode\">\r\n            <summary>\r\n            Gets or sets a value indicating whether log4net should generate no output\r\n            from internal logging, not even for errors. \r\n            </summary>\r\n            <value>\r\n            <c>true</c> if log4net should generate no output at all from internal \r\n            logging, otherwise <c>false</c>.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            When set to <c>true</c> will cause internal logging at all levels to be \r\n            suppressed. This means that no warning or error reports will be logged. \r\n            This option overrides the <see cref=\"P:log4net.Util.LogLog.InternalDebugging\"/> setting and \r\n            disables all debug also.\r\n            </para>\r\n            <para>This value can be set by setting the application setting\r\n            <c>log4net.Internal.Quiet</c> in the application configuration file.\r\n            </para>\r\n            <para>\r\n            The default value is <c>false</c>, i.e. internal logging is not\r\n            disabled.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            The following example disables internal logging using the \r\n            application configuration file :\r\n            <code lang=\"XML\" escaped=\"true\">\r\n            <configuration>\r\n            \t<appSettings>\r\n            \t\t<add key=\"log4net.Internal.Quiet\" value=\"true\"/>\r\n            \t</appSettings>\r\n            </configuration>\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.EmitInternalMessages\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsDebugEnabled\">\r\n            <summary>\r\n            Test if LogLog.Debug is enabled for output.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if Debug is enabled\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Test if LogLog.Debug is enabled for output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsWarnEnabled\">\r\n            <summary>\r\n            Test if LogLog.Warn is enabled for output.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if Warn is enabled\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Test if LogLog.Warn is enabled for output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.IsErrorEnabled\">\r\n            <summary>\r\n            Test if LogLog.Error is enabled for output.\r\n            </summary>\r\n            <value>\r\n            <c>true</c> if Error is enabled\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Test if LogLog.Error is enabled for output.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogLog.LogReceivedAdapter\">\r\n            <summary>\r\n            Subscribes to the LogLog.LogReceived event and stores messages\r\n            to the supplied IList instance.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.#ctor(System.Collections.IList)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"items\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogLog.LogReceivedAdapter.Dispose\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogLog.LogReceivedAdapter.Items\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.LogReceivedEventArgs\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.LogReceivedEventArgs.#ctor(log4net.Util.LogLog)\">\r\n            <summary>\r\n            \r\n            </summary>\r\n            <param name=\"loglog\"></param>\r\n        </member>\r\n        <member name=\"P:log4net.Util.LogReceivedEventArgs.LogLog\">\r\n            <summary>\r\n            \r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NativeError\">\r\n            <summary>\r\n            Represents a native error code and message.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Represents a Win32 platform native error.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.#ctor(System.Int32,System.String)\">\r\n            <summary>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </summary>\r\n            <param name=\"number\">The number of the native error.</param>\r\n            <param name=\"message\">The message of the native error.</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of the <see cref=\"T:log4net.Util.NativeError\"/> class with the specified \r\n            error number and message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetLastError\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last Windows error.\r\n            </summary>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the last windows error.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/> error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetError(System.Int32)\">\r\n            <summary>\r\n            Create a new instance of the <see cref=\"T:log4net.Util.NativeError\"/> class.\r\n            </summary>\r\n            <param name=\"number\">the error number for the native error</param>\r\n            <returns>\r\n            An instance of the <see cref=\"T:log4net.Util.NativeError\"/> class for the specified \r\n            error number.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message for the specified error number is lookup up using the \r\n            native Win32 <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.GetErrorMessage(System.Int32)\">\r\n            <summary>\r\n            Retrieves the message corresponding with a Win32 message identifier.\r\n            </summary>\r\n            <param name=\"messageId\">Message identifier for the requested message.</param>\r\n            <returns>\r\n            The message corresponding with the specified message identifier.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            The message will be searched for in system message-table resource(s)\r\n            using the native <c>FormatMessage</c> function.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.ToString\">\r\n            <summary>\r\n            Return error information string\r\n            </summary>\r\n            <returns>error information string</returns>\r\n            <remarks>\r\n            <para>\r\n            Return error information string\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NativeError.FormatMessage(System.Int32,System.IntPtr@,System.Int32,System.Int32,System.String@,System.Int32,System.IntPtr)\">\r\n            <summary>\r\n            Formats a message string.\r\n            </summary>\r\n            <param name=\"dwFlags\">Formatting options, and how to interpret the <paramref name=\"lpSource\"/> parameter.</param>\r\n            <param name=\"lpSource\">Location of the message definition.</param>\r\n            <param name=\"dwMessageId\">Message identifier for the requested message.</param>\r\n            <param name=\"dwLanguageId\">Language identifier for the requested message.</param>\r\n            <param name=\"lpBuffer\">If <paramref name=\"dwFlags\"/> includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the <c>LocalAlloc</c> function, and places the pointer to the buffer at the address specified in <paramref name=\"lpBuffer\"/>.</param>\r\n            <param name=\"nSize\">If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer.</param>\r\n            <param name=\"Arguments\">Pointer to an array of values that are used as insert values in the formatted message.</param>\r\n            <remarks>\r\n            <para>\r\n            The function requires a message definition as input. The message definition can come from a \r\n            buffer passed into the function. It can come from a message table resource in an \r\n            already-loaded module. Or the caller can ask the function to search the system's message \r\n            table resource(s) for the message definition. The function finds the message definition \r\n            in a message table resource based on a message identifier and a language identifier. \r\n            The function copies the formatted message text to an output buffer, processing any embedded \r\n            insert sequences if requested.\r\n            </para>\r\n            <para>\r\n            To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message.\r\n            </para>\r\n            </remarks>\r\n            <returns>\r\n            <para>\r\n            If the function succeeds, the return value is the number of TCHARs stored in the output \r\n            buffer, excluding the terminating null character.\r\n            </para>\r\n            <para>\r\n            If the function fails, the return value is zero. To get extended error information, \r\n            call <see cref=\"M:System.Runtime.InteropServices.Marshal.GetLastWin32Error\"/>.\r\n            </para>\r\n            </returns>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Number\">\r\n            <summary>\r\n            Gets the number of the native error.\r\n            </summary>\r\n            <value>\r\n            The number of the native error.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the number of the native error.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NativeError.Message\">\r\n            <summary>\r\n            Gets the message of the native error.\r\n            </summary>\r\n            <value>\r\n            The message of the native error.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            </para>\r\n            Gets the message of the native error.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullDictionaryEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance.\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullDictionaryEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullDictionaryEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullDictionaryEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullDictionaryEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Instance\">\r\n            <summary>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Key\">\r\n            <summary>\r\n            Gets the current key from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an exception because the <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/>\r\n            never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Key\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Value\">\r\n            <summary>\r\n            Gets the current value from the enumerator.\r\n            </summary>\r\n            <value>The current value from the enumerator.</value>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Value\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullDictionaryEnumerator.Entry\">\r\n            <summary>\r\n            Gets the current entry from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current entry.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Entry\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullDictionaryEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullEnumerator\">\r\n            <summary>\r\n            An always empty <see cref=\"T:System.Collections.IEnumerator\"/>.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A singleton implementation of the <see cref=\"T:System.Collections.IEnumerator\"/> over a collection\r\n            that is empty and not modifiable.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to enforce the singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.MoveNext\">\r\n            <summary>\r\n            Test if the enumerator can advance, if so advance\r\n            </summary>\r\n            <returns><c>false</c> as the <see cref=\"T:log4net.Util.NullEnumerator\"/> cannot advance.</returns>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"M:log4net.Util.NullEnumerator.MoveNext\"/>\r\n            will always return <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullEnumerator.Reset\">\r\n            <summary>\r\n            Resets the enumerator back to the start.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection <see cref=\"M:log4net.Util.NullEnumerator.Reset\"/> does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullEnumerator.s_instance\">\r\n            <summary>\r\n            The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Instance\">\r\n            <summary>\r\n            Get the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </summary>\r\n            <returns>The singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the singleton instance of the <see cref=\"T:log4net.Util.NullEnumerator\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.NullEnumerator.Current\">\r\n            <summary>\r\n            Gets the current object from the enumerator.\r\n            </summary>\r\n            <remarks>\r\n            Throws an <see cref=\"T:System.InvalidOperationException\"/> because the \r\n            <see cref=\"T:log4net.Util.NullDictionaryEnumerator\"/> never has a current value.\r\n            </remarks>\r\n            <remarks>\r\n            <para>\r\n            As the enumerator is over an empty collection its <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            value cannot be moved over a valid position, therefore <see cref=\"P:log4net.Util.NullEnumerator.Current\"/>\r\n            will throw an <see cref=\"T:System.InvalidOperationException\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.InvalidOperationException\">The collection is empty and <see cref=\"P:log4net.Util.NullEnumerator.Current\"/> \r\n            cannot be positioned over a valid location.</exception>\r\n        </member>\r\n        <member name=\"T:log4net.Util.NullSecurityContext\">\r\n            <summary>\r\n            A SecurityContext used when a SecurityContext is not required\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Util.NullSecurityContext\"/> is a no-op implementation of the\r\n            <see cref=\"T:log4net.Core.SecurityContext\"/> base class. It is used where a <see cref=\"T:log4net.Core.SecurityContext\"/>\r\n            is required but one has not been provided.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.NullSecurityContext.Instance\">\r\n            <summary>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Singleton instance of <see cref=\"T:log4net.Util.NullSecurityContext\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.#ctor\">\r\n            <summary>\r\n            Private constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Private constructor for singleton pattern.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.NullSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate this SecurityContext\r\n            </summary>\r\n            <param name=\"state\">State supplied by the caller</param>\r\n            <returns><c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            No impersonation is done and <c>null</c> is always returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.OnlyOnceErrorHandler\">\r\n            <summary>\r\n            Implements log4net's default error handling policy which consists \r\n            of emitting a message for the first error in an appender and \r\n            ignoring all subsequent errors.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The error message is processed using the LogLog sub-system.\r\n            </para>\r\n            <para>\r\n            This policy aims at protecting an otherwise working application\r\n            from being flooded with error messages when logging fails.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Ron Grabowski</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor\">\r\n            <summary>\r\n            Default Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"prefix\">The prefix to use for each message.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/> class\r\n            with the specified prefix.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Reset\">\r\n            <summary>\r\n            Reset the error handler back to its initial disabled state.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)\">\r\n            <summary>\r\n            Log an Error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <param name=\"e\">The exception.</param>\r\n            <param name=\"errorCode\">The internal error code.</param>\r\n            <remarks>\r\n            <para>\r\n            Sends the error information to <see cref=\"T:log4net.Util.LogLog\"/>'s Error method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String,System.Exception)\">\r\n            <summary>\r\n            Log an Error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <param name=\"e\">The exception.</param>\r\n            <remarks>\r\n            <para>\r\n            Prints the message and the stack trace of the exception on the standard\r\n            error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OnlyOnceErrorHandler.Error(System.String)\">\r\n            <summary>\r\n            Log an error\r\n            </summary>\r\n            <param name=\"message\">The error message.</param>\r\n            <remarks>\r\n            <para>\r\n            Print a the error message passed as parameter on the standard\r\n            error output stream.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_enabledDate\">\r\n            <summary>\r\n            The date the error was recorded.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_firstTime\">\r\n            <summary>\r\n            Flag to indicate if it is the first error\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_message\">\r\n            <summary>\r\n            The message recorded during the first error.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_exception\">\r\n            <summary>\r\n            The exception recorded during the first error.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_errorCode\">\r\n            <summary>\r\n            The error code recorded during the first error.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.m_prefix\">\r\n            <summary>\r\n            String to prefix each message with\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OnlyOnceErrorHandler.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the OnlyOnceErrorHandler class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.IsEnabled\">\r\n            <summary>\r\n            Is error logging enabled\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Is error logging enabled. Logging is only enabled for the\r\n            first error delivered to the <see cref=\"T:log4net.Util.OnlyOnceErrorHandler\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.EnabledDate\">\r\n            <summary>\r\n            The date the first error that trigged this error handler occured.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorMessage\">\r\n            <summary>\r\n            The message from the first error that trigged this error handler.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.Exception\">\r\n            <summary>\r\n            The exception from the first error that trigged this error handler.\r\n            </summary>\r\n            <remarks>\r\n            May be <see langword=\"null\" />.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.OnlyOnceErrorHandler.ErrorCode\">\r\n            <summary>\r\n            The error code from the first error that trigged this error handler.\r\n            </summary>\r\n            <remarks>\r\n            Defaults to <see cref=\"F:log4net.Core.ErrorCode.GenericFailure\"/>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.OptionConverter\">\r\n            <summary>\r\n            A convenience class to convert property values to specific types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility functions for converting types and parsing values.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.OptionConverter\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToBoolean(System.String,System.Boolean)\">\r\n            <summary>\r\n            Converts a string to a <see cref=\"T:System.Boolean\"/> value.\r\n            </summary>\r\n            <param name=\"argValue\">String to convert.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Boolean\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            If <paramref name=\"argValue\"/> is \"true\", then <c>true</c> is returned. \r\n            If <paramref name=\"argValue\"/> is \"false\", then <c>false</c> is returned. \r\n            Otherwise, <paramref name=\"defaultValue\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ToFileSize(System.String,System.Int64)\">\r\n            <summary>\r\n            Parses a file size into a number.\r\n            </summary>\r\n            <param name=\"argValue\">String to parse.</param>\r\n            <param name=\"defaultValue\">The default value.</param>\r\n            <returns>The <see cref=\"T:System.Int64\"/> value of <paramref name=\"argValue\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parses a file size of the form: number[KB|MB|GB] into a\r\n            long value. It is scaled with the appropriate multiplier.\r\n            </para>\r\n            <para>\r\n            <paramref name=\"defaultValue\"/> is returned when <paramref name=\"argValue\"/>\r\n            cannot be converted to a <see cref=\"T:System.Int64\"/> value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertStringTo(System.Type,System.String)\">\r\n            <summary>\r\n            Converts a string to an object.\r\n            </summary>\r\n            <param name=\"target\">The target type to convert to.</param>\r\n            <param name=\"txt\">The string to convert to an object.</param>\r\n            <returns>\r\n            The object converted from a string or <c>null</c> when the \r\n            conversion failed.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Converts a string to an object. Uses the converter registry to try\r\n            to convert the string value into the specified target type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.CanConvertTypeTo(System.Type,System.Type)\">\r\n            <summary>\r\n            Checks if there is an appropriate type conversion from the source type to the target type.\r\n            </summary>\r\n            <param name=\"sourceType\">The type to convert from.</param>\r\n            <param name=\"targetType\">The type to convert to.</param>\r\n            <returns><c>true</c> if there is a conversion from the source type to the target type.</returns>\r\n            <remarks>\r\n            Checks if there is an appropriate type conversion from the source type to the target type.\r\n            <para>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ConvertTypeTo(System.Object,System.Type)\">\r\n            <summary>\r\n            Converts an object to the target type.\r\n            </summary>\r\n            <param name=\"sourceInstance\">The object to convert to the target type.</param>\r\n            <param name=\"targetType\">The type to convert to.</param>\r\n            <returns>The converted object.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts an object to the target type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.InstantiateByClassName(System.String,System.Type,System.Object)\">\r\n            <summary>\r\n            Instantiates an object given a class name.\r\n            </summary>\r\n            <param name=\"className\">The fully qualified class name of the object to instantiate.</param>\r\n            <param name=\"superClass\">The class to which the new object should belong.</param>\r\n            <param name=\"defaultValue\">The object to return in case of non-fulfillment.</param>\r\n            <returns>\r\n            An instance of the <paramref name=\"className\"/> or <paramref name=\"defaultValue\"/>\r\n            if the object could not be instantiated.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Checks that the <paramref name=\"className\"/> is a subclass of\r\n            <paramref name=\"superClass\"/>. If that test fails or the object could\r\n            not be instantiated, then <paramref name=\"defaultValue\"/> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.SubstituteVariables(System.String,System.Collections.IDictionary)\">\r\n            <summary>\r\n            Performs variable substitution in string <paramref name=\"value\"/> from the \r\n            values of keys found in <paramref name=\"props\"/>.\r\n            </summary>\r\n            <param name=\"value\">The string on which variable substitution is performed.</param>\r\n            <param name=\"props\">The dictionary to use to lookup variables.</param>\r\n            <returns>The result of the substitutions.</returns>\r\n            <remarks>\r\n            <para>\r\n            The variable substitution delimiters are <b>${</b> and <b>}</b>.\r\n            </para>\r\n            <para>\r\n            For example, if props contains <c>key=value</c>, then the call\r\n            </para>\r\n            <para>\r\n            <code lang=\"C#\">\r\n            string s = OptionConverter.SubstituteVariables(\"Value of key is ${key}.\");\r\n            </code>\r\n            </para>\r\n            <para>\r\n            will set the variable <c>s</c> to \"Value of key is value.\".\r\n            </para>\r\n            <para>\r\n            If no value could be found for the specified key, then substitution \r\n            defaults to an empty string.\r\n            </para>\r\n            <para>\r\n            For example, if system properties contains no value for the key\r\n            \"nonExistentKey\", then the call\r\n            </para>\r\n            <para>\r\n            <code lang=\"C#\">\r\n            string s = OptionConverter.SubstituteVariables(\"Value of nonExistentKey is [${nonExistentKey}]\");\r\n            </code>\r\n            </para>\r\n            <para>\r\n            will set <s>s</s> to \"Value of nonExistentKey is []\".\t \r\n            </para>\r\n            <para>\r\n            An Exception is thrown if <paramref name=\"value\"/> contains a start \r\n            delimiter \"${\" which is not balanced by a stop delimiter \"}\". \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.OptionConverter.ParseEnum(System.Type,System.String,System.Boolean)\">\r\n            <summary>\r\n            Converts the string representation of the name or numeric value of one or \r\n            more enumerated constants to an equivalent enumerated object.\r\n            </summary>\r\n            <param name=\"enumType\">The type to convert to.</param>\r\n            <param name=\"value\">The enum string value.</param>\r\n            <param name=\"ignoreCase\">If <c>true</c>, ignore case; otherwise, regard case.</param>\r\n            <returns>An object of type <paramref name=\"enumType\" /> whose value is represented by <paramref name=\"value\" />.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.Util.OptionConverter.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the OptionConverter class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser\">\r\n            <summary>\r\n            Most of the work of the <see cref=\"T:log4net.Layout.PatternLayout\"/> class\r\n            is delegated to the PatternParser class.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>PatternParser</c> processes a pattern string and\r\n            returns a chain of <see cref=\"T:log4net.Util.PatternConverter\"/> objects.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.#ctor(System.String)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to parse.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PatternParser\"/> class \r\n            with the specified pattern string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.Parse\">\r\n            <summary>\r\n            Parses the pattern into a chain of pattern converters.\r\n            </summary>\r\n            <returns>The head of a chain of pattern converters.</returns>\r\n            <remarks>\r\n            <para>\r\n            Parses the pattern into a chain of pattern converters.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.BuildCache\">\r\n            <summary>\r\n            Build the unified cache of converters from the static and instance maps\r\n            </summary>\r\n            <returns>the list of all the converter names</returns>\r\n            <remarks>\r\n            <para>\r\n            Build the unified cache of converters from the static and instance maps\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ParseInternal(System.String,System.String[])\">\r\n            <summary>\r\n            Internal method to parse the specified pattern to find specified matches\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <param name=\"matches\">the converter names to match in the pattern</param>\r\n            <remarks>\r\n            <para>\r\n            The matches param must be sorted such that longer strings come before shorter ones.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessLiteral(System.String)\">\r\n            <summary>\r\n            Process a parsed literal\r\n            </summary>\r\n            <param name=\"text\">the literal text</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.ProcessConverter(System.String,System.String,log4net.Util.FormattingInfo)\">\r\n            <summary>\r\n            Process a parsed converter pattern\r\n            </summary>\r\n            <param name=\"converterName\">the name of the converter</param>\r\n            <param name=\"option\">the optional option for the converter</param>\r\n            <param name=\"formattingInfo\">the formatting info for the converter</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternParser.AddConverter(log4net.Util.PatternConverter)\">\r\n            <summary>\r\n            Resets the internal state of the parser and adds the specified pattern converter \r\n            to the chain.\r\n            </summary>\r\n            <param name=\"pc\">The pattern converter to add.</param>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_head\">\r\n            <summary>\r\n            The first pattern converter in the chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_tail\">\r\n            <summary>\r\n             the last pattern converter in the chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_pattern\">\r\n            <summary>\r\n            The pattern\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.m_patternConverters\">\r\n            <summary>\r\n            Internal map of converter identifiers to converter types\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This map overrides the static s_globalRulesRegistry map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternParser.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the PatternParser class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternParser.PatternConverters\">\r\n            <summary>\r\n            Get the converter registry used by this parser\r\n            </summary>\r\n            <value>\r\n            The converter registry used by this parser\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the converter registry used by this parser\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternParser.StringLengthComparer\">\r\n            <summary>\r\n            Sort strings by length\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"T:System.Collections.IComparer\"/> that orders strings by string length.\r\n            The longest strings are placed first\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PatternString\">\r\n            <summary>\r\n            This class implements a patterned string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This string has embedded patterns that are resolved and expanded\r\n            when the string is formatted.\r\n            </para>\r\n            <para>\r\n            This class functions similarly to the <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            in that it accepts a pattern and renders it to a string. Unlike the \r\n            <see cref=\"T:log4net.Layout.PatternLayout\"/> however the <c>PatternString</c>\r\n            does not render the properties of a specific <see cref=\"T:log4net.Core.LoggingEvent\"/> but\r\n            of the process in general.\r\n            </para>\r\n            <para>\r\n            The recognized conversion pattern names are:\r\n            </para>\r\n            <list type=\"table\">\r\n                <listheader>\r\n                    <term>Conversion Pattern Name</term>\r\n                    <description>Effect</description>\r\n                </listheader>\r\n                <item>\r\n                    <term>appdomain</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output the friendly name of the current AppDomain.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>date</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the current date and time in the local time zone. \r\n            \t\t\tTo output the date in universal time use the <c>%utcdate</c> pattern.\r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%date{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%date{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%date{ISO8601}</b> or <b>%date{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>env</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the a specific environment variable. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%env{COMPUTERNAME}</b> would include the value\r\n            \t\t\tof the <c>COMPUTERNAME</c> environment variable.\r\n                        </para>\r\n                        <para>\r\n                        The <c>env</c> pattern is not supported on the .NET Compact Framework.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>identity</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the user name for the currently active user\r\n            \t\t\t(Principal.Identity.Name).\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>newline</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tOutputs the platform dependent line separator character or\r\n            \t\t\tcharacters.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThis conversion pattern name offers the same performance as using \r\n            \t\t\tnon-portable line separator strings such as\t\"\\n\", or \"\\r\\n\". \r\n            \t\t\tThus, it is the preferred way of specifying a line separator.\r\n            \t\t\t</para> \r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>processid</term>\r\n                    <description>\r\n                        <para>\r\n            \t\t\tUsed to output the system process ID for the current process.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>property</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output a specific context property. The key to \r\n            \t\t\tlookup must be specified within braces and directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%property{user}</b> would include the value\r\n            \t\t\tfrom the property that is keyed by the string 'user'. Each property value\r\n            \t\t\tthat is to be included in the log must be specified separately.\r\n            \t\t\tProperties are stored in logging contexts. By default \r\n            \t\t\tthe <c>log4net:HostName</c> property is set to the name of machine on \r\n            \t\t\twhich the event was originally logged.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tIf no key is specified, e.g. <b>%property</b> then all the keys and their\r\n            \t\t\tvalues are printed in a comma separated list.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe properties of an event are combined from a number of different\r\n            \t\t\tcontexts. These are listed below in the order in which they are searched.\r\n            \t\t\t</para>\r\n            \t\t\t<list type=\"definition\">\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the thread properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.ThreadContext.Properties\"/> that are set on the current\r\n            \t\t\t\t\tthread. These properties are shared by all events logged on this thread.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t\t<item>\r\n            \t\t\t\t\t<term>the global properties</term>\r\n            \t\t\t\t\t<description>\r\n            \t\t\t\t\tThe <see cref=\"P:log4net.GlobalContext.Properties\"/> that are set globally. These \r\n            \t\t\t\t\tproperties are shared by all the threads in the AppDomain.\r\n            \t\t\t\t\t</description>\r\n            \t\t\t\t</item>\r\n            \t\t\t</list>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>random</term>\r\n                    <description>\r\n                        <para>\r\n                        Used to output a random string of characters. The string is made up of\r\n                        uppercase letters and numbers. By default the string is 4 characters long.\r\n                        The length of the string can be specified within braces directly following the\r\n            \t\t\tpattern specifier, e.g. <b>%random{8}</b> would output an 8 character string.\r\n                        </para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>username</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the WindowsIdentity for the currently\r\n            \t\t\tactive user.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n                <item>\r\n                    <term>utcdate</term>\r\n                    <description>\r\n            \t\t\t<para>\r\n            \t\t\tUsed to output the date of the logging event in universal time. \r\n            \t\t\tThe date conversion \r\n            \t\t\tspecifier may be followed by a <i>date format specifier</i> enclosed \r\n            \t\t\tbetween braces. For example, <b>%utcdate{HH:mm:ss,fff}</b> or\r\n            \t\t\t<b>%utcdate{dd MMM yyyy HH:mm:ss,fff}</b>.  If no date format specifier is \r\n            \t\t\tgiven then ISO8601 format is\r\n            \t\t\tassumed (<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>).\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThe date format specifier admits the same syntax as the\r\n            \t\t\ttime pattern string of the <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tFor better results it is recommended to use the log4net date\r\n            \t\t\tformatters. These can be specified using one of the strings\r\n            \t\t\t\"ABSOLUTE\", \"DATE\" and \"ISO8601\" for specifying \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.AbsoluteTimeDateFormatter\"/>, \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.DateTimeDateFormatter\"/> and respectively \r\n            \t\t\t<see cref=\"T:log4net.DateFormatter.Iso8601DateFormatter\"/>. For example, \r\n            \t\t\t<b>%utcdate{ISO8601}</b> or <b>%utcdate{ABSOLUTE}</b>.\r\n            \t\t\t</para>\r\n            \t\t\t<para>\r\n            \t\t\tThese dedicated date formatters perform significantly\r\n            \t\t\tbetter than <see cref=\"M:System.DateTime.ToString(System.String)\"/>.\r\n            \t\t\t</para>\r\n                    </description>\r\n                </item>\r\n            \t<item>\r\n            \t\t<term>%</term>\r\n            \t\t<description>\r\n            \t\t\t<para>\r\n            \t\t\tThe sequence %% outputs a single percent sign.\r\n            \t\t\t</para>\r\n            \t\t</description>\r\n            \t</item>\r\n            </list>\r\n            <para>\r\n            Additional pattern converters may be registered with a specific <see cref=\"T:log4net.Util.PatternString\"/>\r\n            instance using <see cref=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\"/> or\r\n            <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/>.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.Layout.PatternLayout\"/> for details on the \r\n            <i>format modifiers</i> supported by the patterns.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.s_globalRulesRegistry\">\r\n            <summary>\r\n            Internal map of converter identifiers to converter types.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_pattern\">\r\n            <summary>\r\n            the pattern\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_head\">\r\n            <summary>\r\n            the head of the pattern converter chain\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.PatternString.m_instanceRulesRegistry\">\r\n            <summary>\r\n            patterns defined on this PatternString only\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#cctor\">\r\n            <summary>\r\n            Initialize the global registry\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.#ctor(System.String)\">\r\n            <summary>\r\n            Constructs a PatternString\r\n            </summary>\r\n            <param name=\"pattern\">The pattern to use with this PatternString</param>\r\n            <remarks>\r\n            <para>\r\n            Initialize a new instance of <see cref=\"T:log4net.Util.PatternString\"/> with the pattern specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.ActivateOptions\">\r\n            <summary>\r\n            Initialize object options\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.PatternString.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.CreatePatternParser(System.String)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Util.PatternParser\"/> used to parse the pattern\r\n            </summary>\r\n            <param name=\"pattern\">the pattern to parse</param>\r\n            <returns>The <see cref=\"T:log4net.Util.PatternParser\"/></returns>\r\n            <remarks>\r\n            <para>\r\n            Returns PatternParser used to parse the conversion string. Subclasses\r\n            may override this to return a subclass of PatternParser which recognize\r\n            custom conversion pattern name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format(System.IO.TextWriter)\">\r\n            <summary>\r\n            Produces a formatted string as specified by the conversion pattern.\r\n            </summary>\r\n            <param name=\"writer\">The TextWriter to write the formatted event to</param>\r\n            <remarks>\r\n            <para>\r\n            Format the pattern to the <paramref name=\"writer\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.Format\">\r\n            <summary>\r\n            Format the pattern as a string\r\n            </summary>\r\n            <returns>the pattern formatted as a string</returns>\r\n            <remarks>\r\n            <para>\r\n            Format the pattern to a string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(log4net.Util.ConverterInfo)\">\r\n            <summary>\r\n            Add a converter to this PatternString\r\n            </summary>\r\n            <param name=\"converterInfo\">the converter info</param>\r\n            <remarks>\r\n            <para>\r\n            This version of the method is used by the configurator.\r\n            Programmatic users should use the alternative <see cref=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\"/> method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PatternString.AddConverter(System.String,System.Type)\">\r\n            <summary>\r\n            Add a converter to this PatternString\r\n            </summary>\r\n            <param name=\"name\">the name of the conversion pattern for this converter</param>\r\n            <param name=\"type\">the type of the converter</param>\r\n            <remarks>\r\n            <para>\r\n            Add a converter to this PatternString\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PatternString.ConversionPattern\">\r\n            <summary>\r\n            Gets or sets the pattern formatting string\r\n            </summary>\r\n            <value>\r\n            The pattern formatting string\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <b>ConversionPattern</b> option. This is the string which\r\n            controls formatting and consists of a mix of literal content and\r\n            conversion specifiers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PropertiesDictionary\">\r\n            <summary>\r\n            String keyed object map.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            While this collection is serializable only member \r\n            objects that are serializable will\r\n            be serialized along with this collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ReadOnlyPropertiesDictionary\">\r\n            <summary>\r\n            String keyed object map that is read only.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This collection is readonly and cannot be modified.\r\n            </para>\r\n            <para>\r\n            While this collection is serializable only member \r\n            objects that are serializable will\r\n            be serialized along with this collection.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ReadOnlyPropertiesDictionary.m_hashtable\">\r\n            <summary>\r\n            The Hashtable used to store the properties data\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Copy Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Deserialization constructor\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReadOnlyPropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetKeys\">\r\n            <summary>\r\n            Gets the key names.\r\n            </summary>\r\n            <returns>An array of all the keys.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the key names.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Contains(System.String)\">\r\n            <summary>\r\n            Test if the dictionary contains a specified key\r\n            </summary>\r\n            <param name=\"key\">the key to look for</param>\r\n            <returns>true if the dictionary contains the specified key</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if the dictionary contains a specified key\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> to populate with data.</param>\r\n            <param name=\"context\">The destination for this serialization.</param>\r\n            <remarks>\r\n            <para>\r\n            Serializes this object into the <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> provided.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <returns></returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.Clear\">\r\n            <summary>\r\n            Remove all properties from the properties collection\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\"></param>\r\n            <param name=\"value\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of the  property with the specified key.\r\n            </summary>\r\n            <value>\r\n            The value of the property with the specified key.\r\n            </value>\r\n            <param name=\"key\">The key of the property to get or set.</param>\r\n            <remarks>\r\n            <para>\r\n            The property value will only be serialized if it is serializable.\r\n            If it cannot be serialized it will be silently ignored if\r\n            a serialization operation is performed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.InnerHashtable\">\r\n            <summary>\r\n            The hashtable used to store the properties\r\n            </summary>\r\n            <value>\r\n            The internal collection used to store the properties\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The hashtable used to store the properties\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Item(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.Count\">\r\n            <summary>\r\n            The number of properties in this collection\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ReadOnlyPropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(log4net.Util.ReadOnlyPropertiesDictionary)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"propertiesDictionary\">properties to copy</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.PropertiesDictionary\"/> class \r\n            with serialized data.\r\n            </summary>\r\n            <param name=\"info\">The <see cref=\"T:System.Runtime.Serialization.SerializationInfo\"/> that holds the serialized object data.</param>\r\n            <param name=\"context\">The <see cref=\"T:System.Runtime.Serialization.StreamingContext\"/> that contains contextual information about the source or destination.</param>\r\n            <remarks>\r\n            <para>\r\n            Because this class is sealed the serialization constructor is private.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Remove(System.String)\">\r\n            <summary>\r\n            Remove the entry with the specified key from this dictionary\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the entry with the specified key from this dictionary\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.GetEnumerator\"/>\r\n            </summary>\r\n            <returns>an enumerator</returns>\r\n            <remarks>\r\n            <para>\r\n            Returns a <see cref=\"T:System.Collections.IDictionaryEnumerator\"/> over the contest of this collection.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Remove(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Remove(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove the entry with the specified key from this dictionary\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Contains(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Contains(System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key to lookup in the collection</param>\r\n            <returns><c>true</c> if the collection contains the specified key</returns>\r\n            <remarks>\r\n            <para>\r\n            Test if this collection contains a specified key.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.Clear\">\r\n            <summary>\r\n            Remove all properties from the properties collection\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Remove all properties from the properties collection\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Add(System.Object,System.Object)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IDictionary.Add(System.Object,System.Object)\"/>\r\n            </summary>\r\n            <param name=\"key\">the key</param>\r\n            <param name=\"value\">the value to store for the key</param>\r\n            <remarks>\r\n            <para>\r\n            Store a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#ICollection#CopyTo(System.Array,System.Int32)\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.ICollection.CopyTo(System.Array,System.Int32)\"/>\r\n            </summary>\r\n            <param name=\"array\"></param>\r\n            <param name=\"index\"></param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertiesDictionary.System#Collections#IEnumerable#GetEnumerator\">\r\n            <summary>\r\n            See <see cref=\"M:System.Collections.IEnumerable.GetEnumerator\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of the  property with the specified key.\r\n            </summary>\r\n            <value>\r\n            The value of the property with the specified key.\r\n            </value>\r\n            <param name=\"key\">The key of the property to get or set.</param>\r\n            <remarks>\r\n            <para>\r\n            The property value will only be serialized if it is serializable.\r\n            If it cannot be serialized it will be silently ignored if\r\n            a serialization operation is performed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsReadOnly\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsReadOnly\"/>\r\n            </summary>\r\n            <value>\r\n            <c>false</c>\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This collection is modifiable. This property always\r\n            returns <c>false</c>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Item(System.Object)\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Item(System.Object)\"/>\r\n            </summary>\r\n            <value>\r\n            The value for the key specified.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get or set a value for the specified <see cref=\"T:System.String\"/> <paramref name=\"key\"/>.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentException\">Thrown if the <paramref name=\"key\"/> is not a string</exception>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Values\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Values\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#Keys\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.Keys\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#IDictionary#IsFixedSize\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.IDictionary.IsFixedSize\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#IsSynchronized\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.IsSynchronized\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertiesDictionary.System#Collections#ICollection#SyncRoot\">\r\n            <summary>\r\n            See <see cref=\"P:System.Collections.ICollection.SyncRoot\"/>\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.PropertyEntry\">\r\n            <summary>\r\n            A class to hold the key and data for a property set in the config file\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A class to hold the key and data for a property set in the config file\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.PropertyEntry.ToString\">\r\n            <summary>\r\n            Override <c>Object.ToString</c> to return sensible debug info\r\n            </summary>\r\n            <returns>string info about this object</returns>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Key\">\r\n            <summary>\r\n            Property Key\r\n            </summary>\r\n            <value>\r\n            Property Key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Property Key.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.PropertyEntry.Value\">\r\n            <summary>\r\n            Property Value\r\n            </summary>\r\n            <value>\r\n            Property Value\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Property Value.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ProtectCloseTextWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.TextWriter\"/> that ignores the <see cref=\"M:log4net.Util.ProtectCloseTextWriter.Close\"/> message\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This writer is used in special cases where it is necessary \r\n            to protect a writer from being closed by a client.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.#ctor(System.IO.TextWriter)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"writer\">the writer to actually write to</param>\r\n            <remarks>\r\n            <para>\r\n            Create a new ProtectCloseTextWriter using a writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Attach(System.IO.TextWriter)\">\r\n            <summary>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to attach to</param>\r\n            <remarks>\r\n            <para>\r\n            Attach this instance to a different underlying <see cref=\"T:System.IO.TextWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ProtectCloseTextWriter.Close\">\r\n            <summary>\r\n            Does not close the underlying output writer.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Does not close the underlying output writer.\r\n            This method does nothing.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ReaderWriterLock\">\r\n            <summary>\r\n            Defines a lock that supports single writers and multiple readers\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <c>ReaderWriterLock</c> is used to synchronize access to a resource. \r\n            At any given time, it allows either concurrent read access for \r\n            multiple threads, or write access for a single thread. In a \r\n            situation where a resource is changed infrequently, a \r\n            <c>ReaderWriterLock</c> provides better throughput than a simple \r\n            one-at-a-time lock, such as <see cref=\"T:System.Threading.Monitor\"/>.\r\n            </para>\r\n            <para>\r\n            If a platform does not support a <c>System.Threading.ReaderWriterLock</c> \r\n            implementation then all readers and writers are serialized. Therefore \r\n            the caller must not rely on multiple simultaneous readers.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.#ctor\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ReaderWriterLock\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\">\r\n            <summary>\r\n            Acquires a reader lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.AcquireReaderLock\"/> blocks if a different thread has the writer \r\n            lock, or if at least one thread is waiting for the writer lock.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\">\r\n            <summary>\r\n            Decrements the lock count\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <see cref=\"M:log4net.Util.ReaderWriterLock.ReleaseReaderLock\"/> decrements the lock count. When the count \r\n            reaches zero, the lock is released.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.AcquireWriterLock\">\r\n            <summary>\r\n            Acquires the writer lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This method blocks if another thread has a reader lock or writer lock.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReaderWriterLock.ReleaseWriterLock\">\r\n            <summary>\r\n            Decrements the lock count on the writer lock\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            ReleaseWriterLock decrements the writer lock count. \r\n            When the count reaches zero, the writer lock is released.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ReusableStringWriter\">\r\n            <summary>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            A <see cref=\"T:System.IO.StringWriter\"/> that can be <see cref=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\"/> and reused.\r\n            This uses a single buffer for string operations.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.#ctor(System.IFormatProvider)\">\r\n            <summary>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </summary>\r\n            <param name=\"formatProvider\">the format provider to use</param>\r\n            <remarks>\r\n            <para>\r\n            Create an instance of <see cref=\"T:log4net.Util.ReusableStringWriter\"/>\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Dispose(System.Boolean)\">\r\n            <summary>\r\n            Override Dispose to prevent closing of writer\r\n            </summary>\r\n            <param name=\"disposing\">flag</param>\r\n            <remarks>\r\n            <para>\r\n            Override Dispose to prevent closing of writer\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ReusableStringWriter.Reset(System.Int32,System.Int32)\">\r\n            <summary>\r\n            Reset this string writer so that it can be reused.\r\n            </summary>\r\n            <param name=\"maxCapacity\">the maximum buffer capacity before it is trimmed</param>\r\n            <param name=\"defaultSize\">the default size to make the buffer</param>\r\n            <remarks>\r\n            <para>\r\n            Reset this string writer so that it can be reused.\r\n            The internal buffers are cleared and reset.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.SystemInfo\">\r\n            <summary>\r\n            Utility class for system specific information.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility class of static methods for system specific information.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n            <author>Alexey Solofnenko</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#ctor\">\r\n            <summary>\r\n            Private constructor to prevent instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Only static methods are exposed from this type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.#cctor\">\r\n            <summary>\r\n            Initialize default values for private static fields.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Only static methods are exposed from this type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyLocationInfo(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the assembly location path for the specified assembly.\r\n            </summary>\r\n            <param name=\"myAssembly\">The assembly to get the location for.</param>\r\n            <returns>The location of the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            This method does not guarantee to return the correct path\r\n            to the assembly. If only tries to give an indication as to\r\n            where the assembly was loaded from.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyQualifiedName(System.Type)\">\r\n            <summary>\r\n            Gets the fully qualified name of the <see cref=\"T:System.Type\"/>, including \r\n            the name of the assembly from which the <see cref=\"T:System.Type\"/> was \r\n            loaded.\r\n            </summary>\r\n            <param name=\"type\">The <see cref=\"T:System.Type\"/> to get the fully qualified name for.</param>\r\n            <returns>The fully qualified name for the <see cref=\"T:System.Type\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            This is equivalent to the <c>Type.AssemblyQualifiedName</c> property,\r\n            but this method works on the .NET Compact Framework 1.0 as well as\r\n            the full .NET runtime.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyShortName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the short name of the <see cref=\"T:System.Reflection.Assembly\"/>.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the name for.</param>\r\n            <returns>The short name of the <see cref=\"T:System.Reflection.Assembly\"/>.</returns>\r\n            <remarks>\r\n            <para>\r\n            The short name of the assembly is the <see cref=\"P:System.Reflection.Assembly.FullName\"/> \r\n            without the version, culture, or public key. i.e. it is just the \r\n            assembly's file name without the extension.\r\n            </para>\r\n            <para>\r\n            Use this rather than <c>Assembly.GetName().Name</c> because that\r\n            is not available on the Compact Framework.\r\n            </para>\r\n            <para>\r\n            Because of a FileIOPermission security demand we cannot do\r\n            the obvious Assembly.GetName().Name. We are allowed to get\r\n            the <see cref=\"P:System.Reflection.Assembly.FullName\"/> of the assembly so we \r\n            start from there and strip out just the assembly name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.AssemblyFileName(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </summary>\r\n            <param name=\"myAssembly\">The <see cref=\"T:System.Reflection.Assembly\"/> to get the file name for.</param>\r\n            <returns>The file name of the assembly.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the file name portion of the <see cref=\"T:System.Reflection.Assembly\"/>, including the extension.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Type,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeType\">A sibling type to use to load the type.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified, it will be loaded from the assembly\r\n            containing the specified relative type. If the type is not found in the assembly \r\n            then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\t\t\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the\r\n            assembly that is directly calling this method. If the type is not found \r\n            in the assembly then all the loaded assemblies will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetTypeFromString(System.Reflection.Assembly,System.String,System.Boolean,System.Boolean)\">\r\n            <summary>\r\n            Loads the type specified in the type string.\r\n            </summary>\r\n            <param name=\"relativeAssembly\">An assembly to load the type from.</param>\r\n            <param name=\"typeName\">The name of the type to load.</param>\r\n            <param name=\"throwOnError\">Flag set to <c>true</c> to throw an exception if the type cannot be loaded.</param>\r\n            <param name=\"ignoreCase\"><c>true</c> to ignore the case of the type name; otherwise, <c>false</c></param>\r\n            <returns>The type loaded or <c>null</c> if it could not be loaded.</returns>\r\n            <remarks>\r\n            <para>\r\n            If the type name is fully qualified, i.e. if contains an assembly name in \r\n            the type name, the type will be loaded from the system using \r\n            <see cref=\"M:System.Type.GetType(System.String,System.Boolean)\"/>.\r\n            </para>\r\n            <para>\r\n            If the type name is not fully qualified it will be loaded from the specified\r\n            assembly. If the type is not found in the assembly then all the loaded assemblies \r\n            will be searched for the type.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.NewGuid\">\r\n            <summary>\r\n            Generate a new guid\r\n            </summary>\r\n            <returns>A new Guid</returns>\r\n            <remarks>\r\n            <para>\r\n            Generate a new guid\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateArgumentOutOfRangeException(System.String,System.Object,System.String)\">\r\n            <summary>\r\n            Create an <see cref=\"T:System.ArgumentOutOfRangeException\"/>\r\n            </summary>\r\n            <param name=\"parameterName\">The name of the parameter that caused the exception</param>\r\n            <param name=\"actualValue\">The value of the argument that causes this exception</param>\r\n            <param name=\"message\">The message that describes the error</param>\r\n            <returns>the ArgumentOutOfRangeException object</returns>\r\n            <remarks>\r\n            <para>\r\n            Create a new instance of the <see cref=\"T:System.ArgumentOutOfRangeException\"/> class \r\n            with a specified error message, the parameter name, and the value \r\n            of the argument.\r\n            </para>\r\n            <para>\r\n            The Compact Framework does not support the 3 parameter constructor for the\r\n            <see cref=\"T:System.ArgumentOutOfRangeException\"/> type. This method provides an\r\n            implementation that works for all platforms.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int32@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int32\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int64@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int64\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.TryParse(System.String,System.Int16@)\">\r\n            <summary>\r\n            Parse a string into an <see cref=\"T:System.Int16\"/> value\r\n            </summary>\r\n            <param name=\"s\">the string to parse</param>\r\n            <param name=\"val\">out param where the parsed value is placed</param>\r\n            <returns><c>true</c> if the string was able to be parsed into an integer</returns>\r\n            <remarks>\r\n            <para>\r\n            Attempts to parse the string into an integer. If the string cannot\r\n            be parsed then this method returns <c>false</c>. The method does not throw an exception.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.GetAppSetting(System.String)\">\r\n            <summary>\r\n            Lookup an application setting\r\n            </summary>\r\n            <param name=\"key\">the application settings key to lookup</param>\r\n            <returns>the value for the key, or <c>null</c></returns>\r\n            <remarks>\r\n            <para>\r\n            Configuration APIs are not supported under the Compact Framework\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.ConvertToFullPath(System.String)\">\r\n            <summary>\r\n            Convert a path into a fully qualified local file path.\r\n            </summary>\r\n            <param name=\"path\">The path to convert.</param>\r\n            <returns>The fully qualified path.</returns>\r\n            <remarks>\r\n            <para>\r\n            Converts the path specified to a fully\r\n            qualified path. If the path is relative it is\r\n            taken as relative from the application base \r\n            directory.\r\n            </para>\r\n            <para>\r\n            The path specified must be a local file path, a URI is not supported.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemInfo.CreateCaseInsensitiveHashtable\">\r\n            <summary>\r\n            Creates a new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity. \r\n            </summary>\r\n            <returns>A new case-insensitive instance of the <see cref=\"T:System.Collections.Hashtable\"/> class with the default initial capacity</returns>\r\n            <remarks>\r\n            <para>\r\n            The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.EmptyTypes\">\r\n            <summary>\r\n            Gets an empty array of types.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>Type.EmptyTypes</c> field is not available on\r\n            the .NET Compact Framework 1.0.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the SystemInfo class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_hostName\">\r\n            <summary>\r\n            Cache the host name for the current machine\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_appFriendlyName\">\r\n            <summary>\r\n            Cache the application friendly name\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_nullText\">\r\n            <summary>\r\n            Text to output when a <c>null</c> is encountered.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_notAvailableText\">\r\n            <summary>\r\n            Text to output when an unsupported feature is requested.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemInfo.s_processStartTime\">\r\n            <summary>\r\n            Start time for the current process.\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NewLine\">\r\n            <summary>\r\n            Gets the system dependent line terminator.\r\n            </summary>\r\n            <value>\r\n            The system dependent line terminator.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the system dependent line terminator.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationBaseDirectory\">\r\n            <summary>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The base directory path for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the base directory for this <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ConfigurationFileLocation\">\r\n            <summary>\r\n            Gets the path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the configuration file for the current <see cref=\"T:System.AppDomain\"/>.</value>\r\n            <remarks>\r\n            <para>\r\n            The .NET Compact Framework 1.0 does not have a concept of a configuration\r\n            file. For this runtime, we use the entry assembly location as the root for\r\n            the configuration file name.\r\n            </para>\r\n            <para>\r\n            The value returned may be either a local file path or a URI.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.EntryAssemblyLocation\">\r\n            <summary>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </summary>\r\n            <value>The path to the entry assembly.</value>\r\n            <remarks>\r\n            <para>\r\n            Gets the path to the file that first executed in the current <see cref=\"T:System.AppDomain\"/>.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.CurrentThreadId\">\r\n            <summary>\r\n            Gets the ID of the current thread.\r\n            </summary>\r\n            <value>The ID of the current thread.</value>\r\n            <remarks>\r\n            <para>\r\n            On the .NET framework, the <c>AppDomain.GetCurrentThreadId</c> method\r\n            is used to obtain the thread ID for the current thread. This is the \r\n            operating system ID for the thread.\r\n            </para>\r\n            <para>\r\n            On the .NET Compact Framework 1.0 it is not possible to get the \r\n            operating system thread ID for the current thread. The native method \r\n            <c>GetCurrentThreadId</c> is implemented inline in a header file\r\n            and cannot be called.\r\n            </para>\r\n            <para>\r\n            On the .NET Framework 2.0 the <c>Thread.ManagedThreadId</c> is used as this\r\n            gives a stable id unrelated to the operating system thread ID which may \r\n            change if the runtime is using fibers.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.HostName\">\r\n            <summary>\r\n            Get the host name or machine name for the current machine\r\n            </summary>\r\n            <value>\r\n            The hostname or machine name\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Get the host name or machine name for the current machine\r\n            </para>\r\n            <para>\r\n            The host name (<see cref=\"M:System.Net.Dns.GetHostName\"/>) or\r\n            the machine name (<c>Environment.MachineName</c>) for\r\n            the current machine, or if neither of these are available\r\n            then <c>NOT AVAILABLE</c> is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ApplicationFriendlyName\">\r\n            <summary>\r\n            Get this application's friendly name\r\n            </summary>\r\n            <value>\r\n            The friendly name of this application as a string\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            If available the name of the application is retrieved from\r\n            the <c>AppDomain</c> using <c>AppDomain.CurrentDomain.FriendlyName</c>.\r\n            </para>\r\n            <para>\r\n            Otherwise the file name of the entry assembly is used.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.ProcessStartTime\">\r\n            <summary>\r\n            Get the start time for the current process.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is the time at which the log4net library was loaded into the\r\n            AppDomain. Due to reports of a hang in the call to <c>System.Diagnostics.Process.StartTime</c>\r\n            this is not the start time for the current process.\r\n            </para>\r\n            <para>\r\n            The log4net library should be loaded by an application early during its\r\n            startup, therefore this start time should be a good approximation for\r\n            the actual start time.\r\n            </para>\r\n            <para>\r\n            Note that AppDomains may be loaded and unloaded within the\r\n            same process without the process terminating, however this start time\r\n            will be set per AppDomain.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NullText\">\r\n            <summary>\r\n            Text to output when a <c>null</c> is encountered.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use this value to indicate a <c>null</c> has been encountered while\r\n            outputting a string representation of an item.\r\n            </para>\r\n            <para>\r\n            The default value is <c>(null)</c>. This value can be overridden by specifying\r\n            a value for the <c>log4net.NullText</c> appSetting in the application's\r\n            .config file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.SystemInfo.NotAvailableText\">\r\n            <summary>\r\n            Text to output when an unsupported feature is requested.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Use this value when an unsupported feature is requested.\r\n            </para>\r\n            <para>\r\n            The default value is <c>NOT AVAILABLE</c>. This value can be overridden by specifying\r\n            a value for the <c>log4net.NotAvailableText</c> appSetting in the application's\r\n            .config file.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.SystemStringFormat\">\r\n            <summary>\r\n            Utility class that represents a format string.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility class that represents a format string.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.#ctor(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Initialise the <see cref=\"T:log4net.Util.SystemStringFormat\"/>\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.ToString\">\r\n            <summary>\r\n            Format the string and arguments\r\n            </summary>\r\n            <returns>the formatted string</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormat(System.IFormatProvider,System.String,System.Object[])\">\r\n            <summary>\r\n            Replaces the format item in a specified <see cref=\"T:System.String\"/> with the text equivalent \r\n            of the value of a corresponding <see cref=\"T:System.Object\"/> instance in a specified array.\r\n            A specified parameter supplies culture-specific formatting information.\r\n            </summary>\r\n            <param name=\"provider\">An <see cref=\"T:System.IFormatProvider\"/> that supplies culture-specific formatting information.</param>\r\n            <param name=\"format\">A <see cref=\"T:System.String\"/> containing zero or more format items.</param>\r\n            <param name=\"args\">An <see cref=\"T:System.Object\"/> array containing zero or more objects to format.</param>\r\n            <returns>\r\n            A copy of format in which the format items have been replaced by the <see cref=\"T:System.String\"/> \r\n            equivalent of the corresponding instances of <see cref=\"T:System.Object\"/> in args.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            This method does not throw exceptions. If an exception thrown while formatting the result the\r\n            exception and arguments are returned in the result string.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.StringFormatError(System.Exception,System.String,System.Object[])\">\r\n            <summary>\r\n            Process an error during StringFormat\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderArray(System.Array,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Dump the contents of an array into a string builder\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.SystemStringFormat.RenderObject(System.Object,System.Text.StringBuilder)\">\r\n            <summary>\r\n            Dump an object to a string\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.SystemStringFormat.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the SystemStringFormat class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextProperties\">\r\n            <summary>\r\n            Implementation of Properties collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Class implements a collection of properties that is specific to each thread.\r\n            The class is not synchronized as each thread has its own <see cref=\"T:log4net.Util.PropertiesDictionary\"/>.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextProperties.s_threadLocalSlot\">\r\n            <summary>\r\n            The thread local data slot to use to store a PropertiesDictionary.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextProperties\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Remove(System.String)\">\r\n            <summary>\r\n            Remove a property\r\n            </summary>\r\n            <param name=\"key\">the key for the entry to remove</param>\r\n            <remarks>\r\n            <para>\r\n            Remove a property\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.Clear\">\r\n            <summary>\r\n            Clear all properties\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clear all properties\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextProperties.GetProperties(System.Boolean)\">\r\n            <summary>\r\n            Get the <c>PropertiesDictionary</c> for this thread.\r\n            </summary>\r\n            <param name=\"create\">create the dictionary if it does not exist, otherwise return null if is does not exist</param>\r\n            <returns>the properties for this thread</returns>\r\n            <remarks>\r\n            <para>\r\n            The collection returned is only to be used on the calling thread. If the\r\n            caller needs to share the collection between different threads then the \r\n            caller must clone the collection before doing so.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextProperties.Item(System.String)\">\r\n            <summary>\r\n            Gets or sets the value of a property\r\n            </summary>\r\n            <value>\r\n            The value for the property with the specified key\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets or sets the value of a property\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack\">\r\n            <summary>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stack for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.m_stack\">\r\n            <summary>\r\n            The stack store.\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.#ctor\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack\"/> class. \r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held in this stack.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Clears all the contextual information held in this stack.\r\n            Only call this if you think that this tread is being reused after\r\n            a previous call execution which may not have completed correctly.\r\n            You do not need to use this method if you always guarantee to call\r\n            the <see cref=\"M:System.IDisposable.Dispose\"/> method of the <see cref=\"T:System.IDisposable\"/>\r\n            returned from <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> even in exceptional circumstances,\r\n            for example by using the <c>using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))</c> \r\n            syntax.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Pop\">\r\n            <summary>\r\n            Removes the top context from this stack.\r\n            </summary>\r\n            <returns>The message in the context that was removed from the top of this stack.</returns>\r\n            <remarks>\r\n            <para>\r\n            Remove the top context from this stack, and return\r\n            it to the caller. If this stack is empty then an\r\n            empty string (not <see langword=\"null\"/>) is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message into this stack.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Pushes a new context onto this stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up this stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.ThreadContext.Stacks[\"NDC\"].Push(\"Stack_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an ThreadContext Stack message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.GetFullMessage\">\r\n            <summary>\r\n            Gets the current context information for this stack.\r\n            </summary>\r\n            <returns>The current context information.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.ToString\">\r\n            <summary>\r\n            Gets the current context information for this stack.\r\n            </summary>\r\n            <returns>Gets the current context information</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the current context information for this stack.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.log4net#Core#IFixingRequired#GetFixedObject\">\r\n            <summary>\r\n            Get a portable version of this object\r\n            </summary>\r\n            <returns>the portable instance of this object</returns>\r\n            <remarks>\r\n            <para>\r\n            Get a cross thread portable version of this object\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.Count\">\r\n            <summary>\r\n            The number of messages in the stack\r\n            </summary>\r\n            <value>\r\n            The current number of messages in the stack\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The current number of messages in the stack. That is\r\n            the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> has been called\r\n            minus the number of times <see cref=\"M:log4net.Util.ThreadContextStack.Pop\"/> has been called.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.InternalStack\">\r\n            <summary>\r\n            Gets and sets the internal stack used by this <see cref=\"T:log4net.Util.ThreadContextStack\"/>\r\n            </summary>\r\n            <value>The internal storage stack</value>\r\n            <remarks>\r\n            <para>\r\n            This property is provided only to support backward compatability \r\n            of the <see cref=\"T:log4net.NDC\"/>. Tytpically the internal stack should not\r\n            be modified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.StackFrame\">\r\n            <summary>\r\n            Inner class used to represent a single context frame in the stack.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Inner class used to represent a single context frame in the stack.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.StackFrame.#ctor(System.String,log4net.Util.ThreadContextStack.StackFrame)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"message\">The message for this context.</param>\r\n            <param name=\"parent\">The parent context in the chain.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.StackFrame\"/> class\r\n            with the specified message and parent context.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.Message\">\r\n            <summary>\r\n            Get the message.\r\n            </summary>\r\n            <value>The message.</value>\r\n            <remarks>\r\n            <para>\r\n            Get the message.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStack.StackFrame.FullMessage\">\r\n            <summary>\r\n            Gets the full text of the context down to the root level.\r\n            </summary>\r\n            <value>\r\n            The full text of the context down to the root level.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the full text of the context down to the root level.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\">\r\n            <summary>\r\n            Struct returned from the <see cref=\"M:log4net.Util.ThreadContextStack.Push(System.String)\"/> method.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This struct implements the <see cref=\"T:System.IDisposable\"/> and is designed to be used\r\n            with the <see langword=\"using\"/> pattern to remove the stack frame at the end of the scope.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameStack\">\r\n            <summary>\r\n            The ThreadContextStack internal stack\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStack.AutoPopStackFrame.m_frameDepth\">\r\n            <summary>\r\n            The depth to trim the stack to when this instance is disposed\r\n            </summary>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.#ctor(System.Collections.Stack,System.Int32)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"frameStack\">The internal stack used by the ThreadContextStack.</param>\r\n            <param name=\"frameDepth\">The depth to return the stack to when this object is disposed.</param>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStack.AutoPopStackFrame\"/> class with\r\n            the specified stack and return depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStack.AutoPopStackFrame.Dispose\">\r\n            <summary>\r\n            Returns the stack to the correct depth.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Returns the stack to the correct depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.ThreadContextStacks\">\r\n            <summary>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Implementation of Stacks collection for the <see cref=\"T:log4net.ThreadContext\"/>\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.ThreadContextStacks.#ctor(log4net.Util.ContextPropertiesBase)\">\r\n            <summary>\r\n            Internal constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.ThreadContextStacks\"/> class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.ThreadContextStacks.declaringType\">\r\n            <summary>\r\n            The fully qualified type of the ThreadContextStacks class.\r\n            </summary>\r\n            <remarks>\r\n            Used by the internal logger to record the Type of the\r\n            log message.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.ThreadContextStacks.Item(System.String)\">\r\n            <summary>\r\n            Gets the named thread context stack\r\n            </summary>\r\n            <value>\r\n            The named stack\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Gets the named thread context stack\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.Transform\">\r\n            <summary>\r\n            Utility class for transforming strings.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Utility class for transforming strings.\r\n            </para>\r\n            </remarks>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.Util.Transform\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.WriteEscapedXmlString(System.Xml.XmlWriter,System.String,System.String)\">\r\n            <summary>\r\n            Write a string to an <see cref=\"T:System.Xml.XmlWriter\"/>\r\n            </summary>\r\n            <param name=\"writer\">the writer to write to</param>\r\n            <param name=\"textData\">the string to write</param>\r\n            <param name=\"invalidCharReplacement\">The string to replace non XML compliant chars with</param>\r\n            <remarks>\r\n            <para>\r\n            The test is escaped either using XML escape entities\r\n            or using CDATA sections.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.MaskXmlInvalidCharacters(System.String,System.String)\">\r\n            <summary>\r\n            Replace invalid XML characters in text string\r\n            </summary>\r\n            <param name=\"textData\">the XML text input string</param>\r\n            <param name=\"mask\">the string to use in place of invalid characters</param>\r\n            <returns>A string that does not contain invalid XML characters.</returns>\r\n            <remarks>\r\n            <para>\r\n            Certain Unicode code points are not allowed in the XML InfoSet, for\r\n            details see: <a href=\"http://www.w3.org/TR/REC-xml/#charsets\">http://www.w3.org/TR/REC-xml/#charsets</a>.\r\n            </para>\r\n            <para>\r\n            This method replaces any illegal characters in the input string\r\n            with the mask string specified.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.Transform.CountSubstrings(System.String,System.String)\">\r\n            <summary>\r\n            Count the number of times that the substring occurs in the text\r\n            </summary>\r\n            <param name=\"text\">the text to search</param>\r\n            <param name=\"substring\">the substring to find</param>\r\n            <returns>the number of times the substring occurs in the text</returns>\r\n            <remarks>\r\n            <para>\r\n            The substring is assumed to be non repeating within itself.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.Transform.INVALIDCHARS\">\r\n            <summary>\r\n            Characters illegal in XML 1.0\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext\">\r\n            <summary>\r\n            Impersonate a Windows Account\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This <see cref=\"T:log4net.Core.SecurityContext\"/> impersonates a Windows account.\r\n            </para>\r\n            <para>\r\n            How the impersonation is done depends on the value of <see cref=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\"/>.\r\n            This allows the context to either impersonate a set of user credentials specified \r\n            using username, domain name and password or to revert to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.#ctor\">\r\n            <summary>\r\n            Default constructor\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Default constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\">\r\n            <summary>\r\n            Initialize the SecurityContext based on the options set.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This is part of the <see cref=\"T:log4net.Core.IOptionHandler\"/> delayed object\r\n            activation scheme. The <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> method must \r\n            be called on this object after the configuration properties have\r\n            been set. Until <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> is called this\r\n            object is in an undefined state and must not be used. \r\n            </para>\r\n            <para>\r\n            If any of the configuration properties are modified then \r\n            <see cref=\"M:log4net.Util.WindowsSecurityContext.ActivateOptions\"/> must be called again.\r\n            </para>\r\n            <para>\r\n            The security context will try to Logon the specified user account and\r\n            capture a primary token for impersonation.\r\n            </para>\r\n            </remarks>\r\n            <exception cref=\"T:System.ArgumentNullException\">The required <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, \r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> or <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/> properties were not specified.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.Impersonate(System.Object)\">\r\n            <summary>\r\n            Impersonate the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <param name=\"state\">caller provided state</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> instance that will revoke the impersonation of this SecurityContext\r\n            </returns>\r\n            <remarks>\r\n            <para>\r\n            Depending on the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property either\r\n            impersonate a user using credentials supplied or revert \r\n            to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.LogonUser(System.String,System.String,System.String)\">\r\n            <summary>\r\n            Create a <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> given the userName, domainName and password.\r\n            </summary>\r\n            <param name=\"userName\">the user name</param>\r\n            <param name=\"domainName\">the domain name</param>\r\n            <param name=\"password\">the password</param>\r\n            <returns>the <see cref=\"T:System.Security.Principal.WindowsIdentity\"/> for the account specified</returns>\r\n            <remarks>\r\n            <para>\r\n            Uses the Windows API call LogonUser to get a principal token for the account. This\r\n            token is used to initialize the WindowsIdentity.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Credentials\">\r\n            <summary>\r\n            Gets or sets the impersonation mode for this security context\r\n            </summary>\r\n            <value>\r\n            The impersonation mode for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            Impersonate either a user with user credentials or\r\n            revert this thread to the credentials of the process.\r\n            The value is one of the <see cref=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\"/>\r\n            enum.\r\n            </para>\r\n            <para>\r\n            The default value is <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/>\r\n            the user's credentials are established using the\r\n            <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/>, <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.Password\"/>\r\n            values.\r\n            </para>\r\n            <para>\r\n            When the mode is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\"/>\r\n            no other properties need to be set. If the calling thread is \r\n            impersonating then it will be reverted back to the process credentials.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.UserName\">\r\n            <summary>\r\n            Gets or sets the Windows username for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows username for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.DomainName\">\r\n            <summary>\r\n            Gets or sets the Windows domain name for this security context\r\n            </summary>\r\n            <value>\r\n            The Windows domain name for this security context\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The default value for <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> is the local machine name\r\n            taken from the <see cref=\"P:System.Environment.MachineName\"/> property.\r\n            </para>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.Util.WindowsSecurityContext.Password\">\r\n            <summary>\r\n            Sets the password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </summary>\r\n            <value>\r\n            The password for the Windows account specified by the <see cref=\"P:log4net.Util.WindowsSecurityContext.UserName\"/> and <see cref=\"P:log4net.Util.WindowsSecurityContext.DomainName\"/> properties.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            This property must be set if <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/>\r\n            is set to <see cref=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\"/> (the default setting).\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.ImpersonationMode\">\r\n            <summary>\r\n            The impersonation modes for the <see cref=\"T:log4net.Util.WindowsSecurityContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            See the <see cref=\"P:log4net.Util.WindowsSecurityContext.Credentials\"/> property for\r\n            details.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.User\">\r\n            <summary>\r\n            Impersonate a user using the credentials supplied\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.Util.WindowsSecurityContext.ImpersonationMode.Process\">\r\n            <summary>\r\n            Revert this the thread to the credentials of the process\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext\">\r\n            <summary>\r\n            Adds <see cref=\"T:System.IDisposable\"/> to <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Helper class to expose the <see cref=\"T:System.Security.Principal.WindowsImpersonationContext\"/>\r\n            through the <see cref=\"T:System.IDisposable\"/> interface.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.#ctor(System.Security.Principal.WindowsImpersonationContext)\">\r\n            <summary>\r\n            Constructor\r\n            </summary>\r\n            <param name=\"impersonationContext\">the impersonation context being wrapped</param>\r\n            <remarks>\r\n            <para>\r\n            Constructor\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.Util.WindowsSecurityContext.DisposableImpersonationContext.Dispose\">\r\n            <summary>\r\n            Revert the impersonation\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Revert the impersonation\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.GlobalContext\">\r\n            <summary>\r\n            The log4net Global Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>GlobalContext</c> provides a location for global debugging \r\n            information to be stored.\r\n            </para>\r\n            <para>\r\n            The global context has a properties map and these properties can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputing these properties.\r\n            </para>\r\n            <para>\r\n            By default the <c>log4net:HostName</c> property is set to the name of \r\n            the current machine.\r\n            </para>\r\n            </remarks>\r\n            <example>\r\n            <code lang=\"C#\">\r\n            GlobalContext.Properties[\"hostname\"] = Environment.MachineName;\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.GlobalContext.#ctor\">\r\n            <summary>\r\n            Private Constructor. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.GlobalContext.s_properties\">\r\n            <summary>\r\n            The global context properties instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.GlobalContext.Properties\">\r\n            <summary>\r\n            The global properties map.\r\n            </summary>\r\n            <value>\r\n            The global properties map.\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The global properties map.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.AssemblyInfo\">\r\n            <summary>\r\n            Provides information about the environment the assembly has\r\n            been built for.\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.Version\">\r\n            <summary>Version of the assembly</summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFrameworkVersion\">\r\n            <summary>Version of the framework targeted</summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.TargetFramework\">\r\n            <summary>Type of framework targeted</summary>\r\n        </member>\r\n        <member name=\"F:log4net.AssemblyInfo.ClientProfile\">\r\n            <summary>Does it target a client profile?</summary>\r\n        </member>\r\n        <member name=\"P:log4net.AssemblyInfo.Info\">\r\n            <summary>\r\n            Identifies the version and target for this assembly.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.LogicalThreadContext\">\r\n            <summary>\r\n            The log4net Logical Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> provides a location for <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> specific debugging \r\n            information to be stored.\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> or <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context provides a diagnostic context for the current call context. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Logical Thread Context is managed on a per <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> basis.\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:System.Runtime.Remoting.Messaging.CallContext\"/> requires a link time \r\n            <see cref=\"T:System.Security.Permissions.SecurityPermission\"/> for the\r\n            <see cref=\"F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure\"/>.\r\n            If the calling code does not have this permission then this context will be disabled.\r\n            It will not store any property values set on it.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            LogicalThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a LogicalThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(LogicalThreadContext.Stacks[\"LDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a LogicalThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogicalThreadContext.#ctor\">\r\n            <summary>\r\n            Private Constructor. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_properties\">\r\n            <summary>\r\n            The thread context properties instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.LogicalThreadContext.s_stacks\">\r\n            <summary>\r\n            The thread context stacks instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>LogicalThreadContext</c> properties override any <see cref=\"T:log4net.ThreadContext\"/> \r\n            or <see cref=\"T:log4net.GlobalContext\"/> properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.LogicalThreadContext.Stacks\">\r\n            <summary>\r\n            The thread stacks\r\n            </summary>\r\n            <value>\r\n            stack map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The logical thread stacks.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.LogManager\">\r\n            <summary>\r\n            This class is used by client applications to request logger instances.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            This class has static methods that are used by a client to request\r\n            a logger instance. The <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/> method is \r\n            used to retrieve a logger.\r\n            </para>\r\n            <para>\r\n            See the <see cref=\"T:log4net.ILog\"/> interface for more details.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of logging messages\r\n            <code lang=\"C#\">\r\n            ILog log = LogManager.GetLogger(\"application-log\");\r\n            \r\n            log.Info(\"Application Start\");\r\n            log.Debug(\"This is a debug message\");\r\n            \r\n            if (log.IsDebugEnabled)\r\n            {\r\n            \tlog.Debug(\"This is another debug message\");\r\n            }\r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <seealso cref=\"T:log4net.ILog\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.LogManager\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String)\">\r\n            <overloads>Returns the named logger if it exists.</overloads>\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the default repository) then it\r\n            returns a reference to the logger, otherwise it returns <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>The logger found, or <c>null</c> if no logger could be found.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.String,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the specified repository) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger found, or <c>null</c> if the logger doesn't exist in the specified \r\n            repository.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Exists(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Returns the named logger if it exists.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            If the named logger exists (in the repository for the specified assembly) then it\r\n            returns a reference to the logger, otherwise it returns\r\n            <c>null</c>.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The fully qualified logger name to look for.</param>\r\n            <returns>\r\n            The logger, or <c>null</c> if the logger doesn't exist in the specified\r\n            assembly's repository.\r\n            </returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers\">\r\n            <overloads>Get the currently defined loggers.</overloads>\r\n            <summary>\r\n            Returns all the currently defined loggers in the default repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>The root logger is <b>not</b> included in the returned array.</para>\r\n            </remarks>\r\n            <returns>All the defined loggers.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.String)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified repository.\r\n            </summary>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <remarks>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </remarks>\r\n            <returns>All the defined loggers.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetCurrentLoggers(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns all the currently defined loggers in the specified assembly's repository.\r\n            </summary>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <remarks>\r\n            The root logger is <b>not</b> included in the returned array.\r\n            </remarks>\r\n            <returns>All the defined loggers.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String)\">\r\n            <overloads>Get or create a logger.</overloads>\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Retrieves a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Retrieve a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.String)\">\r\n            <summary>\r\n            Retrieves or creates a named logger.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Retrieve a logger named as the <paramref name=\"name\"/>\r\n            parameter. If the named logger already exists, then the\r\n            existing instance will be returned. Otherwise, a new instance is\r\n            created.\r\n            </para>\r\n            <para>\r\n            By default, loggers do not have a set level but inherit\r\n            it from the hierarchy. This is one of the central features of\r\n            log4net.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"name\">The name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Get the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.String,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLogger(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Shorthand for <see cref=\"M:log4net.LogManager.GetLogger(System.String)\"/>.\r\n            </summary>\r\n            <remarks>\r\n            Gets the logger for the fully qualified name of the type specified.\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n            <param name=\"type\">The full name of <paramref name=\"type\"/> will be used as the name of the logger to retrieve.</param>\r\n            <returns>The logger with the name specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.Shutdown\">\r\n            <summary>\r\n            Shuts down the log4net system.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in all the\r\n            default repositories.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository\">\r\n            <overloads>Shutdown a logger repository.</overloads>\r\n            <summary>\r\n            Shuts down the default repository.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            default repository.\r\n            </para>\r\n            <para>Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.String)\">\r\n            <summary>\r\n            Shuts down the repository for the repository specified.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            <paramref name=\"repository\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to shutdown.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ShutdownRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Shuts down the repository specified.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Calling this method will <b>safely</b> close and remove all\r\n            appenders in all the loggers including root contained in the\r\n            repository. The repository is looked up using\r\n            the <paramref name=\"repositoryAssembly\"/> specified.\r\n            </para>\r\n            <para>\r\n            Some appenders need to be closed before the application exists. \r\n            Otherwise, pending logging events might be lost.\r\n            </para>\r\n            <para>\r\n            The <c>shutdown</c> method is careful to close nested\r\n            appenders before closing regular appenders. This is allows\r\n            configurations where a regular appender is attached to a logger\r\n            and again to a nested appender.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration\">\r\n            <overloads>Reset the configuration of a repository</overloads>\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Resets all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.String)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repository\">The repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.ResetConfiguration(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Resets all values contained in this repository instance to their defaults.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Reset all values contained in the repository instance to their\r\n            defaults.  This removes all appenders from all loggers, sets\r\n            the level of all non-root loggers to <c>null</c>,\r\n            sets their additivity flag to <c>true</c> and sets the level\r\n            of the root logger to <see cref=\"F:log4net.Core.Level.Debug\"/>. Moreover,\r\n            message disabling is set to its default \"off\" value.\r\n            </para>\t\t\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository to reset.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository\">\r\n            <overloads>Get the logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetLoggerRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository\">\r\n            <overloads>Get a logger repository.</overloads>\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the callers assembly (<see cref=\"M:System.Reflection.Assembly.GetCallingAssembly\"/>).\r\n            </para>\r\n            </remarks>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance for the default repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.String)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repository\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The repository to lookup in.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\">\r\n            <summary>\r\n            Returns the default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.\r\n            </summary>\r\n            <returns>The default <see cref=\"T:log4net.Repository.ILoggerRepository\"/> instance.</returns>\r\n            <remarks>\r\n            <para>\r\n            Gets the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified\r\n            by the <paramref name=\"repositoryAssembly\"/> argument.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to lookup the repository.</param>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Type)\">\r\n            <overloads>Create a domain</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Type)\">\r\n            <overloads>Create a logger repository.</overloads>\r\n            <summary>\r\n            Creates a repository with the specified repository type.\r\n            </summary>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository\"/> will return \r\n            the same repository instance.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String)\">\r\n            <summary>\r\n            Creates a repository with the specified name.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Creates the default type of <see cref=\"T:log4net.Repository.ILoggerRepository\"/> which is a\r\n            <see cref=\"T:log4net.Repository.Hierarchy.Hierarchy\"/> object.\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique amongst repositories.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.String,System.Type)\">\r\n            <summary>\r\n            Creates a repository with the specified name and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <paramref name=\"repository\"/> name must be unique. Repositories cannot be redefined.\r\n            An <see cref=\"T:System.Exception\"/> will be thrown if the repository already exists.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repository\">The name of the repository, this must be unique to the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n            <exception cref=\"T:log4net.Core.LogException\">The specified repository already exists.</exception>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateDomain(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            <b>CreateDomain is obsolete. Use CreateRepository instead of CreateDomain.</b>\r\n            </para>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.CreateRepository(System.Reflection.Assembly,System.Type)\">\r\n            <summary>\r\n            Creates a repository for the specified assembly and repository type.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created will be associated with the repository\r\n            specified such that a call to <see cref=\"M:log4net.LogManager.GetRepository(System.Reflection.Assembly)\"/> with the\r\n            same assembly specified will return the same repository instance.\r\n            </para>\r\n            </remarks>\r\n            <param name=\"repositoryAssembly\">The assembly to use to get the name of the repository.</param>\r\n            <param name=\"repositoryType\">A <see cref=\"T:System.Type\"/> that implements <see cref=\"T:log4net.Repository.ILoggerRepository\"/>\r\n            and has a no arg constructor. An instance of this type will be created to act\r\n            as the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> for the repository specified.</param>\r\n            <returns>The <see cref=\"T:log4net.Repository.ILoggerRepository\"/> created for the repository.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.GetAllRepositories\">\r\n            <summary>\r\n            Gets the list of currently defined repositories.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Get an array of all the <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects that have been created.\r\n            </para>\r\n            </remarks>\r\n            <returns>An array of all the known <see cref=\"T:log4net.Repository.ILoggerRepository\"/> objects.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLogger(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Looks up the wrapper object for the logger specified.\r\n            </summary>\r\n            <param name=\"logger\">The logger to get the wrapper for.</param>\r\n            <returns>The wrapper for the logger specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapLoggers(log4net.Core.ILogger[])\">\r\n            <summary>\r\n            Looks up the wrapper objects for the loggers specified.\r\n            </summary>\r\n            <param name=\"loggers\">The loggers to get the wrappers for.</param>\r\n            <returns>The wrapper objects for the loggers specified.</returns>\r\n        </member>\r\n        <member name=\"M:log4net.LogManager.WrapperCreationHandler(log4net.Core.ILogger)\">\r\n            <summary>\r\n            Create the <see cref=\"T:log4net.Core.ILoggerWrapper\"/> objects used by\r\n            this manager.\r\n            </summary>\r\n            <param name=\"logger\">The logger to wrap.</param>\r\n            <returns>The wrapper for the logger specified.</returns>\r\n        </member>\r\n        <member name=\"F:log4net.LogManager.s_wrapperMap\">\r\n            <summary>\r\n            The wrapper map to use to hold the <see cref=\"T:log4net.Core.LogImpl\"/> objects.\r\n            </summary>\r\n        </member>\r\n        <member name=\"T:log4net.MDC\">\r\n            <summary>\r\n            Implementation of Mapped Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The MDC class is similar to the <see cref=\"T:log4net.NDC\"/> class except that it is\r\n            based on a map instead of a stack. It provides <i>mapped\r\n            diagnostic contexts</i>. A <i>Mapped Diagnostic Context</i>, or\r\n            MDC in short, is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The MDC is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.MDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Get(System.String)\">\r\n            <summary>\r\n            Gets the context value identified by the <paramref name=\"key\"/> parameter.\r\n            </summary>\r\n            <param name=\"key\">The key to lookup in the MDC.</param>\r\n            <returns>The string value held for the key, or a <c>null</c> reference if no corresponding value is found.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            If the <paramref name=\"key\"/> parameter does not look up to a\r\n            previously defined context then <c>null</c> will be returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Set(System.String,System.String)\">\r\n            <summary>\r\n            Add an entry to the MDC\r\n            </summary>\r\n            <param name=\"key\">The key to store the value under.</param>\r\n            <param name=\"value\">The value to store.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Puts a context value (the <paramref name=\"value\"/> parameter) as identified\r\n            with the <paramref name=\"key\"/> parameter into the current thread's\r\n            context map.\r\n            </para>\r\n            <para>\r\n            If a value is already defined for the <paramref name=\"key\"/>\r\n            specified then the value will be replaced. If the <paramref name=\"value\"/> \r\n            is specified as <c>null</c> then the key value mapping will be removed.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Remove(System.String)\">\r\n            <summary>\r\n            Removes the key value mapping for the key specified.\r\n            </summary>\r\n            <param name=\"key\">The key to remove.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the specified entry from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.MDC.Clear\">\r\n            <summary>\r\n            Clear all entries in the MDC\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The MDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Properties\"/>.\r\n            The current MDC implementation forwards to the <c>ThreadContext.Properties</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove all the entries from this thread's MDC\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"T:log4net.NDC\">\r\n            <summary>\r\n            Implementation of Nested Diagnostic Contexts.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            A Nested Diagnostic Context, or NDC in short, is an instrument\r\n            to distinguish interleaved log output from different sources. Log\r\n            output is typically interleaved when a server handles multiple\r\n            clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            Interleaved log output can still be meaningful if each log entry\r\n            from different contexts had a distinctive stamp. This is where NDCs\r\n            come into play.\r\n            </para>\r\n            <para>\r\n            Note that NDCs are managed on a per thread basis. The NDC class\r\n            is made up of static methods that operate on the context of the\r\n            calling thread.\r\n            </para>\r\n            </remarks>\r\n            <example>How to push a message into the context\r\n            <code lang=\"C#\">\r\n            using(NDC.Push(\"my context message\"))\r\n            {\r\n            \t... all log calls will have 'my context message' included ...\r\n            \r\n            } // at the end of the using block the message is automatically removed \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n            <author>Gert Driesen</author>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.#ctor\">\r\n            <summary>\r\n            Initializes a new instance of the <see cref=\"T:log4net.NDC\"/> class. \r\n            </summary>\r\n            <remarks>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Clear\">\r\n            <summary>\r\n            Clears all the contextual information held on the current thread.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Clears the stack of NDC data held on the current thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.CloneStack\">\r\n            <summary>\r\n            Creates a clone of the stack of context information.\r\n            </summary>\r\n            <returns>A clone of the context info for this thread.</returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The results of this method can be passed to the <see cref=\"M:log4net.NDC.Inherit(System.Collections.Stack)\"/> \r\n            method to allow child threads to inherit the context of their \r\n            parent thread.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Inherit(System.Collections.Stack)\">\r\n            <summary>\r\n            Inherits the contextual information from another thread.\r\n            </summary>\r\n            <param name=\"stack\">The context stack to inherit.</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This thread will use the context information from the stack\r\n            supplied. This can be used to initialize child threads with\r\n            the same contextual information as their parent threads. These\r\n            contexts will <b>NOT</b> be shared. Any further contexts that\r\n            are pushed onto the stack will not be visible to the other.\r\n            Call <see cref=\"M:log4net.NDC.CloneStack\"/> to obtain a stack to pass to\r\n            this method.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Pop\">\r\n            <summary>\r\n            Removes the top context from the stack.\r\n            </summary>\r\n            <returns>\r\n            The message in the context that was removed from the top \r\n            of the stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Remove the top context from the stack, and return\r\n            it to the caller. If the stack is empty then an\r\n            empty string (not <c>null</c>) is returned.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Push(System.String)\">\r\n            <summary>\r\n            Pushes a new context message.\r\n            </summary>\r\n            <param name=\"message\">The new context message.</param>\r\n            <returns>\r\n            An <see cref=\"T:System.IDisposable\"/> that can be used to clean up \r\n            the context stack.\r\n            </returns>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Pushes a new context onto the context stack. An <see cref=\"T:System.IDisposable\"/>\r\n            is returned that can be used to clean up the context stack. This\r\n            can be easily combined with the <c>using</c> keyword to scope the\r\n            context.\r\n            </para>\r\n            </remarks>\r\n            <example>Simple example of using the <c>Push</c> method with the <c>using</c> keyword.\r\n            <code lang=\"C#\">\r\n            using(log4net.NDC.Push(\"NDC_Message\"))\r\n            {\r\n            \tlog.Warn(\"This should have an NDC message\");\r\n            }\r\n            </code>\r\n            </example>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.Remove\">\r\n            <summary>\r\n            Removes the context information for this thread. It is\r\n            not required to call this method.\r\n            </summary>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            This method is not implemented.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"M:log4net.NDC.SetMaxDepth(System.Int32)\">\r\n            <summary>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            </summary>\r\n            <param name=\"maxDepth\">The maximum depth of the stack</param>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            Forces the stack depth to be at most <paramref name=\"maxDepth\"/>.\r\n            This may truncate the head of the stack. This only affects the \r\n            stack in the current thread. Also it does not prevent it from\r\n            growing, it only sets the maximum depth at the time of the\r\n            call. This can be used to return to a known context depth.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.NDC.Depth\">\r\n            <summary>\r\n            Gets the current context depth.\r\n            </summary>\r\n            <value>The current context depth.</value>\r\n            <remarks>\r\n            <note>\r\n            <para>\r\n            The NDC is deprecated and has been replaced by the <see cref=\"P:log4net.ThreadContext.Stacks\"/>.\r\n            The current NDC implementation forwards to the <c>ThreadContext.Stacks[\"NDC\"]</c>.\r\n            </para>\r\n            </note>\r\n            <para>\r\n            The number of context values pushed onto the context stack.\r\n            </para>\r\n            <para>\r\n            Used to record the current depth of the context. This can then \r\n            be restored using the <see cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/> method.\r\n            </para>\r\n            </remarks>\r\n            <seealso cref=\"M:log4net.NDC.SetMaxDepth(System.Int32)\"/>\r\n        </member>\r\n        <member name=\"T:log4net.ThreadContext\">\r\n            <summary>\r\n            The log4net Thread Context.\r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> provides a location for thread specific debugging \r\n            information to be stored.\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            <para>\r\n            The thread context has a properties map and a stack.\r\n            The properties and stack can \r\n            be included in the output of log messages. The <see cref=\"T:log4net.Layout.PatternLayout\"/>\r\n            supports selecting and outputting these properties.\r\n            </para>\r\n            <para>\r\n            The Thread Context provides a diagnostic context for the current thread. \r\n            This is an instrument for distinguishing interleaved log\r\n            output from different sources. Log output is typically interleaved\r\n            when a server handles multiple clients near-simultaneously.\r\n            </para>\r\n            <para>\r\n            The Thread Context is managed on a per thread basis.\r\n            </para>\r\n            </remarks>\r\n            <example>Example of using the thread context properties to store a username.\r\n            <code lang=\"C#\">\r\n            ThreadContext.Properties[\"user\"] = userName;\r\n            log.Info(\"This log message has a ThreadContext Property called 'user'\");\r\n            </code>\r\n            </example>\r\n            <example>Example of how to push a message into the context stack\r\n            <code lang=\"C#\">\r\n            using(ThreadContext.Stacks[\"NDC\"].Push(\"my context message\"))\r\n            {\r\n            \tlog.Info(\"This log message has a ThreadContext Stack message that includes 'my context message'\");\r\n            \r\n            } // at the end of the using block the message is automatically popped \r\n            </code>\r\n            </example>\r\n            <threadsafety static=\"true\" instance=\"true\"/>\r\n            <author>Nicko Cadell</author>\r\n        </member>\r\n        <member name=\"M:log4net.ThreadContext.#ctor\">\r\n            <summary>\r\n            Private Constructor. \r\n            </summary>\r\n            <remarks>\r\n            <para>\r\n            Uses a private access modifier to prevent instantiation of this class.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_properties\">\r\n            <summary>\r\n            The thread context properties instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"F:log4net.ThreadContext.s_stacks\">\r\n            <summary>\r\n            The thread context stacks instance\r\n            </summary>\r\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Properties\">\r\n            <summary>\r\n            The thread properties map\r\n            </summary>\r\n            <value>\r\n            The thread properties map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The <c>ThreadContext</c> properties override any <see cref=\"T:log4net.GlobalContext\"/>\r\n            properties with the same name.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n        <member name=\"P:log4net.ThreadContext.Stacks\">\r\n            <summary>\r\n            The thread stacks\r\n            </summary>\r\n            <value>\r\n            stack map\r\n            </value>\r\n            <remarks>\r\n            <para>\r\n            The thread local stacks.\r\n            </para>\r\n            </remarks>\r\n        </member>\r\n    </members>\r\n</doc>\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/FluentNhibernateLocalSessionFactoryObject.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing Spring.Data.NHibernate;\r\nusing NHibernate.Cfg;\r\nusing NHibernate.Context;\r\nusing FluentNHibernate.Cfg;\r\nusing System.Reflection;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public class FluentNhibernateLocalSessionFactoryObject : LocalSessionFactoryObject\r\n    {\r\n        private string[] fluentNhibernateMappingAssemblies;\r\n        ///\r\n        /// Sets the assemblies to load that contain fluent nhibernate mappings.\r\n        ///\r\n        /// The mapping assemblies.\r\n        public string[] FluentNhibernateMappingAssemblies\r\n        {\r\n            get { return fluentNhibernateMappingAssemblies; }\r\n            set { fluentNhibernateMappingAssemblies = value; }\r\n        }\r\n\r\n        ///\r\n        /// Fluent configuration.\r\n        ///\r\n        protected override void PostProcessConfiguration(Configuration config)\r\n        {\r\n            base.PostProcessConfiguration(config);\r\n\r\n            Fluently.Configure(config)\r\n            .CurrentSessionContext<ThreadStaticSessionContext>()\r\n            .Mappings(m =>\r\n            {\r\n                foreach (string assemblyName in fluentNhibernateMappingAssemblies)\r\n                {\r\n                    m.HbmMappings\r\n                    .AddFromAssembly(Assembly.Load(assemblyName));\r\n\r\n                    m.FluentMappings\r\n                    .AddFromAssembly(Assembly.Load(assemblyName));\r\n                }\r\n            })\r\n            .BuildConfiguration();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/ICreateUpdateRepository.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public interface ICreateUpdateRepository<TEntity, TKey>\r\n    {\r\n        bool Create(TEntity entity);\r\n        bool Create(IEnumerable<TEntity> items);\r\n        bool Update(TEntity entity);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/IDeleteRepository.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public interface IDeleteRepository<TEntity>\r\n    {\r\n        bool Delete(TEntity entity);\r\n        bool Delete(IEnumerable<TEntity> entities);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/IReadOnlyRepository.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Linq.Expressions;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public interface IReadOnlyRepository<TEntity, TKey> where TEntity : class\r\n    {\r\n        TEntity FindBy(TKey id);\r\n        IQueryable<TEntity> All();\r\n        TEntity FindBy(Expression<Func<TEntity, bool>> expression);\r\n        IQueryable<TEntity> FilterBy(Expression<Func<TEntity, bool>> expression);\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/IRepository.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public interface IRepository<TEntity, TKey> : IReadOnlyRepository<TEntity, TKey>, ICreateUpdateRepository<TEntity, TKey>, IDeleteRepository<TEntity> where TEntity : class\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/ISLForumMemberRepository.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public interface ISLForumMemberRepository: IRepository<SLForumMember, int>\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/Program.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Net;\r\nusing Spring.Context;\r\nusing Spring.Context.Support;\r\nusing NHibernate;\r\nusing NHibernate.Context;\r\nusing System.Threading;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    class Program\r\n    {\r\n        private static readonly List<string> URLS = new List<string>() { \r\n            \"http://forums.silverlight.net/t/239225.aspx/1/10000?Silverlight+App+s+won+t+run+on+Windows+8+preview\",\r\n            \"http://forums.silverlight.net/t/207892.aspx/1/10000?Is+this+official+now\",\r\n            \"http://forums.silverlight.net/t/241149.aspx/1/10000?Silverlight+Future+HTML+5+Windows+8+browsers+not+supporting+Pluggins\",\r\n            \"http://forums.silverlight.net/t/239727.aspx/1/10000?I+am+a+silverlight+developer+that+must+write+silverlight+code+and+need+to+know+if+he+can\",\r\n            \"http://forums.silverlight.net/t/230502.aspx/1/10000?Windows+8+apps+going+html5+wtf\",\r\n            \"http://forums.silverlight.net/t/230725.aspx/1/10000?Windows+8+apps+going+html5+wtf+part+2\",\r\n            \"http://forums.silverlight.net/t/231470.aspx/1/10000?Windows+8+apps+going+html5+wtf+part+3\",\r\n            \"http://forums.silverlight.net/t/239388.aspx/1/10000?What+is+the+future+of+Silverlight+and+XAML+to+build+web+applications\" };\r\n\r\n        static void Main(string[] args)\r\n        {\r\n            ExtractMembers();\r\n        }\r\n\r\n        private static void ExtractMembers()\r\n        {\r\n            IApplicationContext ctx = ContextRegistry.GetContext();\r\n            ISLForumMemberRepository repo = (ISLForumMemberRepository)ctx.GetObject(\"SLForumMemberRepository\");\r\n            ISessionFactory sessionFactory = (ISessionFactory)ctx.GetObject(\"FaydeSessionFactory\");\r\n            ISession session = sessionFactory.OpenSession();\r\n            CurrentSessionContext.Bind(session);\r\n            using (ITransaction transaction = session.BeginTransaction())\r\n            {\r\n                foreach (string url in URLS)\r\n                {\r\n                    foreach (SLForumMember m in SLForumScraper.ScrapeMembers(url))\r\n                    {\r\n                        SLForumMember em = repo.FindBy(x => x.Username == m.Username);\r\n                        if (em == null)\r\n                            repo.Create(m);\r\n                    }\r\n                }\r\n                transaction.Commit();\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"WickedSick.ForumScraper\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"WickedSick.ForumScraper\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2012\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// The following GUID is for the ID of the typelib if this project is exposed to COM\r\n[assembly: Guid(\"64bfa0fe-d860-49ac-819f-22b8ea04e740\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Build and Revision Numbers \r\n// by using the '*' as shown below:\r\n// [assembly: AssemblyVersion(\"1.0.*\")]\r\n[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/Repository.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing NHibernate;\r\nusing NHibernate.Linq;\r\nusing System.Linq.Expressions;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public class Repository<T, K> : IRepository<T, K> where T : class\r\n    {\r\n        private ISessionFactory _sessionFactory;\r\n        public ISessionFactory SessionFactory\r\n        {\r\n            get { return _sessionFactory; }\r\n            set { _sessionFactory = value; }\r\n        }\r\n\r\n        #region IRepository<T, K> Members\r\n\r\n        public bool Create(T entity)\r\n        {\r\n            SessionFactory.GetCurrentSession().Save(entity);\r\n            return true;\r\n        }\r\n\r\n        public bool Create(IEnumerable<T> items)\r\n        {\r\n            foreach (T item in items)\r\n            {\r\n                SessionFactory.GetCurrentSession().SaveOrUpdate(item);\r\n            }\r\n            return true;\r\n        }\r\n\r\n        public bool Update(T entity)\r\n        {\r\n            SessionFactory.GetCurrentSession().Update(entity);\r\n            return true;\r\n        }\r\n\r\n        public bool Delete(T entity)\r\n        {\r\n            SessionFactory.GetCurrentSession().Delete(entity);\r\n            return true;\r\n        }\r\n\r\n        public bool Delete(IEnumerable<T> entities)\r\n        {\r\n            foreach (T entity in entities)\r\n            {\r\n                SessionFactory.GetCurrentSession().Delete(entity);\r\n            }\r\n            return true;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region IReadOnlyRepository<T, K> Members\r\n\r\n        public T FindBy(K id)\r\n        {\r\n            return SessionFactory.GetCurrentSession().Get<T>(id);\r\n        }\r\n\r\n        public IQueryable<T> All()\r\n        {\r\n            return SessionFactory.GetCurrentSession().Query<T>();\r\n        }\r\n\r\n        public T FindBy(Expression<Func<T, bool>> expression)\r\n        {\r\n            return FilterBy(expression).SingleOrDefault();\r\n        }\r\n\r\n        public IQueryable<T> FilterBy(Expression<Func<T, bool>> expression)\r\n        {\r\n            return All().Where(expression).AsQueryable();\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/SLForumMember.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public class SLForumMember\r\n    {\r\n        public virtual int Id { get; set; }\r\n        public virtual string Username { get; set; }\r\n        public virtual string PostLevel { get; set; }\r\n        public virtual int PostPoints { get; set; }\r\n        public virtual int PostCount { get; set; }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/SLForumMemberMap.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing FluentNHibernate.Mapping;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public class SLForumMemberMap: ClassMap<SLForumMember>\r\n    {\r\n        public SLForumMemberMap()\r\n        {\r\n            Table(\"SLForumMembers\");\r\n            Id(x => x.Id).Column(\"SL_FORUM_MEMBER_ID\");\r\n            Map(x => x.Username);\r\n            Map(x => x.PostLevel);\r\n            Map(x => x.PostPoints);\r\n            Map(x => x.PostCount);\r\n        }    \r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/SLForumMemberRepository.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public class SLForumMemberRepository: Repository<SLForumMember, int>, ISLForumMemberRepository\r\n    {\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/SLForumScraper.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Net;\r\nusing HtmlAgilityPack;\r\nusing Fizzler.Systems.HtmlAgilityPack;\r\n\r\nnamespace WickedSick.ForumScraper\r\n{\r\n    public static class SLForumScraper\r\n    {\r\n        public static IEnumerable<SLForumMember> ScrapeMembers(string url)\r\n        {\r\n            string COMMENT_SEARCH = \"li.comment-wrap\";\r\n\r\n            var doc = GetPage(url);\r\n            return from h in doc.DocumentNode.QuerySelectorAll(COMMENT_SEARCH)\r\n                   select parseMember(h);\r\n        }\r\n\r\n        private static SLForumMember parseMember(HtmlNode node)\r\n        {\r\n            string USERNAME_SEARCH = \"h3.post-title a\";\r\n            string POST_LEVEL_SEARCH = \"p.post-level\";\r\n            string POST_POINTS_SEARCH = \"p.post-points\";\r\n            string POST_COUNT_SEARCH = \"p.post-count\";\r\n\r\n            string ppString = node.QuerySelector(POST_POINTS_SEARCH).InnerText;\r\n            ppString = ppString.Substring(0, ppString.IndexOf(' '));\r\n            string pcString = node.QuerySelector(POST_COUNT_SEARCH).InnerText;\r\n            pcString = pcString.Substring(0, pcString.IndexOf(' '));\r\n\r\n            return new SLForumMember()\r\n            {\r\n                Username = node.QuerySelector(USERNAME_SEARCH).InnerText,\r\n                PostLevel = node.QuerySelector(POST_LEVEL_SEARCH).InnerText,\r\n                PostPoints = int.Parse(ppString),\r\n                PostCount = int.Parse(pcString)\r\n            };\r\n        }\r\n\r\n        private static HtmlDocument GetPage(string url)\r\n        {\r\n            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);\r\n            HttpWebResponse response = (HttpWebResponse)request.GetResponse();\r\n            var doc = new HtmlDocument();\r\n            doc.Load(response.GetResponseStream(), Encoding.UTF8);\r\n            return doc;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/WickedSick.ForumScraper.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\r\n    <ProductVersion>8.0.30703</ProductVersion>\r\n    <SchemaVersion>2.0</SchemaVersion>\r\n    <ProjectGuid>{53773A4B-2355-41C6-9340-FB9BDA269A28}</ProjectGuid>\r\n    <OutputType>Exe</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>WickedSick.ForumScraper</RootNamespace>\r\n    <AssemblyName>WickedSick.ForumScraper</AssemblyName>\r\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r\n    <FileAlignment>512</FileAlignment>\r\n    <TargetFrameworkProfile />\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <DebugType>pdbonly</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"Fizzler.Systems.HtmlAgilityPack\">\r\n      <HintPath>..\\..\\..\\wickedsick\\ThirdParty\\Fizzler\\v0.9\\Fizzler.Systems.HtmlAgilityPack.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"FluentNHibernate\">\r\n      <HintPath>..\\..\\..\\wickedsick\\ThirdParty\\FluentNHibernate\\v1.3.0.717\\FluentNHibernate.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"HtmlAgilityPack\">\r\n      <HintPath>..\\..\\..\\wickedsick\\ThirdParty\\Fizzler\\v0.9\\HtmlAgilityPack.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"Iesi.Collections\">\r\n      <HintPath>..\\..\\..\\wickedsick\\ThirdParty\\Iesi.Collections\\v3.2.0.400\\Iesi.Collections.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"NHibernate\">\r\n      <HintPath>..\\..\\..\\wickedsick\\ThirdParty\\NHibernate\\v3.2.0.4000\\NHibernate.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"Spring.Core\">\r\n      <HintPath>..\\..\\..\\wickedsick\\ThirdParty\\Spring.Net\\v1.3.2\\.Net 4.0\\Spring.Core.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"Spring.Data\">\r\n      <HintPath>..\\..\\..\\wickedsick\\ThirdParty\\Spring.Net\\v1.3.2\\.Net 4.0\\Spring.Data.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"Spring.Data.NHibernate32\">\r\n      <HintPath>..\\..\\..\\wickedsick\\ThirdParty\\Spring.Net\\v1.3.2\\.Net 4.0\\Spring.Data.NHibernate32.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Xml\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"FluentNhibernateLocalSessionFactoryObject.cs\" />\r\n    <Compile Include=\"ICreateUpdateRepository.cs\" />\r\n    <Compile Include=\"IDeleteRepository.cs\" />\r\n    <Compile Include=\"IReadOnlyRepository.cs\" />\r\n    <Compile Include=\"IRepository.cs\" />\r\n    <Compile Include=\"ISLForumMemberRepository.cs\" />\r\n    <Compile Include=\"Program.cs\" />\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n    <Compile Include=\"Repository.cs\" />\r\n    <Compile Include=\"SLForumMember.cs\" />\r\n    <Compile Include=\"SLForumMemberMap.cs\" />\r\n    <Compile Include=\"SLForumMemberRepository.cs\" />\r\n    <Compile Include=\"SLForumScraper.cs\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\"app.config\" />\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r\n       Other similar extension points exist, see Microsoft.Common.targets.\r\n  <Target Name=\"BeforeBuild\">\r\n  </Target>\r\n  <Target Name=\"AfterBuild\">\r\n  </Target>\r\n  -->\r\n</Project>"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/WickedSick.ForumScraper.sln",
    "content": "﻿\r\nMicrosoft Visual Studio Solution File, Format Version 11.00\r\n# Visual Studio 2010\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"WickedSick.ForumScraper\", \"WickedSick.ForumScraper.csproj\", \"{53773A4B-2355-41C6-9340-FB9BDA269A28}\"\r\nEndProject\r\nGlobal\r\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n\t\tDebug|x86 = Debug|x86\r\n\t\tRelease|x86 = Release|x86\r\n\tEndGlobalSection\r\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n\t\t{53773A4B-2355-41C6-9340-FB9BDA269A28}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{53773A4B-2355-41C6-9340-FB9BDA269A28}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{53773A4B-2355-41C6-9340-FB9BDA269A28}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{53773A4B-2355-41C6-9340-FB9BDA269A28}.Release|x86.Build.0 = Release|x86\r\n\tEndGlobalSection\r\n\tGlobalSection(SolutionProperties) = preSolution\r\n\t\tHideSolutionNode = FALSE\r\n\tEndGlobalSection\r\nEndGlobal\r\n"
  },
  {
    "path": "Tools/WickedSick.ForumScraper/app.config",
    "content": "<?xml version=\"1.0\"?>\r\n<configuration>\r\n\r\n  <configSections>\r\n    <sectionGroup name=\"spring\">\r\n      <section name=\"context\" type=\"Spring.Context.Support.ContextHandler, Spring.Core\"/>\r\n      <section name=\"objects\" type=\"Spring.Context.Support.DefaultSectionHandler, Spring.Core\"/>\r\n    </sectionGroup>\r\n  </configSections>\r\n\r\n  <spring>\r\n    <context>\r\n      <resource uri=\"config://spring/objects\"/>\r\n    </context>\r\n    <objects xmlns=\"http://www.springframework.net\"\r\n             xmlns:db=\"http://www.springframework.net/database\"\r\n             xmlns:tx=\"http://www.springframework.net/tx\">\r\n\r\n      <db:provider id=\"FaydeDbProvider\"\r\n                   provider=\"SqlServer-2.0\"\r\n                   connectionString=\"Server=(local);Database=Fayde;User=WickedSick;Password=pa$$w0rd;\"/>\r\n\r\n      <object id=\"FaydeSessionFactory\" type=\"WickedSick.ForumScraper.FluentNhibernateLocalSessionFactoryObject, WickedSick.ForumScraper\">\r\n        <property name=\"DbProvider\" ref=\"FaydeDbProvider\"/>\r\n        <property name=\"FluentNhibernateMappingAssemblies\">\r\n          <list>\r\n            <value>WickedSick.ForumScraper</value>\r\n          </list>\r\n        </property>\r\n        <property name=\"ExposeTransactionAwareSessionFactory\" value=\"true\" />\r\n        <property name=\"HibernateProperties\">\r\n          <dictionary>\r\n            <entry key=\"connection.provider\"\r\n                   value=\"NHibernate.Connection.DriverConnectionProvider\"/>\r\n            <entry key=\"dialect\"\r\n                   value=\"NHibernate.Dialect.MsSql2008Dialect\"/>\r\n            <entry key=\"connection.driver_class\"\r\n                   value=\"NHibernate.Driver.SqlClientDriver\"/>\r\n            <entry key=\"show_sql\"\r\n                   value=\"false\"/>\r\n          </dictionary>\r\n        </property>\r\n      </object>\r\n\r\n      <object id=\"SLForumMemberRepository\" type=\"WickedSick.ForumScraper.SLForumMemberRepository, WickedSick.ForumScraper\">\r\n        <property name=\"SessionFactory\" ref=\"FaydeSessionFactory\"/>\r\n      </object>\r\n    </objects>\r\n  </spring>\r\n  <startup>\r\n    <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.0\"/>\r\n  </startup>\r\n</configuration>\r\n"
  },
  {
    "path": "Tools/WickedSick.MVVM/DialogEx/DialogCompleteParameters.cs",
    "content": "﻿\r\nnamespace WickedSick.MVVM.DialogEx\r\n{\r\n    internal class DialogCompleteParameters : IDialogCompleteParameters\r\n    {\r\n        public DialogCompleteParameters(bool? result, object data)\r\n        {\r\n            Result = result;\r\n            Data = data;\r\n        }\r\n\r\n        public bool? Result { get; private set; }\r\n        public object Data { get; private set; }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.MVVM/DialogEx/DialogControl.cs",
    "content": "﻿using System;\r\nusing System.ComponentModel;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Data;\r\nusing System.Windows.Input;\r\nusing System.Windows.Threading;\r\n\r\nnamespace WickedSick.MVVM.DialogEx\r\n{\r\n    /// <summary>\r\n    /// This control has no rendering of its own.\r\n    /// When provided a ViewType and DataContext, it will construct the view/view model pair and show the dialog.\r\n    /// The DialogResult along with the manipulated DataContext will be returned in the event \"DialogComplete\".\r\n    /// </summary>\r\n    [DesignTimeVisible(false)]\r\n    public class DialogControl : Control\r\n    {\r\n        public static readonly DependencyProperty ViewTypeProperty = DependencyProperty.Register(\"ViewType\", typeof(Type), typeof(DialogControl),\r\n            new FrameworkPropertyMetadata(new PropertyChangedCallback(TryShowDialog)));\r\n        public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register(\"ViewModel\", typeof(ObservableObject), typeof(DialogControl),\r\n            new FrameworkPropertyMetadata(new PropertyChangedCallback(TryShowDialog)));\r\n        public static readonly DependencyProperty IsDialogVisibleProperty = DependencyProperty.Register(\"IsDialogVisible\", typeof(bool), typeof(DialogControl),\r\n            new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, TryShowDialog));\r\n        public static readonly DependencyProperty DialogCompleteCommandProperty = DependencyProperty.Register(\"DialogCompleteCommand\", typeof(ICommand), typeof(DialogControl));\r\n        public static readonly DependencyProperty StartupLocationProperty =\r\n            DependencyProperty.Register(\"StartupLocation\", typeof(WindowStartupLocation), typeof(DialogControl), new UIPropertyMetadata(WindowStartupLocation.CenterOwner));\r\n\r\n        public DialogControl()\r\n        {\r\n            // The control doesn't have any specific rendering of its own.\r\n            Visibility = Visibility.Hidden;\r\n            SetBinding(ViewModelProperty, new Binding(\"DialogDataContext\"));\r\n            SetBinding(IsDialogVisibleProperty, new Binding(\"IsRequestingChange\") { Mode = BindingMode.TwoWay });\r\n            SetBinding(DialogCompleteCommandProperty, new Binding(\"ChangedCommand\"));\r\n        }\r\n\r\n        public Type ViewType\r\n        {\r\n            get { return (Type)GetValue(ViewTypeProperty); }\r\n            set { SetValue(ViewTypeProperty, value); }\r\n        }\r\n\r\n        public ObservableObject ViewModel\r\n        {\r\n            get { return (ObservableObject)GetValue(ViewModelProperty); }\r\n            set { SetValue(ViewModelProperty, value); }\r\n        }\r\n\r\n        public bool IsDialogVisible\r\n        {\r\n            get { return (bool)GetValue(IsDialogVisibleProperty); }\r\n            set { SetValue(IsDialogVisibleProperty, value); }\r\n        }\r\n\r\n        public ICommand DialogCompleteCommand\r\n        {\r\n            get { return (ICommand)GetValue(DialogCompleteCommandProperty); }\r\n            set { SetValue(DialogCompleteCommandProperty, value); }\r\n        }\r\n\r\n        public WindowStartupLocation StartupLocation\r\n        {\r\n            get { return (WindowStartupLocation)GetValue(StartupLocationProperty); }\r\n            set { SetValue(StartupLocationProperty, value); }\r\n        }\r\n\r\n\r\n        private static void TryShowDialog(DependencyObject target, DependencyPropertyChangedEventArgs e)\r\n        {\r\n            var dc = target as DialogControl;\r\n            if (dc == null)\r\n                return;\r\n            dc.TryShowDialog();\r\n        }\r\n\r\n        private bool _IgnoreChanges;\r\n        private void TryShowDialog()\r\n        {\r\n            if (_IgnoreChanges)\r\n                return;\r\n\r\n            if (!IsDialogVisible)\r\n                return;\r\n            if (ViewType == null)\r\n                return;\r\n            if (ViewModel == null)\r\n                return;\r\n            if (!typeof(Window).IsAssignableFrom(ViewType))\r\n                return;\r\n\r\n            Window newDialog = Activator.CreateInstance(ViewType) as Window;\r\n            newDialog.Owner = Window.GetWindow(this);\r\n            newDialog.WindowStartupLocation = StartupLocation;\r\n            newDialog.DataContext = ViewModel;\r\n            bool? result = newDialog.ShowDialog();\r\n\r\n            try\r\n            {\r\n                _IgnoreChanges = true;\r\n                var be = GetBindingExpression(IsDialogVisibleProperty);\r\n                be.UpdateTarget();\r\n                SetCurrentValue(IsDialogVisibleProperty, false);\r\n            }\r\n            finally\r\n            {\r\n                _IgnoreChanges = false;\r\n            }\r\n            ICommand completeCommand = DialogCompleteCommand;\r\n            if (completeCommand != null)\r\n            {\r\n                completeCommand.Execute(new DialogCompleteParameters(result, newDialog.DataContext));\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.MVVM/DialogEx/DialogViewModel.cs",
    "content": "﻿using System;\r\nusing System.Windows.Threading;\r\n\r\nnamespace WickedSick.MVVM.DialogEx\r\n{\r\n    public class DialogViewModel : DialogViewModel<object, object>\r\n    {\r\n    }\r\n\r\n    public class DialogViewModel<T> : DialogViewModel<T, T>\r\n    {\r\n    }\r\n\r\n    public class DialogViewModel<TBuilder, TAccept> : ViewModelBase\r\n    {\r\n        private bool _IsRequestingChange;\r\n        private RelayCommand<TBuilder> _RequestChangeCommand;\r\n        private ObservableObject _DialogDataContext;\r\n        private RelayCommand<IDialogCompleteParameters> _ChangedCommand;\r\n\r\n        public DialogViewModel()\r\n        {\r\n            RequestChangeCommand = new RelayCommand<TBuilder>(RequestChange_Execute, RequestChange_CanExecute);\r\n            ChangedCommand = new RelayCommand<IDialogCompleteParameters>(Changed_Execute);\r\n        }\r\n\r\n        public Action<TAccept> AcceptAction { get; set; }\r\n        public Action<IDialogCompleteParameters> CompleteAction { get; set; }\r\n        public Func<TBuilder, ObservableObject> ViewModelBuilder { get; set; }\r\n        public Func<TBuilder, bool> CanChange { get; set; }\r\n\r\n        public bool IsRequestingChange\r\n        {\r\n            get { return _IsRequestingChange; }\r\n            set\r\n            {\r\n                _IsRequestingChange = value;\r\n                OnPropertyChanged(\"IsRequestingChange\");\r\n            }\r\n        }\r\n\r\n        public RelayCommand<TBuilder> RequestChangeCommand\r\n        {\r\n            get { return _RequestChangeCommand; }\r\n            set\r\n            {\r\n                _RequestChangeCommand = value;\r\n                OnPropertyChanged(\"RequestChangeCommand\");\r\n            }\r\n        }\r\n\r\n        public ObservableObject DialogDataContext\r\n        {\r\n            get { return _DialogDataContext; }\r\n            set\r\n            {\r\n                _DialogDataContext = value;\r\n                OnPropertyChanged(\"DialogDataContext\");\r\n            }\r\n        }\r\n\r\n        public RelayCommand<IDialogCompleteParameters> ChangedCommand\r\n        {\r\n            get { return _ChangedCommand; }\r\n            set\r\n            {\r\n                _ChangedCommand = value;\r\n                OnPropertyChanged(\"ChangedCommand\");\r\n            }\r\n        }\r\n\r\n        private void Changed_Execute(IDialogCompleteParameters parameter)\r\n        {\r\n            if (parameter.Result == true)\r\n            {\r\n                if (AcceptAction != null)\r\n                {\r\n                    if (parameter.Data == null)\r\n                        AcceptAction(default(TAccept));\r\n                    else\r\n                        AcceptAction((TAccept)parameter.Data);\r\n                }\r\n            }\r\n            if (CompleteAction != null)\r\n                CompleteAction(parameter);\r\n        }\r\n\r\n        private void RequestChange_Execute(TBuilder parameter)\r\n        {\r\n            if (ViewModelBuilder != null)\r\n            {\r\n                var vm = ViewModelBuilder(parameter);\r\n                if (vm == null)\r\n                    return;\r\n                DialogDataContext = vm;\r\n            }\r\n            IsRequestingChange = true;\r\n        }\r\n\r\n        private bool RequestChange_CanExecute(TBuilder parameter)\r\n        {\r\n            if (CanChange != null)\r\n                return CanChange(parameter);\r\n            return true;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.MVVM/DialogEx/IDialogCompleteParameters.cs",
    "content": "﻿\r\nnamespace WickedSick.MVVM.DialogEx\r\n{\r\n    public interface IDialogCompleteParameters\r\n    {\r\n        bool? Result { get; }\r\n        object Data { get; }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.MVVM/ObservableObject.cs",
    "content": "﻿using System.ComponentModel;\r\n\r\nnamespace WickedSick.MVVM\r\n{\r\n    public abstract class ObservableObject : INotifyPropertyChanged\r\n    {\r\n        public event PropertyChangedEventHandler PropertyChanged;\r\n\r\n        protected virtual void OnPropertyChanged(string propertyName)\r\n        {\r\n            var obj = PropertyChanged;\r\n            if (obj != null)\r\n                obj(this, new PropertyChangedEventArgs(propertyName));\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.MVVM/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"WickedSick.MVVM\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"WickedSick.MVVM\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2012\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// The following GUID is for the ID of the typelib if this project is exposed to COM\r\n[assembly: Guid(\"c2c1a525-6fb2-41e2-abc1-4f8d38031878\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Build and Revision Numbers \r\n// by using the '*' as shown below:\r\n// [assembly: AssemblyVersion(\"1.0.*\")]\r\n[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\r\n"
  },
  {
    "path": "Tools/WickedSick.MVVM/RelayCommand.cs",
    "content": "﻿using System;\r\nusing System.Windows.Input;\r\n\r\nnamespace WickedSick.MVVM\r\n{\r\n    public class RelayCommand : ICommand\r\n    {\r\n        private Action _Execute;\r\n        private Func<bool> _CanExecute;\r\n\r\n        public RelayCommand(Action execute)\r\n            : this(execute, () => true)\r\n        {\r\n        }\r\n\r\n        public RelayCommand(Action execute, Func<bool> canExecute)\r\n        {\r\n            _Execute = execute;\r\n            _CanExecute = canExecute;\r\n        }\r\n\r\n        public bool CanExecute(object parameter)\r\n        {\r\n            return _CanExecute();\r\n        }\r\n\r\n        public event EventHandler CanExecuteChanged;\r\n\r\n        public void ForceCanExecuteChanged()\r\n        {\r\n            var obj = CanExecuteChanged;\r\n            if (obj != null)\r\n                obj(this, new EventArgs());\r\n        }\r\n\r\n        public void Execute(object parameter = null)\r\n        {\r\n            _Execute();\r\n        }\r\n    }\r\n\r\n    public class RelayCommand<T> : ICommand\r\n    {\r\n        private Action<T> _Execute;\r\n        private Func<T, bool> _CanExecute;\r\n\r\n        public RelayCommand(Action<T> execute)\r\n            : this(execute, t => true)\r\n        {\r\n        }\r\n\r\n        public RelayCommand(Action<T> execute, Func<T, bool> canExecute)\r\n        {\r\n            if (execute == null)\r\n                throw new ArgumentException(\"Invalid execute action.\");\r\n            if (canExecute == null)\r\n                throw new ArgumentException(\"Invalid can execute func.\");\r\n            _Execute = execute;\r\n            _CanExecute = canExecute;\r\n        }\r\n\r\n        public bool CanExecute(object parameter)\r\n        {\r\n            return _CanExecute((T)parameter);\r\n        }\r\n\r\n        public event EventHandler CanExecuteChanged;\r\n\r\n        public void ForceCanExecuteChanged()\r\n        {\r\n            var obj = CanExecuteChanged;\r\n            if (obj != null)\r\n                obj(this, new EventArgs());\r\n        }\r\n\r\n        public void Execute(object parameter)\r\n        {\r\n            _Execute((T)parameter);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.MVVM/TreeViewEx/TreeViewBehavior.cs",
    "content": "﻿using System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Interactivity;\r\n\r\nnamespace WickedSick.MVVM.TreeViewEx\r\n{\r\n    public class TreeViewBehavior : Behavior<TreeView>\r\n    {\r\n        public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.Register(\r\n            \"SelectedItem\", typeof(object), typeof(TreeViewBehavior), new PropertyMetadata(OnSelectedItemPropertyChanged));\r\n\r\n        public object SelectedItem\r\n        {\r\n            get { return GetValue(SelectedItemProperty); }\r\n            set { SetValue(SelectedItemProperty, value); }\r\n        }\r\n\r\n        private static void OnSelectedItemPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs args)\r\n        {\r\n            var item = args.NewValue as TreeViewItem;\r\n            if (item != null)\r\n            {\r\n                item.SetValue(TreeViewItem.IsSelectedProperty, true);\r\n            }\r\n        }\r\n\r\n        protected override void OnAttached()\r\n        {\r\n            base.OnAttached();\r\n            AssociatedObject.SelectedItemChanged += AssociatedObject_SelectedItemChanged;\r\n        }\r\n\r\n        private void AssociatedObject_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)\r\n        {\r\n            SelectedItem = e.NewValue;\r\n        }\r\n\r\n        protected override void OnDetaching()\r\n        {\r\n            base.OnDetaching();\r\n            if (AssociatedObject != null)\r\n                AssociatedObject.SelectedItemChanged -= AssociatedObject_SelectedItemChanged;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.MVVM/ViewModelBase.cs",
    "content": "﻿\r\nnamespace WickedSick.MVVM\r\n{\r\n    public abstract class ViewModelBase : ObservableObject\r\n    {\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.MVVM/WickedSick.MVVM.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProductVersion>8.0.30703</ProductVersion>\r\n    <SchemaVersion>2.0</SchemaVersion>\r\n    <ProjectGuid>{C90D69F2-9AB0-468E-8F42-E2C9F7705290}</ProjectGuid>\r\n    <OutputType>Library</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>WickedSick.MVVM</RootNamespace>\r\n    <AssemblyName>WickedSick.MVVM</AssemblyName>\r\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r\n    <FileAlignment>512</FileAlignment>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <DebugType>pdbonly</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"PresentationCore\" />\r\n    <Reference Include=\"PresentationFramework\" />\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Xaml\" />\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"Microsoft.CSharp\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Xml\" />\r\n    <Reference Include=\"WindowsBase\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"DialogEx\\DialogCompleteParameters.cs\" />\r\n    <Compile Include=\"DialogEx\\DialogControl.cs\" />\r\n    <Compile Include=\"DialogEx\\DialogViewModel.cs\" />\r\n    <Compile Include=\"DialogEx\\IDialogCompleteParameters.cs\" />\r\n    <Compile Include=\"ObservableObject.cs\" />\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n    <Compile Include=\"RelayCommand.cs\" />\r\n    <Compile Include=\"TreeViewEx\\TreeViewBehavior.cs\" />\r\n    <Compile Include=\"ViewModelBase.cs\" />\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r\n       Other similar extension points exist, see Microsoft.Common.targets.\r\n  <Target Name=\"BeforeBuild\">\r\n  </Target>\r\n  <Target Name=\"AfterBuild\">\r\n  </Target>\r\n  -->\r\n</Project>"
  },
  {
    "path": "Tools/WickedSick.Thea/App.xaml",
    "content": "﻿<Application x:Class=\"WickedSick.Thea.App\"\r\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n             xmlns:res=\"clr-namespace:WickedSick.Thea.Resources\"\r\n             StartupUri=\"MainWindow.xaml\">\r\n    <Application.Resources>\r\n        <res:BoolVisibilityConverter x:Key=\"boolVisibilityConverter\" />\r\n        <res:BoolVisibilityConverter x:Key=\"notBoolVisibilityConverter\" IsNegated=\"True\" />\r\n        <res:BoolFontWeightConverter x:Key=\"boolFontWeightConverter\" />\r\n        <res:BoolSolidColorBrushConverter x:Key=\"boolSolidColorBrushConverter\" Color=\"Firebrick\" />\r\n    </Application.Resources>\r\n</Application>"
  },
  {
    "path": "Tools/WickedSick.Thea/App.xaml.cs",
    "content": "﻿using System;\r\nusing System.Runtime.InteropServices;\r\nusing System.Windows;\r\nusing WickedSick.Thea.ViewModels;\r\n\r\nnamespace WickedSick.Thea\r\n{\r\n    public partial class App : Application\r\n    {\r\n        public void Initialize()\r\n        {\r\n            App.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;\r\n            try\r\n            {\r\n                var vm = new MainViewModel();\r\n                App.Current.MainWindow.DataContext = vm;\r\n                vm.Load();\r\n            }\r\n            catch (Exception)\r\n            {\r\n                //logger.Error(\"Failed to load Update Manager\", ex);\r\n                //MessageBox.Show(\"Update Manager failed to load properly: \" + ex.Message, \"Failed to load\", MessageBoxButton.OK, MessageBoxImage.Error);\r\n                App.Current.Shutdown();\r\n            }\r\n        }\r\n\r\n        private void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)\r\n        {\r\n            if (e.Exception is COMException)\r\n            {\r\n                e.Handled = true;\r\n                var vm = App.Current.MainWindow.DataContext as MainViewModel;\r\n                vm.Load();\r\n            }\r\n        }\r\n\r\n        public void CleanUp(object dataContext)\r\n        {\r\n            (dataContext as MainViewModel).Dispose();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Controls/LayoutDisplay.xaml",
    "content": "﻿<UserControl x:Class=\"WickedSick.Thea.Controls.LayoutDisplay\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    SizeChanged=\"UserControl_SizeChanged\" ClipToBounds=\"True\">\r\n    <Canvas x:Name=\"TheCanvas\" ClipToBounds=\"False\">\r\n    </Canvas>\r\n</UserControl>"
  },
  {
    "path": "Tools/WickedSick.Thea/Controls/LayoutDisplay.xaml.cs",
    "content": "﻿using System;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Media;\r\nusing System.Windows.Shapes;\r\nusing WickedSick.Thea.Models;\r\n\r\nnamespace WickedSick.Thea.Controls\r\n{\r\n    public partial class LayoutDisplay : UserControl\r\n    {\r\n        public static readonly DependencyProperty LayoutMetricsProperty = DependencyProperty.Register(\r\n            \"LayoutMetrics\", typeof(LayoutMetrics), typeof(LayoutDisplay), new PropertyMetadata(LayoutMetricsPropertyChanged));\r\n\r\n        public LayoutMetrics LayoutMetrics\r\n        {\r\n            get { return (LayoutMetrics)GetValue(LayoutMetricsProperty); }\r\n            set { SetValue(LayoutMetricsProperty, value); }\r\n        }\r\n\r\n        private static void LayoutMetricsPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs args)\r\n        {\r\n            (d as LayoutDisplay).Update(args.NewValue as LayoutMetrics);\r\n        }\r\n\r\n        private Point _Min;\r\n        private Point _Max;\r\n\r\n        public LayoutDisplay()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        private void UserControl_SizeChanged(object sender, SizeChangedEventArgs e)\r\n        {\r\n            Fit();\r\n        }\r\n\r\n        protected void InitBackground()\r\n        {\r\n            var sx = Math.Floor(_Min.X / 100.0) * 100.0 - 100.0;\r\n            var sy = Math.Floor(_Min.Y / 100.0) * 100.0 - 100.0;\r\n            var ex = Math.Ceiling(_Max.X / 100.0) * 100.0 + 100.0;\r\n            var ey = Math.Ceiling(_Max.Y / 100.0) * 100.0 + 100.0;\r\n\r\n            for (var i = sx; i < ex; i += 100.0)\r\n            {\r\n                TheCanvas.Children.Add(CreateBackgroundLine(i, sy, i, ey));\r\n            }\r\n            for (var j = sy; j < ey; j += 100.0)\r\n            {\r\n                TheCanvas.Children.Add(CreateBackgroundLine(sx, j, ex, j));\r\n            }\r\n        }\r\n        protected Line CreateBackgroundLine(double x1, double y1, double x2, double y2)\r\n        {\r\n            var line = new Line\r\n            {\r\n                X1 = x1,\r\n                X2 = x2,\r\n                Y1 = y1,\r\n                Y2 = y2,\r\n            };\r\n            line.StrokeThickness = 1.0;\r\n            line.Stroke = new SolidColorBrush(Colors.Gray);\r\n            line.StrokeDashArray = new DoubleCollection(new[] { 5.0, 5.0 });\r\n            return line;\r\n        }\r\n\r\n        protected void Update(LayoutMetrics metrics)\r\n        {\r\n            if (metrics == null)\r\n                return;\r\n            try\r\n            {\r\n                TheCanvas.Children.Clear();\r\n\r\n                _Min = new Point(metrics.VisualOffset.X, metrics.VisualOffset.Y);\r\n                _Max = new Point(_Min.X + (metrics.ActualWidth ?? 0.0), _Min.Y + (metrics.ActualHeight ?? 0.0));\r\n\r\n                var actualr = new Rectangle { Width = (metrics.ActualWidth ?? 0.0), Height = (metrics.ActualHeight ?? 0.0) };\r\n                Canvas.SetLeft(actualr, metrics.VisualOffset.X);\r\n                Canvas.SetTop(actualr, metrics.VisualOffset.Y);\r\n                var ax = metrics.AbsoluteXform;\r\n                actualr.RenderTransform = new MatrixTransform(ax[0], ax[1], ax[3], ax[4], ax[2], ax[5]);\r\n                actualr.Stroke = new SolidColorBrush(Colors.Black);\r\n                actualr.StrokeThickness = 2;\r\n                TheCanvas.Children.Add(actualr);\r\n            }\r\n            catch (Exception)\r\n            {\r\n            }\r\n\r\n            InitBackground();\r\n\r\n            Fit();\r\n        }\r\n        protected void Fit()\r\n        {\r\n            try\r\n            {\r\n                var px = 10.0;\r\n                var py = 10.0;\r\n\r\n                var avail = new Size(Math.Max(0.0, ActualWidth - px * 2), Math.Max(0.0, ActualHeight - py * 2));\r\n                var view = new Rect(_Min.X, _Min.Y, _Max.X - _Min.X, _Max.Y - _Min.Y);\r\n\r\n                var x = new TransformGroup();\r\n                x.Children.Add(new TranslateTransform(-view.X, -view.Y));\r\n                if (view.Width > 0 && view.Height > 0)\r\n                    x.Children.Add(new ScaleTransform(1 / view.Width, 1 / view.Height));\r\n                x.Children.Add(new ScaleTransform(avail.Width, avail.Height));\r\n                x.Children.Add(new TranslateTransform(view.X, view.Y));\r\n                TheCanvas.LayoutTransform = x;\r\n\r\n                TheCanvas.RenderTransform = new TranslateTransform(px, py);\r\n            }\r\n            catch (Exception)\r\n            {\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Controls/PerformanceTicker.xaml",
    "content": "﻿<UserControl x:Class=\"WickedSick.Thea.Controls.PerformanceTicker\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n    <Grid>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition />\r\n            <RowDefinition Height=\"Auto\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"Auto\" />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Border Grid.RowSpan=\"2\" BorderThickness=\"0,0,1,0\" BorderBrush=\"Black\" />\r\n        <TextBlock Text=\"MAX\" Margin=\"5,0\" VerticalAlignment=\"Top\" HorizontalAlignment=\"Right\" />\r\n        <TextBlock Text=\"30\" Margin=\"5,0\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Right\" />\r\n        <TextBlock Text=\"0\" Margin=\"5,0\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Right\" />\r\n        <Border ClipToBounds=\"True\" Grid.Column=\"1\">\r\n            <Canvas x:Name=\"ChartCanvas\" SizeChanged=\"ChartCanvas_SizeChanged\" Background=\"Transparent\">\r\n\r\n            </Canvas>\r\n        </Border>\r\n        <ScrollBar Grid.Row=\"1\" Grid.Column=\"1\" Height=\"19\" x:Name=\"ChartScrollBar\" Orientation=\"Horizontal\" />\r\n    </Grid>\r\n</UserControl>"
  },
  {
    "path": "Tools/WickedSick.Thea/Controls/PerformanceTicker.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.ObjectModel;\r\nusing System.Linq;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Controls.Primitives;\r\nusing System.Windows.Media;\r\nusing System.Windows.Shapes;\r\nusing WickedSick.Thea.Models;\r\n\r\nnamespace WickedSick.Thea.Controls\r\n{\r\n    public partial class PerformanceTicker : UserControl\r\n    {\r\n        public static readonly System.Windows.DependencyProperty DataProperty = System.Windows.DependencyProperty.Register(\r\n            \"Data\", typeof(ObservableCollection<FrameInfo>), typeof(PerformanceTicker), new PropertyMetadata(DataPropertyChanged));\r\n\r\n        public ObservableCollection<FrameInfo> Data\r\n        {\r\n            get { return (ObservableCollection<FrameInfo>)GetValue(DataProperty); }\r\n            set { SetValue(DataProperty, value); }\r\n        }\r\n\r\n        private static void DataPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs args)\r\n        {\r\n            var pt = d as PerformanceTicker;\r\n            pt.DetachData(args.OldValue as ObservableCollection<FrameInfo>);\r\n            pt.AttachData(args.NewValue as ObservableCollection<FrameInfo>);\r\n        }\r\n\r\n        private Path _Path = new Path();\r\n        private PathGeometry _PathGeom = new PathGeometry();\r\n        private Point _EndPoint = new Point(0.0, 1.0);\r\n        private static readonly double SEPARATION_CONSTANT = 1.0 / 100.0;\r\n        private static readonly double MAX_FPS = 60.0;\r\n\r\n        private TranslateTransform _ChartScrollBarTransform = new TranslateTransform(0.0, 0.0);\r\n\r\n        public PerformanceTicker()\r\n        {\r\n            InitializeComponent();\r\n            _Path.Data = _PathGeom;\r\n            _Path.Stroke = new SolidColorBrush(Colors.ForestGreen);\r\n            _Path.StrokeThickness = 1.0;\r\n            ChartCanvas.Children.Add(_Path);\r\n\r\n            ChartCanvas.RenderTransform = _ChartScrollBarTransform;\r\n\r\n            ChartScrollBar.Minimum = 0.0;\r\n            ChartScrollBar.SmallChange = 1.0 * SEPARATION_CONSTANT;\r\n            ChartScrollBar.LargeChange = ChartScrollBar.SmallChange * 10;\r\n            ChartScrollBar.ValueChanged += ChartScrollBar_ValueChanged;\r\n        }\r\n\r\n        protected void AttachData(ObservableCollection<FrameInfo> data)\r\n        {\r\n            if (data == null)\r\n                return;\r\n            data.CollectionChanged += data_CollectionChanged;\r\n        }\r\n        protected void DetachData(ObservableCollection<FrameInfo> data)\r\n        {\r\n            if (data == null)\r\n                return;\r\n            data.CollectionChanged -= data_CollectionChanged;\r\n        }\r\n        private void data_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)\r\n        {\r\n            switch (e.Action)\r\n            {\r\n                case System.Collections.Specialized.NotifyCollectionChangedAction.Add:\r\n                    AddFrameInfo(e.NewItems[0] as FrameInfo);\r\n                    break;\r\n                case System.Collections.Specialized.NotifyCollectionChangedAction.Reset:\r\n                    _EndPoint.X = 0.0;\r\n                    _PathGeom.Figures.Clear();\r\n                    break;\r\n            }\r\n        }\r\n        private void AddFrameInfo(FrameInfo newfi)\r\n        {\r\n            if (newfi.TimeDiff <= 0)\r\n                return;\r\n            var newEndPoint = _EndPoint;\r\n            newEndPoint.X += newfi.TimeDiff;\r\n            var ts = TimeSpan.FromMilliseconds(newfi.TimeDiff);\r\n            newEndPoint.Y = Math.Min(MAX_FPS, newfi.NumFrames / ts.TotalSeconds) / MAX_FPS;\r\n            _PathGeom.Figures.Add(new PathFigure(_EndPoint, new[] { new LineSegment(newEndPoint, true) }, false));\r\n            _EndPoint = newEndPoint;\r\n            UpdateScrollBar();\r\n        }\r\n\r\n        private void ChartCanvas_SizeChanged(object sender, SizeChangedEventArgs e)\r\n        {\r\n            _PathGeom.Transform = new TransformGroup\r\n            {\r\n                Children = new TransformCollection\r\n                {\r\n                    new ScaleTransform(SEPARATION_CONSTANT, ChartCanvas.ActualHeight),\r\n                    new ScaleTransform(1.0, -1.0),\r\n                    new TranslateTransform(0.0, ChartCanvas.ActualHeight),\r\n                }\r\n            };\r\n            UpdateScrollBar();\r\n        }\r\n        protected void UpdateScrollBar()\r\n        {\r\n            var isAtMax = ChartScrollBar.Value == ChartScrollBar.Maximum;\r\n            var actualEndPoint = _PathGeom.Transform.Transform(_EndPoint);\r\n            ChartScrollBar.Maximum = Math.Max(0.0, actualEndPoint.X - ChartCanvas.ActualWidth);\r\n            if (isAtMax)\r\n                ChartScrollBar.Value = ChartScrollBar.Maximum;\r\n        }\r\n        private void ChartScrollBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)\r\n        {\r\n            _ChartScrollBarTransform.X = -ChartScrollBar.Value;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Controls/Pill.xaml",
    "content": "﻿<UserControl x:Class=\"WickedSick.Thea.Controls.Pill\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition Width=\"*\" />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Border Grid.Column=\"1\" CornerRadius=\"5\" BorderBrush=\"Black\" BorderThickness=\"1\" Background=\"Silver\" Opacity=\".7\">\r\n            <Border.Effect>\r\n                <DropShadowEffect />\r\n            </Border.Effect>\r\n            <TextBlock Text=\"{Binding Length, StringFormat='{}{0} ms'}\" HorizontalAlignment=\"Center\" />\r\n        </Border>\r\n    </Grid>\r\n</UserControl>"
  },
  {
    "path": "Tools/WickedSick.Thea/Controls/Pill.xaml.cs",
    "content": "﻿using System.Windows;\r\nusing System.Windows.Controls;\r\n\r\nnamespace WickedSick.Thea.Controls\r\n{\r\n    public partial class Pill : UserControl\r\n    {\r\n        public Pill()\r\n        {\r\n            InitializeComponent();\r\n            SizeChanged += (s, e) => MetricsChanged();\r\n        }\r\n\r\n        public static readonly DependencyProperty StartProperty = DependencyProperty.Register(\r\n            \"Start\", typeof(int), typeof(Pill), new PropertyMetadata(0, (d, args) => (d as Pill).MetricsChanged()));\r\n\r\n        public static readonly DependencyProperty LengthProperty = DependencyProperty.Register(\r\n            \"Length\", typeof(int), typeof(Pill), new PropertyMetadata(0, (d, args) => (d as Pill).MetricsChanged()));\r\n\r\n        public static readonly DependencyProperty TotalLengthProperty = DependencyProperty.Register(\r\n            \"TotalLength\", typeof(int), typeof(Pill), new PropertyMetadata(0, (d, args) => (d as Pill).MetricsChanged()));\r\n\r\n        public int Start\r\n        {\r\n            get { return (int)GetValue(StartProperty); }\r\n            set { SetValue(StartProperty, value); }\r\n        }\r\n        \r\n        public int Length\r\n        {\r\n            get { return (int)GetValue(LengthProperty); }\r\n            set { SetValue(LengthProperty, value); }\r\n        }\r\n\r\n        public int TotalLength\r\n        {\r\n            get { return (int)GetValue(TotalLengthProperty); }\r\n            set { SetValue(TotalLengthProperty, value); }\r\n        }\r\n\r\n        protected void MetricsChanged()\r\n        {\r\n            if (TotalLength == 0)\r\n            {\r\n                LayoutRoot.ColumnDefinitions[0].Width = new GridLength(0, GridUnitType.Pixel);\r\n                LayoutRoot.ColumnDefinitions[2].Width = new GridLength(0, GridUnitType.Pixel);\r\n            }\r\n            else\r\n            {\r\n                LayoutRoot.ColumnDefinitions[0].Width = new GridLength((double)Start / (double)TotalLength * ActualWidth, GridUnitType.Pixel);\r\n                LayoutRoot.ColumnDefinitions[2].Width = new GridLength(((double)TotalLength - (double)Start - (double)Length) / (double)TotalLength * ActualWidth, GridUnitType.Pixel);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Helpers/FaydeInterop.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Runtime.Serialization.Json;\r\nusing System.Web.Script.Serialization;\r\nusing Newtonsoft.Json;\r\nusing WatiN.Core;\r\nusing WatiN.Core.Exceptions;\r\nusing WickedSick.Thea.Models;\r\nusing WickedSick.Thea.ViewModels;\r\nusing WickedSick.Thea.VisualStudioInterop;\r\n\r\nnamespace WickedSick.Thea.Helpers\r\n{\r\n    public class FaydeInterop : IJavascriptContext\r\n    {\r\n        private Browser _Browser;\r\n        private VisualStudioInstance _VSI;\r\n\r\n        public FaydeInterop(Browser browser)\r\n        {\r\n            _Browser = browser;\r\n            InvalidateCache();\r\n        }\r\n\r\n        public bool IsCacheInvalidated\r\n        {\r\n            get\r\n            {\r\n                IsAlive = VerifyInterop();\r\n                return IsAlive && Eval(\"Fayde.Application.Current.DebugInterop.IsCacheInvalidated\") == \"true\";\r\n            }\r\n        }\r\n        public bool IsAlive { get; protected set; }\r\n\r\n        public void InvalidateCache()\r\n        {\r\n            try\r\n            {\r\n                Execute(\"if (window.Fayde.Application && Fayde.Application.Current.DebugInterop) Fayde.Application.Current.DebugInterop.InvalidateCache();\");\r\n            }\r\n            catch (Exception)\r\n            {\r\n            }\r\n        }\r\n\r\n        public IEnumerable<VisualViewModel> GetVisualTree()\r\n        {\r\n            IsAlive = VerifyInterop();\r\n            if (!IsAlive)\r\n                return Enumerable.Empty<VisualViewModel>();\r\n\r\n            var json = RunFunc(\"GetCache\");\r\n            var cache = ParseJson<DebugInteropCache>(json);\r\n            if (cache == null)\r\n                return Enumerable.Empty<VisualViewModel>();\r\n            return cache.Children.Select(CreateVisualViewModel);\r\n        }\r\n        protected VisualViewModel CreateVisualViewModel(DebugInteropCache cache)\r\n        {\r\n            var vvm = new VisualViewModel\r\n            {\r\n                ID = cache.ID,\r\n                Name = cache.Name,\r\n                TypeName = cache.TypeName,\r\n            };\r\n            if (string.IsNullOrWhiteSpace(vvm.Name))\r\n                vvm.Name = null;\r\n            if (cache.Children != null)\r\n                vvm.VisualChildren = new ObservableCollection<VisualViewModel>(cache.Children.Select(CreateVisualViewModel));\r\n            return vvm;\r\n        }\r\n\r\n        public IEnumerable<int> GetVisualIDsInHitTest()\r\n        {\r\n            IsAlive = VerifyInterop();\r\n            if (!IsAlive)\r\n                return Enumerable.Empty<int>();\r\n\r\n            var json = RunFunc(\"GetVisualIDsInHitTest\");\r\n            return DeserializeList<int>(json);\r\n        }\r\n\r\n        public void AttachToVisualStudio(VisualStudioInstance instance)\r\n        {\r\n            _VSI = instance;\r\n            _VSI.Attach();\r\n        }\r\n\r\n        public IEnumerable<DependencyPropertyCache> GetDependencyProperties()\r\n        {\r\n            IsAlive = VerifyInterop();\r\n            if (!IsAlive)\r\n                return Enumerable.Empty<DependencyPropertyCache>();\r\n\r\n            var json = RunFunc(\"GetDPCache\");\r\n            return ParseJson<List<DependencyPropertyCache>>(json) \r\n                ?? Enumerable.Empty<DependencyPropertyCache>();\r\n        }\r\n\r\n        public IEnumerable<PropertyStorageWrapper> GetStorages(int id)\r\n        {\r\n            IsAlive = VerifyInterop();\r\n            if (!IsAlive)\r\n                return Enumerable.Empty<PropertyStorageWrapper>();\r\n\r\n            var json = RunFunc(\"GetStorages\", id.ToString());\r\n            return DeserializeList(json)\r\n                .Select(d => new PropertyStorageWrapper { DynamicObject = d, })\r\n                .ToList();\r\n        }\r\n\r\n        public LayoutMetrics GetLayoutMetrics(int id)\r\n        {\r\n            IsAlive = VerifyInterop();\r\n            if (!IsAlive)\r\n                return null;\r\n\r\n            var json = RunFunc(\"GetLayoutMetrics\", id.ToString());\r\n            //JsonConvert.DeserializeObject<JsLayoutMetrics>(json);\r\n            //dynamic des = JsonConvert.DeserializeObject<dynamic>(json);\r\n            return LayoutMetrics.FromJson(json);\r\n        }\r\n\r\n        #region Execution Wrapper\r\n\r\n        protected bool VerifyInterop()\r\n        {\r\n            try\r\n            {\r\n                return !string.IsNullOrWhiteSpace(Eval(\"Fayde.Application.Current.DebugInterop\"));\r\n            }\r\n            catch (JavaScriptException)\r\n            {\r\n                return false;\r\n            }\r\n        }\r\n        public void Execute(string script)\r\n        {\r\n            if (_VSI != null && _VSI.IsDebugging)\r\n            {\r\n                try\r\n                {\r\n                    _VSI.ExecuteStatement(script);\r\n                }\r\n                catch (ContextNotAvailableException)\r\n                {\r\n                    _Browser.RunScript(script);\r\n                }\r\n                return;\r\n            }\r\n            _Browser.RunScript(script);\r\n        }\r\n        public string Eval(string expression)\r\n        {\r\n            if (_VSI != null && _VSI.IsDebugging)\r\n            {\r\n                try\r\n                {\r\n                    return _VSI.GetExpression(expression);\r\n                }\r\n                catch (ContextNotAvailableException)\r\n                {\r\n                }\r\n            }\r\n            return _Browser.Eval(expression);\r\n        }\r\n        public string EvalAgainstStackFrame(string expression)\r\n        {\r\n            if (_VSI != null && _VSI.IsDebugging)\r\n            {\r\n                try\r\n                {\r\n                    return _VSI.GetExpression(expression);\r\n                }\r\n                catch (ContextNotAvailableException)\r\n                {\r\n                }\r\n            }\r\n            return null;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Fayde Interop Js Wrapper\r\n\r\n        private string RunFunc(string functionName, string args = null)\r\n        {\r\n            return Eval(string.Format(\"Fayde.Application.Current.DebugInterop.{0}({1})\", functionName, args));\r\n        }\r\n\r\n        #endregion\r\n\r\n        private void RefreshIsThisOnStackFrame(VisualViewModel vvm)\r\n        {\r\n            vvm.IsThisOnStackFrame = false;\r\n            if (_VSI == null)\r\n                return;\r\n            var obj = _VSI.GetExpression(\"this._ID\") as string;\r\n            if (obj == null)\r\n                return;\r\n            if (obj == vvm.ID.ToString())\r\n                vvm.IsThisOnStackFrame = true;\r\n        }\r\n\r\n        private static T ParseJson<T>(string json) where T : class\r\n        {\r\n            var serializer = new DataContractJsonSerializer(typeof(T));\r\n            try\r\n            {\r\n                using (var ms = new MemoryStream(System.Text.UTF8Encoding.UTF8.GetBytes(json)))\r\n                {\r\n                    return serializer.ReadObject(ms) as T;\r\n                }\r\n            }\r\n            catch (Exception)\r\n            {\r\n                return default(T);\r\n            }\r\n        }\r\n\r\n        private static List<dynamic> DeserializeList(string json)\r\n        {\r\n            dynamic result = JsonConvert.DeserializeObject<dynamic>(json) ?? Enumerable.Empty<dynamic>();\r\n            var list = new List<dynamic>();\r\n            foreach (dynamic d in result)\r\n            {\r\n                list.Add(d);\r\n            }\r\n            return list;\r\n        }\r\n\r\n        private static List<T> DeserializeList<T>(string json)\r\n        {\r\n            dynamic result = JsonConvert.DeserializeObject<dynamic>(json) ?? Enumerable.Empty<dynamic>();\r\n            var list = new List<T>();\r\n            foreach (dynamic d in result)\r\n            {\r\n                list.Add((T)d.Value);\r\n            }\r\n            return list;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Helpers/IJavascriptContext.cs",
    "content": "﻿\r\nnamespace WickedSick.Thea.Helpers\r\n{\r\n    public interface IJavascriptContext\r\n    {\r\n        bool IsAlive { get; }\r\n        void Execute(string expression);\r\n        string Eval(string expression);\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/IEnumerableEx.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.Linq;\r\n\r\nnamespace WickedSick.Thea\r\n{\r\n    public static class IEnumerableEx\r\n    {\r\n        public static void MergeInto<T>(this IList<T> src, IList<T> dest, Func<T, T, bool> matchFunc, Func<T, IList<T>> getChildrenFunc)\r\n        {\r\n            if (src == null)\r\n            {\r\n                dest.Clear();\r\n                return;\r\n            }\r\n\r\n            for (int i = 0; i < dest.Count; i++)\r\n            {\r\n                var existing = src.FirstOrDefault(s => matchFunc(s, dest[i]));\r\n                if (existing != null)\r\n                {\r\n                    var destChildren = getChildrenFunc(dest[i]);\r\n                    var srcChildren = getChildrenFunc(existing);\r\n                    if (dest == null)\r\n                        dest = srcChildren;\r\n                    destChildren.MergeInto(srcChildren, matchFunc, getChildrenFunc);\r\n                }\r\n                else\r\n                {\r\n                    dest.RemoveAt(i);\r\n                    i--;\r\n                }\r\n            }\r\n\r\n            foreach (var newItem in src.Except(dest, matchFunc))\r\n                dest.Add(newItem);\r\n        }\r\n\r\n        public static IEnumerable<T> Except<T>(this IEnumerable<T> first, IEnumerable<T> second, Func<T, T, bool> matchFunc)\r\n        {\r\n            var comparer = new AnonymousComparer<T> { MatchFunc = matchFunc };\r\n            return first.Except(second, comparer);\r\n        }\r\n\r\n        public static IEnumerable<T> Intersect<T>(this IEnumerable<T> first, IEnumerable<T> second, Func<T, T, bool> matchFunc)\r\n        {\r\n            var comparer = new AnonymousComparer<T> { MatchFunc = matchFunc };\r\n            return first.Intersect(second, comparer);\r\n        }\r\n    }\r\n\r\n    public class AnonymousComparer<T> : IEqualityComparer<T>\r\n    {\r\n        public Func<T, T, bool> MatchFunc { get; set; }\r\n\r\n        public bool Equals(T x, T y)\r\n        {\r\n            return MatchFunc != null && MatchFunc(x, y);\r\n        }\r\n\r\n        public int GetHashCode(T obj)\r\n        {\r\n            return 0;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea/MainWindow.xaml",
    "content": "﻿<Window x:Class=\"WickedSick.Thea.MainWindow\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:vms=\"clr-namespace:WickedSick.Thea.ViewModels\"\r\n    xmlns:dialog=\"clr-namespace:WickedSick.MVVM.DialogEx;assembly=WickedSick.MVVM\"\r\n    xmlns:views=\"clr-namespace:WickedSick.Thea.Views\"\r\n    xmlns:treeviewex=\"clr-namespace:WickedSick.MVVM.TreeViewEx;assembly=WickedSick.MVVM\"\r\n    xmlns:e=\"clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity\"\r\n    xmlns:localcontrols=\"clr-namespace:WickedSick.Thea.Controls\"\r\n    Title=\"Thea\" Height=\"600\" Width=\"1000\" WindowStartupLocation=\"CenterScreen\">\r\n    <Grid>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"*\" />\r\n        </Grid.RowDefinitions>\r\n        <dialog:DialogControl DataContext=\"{Binding LoadCommand}\" \r\n                              ViewType=\"{x:Type views:LoadWindow}\"\r\n                              ViewModel=\"{Binding DialogDataContext}\"\r\n                              DialogCompleteCommand=\"{Binding ChangedCommand}\"\r\n                              IsDialogVisible=\"{Binding IsRequestingChange, Mode=TwoWay}\" />\r\n        <dialog:DialogControl DataContext=\"{Binding ChooseVisualStudioCommand}\"\r\n                              ViewType=\"{x:Type views:ChooseVisualStudioWindow}\"\r\n                              ViewModel=\"{Binding DialogDataContext}\"\r\n                              DialogCompleteCommand=\"{Binding ChangedCommand}\"\r\n                              IsDialogVisible=\"{Binding IsRequestingChange, Mode=TwoWay}\" />\r\n        <Menu>\r\n            <MenuItem Header=\"File\">\r\n                <MenuItem Header=\"Exit\" />\r\n            </MenuItem>\r\n            <MenuItem Header=\"Edit\">\r\n                <MenuItem Header=\"Attach to Visual Studio...\" Command=\"{Binding ChooseVisualStudioCommand.RequestChangeCommand}\" />\r\n            </MenuItem>\r\n        </Menu>\r\n        <Grid Grid.Row=\"1\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition Width=\"175\" />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Grid Margin=\"5,5,10,5\">\r\n                <Grid.RowDefinitions>\r\n                    <RowDefinition Height=\"*\" />\r\n                    <RowDefinition Height=\"Auto\" />\r\n                </Grid.RowDefinitions>\r\n                <TreeView x:Name=\"VisualsTreeView\" ItemsSource=\"{Binding RootLayers}\">\r\n                    <e:Interaction.Behaviors>\r\n                        <treeviewex:TreeViewBehavior SelectedItem=\"{Binding SelectedVisual, Mode=TwoWay}\" />\r\n                    </e:Interaction.Behaviors>\r\n                    <TreeView.Resources>\r\n                        <HierarchicalDataTemplate DataType=\"{x:Type vms:VisualViewModel}\" ItemsSource=\"{Binding VisualChildren}\">\r\n                            <StackPanel Orientation=\"Horizontal\">\r\n                                <TextBlock Text=\"{Binding ID}\" />\r\n                                <TextBlock FontWeight=\"{Binding IsThisOnStackFrame, Converter={StaticResource boolFontWeightConverter}}\" \r\n                                       Foreground=\"{Binding IsInHitTest, Converter={StaticResource boolSolidColorBrushConverter}}\"\r\n                                       Margin=\"5,0,0,0\" Text=\"{Binding TypeName}\" />\r\n                                <TextBlock FontWeight=\"{Binding IsThisOnStackFrame, Converter={StaticResource boolFontWeightConverter}}\" \r\n                                       Foreground=\"{Binding IsInHitTest, Converter={StaticResource boolSolidColorBrushConverter}}\"\r\n                                       Margin=\"5,0,0,0\" Text=\"{Binding Name, StringFormat=[{0}], TargetNullValue=''}\" />\r\n                            </StackPanel>\r\n                        </HierarchicalDataTemplate>\r\n                    </TreeView.Resources>\r\n                </TreeView>\r\n                <Grid Grid.Row=\"1\" Margin=\"5,5,5,0\">\r\n                    <dialog:DialogControl DataContext=\"{Binding ExamineCommand}\"\r\n                                      ViewType=\"{x:Type views:ExamineWindow}\" />\r\n                    <TextBox x:Name=\"ExamineTextBox\" Margin=\"0,0,75,0\" />\r\n                    <Button Content=\"Examine\" HorizontalAlignment=\"Right\" Width=\"70\" \r\n                        Command=\"{Binding ExamineCommand.RequestChangeCommand}\" CommandParameter=\"{Binding ElementName=ExamineTextBox, Path=Text}\" />\r\n                </Grid>\r\n            </Grid>\r\n            <GridSplitter HorizontalAlignment=\"Right\" VerticalAlignment=\"Stretch\" Width=\"5\" />\r\n            <TabControl Grid.Column=\"1\">\r\n                <TabItem Header=\"Layout Metrics\">\r\n                    <ListView ItemsSource=\"{Binding SelectedVisual.LayoutMetrics.Properties}\">\r\n                        <ListView.View>\r\n                            <GridView>\r\n                                <GridViewColumn Header=\"Property\" DisplayMemberBinding=\"{Binding Key}\" />\r\n                                <GridViewColumn Header=\"Value\" DisplayMemberBinding=\"{Binding Value}\" />\r\n                            </GridView>\r\n                        </ListView.View>\r\n                    </ListView>\r\n                </TabItem>\r\n                <TabItem Header=\"Layout Display\">\r\n                    <!--<localcontrols:LayoutDisplay LayoutMetrics=\"{Binding SelectedVisual.LayoutMetrics}\" />-->\r\n                </TabItem>\r\n                <TabItem Header=\"Properties\">\r\n                    <ListView ItemsSource=\"{Binding SelectedVisual.PropertyStorages}\">\r\n                        <ListView.View>\r\n                            <GridView>\r\n                                <GridViewColumn Header=\"Property Name\" DisplayMemberBinding=\"{Binding DependencyProperty.Name}\" />\r\n                                <GridViewColumn Header=\"Effective\" DisplayMemberBinding=\"{Binding EffectiveValue}\" />\r\n                                <GridViewColumn Header=\"Effective\" DisplayMemberBinding=\"{Binding EffectivePrecedence}\" />\r\n                            </GridView>\r\n                        </ListView.View>\r\n                    </ListView>\r\n                </TabItem>\r\n                <TabItem Header=\"Performance\">\r\n                    <views:PerformanceView DataContext=\"{Binding PerformanceViewModel}\" />\r\n                </TabItem>\r\n                <TabItem Header=\"Dependency Properties\">\r\n                    <ListView ItemsSource=\"{Binding DependencyProperties}\">\r\n                        <ListView.View>\r\n                            <GridView>\r\n                                <GridViewColumn Header=\"ID\" DisplayMemberBinding=\"{Binding ID}\" />\r\n                                <GridViewColumn Header=\"Owner Type\" DisplayMemberBinding=\"{Binding OwnerTypeName}\" />\r\n                                <GridViewColumn Header=\"Name\" DisplayMemberBinding=\"{Binding Name}\" />\r\n                                <GridViewColumn Header=\"Target Type\" DisplayMemberBinding=\"{Binding TargetTypeName}\" />\r\n                                <GridViewColumn Header=\"IsReadOnly\" DisplayMemberBinding=\"{Binding IsReadOnly}\" />\r\n                                <GridViewColumn Header=\"IsAttached\" DisplayMemberBinding=\"{Binding IsAttached}\" />\r\n                            </GridView>\r\n                        </ListView.View>\r\n                    </ListView>\r\n                </TabItem>\r\n                <TabItem Header=\"Timeline\">\r\n                    <views:TimelineView DataContext=\"{Binding TimelineViewModel}\" />\r\n                </TabItem>\r\n            </TabControl>\r\n        </Grid>\r\n    </Grid>\r\n</Window>"
  },
  {
    "path": "Tools/WickedSick.Thea/MainWindow.xaml.cs",
    "content": "﻿using System.Windows;\r\nusing WickedSick.Thea.Views;\r\n\r\nnamespace WickedSick.Thea\r\n{\r\n    public partial class MainWindow : Window\r\n    {\r\n        public MainWindow()\r\n        {\r\n            InitializeComponent();\r\n            Closed += (s, e) => OnClosed();\r\n            (App.Current as App).Initialize();\r\n        }\r\n\r\n        private void OnClosed()\r\n        {\r\n            (App.Current as App).CleanUp(DataContext);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Models/DebugInteropCache.cs",
    "content": "﻿using System.Collections.Generic;\r\nusing System.Runtime.Serialization;\r\n\r\nnamespace WickedSick.Thea.Models\r\n{\r\n    [DataContract]\r\n    public class DebugInteropCache\r\n    {\r\n        [DataMember(Name = \"ID\")]\r\n        public int ID { get; set; }\r\n\r\n        [DataMember(Name = \"Name\")]\r\n        public string Name { get; set; }\r\n\r\n        [DataMember(Name = \"TypeName\")]\r\n        public string TypeName { get; set; }\r\n\r\n        [DataMember(Name = \"Children\")]\r\n        public List<DebugInteropCache> Children { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Models/DependencyPropertyCache.cs",
    "content": "﻿using System.Runtime.Serialization;\r\n\r\nnamespace WickedSick.Thea.Models\r\n{\r\n    [DataContract]\r\n    public class DependencyPropertyCache\r\n    {\r\n        [DataMember(Name = \"ID\")]\r\n        public string ID { get; set; }\r\n\r\n        [DataMember(Name = \"Name\")]\r\n        public string Name { get; set; }\r\n\r\n        [DataMember(Name = \"OwnerTypeName\")]\r\n        public string OwnerTypeName { get; set; }\r\n\r\n        [DataMember(Name = \"TargetTypeName\")]\r\n        public string TargetTypeName { get; set; }\r\n\r\n        [DataMember(Name = \"IsReadOnly\")]\r\n        public bool IsReadOnly { get; set; }\r\n\r\n        [DataMember(Name = \"IsAttached\")]\r\n        public bool IsAttached { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Models/DependencyValue.cs",
    "content": "﻿using WickedSick.MVVM;\r\n\r\nnamespace WickedSick.Thea.Models\r\n{\r\n    public class DependencyValue : ObservableObject\r\n    {\r\n        private string _OwnerTypeName;\r\n        public string OwnerTypeName\r\n        {\r\n            get { return _OwnerTypeName; }\r\n            set\r\n            {\r\n                _OwnerTypeName = value;\r\n                OnPropertyChanged(\"OwnerTypeName\");\r\n            }\r\n        }\r\n\r\n        private string _Name;\r\n        public string Name\r\n        {\r\n            get { return _Name; }\r\n            set\r\n            {\r\n                _Name = value;\r\n                OnPropertyChanged(\"Name\");\r\n            }\r\n        }\r\n\r\n        private object _Value;\r\n        public object Value\r\n        {\r\n            get { return _Value; }\r\n            set\r\n            {\r\n                _Value = value;\r\n                OnPropertyChanged(\"Value\");\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Models/FrameInfo.cs",
    "content": "﻿\r\nnamespace WickedSick.Thea.Models\r\n{\r\n    public class FrameInfo\r\n    {\r\n        public double TimeDiff { get; set; }\r\n        public double NumFrames { get; set; }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea/Models/LayoutMetrics.cs",
    "content": "﻿using System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.Windows;\r\nusing Newtonsoft.Json;\r\n\r\nnamespace WickedSick.Thea.Models\r\n{\r\n    public class LayoutMetrics\r\n    {\r\n        public LayoutMetrics()\r\n        {\r\n            Properties = new ObservableCollection<KeyValuePair<string, object>>();\r\n        }\r\n\r\n        public double? ActualHeight { get; set; }\r\n        public double? ActualWidth { get; set; }\r\n\r\n        public Rect LayoutSlot { get; set; }\r\n        public Point VisualOffset { get; set; }\r\n        public Rect LayoutClip { get; set; }\r\n\r\n        public Size HiddenDesire { get; set; }\r\n        public Size DesiredSize { get; set; }\r\n        public Size RenderSize { get; set; }\r\n\r\n        public double[] AbsoluteXform { get; set; }\r\n        public double[] LayoutXform { get; set; }\r\n        public double[] LocalXform { get; set; }\r\n        public double[] RenderXform { get; set; }\r\n\r\n        public double? TotalOpacity { get; set; }\r\n        public bool TotalIsRenderVisible { get; set; }\r\n        public bool TotalIsHitTestVisible { get; set; }\r\n        public bool TotalRenderProjection { get; set; }\r\n\r\n        public ObservableCollection<KeyValuePair<string, object>> Properties { get; protected set; }\r\n\r\n        public static LayoutMetrics FromJson(string json)\r\n        {\r\n            var js = JsonConvert.DeserializeObject<JsLayoutMetrics>(json);\r\n            var lm = js.ToClr();\r\n            lm.InitProps();\r\n            return lm;\r\n        }\r\n\r\n        protected void InitProps()\r\n        {\r\n            Properties.Clear();\r\n\r\n            Properties.Add(new KeyValuePair<string, object>(\"ActualWidth\", ActualWidth));\r\n            Properties.Add(new KeyValuePair<string, object>(\"ActualHeight\", ActualHeight));\r\n\r\n            Properties.Add(new KeyValuePair<string, object>(\"LayoutSlot\", LayoutSlot));\r\n            Properties.Add(new KeyValuePair<string, object>(\"VisualOffset\", VisualOffset));\r\n            Properties.Add(new KeyValuePair<string, object>(\"LayoutClip\", LayoutClip));\r\n\r\n            Properties.Add(new KeyValuePair<string, object>(\"HiddenDesire\", HiddenDesire));\r\n            Properties.Add(new KeyValuePair<string, object>(\"DesiredSize\", DesiredSize));\r\n            Properties.Add(new KeyValuePair<string, object>(\"RenderSize\", RenderSize));\r\n\r\n            Properties.Add(new KeyValuePair<string, object>(\"AbsoluteXform\", string.Join(\",\", AbsoluteXform)));\r\n            Properties.Add(new KeyValuePair<string, object>(\"LayoutXform\", string.Join(\",\", LayoutXform)));\r\n            Properties.Add(new KeyValuePair<string, object>(\"LocalXform\", string.Join(\",\", LocalXform)));\r\n            Properties.Add(new KeyValuePair<string, object>(\"RenderXform\", string.Join(\",\", RenderXform)));\r\n\r\n            Properties.Add(new KeyValuePair<string, object>(\"TotalOpacity\", TotalOpacity));\r\n            Properties.Add(new KeyValuePair<string, object>(\"TotalIsRenderVisible\", TotalIsRenderVisible));\r\n            Properties.Add(new KeyValuePair<string, object>(\"TotalIsHitTestVisible\", TotalIsHitTestVisible));\r\n            Properties.Add(new KeyValuePair<string, object>(\"TotalRenderProjection\", TotalRenderProjection));\r\n        }\r\n    }\r\n\r\n    internal class JsLayoutMetrics\r\n    {\r\n        public LayoutMetrics ToClr()\r\n        {\r\n            return new LayoutMetrics\r\n            {\r\n                ActualHeight = ActualHeight,\r\n                ActualWidth = ActualWidth,\r\n\r\n                LayoutSlot = LayoutSlot.ToClr(),\r\n                VisualOffset = VisualOffset.ToClr(),\r\n                LayoutClip = LayoutClip.ToClr(),\r\n\r\n                HiddenDesire = HiddenDesire.ToClr(),\r\n                DesiredSize = DesiredSize.ToClr(),\r\n                RenderSize = RenderSize.ToClr(),\r\n\r\n                AbsoluteXform = AbsoluteXform,\r\n                LayoutXform = LayoutXform,\r\n                LocalXform = LocalXform,\r\n                RenderXform = RenderXform,\r\n\r\n                TotalOpacity = TotalOpacity,\r\n                TotalIsRenderVisible = TotalIsRenderVisible,\r\n                TotalIsHitTestVisible = TotalIsHitTestVisible,\r\n                TotalRenderProjection = TotalRenderProjection,\r\n            };\r\n        }\r\n\r\n        [JsonProperty(\"ActualHeight\")]\r\n        public double? ActualHeight { get; set; }\r\n        [JsonProperty(\"ActualWidth\")]\r\n        public double? ActualWidth { get; set; }\r\n\r\n        [JsonProperty(\"LayoutSlot\")]\r\n        public JsRect LayoutSlot { get; set; }\r\n        [JsonProperty(\"VisualOffset\")]\r\n        public JsPoint VisualOffset { get; set; }\r\n        [JsonProperty(\"LayoutClip\")]\r\n        public JsRect LayoutClip { get; set; }\r\n\r\n        [JsonProperty(\"HiddenDesire\")]\r\n        public JsSize HiddenDesire { get; set; }\r\n        [JsonProperty(\"DesiredSize\")]\r\n        public JsSize DesiredSize { get; set; }\r\n        [JsonProperty(\"RenderSize\")]\r\n        public JsSize RenderSize { get; set; }\r\n\r\n        [JsonProperty(\"AbsoluteXform\")]\r\n        public double[] AbsoluteXform { get; set; }\r\n        [JsonProperty(\"LayoutXform\")]\r\n        public double[] LayoutXform { get; set; }\r\n        [JsonProperty(\"LocalXform\")]\r\n        public double[] LocalXform { get; set; }\r\n        [JsonProperty(\"RenderXform\")]\r\n        public double[] RenderXform { get; set; }\r\n\r\n        [JsonProperty(\"TotalOpacity\")]\r\n        public double? TotalOpacity { get; set; }\r\n        [JsonProperty(\"TotalIsRenderVisible\")]\r\n        public bool TotalIsRenderVisible { get; set; }\r\n        [JsonProperty(\"TotalIsHitTestVisible\")]\r\n        public bool TotalIsHitTestVisible { get; set; }\r\n        [JsonProperty(\"TotalRenderProjection\")]\r\n        public bool TotalRenderProjection { get; set; }\r\n    }\r\n\r\n    internal struct JsPoint\r\n    {\r\n        [JsonProperty(\"X\")]\r\n        public double X { get; set; }\r\n        [JsonProperty(\"Y\")]\r\n        public double Y { get; set; }\r\n\r\n        public Point ToClr()\r\n        {\r\n            return new Point\r\n            {\r\n                X = X,\r\n                Y = Y,\r\n            };\r\n        }\r\n    }\r\n\r\n    internal struct JsSize\r\n    {\r\n        [JsonProperty(\"Width\", NullValueHandling = NullValueHandling.Ignore)]\r\n        public double Width { get; set; }\r\n        [JsonProperty(\"Height\", NullValueHandling = NullValueHandling.Ignore)]\r\n        public double Height { get; set; }\r\n\r\n        public Size ToClr()\r\n        {\r\n            return new Size\r\n            {\r\n                Width = Width,\r\n                Height = Height,\r\n            };\r\n        }\r\n    }\r\n\r\n    internal struct JsRect\r\n    {\r\n        [JsonProperty(\"X\")]\r\n        public double X { get; set; }\r\n        [JsonProperty(\"Y\")]\r\n        public double Y { get; set; }\r\n        [JsonProperty(\"Width\")]\r\n        public double Width { get; set; }\r\n        [JsonProperty(\"Height\")]\r\n        public double Height { get; set; }\r\n\r\n        public Rect ToClr()\r\n        {\r\n            return new Rect\r\n            {\r\n                X = X,\r\n                Y = Y,\r\n                Width = Width,\r\n                Height = Height,\r\n            };\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Models/PropertyStorageWrapper.cs",
    "content": "﻿using System;\r\nusing System.Linq;\r\nusing System.Runtime.Serialization;\r\n\r\nnamespace WickedSick.Thea.Models\r\n{\r\n    public enum PropertyPrecedence\r\n    {\r\n        IsEnabled = 0,\r\n        LocalValue = 1,\r\n        LocalStyle = 2,\r\n        ImplicitStyle = 3,\r\n        Inherited = 4,\r\n        InheritedDataContext = 5,\r\n        DefaultValue = 6,\r\n    }\r\n\r\n    public class PropertyStorageWrapper : MVVM.ObservableObject\r\n    {\r\n        public dynamic DynamicObject { get; set; }\r\n\r\n        private DependencyPropertyCache _DependencyProperty;\r\n        public DependencyPropertyCache DependencyProperty\r\n        {\r\n            get { return _DependencyProperty; }\r\n            set\r\n            {\r\n                _DependencyProperty = value;\r\n                OnPropertyChanged(\"DependencyProperty\");\r\n            }\r\n        }\r\n\r\n        public PropertyPrecedence EffectivePrecedence\r\n        {\r\n            get\r\n            {\r\n                int precedence = DynamicObject.Precedence;\r\n                return Enum.GetValues(typeof(PropertyPrecedence))\r\n                    .OfType<PropertyPrecedence>()\r\n                    .FirstOrDefault(pp => (int)pp == precedence);\r\n            }\r\n        }\r\n\r\n        public object EffectiveValue\r\n        {\r\n            get\r\n            {\r\n                var precedence = EffectivePrecedence;\r\n                if (precedence == PropertyPrecedence.IsEnabled)\r\n                    return DynamicObject.InheritedValue;\r\n                if (precedence == PropertyPrecedence.LocalValue)\r\n                    return DynamicObject.Local;\r\n                if (precedence == PropertyPrecedence.LocalStyle)\r\n                    return DynamicObject.LocalStyleValue;\r\n                if (precedence == PropertyPrecedence.ImplicitStyle)\r\n                    return DynamicObject.ImplicitStyleValue;\r\n                if (precedence == PropertyPrecedence.Inherited)\r\n                    return DynamicObject.InheritedValue;\r\n                if (precedence == PropertyPrecedence.InheritedDataContext)\r\n                    return DynamicObject.InheritedValue;\r\n                return null;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Models/TimelineGroup.cs",
    "content": "﻿using Newtonsoft.Json;\r\n\r\nnamespace WickedSick.Thea.Models\r\n{\r\n    public class TimelineGroup\r\n    {\r\n        [JsonProperty(\"Type\")]\r\n        public string Type { get; set; }\r\n\r\n        [JsonProperty(\"Data\")]\r\n        public string Data { get; set; }\r\n\r\n        [JsonProperty(\"Start\")]\r\n        public int Start { get; set; }\r\n\r\n        [JsonProperty(\"Length\")]\r\n        public int Length { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Resources;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing System.Windows;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"WickedSick.Thea\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"WickedSick.Thea\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2012\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n//In order to begin building localizable applications, set \r\n//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file\r\n//inside a <PropertyGroup>.  For example, if you are using US english\r\n//in your source files, set the <UICulture> to en-US.  Then uncomment\r\n//the NeutralResourceLanguage attribute below.  Update the \"en-US\" in\r\n//the line below to match the UICulture setting in the project file.\r\n\r\n//[assembly: NeutralResourcesLanguage(\"en-US\", UltimateResourceFallbackLocation.Satellite)]\r\n\r\n\r\n[assembly: ThemeInfo(\r\n    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located\r\n    //(used if a resource is not found in the page, \r\n    // or application resource dictionaries)\r\n    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located\r\n    //(used if a resource is not found in the page, \r\n    // app, or any theme specific resource dictionaries)\r\n)]\r\n\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Build and Revision Numbers \r\n// by using the '*' as shown below:\r\n// [assembly: AssemblyVersion(\"1.0.*\")]\r\n[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.269\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace WickedSick.Thea.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Resources {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Resources() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"WickedSick.Thea.Properties.Resources\", typeof(Resources).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n</root>"
  },
  {
    "path": "Tools/WickedSick.Thea/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.269\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace WickedSick.Thea.Properties {\r\n    \r\n    \r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"10.0.0.0\")]\r\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {\r\n        \r\n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\r\n        \r\n        public static Settings Default {\r\n            get {\r\n                return defaultInstance;\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\r\n<SettingsFile xmlns=\"uri:settings\" CurrentProfile=\"(Default)\">\r\n  <Profiles>\r\n    <Profile Name=\"(Default)\" />\r\n  </Profiles>\r\n  <Settings />\r\n</SettingsFile>"
  },
  {
    "path": "Tools/WickedSick.Thea/Resources/BoolFontWeightConverter.cs",
    "content": "﻿using System;\r\nusing System.Windows;\r\nusing System.Windows.Data;\r\n\r\nnamespace WickedSick.Thea.Resources\r\n{\r\n    public class BoolFontWeightConverter : IValueConverter\r\n    {\r\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\r\n        {\r\n            if (value is bool && (bool)value)\r\n                return FontWeights.Bold;\r\n            return FontWeights.Normal;\r\n        }\r\n\r\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\r\n        {\r\n            throw new NotImplementedException();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Resources/BoolSolidColorBrushConverter.cs",
    "content": "﻿using System;\r\nusing System.Windows;\r\nusing System.Windows.Data;\r\nusing System.Windows.Media;\r\n\r\nnamespace WickedSick.Thea.Resources\r\n{\r\n    public class BoolSolidColorBrushConverter : IValueConverter\r\n    {\r\n        public Color Color { get; set; }\r\n\r\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\r\n        {\r\n            if (value is bool && (bool)value)\r\n                return new SolidColorBrush(Color);\r\n            return DependencyProperty.UnsetValue;\r\n        }\r\n\r\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\r\n        {\r\n            throw new NotImplementedException();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Resources/BoolVisibilityConverter.cs",
    "content": "﻿using System;\r\nusing System.Windows;\r\nusing System.Windows.Data;\r\n\r\nnamespace WickedSick.Thea.Resources\r\n{\r\n    public class BoolVisibilityConverter : IValueConverter\r\n    {\r\n        public bool IsNegated { get; set; }\r\n\r\n        protected Visibility TrueValue { get { return !IsNegated ? Visibility.Visible : Visibility.Collapsed; } }\r\n        protected Visibility FalseValue { get { return !IsNegated ? Visibility.Collapsed: Visibility.Visible; } }\r\n\r\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\r\n        {\r\n            if (value is bool)\r\n                return (bool)value ? TrueValue : FalseValue;\r\n            if (value is bool?)\r\n                return (bool?)value == true ? TrueValue : FalseValue;\r\n            return Visibility.Visible;\r\n        }\r\n\r\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\r\n        {\r\n            throw new NotImplementedException();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Resources/RelativeSizeValueConverter.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Windows.Data;\r\n\r\nnamespace WickedSick.Thea.Resources\r\n{\r\n    class RelativeSizeValueConverter : IMultiValueConverter\r\n    {\r\n        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)\r\n        {\r\n            double amount = double.Parse(values[0].ToString());\r\n            double total = double.Parse(values[1].ToString());\r\n            double totalSize = double.Parse(values[2].ToString());\r\n            return (amount / total) * totalSize;\r\n        }\r\n\r\n        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)\r\n        {\r\n            throw new NotImplementedException();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/ViewModels/ChooseVisualStudioViewModel.cs",
    "content": "﻿using System.Collections.ObjectModel;\r\nusing WickedSick.MVVM;\r\nusing WickedSick.Thea.VisualStudioInterop;\r\n\r\nnamespace WickedSick.Thea.ViewModels\r\n{\r\n    public class ChooseVisualStudioViewModel : ViewModelBase\r\n    {\r\n        public ChooseVisualStudioViewModel()\r\n        {\r\n            Instances = new ObservableCollection<VisualStudioInstance>(VisualStudioBroker.GetInstances());\r\n        }\r\n\r\n        #region Properties\r\n\r\n        private ObservableCollection<VisualStudioInstance> _Instances;\r\n        public ObservableCollection<VisualStudioInstance> Instances\r\n        {\r\n            get { return _Instances; }\r\n            set\r\n            {\r\n                _Instances = value;\r\n                OnPropertyChanged(\"Instances\");\r\n            }\r\n        }\r\n\r\n        private VisualStudioInstance _SelectedInstance;\r\n        public VisualStudioInstance SelectedInstance\r\n        {\r\n            get { return _SelectedInstance; }\r\n            set\r\n            {\r\n                _SelectedInstance = value;\r\n                OnPropertyChanged(\"SelectedInstance\");\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Refresh\r\n\r\n        private RelayCommand _RefreshCommand;\r\n        public RelayCommand RefreshCommand\r\n        {\r\n            get\r\n            {\r\n                if (_RefreshCommand == null)\r\n                    _RefreshCommand = new RelayCommand(Refresh_Execute);\r\n                return _RefreshCommand;\r\n            }\r\n        }\r\n\r\n        private void Refresh_Execute()\r\n        {\r\n            Instances = new ObservableCollection<VisualStudioInstance>(VisualStudioBroker.GetInstances());\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/ViewModels/ExamineViewModel.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web.Script.Serialization;\r\nusing System.Windows;\r\nusing WickedSick.MVVM;\r\nusing WickedSick.Thea.Helpers;\r\n\r\nnamespace WickedSick.Thea.ViewModels\r\n{\r\n    public class ExamineViewModel : ViewModelBase\r\n    {\r\n        public static ExamineViewModel CreateAndRun(IJavascriptContext jsContext, VisualViewModel visual, string text)\r\n        {\r\n            var vm = new ExamineViewModel\r\n            {\r\n                JsContext = jsContext,\r\n                Visual = visual,\r\n                ExamineText = text,\r\n            };\r\n            vm.Run();\r\n            return vm;\r\n        }\r\n\r\n        #region Properties\r\n\r\n        protected IJavascriptContext JsContext { get; set; }\r\n\r\n        private VisualViewModel _Visual;\r\n        public VisualViewModel Visual\r\n        {\r\n            get { return _Visual; }\r\n            set\r\n            {\r\n                _Visual = value;\r\n                OnPropertyChanged(\"Visual\");\r\n            }\r\n        }\r\n\r\n        private string _ExamineText;\r\n        public string ExamineText\r\n        {\r\n            get { return _ExamineText; }\r\n            set\r\n            {\r\n                _ExamineText = value;\r\n                OnPropertyChanged(\"ExamineText\");\r\n            }\r\n        }\r\n\r\n        private IDictionary<string, object> _ObjectStructure;\r\n        public IDictionary<string, object> ObjectStructure\r\n        {\r\n            get { return _ObjectStructure; }\r\n            set\r\n            {\r\n                _ObjectStructure = value;\r\n                OnPropertyChanged(\"ObjectStructure\");\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        protected void Run()\r\n        {\r\n            return;\r\n            var resolution = \"\";// Visual.ResolveVisualWithJavascript();\r\n            if (!string.IsNullOrWhiteSpace(ExamineText))\r\n                resolution += \".\" + ExamineText;\r\n            var js = string.Format(\"FaydeInterop.StringifyEx({0})\", resolution);\r\n            string json;\r\n            try\r\n            {\r\n                json = JsContext.Eval(js);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                MessageBox.Show(\"Error examining: \" + ex.Message, \"Eval Error\", MessageBoxButton.OK);\r\n                return;\r\n            }\r\n            var serializer = new JavaScriptSerializer { MaxJsonLength = int.MaxValue };\r\n            try\r\n            {\r\n                ObjectStructure = serializer.Deserialize<IDictionary<string, object>>(json);\r\n            }\r\n            catch (InvalidOperationException)\r\n            {\r\n                try\r\n                {\r\n                    ObjectStructure = serializer.Deserialize<object[]>(json)\r\n                        .Select((o, i) => new { Key = i, Value = o })\r\n                        .ToDictionary(a => a.Key.ToString(), a => a.Value);\r\n                }\r\n                catch (InvalidOperationException)\r\n                {\r\n                    if (json.StartsWith(\"\\\"\") && json.EndsWith(\"\\\"\"))\r\n                    {\r\n                        ObjectStructure = new Dictionary<string, object>\r\n                        {\r\n                            { \"Value\", json }\r\n                        };\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/ViewModels/LoadViewModel.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.Linq;\r\nusing System.Threading.Tasks;\r\nusing System.Windows.Threading;\r\nusing WatiN.Core;\r\nusing WickedSick.MVVM;\r\n\r\nnamespace WickedSick.Thea.ViewModels\r\n{\r\n    public class LoadViewModel : ViewModelBase, IDisposable\r\n    {\r\n        private Dispatcher _Dispatcher;\r\n\r\n        public LoadViewModel()\r\n        {\r\n            _Dispatcher = Dispatcher.CurrentDispatcher;\r\n            RefreshCommand.Execute();\r\n        }\r\n\r\n        #region Properties\r\n\r\n        private ObservableCollection<Browser> _Browsers = new ObservableCollection<Browser>();\r\n        public ObservableCollection<Browser> Browsers\r\n        {\r\n            get { return _Browsers; }\r\n            set\r\n            {\r\n                _Browsers = value;\r\n                OnPropertyChanged(\"Browsers\");\r\n            }\r\n        }\r\n\r\n        private Browser _SelectedBrowser;\r\n        public Browser SelectedBrowser\r\n        {\r\n            get { return _SelectedBrowser; }\r\n            set\r\n            {\r\n                _SelectedBrowser = value;\r\n                OnPropertyChanged(\"SelectedBrowser\");\r\n            }\r\n        }\r\n\r\n        private bool _IsBusy;\r\n        public bool IsBusy\r\n        {\r\n            get { return _IsBusy; }\r\n            set\r\n            {\r\n                _IsBusy = value;\r\n                OnPropertyChanged(\"IsBusy\");\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Refresh\r\n\r\n        private RelayCommand _RefreshCommand;\r\n        public RelayCommand RefreshCommand\r\n        {\r\n            get\r\n            {\r\n                if (_RefreshCommand == null)\r\n                    _RefreshCommand = new RelayCommand(Refresh_Execute, Refresh_CanExecute);\r\n                return _RefreshCommand;\r\n            }\r\n        }\r\n\r\n        private void Refresh_Execute()\r\n        {\r\n            IsBusy = true;\r\n            Dispatcher.CurrentDispatcher.BeginInvoke((Action)DoRefresh, new object[] { });\r\n        }\r\n\r\n        private bool Refresh_CanExecute()\r\n        {\r\n            return !IsBusy;\r\n        }\r\n\r\n        private void DoRefresh()\r\n        {\r\n            var browsers = new List<Browser>();\r\n            Exception error = null;\r\n            try\r\n            {\r\n                browsers.AddRange(IE.InternetExplorers());\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                error = ex;\r\n            }\r\n            ContinueRefresh(error, browsers);\r\n        }\r\n\r\n        private void ContinueRefresh(Exception error, List<Browser> browsers)\r\n        {\r\n            _Dispatcher.BeginInvoke((Action<List<Browser>>)FinishRefresh, new object[] { browsers });\r\n        }\r\n\r\n        private void FinishRefresh(List<Browser> browsers)\r\n        {\r\n            Browsers.Clear();\r\n            foreach (var ie in browsers.OfType<IE>())\r\n            {\r\n                ie.AutoClose = false;\r\n            }\r\n            foreach (var ie in browsers)\r\n            {\r\n                Browsers.Add(ie);\r\n            }\r\n            IsBusy = false;\r\n        }\r\n\r\n        #endregion\r\n\r\n        public void Dispose()\r\n        {\r\n            foreach (var b in Browsers.Where(b => b != SelectedBrowser))\r\n            {\r\n                b.Dispose();\r\n            }\r\n            Browsers.Clear();\r\n            SelectedBrowser = null;\r\n        }\r\n\r\n        protected override void OnPropertyChanged(string propertyName)\r\n        {\r\n            base.OnPropertyChanged(propertyName);\r\n            if (propertyName == \"IsBusy\")\r\n                RefreshCommand.ForceCanExecuteChanged();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/ViewModels/MainViewModel.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.Linq;\r\nusing System.Windows.Threading;\r\nusing WatiN.Core;\r\nusing WickedSick.MVVM;\r\nusing WickedSick.MVVM.DialogEx;\r\nusing WickedSick.Thea.Helpers;\r\nusing WickedSick.Thea.Models;\r\n\r\nnamespace WickedSick.Thea.ViewModels\r\n{\r\n    public class MainViewModel : ViewModelBase, IDisposable\r\n    {\r\n        private FaydeInterop _Interop;\r\n        private DispatcherTimer _Timer;\r\n\r\n        public MainViewModel()\r\n        {\r\n        }\r\n\r\n        #region Properties\r\n\r\n        private Browser _AttachedBrowser;\r\n        public Browser AttachedBrowser\r\n        {\r\n            get { return _AttachedBrowser; }\r\n            set\r\n            {\r\n                _AttachedBrowser = value;\r\n                OnPropertyChanged(\"AttachedBrowser\");\r\n            }\r\n        }\r\n\r\n        private ObservableCollection<VisualViewModel> _RootLayers = new ObservableCollection<VisualViewModel>();\r\n        public ObservableCollection<VisualViewModel> RootLayers\r\n        {\r\n            get { return _RootLayers; }\r\n            set\r\n            {\r\n                _RootLayers = value;\r\n                OnPropertyChanged(\"RootLayers\");\r\n            }\r\n        }\r\n\r\n        private ObservableCollection<DependencyPropertyCache> _DependencyProperties = new ObservableCollection<DependencyPropertyCache>();\r\n        public ObservableCollection<DependencyPropertyCache> DependencyProperties\r\n        {\r\n            get { return _DependencyProperties; }\r\n            set\r\n            {\r\n                _DependencyProperties = value;\r\n                OnPropertyChanged(\"DependencyProperties\");\r\n            }\r\n        }\r\n\r\n        private VisualViewModel _SelectedVisual;\r\n        public VisualViewModel SelectedVisual\r\n        {\r\n            get { return _SelectedVisual; }\r\n            set\r\n            {\r\n                _SelectedVisual = value;\r\n                OnPropertyChanged(\"SelectedVisual\");\r\n            }\r\n        }\r\n\r\n        private PerformanceViewModel _PerformanceViewModel = new PerformanceViewModel();\r\n        public PerformanceViewModel PerformanceViewModel\r\n        {\r\n            get { return _PerformanceViewModel; }\r\n            set\r\n            {\r\n                _PerformanceViewModel = value;\r\n                OnPropertyChanged(\"PerformanceViewModel\");\r\n            }\r\n        }\r\n\r\n        private TimelineViewModel _TimelineViewModel = new TimelineViewModel();\r\n        public TimelineViewModel TimelineViewModel\r\n        {\r\n            get { return _TimelineViewModel; }\r\n            set\r\n            {\r\n                _TimelineViewModel = value;\r\n                OnPropertyChanged(\"TimelineViewModel\");\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Load\r\n\r\n        private DialogViewModel<LoadViewModel> _LoadCommand;\r\n        public DialogViewModel<LoadViewModel> LoadCommand\r\n        {\r\n            get\r\n            {\r\n                if (_LoadCommand == null)\r\n                    _LoadCommand = CreateLoadCommand();\r\n                return _LoadCommand;\r\n            }\r\n        }\r\n\r\n        private DialogViewModel<LoadViewModel> CreateLoadCommand()\r\n        {\r\n            return new DialogViewModel<LoadViewModel>\r\n            {\r\n                ViewModelBuilder = o => new LoadViewModel(),\r\n                AcceptAction = lvm => AttachToBrowser(lvm.SelectedBrowser),\r\n                CompleteAction = o =>\r\n                {\r\n                    var lvm = (LoadViewModel)o.Data;\r\n                    lvm.Dispose();\r\n                    if (o.Result != true)\r\n                        App.Current.Shutdown();\r\n                },\r\n            };\r\n        }\r\n\r\n        public void Load()\r\n        {\r\n            LoadCommand.RequestChangeCommand.Execute(null);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Examine\r\n\r\n        private DialogViewModel<string, ExamineViewModel> _ExamineCommand;\r\n        public DialogViewModel<string, ExamineViewModel> ExamineCommand\r\n        {\r\n            get\r\n            {\r\n                if (_ExamineCommand == null)\r\n                    _ExamineCommand = CreateExamineCommand();\r\n                return _ExamineCommand;\r\n            }\r\n        }\r\n\r\n        private DialogViewModel<string, ExamineViewModel> CreateExamineCommand()\r\n        {\r\n            return new DialogViewModel<string, ExamineViewModel>\r\n            {\r\n                ViewModelBuilder = s => ExamineViewModel.CreateAndRun(_Interop, SelectedVisual, s),\r\n            };\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region ChooseVisualStudio\r\n\r\n        private DialogViewModel<ChooseVisualStudioViewModel> _ChooseVisualStudioCommand;\r\n        public DialogViewModel<ChooseVisualStudioViewModel> ChooseVisualStudioCommand\r\n        {\r\n            get\r\n            {\r\n                if (_ChooseVisualStudioCommand == null)\r\n                    _ChooseVisualStudioCommand = CreateChooseVisualStudioCommand();\r\n                return _ChooseVisualStudioCommand;\r\n            }\r\n        }\r\n\r\n        private DialogViewModel<ChooseVisualStudioViewModel> CreateChooseVisualStudioCommand()\r\n        {\r\n            return new DialogViewModel<ChooseVisualStudioViewModel>\r\n            {\r\n                ViewModelBuilder = cvsvm => new ChooseVisualStudioViewModel(),\r\n                AcceptAction = cvsvm => AttachToVisualStudio(cvsvm.SelectedInstance),\r\n            };\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Attach\r\n\r\n        private void AttachToBrowser(Browser browser)\r\n        {\r\n            AttachedBrowser = browser;\r\n            _Interop = new FaydeInterop(AttachedBrowser);\r\n            PerformanceViewModel.JsContext = _Interop;\r\n            TimelineViewModel.JsContext = _Interop;\r\n            RefreshDPs();\r\n            RefreshTree();\r\n            PerformanceViewModel.Update();\r\n            TimelineViewModel.Update();\r\n            //_Interop.PopulateProperties(RootLayers[0]);\r\n            StartTimer();\r\n        }\r\n\r\n        private void AttachToVisualStudio(VisualStudioInterop.VisualStudioInstance instance)\r\n        {\r\n            if (_Timer != null)\r\n            {\r\n                _Timer.Tick -= _Timer_Tick;\r\n                if (_Timer.IsEnabled)\r\n                    _Timer.Stop();\r\n            }\r\n\r\n            _Interop.AttachToVisualStudio(instance);\r\n            StartTimer();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Helpers\r\n\r\n        private void StartTimer()\r\n        {\r\n            _Timer = new DispatcherTimer();\r\n            _Timer.Tick += _Timer_Tick;\r\n            _Timer.Interval = TimeSpan.FromSeconds(1);\r\n            _Timer.Start();\r\n        }\r\n\r\n        private void _Timer_Tick(object sender, EventArgs e)\r\n        {\r\n            RefreshDPs();\r\n            RefreshTree();\r\n            var allVisuals = RootLayers\r\n                .SelectMany(l => l.AllChildren)\r\n                .Concat(RootLayers)\r\n                .ToList();\r\n            //RefreshThisVisual(allVisuals);\r\n            RefreshHitTestVisuals(allVisuals);\r\n            PerformanceViewModel.Update();\r\n            TimelineViewModel.Update();\r\n            UpdateSelectedVisual();\r\n        }\r\n\r\n        private void RefreshTree()\r\n        {\r\n            if (!_Interop.IsAlive)\r\n                RootLayers.Clear();\r\n            if (!_Interop.IsCacheInvalidated)\r\n                return;\r\n\r\n            _Interop.GetVisualTree().ToList()\r\n                .MergeInto(RootLayers, (v1, v2) => v1.ID == v2.ID, vvm => vvm.VisualChildren);\r\n\r\n        }\r\n        private void RefreshThisVisual(List<VisualViewModel> allVisuals)\r\n        {\r\n            var sid = _Interop.EvalAgainstStackFrame(\"this._ID\");\r\n            if (sid == null)\r\n                return;\r\n\r\n            foreach (var v in allVisuals)\r\n                v.IsThisOnStackFrame = false;\r\n            var thisVisual = allVisuals.FirstOrDefault(vvm => vvm.ID.ToString() == sid);\r\n            if (thisVisual != null)\r\n                thisVisual.IsThisOnStackFrame = true;\r\n        }\r\n        private void RefreshHitTestVisuals(List<VisualViewModel> allVisuals)\r\n        {\r\n            var hitTested = _Interop.GetVisualIDsInHitTest().ToList();\r\n            if (hitTested == null)\r\n                return;\r\n\r\n            foreach (var v in allVisuals)\r\n                v.IsInHitTest = false;\r\n\r\n            foreach (var v in allVisuals.Where(vvm => hitTested.Any(s => vvm.ID == s)))\r\n                v.IsInHitTest = true;\r\n        }\r\n        private void RefreshDPs()\r\n        {\r\n            if (DependencyProperties.Count > 0)\r\n                return;\r\n            DependencyProperties = new ObservableCollection<DependencyPropertyCache>(_Interop.GetDependencyProperties());\r\n        }\r\n\r\n        #endregion\r\n\r\n        public void Dispose()\r\n        {\r\n            if (AttachedBrowser != null)\r\n            {\r\n                AttachedBrowser.Dispose();\r\n                AttachedBrowser = null;\r\n            }\r\n        }\r\n\r\n        protected override void OnPropertyChanged(string propertyName)\r\n        {\r\n            base.OnPropertyChanged(propertyName);\r\n            if (propertyName == \"SelectedVisual\")\r\n                UpdateSelectedVisual();\r\n        }\r\n\r\n        protected void UpdateSelectedVisual()\r\n        {\r\n            if (SelectedVisual == null)\r\n                return;\r\n            try\r\n            {\r\n                SelectedVisual.PropertyStorages = new ObservableCollection<PropertyStorageWrapper>(_Interop.GetStorages(SelectedVisual.ID));\r\n                SelectedVisual.LayoutMetrics = _Interop.GetLayoutMetrics(SelectedVisual.ID);\r\n                foreach (var storage in SelectedVisual.PropertyStorages)\r\n                {\r\n                    int? propID = storage.DynamicObject.PropertyID;\r\n                    if (propID != null)\r\n                        storage.DependencyProperty = DependencyProperties.FirstOrDefault(dp => dp.ID == propID.ToString());\r\n                }\r\n            }\r\n            catch (Exception)\r\n            {\r\n\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/ViewModels/PerformanceViewModel.cs",
    "content": "﻿using System;\r\nusing System.Collections.ObjectModel;\r\nusing System.Linq;\r\nusing WickedSick.MVVM;\r\nusing WickedSick.Thea.Helpers;\r\nusing WickedSick.Thea.Models;\r\n\r\nnamespace WickedSick.Thea.ViewModels\r\n{\r\n    public class PerformanceViewModel : ViewModelBase\r\n    {\r\n        private ObservableCollection<FrameInfo> _FramesPerSecond = new ObservableCollection<FrameInfo>();\r\n        public ObservableCollection<FrameInfo> FramesPerSecond\r\n        {\r\n            get { return _FramesPerSecond; }\r\n            set\r\n            {\r\n                _FramesPerSecond = value;\r\n                OnPropertyChanged(\"FramesPerSecond\");\r\n            }\r\n        }\r\n\r\n        public IJavascriptContext JsContext { get; set; }\r\n\r\n        public void Update()\r\n        {\r\n            var info = GetFrameInfo();\r\n            if (info == null)\r\n                return;\r\n            if (FramesPerSecond.Count < 1)\r\n                info.TimeDiff = 0.0;\r\n            FramesPerSecond.Add(info);\r\n        }\r\n\r\n        protected FrameInfo GetFrameInfo()\r\n        {\r\n            if (JsContext == null)\r\n                return null;\r\n            if (!JsContext.IsAlive)\r\n                return null;\r\n            var info = JsContext.Eval(\"Fayde.Application.Current.DebugInterop.GetResetPerfInfo()\");\r\n            var tokens = info.Split(';');\r\n\r\n            int numFrames = 0;\r\n            int.TryParse(tokens.FirstOrDefault(), out numFrames);\r\n            numFrames = Math.Min(numFrames, 70);\r\n\r\n            double diff;\r\n            double.TryParse(tokens.Skip(1).FirstOrDefault(), out diff);\r\n            return new FrameInfo\r\n            {\r\n                NumFrames = numFrames,\r\n                TimeDiff = diff,\r\n            };\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/ViewModels/TimelineViewModel.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Windows.Data;\r\nusing Newtonsoft.Json;\r\nusing WickedSick.Thea.Helpers;\r\nusing WickedSick.Thea.Models;\r\n\r\nnamespace WickedSick.Thea.ViewModels\r\n{\r\n    public class TimelineViewModel : MVVM.ViewModelBase\r\n    {\r\n        public IJavascriptContext JsContext { get; set; }\r\n\r\n        public ObservableCollection<TimelineGroup> Items { get; private set; }\r\n        public CollectionView SortedItems { get; private set; }\r\n        public int TimelineMax { get; private set; }\r\n\r\n        private int _TotalLength;\r\n        public int TotalLength\r\n        {\r\n            get { return _TotalLength; }\r\n            set\r\n            {\r\n                _TotalLength = value;\r\n                OnPropertyChanged(\"TotalLength\");\r\n            }\r\n        }\r\n\r\n        public TimelineViewModel()\r\n        {\r\n            Items = new ObservableCollection<TimelineGroup>();\r\n            Items.Add(new TimelineGroup() { Data = \"App.Resources\", Start = 2, Length = 0, Type = \"Parse\" });\r\n            Items.Add(new TimelineGroup() { Data = \"App\", Start = 3, Length = 4, Type = \"Parse\" });\r\n            Items.Add(new TimelineGroup() { Data = \"\", Start = 38, Length = 11, Type = \"LayoutPass\" });\r\n            Items.Add(new TimelineGroup() { Data = \"Page\", Start = 236, Length = 106, Type = \"Parse\" });\r\n            Items.Add(new TimelineGroup() { Data = \"http://localhost/NflDraft/default.fap#\", Start = 8, Length = 335, Type = \"Navigate\" });\r\n            Items.Add(new TimelineGroup() { Data = \"\", Start = 334, Length = 451, Type = \"LayoutPass\" });\r\n            Items.CollectionChanged += Items_CollectionChanged;\r\n            CalculateTimelineMax();\r\n\r\n            SortedItems = (CollectionView)CollectionViewSource.GetDefaultView(Items);\r\n            SortedItems.SortDescriptions.Add(new SortDescription(\"Start\", ListSortDirection.Ascending));\r\n        }\r\n\r\n        private void CalculateTimelineMax()\r\n        {\r\n            int max = 0;\r\n            foreach (TimelineGroup tg in Items)\r\n            {\r\n                max = Math.Max(max, tg.Start + tg.Length);\r\n            }\r\n            TimelineMax = max;\r\n        }\r\n\r\n        private void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)\r\n        {\r\n            CalculateTimelineMax();\r\n        }\r\n\r\n        public void Update()\r\n        {\r\n            var grps = GetTimelineGroups().ToList();\r\n            if (grps.Count != Items.Count)\r\n            {\r\n                Items.Clear();\r\n                grps.ForEach(Items.Add);\r\n                TotalLength = Items.Max(tg => tg.Start + tg.Length);\r\n            }\r\n        }\r\n\r\n        protected IEnumerable<TimelineGroup> GetTimelineGroups()\r\n        {\r\n            if (JsContext == null)\r\n                return Enumerable.Empty<TimelineGroup>();\r\n            if (!JsContext.IsAlive)\r\n                return Enumerable.Empty<TimelineGroup>();\r\n            var json = JsContext.Eval(\"JSON.stringify(TimelineProfile.Groups)\");\r\n            return JsonConvert.DeserializeObject<List<TimelineGroup>>(json);\r\n        }\r\n    }\r\n}\n"
  },
  {
    "path": "Tools/WickedSick.Thea/ViewModels/VisualViewModel.cs",
    "content": "﻿using System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.Linq;\r\nusing WickedSick.MVVM;\r\nusing WickedSick.Thea.Models;\r\n\r\nnamespace WickedSick.Thea.ViewModels\r\n{\r\n    public class VisualViewModel : ViewModelBase\r\n    {\r\n        #region Properties\r\n\r\n        public int ID { get; set; }\r\n\r\n        private bool _IsThisOnStackFrame;\r\n        public bool IsThisOnStackFrame\r\n        {\r\n            get { return _IsThisOnStackFrame; }\r\n            set\r\n            {\r\n                _IsThisOnStackFrame = value;\r\n                OnPropertyChanged(\"IsThisOnStackFrame\");\r\n            }\r\n        }\r\n\r\n        private bool _IsInHitTest;\r\n        public bool IsInHitTest\r\n        {\r\n            get { return _IsInHitTest; }\r\n            set\r\n            {\r\n                _IsInHitTest = value;\r\n                OnPropertyChanged(\"IsInHitTest\");\r\n            }\r\n        }\r\n\r\n        private string _TypeName;\r\n        public string TypeName\r\n        {\r\n            get { return _TypeName; }\r\n            set\r\n            {\r\n                _TypeName = value;\r\n                OnPropertyChanged(\"TypeName\");\r\n            }\r\n        }\r\n\r\n        private string _Name;\r\n        public string Name\r\n        {\r\n            get { return _Name; }\r\n            set\r\n            {\r\n                _Name = value;\r\n                OnPropertyChanged(\"Name\");\r\n            }\r\n        }\r\n\r\n        private ObservableCollection<VisualViewModel> _VisualChildren = new ObservableCollection<VisualViewModel>();\r\n        public ObservableCollection<VisualViewModel> VisualChildren\r\n        {\r\n            get { return _VisualChildren; }\r\n            set\r\n            {\r\n                _VisualChildren = value;\r\n                OnPropertyChanged(\"VisualChildren\");\r\n            }\r\n        }\r\n\r\n        private ObservableCollection<PropertyStorageWrapper> _PropertyStorages;\r\n        public ObservableCollection<PropertyStorageWrapper> PropertyStorages\r\n        {\r\n            get { return _PropertyStorages; }\r\n            set\r\n            {\r\n                _PropertyStorages = value;\r\n                OnPropertyChanged(\"PropertyStorages\");\r\n            }\r\n        }\r\n\r\n        private LayoutMetrics _LayoutMetrics;\r\n        public LayoutMetrics LayoutMetrics\r\n        {\r\n            get { return _LayoutMetrics; }\r\n            set\r\n            {\r\n                _LayoutMetrics = value;\r\n                OnPropertyChanged(\"LayoutMetrics\");\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        public IEnumerable<VisualViewModel> AllChildren\r\n        {\r\n            get\r\n            {\r\n                if (!VisualChildren.Any())\r\n                    return Enumerable.Empty<VisualViewModel>();\r\n                return VisualChildren.Concat(VisualChildren.SelectMany(vc => vc.AllChildren));\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/ChooseVisualStudioWindow.xaml",
    "content": "﻿<Window \r\n    x:Class=\"WickedSick.Thea.Views.ChooseVisualStudioWindow\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    Title=\"Attach to Visual Studio\" Height=\"300\" Width=\"600\"\r\n    WindowStartupLocation=\"CenterOwner\" WindowStyle=\"ToolWindow\" ResizeMode=\"NoResize\">\r\n    <Grid>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"*\" />\r\n            <RowDefinition Height=\"Auto\" />\r\n        </Grid.RowDefinitions>\r\n        <Button Content=\"Refresh\" HorizontalAlignment=\"Right\" Margin=\"5\" Padding=\"5\"\r\n                Command=\"{Binding RefreshCommand}\" />\r\n        <ListBox Grid.Row=\"1\" SelectionChanged=\"ListBox_SelectionChanged\"\r\n                 ItemsSource=\"{Binding Instances}\" SelectedItem=\"{Binding SelectedInstance}\">\r\n            <ListBox.ItemTemplate>\r\n                <DataTemplate>\r\n                    <StackPanel Cursor=\"Hand\" Orientation=\"Horizontal\" Margin=\"5\">\r\n                        <TextBlock Text=\"{Binding ProcessTitle}\" />\r\n                        <TextBlock Margin=\"5,0,0,0\" Text=\"{Binding ProcessID, StringFormat='[{0}]'}\" />\r\n                    </StackPanel>\r\n                </DataTemplate>\r\n            </ListBox.ItemTemplate>\r\n        </ListBox>\r\n        <StackPanel Grid.Row=\"2\" Orientation=\"Horizontal\" HorizontalAlignment=\"Center\">\r\n            <Button Content=\"Cancel\" Width=\"80\" Margin=\"5\" Padding=\"5\" Click=\"Cancel_Click\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Window>"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/ChooseVisualStudioWindow.xaml.cs",
    "content": "﻿using System.Windows;\r\nusing System.Windows.Controls;\r\n\r\nnamespace WickedSick.Thea.Views\r\n{\r\n    public partial class ChooseVisualStudioWindow : Window\r\n    {\r\n        public ChooseVisualStudioWindow()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\r\n        {\r\n            if ((sender as ListBox).SelectedItem != null)\r\n                DialogResult = true;\r\n        }\r\n\r\n        private void Cancel_Click(object sender, RoutedEventArgs e)\r\n        {\r\n            DialogResult = false;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/ExamineWindow.xaml",
    "content": "﻿<Window \r\n    x:Class=\"WickedSick.Thea.Views.ExamineWindow\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    Title=\"Examine\" Height=\"600\" Width=\"800\">\r\n    <Grid>\r\n        <ListView ItemsSource=\"{Binding ObjectStructure}\">\r\n            <ListView.View>\r\n                <GridView>\r\n                    <GridViewColumn DisplayMemberBinding=\"{Binding Key}\" />\r\n                    <GridViewColumn DisplayMemberBinding=\"{Binding Value}\" />\r\n                </GridView>\r\n            </ListView.View>\r\n        </ListView>\r\n    </Grid>\r\n</Window>"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/ExamineWindow.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Data;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Imaging;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace WickedSick.Thea.Views\r\n{\r\n    /// <summary>\r\n    /// Interaction logic for ExamineWindow.xaml\r\n    /// </summary>\r\n    public partial class ExamineWindow : Window\r\n    {\r\n        public ExamineWindow()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/LoadWindow.xaml",
    "content": "﻿<Window \r\n    x:Class=\"WickedSick.Thea.Views.LoadWindow\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    Title=\"Attach to IE\" Height=\"300\" Width=\"300\" \r\n    WindowStartupLocation=\"CenterOwner\" WindowStyle=\"ToolWindow\" ResizeMode=\"NoResize\">\r\n    <Grid>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"*\" />\r\n        </Grid.RowDefinitions>\r\n        <Button Content=\"Refresh\" HorizontalAlignment=\"Right\" Margin=\"5\" Padding=\"5\"\r\n                Command=\"{Binding RefreshCommand}\" />\r\n        <ListBox Grid.Row=\"1\" SelectionChanged=\"ListBox_SelectionChanged\"\r\n                 ItemsSource=\"{Binding Browsers}\" SelectedItem=\"{Binding SelectedBrowser}\">\r\n            <ListBox.ItemTemplate>\r\n                <DataTemplate>\r\n                    <StackPanel Cursor=\"Hand\" Orientation=\"Horizontal\" Margin=\"5\">\r\n                        <TextBlock Text=\"{Binding Title}\" />\r\n                        <TextBlock Margin=\"5,0,0,0\" Text=\"{Binding ProcessID, StringFormat='[{0}]'}\" />\r\n                    </StackPanel>\r\n                </DataTemplate>\r\n            </ListBox.ItemTemplate>\r\n        </ListBox>\r\n    </Grid>\r\n</Window>"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/LoadWindow.xaml.cs",
    "content": "﻿using System.Windows;\r\nusing System.Windows.Controls;\r\n\r\nnamespace WickedSick.Thea.Views\r\n{\r\n    public partial class LoadWindow : Window\r\n    {\r\n        public LoadWindow()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        private void ListBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)\r\n        {\r\n            if ((sender as ListBox).SelectedItem != null)\r\n                DialogResult = true;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/PerformanceView.xaml",
    "content": "﻿<UserControl x:Class=\"WickedSick.Thea.Views.PerformanceView\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:localcontrols=\"clr-namespace:WickedSick.Thea.Controls\"\r\n    xmlns:dv=\"clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit\"\r\n    xmlns:charting=\"clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit\">\r\n    <Grid>\r\n        <charting:Chart Visibility=\"Collapsed\">\r\n            <charting:Chart.Series>\r\n                <charting:LineSeries Title=\"Frames Per Second\" \r\n                                     ItemsSource=\"{Binding FramesPerSecond}\"\r\n                                     IndependentValueBinding=\"{Binding TimeDiff}\"\r\n                                     DependentValueBinding=\"{Binding NumFrames}\">\r\n                    <charting:LineSeries.IndependentAxis>\r\n                        <charting:LinearAxis Orientation=\"X\" />\r\n                    </charting:LineSeries.IndependentAxis>\r\n                    <charting:LineSeries.DependentRangeAxis>\r\n                        <charting:LinearAxis Orientation=\"Y\" Minimum=\"0\" Maximum=\"70\" />\r\n                    </charting:LineSeries.DependentRangeAxis>\r\n                </charting:LineSeries>\r\n            </charting:Chart.Series>\r\n        </charting:Chart>\r\n        <localcontrols:PerformanceTicker Data=\"{Binding FramesPerSecond}\">\r\n        </localcontrols:PerformanceTicker>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/PerformanceView.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Data;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Imaging;\r\nusing System.Windows.Navigation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace WickedSick.Thea.Views\r\n{\r\n    /// <summary>\r\n    /// Interaction logic for PerformanceView.xaml\r\n    /// </summary>\r\n    public partial class PerformanceView : UserControl\r\n    {\r\n        public PerformanceView()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/TimelineView.xaml",
    "content": "﻿<UserControl x:Class=\"WickedSick.Thea.Views.TimelineView\"\r\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \r\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \r\n             xmlns:vm=\"clr-namespace:WickedSick.Thea.ViewModels\"\r\n             xmlns:r=\"clr-namespace:WickedSick.Thea.Resources\"\r\n             mc:Ignorable=\"d\" \r\n             d:DesignHeight=\"300\" d:DesignWidth=\"900\">\r\n    <UserControl.Resources>\r\n        <r:RelativeSizeValueConverter x:Key=\"RelativeSizeValueConverter\"/>\r\n    </UserControl.Resources>\r\n    <UserControl.DataContext>\r\n        <vm:TimelineViewModel/>\r\n    </UserControl.DataContext>\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <DataGrid Grid.Row=\"1\" ItemsSource=\"{Binding Items}\" AutoGenerateColumns=\"False\" CanUserAddRows=\"False\" HeadersVisibility=\"Column\" FrozenColumnCount=\"4\">\r\n            <DataGrid.Columns>\r\n                <DataGridTextColumn Header=\"Data\" Binding=\"{Binding Data}\"/>\r\n                <DataGridTextColumn Header=\"Type\" Binding=\"{Binding Type}\"/>\r\n                <DataGridTextColumn Header=\"Start\" Binding=\"{Binding Start}\"/>\r\n                <DataGridTextColumn Header=\"Length\" Binding=\"{Binding Length}\"/>\r\n                <DataGridTemplateColumn Width=\"*\" Header=\"Timeline\">\r\n                    <DataGridTemplateColumn.CellTemplate>\r\n                        <DataTemplate>\r\n                            <Canvas VerticalAlignment=\"Stretch\">\r\n                                <Border Margin=\"-2\" BorderBrush=\"Black\" BorderThickness=\"1\" Background=\"SteelBlue\">\r\n                                    <Canvas.Left>\r\n                                        <MultiBinding Converter=\"{StaticResource RelativeSizeValueConverter}\">\r\n                                            <Binding Path=\"Start\"/>\r\n                                            <Binding Path=\"DataContext.TimelineMax\" ElementName=\"LayoutRoot\"/>\r\n                                            <Binding RelativeSource=\"{RelativeSource TemplatedParent}\" Path=\"ActualWidth\"/>\r\n                                        </MultiBinding>\r\n                                    </Canvas.Left>\r\n                                    <Border.Width>\r\n                                        <MultiBinding Converter=\"{StaticResource RelativeSizeValueConverter}\">\r\n                                            <Binding Path=\"Length\"/>\r\n                                            <Binding Path=\"DataContext.TimelineMax\" ElementName=\"LayoutRoot\"/>\r\n                                            <Binding RelativeSource=\"{RelativeSource TemplatedParent}\" Path=\"ActualWidth\"/>\r\n                                        </MultiBinding>\r\n                                    </Border.Width>\r\n                                    <TextBlock Padding=\"1\"></TextBlock>\r\n                                </Border>\r\n                            </Canvas>\r\n                        </DataTemplate>\r\n                    </DataGridTemplateColumn.CellTemplate>\r\n                </DataGridTemplateColumn>\r\n            </DataGrid.Columns>\r\n        </DataGrid>        \r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/TimelineView.xaml.cs",
    "content": "﻿using System.Windows.Controls;\r\n\r\nnamespace WickedSick.Thea.Views\r\n{\r\n    public partial class TimelineView : UserControl\r\n    {\r\n        public TimelineView()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/VisualTree.xaml",
    "content": "﻿<UserControl \r\n    x:Class=\"WickedSick.Thea.Views.VisualTree\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:vms=\"clr-namespace:WickedSick.Thea.ViewModels\"\r\n    xmlns:dialog=\"clr-namespace:WickedSick.MVVM.DialogEx;assembly=WickedSick.MVVM\"\r\n    xmlns:views=\"clr-namespace:WickedSick.Thea.Views\"\r\n    xmlns:treeviewex=\"clr-namespace:WickedSick.MVVM.TreeViewEx;assembly=WickedSick.MVVM\"\r\n    xmlns:e=\"clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity\">\r\n    <Grid MinHeight=\"200\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"250\" />\r\n            <ColumnDefinition MinWidth=\"200\" />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid Margin=\"5,5,10,5\">\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"*\" />\r\n                <RowDefinition Height=\"Auto\" />\r\n            </Grid.RowDefinitions>\r\n            <TreeView x:Name=\"VisualsTreeView\" ItemsSource=\"{Binding RootLayers}\">\r\n                <e:Interaction.Behaviors>\r\n                    <treeviewex:TreeViewBehavior SelectedItem=\"{Binding SelectedVisual, Mode=TwoWay}\" />\r\n                </e:Interaction.Behaviors>\r\n                <TreeView.Resources>\r\n                    <HierarchicalDataTemplate DataType=\"{x:Type vms:VisualViewModel}\" ItemsSource=\"{Binding VisualChildren}\">\r\n                        <StackPanel Orientation=\"Horizontal\">\r\n                            <TextBlock Text=\"{Binding ID}\" />\r\n                            <TextBlock FontWeight=\"{Binding IsThisOnStackFrame, Converter={StaticResource boolFontWeightConverter}}\" \r\n                                       Foreground=\"{Binding IsInHitTest, Converter={StaticResource boolSolidColorBrushConverter}}\"\r\n                                       Margin=\"5,0,0,0\" Text=\"{Binding TypeName}\" />\r\n                            <TextBlock FontWeight=\"{Binding IsThisOnStackFrame, Converter={StaticResource boolFontWeightConverter}}\" \r\n                                       Foreground=\"{Binding IsInHitTest, Converter={StaticResource boolSolidColorBrushConverter}}\"\r\n                                       Margin=\"5,0,0,0\" Text=\"{Binding Name, StringFormat=[{0}], TargetNullValue=''}\" />\r\n                        </StackPanel>\r\n                    </HierarchicalDataTemplate>\r\n                </TreeView.Resources>\r\n            </TreeView>\r\n            <Grid Grid.Row=\"1\" Margin=\"5,5,5,0\">\r\n                <dialog:DialogControl DataContext=\"{Binding ExamineCommand}\"\r\n                                      ViewType=\"{x:Type views:ExamineWindow}\" />\r\n                <TextBox x:Name=\"ExamineTextBox\" Margin=\"0,0,75,0\" />\r\n                <Button Content=\"Examine\" HorizontalAlignment=\"Right\" Width=\"70\" \r\n                        Command=\"{Binding ExamineCommand.RequestChangeCommand}\" CommandParameter=\"{Binding ElementName=ExamineTextBox, Path=Text}\" />\r\n            </Grid>\r\n        </Grid>\r\n        <GridSplitter HorizontalAlignment=\"Right\" VerticalAlignment=\"Stretch\" Width=\"5\" />\r\n        <ScrollViewer Grid.Column=\"1\" Margin=\"5\">\r\n            <ItemsControl ItemsSource=\"{Binding SelectedVisual.Properties}\">\r\n                <ItemsControl.ItemTemplate>\r\n                    <DataTemplate>\r\n                        <StackPanel Orientation=\"Horizontal\">\r\n                            <TextBlock Width=\"200\" Text=\"{Binding Name}\" />\r\n                            <TextBlock Width=\"300\" Text=\"{Binding Value}\" />\r\n                            <TextBlock Width=\"100\" Text=\"{Binding OwnerTypeName}\" />\r\n                        </StackPanel>\r\n                    </DataTemplate>\r\n                </ItemsControl.ItemTemplate>\r\n            </ItemsControl>\r\n        </ScrollViewer>\r\n    </Grid>\r\n</UserControl>"
  },
  {
    "path": "Tools/WickedSick.Thea/Views/VisualTree.xaml.cs",
    "content": "﻿using System.Windows.Controls;\r\n\r\nnamespace WickedSick.Thea.Views\r\n{\r\n    public partial class VisualTree : UserControl\r\n    {\r\n        public VisualTree()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea/WickedSick.Thea.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\r\n    <ProductVersion>8.0.30703</ProductVersion>\r\n    <SchemaVersion>2.0</SchemaVersion>\r\n    <ProjectGuid>{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}</ProjectGuid>\r\n    <OutputType>WinExe</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>WickedSick.Thea</RootNamespace>\r\n    <AssemblyName>WickedSick.Thea</AssemblyName>\r\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r\n    <TargetFrameworkProfile>\r\n    </TargetFrameworkProfile>\r\n    <FileAlignment>512</FileAlignment>\r\n    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <DebugType>pdbonly</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n      <SpecificVersion>False</SpecificVersion>\r\n      <EmbedInteropTypes>True</EmbedInteropTypes>\r\n      <HintPath>..\\ThirdParty\\WatiN\\Microsoft.mshtml.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"Newtonsoft.Json\">\r\n      <HintPath>..\\..\\ThirdParty\\Newtonsoft.Json.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Runtime.Serialization\" />\r\n    <Reference Include=\"System.Web.Extensions\" />\r\n    <Reference Include=\"System.Windows.Controls.DataVisualization.Toolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Xml\" />\r\n    <Reference Include=\"Microsoft.CSharp\" />\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"System.Xaml\">\r\n      <RequiredTargetFramework>4.0</RequiredTargetFramework>\r\n    </Reference>\r\n    <Reference Include=\"WatiN.Core\">\r\n      <HintPath>..\\ThirdParty\\WatiN\\WatiN.Core.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"WindowsBase\" />\r\n    <Reference Include=\"PresentationCore\" />\r\n    <Reference Include=\"PresentationFramework\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <ApplicationDefinition Include=\"App.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </ApplicationDefinition>\r\n    <Compile Include=\"Controls\\LayoutDisplay.xaml.cs\">\r\n      <DependentUpon>LayoutDisplay.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Controls\\PerformanceTicker.xaml.cs\">\r\n      <DependentUpon>PerformanceTicker.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Helpers\\FaydeInterop.cs\" />\r\n    <Compile Include=\"Helpers\\IJavascriptContext.cs\" />\r\n    <Compile Include=\"IEnumerableEx.cs\" />\r\n    <Compile Include=\"Models\\DebugInteropCache.cs\" />\r\n    <Compile Include=\"Models\\DependencyPropertyCache.cs\" />\r\n    <Compile Include=\"Models\\DependencyValue.cs\" />\r\n    <Compile Include=\"Models\\FrameInfo.cs\" />\r\n    <Compile Include=\"Models\\LayoutMetrics.cs\" />\r\n    <Compile Include=\"Models\\PropertyStorageWrapper.cs\" />\r\n    <Compile Include=\"Models\\TimelineGroup.cs\" />\r\n    <Compile Include=\"Resources\\BoolSolidColorBrushConverter.cs\" />\r\n    <Compile Include=\"Resources\\BoolFontWeightConverter.cs\" />\r\n    <Compile Include=\"Resources\\BoolVisibilityConverter.cs\" />\r\n    <Compile Include=\"Resources\\RelativeSizeValueConverter.cs\" />\r\n    <Compile Include=\"ViewModels\\ChooseVisualStudioViewModel.cs\" />\r\n    <Compile Include=\"ViewModels\\ExamineViewModel.cs\" />\r\n    <Compile Include=\"ViewModels\\LoadViewModel.cs\" />\r\n    <Compile Include=\"ViewModels\\MainViewModel.cs\" />\r\n    <Compile Include=\"ViewModels\\PerformanceViewModel.cs\" />\r\n    <Compile Include=\"ViewModels\\TimelineViewModel.cs\" />\r\n    <Compile Include=\"ViewModels\\VisualViewModel.cs\" />\r\n    <Compile Include=\"Views\\ChooseVisualStudioWindow.xaml.cs\">\r\n      <DependentUpon>ChooseVisualStudioWindow.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Views\\ExamineWindow.xaml.cs\">\r\n      <DependentUpon>ExamineWindow.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Views\\LoadWindow.xaml.cs\">\r\n      <DependentUpon>LoadWindow.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Views\\PerformanceView.xaml.cs\">\r\n      <DependentUpon>PerformanceView.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Views\\TimelineView.xaml.cs\">\r\n      <DependentUpon>TimelineView.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Views\\VisualTree.xaml.cs\">\r\n      <DependentUpon>VisualTree.xaml</DependentUpon>\r\n    </Compile>\r\n    <Page Include=\"Controls\\LayoutDisplay.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Controls\\PerformanceTicker.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"MainWindow.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Compile Include=\"App.xaml.cs\">\r\n      <DependentUpon>App.xaml</DependentUpon>\r\n      <SubType>Code</SubType>\r\n    </Compile>\r\n    <Compile Include=\"MainWindow.xaml.cs\">\r\n      <DependentUpon>MainWindow.xaml</DependentUpon>\r\n      <SubType>Code</SubType>\r\n    </Compile>\r\n    <Page Include=\"Views\\ChooseVisualStudioWindow.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Views\\ExamineWindow.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Views\\LoadWindow.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Views\\PerformanceView.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Views\\TimelineView.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Views\\VisualTree.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\">\r\n      <SubType>Code</SubType>\r\n    </Compile>\r\n    <Compile Include=\"Properties\\Resources.Designer.cs\">\r\n      <AutoGen>True</AutoGen>\r\n      <DesignTime>True</DesignTime>\r\n      <DependentUpon>Resources.resx</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Properties\\Settings.Designer.cs\">\r\n      <AutoGen>True</AutoGen>\r\n      <DependentUpon>Settings.settings</DependentUpon>\r\n      <DesignTimeSharedInput>True</DesignTimeSharedInput>\r\n    </Compile>\r\n    <EmbeddedResource Include=\"Properties\\Resources.resx\">\r\n      <Generator>ResXFileCodeGenerator</Generator>\r\n      <LastGenOutput>Resources.Designer.cs</LastGenOutput>\r\n    </EmbeddedResource>\r\n    <None Include=\"app.config\" />\r\n    <None Include=\"Properties\\Settings.settings\">\r\n      <Generator>SettingsSingleFileGenerator</Generator>\r\n      <LastGenOutput>Settings.Designer.cs</LastGenOutput>\r\n    </None>\r\n    <AppDesigner Include=\"Properties\\\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Content Include=\"..\\ThirdParty\\WatiN\\Interop.SHDocVw.dll\">\r\n      <Link>Interop.SHDocVw.dll</Link>\r\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n    </Content>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <ProjectReference Include=\"..\\WickedSick.MVVM\\WickedSick.MVVM.csproj\">\r\n      <Project>{C90D69F2-9AB0-468E-8F42-E2C9F7705290}</Project>\r\n      <Name>WickedSick.MVVM</Name>\r\n    </ProjectReference>\r\n    <ProjectReference Include=\"..\\WickedSick.Thea.VisualStudioInterop\\WickedSick.Thea.VisualStudioInterop.csproj\">\r\n      <Project>{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}</Project>\r\n      <Name>WickedSick.Thea.VisualStudioInterop</Name>\r\n    </ProjectReference>\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r\n       Other similar extension points exist, see Microsoft.Common.targets.\r\n  <Target Name=\"BeforeBuild\">\r\n  </Target>\r\n  <Target Name=\"AfterBuild\">\r\n  </Target>\r\n  -->\r\n</Project>"
  },
  {
    "path": "Tools/WickedSick.Thea/app.config",
    "content": "<?xml version=\"1.0\"?>\r\n<configuration>\r\n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.0\"/></startup></configuration>\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea.VisualStudioInterop/ComMessageFilter.cs",
    "content": "﻿using System;\r\nusing System.Runtime.InteropServices;\r\n\r\nnamespace WickedSick.Thea.VisualStudioInterop\r\n{\r\n    public class ComMessageFilter : IOleMessageFilter\r\n    {\r\n        const int SERVERCALL_ISHANDLED = 0;\r\n        const int SERVERCALL_RETRYLATER = 2;\r\n        const int PENDINGMSG_WAITDEFPROCESS = 2;\r\n\r\n        public static void Register()\r\n        {\r\n            IOleMessageFilter newFilter = new ComMessageFilter();\r\n            IOleMessageFilter oldFilter = null;\r\n            CoRegisterMessageFilter(newFilter, out oldFilter);\r\n        }\r\n\r\n        public static void Revoke()\r\n        {\r\n            IOleMessageFilter oldFilter = null;\r\n            CoRegisterMessageFilter(null, out oldFilter);\r\n        }\r\n\r\n        public int HandleInComingCall(int dwCallType, IntPtr hTaskCaller, int dwTickCount, IntPtr lpInterfaceInfo)\r\n        {\r\n            return SERVERCALL_ISHANDLED;\r\n        }\r\n\r\n        public int RetryRejectedCall(IntPtr hTaskCallee, int dwTickCount, int dwRejectType)\r\n        {\r\n            if (dwRejectType == SERVERCALL_RETRYLATER)\r\n            {\r\n                // Retry the thread call immediately if return >=0 & <100.\r\n                return 99;\r\n            }\r\n            return -1; // Too busy; cancel call.\r\n        }\r\n\r\n        public int MessagePending(IntPtr hTaskCallee, int dwTickCount, int dwPendingType)\r\n        {\r\n            return PENDINGMSG_WAITDEFPROCESS;\r\n        }\r\n\r\n        [DllImport(\"Ole32.dll\")]\r\n        private static extern int CoRegisterMessageFilter(IOleMessageFilter newFilter, out IOleMessageFilter oldFilter);\r\n    }\r\n\r\n    [ComImport(), Guid(\"00000016-0000-0000-C000-000000000046\"),\r\n    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]\r\n    interface IOleMessageFilter\r\n    {\r\n        [PreserveSig]\r\n        int HandleInComingCall(int dwCallType, IntPtr hTaskCaller, int dwTickCount, IntPtr lpInterfaceInfo);\r\n\r\n        [PreserveSig]\r\n        int RetryRejectedCall(IntPtr hTaskCallee, int dwTickCount, int dwRejectType);\r\n\r\n        [PreserveSig]\r\n        int MessagePending(IntPtr hTaskCallee, int dwTickCount, int dwPendingType);\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea.VisualStudioInterop/ConsoleTest.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Runtime.InteropServices;\r\nusing System.Runtime.InteropServices.ComTypes;\r\nusing EnvDTE;\r\n\r\nnamespace WickedSick.Thea.VisualStudioInterop\r\n{\r\n    public class ConsoleTest\r\n    {\r\n        public static void Main(string[] args)\r\n        {\r\n            var instances = VisualStudioBroker.GetInstances().ToList();\r\n            if (instances.Count < 1)\r\n            {\r\n                Console.WriteLine(\"No instances\");\r\n                Console.ReadLine();\r\n                return;\r\n            }\r\n            for (int i = 0; i < instances.Count; i++)\r\n            {\r\n                Console.WriteLine(\"{0}: {1} [{2}]\", i + 1, instances[i].ProcessTitle, instances[i].ProcessID);\r\n            }\r\n            int instanceIndex;\r\n            string line;\r\n            do\r\n            {\r\n                line = Console.ReadLine();\r\n            } while (!int.TryParse(line, out instanceIndex) && (instanceIndex - 1) > 0 && (instanceIndex - 1) < instances.Count);\r\n\r\n            var attachedVS = instances[instanceIndex - 1];\r\n            attachedVS.Attach();\r\n            Console.WriteLine(attachedVS.GetExpression(\"VisualTreeHelper.__Debug()\"));\r\n            Console.ReadLine();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea.VisualStudioInterop/ContextNotAvailableException.cs",
    "content": "﻿using System;\r\nusing System.Runtime.InteropServices;\r\n\r\nnamespace WickedSick.Thea.VisualStudioInterop\r\n{\r\n    public class ContextNotAvailableException : Exception\r\n    {\r\n        public ContextNotAvailableException(COMException cex)\r\n            : base(\"Context is not available in Visual Studio.\", cex)\r\n        {\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea.VisualStudioInterop/NativeMethods.cs",
    "content": "﻿using System.Runtime.InteropServices;\r\nusing System.Runtime.InteropServices.ComTypes;\r\n\r\nnamespace WickedSick.Thea.VisualStudioInterop\r\n{\r\n    internal class NativeMethods\r\n    {\r\n        [DllImport(\"ole32.dll\")]\r\n        internal static extern int GetRunningObjectTable(int reserved, out IRunningObjectTable prot);\r\n\r\n        [DllImport(\"ole32.dll\")]\r\n        internal static extern int CreateBindCtx(int reserved, out IBindCtx ppbc);\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea.VisualStudioInterop/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"WickedSick.Thea.VisualStudioInterop\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"WickedSick.Thea.VisualStudioInterop\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2012\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// The following GUID is for the ID of the typelib if this project is exposed to COM\r\n[assembly: Guid(\"3918eaf2-77d8-42c8-9d29-34729d5b7753\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Build and Revision Numbers \r\n// by using the '*' as shown below:\r\n// [assembly: AssemblyVersion(\"1.0.*\")]\r\n[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\r\n"
  },
  {
    "path": "Tools/WickedSick.Thea.VisualStudioInterop/VisualStudioBroker.cs",
    "content": "﻿using System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\n\r\nnamespace WickedSick.Thea.VisualStudioInterop\r\n{\r\n    public class VisualStudioBroker\r\n    {\r\n        public static IEnumerable<VisualStudioInstance> GetInstances()\r\n        {\r\n            return System.Diagnostics.Process.GetProcesses()\r\n                .OrderBy(p => p.ProcessName)\r\n                .Where(IsVisualStudio)\r\n                .Select(InstanceFromProcess)\r\n                .ToList();\r\n        }\r\n\r\n        private static bool IsVisualStudio(Process p)\r\n        {\r\n            return p.ProcessName.StartsWith(\"devenv\");\r\n        }\r\n\r\n        private static VisualStudioInstance InstanceFromProcess(Process p)\r\n        {\r\n            return new VisualStudioInstance(p.Id)\r\n            {\r\n                ProcessTitle = p.MainWindowTitle,\r\n            };\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea.VisualStudioInterop/VisualStudioInstance.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Runtime.InteropServices;\r\nusing System.Runtime.InteropServices.ComTypes;\r\nusing EnvDTE;\r\n\r\nnamespace WickedSick.Thea.VisualStudioInterop\r\n{\r\n    public class VisualStudioInstance\r\n    {\r\n        private _DTE _DTEInstance;\r\n\r\n        protected dynamic GetDebugger()\r\n        {\r\n            if (_DTEInstance == null)\r\n                return null;\r\n\r\n            ComMessageFilter.Register();\r\n            try\r\n            {\r\n                return _DTEInstance.Debugger;\r\n            }\r\n            finally\r\n            {\r\n                ComMessageFilter.Revoke();\r\n            }\r\n        }\r\n\r\n        public VisualStudioInstance(int processID)\r\n        {\r\n            ProcessID = processID;\r\n        }\r\n        \r\n        public int ProcessID { get; protected set; }\r\n        public string ProcessTitle { get; set; }\r\n        public bool IsProcessAlive\r\n        {\r\n            get\r\n            {\r\n                var process = System.Diagnostics.Process.GetProcessById(ProcessID);\r\n                return process != null;\r\n            }\r\n        }\r\n        public bool IsDebugging\r\n        {\r\n            get\r\n            {\r\n                try\r\n                {\r\n                    var debugger = GetDebugger();\r\n                    if (debugger == null)\r\n                        return false;\r\n                    var processes = debugger.DebuggedProcesses;\r\n                    if (processes == null)\r\n                        return false;\r\n                    return processes.Count > 0;\r\n                }\r\n                catch (COMException cex)\r\n                {\r\n                    //if user is interacting with visual studio debugger visualizer, the call will be rejected\r\n                    if (IsRejectedCall(cex))\r\n                    {\r\n                        Debug.WriteLine(\"Rejected call.\");\r\n                        return true;\r\n                    }\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n\r\n        public bool Attach()\r\n        {\r\n            IntPtr numFetched = IntPtr.Zero;\r\n            IRunningObjectTable runningObjectTable;\r\n            IEnumMoniker monikerEnumerator;\r\n            IMoniker[] monikers = new IMoniker[1];\r\n\r\n            NativeMethods.GetRunningObjectTable(0, out runningObjectTable);\r\n            runningObjectTable.EnumRunning(out monikerEnumerator);\r\n            monikerEnumerator.Reset();\r\n\r\n            while (monikerEnumerator.Next(1, monikers, numFetched) == 0)\r\n            {\r\n                IBindCtx ctx;\r\n                NativeMethods.CreateBindCtx(0, out ctx);\r\n\r\n                string runningObjectName;\r\n                monikers[0].GetDisplayName(ctx, null, out runningObjectName);\r\n\r\n                object runningObjectVal;\r\n                runningObjectTable.GetObject(monikers[0], out runningObjectVal);\r\n\r\n                if (runningObjectVal is _DTE && runningObjectName.StartsWith(\"!VisualStudio\"))\r\n                {\r\n                    int currentProcessId = int.Parse(runningObjectName.Split(':')[1]);\r\n\r\n                    if (currentProcessId == ProcessID)\r\n                    {\r\n                        _DTEInstance = (_DTE)runningObjectVal;\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n            _DTEInstance = null;\r\n            return false;\r\n        }\r\n\r\n        public string GetExpression(string expression)\r\n        {\r\n            var debugger = GetDebugger();\r\n            if (debugger == null)\r\n                return null;\r\n            EnvDTE.Expression obj;\r\n            try\r\n            {\r\n                obj = debugger.GetExpression(string.Format(\"({0}).toString()\", expression), false, 1000);\r\n                if (obj == null)\r\n                    return null;\r\n                if (!obj.IsValidValue)\r\n                    return null;\r\n                var value = obj.Value;\r\n                switch (obj.Type)\r\n                {\r\n                    case \"String\":\r\n                        if (value.StartsWith(\"\\\"\"))\r\n                            value = value.Substring(1);\r\n                        if (value.EndsWith(\"\\\"\"))\r\n                            value = value.Length > 1 ? value.Substring(0, value.Length - 1) : \"\";\r\n                        break;\r\n                }\r\n                return value;\r\n            }\r\n            catch (COMException cex)\r\n            {\r\n                HandleCOMException(cex);\r\n            }\r\n            return null;\r\n        }\r\n\r\n        public void ExecuteStatement(string expression)\r\n        {\r\n            var debugger = GetDebugger();\r\n            if (debugger == null)\r\n                return;\r\n            try\r\n            {\r\n                debugger.ExecuteStatement(expression, 1000, true);\r\n            }\r\n            catch (COMException cex)\r\n            {\r\n                HandleCOMException(cex);\r\n            }\r\n        }\r\n\r\n        public IEnumerable<EnvDTE.Process> GetDebuggedProcesses()\r\n        {\r\n            var debugger = GetDebugger();\r\n            if (debugger != null)\r\n            {\r\n                dynamic processes = debugger.DebuggedProcesses;\r\n                if (processes != null)\r\n                {\r\n                    for (int i = 1; i <= processes.Count; i++)\r\n                    {\r\n                        var p = processes.Item(i);\r\n                        //p.Name.ToString();\r\n                        //p.ProcessID.ToString();\r\n                        yield return processes.Item(i);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n\r\n        private void HandleCOMException(COMException cex)\r\n        {\r\n            if (IsContextNotAvailable(cex))\r\n            {\r\n                Debug.WriteLine(\"Context not available.\");\r\n                throw new ContextNotAvailableException(cex);\r\n            }\r\n            if (IsRejectedCall(cex))\r\n            {\r\n                Debug.WriteLine(\"Rejected call.\");\r\n                throw new ContextNotAvailableException(cex);\r\n            }\r\n\r\n            try { System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(cex.ErrorCode); }\r\n            catch (Exception ex)\r\n            {\r\n                Debug.WriteLine(ex.ToString());\r\n            }\r\n        }\r\n\r\n        private static bool IsContextNotAvailable(COMException cex)\r\n        {\r\n            unchecked\r\n            {\r\n                return cex.ErrorCode == (int)0x89711006;\r\n            }\r\n        }\r\n\r\n        private static bool IsRejectedCall(COMException cex)\r\n        {\r\n            // \"Call was rejected by callee. (Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED))\"\r\n            unchecked\r\n            {\r\n                return cex.ErrorCode == (int)0x80010001;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tools/WickedSick.Thea.VisualStudioInterop/WickedSick.Thea.VisualStudioInterop.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProductVersion>8.0.30703</ProductVersion>\r\n    <SchemaVersion>2.0</SchemaVersion>\r\n    <ProjectGuid>{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}</ProjectGuid>\r\n    <OutputType>Exe</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>WickedSick.Thea.VisualStudioInterop</RootNamespace>\r\n    <AssemblyName>WickedSick.Thea.VisualStudioInterop</AssemblyName>\r\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r\n    <FileAlignment>512</FileAlignment>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <DebugType>pdbonly</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <StartupObject>WickedSick.Thea.VisualStudioInterop.ConsoleTest</StartupObject>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n      <EmbedInteropTypes>True</EmbedInteropTypes>\r\n    </Reference>\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"Microsoft.CSharp\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Xml\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"ComMessageFilter.cs\" />\r\n    <Compile Include=\"ConsoleTest.cs\" />\r\n    <Compile Include=\"ContextNotAvailableException.cs\" />\r\n    <Compile Include=\"NativeMethods.cs\" />\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n    <Compile Include=\"VisualStudioBroker.cs\" />\r\n    <Compile Include=\"VisualStudioInstance.cs\" />\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r\n       Other similar extension points exist, see Microsoft.Common.targets.\r\n  <Target Name=\"BeforeBuild\">\r\n  </Target>\r\n  <Target Name=\"AfterBuild\">\r\n  </Target>\r\n  -->\r\n</Project>"
  },
  {
    "path": "Tools/WickedSick.Thea.sln",
    "content": "﻿\r\nMicrosoft Visual Studio Solution File, Format Version 11.00\r\n# Visual Studio 2010\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"WickedSick.Thea\", \"WickedSick.Thea\\WickedSick.Thea.csproj\", \"{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}\"\r\nEndProject\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"WickedSick.MVVM\", \"WickedSick.MVVM\\WickedSick.MVVM.csproj\", \"{C90D69F2-9AB0-468E-8F42-E2C9F7705290}\"\r\nEndProject\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"WickedSick.Thea.VisualStudioInterop\", \"WickedSick.Thea.VisualStudioInterop\\WickedSick.Thea.VisualStudioInterop.csproj\", \"{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}\"\r\nEndProject\r\nGlobal\r\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n\t\tDebug|Any CPU = Debug|Any CPU\r\n\t\tDebug|Mixed Platforms = Debug|Mixed Platforms\r\n\t\tDebug|x86 = Debug|x86\r\n\t\tRelease|Any CPU = Release|Any CPU\r\n\t\tRelease|Mixed Platforms = Release|Mixed Platforms\r\n\t\tRelease|x86 = Release|x86\r\n\tEndGlobalSection\r\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Debug|Any CPU.ActiveCfg = Debug|x86\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Debug|Mixed Platforms.ActiveCfg = Debug|x86\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Debug|Mixed Platforms.Build.0 = Debug|x86\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Release|Any CPU.ActiveCfg = Release|x86\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Release|Mixed Platforms.ActiveCfg = Release|x86\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Release|Mixed Platforms.Build.0 = Release|x86\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{CB80E97E-9CFA-4572-8F78-5E6E608F2B36}.Release|x86.Build.0 = Release|x86\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Debug|x86.ActiveCfg = Debug|Any CPU\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r\n\t\t{C90D69F2-9AB0-468E-8F42-E2C9F7705290}.Release|x86.ActiveCfg = Release|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Debug|x86.ActiveCfg = Debug|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r\n\t\t{0CFF9784-6467-4BDC-B3D1-DB6089BEB488}.Release|x86.ActiveCfg = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(SolutionProperties) = preSolution\r\n\t\tHideSolutionNode = FALSE\r\n\tEndGlobalSection\r\nEndGlobal\r\n"
  },
  {
    "path": "bower.json",
    "content": "{\n  \"name\": \"fayde\",\n  \"version\": \"0.19.19\",\n  \"main\": \"dist/fayde.js\",\n  \"homepage\": \"http://fayde.wsick.com\",\n  \"authors\": [\n    \"BSick7 <brad.sickles@gmail.com>\"\n  ],\n  \"ignore\": [\n    \"build\",\n    \"litmus\",\n    \"proto\",\n    \"stress\",\n    \"test\",\n    \"testsite\",\n    \"Tools\",\n    \"bower.json\",\n    \"package.json\",\n    \"Gruntfile.js\"\n  ],\n  \"dependencies\": {\n    \"minerva\": \"~0.7.2\",\n    \"nullstone\": \"~0.4.6\",\n    \"requirejs\": \"~2.1.15\",\n    \"requirejs-text\": \"~2.0.12\",\n    \"perfex\": \"~0.1.0\"\n  },\n  \"devDependencies\": {\n    \"qunit\": \"~1.18.0\"\n  }\n}\n"
  },
  {
    "path": "dist/fayde.d.ts",
    "content": "declare module Fayde {\n    var version: string;\n}\ndeclare module Fayde {\n    class ThemedLibrary extends nullstone.Library {\n        private $$themes;\n        private $$activeTheme;\n        private $$activeThemeName;\n        activeTheme: Theme;\n        isActiveThemeInvalid: boolean;\n        loadAsync(): Promise<nullstone.Library>;\n        protected retrieveTheme(): Promise<string>;\n        protected ensureThemeLoaded(): Promise<Theme>;\n        getTheme(name: string): Theme;\n        setThemeName(name: string): void;\n        loadActiveTheme(): Promise<Theme>;\n    }\n}\ndeclare module Fayde {\n    class ThemedLibraryResolver extends nullstone.LibraryResolver {\n        createLibrary(uri: string): nullstone.ILibrary;\n    }\n}\ndeclare module Fayde {\n    var XMLNS: string;\n    var XMLNSX: string;\n    var XMLNSINTERNAL: string;\n    var Enum: typeof nullstone.Enum;\n    interface Enum {\n        new (): nullstone.Enum;\n    }\n    var Uri: typeof nullstone.Uri;\n    interface Uri extends nullstone.Uri {\n    }\n    class ResourceTypeManager extends nullstone.TypeManager {\n        createLibResolver(): nullstone.ILibraryResolver;\n        resolveResource(uri: Uri): string;\n    }\n    var TypeManager: ResourceTypeManager;\n    var CoreLibrary: nullstone.ILibrary;\n    var XLibrary: nullstone.ILibrary;\n    function RegisterType(type: Function, uri: string, name?: string): void;\n    function RegisterEnum(enu: any, uri: string, name: string): void;\n    var IType_: nullstone.Interface<{}>;\n}\ndeclare module Fayde.Clipboard {\n    class BasicClipboard implements IClipboard {\n        CopyText(text: string): void;\n        GetTextContents(callback: (text: string) => void): void;\n    }\n}\ndeclare module Fayde.Clipboard {\n    function Create(): IClipboard;\n}\ndeclare module Fayde.Clipboard {\n    interface IClipboard {\n        CopyText(text: string): any;\n        GetTextContents(callback: (text: string) => void): any;\n    }\n    function memoizePlaceholder(key: string): HTMLDivElement;\n}\ndeclare module Fayde.Clipboard {\n    class NetscapeClipboard implements IClipboard {\n        private $$fn;\n        constructor();\n        CopyText(text: string): void;\n        GetTextContents(callback: (text: string) => void): void;\n        private $$notify;\n    }\n}\ndeclare module Fayde.Collections {\n    enum CollectionChangedAction {\n        Add = 1,\n        Remove = 2,\n        Replace = 3,\n        Reset = 4,\n    }\n    class CollectionChangedEventArgs implements nullstone.IEventArgs {\n        Action: CollectionChangedAction;\n        OldStartingIndex: number;\n        NewStartingIndex: number;\n        OldItems: any[];\n        NewItems: any[];\n        static Reset(allValues: any[]): CollectionChangedEventArgs;\n        static Replace(newValue: any, oldValue: any, index: number): CollectionChangedEventArgs;\n        static Add(newValue: any, index: number): CollectionChangedEventArgs;\n        static AddRange(newValues: any[], index: number): CollectionChangedEventArgs;\n        static Remove(oldValue: any, index: number): CollectionChangedEventArgs;\n    }\n}\ndeclare module Fayde.Collections {\n    interface INotifyCollectionChanged {\n        CollectionChanged: nullstone.Event<CollectionChangedEventArgs>;\n    }\n    var INotifyCollectionChanged_: nullstone.Interface<INotifyCollectionChanged>;\n}\ndeclare module Fayde {\n    class PropertyChangedEventArgs implements nullstone.IEventArgs {\n        PropertyName: string;\n        constructor(propertyName: string);\n    }\n    interface INotifyPropertyChanged {\n        PropertyChanged: nullstone.Event<PropertyChangedEventArgs>;\n    }\n    var INotifyPropertyChanged_: nullstone.Interface<INotifyPropertyChanged>;\n}\ndeclare module Fayde.Collections {\n    class ObservableCollection<T> implements nullstone.IEnumerable<T>, nullstone.ICollection<T>, INotifyCollectionChanged, INotifyPropertyChanged {\n        private _ht;\n        getEnumerator(): nullstone.IEnumerator<T>;\n        CollectionChanged: nullstone.Event<CollectionChangedEventArgs>;\n        PropertyChanged: nullstone.Event<PropertyChangedEventArgs>;\n        Count: number;\n        ToArray(): T[];\n        GetValueAt(index: number): T;\n        SetValueAt(index: number, value: T): void;\n        Add(value: T): void;\n        AddRange(values: T[]): void;\n        Insert(index: number, value: T): void;\n        IndexOf(value: T): number;\n        Contains(value: T): boolean;\n        Remove(value: T): boolean;\n        RemoveAt(index: number): void;\n        Clear(): void;\n        private _RaisePropertyChanged(propertyName);\n    }\n}\ndeclare module Fayde.Collections {\n    class DeepObservableCollection<T> extends ObservableCollection<T> {\n        ItemPropertyChanged: nullstone.Event<ItemPropertyChangedEventArgs<T>>;\n        constructor();\n        private _OnCollectionChanged(sender, e);\n        private _OnItemPropertyChanged(sender, e);\n    }\n}\ndeclare module Fayde.Collections {\n    interface IFilterItemFunc<T> {\n        (item: T): boolean;\n    }\n    interface IFilterItemIndexFunc<T> {\n        (item: T, index: number): boolean;\n    }\n    class FilteredCollection<T> extends DeepObservableCollection<T> {\n        private _Source;\n        Source: DeepObservableCollection<T>;\n        private _Filter;\n        Filter: IFilterItemIndexFunc<T>;\n        constructor(filter?: IFilterItemFunc<T>, source?: DeepObservableCollection<T>);\n        constructor(filter?: IFilterItemIndexFunc<T>, source?: DeepObservableCollection<T>);\n        private _SetSource(source);\n        private _OnSourceCollectionChanged(sender, e);\n        private _OnSourceItemPropertyChanged(sender, e);\n        Update(): void;\n    }\n}\ndeclare module Fayde.Collections {\n    class ItemPropertyChangedEventArgs<T> extends PropertyChangedEventArgs {\n        Item: T;\n        constructor(item: T, propertyName: string);\n    }\n}\ndeclare module Fayde.Collections {\n    class ReadOnlyObservableCollection<T> implements nullstone.ICollection<T>, INotifyCollectionChanged, INotifyPropertyChanged {\n        Count: number;\n        private _Source;\n        CollectionChanged: nullstone.Event<CollectionChangedEventArgs>;\n        PropertyChanged: nullstone.Event<PropertyChangedEventArgs>;\n        constructor(source: ObservableCollection<T>);\n        GetValueAt(index: number): T;\n        getEnumerator(): nullstone.IEnumerator<T>;\n        ToArray(): T[];\n        IndexOf(value: T): number;\n        Contains(value: T): boolean;\n        private _OnCollectionChanged(sender, args);\n        private _OnPropertyChanged(sender, args);\n        SetValueAt(index: number, value: T): void;\n        Insert(index: number, value: T): void;\n        Add(value: T): void;\n        Remove(value: T): boolean;\n        RemoveAt(index: number): void;\n        Clear(): void;\n    }\n}\ndeclare module Fayde {\n    interface IIsAttachedMonitor {\n        Callback: (newIsAttached: boolean) => void;\n        Detach(): any;\n    }\n    class XamlNode {\n        XObject: XamlObject;\n        ParentNode: XamlNode;\n        Name: string;\n        NameScope: NameScope;\n        DocNameScope: NameScope;\n        private IsShareable;\n        private _OwnerNameScope;\n        private _LogicalChildren;\n        private _IAMonitors;\n        constructor(xobj: XamlObject);\n        private _DataContext;\n        DataContext: any;\n        OnDataContextChanged(oldDataContext: any, newDataContext: any): void;\n        private _IsEnabled;\n        IsEnabled: boolean;\n        OnIsEnabledChanged(oldValue: boolean, newValue: boolean): void;\n        FindName(name: string, doc?: boolean): XamlNode;\n        SetName(name: string): void;\n        FindNameScope(): NameScope;\n        IsAttached: boolean;\n        SetIsAttached(value: boolean): void;\n        OnIsAttachedChanged(newIsAttached: boolean): void;\n        MonitorIsAttached(func: (newIsAttached: boolean) => void): IIsAttachedMonitor;\n        AttachTo(parentNode: XamlNode, error: BError): boolean;\n        Detach(): void;\n        OnParentChanged(oldParentNode: XamlNode, newParentNode: XamlNode): void;\n        GetInheritedEnumerator(): nullstone.IEnumerator<DONode>;\n        static SetShareable(xn: XamlNode): void;\n    }\n}\ndeclare module Fayde {\n    class XamlObject implements Providers.IIsPropertyInheritable {\n        private static _LastID;\n        private _ID;\n        XamlNode: Fayde.XamlNode;\n        TemplateOwner: DependencyObject;\n        App: Application;\n        constructor();\n        CreateNode(): XamlNode;\n        Name: string;\n        Parent: XamlObject;\n        FindName(name: string, doc?: boolean): XamlObject;\n        Clone(): XamlObject;\n        CloneCore(source: XamlObject): void;\n        IsInheritable(propd: DependencyProperty): boolean;\n    }\n}\ndeclare module Fayde.Providers {\n    enum PropertyPrecedence {\n        IsEnabled = 0,\n        LocalValue = 1,\n        LocalStyle = 2,\n        ImplicitStyle = 3,\n        Inherited = 4,\n        InheritedDataContext = 5,\n        DefaultValue = 6,\n        Lowest = 6,\n        Highest = 0,\n        Count = 7,\n    }\n    interface IPropertyChangedListener {\n        Property: DependencyProperty;\n        OnPropertyChanged(sender: DependencyObject, args: IDependencyPropertyChangedEventArgs): any;\n        Detach(): any;\n    }\n    interface IPropertyStorage {\n        OwnerNode: DONode;\n        Property: DependencyProperty;\n        Precedence: PropertyPrecedence;\n        Animations: Media.Animation.IAnimationStorage[];\n        Local: any;\n        LocalStyleValue: any;\n        ImplicitStyleValue: any;\n        PropListeners: IPropertyChangedListener[];\n    }\n    interface IPropertyStorageOwner {\n        _PropertyStorage: IPropertyStorage[];\n    }\n    function GetStorage(dobj: DependencyObject, propd: DependencyProperty): IPropertyStorage;\n    class PropertyStore {\n        static Instance: PropertyStore;\n        GetValue(storage: IPropertyStorage): any;\n        GetValuePrecedence(storage: IPropertyStorage): PropertyPrecedence;\n        SetLocalValue(storage: Providers.IPropertyStorage, newValue: any): void;\n        SetLocalStyleValue(storage: IPropertyStorage, newValue: any): void;\n        SetImplicitStyle(storage: IPropertyStorage, newValue: any): void;\n        ClearValue(storage: Providers.IPropertyStorage): void;\n        OnPropertyChanged(storage: IPropertyStorage, effectivePrecedence: PropertyPrecedence, oldValue: any, newValue: any): IDependencyPropertyChangedEventArgs;\n        ListenToChanged(target: DependencyObject, propd: DependencyProperty, func: (sender, args: IDependencyPropertyChangedEventArgs) => void, closure: any): Providers.IPropertyChangedListener;\n        CreateStorage(dobj: DependencyObject, propd: DependencyProperty): IPropertyStorage;\n        Clone(dobj: DependencyObject, sourceStorage: IPropertyStorage): IPropertyStorage;\n    }\n}\ndeclare module Fayde.Providers {\n    class ImmutableStore extends PropertyStore {\n        static Instance: ImmutableStore;\n        GetValue(storage: IPropertyStorage): any;\n        GetValuePrecedence(storage: IPropertyStorage): PropertyPrecedence;\n        SetLocalValue(storage: Providers.IPropertyStorage, newValue: any): void;\n        ClearValue(storage: Providers.IPropertyStorage): void;\n        ListenToChanged(target: DependencyObject, propd: DependencyProperty, func: (sender, args: IDependencyPropertyChangedEventArgs) => void, closure: any): Providers.IPropertyChangedListener;\n        Clone(dobj: DependencyObject, sourceStorage: IPropertyStorage): IPropertyStorage;\n    }\n}\ninterface IOutIsValid {\n    IsValid: boolean;\n}\ninterface IType {\n}\ndeclare class DependencyProperty {\n    static UnsetValue: {};\n    private static _IDs;\n    private static _LastID;\n    _ID: number;\n    Name: string;\n    GetTargetType: () => IType;\n    OwnerType: any;\n    DefaultValue: any;\n    IsReadOnly: boolean;\n    IsCustom: boolean;\n    IsAttached: boolean;\n    IsInheritable: boolean;\n    IsImmutable: boolean;\n    ChangedCallback: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void;\n    AlwaysChange: boolean;\n    Store: Fayde.Providers.PropertyStore;\n    private _Coercer;\n    private _Validator;\n    static Register(name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void): DependencyProperty;\n    static RegisterReadOnly(name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void): DependencyProperty;\n    static RegisterAttached(name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void): DependencyProperty;\n    static RegisterCore(name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void): DependencyProperty;\n    static RegisterReadOnlyCore(name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void): DependencyProperty;\n    static RegisterAttachedCore(name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void): DependencyProperty;\n    static RegisterImmutable<T>(name: string, getTargetType: () => IType, ownerType: any): ImmutableDependencyProperty<T>;\n    static RegisterInheritable(name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void): DependencyProperty;\n    static RegisterFull(name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void, coercer?: (dobj: Fayde.DependencyObject, propd: DependencyProperty, value: any) => any, alwaysChange?: boolean, validator?: (dobj: Fayde.DependencyObject, propd: DependencyProperty, value: any) => boolean, isCustom?: boolean, isReadOnly?: boolean, isAttached?: boolean): DependencyProperty;\n    private FinishRegister();\n    ExtendTo(type: any): DependencyProperty;\n    ValidateSetValue(dobj: Fayde.DependencyObject, value: any, isValidOut: IOutIsValid): any;\n    static GetDependencyProperty(ownerType: any, name: string, noError?: boolean): DependencyProperty;\n}\ndeclare class ImmutableDependencyProperty<T> extends DependencyProperty {\n    IsImmutable: boolean;\n    Initialize(dobj: Fayde.DependencyObject): T;\n}\ndeclare module Fayde.Providers {\n    interface IDataContextStorage extends IPropertyStorage {\n        InheritedValue: any;\n    }\n    class DataContextStore extends PropertyStore {\n        static Instance: DataContextStore;\n        GetValue(storage: IDataContextStorage): any;\n        GetValuePrecedence(storage: IDataContextStorage): PropertyPrecedence;\n        OnInheritedChanged(storage: IDataContextStorage, newInherited?: any): void;\n        CreateStorage(dobj: DependencyObject, propd: DependencyProperty): IDataContextStorage;\n        OnPropertyChanged(storage: IDataContextStorage, effectivePrecedence: PropertyPrecedence, oldValue: any, newValue: any): IDependencyPropertyChangedEventArgs;\n        private TryUpdateDataContextExpression(storage, newDataContext);\n    }\n}\ndeclare module Fayde {\n    interface IDPReactionCallback<T> {\n        (dobj: DependencyObject, ov: T, nv: T): void;\n    }\n    function DPReaction<TValue>(propd: DependencyProperty, callback?: IDPReactionCallback<TValue>, listen?: boolean): void;\n}\ndeclare module Fayde {\n    function Incite(obj: any, val?: any): void;\n    function ReactTo(obj: any, scope: any, changed: (val?: any) => any): void;\n    function UnreactTo(obj: any, scope: any): void;\n}\ndeclare module Fayde {\n    class DONode extends XamlNode {\n        XObject: DependencyObject;\n        constructor(xobj: DependencyObject);\n        OnParentChanged(oldParentNode: XamlNode, newParentNode: XamlNode): void;\n        DataContext: any;\n        OnDataContextChanged(oldDataContext: any, newDataContext: any): void;\n    }\n    class DependencyObject extends XamlObject implements ICloneable, Providers.IPropertyStorageOwner {\n        private _Expressions;\n        _PropertyStorage: Providers.IPropertyStorage[];\n        static DataContextProperty: DependencyProperty;\n        DataContext: any;\n        constructor();\n        XamlNode: DONode;\n        CreateNode(): DONode;\n        GetValue(propd: DependencyProperty): any;\n        SetValue(propd: DependencyProperty, value: any): void;\n        SetValueInternal(propd: DependencyProperty, value: any): void;\n        SetCurrentValue(propd: DependencyProperty, value: any): void;\n        ClearValue(propd: DependencyProperty): void;\n        ReadLocalValue(propd: DependencyProperty): any;\n        ReadLocalValueInternal(propd: DependencyProperty): any;\n        private _AddExpression(propd, expr);\n        private _RemoveExpression(propd);\n        _HasDeferredValueExpression(propd: DependencyProperty): boolean;\n        GetBindingExpression(propd: DependencyProperty): Data.BindingExpressionBase;\n        HasValueOrExpression(propd: DependencyProperty): boolean;\n        SetBinding(propd: DependencyProperty, binding: Data.Binding): Data.BindingExpressionBase;\n        CloneCore(source: DependencyObject): void;\n        ListenToChanged(propd: DependencyProperty, func: (sender, args: IDependencyPropertyChangedEventArgs) => void, closure?: any): Providers.IPropertyChangedListener;\n    }\n}\ndeclare module Fayde {\n    interface IUIReactionCallback<T> {\n        (updater: minerva.core.Updater, ov: T, nv: T, uie?: UIElement): void;\n    }\n    function UIReaction<TValue>(propd: DependencyProperty, callback?: IUIReactionCallback<TValue>, listen?: boolean, sync?: (src: TValue, dest: TValue) => void, instance?: any): any;\n    function UIReaction<TValue>(propd: DependencyProperty, callback?: IUIReactionCallback<TValue>, listen?: boolean, sync?: boolean, instance?: any): any;\n}\ndeclare module Fayde {\n    function UIReactionAttached<TValue>(propd: DependencyProperty, callback?: IUIReactionCallback<TValue>): void;\n}\ndeclare module Fayde.Providers {\n    interface IInheritedStorage extends IPropertyStorage {\n        InheritedValue: any;\n    }\n    interface IIsPropertyInheritable {\n        IsInheritable(propd: DependencyProperty): boolean;\n    }\n    class InheritedStore extends PropertyStore {\n        static Instance: InheritedStore;\n        GetValue(storage: IInheritedStorage): any;\n        GetValuePrecedence(storage: IInheritedStorage): PropertyPrecedence;\n        OnPropertyChanged(storage: IPropertyStorage, effectivePrecedence: PropertyPrecedence, oldValue: any, newValue: any): IDependencyPropertyChangedEventArgs;\n        CreateStorage(dobj: DependencyObject, propd: DependencyProperty): IInheritedStorage;\n        static PropagateInheritedOnAdd(dobj: DependencyObject, subtreeNode: DONode): void;\n        static ClearInheritedOnRemove(dobj: DependencyObject, subtreeNode: DONode): void;\n        private Propagate(ownerNode, propd, newValue);\n        private SetInheritedValue(don, propd, newValue);\n    }\n}\ndeclare module Fayde {\n    enum Orientation {\n        Horizontal = 0,\n        Vertical = 1,\n    }\n    enum Visibility {\n        Visible = 0,\n        Collapsed = 1,\n    }\n    enum CursorType {\n        Default = 0,\n        Hand = 1,\n        IBeam = 2,\n        Wait = 3,\n        SizeNESW = 4,\n        SizeNWSE = 5,\n        SizeNS = 6,\n        SizeWE = 7,\n    }\n    var CursorTypeMappings: {\n        Default: string;\n        Hand: string;\n        IBeam: string;\n        Wait: string;\n        SizeNESW: string;\n        SizeNWSE: string;\n        SizeNS: string;\n        SizeWE: string;\n    };\n    enum HorizontalAlignment {\n        Left = 0,\n        Center = 1,\n        Right = 2,\n        Stretch = 3,\n    }\n    enum VerticalAlignment {\n        Top = 0,\n        Center = 1,\n        Bottom = 2,\n        Stretch = 3,\n    }\n    enum FlowDirection {\n        LeftToRight = 0,\n        RightToLeft = 1,\n    }\n    enum FontWeight {\n        Thin = 100,\n        ExtraLight = 200,\n        Light = 300,\n        Normal = 400,\n        Medium = 500,\n        SemiBold = 600,\n        Bold = 700,\n        ExtraBold = 800,\n        Black = 900,\n        ExtraBlack = 950,\n    }\n    enum TextAlignment {\n        Left = 0,\n        Center = 1,\n        Right = 2,\n        Justify = 3,\n    }\n    enum TextDecorations {\n        None = 0,\n        Underline = 1,\n    }\n    enum LineStackingStrategy {\n        MaxHeight = 0,\n        BlockLineHeight = 1,\n    }\n}\ndeclare module Fayde {\n    var FontStyle: {\n        Normal: string;\n        Italic: string;\n        Oblique: string;\n    };\n    var FontStretch: {\n        UltraCondensed: string;\n        ExtraCondensed: string;\n        Condensed: string;\n        SemiCondensed: string;\n        Normal: string;\n        SemiExpanded: string;\n        Expanded: string;\n        ExtraExpanded: string;\n        UltraExpanded: string;\n    };\n    var Font: typeof minerva.Font;\n}\ndeclare module Fayde {\n    class InheritableOwner {\n        static UseLayoutRoundingProperty: DependencyProperty;\n        static FlowDirectionProperty: DependencyProperty;\n        static ForegroundProperty: DependencyProperty;\n        static FontFamilyProperty: DependencyProperty;\n        static FontSizeProperty: DependencyProperty;\n        static FontStretchProperty: DependencyProperty;\n        static FontStyleProperty: DependencyProperty;\n        static FontWeightProperty: DependencyProperty;\n        static TextDecorationsProperty: DependencyProperty;\n        static LanguageProperty: DependencyProperty;\n        static AllInheritedProperties: DependencyProperty[];\n    }\n}\ndeclare module Fayde {\n    class UINode extends DONode {\n        XObject: UIElement;\n        LayoutUpdater: minerva.core.Updater;\n        IsMouseOver: boolean;\n        constructor(xobj: UIElement);\n        VisualParentNode: UINode;\n        GetVisualRoot(): UINode;\n        IsLoaded: boolean;\n        SetIsLoaded(value: boolean): void;\n        OnVisualChildAttached(uie: UIElement): void;\n        OnVisualChildDetached(uie: UIElement): void;\n        private SetVisualParentNode(visualParentNode);\n        Focus(recurse?: boolean): boolean;\n        _EmitFocusChange(type: string): void;\n        private _EmitLostFocus();\n        private _EmitGotFocus();\n        _EmitKeyDown(args: Fayde.Input.KeyEventArgs): void;\n        _EmitKeyUp(args: Fayde.Input.KeyEventArgs): void;\n        _EmitLostMouseCapture(pos: Point): void;\n        _EmitMouseEvent(type: Input.MouseInputType, isLeftButton: boolean, isRightButton: boolean, args: Input.MouseEventArgs): boolean;\n        _EmitTouchEvent(type: Input.TouchInputType, args: Input.TouchEventArgs): boolean;\n        _EmitGotTouchCapture(e: Input.TouchEventArgs): void;\n        _EmitLostTouchCapture(e: Input.TouchEventArgs): void;\n        CanCaptureMouse(): boolean;\n        CaptureMouse(): boolean;\n        ReleaseMouseCapture(): void;\n        IsAncestorOf(uin: UINode): boolean;\n        TransformToVisual(uin?: UINode): Media.GeneralTransform;\n    }\n    class UIElement extends DependencyObject implements Providers.IIsPropertyInheritable {\n        XamlNode: UINode;\n        CreateNode(): UINode;\n        CreateLayoutUpdater(): minerva.core.Updater;\n        IsItemsControl: boolean;\n        VisualParent: UIElement;\n        static AllowDropProperty: DependencyProperty;\n        static CacheModeProperty: DependencyProperty;\n        static ClipProperty: DependencyProperty;\n        static EffectProperty: DependencyProperty;\n        static IsHitTestVisibleProperty: DependencyProperty;\n        static OpacityMaskProperty: DependencyProperty;\n        static OpacityProperty: DependencyProperty;\n        static RenderTransformProperty: DependencyProperty;\n        static RenderTransformOriginProperty: DependencyProperty;\n        static TagProperty: DependencyProperty;\n        static TriggersProperty: DependencyProperty;\n        static UseLayoutRoundingProperty: DependencyProperty;\n        static VisibilityProperty: DependencyProperty;\n        IsInheritable(propd: DependencyProperty): boolean;\n        IsMouseOver: boolean;\n        DesiredSize: minerva.Size;\n        RenderSize: minerva.Size;\n        Clip: Media.Geometry;\n        Effect: Media.Effects.Effect;\n        IsHitTestVisible: boolean;\n        Cursor: CursorType;\n        OpacityMask: Media.Brush;\n        Opacity: number;\n        RenderTransform: Media.Transform;\n        RenderTransformOrigin: Point;\n        Tag: any;\n        Triggers: TriggerCollection;\n        UseLayoutRounding: boolean;\n        Visibility: Visibility;\n        Focus(): boolean;\n        CaptureMouse(): boolean;\n        ReleaseMouseCapture(): void;\n        IsAncestorOf(uie: UIElement): boolean;\n        TransformToVisual(uie: UIElement): Media.GeneralTransform;\n        InvalidateMeasure(): void;\n        Measure(availableSize: minerva.Size): void;\n        InvalidateArrange(): void;\n        Arrange(finalRect: minerva.Rect): void;\n        LostFocus: RoutedEvent<RoutedEventArgs>;\n        GotFocus: RoutedEvent<RoutedEventArgs>;\n        LostMouseCapture: RoutedEvent<Input.MouseEventArgs>;\n        KeyDown: RoutedEvent<Input.KeyEventArgs>;\n        KeyUp: RoutedEvent<Input.KeyEventArgs>;\n        MouseLeftButtonUp: RoutedEvent<Input.MouseButtonEventArgs>;\n        MouseRightButtonUp: RoutedEvent<Input.MouseButtonEventArgs>;\n        MouseLeftButtonDown: RoutedEvent<Input.MouseButtonEventArgs>;\n        MouseRightButtonDown: RoutedEvent<Input.MouseButtonEventArgs>;\n        MouseLeave: RoutedEvent<Input.MouseEventArgs>;\n        MouseEnter: RoutedEvent<Input.MouseEventArgs>;\n        MouseMove: RoutedEvent<Input.MouseEventArgs>;\n        MouseWheel: RoutedEvent<Input.MouseWheelEventArgs>;\n        TouchDown: RoutedEvent<Input.TouchEventArgs>;\n        TouchUp: RoutedEvent<Input.TouchEventArgs>;\n        TouchEnter: RoutedEvent<Input.TouchEventArgs>;\n        TouchLeave: RoutedEvent<Input.TouchEventArgs>;\n        TouchMove: RoutedEvent<Input.TouchEventArgs>;\n        GotTouchCapture: RoutedEvent<Input.TouchEventArgs>;\n        LostTouchCapture: RoutedEvent<Input.TouchEventArgs>;\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        OnLostMouseCapture(e: Input.MouseEventArgs): void;\n        OnKeyDown(e: Input.KeyEventArgs): void;\n        OnKeyUp(e: Input.KeyEventArgs): void;\n        OnMouseEnter(e: Input.MouseEventArgs): void;\n        OnMouseLeave(e: Input.MouseEventArgs): void;\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs): void;\n        OnMouseMove(e: Input.MouseEventArgs): void;\n        OnMouseRightButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnMouseRightButtonUp(e: Input.MouseButtonEventArgs): void;\n        OnMouseWheel(e: Input.MouseWheelEventArgs): void;\n        OnTouchDown(e: Input.TouchEventArgs): void;\n        OnTouchUp(e: Input.TouchEventArgs): void;\n        OnTouchEnter(e: Input.TouchEventArgs): void;\n        OnTouchLeave(e: Input.TouchEventArgs): void;\n        OnTouchMove(e: Input.TouchEventArgs): void;\n        OnGotTouchCapture(e: Input.TouchEventArgs): void;\n        OnLostTouchCapture(e: Input.TouchEventArgs): void;\n        private _TriggersChanged(args);\n    }\n}\ndeclare module Fayde.Providers {\n    class ResourcesStore extends PropertyStore {\n        static Instance: ResourcesStore;\n        GetValue(storage: IPropertyStorage): ResourceDictionary;\n        GetValuePrecedence(storage: IPropertyStorage): PropertyPrecedence;\n        SetLocalValue(storage: Providers.IPropertyStorage, newValue: number): void;\n        SetLocalStyleValue(storage: IPropertyStorage, newValue: any): void;\n        SetImplicitStyle(storage: IPropertyStorage, newValue: any): void;\n        ClearValue(storage: Providers.IPropertyStorage, notifyListeners?: boolean): void;\n    }\n}\ndeclare module Fayde.Providers {\n    class ActualSizeStore extends PropertyStore {\n        static Instance: ActualSizeStore;\n        GetValue(storage: IPropertyStorage): number;\n        GetValuePrecedence(storage: IPropertyStorage): PropertyPrecedence;\n        SetLocalValue(storage: Providers.IPropertyStorage, newValue: number): void;\n        SetLocalStyleValue(storage: IPropertyStorage, newValue: any): void;\n        SetImplicitStyle(storage: IPropertyStorage, newValue: any): void;\n        ClearValue(storage: Providers.IPropertyStorage, notifyListeners?: boolean): void;\n    }\n}\ndeclare module Fayde {\n    class FENode extends UINode implements Providers.IStyleHolder, Providers.IImplicitStyleHolder {\n        _LocalStyle: Style;\n        _ImplicitStyles: Style[];\n        _StyleMask: number;\n        XObject: FrameworkElement;\n        constructor(xobj: FrameworkElement);\n        SubtreeNode: XamlNode;\n        SetSubtreeNode(subtreeNode: XamlNode, error: BError): boolean;\n        GetInheritedEnumerator(): nullstone.IEnumerator<DONode>;\n        GetVisualTreeEnumerator(): nullstone.IEnumerator<FENode>;\n        SetIsLoaded(value: boolean): void;\n        OnIsLoadedChanged(newIsLoaded: boolean): void;\n        InvokeLoaded(): void;\n        AttachVisualChild(uie: UIElement, error: BError): boolean;\n        DetachVisualChild(uie: UIElement, error: BError): boolean;\n        ApplyTemplateWithError(error: BError): boolean;\n        DoApplyTemplateWithError(error: BError): boolean;\n        FinishApplyTemplateWithError(uie: UIElement, error: BError): boolean;\n        UpdateLayout(): void;\n        static DetachFromVisualParent(xobj: UIElement): void;\n    }\n    class FrameworkElement extends UIElement implements IResourcable, Providers.IIsPropertyInheritable {\n        XamlNode: FENode;\n        CreateNode(): FENode;\n        static ActualHeightProperty: DependencyProperty;\n        static ActualWidthProperty: DependencyProperty;\n        static CursorProperty: DependencyProperty;\n        static FlowDirectionProperty: DependencyProperty;\n        static HeightProperty: DependencyProperty;\n        static HorizontalAlignmentProperty: DependencyProperty;\n        static LanguageProperty: DependencyProperty;\n        static MarginProperty: DependencyProperty;\n        static MaxHeightProperty: DependencyProperty;\n        static MaxWidthProperty: DependencyProperty;\n        static MinHeightProperty: DependencyProperty;\n        static MinWidthProperty: DependencyProperty;\n        static StyleProperty: DependencyProperty;\n        static VerticalAlignmentProperty: DependencyProperty;\n        static WidthProperty: DependencyProperty;\n        static ResourcesProperty: DependencyProperty;\n        static DefaultStyleKeyProperty: DependencyProperty;\n        IsInheritable(propd: DependencyProperty): boolean;\n        ActualHeight: number;\n        ActualWidth: number;\n        FlowDirection: FlowDirection;\n        Height: number;\n        HorizontalAlignment: HorizontalAlignment;\n        Language: string;\n        Margin: Thickness;\n        MaxWidth: number;\n        MaxHeight: number;\n        MinWidth: number;\n        MinHeight: number;\n        Style: Style;\n        VerticalAlignment: VerticalAlignment;\n        Width: number;\n        Resources: ResourceDictionary;\n        DefaultStyleKey: Function;\n        SizeChanged: RoutedEvent<RoutedEventArgs>;\n        Loaded: RoutedEvent<RoutedEventArgs>;\n        Unloaded: RoutedEvent<RoutedEventArgs>;\n        LayoutUpdated: nullstone.Event<nullstone.IEventArgs>;\n        OnApplyTemplate(): void;\n        TemplateApplied: nullstone.Event<nullstone.IEventArgs>;\n        OnBindingValidationError(args: Validation.ValidationErrorEventArgs): void;\n        BindingValidationError: nullstone.Event<Validation.ValidationErrorEventArgs>;\n        UpdateLayout(): void;\n    }\n}\ndeclare module Fayde.Markup {\n    interface IContentAnnotation {\n        (type: Function, prop: DependencyProperty): any;\n        Get(type: Function): DependencyProperty;\n    }\n    var Content: IContentAnnotation;\n    interface ITextContentAnnotation {\n        (type: Function, prop: DependencyProperty): any;\n        Get(type: Function): DependencyProperty;\n    }\n    var TextContent: ITextContentAnnotation;\n}\ndeclare module Fayde.Controls {\n    class Border extends FrameworkElement {\n        CreateLayoutUpdater(): minerva.controls.border.BorderUpdater;\n        static BackgroundProperty: DependencyProperty;\n        static BorderBrushProperty: DependencyProperty;\n        static BorderThicknessProperty: DependencyProperty;\n        static ChildProperty: DependencyProperty;\n        static CornerRadiusProperty: DependencyProperty;\n        static PaddingProperty: DependencyProperty;\n        Background: Media.Brush;\n        BorderBrush: Media.Brush;\n        BorderThickness: minerva.Thickness;\n        Child: UIElement;\n        CornerRadius: CornerRadius;\n        Padding: Thickness;\n        constructor();\n    }\n}\ndeclare module Fayde.Providers {\n    interface IIsEnabledStorage extends IPropertyStorage {\n        InheritedValue: boolean;\n    }\n    class IsEnabledStore extends PropertyStore {\n        static Instance: IsEnabledStore;\n        GetValue(storage: IIsEnabledStorage): boolean;\n        GetValuePrecedence(storage: IIsEnabledStorage): PropertyPrecedence;\n        SetLocalValue(storage: IIsEnabledStorage, newValue: boolean): void;\n        OnPropertyChanged(storage: IPropertyStorage, effectivePrecedence: PropertyPrecedence, oldValue: any, newValue: any): IDependencyPropertyChangedEventArgs;\n        CreateStorage(dobj: DependencyObject, propd: DependencyProperty): IIsEnabledStorage;\n        EmitInheritedChanged(storage: IIsEnabledStorage, newInherited: boolean): void;\n        static EmitInheritedChanged(cn: Controls.ControlNode, value: boolean): void;\n    }\n}\ndeclare module Fayde.Input {\n    enum KeyboardNavigationMode {\n        Continue = 0,\n        Once = 1,\n        Cycle = 2,\n        None = 3,\n        Contained = 4,\n        Local = 5,\n    }\n    enum ModifierKeys {\n        None = 0,\n        Alt = 1,\n        Control = 2,\n        Shift = 4,\n        Windows = 8,\n        Apple = 16,\n    }\n    interface IModifiersOn {\n        Shift: boolean;\n        Ctrl: boolean;\n        Alt: boolean;\n    }\n    class Keyboard {\n        static Modifiers: ModifierKeys;\n        static RefreshModifiers(e: Fayde.Input.IModifiersOn): void;\n        static HasControl(): boolean;\n        static HasAlt(): boolean;\n        static HasShift(): boolean;\n    }\n}\ndeclare module Fayde.Controls {\n    interface IIsEnabledListener {\n        Callback: (newIsEnabled: boolean) => void;\n        Detach(): any;\n    }\n    class ControlNode extends FENode {\n        XObject: Control;\n        TemplateRoot: FrameworkElement;\n        IsFocused: boolean;\n        LayoutUpdater: minerva.controls.control.ControlUpdater;\n        constructor(xobj: Control);\n        TabTo(): boolean;\n        ApplyTemplateWithError(error: BError): boolean;\n        DoApplyTemplateWithError(error: BError): boolean;\n        GetDefaultVisualTree(): UIElement;\n        OnIsAttachedChanged(newIsAttached: boolean): void;\n        OnParentChanged(oldParentNode: XamlNode, newParentNode: XamlNode): void;\n        OnTemplateChanged(oldTemplate: ControlTemplate, newTemplate: ControlTemplate): void;\n        IsEnabled: boolean;\n        OnIsEnabledChanged(oldValue: boolean, newValue: boolean): void;\n        Focus(recurse?: boolean): boolean;\n        CanCaptureMouse(): boolean;\n    }\n    class Control extends FrameworkElement implements Providers.IIsPropertyInheritable {\n        XamlNode: ControlNode;\n        CreateNode(): ControlNode;\n        CreateLayoutUpdater(): minerva.controls.control.ControlUpdater;\n        constructor();\n        static BackgroundProperty: DependencyProperty;\n        static BorderBrushProperty: DependencyProperty;\n        static BorderThicknessProperty: DependencyProperty;\n        static FontFamilyProperty: DependencyProperty;\n        static FontSizeProperty: DependencyProperty;\n        static FontStretchProperty: DependencyProperty;\n        static FontStyleProperty: DependencyProperty;\n        static FontWeightProperty: DependencyProperty;\n        static ForegroundProperty: DependencyProperty;\n        static HorizontalContentAlignmentProperty: DependencyProperty;\n        static IsEnabledProperty: DependencyProperty;\n        static IsTabStopProperty: DependencyProperty;\n        static PaddingProperty: DependencyProperty;\n        static TabIndexProperty: DependencyProperty;\n        static TabNavigationProperty: DependencyProperty;\n        static TemplateProperty: DependencyProperty;\n        static VerticalContentAlignmentProperty: DependencyProperty;\n        IsInheritable(propd: DependencyProperty): boolean;\n        Background: Media.Brush;\n        BorderBrush: Media.Brush;\n        BorderThickness: Thickness;\n        FontFamily: string;\n        FontSize: number;\n        FontStretch: string;\n        FontStyle: string;\n        FontWeight: FontWeight;\n        Foreground: Media.Brush;\n        HorizontalContentAlignment: HorizontalAlignment;\n        IsEnabled: boolean;\n        IsTabStop: boolean;\n        Padding: Thickness;\n        TabIndex: number;\n        TabNavigation: Input.KeyboardNavigationMode;\n        Template: ControlTemplate;\n        VerticalContentAlignment: VerticalAlignment;\n        IsFocused: boolean;\n        GetTemplateChild(childName: string, type?: Function): DependencyObject;\n        ApplyTemplate(): boolean;\n        GetDefaultStyle(): Style;\n        IsEnabledChanged: nullstone.Event<DependencyPropertyChangedEventArgs>;\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs): void;\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        UpdateVisualState(useTransitions?: boolean): void;\n        GoToStates(gotoFunc: (state: string) => boolean): void;\n        GoToStateCommon(gotoFunc: (state: string) => boolean): boolean;\n        GoToStateFocus(gotoFunc: (state: string) => boolean): boolean;\n        GoToStateSelection(gotoFunc: (state: string) => boolean): boolean;\n        UpdateValidationState(valid?: boolean): void;\n        GoToStateValidation(valid: boolean, gotoFunc: (state: string) => boolean): boolean;\n    }\n    interface ITemplateVisualStateDefinition {\n        Name: string;\n        GroupName: string;\n    }\n    var TemplateVisualStates: nullstone.ITypedAnnotation<ITemplateVisualStateDefinition>;\n    interface ITemplatePartDefinition {\n        Name: string;\n        Type: Function;\n    }\n    var TemplateParts: nullstone.ITypedAnnotation<ITemplatePartDefinition>;\n}\ndeclare module Fayde.Controls {\n    class ContentControlNode extends ControlNode {\n        private _DefaultPresenter;\n        XObject: ContentControl;\n        constructor(xobj: ContentControl);\n        GetDefaultVisualTree(): UIElement;\n        OnContentChanged(o: any, n: any): void;\n        OnTemplateChanged(oldTemplate: ControlTemplate, newTemplate: ControlTemplate): void;\n        private CleanOldContent(content);\n    }\n    class ContentControl extends Control {\n        XamlNode: ContentControlNode;\n        CreateNode(): ContentControlNode;\n        static ContentProperty: DependencyProperty;\n        static ContentTemplateProperty: DependencyProperty;\n        static ContentUriProperty: DependencyProperty;\n        Content: any;\n        ContentTemplate: DataTemplate;\n        ContentUri: Uri;\n        private OnContentPropertyChanged(args);\n        private OnContentUriPropertyChanged(args);\n        constructor();\n        OnContentChanged(oldContent: any, newContent: any): void;\n        OnContentTemplateChanged(oldContentTemplate: DataTemplate, newContentTemplate: DataTemplate): void;\n        OnContentUriChanged(oldSourceUri: Uri, newSourceUri: Uri): void;\n        private _OnLoadedUri(xm);\n        private _OnErroredUri(err, src);\n    }\n}\ndeclare module Fayde.Controls {\n    enum TextWrapping {\n        NoWrap = 0,\n        Wrap = 1,\n        WrapWithOverflow = 2,\n    }\n    enum ScrollBarVisibility {\n        Disabled = 0,\n        Auto = 1,\n        Hidden = 2,\n        Visible = 3,\n    }\n    enum TextTrimming {\n        None = 0,\n        WordEllipsis = 1,\n        CharacterEllipsis = 2,\n    }\n    enum ClickMode {\n        Release = 0,\n        Press = 1,\n        Hover = 2,\n    }\n    enum PlacementMode {\n        Bottom = 0,\n        Right = 1,\n        Mouse = 2,\n        Left = 3,\n        Top = 4,\n    }\n    enum SelectionMode {\n        Single = 0,\n        Multiple = 1,\n        Extended = 2,\n    }\n    enum MediaElementState {\n        Closed = 0,\n        Opening = 1,\n        Buffering = 4,\n        Playing = 5,\n        Paused = 6,\n        Stopped = 7,\n    }\n    enum SelectionOnFocus {\n        Unchanged = 0,\n        SelectAll = 1,\n        CaretToBeginning = 2,\n        CaretToEnd = 3,\n        Default = 4,\n        DefaultSelectAll = 5,\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class ButtonBase extends ContentControl {\n        static ClickModeProperty: DependencyProperty;\n        static IsPressedProperty: DependencyProperty;\n        static IsFocusedProperty: DependencyProperty;\n        static CommandProperty: DependencyProperty;\n        static CommandParameterProperty: DependencyProperty;\n        ClickMode: ClickMode;\n        IsPressed: boolean;\n        IsFocused: boolean;\n        Command: Input.ICommand;\n        CommandParameter: any;\n        Click: RoutedEvent<RoutedEventArgs>;\n        private _IsMouseCaptured;\n        private _TouchCaptures;\n        private _IsMouseLeftButtonDown;\n        private _IsSpaceKeyDown;\n        _MousePosition: Point;\n        private _SuspendStateChanges;\n        constructor();\n        OnIsPressedChanged(args: IDependencyPropertyChangedEventArgs): void;\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs): void;\n        OnMouseEnter(e: Input.MouseEventArgs): void;\n        OnMouseLeave(e: Input.MouseEventArgs): void;\n        OnMouseMove(e: Input.MouseEventArgs): void;\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs): void;\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        OnTouchMove(e: Input.TouchEventArgs): void;\n        OnTouchDown(e: Input.TouchEventArgs): void;\n        OnTouchUp(e: Input.TouchEventArgs): void;\n        OnClick(): void;\n        private _DoWithSuspend(action);\n        UpdateVisualState(useTransitions?: boolean): void;\n        GoToStateCommon(gotoFunc: (state: string) => boolean): boolean;\n        private _CaptureMouseInternal();\n        private _ReleaseMouseCaptureInternal();\n        private _IsValidPosition(pos);\n        private OnCommandChanged(args);\n        private OnCommandCanExecuteChanged(sender, e);\n        private OnCommandParameterChanged(args);\n    }\n}\ndeclare module Fayde.Controls {\n    class Button extends Primitives.ButtonBase {\n        constructor();\n        OnApplyTemplate(): void;\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs): void;\n    }\n}\ndeclare module Fayde {\n    class XamlObjectCollection<T extends XamlObject> extends XamlObject implements nullstone.ICollection<T> {\n        _ht: Array<T>;\n        AttachTo(xobj: XamlObject): void;\n        Count: number;\n        GetRange(startIndex: number, endIndex: number): T[];\n        GetValueAt(index: number): T;\n        SetValueAt(index: number, value: T): boolean;\n        Add(value: T): number;\n        Insert(index: number, value: T): boolean;\n        Remove(value: T): boolean;\n        RemoveAt(index: number): boolean;\n        Clear(): boolean;\n        IndexOf(value: T): number;\n        Contains(value: T): boolean;\n        CanAdd(value: T): boolean;\n        AddingToCollection(value: T, error: BError): boolean;\n        RemovedFromCollection(value: T, isValueSafe: boolean): void;\n        getEnumerator(reverse?: boolean): nullstone.IEnumerator<T>;\n        GetNodeEnumerator<U extends XamlNode>(reverse?: boolean): nullstone.IEnumerator<U>;\n        _RaiseItemAdded(value: T, index: number): void;\n        _RaiseItemRemoved(value: T, index: number): void;\n        _RaiseItemReplaced(removed: T, added: T, index: number): void;\n        _RaiseCleared(old: T[]): void;\n        CloneCore(source: XamlObjectCollection<T>): void;\n        ToArray(): T[];\n    }\n}\ndeclare module Fayde.Controls {\n    class PanelNode extends FENode {\n        LayoutUpdater: minerva.controls.panel.PanelUpdater;\n        XObject: Panel;\n        constructor(xobj: Panel);\n        AttachVisualChild(uie: UIElement, error: BError): boolean;\n        DetachVisualChild(uie: UIElement, error: BError): boolean;\n    }\n    class Panel extends FrameworkElement {\n        XamlNode: PanelNode;\n        CreateNode(): PanelNode;\n        CreateLayoutUpdater(): minerva.controls.panel.PanelUpdater;\n        static BackgroundProperty: DependencyProperty;\n        static ChildrenProperty: ImmutableDependencyProperty<XamlObjectCollection<UIElement>>;\n        static ZIndexProperty: DependencyProperty;\n        static GetZIndex(uie: UIElement): number;\n        static SetZIndex(uie: UIElement, value: number): void;\n        Background: Media.Brush;\n        Children: XamlObjectCollection<UIElement>;\n        constructor();\n    }\n}\ndeclare module Fayde.Controls {\n    class Canvas extends Panel {\n        CreateLayoutUpdater(): minerva.controls.canvas.CanvasUpdater;\n        static TopProperty: DependencyProperty;\n        static GetTop(d: DependencyObject): number;\n        static SetTop(d: DependencyObject, value: number): void;\n        static LeftProperty: DependencyProperty;\n        static GetLeft(d: DependencyObject): number;\n        static SetLeft(d: DependencyObject, value: number): void;\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class ToggleButton extends ButtonBase {\n        Checked: RoutedEvent<RoutedEventArgs>;\n        Indeterminate: RoutedEvent<RoutedEventArgs>;\n        Unchecked: RoutedEvent<RoutedEventArgs>;\n        static IsCheckedProperty: DependencyProperty;\n        static IsThreeStateProperty: DependencyProperty;\n        IsChecked: boolean;\n        IsThreeState: boolean;\n        constructor();\n        OnApplyTemplate(): void;\n        OnContentChanged(oldContent: any, newContent: any): void;\n        OnClick(): void;\n        UpdateVisualState(useTransitions?: boolean): void;\n        OnIsCheckedChanged(args: IDependencyPropertyChangedEventArgs): void;\n        OnToggle(): void;\n    }\n}\ndeclare module Fayde.Controls {\n    class CheckBox extends Primitives.ToggleButton {\n        constructor();\n    }\n}\ndeclare module Fayde.Controls {\n    class ColumnDefinition extends DependencyObject implements minerva.controls.grid.IColumnDefinition {\n        static WidthProperty: DependencyProperty;\n        static MaxWidthProperty: DependencyProperty;\n        static MinWidthProperty: DependencyProperty;\n        static ActualWidthProperty: DependencyProperty;\n        Width: GridLength;\n        MaxWidth: number;\n        MinWidth: number;\n        ActualWidth: number;\n        setActualWidth(value: number): void;\n    }\n    class ColumnDefinitionCollection extends XamlObjectCollection<ColumnDefinition> {\n        _RaiseItemAdded(value: ColumnDefinition, index: number): void;\n        _RaiseItemRemoved(value: ColumnDefinition, index: number): void;\n    }\n}\ndeclare module Fayde.Controls {\n    class ItemsControlNode extends ControlNode {\n        XObject: ItemsControl;\n        constructor(xobj: ItemsControl);\n        ItemsPresenter: ItemsPresenter;\n        GetDefaultVisualTree(): UIElement;\n    }\n    class ItemsControl extends Control {\n        XamlNode: ItemsControlNode;\n        CreateNode(): ItemsControlNode;\n        IsItemsControl: boolean;\n        static DisplayMemberPathProperty: DependencyProperty;\n        static ItemsPanelProperty: DependencyProperty;\n        static ItemsSourceProperty: DependencyProperty;\n        static ItemsProperty: ImmutableDependencyProperty<ItemCollection>;\n        static ItemTemplateProperty: DependencyProperty;\n        static IsItemsHostProperty: DependencyProperty;\n        static GetIsItemsHost(d: DependencyObject): boolean;\n        static SetIsItemsHost(d: DependencyObject, value: boolean): void;\n        DisplayMemberPath: string;\n        ItemsPanel: ItemsPanelTemplate;\n        ItemsSource: nullstone.IEnumerable<any>;\n        Items: ItemCollection;\n        ItemTemplate: DataTemplate;\n        OnDisplayMemberPathChanged(e: IDependencyPropertyChangedEventArgs): void;\n        OnItemsSourceChanged(e: IDependencyPropertyChangedEventArgs): void;\n        OnItemTemplateChanged(e: IDependencyPropertyChangedEventArgs): void;\n        private _ItemContainersManager;\n        ItemContainersManager: Internal.IItemContainersManager;\n        constructor();\n        PrepareContainerForItem(container: UIElement, item: any): void;\n        ClearContainerForItem(container: UIElement, item: any): void;\n        GetContainerForItem(): UIElement;\n        IsItemItsOwnContainer(item: any): boolean;\n        private _IsDataBound;\n        private _SuspendItemsChanged;\n        private _OnItemsUpdated(sender, e);\n        private _OnItemsSourceUpdated(sender, e);\n        OnItemsChanged(e: Collections.CollectionChangedEventArgs): void;\n        OnItemsAdded(index: number, newItems: any[]): void;\n        OnItemsRemoved(index: number, oldItems: any[]): void;\n        private UpdateContainerTemplate(container, item);\n        private _DisplayMemberTemplate;\n        private _GetDisplayMemberTemplate();\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class Selector extends ItemsControl {\n        static IsSynchronizedWithCurrentItemProperty: DependencyProperty;\n        static SelectedIndexProperty: DependencyProperty;\n        static SelectedItemProperty: DependencyProperty;\n        static SelectedValueProperty: DependencyProperty;\n        static SelectedValuePathProperty: DependencyProperty;\n        static IsSelectionActiveProperty: DependencyProperty;\n        static SelectionModeProperty: DependencyProperty;\n        IsSynchronizedWithCurrentItem: boolean;\n        SelectedIndex: number;\n        SelectedItem: any;\n        SelectedValue: any;\n        SelectedValuePath: string;\n        IsSelectionActive: boolean;\n        SelectionMode: SelectionMode;\n        SelectionChanged: RoutedEvent<SelectionChangedEventArgs>;\n        private _Selection;\n        private _SelectedItems;\n        _SelectedItemsIsInvalid: boolean;\n        $TemplateScrollViewer: ScrollViewer;\n        private _SelectedValueWalker;\n        private SynchronizeWithCurrentItem;\n        constructor();\n        SelectedItems: Collections.ObservableCollection<any>;\n        private _OnIsSynchronizedWithCurrentItemChanged(args);\n        private _OnSelectedIndexChanged(args);\n        private _OnSelectedItemChanged(args);\n        private _OnSelectedValueChanged(args);\n        private _OnSelectedValuePathChanged(args);\n        private _OnSelectionModeChanged(args);\n        OnApplyTemplate(): void;\n        OnItemsChanged(e: Collections.CollectionChangedEventArgs): void;\n        OnItemsSourceChanged(args: IDependencyPropertyChangedEventArgs): void;\n        OnItemContainerStyleChanged(oldStyle: any, newStyle: any): void;\n        ClearContainerForItem(element: UIElement, item: any): void;\n        PrepareContainerForItem(element: UIElement, item: any): void;\n        _GetValueFromItem(item: any): any;\n        private _SelectItemFromValue(selectedValue, ignoreSelectedValue?);\n        SelectAll(): void;\n        private _OnCurrentItemChanged(sender, e);\n        _RaiseSelectionChanged(oldVals: any[], newVals: any[]): void;\n        OnSelectionChanged(args: SelectionChangedEventArgs): void;\n        NotifyListItemClicked(lbi: ListBoxItem): void;\n        NotifyListItemLoaded(lbi: ListBoxItem): void;\n        NotifyListItemGotFocus(lbi: ListBoxItem): void;\n        NotifyListItemLostFocus(lbi: ListBoxItem): void;\n    }\n}\ndeclare module Fayde.Markup {\n    import XamlMarkup = nullstone.markup.xaml.XamlMarkup;\n    function CreateXaml(xaml: string, uri?: string): XamlMarkup;\n    function CreateXaml(el: Element, uri?: string): XamlMarkup;\n}\ndeclare module Fayde.Controls {\n    class ContentPresenterNode extends FENode {\n        private _ContentRoot;\n        ContentRoot: UIElement;\n        XObject: ContentPresenter;\n        constructor(xobj: ContentPresenter);\n        DoApplyTemplateWithError(error: BError): boolean;\n        ClearRoot(): void;\n        _ContentChanged(args: IDependencyPropertyChangedEventArgs): void;\n        _ContentTemplateChanged(): void;\n        private _ShouldInvalidateImplicitTemplate(oldValue, newValue);\n        private _GetContentTemplate(type);\n    }\n    class ContentPresenter extends FrameworkElement {\n        XamlNode: ContentPresenterNode;\n        CreateNode(): ContentPresenterNode;\n        static ContentProperty: DependencyProperty;\n        static ContentTemplateProperty: DependencyProperty;\n        Content: any;\n        ContentTemplate: DataTemplate;\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    import PopupUpdater = minerva.controls.popup.PopupUpdater;\n    class PopupNode extends FENode {\n        LayoutUpdater: PopupUpdater;\n        XObject: Popup;\n        ClickedOutside: nullstone.Event<nullstone.IEventArgs>;\n        OnIsAttachedChanged(newIsAttached: boolean): void;\n        private _Overlay;\n        private _Catcher;\n        EnsureOverlay(): Canvas;\n        EnsureCatcher(): Canvas;\n        UpdateCatcher(): void;\n        private _RaiseClickedOutside(sender, e);\n        RegisterInitiator(initiator: UIElement): void;\n    }\n    class Popup extends FrameworkElement {\n        XamlNode: PopupNode;\n        CreateNode(): PopupNode;\n        CreateLayoutUpdater(): PopupUpdater;\n        static ChildProperty: DependencyProperty;\n        static HorizontalOffsetProperty: DependencyProperty;\n        static VerticalOffsetProperty: DependencyProperty;\n        static IsOpenProperty: DependencyProperty;\n        Child: UIElement;\n        HorizontalOffset: number;\n        VerticalOffset: number;\n        IsOpen: boolean;\n        Opened: nullstone.Event<nullstone.IEventArgs>;\n        Closed: nullstone.Event<nullstone.IEventArgs>;\n        WatchOutsideClick(callback: () => void, closure: any): void;\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    interface IScrollInfo {\n        ScrollOwner: ScrollViewer;\n        LineUp(): boolean;\n        LineDown(): boolean;\n        LineLeft(): boolean;\n        LineRight(): boolean;\n        MouseWheelUp(): boolean;\n        MouseWheelDown(): boolean;\n        MouseWheelLeft(): boolean;\n        MouseWheelRight(): boolean;\n        PageUp(): boolean;\n        PageDown(): boolean;\n        PageLeft(): boolean;\n        PageRight(): boolean;\n        MakeVisible(uie: UIElement, rectangle: minerva.Rect): minerva.Rect;\n        SetHorizontalOffset(offset: number): boolean;\n        SetVerticalOffset(offset: number): boolean;\n        CanHorizontallyScroll: boolean;\n        CanVerticallyScroll: boolean;\n        ExtentHeight: number;\n        ExtentWidth: number;\n        HorizontalOffset: number;\n        VerticalOffset: number;\n        ViewportHeight: number;\n        ViewportWidth: number;\n    }\n    var IScrollInfo_: nullstone.Interface<IScrollInfo>;\n}\ndeclare module Fayde.Controls {\n    class ScrollContentPresenter extends ContentPresenter implements Primitives.IScrollInfo {\n        CreateLayoutUpdater(): minerva.controls.scrollcontentpresenter.ScrollContentPresenterUpdater;\n        private _ScrollData;\n        private _IsClipPropertySet;\n        private _ClippingRectangle;\n        ScrollOwner: ScrollViewer;\n        CanHorizontallyScroll: boolean;\n        CanVerticallyScroll: boolean;\n        ExtentWidth: number;\n        ExtentHeight: number;\n        ViewportWidth: number;\n        ViewportHeight: number;\n        HorizontalOffset: number;\n        VerticalOffset: number;\n        LineUp(): boolean;\n        LineDown(): boolean;\n        LineLeft(): boolean;\n        LineRight(): boolean;\n        MouseWheelUp(): boolean;\n        MouseWheelDown(): boolean;\n        MouseWheelLeft(): boolean;\n        MouseWheelRight(): boolean;\n        PageUp(): boolean;\n        PageDown(): boolean;\n        PageLeft(): boolean;\n        PageRight(): boolean;\n        MakeVisible(uie: UIElement, viewport: minerva.Rect): minerva.Rect;\n        SetHorizontalOffset(offset: number): boolean;\n        SetVerticalOffset(offset: number): boolean;\n        OnApplyTemplate(): void;\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class RangeBase extends Controls.Control {\n        static MinimumProperty: DependencyProperty;\n        static MaximumProperty: DependencyProperty;\n        static LargeChangeProperty: DependencyProperty;\n        static SmallChangeProperty: DependencyProperty;\n        static ValueProperty: DependencyProperty;\n        Minimum: number;\n        Maximum: number;\n        SmallChange: number;\n        LargeChange: number;\n        Value: number;\n        OnMinimumChanged(oldMin: number, newMin: number): void;\n        OnMaximumChanged(oldMax: number, newMax: number): void;\n        OnValueChanged(oldVal: number, newVal: number): void;\n        ValueChanged: RoutedPropertyChangedEvent<number>;\n        private _Coercer;\n        constructor();\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class RepeatButton extends ButtonBase {\n        static DelayProperty: DependencyProperty;\n        static IntervalProperty: DependencyProperty;\n        Delay: number;\n        Interval: number;\n        private _KeyboardCausingRepeat;\n        private _MouseCausingRepeat;\n        _MousePosition: Point;\n        private _IntervalID;\n        private _NewInterval;\n        constructor();\n        OnApplyTemplate(): void;\n        OnDelayChanged(args: IDependencyPropertyChangedEventArgs): void;\n        OnIntervalChanged(args: IDependencyPropertyChangedEventArgs): void;\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs): void;\n        OnKeyDown(e: Input.KeyEventArgs): void;\n        OnKeyUp(e: Input.KeyEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        OnMouseEnter(e: Input.MouseEventArgs): void;\n        OnMouseLeave(e: Input.MouseEventArgs): void;\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs): void;\n        OnMouseMove(e: Input.MouseEventArgs): void;\n        private _UpdateMousePosition(e);\n        private _UpdateRepeatState();\n        private _StartRepeatingAfterDelay();\n        private _OnTimeout();\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class Thumb extends Control {\n        private _PreviousPosition;\n        private _Origin;\n        DragCompleted: RoutedEvent<DragCompletedEventArgs>;\n        DragDelta: RoutedEvent<DragDeltaEventArgs>;\n        DragStarted: RoutedEvent<DragStartedEventArgs>;\n        static IsDraggingProperty: DependencyProperty;\n        static IsFocusedProperty: DependencyProperty;\n        IsDragging: boolean;\n        IsFocused: boolean;\n        constructor();\n        OnApplyTemplate(): void;\n        private OnDraggingChanged(args);\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        private _FocusChanged(hasFocus);\n        OnLostMouseCapture(e: Input.MouseEventArgs): void;\n        OnMouseEnter(e: Input.MouseEventArgs): void;\n        OnMouseLeave(e: Input.MouseEventArgs): void;\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnMouseMove(e: Input.MouseEventArgs): void;\n        OnLostTouchCapture(e: Input.TouchEventArgs): void;\n        OnTouchEnter(e: Input.TouchEventArgs): void;\n        OnTouchLeave(e: Input.TouchEventArgs): void;\n        OnTouchDown(e: Input.TouchEventArgs): void;\n        OnTouchUp(e: Input.TouchEventArgs): void;\n        OnTouchMove(e: Input.TouchEventArgs): void;\n        CancelDrag(): void;\n        private _RaiseDragStarted();\n        private _RaiseDragDelta(x, y);\n        private _RaiseDragCompleted(canceled);\n        GoToStateCommon(gotoFunc: (state: string) => boolean): boolean;\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class ScrollBar extends RangeBase {\n        private _DragValue;\n        Scroll: RoutedEvent<ScrollEventArgs>;\n        static OrientationProperty: DependencyProperty;\n        static ViewportSizeProperty: DependencyProperty;\n        Orientation: Orientation;\n        ViewportSize: number;\n        IsDragging: boolean;\n        constructor();\n        private $HorizontalTemplate;\n        private $HorizontalSmallIncrease;\n        private $HorizontalSmallDecrease;\n        private $HorizontalLargeIncrease;\n        private $HorizontalLargeDecrease;\n        private $HorizontalThumb;\n        private $VerticalTemplate;\n        private $VerticalSmallIncrease;\n        private $VerticalSmallDecrease;\n        private $VerticalLargeIncrease;\n        private $VerticalLargeDecrease;\n        private $VerticalThumb;\n        OnApplyTemplate(): void;\n        OnMaximumChanged(oldMax: number, newMax: number): void;\n        OnMinimumChanged(oldMin: number, newMin: number): void;\n        OnValueChanged(oldValue: number, newValue: number): void;\n        private _OnThumbDragStarted(sender, e);\n        private _OnThumbDragDelta(sender, e);\n        private _OnThumbDragCompleted(sender, e);\n        private _SmallDecrement(sender, e);\n        private _SmallIncrement(sender, e);\n        private _LargeDecrement(sender, e);\n        private _LargeIncrement(sender, e);\n        private _HandleSizeChanged(sender, e);\n        private _OnOrientationChanged();\n        private _UpdateTrackLayout();\n        private _UpdateThumbSize(trackLength);\n        private _GetTrackLength();\n        private _ConvertViewportSizeToDisplayUnits(trackLength);\n        private _RaiseScroll(type);\n    }\n}\ndeclare module Fayde.Controls {\n    class ScrollViewer extends ContentControl {\n        private static _ScrollBarVisibilityChanged(d, args);\n        static HorizontalScrollBarVisibilityProperty: DependencyProperty;\n        static GetHorizontalScrollBarVisibility(d: DependencyObject): ScrollBarVisibility;\n        static SetHorizontalScrollBarVisibility(d: DependencyObject, value: ScrollBarVisibility): void;\n        HorizontalScrollBarVisibility: ScrollBarVisibility;\n        static VerticalScrollBarVisibilityProperty: DependencyProperty;\n        static GetVerticalScrollBarVisibility(d: DependencyObject): ScrollBarVisibility;\n        static SetVerticalScrollBarVisibility(d: DependencyObject, value: ScrollBarVisibility): void;\n        VerticalScrollBarVisibility: ScrollBarVisibility;\n        static ComputedHorizontalScrollBarVisibilityProperty: DependencyProperty;\n        static ComputedVerticalScrollBarVisibilityProperty: DependencyProperty;\n        static HorizontalOffsetProperty: DependencyProperty;\n        static VerticalOffsetProperty: DependencyProperty;\n        static ScrollableWidthProperty: DependencyProperty;\n        static ScrollableHeightProperty: DependencyProperty;\n        static ViewportWidthProperty: DependencyProperty;\n        static ViewportHeightProperty: DependencyProperty;\n        static ExtentWidthProperty: DependencyProperty;\n        static ExtentHeightProperty: DependencyProperty;\n        ComputedHorizontalScrollBarVisibility: Visibility;\n        ComputedVerticalScrollBarVisibility: Visibility;\n        HorizontalOffset: number;\n        VerticalOffset: number;\n        ScrollableWidth: number;\n        ScrollableHeight: number;\n        ViewportWidth: number;\n        ViewportHeight: number;\n        ExtentWidth: number;\n        ExtentHeight: number;\n        $TemplatedParentHandlesScrolling: boolean;\n        $ScrollContentPresenter: ScrollContentPresenter;\n        private $HorizontalScrollBar;\n        private $VerticalScrollBar;\n        constructor();\n        private _ScrollInfo;\n        ScrollInfo: Primitives.IScrollInfo;\n        InvalidateScrollInfo(): void;\n        private _UpdateScrollBarVisibility();\n        private _UpdateScrollBar(orientation, value);\n        OnApplyTemplate(): void;\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnMouseWheel(e: Input.MouseWheelEventArgs): void;\n        private _TouchOrigin;\n        private _Delta;\n        private _TouchInitialOffset;\n        OnTouchDown(e: Input.TouchEventArgs): void;\n        OnTouchUp(e: Input.TouchEventArgs): void;\n        OnTouchMove(e: Input.TouchEventArgs): void;\n        OnKeyDown(e: Input.KeyEventArgs): void;\n        ScrollInDirection(key: Input.Key): void;\n        ScrollToHorizontalOffset(offset: number): void;\n        ScrollToVerticalOffset(offset: number): void;\n        LineUp(): void;\n        LineDown(): void;\n        LineLeft(): void;\n        LineRight(): void;\n        PageHome(): void;\n        PageEnd(): void;\n        PageUp(): void;\n        PageDown(): void;\n        PageLeft(): void;\n        PageRight(): void;\n        private _HandleScroll(orientation, e);\n        private _HandleHorizontalScroll(e);\n        private _HandleVerticalScroll(e);\n    }\n}\ndeclare module Fayde.Controls {\n    class ComboBox extends Primitives.Selector {\n        DropDownOpened: nullstone.Event<{}>;\n        DropDownClosed: nullstone.Event<{}>;\n        static IsDropDownOpenProperty: DependencyProperty;\n        static ItemContainerStyleProperty: DependencyProperty;\n        static MaxDropDownHeightProperty: DependencyProperty;\n        static IsSelectionActiveProperty: DependencyProperty;\n        static WatermarkProperty: DependencyProperty;\n        IsDropDownOpen: boolean;\n        ItemContainerStyle: Style;\n        MaxDropDownHeight: number;\n        Watermark: String;\n        private $ContentPresenter;\n        private $Popup;\n        private $DropDownToggle;\n        private $DisplayedItem;\n        private $SelectionBoxItem;\n        private $SelectionBoxItemTemplate;\n        private $WatermarkElement;\n        private _NullSelFallback;\n        private _FocusedIndex;\n        constructor();\n        private _IsDropDownOpenChanged(args);\n        private _MaxDropDownHeightChanged(args);\n        private _GetChildOfType(name, type);\n        OnApplyTemplate(): void;\n        OnItemContainerStyleChanged(args: IDependencyPropertyChangedEventArgs): void;\n        IsItemItsOwnContainer(item: any): boolean;\n        GetContainerForItem(): UIElement;\n        PrepareContainerForItem(container: UIElement, item: any): void;\n        GoToStateFocus(gotoFunc: (state: string) => boolean): boolean;\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs): void;\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnMouseEnter(e: Input.MouseEventArgs): void;\n        OnMouseLeave(e: Input.MouseEventArgs): void;\n        OnTouchMove(e: Input.TouchEventArgs): void;\n        OnTouchDown(e: Input.TouchEventArgs): void;\n        OnTouchLeave(e: Input.TouchEventArgs): void;\n        OnKeyDown(e: Input.KeyEventArgs): void;\n        private _CheckWatermarkVisibility();\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        private _OnChildKeyDown(sender, e);\n        OnSelectionChanged(e: Primitives.SelectionChangedEventArgs): void;\n        private _OnToggleChecked(sender, e);\n        private _OnToggleUnchecked(sender, e);\n        private _PopupClickedOutside();\n        private _UpdateDisplayedItem(selectedItem);\n        private _UpdatePopupSizeAndPosition(sender, e);\n        private _UpdatePopupMaxHeight(height);\n    }\n}\ndeclare module Fayde.Controls {\n    class ListBoxItem extends ContentControl {\n        private _ParentSelector;\n        ParentSelector: Primitives.Selector;\n        ParentSelectorChanged: nullstone.Event<{}>;\n        static IsSelectedProperty: DependencyProperty;\n        IsSelected: boolean;\n        constructor();\n        OnApplyTemplate(): void;\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnMouseEnter(e: Input.MouseEventArgs): void;\n        OnMouseLeave(e: Input.MouseEventArgs): void;\n        OnTouchMove(e: Input.TouchEventArgs): void;\n        OnTouchDown(e: Input.TouchEventArgs): void;\n        OnTouchUp(e: Input.TouchEventArgs): void;\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        GoToStateSelection(gotoFunc: (state: string) => boolean): boolean;\n        private OnIsSelectedChanged(args);\n    }\n}\ndeclare module Fayde.Controls {\n    class ComboBoxItem extends ListBoxItem {\n        constructor();\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs): void;\n        OnTouchUp(e: Input.TouchEventArgs): void;\n    }\n}\ndeclare module Fayde.Markup {\n    class FrameworkTemplate extends DependencyObject {\n        private $$markup;\n        private $$resources;\n        Validate(): string;\n        GetVisualTree(bindingSource: DependencyObject): UIElement;\n    }\n    function LoadXaml<T extends XamlObject>(app: Application, xaml: string): T;\n    function LoadXaml<T extends XamlObject>(app: Application, el: Element): T;\n    function Load<T extends XamlObject>(app: Application, xm: nullstone.markup.Markup<any>): T;\n}\ndeclare module Fayde.Controls {\n    class ControlTemplate extends Markup.FrameworkTemplate {\n        static TargetTypeProperty: DependencyProperty;\n        TargetType: Function;\n        Validate(): string;\n    }\n}\ndeclare module Fayde.Controls {\n    class Dialog extends ContentControl {\n        static DialogResultProperty: DependencyProperty;\n        static ClickResultProperty: DependencyProperty;\n        DialogResult: boolean;\n        private _IgnoreResult;\n        private OnDialogResultChanged(args);\n        static GetClickResult(dobj: DependencyObject): boolean;\n        static SetClickResult(dobj: DependencyObject, value: boolean): void;\n        constructor();\n    }\n}\ndeclare module Fayde.Controls {\n    class UserControl extends Control {\n        static ContentProperty: DependencyProperty;\n        Content: UIElement;\n        CreateLayoutUpdater(): minerva.controls.usercontrol.UserControlUpdater;\n        InitializeComponent(): void;\n        constructor();\n    }\n}\ndeclare module Fayde.Controls {\n    class Page extends UserControl {\n        static TitleProperty: DependencyProperty;\n        Title: string;\n        constructor();\n        static GetAsync(initiator: DependencyObject, url: string): Promise<Page>;\n    }\n}\ndeclare module Fayde.Navigation {\n    interface INavigate {\n        Navigate(source: Uri): boolean;\n    }\n    var INavigate_: nullstone.Interface<INavigate>;\n}\ndeclare module Fayde.Controls {\n    class Frame extends ContentControl implements Navigation.INavigate {\n        static IsDeepLinkedProperty: DependencyProperty;\n        static CurrentSourceProperty: DependencyProperty;\n        static SourceProperty: DependencyProperty;\n        static UriMapperProperty: DependencyProperty;\n        static RouteMapperProperty: DependencyProperty;\n        static IsLoadingProperty: DependencyProperty;\n        IsDeepLinked: boolean;\n        CurrentSource: Uri;\n        Source: Uri;\n        UriMapper: Navigation.UriMapper;\n        RouteMapper: Navigation.RouteMapper;\n        IsLoading: boolean;\n        private _NavService;\n        private _CurrentRoute;\n        OnIsLoadingChanged(oldIsLoading: boolean, newIsLoading: boolean): void;\n        constructor();\n        GoToStates(gotoFunc: (state: string) => boolean): void;\n        GoToStateLoading(gotoFunc: (state: string) => boolean): boolean;\n        Navigate(uri: Uri): boolean;\n        GoForward(): void;\n        GoBackward(): void;\n        StopLoading(): void;\n        private _FrameLoaded(sender, e);\n        private _HandleDeepLink();\n        private _LoadContent(source);\n        private _HandleSuccess(page);\n        private _HandleError(error);\n        private _SetPage(page);\n        private SourcePropertyChanged(args);\n    }\n}\ndeclare module Fayde.Controls {\n    class GridNode extends PanelNode {\n        LayoutUpdater: minerva.controls.grid.GridUpdater;\n        ColumnDefinitionsChanged(coldef: ColumnDefinition, index: number, add: boolean): void;\n        RowDefinitionsChanged(rowdef: RowDefinition, index: number, add: boolean): void;\n    }\n    class Grid extends Panel {\n        XamlNode: GridNode;\n        CreateNode(): GridNode;\n        CreateLayoutUpdater(): minerva.controls.grid.GridUpdater;\n        static ColumnProperty: DependencyProperty;\n        static GetColumn(d: DependencyObject): number;\n        static SetColumn(d: DependencyObject, value: number): void;\n        static ColumnSpanProperty: DependencyProperty;\n        static GetColumnSpan(d: DependencyObject): number;\n        static SetColumnSpan(d: DependencyObject, value: number): void;\n        static RowProperty: DependencyProperty;\n        static GetRow(d: DependencyObject): number;\n        static SetRow(d: DependencyObject, value: number): void;\n        static RowSpanProperty: DependencyProperty;\n        static GetRowSpan(d: DependencyObject): number;\n        static SetRowSpan(d: DependencyObject, value: number): void;\n        static ColumnDefinitionsProperty: ImmutableDependencyProperty<ColumnDefinitionCollection>;\n        static RowDefinitionsProperty: ImmutableDependencyProperty<RowDefinitionCollection>;\n        static ShowGridLinesProperty: DependencyProperty;\n        ShowGridLines: boolean;\n        ColumnDefinitions: ColumnDefinitionCollection;\n        RowDefinitions: RowDefinitionCollection;\n        constructor();\n    }\n}\ndeclare module Fayde.Controls {\n    import GridUnitType = minerva.controls.grid.GridUnitType;\n    class GridLength implements minerva.controls.grid.IGridLength, ICloneable {\n        Value: number;\n        Type: GridUnitType;\n        constructor(value?: number, unitType?: GridUnitType);\n        static Equals(gl1: GridLength, gl2: GridLength): boolean;\n        Clone(): GridLength;\n    }\n}\ndeclare module Fayde.Controls {\n    class HeaderedContentControl extends ContentControl {\n        static HeaderProperty: DependencyProperty;\n        Header: any;\n        static HeaderTemplateProperty: DependencyProperty;\n        HeaderTemplate: DataTemplate;\n        constructor();\n        OnHeaderChanged(oldHeader: any, newHeader: any): void;\n        OnHeaderTemplateChanged(oldHeaderTemplate: DataTemplate, newHeaderTemplate: DataTemplate): void;\n    }\n}\ndeclare module Fayde.Controls {\n    class HyperlinkButton extends Primitives.ButtonBase {\n        static NavigateUriProperty: DependencyProperty;\n        static TargetNameProperty: DependencyProperty;\n        NavigateUri: Uri;\n        TargetName: string;\n        constructor();\n        OnApplyTemplate(): void;\n        OnClick(): void;\n    }\n}\ndeclare module Fayde.Media {\n    enum BrushMappingMode {\n        Absolute = 0,\n        RelativeToBoundingBox = 1,\n    }\n    enum GradientSpreadMethod {\n        Pad = 0,\n        Reflect = 1,\n        Repeat = 2,\n    }\n    enum Stretch {\n        None = 0,\n        Fill = 1,\n        Uniform = 2,\n        UniformToFill = 3,\n    }\n    enum AlignmentX {\n        Left = 0,\n        Center = 1,\n        Right = 2,\n    }\n    enum AlignmentY {\n        Top = 0,\n        Center = 1,\n        Bottom = 2,\n    }\n    enum TextHintingMode {\n        Fixed = 0,\n        Animated = 1,\n    }\n}\ndeclare module Fayde.Controls {\n    import ImageUpdater = minerva.controls.image.ImageUpdater;\n    class Image extends FrameworkElement {\n        CreateLayoutUpdater(): ImageUpdater;\n        private static _SourceCoercer(d, propd, value);\n        static SourceProperty: DependencyProperty;\n        static StretchProperty: DependencyProperty;\n        Source: Media.Imaging.ImageSource;\n        Stretch: Media.Stretch;\n        ImageOpened: nullstone.Event<{}>;\n        ImageFailed: nullstone.Event<{}>;\n        private $watcher;\n        OnImageErrored(source: Media.Imaging.BitmapSource, error: Error): void;\n        OnImageLoaded(source: Media.Imaging.BitmapSource): void;\n        OnImageChanged(source: Media.Imaging.BitmapSource): void;\n        OnSourceChanged(oldSource: Media.Imaging.ImageSource, newSource: Media.Imaging.ImageSource): void;\n    }\n}\ndeclare module Fayde.Controls {\n    interface IItemCollection extends nullstone.ICollection<any> {\n        ItemsChanged: nullstone.Event<Collections.CollectionChangedEventArgs>;\n        ToArray(): any[];\n        GetRange(startIndex: number, endIndex: number): any[];\n        Contains(value: any): boolean;\n        IndexOf(value: any): number;\n        AddRange(values: any[]): any;\n    }\n    class ItemCollection extends XamlObjectCollection<any> implements IItemCollection {\n        ItemsChanged: nullstone.Event<Collections.CollectionChangedEventArgs>;\n        ToArray(): any[];\n        Count: number;\n        IsReadOnly: boolean;\n        GetValueAt(index: number): XamlObject;\n        GetRange(startIndex: number, endIndex: number): XamlObject[];\n        SetValueAt(index: number, value: XamlObject): boolean;\n        SetValueAtImpl(index: number, value: any): void;\n        Add(value: XamlObject): number;\n        AddImpl(value: any): number;\n        AddRange(values: any[]): void;\n        AddRangeImpl(values: any[]): void;\n        Insert(index: number, value: XamlObject): boolean;\n        InsertImpl(index: number, value: XamlObject): void;\n        IndexOf(value: XamlObject): number;\n        Contains(value: XamlObject): boolean;\n        Remove(value: XamlObject): boolean;\n        RemoveImpl(value: XamlObject): void;\n        RemoveAt(index: number): boolean;\n        RemoveAtImpl(index: number): void;\n        Clear(): boolean;\n        ClearImpl(): void;\n        private _ValidateReadOnly();\n    }\n}\ndeclare module Fayde.Controls {\n    class ItemsPanelTemplate extends Markup.FrameworkTemplate {\n        GetVisualTree(bindingSource: DependencyObject): Panel;\n    }\n}\ndeclare module Fayde.Controls {\n    class ItemsPresenterNode extends FENode {\n        XObject: ItemsPresenter;\n        constructor(xobj: ItemsPresenter);\n        private _ElementRoot;\n        ElementRoot: Panel;\n        DoApplyTemplateWithError(error: BError): boolean;\n    }\n    class ItemsPresenter extends FrameworkElement {\n        TemplateOwner: ItemsControl;\n        XamlNode: ItemsPresenterNode;\n        CreateNode(): ItemsPresenterNode;\n        ItemsControl: ItemsControl;\n        Panel: Panel;\n        static Get(panel: Panel): ItemsPresenter;\n        OnItemsAdded(index: number, newItems: any[]): void;\n        OnItemsRemoved(index: number, oldItems: any[]): void;\n    }\n}\ndeclare module Fayde.Controls {\n    class ListBox extends Primitives.Selector {\n        private _FocusedIndex;\n        static ItemContainerStyleProperty: DependencyProperty;\n        static IsSelectionActiveProperty: DependencyProperty;\n        ItemContainerStyle: Style;\n        constructor();\n        ScrollIntoView(item: any): void;\n        private _NavigateByPage(forward);\n        private _ScrollInDirection(key);\n        private _IsOnCurrentPage(item, itemsHostRectOut?, listBoxItemsRectOut?);\n        private _GetFirstItemOnCurrentPage(startingIndex, forward);\n        OnItemContainerStyleChanged(args: IDependencyPropertyChangedEventArgs): void;\n        OnKeyDown(args: Input.KeyEventArgs): void;\n        private _GetIsVerticalOrientation();\n        IsItemItsOwnContainer(item: any): boolean;\n        GetContainerForItem(): UIElement;\n        PrepareContainerForItem(element: UIElement, item: any): void;\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        NotifyListItemGotFocus(lbi: ListBoxItem): void;\n        NotifyListItemLostFocus(lbi: ListBoxItem): void;\n        OnItemsSourceChanged(e: IDependencyPropertyChangedEventArgs): void;\n    }\n}\ndeclare module Fayde.Controls {\n    import VideoUpdater = minerva.controls.video.VideoUpdater;\n    class MediaElement extends FrameworkElement {\n        CreateLayoutUpdater(): VideoUpdater;\n        private static _SourceCoercer(d, propd, value);\n        static AutoPlayProperty: DependencyProperty;\n        static SourceProperty: DependencyProperty;\n        static StretchProperty: DependencyProperty;\n        AutoPlay: boolean;\n        Source: Media.Videos.VideoSource;\n        Stretch: Media.Stretch;\n        VideoOpened: nullstone.Event<{}>;\n        VideoFailed: nullstone.Event<{}>;\n        private $watcher;\n        protected OnAutoPlayChanged(oldValue: boolean, newValue: boolean): void;\n        OnSourceChanged(oldSource: Media.Videos.VideoSourceBase, newSource: Media.Videos.VideoSourceBase): void;\n        OnVideoErrored(source: Media.Videos.VideoSourceBase, error: Error): void;\n        OnVideoCanPlay(source: Media.Videos.VideoSourceBase): void;\n        OnVideoChanged(source: Media.Videos.VideoSourceBase): void;\n        Play(): void;\n        Pause(): void;\n    }\n}\ndeclare module Fayde {\n    class RoutedEventArgs implements nullstone.IEventArgs {\n        Handled: boolean;\n        Source: any;\n        OriginalSource: any;\n    }\n}\ndeclare module Fayde.Input {\n    enum Key {\n        None = 0,\n        Back = 1,\n        Tab = 2,\n        Enter = 3,\n        Shift = 4,\n        Ctrl = 5,\n        Alt = 6,\n        CapsLock = 7,\n        Escape = 8,\n        Space = 9,\n        PageUp = 10,\n        PageDown = 11,\n        End = 12,\n        Home = 13,\n        Left = 14,\n        Up = 15,\n        Right = 16,\n        Down = 17,\n        Insert = 18,\n        Delete = 19,\n        D0 = 20,\n        D1 = 21,\n        D2 = 22,\n        D3 = 23,\n        D4 = 24,\n        D5 = 25,\n        D6 = 26,\n        D7 = 27,\n        D8 = 28,\n        D9 = 29,\n        A = 30,\n        B = 31,\n        C = 32,\n        D = 33,\n        E = 34,\n        F = 35,\n        G = 36,\n        H = 37,\n        I = 38,\n        J = 39,\n        K = 40,\n        L = 41,\n        M = 42,\n        N = 43,\n        O = 44,\n        P = 45,\n        Q = 46,\n        R = 47,\n        S = 48,\n        T = 49,\n        U = 50,\n        V = 51,\n        W = 52,\n        X = 53,\n        Y = 54,\n        Z = 55,\n        F1 = 56,\n        F2 = 57,\n        F3 = 58,\n        F4 = 59,\n        F5 = 60,\n        F6 = 61,\n        F7 = 62,\n        F8 = 63,\n        F9 = 64,\n        F10 = 65,\n        F11 = 66,\n        F12 = 67,\n        NumPad0 = 68,\n        NumPad1 = 69,\n        NumPad2 = 70,\n        NumPad3 = 71,\n        NumPad4 = 72,\n        NumPad5 = 73,\n        NumPad6 = 74,\n        NumPad7 = 75,\n        NumPad8 = 76,\n        NumPad9 = 77,\n        Multiply = 78,\n        Add = 79,\n        Subtract = 80,\n        Decimal = 81,\n        Divide = 82,\n        Unknown = 255,\n    }\n    class KeyboardEventArgs extends RoutedEventArgs {\n    }\n    class KeyEventArgs extends KeyboardEventArgs {\n        Modifiers: IModifiersOn;\n        PlatformKeyCode: number;\n        Key: Key;\n        Char: string;\n        constructor(modifiers: IModifiersOn, keyCode: number, key: Key, c?: string);\n    }\n}\ndeclare module Fayde.Controls {\n    class TextBoxBase extends Control {\n        static CaretBrushProperty: DependencyProperty;\n        static SelectionForegroundProperty: DependencyProperty;\n        static SelectionBackgroundProperty: DependencyProperty;\n        static SelectionLengthProperty: DependencyProperty;\n        static SelectionStartProperty: DependencyProperty;\n        static BaselineOffsetProperty: DependencyProperty;\n        static MaxLengthProperty: DependencyProperty;\n        static SelectionOnFocusProperty: DependencyProperty;\n        CaretBrush: Media.Brush;\n        SelectionForeground: Media.Brush;\n        SelectionBackground: Media.Brush;\n        SelectionLength: number;\n        SelectionStart: number;\n        BaselineOffset: number;\n        MaxLength: number;\n        SelectionOnFocus: SelectionOnFocus;\n        private _Selecting;\n        private _Captured;\n        IsReadOnly: boolean;\n        AcceptsReturn: boolean;\n        $ContentProxy: Internal.TextBoxContentProxy;\n        $Proxy: Text.Proxy;\n        $Advancer: Internal.ICursorAdvancer;\n        $View: Internal.TextBoxView;\n        $Clipboard: Clipboard.IClipboard;\n        constructor(eventsMask: Text.EmitChangedType);\n        private _SyncFont();\n        CreateView(): Internal.TextBoxView;\n        Cursor: CursorType;\n        private selectBasedonSelectionMode();\n        OnApplyTemplate(): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs): void;\n        OnMouseMove(e: Input.MouseEventArgs): void;\n        OnTouchDown(e: Input.TouchEventArgs): void;\n        OnTouchUp(e: Input.TouchEventArgs): void;\n        OnTouchMove(e: Input.TouchEventArgs): void;\n        OnKeyDown(args: Input.KeyEventArgs): void;\n        PostOnKeyDown(args: Input.KeyEventArgs): void;\n        private _KeyDownBackSpace(modifiers);\n        private _KeyDownDelete(modifiers);\n        private _KeyDownPageDown(modifiers);\n        private _KeyDownPageUp(modifiers);\n        private _KeyDownHome(modifiers);\n        private _KeyDownEnd(modifiers);\n        private _KeyDownLeft(modifiers);\n        private _KeyDownRight(modifiers);\n        private _KeyDownDown(modifiers);\n        private _KeyDownUp(modifiers);\n    }\n}\ndeclare module Fayde.Controls {\n    class PasswordBox extends TextBoxBase {\n        static PasswordCharProperty: DependencyProperty;\n        static PasswordProperty: DependencyProperty;\n        PasswordChar: string;\n        Password: string;\n        constructor();\n        DisplayText: string;\n    }\n}\ndeclare module Fayde.Controls {\n    class ProgressBar extends Primitives.RangeBase {\n        private _Track;\n        private _Indicator;\n        static IsIndeterminateProperty: DependencyProperty;\n        IsIndeterminate: boolean;\n        private OnIsIndeterminateChanged(args);\n        OnMinimumChanged(oldMinimum: number, newMinimum: number): void;\n        OnMaximumChanged(oldMaximum: number, newMaximum: number): void;\n        OnValueChanged(oldValue: number, newValue: number): void;\n        constructor();\n        OnApplyTemplate(): void;\n        GoToStates(gotoFunc: (state: string) => boolean): void;\n        private _OnTrackSizeChanged(sender, e);\n        private _UpdateIndicator();\n    }\n}\ndeclare module Fayde.Controls {\n    class RadioButton extends Primitives.ToggleButton {\n        static GroupNameProperty: DependencyProperty;\n        GroupName: string;\n        OnGroupNameChanged(args: IDependencyPropertyChangedEventArgs): void;\n        constructor();\n        OnIsCheckedChanged(e: IDependencyPropertyChangedEventArgs): void;\n        OnToggle(): void;\n        UpdateRadioButtonGroup(): void;\n    }\n}\ndeclare module Fayde.Controls {\n    class _RichTextBoxView {\n    }\n    class RichTextBox extends Control {\n        HorizontalScrollBarVisibility: ScrollBarVisibility;\n        TextWrapping: TextWrapping;\n        constructor();\n    }\n}\ndeclare module Fayde.Controls {\n    class RowDefinition extends DependencyObject implements minerva.controls.grid.IRowDefinition {\n        static HeightProperty: DependencyProperty;\n        static MaxHeightProperty: DependencyProperty;\n        static MinHeightProperty: DependencyProperty;\n        static ActualHeightProperty: DependencyProperty;\n        Height: GridLength;\n        MaxHeight: number;\n        MinHeight: number;\n        ActualHeight: number;\n        setActualHeight(value: number): void;\n    }\n    class RowDefinitionCollection extends XamlObjectCollection<RowDefinition> {\n        _RaiseItemAdded(value: RowDefinition, index: number): void;\n        _RaiseItemRemoved(value: RowDefinition, index: number): void;\n    }\n}\ndeclare module Fayde.Controls {\n    class Slider extends Primitives.RangeBase {\n        private _DragValue;\n        static IsDirectionReversedProperty: DependencyProperty;\n        static IsFocusedProperty: DependencyProperty;\n        static OrientationProperty: DependencyProperty;\n        IsDirectionReversed: boolean;\n        IsFocused: boolean;\n        Orientation: Orientation;\n        constructor();\n        private $HorizontalTemplate;\n        private $HorizontalLargeIncrease;\n        private $HorizontalLargeDecrease;\n        private $HorizontalThumb;\n        private $VerticalTemplate;\n        private $VerticalLargeIncrease;\n        private $VerticalLargeDecrease;\n        private $VerticalThumb;\n        OnApplyTemplate(): void;\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs): void;\n        OnMinimumChanged(oldMin: number, newMin: number): void;\n        OnMaximumChanged(oldMax: number, newMax: number): void;\n        OnValueChanged(oldValue: number, newValue: number): void;\n        private _HandleSizeChanged(sender, e);\n        private _OnOrientationChanged();\n        private _UpdateTrackLayout();\n        private _OnThumbDragStarted(sender, e);\n        private _OnThumbDragDelta(sender, e);\n        OnMouseEnter(e: Input.MouseEventArgs): void;\n        OnMouseLeave(e: Input.MouseEventArgs): void;\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs): void;\n        OnLostMouseCapture(e: Input.MouseEventArgs): void;\n        OnKeyDown(e: Input.KeyEventArgs): void;\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n    }\n}\ndeclare module Fayde.Controls {\n    class StackPanel extends Panel {\n        CreateLayoutUpdater(): minerva.controls.stackpanel.StackPanelUpdater;\n        static OrientationProperty: DependencyProperty;\n        Orientation: Orientation;\n    }\n}\ndeclare module Fayde.Controls {\n    import TextBlockUpdater = minerva.controls.textblock.TextBlockUpdater;\n    class TextBlockNode extends FENode {\n        XObject: TextBlock;\n        LayoutUpdater: TextBlockUpdater;\n        private _IsDocAuto;\n        private _SettingText;\n        private _SettingInlines;\n        private _AutoRun;\n        constructor(xobj: TextBlock);\n        GetInheritedEnumerator(): nullstone.IEnumerator<DONode>;\n        TextChanged(args: IDependencyPropertyChangedEventArgs): void;\n        InlinesChanged(inline: Documents.Inline, index: number, isAdd: boolean): void;\n        InlineChanged(obj?: any): void;\n    }\n    class TextBlock extends FrameworkElement {\n        XamlNode: TextBlockNode;\n        CreateNode(): TextBlockNode;\n        CreateLayoutUpdater(): TextBlockUpdater;\n        static PaddingProperty: DependencyProperty;\n        static FontFamilyProperty: DependencyProperty;\n        static FontSizeProperty: DependencyProperty;\n        static FontStretchProperty: DependencyProperty;\n        static FontStyleProperty: DependencyProperty;\n        static FontWeightProperty: DependencyProperty;\n        static ForegroundProperty: DependencyProperty;\n        static TextDecorationsProperty: DependencyProperty;\n        static TextProperty: DependencyProperty;\n        static InlinesProperty: ImmutableDependencyProperty<Documents.InlineCollection>;\n        static LineStackingStrategyProperty: DependencyProperty;\n        static LineHeightProperty: DependencyProperty;\n        static TextAlignmentProperty: DependencyProperty;\n        static TextTrimmingProperty: DependencyProperty;\n        static TextWrappingProperty: DependencyProperty;\n        Padding: Thickness;\n        Foreground: Media.Brush;\n        FontFamily: string;\n        FontStretch: string;\n        FontStyle: string;\n        FontWeight: FontWeight;\n        FontSize: number;\n        TextDecorations: TextDecorations;\n        Text: string;\n        Inlines: Documents.InlineCollection;\n        LineStackingStrategy: LineStackingStrategy;\n        LineHeight: number;\n        TextAlignment: TextAlignment;\n        TextTrimming: TextTrimming;\n        TextWrapping: TextWrapping;\n        constructor();\n        IsInheritable(propd: DependencyProperty): boolean;\n    }\n}\ndeclare module Fayde.Controls {\n    class TextBox extends TextBoxBase {\n        static AcceptsReturnProperty: DependencyProperty;\n        static IsReadOnlyProperty: DependencyProperty;\n        static TextProperty: DependencyProperty;\n        static TextAlignmentProperty: DependencyProperty;\n        static TextWrappingProperty: DependencyProperty;\n        static HorizontalScrollBarVisibilityProperty: DependencyProperty;\n        static VerticalScrollBarVisibilityProperty: DependencyProperty;\n        AcceptsReturn: boolean;\n        IsReadOnly: boolean;\n        Text: string;\n        TextAlignment: TextAlignment;\n        TextWrapping: TextWrapping;\n        HorizontalScrollBarVisibility: ScrollBarVisibility;\n        VerticalScrollBarVisibility: ScrollBarVisibility;\n        TextChanged: RoutedEvent<RoutedEventArgs>;\n        constructor();\n        OnApplyTemplate(): void;\n        DisplayText: string;\n        OnMouseEnter(e: Input.MouseEventArgs): void;\n        OnMouseLeave(e: Input.MouseEventArgs): void;\n        OnGotFocus(e: RoutedEventArgs): void;\n        OnLostFocus(e: RoutedEventArgs): void;\n        GoToStateCommon(gotoFunc: (state: string) => boolean): boolean;\n        SelectAll(): void;\n        Select(start: number, length: number): void;\n    }\n}\ndeclare module Fayde.Controls {\n    class ToolTip extends ContentControl {\n        static HorizontalOffsetProperty: DependencyProperty;\n        static VerticalOffsetProperty: DependencyProperty;\n        static IsOpenProperty: DependencyProperty;\n        static PlacementProperty: DependencyProperty;\n        static PlacementTargetProperty: DependencyProperty;\n        HorizontalOffset: number;\n        VerticalOffset: number;\n        IsOpen: boolean;\n        Placement: PlacementMode;\n        PlacementTarget: UIElement;\n        private _TooltipParent;\n        private _TooltipParentDCListener;\n        TooltipParent: FrameworkElement;\n        PlacementOverride: PlacementMode;\n        PlacementTargetOverride: UIElement;\n        Opened: RoutedEvent<RoutedEventArgs>;\n        Closed: RoutedEvent<RoutedEventArgs>;\n        private _ParentPopup;\n        constructor();\n        OnApplyTemplate(): void;\n        private OnHorizontalOffsetChanged(args);\n        private OnVerticalOffsetChanged(args);\n        private OnIsOpenChanged(args);\n        private OnOffsetChanged(horizontalOffset, verticalOffset);\n        private OnLayoutUpdated(sender, e);\n        private OnTooltipParentDataContextChanged(sender, args);\n        private HookupParentPopup();\n        private OnPopupOpened(sender, e);\n        private OnPopupClosed(sender, e);\n        private PerformPlacement(horizontalOffset, verticalOffset);\n        GoToStates(gotoFunc: (state: string) => boolean): void;\n    }\n}\ndeclare class Point extends minerva.Point {\n    Clone(): Point;\n    static LERP(start: Point, end: Point, p: number): Point;\n}\ndeclare module Fayde.Controls {\n    class ToolTipService {\n        static ToolTipProperty: DependencyProperty;\n        static GetToolTip(dobj: DependencyObject): ToolTip;\n        static SetToolTip(dobj: DependencyObject, value: ToolTip): void;\n        static PlacementProperty: DependencyProperty;\n        static GetPlacement(dobj: DependencyObject): PlacementMode;\n        static SetPlacement(dobj: DependencyObject, value: PlacementMode): void;\n        static PlacementTargetProperty: DependencyProperty;\n        static GetPlacementTarget(dobj: DependencyObject): UIElement;\n        static SetPlacementTarget(dobj: DependencyObject, value: UIElement): void;\n        static MousePosition: Point;\n    }\n}\ndeclare module Fayde.Controls {\n    enum VirtualizationMode {\n        Standard = 0,\n        Recycling = 1,\n    }\n    class VirtualizingPanel extends Panel {\n        static VirtualizationModeProperty: DependencyProperty;\n        static GetVirtualizationMode(d: DependencyObject): VirtualizationMode;\n        static SetVirtualizationMode(d: DependencyObject, value: VirtualizationMode): void;\n        static IsVirtualizingProperty: DependencyProperty;\n        static GetIsVirtualizing(d: DependencyObject): boolean;\n        static SetIsVirtualizing(d: DependencyObject, value: boolean): void;\n        ItemsControl: ItemsControl;\n        OnItemsAdded(index: number, newItems: any[]): void;\n        OnItemsRemoved(index: number, oldItems: any[]): void;\n    }\n}\ndeclare module Fayde.Controls {\n    import VirtualizingStackPanelUpdater = minerva.controls.virtualizingstackpanel.VirtualizingStackPanelUpdater;\n    class VirtualizingStackPanel extends VirtualizingPanel implements Primitives.IScrollInfo {\n        CreateLayoutUpdater(): VirtualizingStackPanelUpdater;\n        private _ScrollData;\n        ScrollOwner: ScrollViewer;\n        CanHorizontallyScroll: boolean;\n        CanVerticallyScroll: boolean;\n        ExtentWidth: number;\n        ExtentHeight: number;\n        ViewportWidth: number;\n        ViewportHeight: number;\n        HorizontalOffset: number;\n        VerticalOffset: number;\n        LineUp(): boolean;\n        LineDown(): boolean;\n        LineLeft(): boolean;\n        LineRight(): boolean;\n        MouseWheelUp(): boolean;\n        MouseWheelDown(): boolean;\n        MouseWheelLeft(): boolean;\n        MouseWheelRight(): boolean;\n        PageUp(): boolean;\n        PageDown(): boolean;\n        PageLeft(): boolean;\n        PageRight(): boolean;\n        MakeVisible(uie: UIElement, rectangle: minerva.Rect): minerva.Rect;\n        SetHorizontalOffset(offset: number): boolean;\n        SetVerticalOffset(offset: number): boolean;\n        static OrientationProperty: DependencyProperty;\n        Orientation: Orientation;\n        OnItemsAdded(index: number, newItems: any[]): void;\n        OnItemsRemoved(index: number, oldItems: any[]): void;\n    }\n}\ninterface ICloneable {\n    Clone(): any;\n}\ndeclare module Fayde {\n    function Clone(value: any): any;\n}\ndeclare module Fayde {\n    class DataTemplate extends Markup.FrameworkTemplate {\n        static DataTypeProperty: DependencyProperty;\n        DataType: Function;\n    }\n}\ninterface IDependencyPropertyChangedEventArgs {\n    Property: DependencyProperty;\n    OldValue: any;\n    NewValue: any;\n}\ndeclare class DependencyPropertyChangedEventArgs implements nullstone.IEventArgs, IDependencyPropertyChangedEventArgs {\n    Property: DependencyProperty;\n    OldValue: any;\n    NewValue: any;\n}\ndeclare module Fayde {\n    class HierarchicalDataTemplate extends DataTemplate {\n        static ItemsSourceProperty: DependencyProperty;\n        static ItemTemplateProperty: DependencyProperty;\n        static ItemContainerStyleProperty: DependencyProperty;\n        ItemsSource: nullstone.IEnumerable<any>;\n        ItemTemplate: DataTemplate;\n        ItemContainerStyle: Style;\n    }\n}\ndeclare module Fayde {\n    class LayoutInformation {\n        static GetLayoutClip(uie: UIElement): Media.Geometry;\n        static GetLayoutSlot(uie: UIElement): minerva.Rect;\n    }\n}\ndeclare module Fayde {\n    class NameScope {\n        IsRoot: boolean;\n        private XNodes;\n        constructor(isRoot?: boolean);\n        FindName(name: string): XamlNode;\n        RegisterName(name: string, xnode: XamlNode): void;\n        UnregisterName(name: string): void;\n        Absorb(otherNs: NameScope): void;\n    }\n}\ndeclare module Fayde {\n    interface IResourcable {\n        Resources: Fayde.ResourceDictionary;\n    }\n    class ResourceDictionaryCollection extends XamlObjectCollection<ResourceDictionary> {\n        Get(key: any): any;\n        AddingToCollection(value: ResourceDictionary, error: BError): boolean;\n        private _AssertNoCycles(subtreeRoot, firstAncestorNode, error);\n    }\n    class ResourceDictionary extends XamlObject implements nullstone.IEnumerable<any> {\n        private _Keys;\n        private _Values;\n        private _IsSourceLoaded;\n        private _SourceBacking;\n        private _MergedDictionaries;\n        MergedDictionaries: ResourceDictionaryCollection;\n        Source: Uri;\n        App: Application;\n        Count: number;\n        AttachTo(xobj: XamlObject): void;\n        Contains(key: any): boolean;\n        Get(key: any): any;\n        Set(key: any, value: any): boolean;\n        Remove(key: any): boolean;\n        getEnumerator(reverse?: boolean): nullstone.IEnumerator<any>;\n        GetNodeEnumerator<U extends XamlNode>(reverse?: boolean): nullstone.IEnumerator<U>;\n        private _GetFromSource(key);\n    }\n}\ndeclare module Fayde {\n    class RoutedEvent<T extends RoutedEventArgs> extends nullstone.Event<T> {\n    }\n}\ndeclare module Fayde {\n    class RoutedPropertyChangedEvent<T> extends RoutedEvent<RoutedPropertyChangedEventArgs<T>> {\n    }\n    class RoutedPropertyChangedEventArgs<T> extends RoutedEventArgs {\n        OldValue: T;\n        NewValue: T;\n        constructor(oldValue: T, newValue: T);\n    }\n}\ndeclare module Fayde {\n    class RoutedPropertyChangingEvent<T> extends RoutedEvent<RoutedPropertyChangingEventArgs<T>> {\n    }\n    class RoutedPropertyChangingEventArgs<T> extends RoutedEventArgs {\n        Property: DependencyProperty;\n        OldValue: T;\n        NewValue: T;\n        private _IsCancelable;\n        IsCancellable: boolean;\n        private _Cancel;\n        Cancel: boolean;\n        InCoercion: boolean;\n        constructor(propd: DependencyProperty, oldValue: T, newValue: T, isCancelable: boolean);\n    }\n}\ndeclare module Fayde {\n    class SetterCollection extends XamlObjectCollection<Setter> {\n        private _IsSealed;\n        XamlNode: XamlNode;\n        Seal(): void;\n        AddingToCollection(value: Setter, error: BError): boolean;\n        private _ValidateSetter(setter, error);\n    }\n    class Setter extends DependencyObject {\n        private _IsSealed;\n        static PropertyProperty: DependencyProperty;\n        static ValueProperty: DependencyProperty;\n        static ConvertedValueProperty: DependencyProperty;\n        Property: DependencyProperty;\n        Value: any;\n        ConvertedValue: any;\n        Seal(): void;\n        static Compare(setter1: Setter, setter2: Setter): number;\n    }\n}\ndeclare module Fayde {\n    class SizeChangedEventArgs extends RoutedEventArgs {\n        PreviousSize: minerva.Size;\n        NewSize: minerva.Size;\n        constructor(previousSize: minerva.Size, newSize: minerva.Size);\n    }\n}\ndeclare module Fayde {\n    class Style extends DependencyObject {\n        private _IsSealed;\n        static SettersProperty: ImmutableDependencyProperty<SetterCollection>;\n        static BasedOnProperty: DependencyProperty;\n        static TargetTypeProperty: DependencyProperty;\n        Setters: SetterCollection;\n        BasedOn: Style;\n        TargetType: Function;\n        constructor();\n        Seal(): void;\n        Validate(instance: DependencyObject, error: BError): boolean;\n    }\n}\ndeclare module Fayde {\n    class TemplateBinding implements nullstone.markup.IMarkupExtension {\n        SourceProperty: string;\n        init(val: string): void;\n        transmute(os: any[]): any;\n    }\n}\ndeclare module Fayde {\n    class TriggerAction extends DependencyObject {\n        Fire(): void;\n    }\n    class TriggerActionCollection extends XamlObjectCollection<TriggerAction> {\n        Fire(): void;\n    }\n    class TriggerBase extends DependencyObject {\n        Attach(target: XamlObject): void;\n        Detach(target: XamlObject): void;\n    }\n    class EventTrigger extends TriggerBase {\n        static ActionsProperty: ImmutableDependencyProperty<TriggerActionCollection>;\n        static RoutedEventProperty: DependencyProperty;\n        Actions: TriggerActionCollection;\n        RoutedEvent: string;\n        private _IsAttached;\n        constructor();\n        Attach(target: XamlObject): void;\n        Detach(target: XamlObject): void;\n        private _FireActions(sender, e);\n        private _ParseEventName(target);\n    }\n    class TriggerCollection extends XamlObjectCollection<TriggerBase> {\n        XamlNode: XamlNode;\n        private ParentXamlObject;\n        AddingToCollection(value: TriggerBase, error: BError): boolean;\n        RemovedFromCollection(value: TriggerBase, isValueSafe: boolean): void;\n        AttachTarget(target: XamlObject): void;\n        DetachTarget(target: XamlObject): void;\n    }\n}\ndeclare module Fayde {\n    class VisualTreeEnum {\n        static GetAncestors(uie: UIElement): nullstone.IEnumerable<UIElement>;\n    }\n}\ndeclare module Fayde {\n    class VisualTreeHelper {\n        static GetParent(d: DependencyObject): DependencyObject;\n        static GetParentOfType<T extends DependencyObject>(d: DependencyObject, type: any): T;\n        static GetRoot(d: DependencyObject): DependencyObject;\n        static GetChild(d: DependencyObject, childIndex: number): DependencyObject;\n        static GetChildrenCount(d: DependencyObject): number;\n        static FindElementsInHostCoordinates(pos: Point, uie: UIElement): UIElement[];\n        static __Debug(ui: any, func?: (uin: UINode, tabIndex: number) => string): string;\n        private static __DebugTree(curNode, matchNode, tabIndex, func);\n        private static __DebugUIElement(uin, tabIndex);\n        private static __DebugGrid(uin, tabIndex);\n        private static __DebugUIElementLayout(uin, tabIndex);\n        static __DebugLayout(ui: any): string;\n        private static __GetById(id);\n    }\n}\ndeclare module Fayde {\n    enum VisualTreeDirection {\n        Logical = 0,\n        Reverse = 1,\n        ZForward = 2,\n        ZReverse = 3,\n    }\n    interface IWalker {\n        Step(): any;\n    }\n    interface IStyleWalker extends IWalker {\n        Step(): Setter;\n    }\n    interface IDeepTreeWalker extends IWalker {\n        Step(): UINode;\n        SkipBranch(): any;\n    }\n    interface ITabNavigationWalker {\n        FocusChild(): boolean;\n    }\n    function SingleStyleWalker(style: Style): IStyleWalker;\n    function MultipleStylesWalker(styles: Style[]): IStyleWalker;\n    function DeepTreeWalker(topNode: UINode, direction?: VisualTreeDirection): IDeepTreeWalker;\n    class TabNavigationWalker implements ITabNavigationWalker {\n        private _Root;\n        private _Current;\n        private _Forwards;\n        private _TabSorted;\n        constructor(root: UINode, cur: UINode, forwards: boolean);\n        FocusChild(): boolean;\n        static Focus(uin: UINode, forwards?: boolean): boolean;\n    }\n}\ndeclare module Fayde.Data {\n    var WarnBrokenPath: boolean;\n    class Binding implements nullstone.markup.IMarkupExtension, ICloneable {\n        StringFormat: string;\n        FallbackValue: any;\n        TargetNullValue: any;\n        BindsDirectlyToSource: boolean;\n        Converter: IValueConverter;\n        ConverterParameter: any;\n        ConverterCulture: any;\n        ElementName: string;\n        Mode: BindingMode;\n        NotifyOnValidationError: boolean;\n        RelativeSource: RelativeSource;\n        Path: Data.PropertyPath;\n        Source: any;\n        UpdateSourceTrigger: UpdateSourceTrigger;\n        ValidatesOnExceptions: boolean;\n        ValidatesOnDataErrors: boolean;\n        ValidatesOnNotifyDataErrors: boolean;\n        constructor();\n        constructor(path: string | Data.PropertyPath);\n        constructor(binding: Binding);\n        init(val: string): void;\n        transmute(os: any[]): any;\n        private $$coerce();\n        Clone(): Binding;\n        static fromData(data: IBindingData): Binding;\n    }\n}\ndeclare module Fayde.Data {\n    class CollectionViewSource extends DependencyObject {\n        static SourceProperty: DependencyProperty;\n        static ViewProperty: DependencyProperty;\n        Source: any;\n        View: ICollectionView;\n    }\n}\ndeclare module Fayde.Data {\n    class DataErrorsChangedEventArgs implements nullstone.IEventArgs {\n        PropertyName: string;\n        constructor(propertyName: string);\n    }\n}\ndeclare module Fayde.Data {\n    enum RelativeSourceMode {\n        TemplatedParent = 0,\n        Self = 1,\n        FindAncestor = 2,\n        ItemsControlParent = 3,\n    }\n    enum BindingMode {\n        OneWay = 0,\n        TwoWay = 1,\n        OneTime = 2,\n        OneWayToSource = 3,\n    }\n    enum UpdateSourceTrigger {\n        Default = 0,\n        PropertyChanged = 1,\n        Explicit = 3,\n    }\n}\ndeclare module Fayde.Data {\n    interface IBindingData {\n        Path: string | Data.PropertyPath;\n        StringFormat?: string;\n        FallbackValue?: any;\n        TargetNullValue?: any;\n        BindsDirectlyToSource?: boolean;\n        Converter?: IValueConverter;\n        ConverterParameter?: any;\n        ConverterCulture?: any;\n        ElementName?: string;\n        Mode?: BindingMode;\n        NotifyOnValidationError?: boolean;\n        RelativeSource?: RelativeSource;\n        Source?: any;\n        UpdateSourceTrigger?: UpdateSourceTrigger;\n        ValidatesOnExceptions?: boolean;\n        ValidatesOnDataErrors?: boolean;\n        ValidatesOnNotifyDataErrors?: boolean;\n    }\n}\ndeclare module Fayde.Data {\n    interface ICollectionView extends nullstone.IEnumerable<any> {\n        CurrentChanged: nullstone.Event<nullstone.IEventArgs>;\n        CurrentItem: any;\n        MoveCurrentTo(item: any): boolean;\n    }\n    var ICollectionView_: nullstone.Interface<ICollectionView>;\n}\ndeclare module Fayde.Data {\n    interface IDataErrorInfo {\n        Error: string;\n        GetError(propertyName: string): string;\n    }\n    var IDataErrorInfo_: nullstone.Interface<IDataErrorInfo>;\n}\ndeclare module Fayde.Data {\n    interface INotifyDataErrorInfo {\n        ErrorsChanged: nullstone.Event<DataErrorsChangedEventArgs>;\n        GetErrors(propertyName: string): nullstone.IEnumerable<any>;\n        HasErrors: boolean;\n    }\n    var INotifyDataErrorInfo_: nullstone.Interface<INotifyDataErrorInfo>;\n}\ndeclare module Fayde.Data {\n    interface IValueConverter {\n        Convert(value: any, targetType: IType, parameter: any, culture: any): any;\n        ConvertBack(value: any, targetType: IType, parameter: any, culture: any): any;\n    }\n    var IValueConverter_: nullstone.Interface<IValueConverter>;\n}\ndeclare module Fayde.Data {\n    class RelativeSource implements nullstone.markup.IMarkupExtension, ICloneable {\n        Mode: RelativeSourceMode;\n        AncestorLevel: number;\n        AncestorType: Function;\n        constructor();\n        constructor(rs: RelativeSource);\n        init(val: string): void;\n        resolveTypeFields(resolver: (full: string) => any): void;\n        transmute(os: any[]): any;\n        Clone(): RelativeSource;\n        Find(target: XamlObject): XamlObject;\n    }\n}\ndeclare module Fayde.Documents {\n    interface ITextReactionCallback<T> {\n        (updater: minerva.text.TextUpdater, ov: T, nv: T, te?: TextElement): void;\n    }\n    function TextReaction<TValue>(propd: DependencyProperty, callback?: ITextReactionCallback<TValue>, listen?: boolean, sync?: any, instance?: any): void;\n}\ndeclare module Fayde.Documents {\n    class TextElementNode extends DONode {\n        XObject: TextElement;\n        constructor(xobj: TextElement, inheritedWalkProperty: string);\n        InheritedWalkProperty: string;\n        GetInheritedEnumerator(): nullstone.IEnumerator<DONode>;\n    }\n    class TextElement extends DependencyObject implements Providers.IIsPropertyInheritable {\n        XamlNode: TextElementNode;\n        TextUpdater: minerva.text.TextUpdater;\n        CreateNode(): TextElementNode;\n        constructor();\n        static FontFamilyProperty: DependencyProperty;\n        static FontSizeProperty: DependencyProperty;\n        static FontStretchProperty: DependencyProperty;\n        static FontStyleProperty: DependencyProperty;\n        static FontWeightProperty: DependencyProperty;\n        static ForegroundProperty: DependencyProperty;\n        static LanguageProperty: DependencyProperty;\n        Foreground: Media.Brush;\n        FontFamily: string;\n        FontStretch: string;\n        FontStyle: string;\n        FontWeight: FontWeight;\n        FontSize: number;\n        Language: string;\n        IsInheritable(propd: DependencyProperty): boolean;\n        _SerializeText(): string;\n        Start: number;\n        Equals(te: TextElement): boolean;\n    }\n}\ndeclare module Fayde.Documents {\n    class Block extends TextElement {\n    }\n}\ndeclare module Fayde.Documents {\n    class BlockCollection extends XamlObjectCollection<Block> {\n        _RaiseItemAdded(value: Block, index: number): void;\n        _RaiseItemRemoved(value: Block, index: number): void;\n    }\n}\ndeclare module Fayde.Documents {\n    class Inline extends TextElement {\n        static TextDecorationsProperty: DependencyProperty;\n        TextDecorations: TextDecorations;\n        constructor();\n        Equals(inline: Inline): boolean;\n        IsInheritable(propd: DependencyProperty): boolean;\n    }\n}\ndeclare module Fayde.Documents {\n    class InlineCollection extends XamlObjectCollection<Inline> {\n        _RaiseItemAdded(value: Inline, index: number): void;\n        _RaiseItemRemoved(value: Inline, index: number): void;\n    }\n}\ndeclare module Fayde.Documents {\n    class LineBreak extends Inline {\n    }\n}\ndeclare module Fayde.Documents {\n    class Paragraph extends Block {\n        CreateNode(): TextElementNode;\n        static InlinesProperty: ImmutableDependencyProperty<InlineCollection>;\n        Inlines: InlineCollection;\n        constructor();\n        InlinesChanged(inline: Inline, isAdd: boolean): void;\n    }\n}\ndeclare module Fayde.Documents {\n    class Run extends Inline implements Providers.IIsPropertyInheritable {\n        static FlowDirectionProperty: DependencyProperty;\n        static TextProperty: DependencyProperty;\n        FlowDirection: FlowDirection;\n        Text: string;\n        _SerializeText(): string;\n        IsInheritable(propd: DependencyProperty): boolean;\n    }\n}\ndeclare module Fayde.Documents {\n    class Section extends TextElement {\n        CreateNode(): TextElementNode;\n        static BlocksProperty: ImmutableDependencyProperty<BlockCollection>;\n        Blocks: BlockCollection;\n        constructor();\n        BlocksChanged(block: Block, isAdd: boolean): void;\n    }\n}\ndeclare module Fayde.Documents {\n    class Span extends Inline {\n        CreateNode(): TextElementNode;\n        static InlinesProperty: ImmutableDependencyProperty<InlineCollection>;\n        Inlines: InlineCollection;\n        constructor();\n        _SerializeText(): string;\n        InlinesChanged(inline: Inline, isAdd: boolean): void;\n    }\n}\ndeclare module Fayde.Documents {\n    class Underline extends Span {\n    }\n}\ninterface ITimeline {\n    Update(nowTime: number): any;\n}\ndeclare module Fayde {\n    class Application extends DependencyObject implements IResourcable, ITimerListener {\n        static Current: Application;\n        MainSurface: Surface;\n        Loaded: nullstone.Event<{}>;\n        Address: Uri;\n        AllowNavigation: boolean;\n        private _IsRunning;\n        private _IsLoaded;\n        private _Storyboards;\n        private _ClockTimer;\n        private _RootVisual;\n        static ResourcesProperty: ImmutableDependencyProperty<ResourceDictionary>;\n        static ThemeNameProperty: DependencyProperty;\n        static ZoomFactorProperty: DependencyProperty;\n        Resources: ResourceDictionary;\n        ThemeName: string;\n        ZoomFactor: number;\n        private OnThemeNameChanged(oldThemeName, newThemeName);\n        private OnZoomFactorChanged(oldZoom, newZoom);\n        private _ApplyTheme();\n        Resized: RoutedEvent<SizeChangedEventArgs>;\n        OnResized(oldSize: minerva.Size, newSize: minerva.Size): void;\n        constructor();\n        RootVisual: UIElement;\n        $$SetRootVisual(value: UIElement): void;\n        Attach(canvas: HTMLCanvasElement): void;\n        Start(): void;\n        OnTicked(lastTime: number, nowTime: number): void;\n        private StopEngine();\n        private ProcessStoryboards(lastTime, nowTime);\n        private Update();\n        private Render();\n        RegisterStoryboard(storyboard: ITimeline): void;\n        UnregisterStoryboard(storyboard: ITimeline): void;\n        static GetAsync(url: string): Promise<Application>;\n    }\n}\ndeclare module Fayde {\n    interface ITimerListener {\n        OnTicked(lastTime: number, nowTime: number): any;\n    }\n    class ClockTimer {\n        private _Listeners;\n        private _LastTime;\n        RegisterTimer(listener: Fayde.ITimerListener): void;\n        UnregisterTimer(listener: Fayde.ITimerListener): void;\n        private _DoTick();\n        private _RequestAnimationTick();\n    }\n}\ndeclare class Exception {\n    Message: string;\n    constructor(message: string);\n    toString(): string;\n}\ndeclare class ArgumentException extends Exception {\n    constructor(message: string);\n}\ndeclare class ArgumentNullException extends Exception {\n    constructor(message: string);\n}\ndeclare class InvalidOperationException extends Exception {\n    constructor(message: string);\n}\ndeclare class XamlParseException extends Exception {\n    Data: any;\n    constructor(message: string, data?: any);\n}\ndeclare class XamlMarkupParseException extends Exception {\n    constructor(message: string);\n}\ndeclare class NotSupportedException extends Exception {\n    constructor(message: string);\n}\ndeclare class IndexOutOfRangeException extends Exception {\n    constructor(index: number);\n}\ndeclare class ArgumentOutOfRangeException extends Exception {\n    constructor(msg: string);\n}\ndeclare class AttachException extends Exception {\n    Data: any;\n    constructor(message: string, data: any);\n}\ndeclare class InvalidJsonException extends Exception {\n    JsonText: string;\n    InnerException: Error;\n    constructor(jsonText: string, innerException: Error);\n}\ndeclare class TargetInvocationException extends Exception {\n    InnerException: Exception;\n    constructor(message: string, innerException: Exception);\n}\ndeclare class UnknownTypeException extends Exception {\n    FullTypeName: string;\n    constructor(fullTypeName: string);\n}\ndeclare class FormatException extends Exception {\n    constructor(message: string);\n}\ndeclare module Fayde.Engine {\n    class FocusManager {\n        private _State;\n        private _ChangedEvents;\n        Node: UINode;\n        constructor(state: IInputState);\n        GetFocusToRoot(): UINode[];\n        OnNodeDetached(node: UINode): void;\n        TabFocus(isShift: boolean): boolean;\n        Focus(ctrlNode: Fayde.Controls.ControlNode, recurse?: boolean): boolean;\n        private _FocusNode(uin?);\n        EmitChanges(): void;\n        EmitChangesAsync(): void;\n        private _EmitFocusList(type, list);\n        FocusAnyLayer(walker: minerva.IWalker<minerva.core.Updater>): void;\n    }\n}\ndeclare module Fayde.Engine {\n    interface IInputState {\n        IsUserInitiated: boolean;\n        IsFirstUserInitiated: boolean;\n    }\n    class InputManager {\n        private _Surface;\n        private _KeyInterop;\n        private _MouseInterop;\n        private _TouchInterop;\n        private _Focus;\n        private _State;\n        private _Cursor;\n        SetCursor: (cursor: CursorType) => void;\n        private _CurrentPos;\n        private _EmittingMouseEvent;\n        private _InputList;\n        private _Captured;\n        private _PendingCapture;\n        private _PendingReleaseCapture;\n        private _CapturedInputList;\n        FocusedNode: UINode;\n        Focus(node: Controls.ControlNode, recurse?: boolean): boolean;\n        constructor(surface: Surface);\n        Register(canvas: HTMLCanvasElement): void;\n        OnNodeDetached(node: UINode): void;\n        SetIsUserInitiatedEvent(value: boolean): void;\n        HandleKeyDown(args: Input.KeyEventArgs): void;\n        private _EmitKeyDown(list, args, endIndex?);\n        HandleMousePress(button: number, pos: Point): boolean;\n        HandleMouseRelease(button: number, pos: Point): void;\n        HandleMouseEvent(type: Input.MouseInputType, button: number, pos: Point, delta?: number, emitLeave?: boolean, emitEnter?: boolean): boolean;\n        private _EmitMouseList(type, button, pos, delta, list, endIndex?);\n        HitTestPoint(pos: Point): UINode[];\n        UpdateCursorFromInputList(): void;\n        SetMouseCapture(uin: Fayde.UINode): boolean;\n        ReleaseMouseCapture(uin: Fayde.UINode): void;\n        private _PerformCapture(uin);\n        private _PerformReleaseCapture();\n    }\n}\ndeclare module Fayde.Engine {\n    class Inspection {\n        static TryHandle(type: Input.MouseInputType, isLeftButton: boolean, isRightButton: boolean, args: Input.MouseEventArgs, htlist: UINode[]): boolean;\n        static Kill(): void;\n    }\n}\ndeclare var resizeTimeout: number;\ndeclare module Fayde {\n    class Surface extends minerva.engine.Surface {\n        App: Application;\n        private $$root;\n        private $$inputMgr;\n        private $$zoom;\n        HitTestCallback: (inputList: Fayde.UINode[]) => void;\n        constructor(app: Application);\n        init(canvas: HTMLCanvasElement): void;\n        Attach(uie: UIElement, root?: boolean): void;\n        attachLayer(layer: minerva.core.Updater, root?: boolean): void;\n        Detach(uie: UIElement): void;\n        detachLayer(layer: minerva.core.Updater): void;\n        updateLayout(): boolean;\n        private $$onLayoutUpdated();\n        Focus(node: Controls.ControlNode, recurse?: boolean): boolean;\n        static HasFocus(uie: UIElement): boolean;\n        static Focus(uie: Controls.Control, recurse?: boolean): boolean;\n        static GetFocusedElement(uie: UIElement): UIElement;\n        static RemoveFocusFrom(uie: UIElement): boolean;\n        static SetMouseCapture(uin: Fayde.UINode): boolean;\n        static ReleaseMouseCapture(uin: Fayde.UINode): void;\n        private $$handleResize(evt?);\n        private $$stretchCanvas();\n        private $$updateZoom();\n        protected onZoomChanged(oldZoom: number, newZoom: number): void;\n        private $$setScrollbars(show);\n    }\n}\ndeclare module Fayde {\n    class Theme {\n        Name: string;\n        LibraryUri: Uri;\n        Resources: ResourceDictionary;\n        private $$loaded;\n        private $$retrieved;\n        static WarnMissing: boolean;\n        constructor(name: string, libUri: Uri);\n        RetrieveAsync(): Promise<string>;\n        LoadAsync(): Promise<Theme>;\n        GetImplicitStyle(type: any): Style;\n    }\n}\ndeclare module Fayde {\n    module ThemeConfig {\n        function GetRequestUri(uri: Uri, name: string): string;\n        function OverrideRequestUri(uri: Uri, templateUri: string): void;\n        function Set(libName: string, path: string): void;\n    }\n}\ndeclare module Fayde {\n    interface IThemeManager {\n        LoadAsync(themeName: string): Promise<any>;\n        FindStyle(defaultStyleKey: any): Style;\n    }\n    var DEFAULT_THEME_NAME: string;\n    var ThemeManager: IThemeManager;\n}\ndeclare module Fayde {\n    class Expression {\n        IsUpdating: boolean;\n        IsAttached: boolean;\n        Seal(owner: DependencyObject, prop: any): void;\n        OnAttached(target: XamlObject): void;\n        OnDetached(target: XamlObject): void;\n        GetValue(propd: DependencyProperty): any;\n        OnDataContextChanged(newDataContext: any): void;\n    }\n}\ndeclare module Fayde.Data {\n    class BindingExpressionBase extends Expression implements IPropertyPathWalkerListener {\n        ParentBinding: Data.Binding;\n        Target: DependencyObject;\n        Property: DependencyProperty;\n        private PropertyPathWalker;\n        private _PropertyListener;\n        private _SourceAvailableMonitor;\n        private _IsDataContextBound;\n        private _DataContext;\n        private _TwoWayLostFocusElement;\n        private _CurrentNotifyError;\n        private _CurrentError;\n        DataItem: any;\n        private _Cached;\n        private _CachedValue;\n        constructor(binding: Data.Binding);\n        private _IsSealed;\n        Seal(owner: DependencyObject, prop: any): void;\n        OnAttached(element: DependencyObject): void;\n        GetValue(propd: DependencyProperty): any;\n        private _OnSourceAvailable();\n        private _FindSource();\n        private _FindSourceByElementName();\n        OnDetached(element: DependencyObject): void;\n        IsBrokenChanged(): void;\n        ValueChanged(): void;\n        UpdateSource(): void;\n        _TryUpdateSourceObject(value: any): void;\n        private _UpdateSourceCallback(sender, args);\n        private _TargetLostFocus(sender, e);\n        private _ShouldUpdateSource();\n        private _UpdateSourceObject(value?);\n        OnDataContextChanged(newDataContext: any): void;\n        private _Invalidate();\n        Refresh(): void;\n        private _ConvertFromTargetToSource(binding, node, value);\n        private _ConvertToType(propd, value);\n        private _MaybeEmitError(message, exception);\n        private _AttachToNotifyError(element);\n        private _NotifyErrorsChanged(sender, e);\n    }\n}\ndeclare module Fayde.Data {\n    class BindingExpression extends BindingExpressionBase {\n        constructor(binding: Data.Binding);\n    }\n}\ndeclare module Fayde {\n    class DeferredValueExpression extends Expression {\n        GetValue(propd: DependencyProperty): any;\n        toString(): string;\n    }\n}\ndeclare module Fayde {\n    interface IEventBindingArgs<T extends nullstone.IEventArgs> {\n        sender: any;\n        args: T;\n        parameter: any;\n    }\n    class EventBindingExpression extends Expression {\n        IsUpdating: boolean;\n        IsAttached: boolean;\n        private _EventBinding;\n        private _CommandWalker;\n        private _CommandParameterWalker;\n        private _Target;\n        private _Event;\n        private _EventName;\n        constructor(eventBinding: Markup.EventBinding);\n        Seal(owner: DependencyObject, prop: any): void;\n        Init(eventName: string): void;\n        GetValue(propd: DependencyProperty): any;\n        OnAttached(target: XamlObject): void;\n        OnDetached(target: XamlObject): void;\n        OnDataContextChanged(newDataContext: any): void;\n        private _Callback(sender, e);\n    }\n}\ndeclare module Fayde {\n    class TemplateBindingExpression extends Expression {\n        private _Target;\n        private _Listener;\n        private _SourcePropertyName;\n        private _IsSealed;\n        SourceProperty: DependencyProperty;\n        TargetProperty: DependencyProperty;\n        constructor(sourceProperty: string);\n        Seal(owner: DependencyObject, prop: any): void;\n        GetValue(propd: DependencyProperty): any;\n        OnAttached(dobj: DependencyObject): void;\n        OnDetached(dobj: DependencyObject): void;\n        OnSourcePropertyChanged(sender: DependencyObject, args: IDependencyPropertyChangedEventArgs): void;\n        private _AttachListener();\n        private _DetachListener();\n    }\n}\ndeclare module Fayde.Input {\n    interface ICommand {\n        Execute(parameter: any): any;\n        CanExecute(parameter: any): boolean;\n        CanExecuteChanged: nullstone.Event<nullstone.IEventArgs>;\n    }\n    var ICommand_: nullstone.Interface<ICommand>;\n}\ndeclare module Fayde.Input {\n    module InteractionHelper {\n        function GetLogicalKey(flowDirection: FlowDirection, key: Key): Key;\n    }\n}\ndeclare module Fayde.Input {\n    interface IKeyInterop {\n        RegisterEvents(inputHandler: Engine.InputManager): any;\n    }\n    function CreateKeyInterop(): IKeyInterop;\n}\ndeclare module Fayde.Input {\n    class KeyboardNavigation {\n        static AcceptsReturnProperty: DependencyProperty;\n        static GetAcceptsReturn(d: DependencyObject): boolean;\n        static SetAcceptsReturn(d: DependencyObject, value: boolean): void;\n        static ControlTabNavigationProperty: DependencyProperty;\n        static GetControlTabNavigation(d: DependencyObject): KeyboardNavigationMode;\n        static SetControlTabNavigation(d: DependencyObject, value: KeyboardNavigationMode): void;\n        static DirectionalNavigationProperty: DependencyProperty;\n        static GetDirectionalNavigation(d: DependencyObject): KeyboardNavigationMode;\n        static SetDirectionalNavigation(d: DependencyObject, value: KeyboardNavigationMode): void;\n        static IsTabStopProperty: DependencyProperty;\n        static GetIsTabStop(d: DependencyObject): boolean;\n        static SetIsTabStop(d: DependencyObject, value: boolean): void;\n        static TabIndexProperty: DependencyProperty;\n        static GetTabIndex(d: DependencyObject): number;\n        static SetTabIndex(d: DependencyObject, value: number): void;\n        static TabNavigationProperty: DependencyProperty;\n        static GetTabNavigation(d: DependencyObject): KeyboardNavigationMode;\n        static SetTabNavigation(d: DependencyObject, value: KeyboardNavigationMode): void;\n    }\n}\ndeclare module Fayde.Input {\n    class MouseEventArgs extends RoutedEventArgs {\n        AbsolutePos: Point;\n        constructor(absolutePos: Point);\n        GetPosition(relativeTo: UIElement): Point;\n    }\n    class MouseButtonEventArgs extends MouseEventArgs {\n        constructor(absolutePos: Point);\n    }\n    class MouseWheelEventArgs extends MouseEventArgs {\n        Delta: number;\n        constructor(absolutePos: Point, delta: number);\n    }\n}\ndeclare module Fayde.Input {\n    enum MouseInputType {\n        NoOp = 0,\n        MouseUp = 1,\n        MouseDown = 2,\n        MouseLeave = 3,\n        MouseEnter = 4,\n        MouseMove = 5,\n        MouseWheel = 6,\n    }\n    interface IMouseInterop {\n        RegisterEvents(input: Engine.InputManager, canvas: HTMLCanvasElement): any;\n        CreateEventArgs(type: MouseInputType, pos: Point, delta: number): Fayde.Input.MouseEventArgs;\n        IsLeftButton(button: number): boolean;\n        IsRightButton(button: number): boolean;\n    }\n    function CreateMouseInterop(): IMouseInterop;\n}\ndeclare module Fayde.Input {\n    class TouchEventArgs extends RoutedEventArgs {\n        Device: ITouchDevice;\n        constructor(device: ITouchDevice);\n        GetTouchPoint(relativeTo: UIElement): TouchPoint;\n    }\n}\ninterface Touch {\n    radiusX: number;\n    radiusY: number;\n    rotationAngle: number;\n    force: number;\n}\ninterface TouchList {\n    identifiedTouch(identifier: number): Touch;\n}\ninterface TouchEvent extends UIEvent {\n    initTouchEvent(type: string, canBubble: boolean, cancelable: boolean, view: any, detail: number, ctrlKey: boolean, altKey: boolean, shiftKey: boolean, metaKey: boolean, touches: TouchList, targetTouches: TouchList, changedTouches: TouchList): any;\n}\ndeclare module Fayde.Input {\n    interface ITouchDevice {\n        Identifier: number;\n        Captured: UIElement;\n        Capture(uie: UIElement): boolean;\n        ReleaseCapture(uie: UIElement): any;\n        GetTouchPoint(relativeTo: UIElement): TouchPoint;\n    }\n    enum TouchInputType {\n        NoOp = 0,\n        TouchDown = 1,\n        TouchUp = 2,\n        TouchMove = 3,\n        TouchEnter = 4,\n        TouchLeave = 5,\n    }\n    interface ITouchInterop {\n        Register(input: Engine.InputManager, canvas: HTMLCanvasElement): any;\n    }\n    function CreateTouchInterop(): ITouchInterop;\n}\ndeclare module Fayde.Input {\n    class TouchPoint {\n        Position: Point;\n        Force: number;\n        constructor(position: Point, force: number);\n    }\n}\ndeclare module Fayde.Input {\n    class VirtualKeyboard {\n        static Init(): void;\n        static Launch(): void;\n    }\n}\ndeclare class TimeSpan {\n    static _TicksPerMillisecond: number;\n    static _TicksPerSecond: number;\n    static _TicksPerMinute: number;\n    static _TicksPerHour: number;\n    static _TicksPerDay: number;\n    private _Ticks;\n    static Zero: TimeSpan;\n    static MinValue: TimeSpan;\n    static MaxValue: TimeSpan;\n    static FromDays(value: number): TimeSpan;\n    static FromHours(value: number): TimeSpan;\n    static FromMinutes(value: number): TimeSpan;\n    static FromSeconds(value: number): TimeSpan;\n    static FromMilliseconds(value: number): TimeSpan;\n    constructor();\n    constructor(ticks: number);\n    constructor(hours: number, minutes: number, seconds: number);\n    constructor(days: number, hours: number, minutes: number, seconds: number, milliseconds?: number);\n    Days: number;\n    Hours: number;\n    Minutes: number;\n    Seconds: number;\n    Milliseconds: number;\n    Ticks: number;\n    TotalDays: number;\n    TotalHours: number;\n    TotalMinutes: number;\n    TotalSeconds: number;\n    TotalMilliseconds: number;\n    AddTicks(ticks: number): void;\n    AddMilliseconds(milliseconds: number): void;\n    Add(ts2: TimeSpan): TimeSpan;\n    Subtract(ts2: TimeSpan): TimeSpan;\n    Multiply(v: number): TimeSpan;\n    Divide(ts2: TimeSpan): TimeSpan;\n    CompareTo(ts2: TimeSpan): number;\n    IsZero(): boolean;\n    GetJsDelay(): number;\n    toString(format?: string): string;\n    valueOf(): Object;\n}\ndeclare enum DayOfWeek {\n    Sunday = 0,\n    Monday = 1,\n    Tuesday = 2,\n    Wednesday = 3,\n    Thursday = 4,\n    Friday = 5,\n    Saturday = 6,\n}\ndeclare enum DateTimeKind {\n    Unspecified = 0,\n    Local = 1,\n    Utc = 2,\n}\ndeclare class DateTime {\n    private static MAX_TICKS;\n    private static MIN_TICKS;\n    static MinValue: DateTime;\n    static MaxValue: DateTime;\n    static Now: DateTime;\n    static Today: DateTime;\n    static Compare(dt1: DateTime, dt2: DateTime): number;\n    static DaysInMonth(year: number, month: number): number;\n    private _InternalDate;\n    private _Kind;\n    constructor();\n    constructor(dt: Date);\n    constructor(dt: Date, kind: DateTimeKind);\n    constructor(ticks: number);\n    constructor(ticks: number, kind: DateTimeKind);\n    constructor(year: number, month: number, day: number);\n    constructor(year: number, month: number, day: number, hour: number, minute: number, second: number);\n    constructor(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number);\n    constructor(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number, kind: DateTimeKind);\n    Ticks: number;\n    Kind: DateTimeKind;\n    Date: DateTime;\n    Day: number;\n    DayOfWeek: DayOfWeek;\n    DayOfYear: number;\n    Hour: number;\n    Millisecond: number;\n    Minute: number;\n    Month: number;\n    Second: number;\n    TimeOfDay: TimeSpan;\n    Year: number;\n    AddYears(years: number): DateTime;\n    AddMonths(months: number): DateTime;\n    AddDays(value: number): DateTime;\n    AddHours(value: number): DateTime;\n    AddMinutes(value: number): DateTime;\n    AddSeconds(value: number): DateTime;\n    AddMilliseconds(value: number): DateTime;\n    Add(value: TimeSpan): DateTime;\n    AddTicks(value: number): DateTime;\n    Subtract(value: DateTime): TimeSpan;\n    Subtract(value: TimeSpan): DateTime;\n    ToUniversalTime(): DateTime;\n    toString(format?: string): string;\n    valueOf(): Object;\n}\ndeclare module Fayde.Localization {\n    class Calendar {\n        ID: number;\n        Eras: number[];\n        EraNames: string[];\n        CurrentEraValue: number;\n        TwoDigitYearMax: number;\n        MaxSupportedDateTime: DateTime;\n        MinSupportedDateTime: DateTime;\n    }\n}\ndeclare module Fayde.Localization {\n    enum CalendarWeekRule {\n        FirstDay = 0,\n        FirstFullWeek = 1,\n        FirstFourDayWeek = 2,\n    }\n    class DateTimeFormatInfo {\n        AbbreviatedDayNames: string[];\n        AbbreviatedMonthGenitiveNames: string[];\n        AbbreviatedMonthNames: string[];\n        AMDesignator: string;\n        Calendar: Calendar;\n        CalendarWeekRule: CalendarWeekRule;\n        DateSeparator: string;\n        DayNames: string[];\n        FirstDayOfWeek: DayOfWeek;\n        FullDateTimePattern: string;\n        LongDatePattern: string;\n        LongTimePattern: string;\n        MonthDayPattern: string;\n        MonthGenitiveNames: string[];\n        MonthNames: string[];\n        PMDesignator: string;\n        RFC1123Pattern: string;\n        ShortDatePattern: string;\n        ShortestDayNames: string[];\n        ShortTimePattern: string;\n        SortableDateTimePattern: string;\n        TimeSeparator: string;\n        UniversalSortableDateTimePattern: string;\n        YearMonthPattern: string;\n        HasForceTwoDigitYears: boolean;\n        GetEraName(era: number): string;\n        static Instance: DateTimeFormatInfo;\n        static ParseRepeatPattern(format: string, pos: number, patternChar: string): number;\n        static ParseNextChar(format: string, pos: number): number;\n        static ParseQuoteString(format: string, pos: number, result: string[]): number;\n        static FormatDigits(sb: string[], value: number, len: number, overrideLenLimit?: boolean): void;\n        static FormatMonth(month: number, repeat: number, info: DateTimeFormatInfo): string;\n        static FormatDayOfWeek(dayOfWeek: DayOfWeek, repeat: number, info: DateTimeFormatInfo): string;\n        static HebrewFormatDigits(sb: string[], digits: number): string;\n        static FormatHebrewMonthName(obj: DateTime, month: number, repeat: number, info: DateTimeFormatInfo): string;\n    }\n}\ndeclare module Fayde.Localization {\n    function Format(format: string, ...items: any[]): string;\n    function FormatSingle(obj: any, format: string): string;\n    interface IFormattable {\n        (obj: any, format: string, provider?: any): string;\n    }\n    function RegisterFormattable(type: Function, formatter: IFormattable): void;\n}\ndeclare module Fayde.Localization {\n}\ndeclare module Fayde.Localization {\n    class NumberFormatInfo {\n        CurrencyDecimalDigits: number;\n        CurrencyDecimalSeparator: string;\n        CurrencyGroupSeparator: string;\n        CurrencyGroupSizes: number[];\n        CurrencyNegativePattern: number;\n        CurrencyPositivePattern: number;\n        CurrencySymbol: string;\n        NaNSymbol: string;\n        NegativeInfinitySymbol: string;\n        PositiveInfinitySymbol: string;\n        NegativeSign: string;\n        PositiveSign: string;\n        NumberDecimalDigits: number;\n        NumberDecimalSeparator: string;\n        NumberGroupSeparator: string;\n        NumberGroupSizes: number[];\n        NumberNegativePattern: number;\n        PercentDecimalDigits: number;\n        PercentDecimalSeparator: string;\n        PercentGroupSeparator: string;\n        PercentGroupSizes: number[];\n        PercentNegativePattern: number;\n        PercentPositivePattern: number;\n        PercentSymbol: string;\n        PerMilleSymbol: string;\n        static Instance: NumberFormatInfo;\n        FormatCurrency(num: number, precision: number): string;\n        FormatNumber(num: number, precision: number, ignoreGroupSep?: boolean): string;\n        FormatPercent(num: number, precision: number): string;\n        FormatGeneral(num: number, precision: number): string;\n        FormatDecimal(num: number, precision: number): string;\n        FormatExponential(num: number, precision: number): string;\n        FormatHexadecimal(num: number, precision: number): string;\n        FormatRawNumber(num: number, precision: number, decSep: string, groupSep: string, groupSizes: number[]): string;\n    }\n}\ndeclare module Fayde.Localization {\n}\ndeclare module Fayde.Localization {\n}\ndeclare module Fayde.MVVM {\n    interface IValidationFunc {\n        (value: any, propertyName: string, entity: any): any[];\n    }\n    interface IAutoApplier<T> {\n        Notify(...properties: string[]): IAutoApplier<T>;\n        Notify(properties: string[]): IAutoApplier<T>;\n        Validate(propertyName: string, ...validators: IValidationFunc[]): IAutoApplier<T>;\n        Finish(): T;\n    }\n    function AutoModel<T>(typeOrModel: any): IAutoApplier<T>;\n}\ndeclare module Fayde.MVVM {\n    function NotifyProperties(type: any, propNames: string[]): void;\n    class ObservableObject implements INotifyPropertyChanged {\n        PropertyChanged: nullstone.Event<PropertyChangedEventArgs>;\n        OnPropertyChanged(propertyName: string): void;\n    }\n}\ndeclare module Fayde.MVVM {\n    class ViewModelBase extends ObservableObject {\n    }\n}\ndeclare module Fayde.MVVM {\n    interface IDialogViewModelSettings<TAccept, TBuilder> {\n        AcceptAction?: (data: TAccept) => any;\n        CompleteAction?: (pars: IOverlayCompleteParameters) => any;\n        ViewModelBuilder?: (builder: TBuilder) => any;\n        CanOpen?: (builder: TBuilder) => boolean;\n    }\n    class DialogViewModel<TBuilder, TAccept> extends ViewModelBase {\n        IsOpen: boolean;\n        OverlayDataContext: any;\n        RequestOpenCommand: RelayCommand;\n        ClosedCommand: RelayCommand;\n        AcceptAction: (data: TAccept) => any;\n        CompleteAction: (pars: IOverlayCompleteParameters) => any;\n        ViewModelBuilder: (builder: TBuilder) => any;\n        CanOpen: (builder: TBuilder) => boolean;\n        constructor(settings?: IDialogViewModelSettings<TAccept, TBuilder>);\n        private Closed_Execute(parameter);\n        private RequestOpen_Execute(parameter);\n        private RequestOpen_CanExecute(parameter);\n    }\n}\ndeclare module Fayde.MVVM {\n    interface IEntity extends INotifyPropertyChanged, Data.INotifyDataErrorInfo {\n        OnPropertyChanged(propertyName: string): any;\n        AddError(propertyName: string, errorMessage: string): any;\n        RemoveError(propertyName: string, errorMessage: string): any;\n        ClearErrors(propertyName: string): any;\n    }\n    class Entity implements IEntity {\n        PropertyChanged: nullstone.Event<PropertyChangedEventArgs>;\n        OnPropertyChanged(propertyName: string): void;\n        private _Errors;\n        ErrorsChanged: nullstone.Event<Data.DataErrorsChangedEventArgs>;\n        HasErrors: boolean;\n        AddError(propertyName: string, errorMessage: string): void;\n        RemoveError(propertyName: string, errorMessage: string): void;\n        ClearErrors(propertyName: string): void;\n        GetErrors(propertyName: string): nullstone.IEnumerable<string>;\n        static ApplyTo<TIn, TOut extends IEntity>(model: TIn): TOut;\n    }\n}\ndeclare module Fayde.MVVM {\n    interface IOverlayCompleteParameters {\n        Result: boolean;\n        Data: any;\n    }\n}\ndeclare module Fayde.Navigation {\n    class Route {\n        View: Uri;\n        HashParams: {\n            [key: string]: string;\n        };\n        DataContext: any;\n        constructor(view: Uri, hashParams: {\n            [key: string]: string;\n        }, dataContext: any);\n    }\n}\ndeclare module Fayde.MVVM {\n    interface IRedirector {\n        (newUri: string | Uri): any;\n    }\n    interface IViewModelProvider {\n        ResolveViewModel(route: Fayde.Navigation.Route, redirect?: IRedirector): any;\n    }\n    var IViewModelProvider_: nullstone.Interface<IViewModelProvider>;\n}\ndeclare module Fayde.MVVM {\n    class RelayCommand implements Input.ICommand {\n        constructor(execute?: (parameter: any) => void, canExecute?: (parameter: any) => boolean);\n        Execute(parameter: any): void;\n        CanExecute(parameter: any): boolean;\n        CanExecuteChanged: nullstone.Event<{}>;\n        ForceCanExecuteChanged(): void;\n    }\n}\ndeclare module Fayde.Markup {\n    interface IEventFilter {\n        Filter(sender: any, e: nullstone.IEventArgs, parameter: any): boolean;\n    }\n    var IEventFilter_: nullstone.Interface<IEventFilter>;\n    class EventBinding implements nullstone.markup.IMarkupExtension {\n        CommandPath: string;\n        Command: Data.BindingExpressionBase;\n        CommandParameter: Data.BindingExpressionBase;\n        CommandBinding: Data.Binding;\n        CommandParameterBinding: Data.Binding;\n        Filter: IEventFilter;\n        init(val: string): void;\n        transmute(os: any[]): any;\n        private $$coerce();\n    }\n}\ndeclare module Fayde.Markup {\n    import XamlMarkup = nullstone.markup.xaml.XamlMarkup;\n    function Resolve(uri: string | Uri): Promise<XamlMarkup>;\n    function Resolve(uri: string | Uri, excludeUri: string | Uri): Promise<XamlMarkup>;\n}\ndeclare module Fayde.Markup {\n    import XamlMarkup = nullstone.markup.xaml.XamlMarkup;\n    function Retrieve(uri: string): Promise<XamlMarkup>;\n    function Retrieve(uri: Uri): Promise<XamlMarkup>;\n}\ndeclare module Fayde.Markup {\n    class StaticResource implements nullstone.markup.IMarkupExtension {\n        ResourceKey: string;\n        private $$app;\n        private $$resources;\n        init(val: string): void;\n        transmute(os: any[]): any;\n        setContext(app: Application, resources: ResourceDictionary[]): void;\n    }\n}\ndeclare module Fayde.Media {\n    class Brush extends DependencyObject implements minerva.IBrush {\n        static TransformProperty: DependencyProperty;\n        Transform: Media.Transform;\n        private _CachedBounds;\n        private _CachedBrush;\n        constructor();\n        isTransparent(): boolean;\n        setupBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): void;\n        toHtml5Object(): any;\n        CreateBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): any;\n        InvalidateBrush(): void;\n    }\n}\ndeclare module Fayde.Media {\n    class Geometry extends DependencyObject implements minerva.IGeometry {\n        private _Path;\n        private _LocalBounds;\n        static TransformProperty: DependencyProperty;\n        Transform: Transform;\n        constructor();\n        GetBounds(pars?: minerva.path.IStrokeParameters): minerva.Rect;\n        Draw(ctx: minerva.core.render.RenderContext): void;\n        ComputePathBounds(pars: minerva.path.IStrokeParameters): minerva.Rect;\n        InvalidateGeometry(): void;\n        _Build(): minerva.path.Path;\n        Serialize(): string;\n    }\n    class GeometryCollection extends XamlObjectCollection<Geometry> {\n        AddingToCollection(value: Geometry, error: BError): boolean;\n        RemovedFromCollection(value: Geometry, isValueSafe: boolean): void;\n    }\n}\ndeclare module Fayde.Media {\n    class EllipseGeometry extends Geometry {\n        static CenterProperty: DependencyProperty;\n        static RadiusXProperty: DependencyProperty;\n        static RadiusYProperty: DependencyProperty;\n        Center: Point;\n        RadiusX: number;\n        RadiusY: number;\n        _Build(): minerva.path.Path;\n    }\n}\ndeclare module Fayde.Media {\n    class GeneralTransform extends DependencyObject {\n        Inverse: GeneralTransform;\n        Transform(p: minerva.IPoint): Point;\n        TransformBounds(r: minerva.Rect): minerva.Rect;\n        TryTransform(inPoint: minerva.IPoint, outPoint: minerva.IPoint): boolean;\n    }\n    class InternalTransform extends GeneralTransform implements minerva.ITransform {\n        private _Raw;\n        constructor(raw: number[]);\n        Inverse: InternalTransform;\n        Value: Matrix3D;\n        getRaw(): number[];\n        Transform(p: minerva.IPoint): Point;\n        TransformBounds(r: minerva.Rect): minerva.Rect;\n        CreateMatrix3DProjection(): Matrix3DProjection;\n    }\n}\ndeclare module Fayde.Shapes {\n    enum ShapeFlags {\n        None = 0,\n        Empty = 1,\n        Normal = 2,\n        Degenerate = 4,\n        Radii = 8,\n    }\n    enum PenLineCap {\n        Flat = 0,\n        Square = 1,\n        Round = 2,\n        Triangle = 3,\n    }\n    enum PenLineJoin {\n        Miter = 0,\n        Bevel = 1,\n        Round = 2,\n    }\n    enum FillRule {\n        EvenOdd = 0,\n        NonZero = 1,\n    }\n    enum SweepDirection {\n        Counterclockwise = 0,\n        Clockwise = 1,\n    }\n}\ndeclare module Fayde.Media {\n    class GeometryGroup extends Geometry {\n        static FillRulleProperty: DependencyProperty;\n        static ChildrenProperty: ImmutableDependencyProperty<GeometryCollection>;\n        FillRule: Shapes.FillRule;\n        Children: GeometryCollection;\n        constructor();\n        ComputePathBounds(pars: minerva.path.IStrokeParameters): minerva.Rect;\n        Draw(ctx: minerva.core.render.RenderContext): void;\n    }\n}\ndeclare class Color implements ICloneable {\n    private static __NoAlphaRegex;\n    private static __AlphaRegex;\n    R: number;\n    G: number;\n    B: number;\n    A: number;\n    Add(color2: Color): Color;\n    Subtract(color2: Color): Color;\n    Multiply(factor: number): Color;\n    Equals(other: Color): boolean;\n    toString(): string;\n    ToHexStringNoAlpha(): string;\n    Clone(): Color;\n    static LERP(start: Color, end: Color, p: number): Color;\n    static FromRgba(r: number, g: number, b: number, a: number): Color;\n    static FromHex(hex: string): Color;\n    static KnownColors: {\n        AliceBlue: Color;\n        AntiqueWhite: Color;\n        Aqua: Color;\n        Aquamarine: Color;\n        Azure: Color;\n        Beige: Color;\n        Bisque: Color;\n        Black: Color;\n        BlanchedAlmond: Color;\n        Blue: Color;\n        BlueViolet: Color;\n        Brown: Color;\n        BurlyWood: Color;\n        CadetBlue: Color;\n        Chartreuse: Color;\n        Chocolate: Color;\n        Coral: Color;\n        CornflowerBlue: Color;\n        Cornsilk: Color;\n        Crimson: Color;\n        Cyan: Color;\n        DarkBlue: Color;\n        DarkCyan: Color;\n        DarkGoldenrod: Color;\n        DarkGray: Color;\n        DarkGreen: Color;\n        DarkKhaki: Color;\n        DarkMagenta: Color;\n        DarkOliveGreen: Color;\n        DarkOrange: Color;\n        DarkOrchid: Color;\n        DarkRed: Color;\n        DarkSalmon: Color;\n        DarkSeaGreen: Color;\n        DarkSlateBlue: Color;\n        DarkSlateGray: Color;\n        DarkTurquoise: Color;\n        DarkViolet: Color;\n        DeepPink: Color;\n        DeepSkyBlue: Color;\n        DimGray: Color;\n        DodgerBlue: Color;\n        Firebrick: Color;\n        FloralWhite: Color;\n        ForestGreen: Color;\n        Fuchsia: Color;\n        Gainsboro: Color;\n        GhostWhite: Color;\n        Gold: Color;\n        Goldenrod: Color;\n        Gray: Color;\n        Green: Color;\n        GreenYellow: Color;\n        Honeydew: Color;\n        HotPink: Color;\n        IndianRed: Color;\n        Indigo: Color;\n        Ivory: Color;\n        Khaki: Color;\n        Lavender: Color;\n        LavenderBlush: Color;\n        LawnGreen: Color;\n        LemonChiffon: Color;\n        LightBlue: Color;\n        LightCoral: Color;\n        LightCyan: Color;\n        LightGoldenrodYellow: Color;\n        LightGray: Color;\n        LightGreen: Color;\n        LightPink: Color;\n        LightSalmon: Color;\n        LightSeaGreen: Color;\n        LightSkyBlue: Color;\n        LightSlateGray: Color;\n        LightSteelBlue: Color;\n        LightYellow: Color;\n        Lime: Color;\n        LimeGreen: Color;\n        Linen: Color;\n        Magenta: Color;\n        Maroon: Color;\n        MediumAquamarine: Color;\n        MediumBlue: Color;\n        MediumOrchid: Color;\n        MediumPurple: Color;\n        MediumSeaGreen: Color;\n        MediumSlateBlue: Color;\n        MediumSpringGreen: Color;\n        MediumTurquoise: Color;\n        MediumVioletRed: Color;\n        MidnightBlue: Color;\n        MintCream: Color;\n        MistyRose: Color;\n        Moccasin: Color;\n        NavajoWhite: Color;\n        Navy: Color;\n        OldLace: Color;\n        Olive: Color;\n        OliveDrab: Color;\n        Orange: Color;\n        OrangeRed: Color;\n        Orchid: Color;\n        PaleGoldenrod: Color;\n        PaleGreen: Color;\n        PaleTurquoise: Color;\n        PaleVioletRed: Color;\n        PapayaWhip: Color;\n        PeachPuff: Color;\n        Peru: Color;\n        Pink: Color;\n        Plum: Color;\n        PowderBlue: Color;\n        Purple: Color;\n        Red: Color;\n        RosyBrown: Color;\n        RoyalBlue: Color;\n        SaddleBrown: Color;\n        Salmon: Color;\n        SandyBrown: Color;\n        SeaGreen: Color;\n        SeaShell: Color;\n        Sienna: Color;\n        Silver: Color;\n        SkyBlue: Color;\n        SlateBlue: Color;\n        SlateGray: Color;\n        Snow: Color;\n        SpringGreen: Color;\n        SteelBlue: Color;\n        Tan: Color;\n        Teal: Color;\n        Thistle: Color;\n        Tomato: Color;\n        Transparent: Color;\n        Turquoise: Color;\n        Violet: Color;\n        Wheat: Color;\n        White: Color;\n        WhiteSmoke: Color;\n        Yellow: Color;\n        YellowGreen: Color;\n    };\n}\ndeclare module Fayde.Media {\n    class GradientBrush extends Brush {\n        static GradientStopsProperty: ImmutableDependencyProperty<GradientStopCollection>;\n        static MappingModeProperty: DependencyProperty;\n        static SpreadMethodProperty: DependencyProperty;\n        GradientStops: GradientStopCollection;\n        MappingMode: BrushMappingMode;\n        SpreadMethod: GradientSpreadMethod;\n        constructor();\n        CreateBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): any;\n        CreatePad(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): void;\n        CreateRepeat(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): void;\n        CreateReflect(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): void;\n        AddColorStop(grd: any, offset: number, color: Color): void;\n    }\n}\ndeclare module Fayde.Media {\n    interface IGradientStop {\n        Color: Color;\n        Offset: number;\n    }\n    class GradientStop extends DependencyObject implements IGradientStop {\n        static ColorProperty: DependencyProperty;\n        static OffsetProperty: DependencyProperty;\n        Color: Color;\n        Offset: number;\n        toString(): string;\n    }\n    class GradientStopCollection extends XamlObjectCollection<GradientStop> {\n        AddingToCollection(value: GradientStop, error: BError): boolean;\n        RemovedFromCollection(value: GradientStop, isValueSafe: boolean): boolean;\n        getPaddedEnumerable(): nullstone.IEnumerable<IGradientStop>;\n    }\n}\ndeclare module Fayde.Media {\n    class LineGeometry extends Geometry {\n        static StartPointProperty: DependencyProperty;\n        static EndPointProperty: DependencyProperty;\n        StartPoint: Point;\n        EndPoint: Point;\n        _Build(): minerva.path.Path;\n    }\n}\ndeclare module Fayde.Media {\n    class LinearGradientBrush extends GradientBrush {\n        static StartPointProperty: DependencyProperty;\n        static EndPointProperty: DependencyProperty;\n        StartPoint: Point;\n        EndPoint: Point;\n        CreatePad(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): CanvasGradient;\n        CreateRepeat(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): CanvasGradient;\n        CreateReflect(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): CanvasGradient;\n        private CreateInterpolated(ctx, interpolator);\n        private _GetPointData(bounds);\n        toString(): string;\n    }\n}\ndeclare module Fayde.Media {\n    class Matrix {\n        _Raw: number[];\n        private _Inverse;\n        constructor(raw?: number[]);\n        static Identity: Matrix;\n        M11: number;\n        M12: number;\n        M21: number;\n        M22: number;\n        OffsetX: number;\n        OffsetY: number;\n        Inverse: Matrix;\n        private _OnChanged();\n        Clone(): Matrix;\n    }\n}\ndeclare module Fayde.Media {\n    interface IMatrix3DChangedListener {\n        Callback: (newMatrix3D: Matrix3D) => void;\n        Detach(): any;\n    }\n    class Matrix3D {\n        _Raw: number[];\n        private _Inverse;\n        static FromRaw(raw: number[]): Matrix3D;\n        M11: number;\n        M12: number;\n        M13: number;\n        M14: number;\n        M21: number;\n        M22: number;\n        M23: number;\n        M24: number;\n        M31: number;\n        M32: number;\n        M33: number;\n        M34: number;\n        OffsetX: number;\n        OffsetY: number;\n        OffsetZ: number;\n        M44: number;\n        Inverse: Matrix3D;\n        private _Listeners;\n        Listen(func: (newMatrix: Matrix3D) => void): IMatrix3DChangedListener;\n        private _OnChanged();\n    }\n}\ndeclare module Fayde.Media {\n    class Projection extends DependencyObject implements minerva.IProjection {\n        private _ProjectionMatrix;\n        private _ObjectWidth;\n        ObjectWidth: number;\n        private _ObjectHeight;\n        ObjectHeight: number;\n        setObjectSize(objectWidth: number, objectHeight: number): void;\n        getDistanceFromXYPlane(): number;\n        getTransform(): number[];\n        CreateProjectionMatrix(): Matrix3D;\n        InvalidateProjection(): void;\n    }\n}\ndeclare module Fayde.Media {\n    class Matrix3DProjection extends Projection {\n        static ProjectionMatrixProperty: DependencyProperty;\n        ProjectionMatrix: Matrix3D;\n        CreateProjectionMatrix(): Matrix3D;\n    }\n}\ndeclare module Fayde.Media {\n    function ParseGeometry(val: string): Geometry;\n    function ParseShapePoints(val: string): Point[];\n}\ndeclare module Fayde.Media {\n    class PathFigure extends DependencyObject {\n        static IsClosedProperty: DependencyProperty;\n        static StartPointProperty: DependencyProperty;\n        static IsFilledProperty: DependencyProperty;\n        static SegmentsProperty: ImmutableDependencyProperty<PathSegmentCollection>;\n        static SegmentsSourceProperty: DependencyProperty;\n        IsClosed: boolean;\n        Segments: PathSegmentCollection;\n        SegmentsSource: nullstone.IEnumerable<PathSegment>;\n        StartPoint: Point;\n        IsFilled: boolean;\n        private _OnSegmentsSourceChanged(args);\n        private _Path;\n        constructor();\n        private _Build();\n        private InvalidatePathFigure();\n        MergeInto(rp: minerva.path.Path): void;\n    }\n    class PathFigureCollection extends XamlObjectCollection<PathFigure> {\n        AddingToCollection(value: PathFigure, error: BError): boolean;\n        RemovedFromCollection(value: PathFigure, isValueSafe: boolean): void;\n    }\n}\ndeclare module Fayde.Media {\n    class PathGeometry extends Geometry implements minerva.shapes.path.IPathGeometry {\n        private _OverridePath;\n        static FillRuleProperty: DependencyProperty;\n        static FiguresProperty: ImmutableDependencyProperty<PathFigureCollection>;\n        FillRule: Shapes.FillRule;\n        Figures: PathFigureCollection;\n        fillRule: minerva.FillRule;\n        constructor();\n        OverridePath(path: minerva.path.Path): void;\n        _Build(): minerva.path.Path;\n        InvalidateFigures(): void;\n    }\n}\ndeclare module Fayde.Media {\n    class PathSegment extends DependencyObject {\n        _Append(path: minerva.path.Path): void;\n    }\n    class PathSegmentCollection extends XamlObjectCollection<PathSegment> {\n        private _Modifying;\n        AddingToCollection(value: PathSegment, error: BError): boolean;\n        RemovedFromCollection(value: PathSegment, isValueSafe: boolean): void;\n        private _Source;\n        SetSource(source: nullstone.IEnumerable<PathSegment>): void;\n        private _OnSegmentsCollectionChanged(sender, args);\n    }\n}\ndeclare module Fayde.Media {\n    class ArcSegment extends PathSegment {\n        static IsLargeArcProperty: DependencyProperty;\n        static PointProperty: DependencyProperty;\n        static RotationAngleProperty: DependencyProperty;\n        static SizeProperty: DependencyProperty;\n        static SweepDirectionProperty: DependencyProperty;\n        IsLargeArc: boolean;\n        Point: Point;\n        RotationAngle: number;\n        Size: minerva.Size;\n        SweepDirection: Shapes.SweepDirection;\n        _Append(path: minerva.path.Path): void;\n    }\n    class BezierSegment extends PathSegment {\n        static Point1Property: DependencyProperty;\n        static Point2Property: DependencyProperty;\n        static Point3Property: DependencyProperty;\n        Point1: Point;\n        Point2: Point;\n        Point3: Point;\n        _Append(path: minerva.path.Path): void;\n    }\n    class LineSegment extends PathSegment {\n        static PointProperty: DependencyProperty;\n        Point: Point;\n        _Append(path: minerva.path.Path): void;\n    }\n    class PolyBezierSegment extends PathSegment {\n        static PointsProperty: ImmutableDependencyProperty<Shapes.PointCollection>;\n        Points: Shapes.PointCollection;\n        constructor();\n        _Append(path: minerva.path.Path): void;\n    }\n    class PolyLineSegment extends PathSegment {\n        static PointsProperty: ImmutableDependencyProperty<Shapes.PointCollection>;\n        Points: Shapes.PointCollection;\n        constructor();\n        _Append(path: minerva.path.Path): void;\n    }\n    class PolyQuadraticBezierSegment extends PathSegment {\n        static PointsProperty: ImmutableDependencyProperty<Shapes.PointCollection>;\n        Points: Shapes.PointCollection;\n        constructor();\n        _Append(path: minerva.path.Path): void;\n    }\n    class QuadraticBezierSegment extends PathSegment {\n        static Point1Property: DependencyProperty;\n        static Point2Property: DependencyProperty;\n        Point1: Point;\n        Point2: Point;\n        _Append(path: minerva.path.Path): void;\n    }\n}\ndeclare module Fayde.Media {\n    class PlaneProjection extends Projection {\n        static CenterOfRotationXProperty: DependencyProperty;\n        static CenterOfRotationYProperty: DependencyProperty;\n        static CenterOfRotationZProperty: DependencyProperty;\n        static GlobalOffsetXProperty: DependencyProperty;\n        static GlobalOffsetYProperty: DependencyProperty;\n        static GlobalOffsetZProperty: DependencyProperty;\n        static LocalOffsetXProperty: DependencyProperty;\n        static LocalOffsetYProperty: DependencyProperty;\n        static LocalOffsetZProperty: DependencyProperty;\n        static RotationXProperty: DependencyProperty;\n        static RotationYProperty: DependencyProperty;\n        static RotationZProperty: DependencyProperty;\n        CenterOfRotationX: number;\n        CenterOfRotationY: number;\n        CenterOfRotationZ: number;\n        GlobalOffsetX: number;\n        GlobalOffsetY: number;\n        GlobalOffsetZ: number;\n        LocalOffsetX: number;\n        LocalOffsetY: number;\n        LocalOffsetZ: number;\n        RotationX: number;\n        RotationY: number;\n        RotationZ: number;\n        getDistanceFromXYPlane(): number;\n        CreateProjectionMatrix3D(): Matrix3D;\n    }\n}\ndeclare module Fayde.Media {\n    class RadialGradientBrush extends GradientBrush {\n        static CenterProperty: DependencyProperty;\n        static GradientOriginProperty: DependencyProperty;\n        static RadiusXProperty: DependencyProperty;\n        static RadiusYProperty: DependencyProperty;\n        Center: Point;\n        GradientOrigin: Point;\n        RadiusX: number;\n        RadiusY: number;\n        CreatePad(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): any;\n        CreateRepeat(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): CanvasPattern;\n        CreateReflect(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): CanvasPattern;\n        private CreateInterpolated(data, bounds, reflect);\n        private FitPattern(ctx, fill, data, bounds);\n        private _GetPointData(bounds);\n    }\n}\ndeclare module Fayde.Media {\n    class RectangleGeometry extends Geometry {\n        static RectProperty: DependencyProperty;\n        static RadiusXProperty: DependencyProperty;\n        static RadiusYProperty: DependencyProperty;\n        Rect: minerva.Rect;\n        RadiusX: number;\n        RadiusY: number;\n        _Build(): minerva.path.Path;\n    }\n}\ndeclare module Fayde.Media {\n    class SolidColorBrush extends Brush {\n        static ColorProperty: DependencyProperty;\n        Color: Color;\n        constructor(...args: any[]);\n        isTransparent(): boolean;\n        static FromColor(color: Color): SolidColorBrush;\n        setupBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): void;\n        CreateBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): any;\n    }\n}\ndeclare module Fayde.Media {\n    class TextOptions {\n        static TextHintingModeProperty: DependencyProperty;\n        static GetTextHintingMode(d: DependencyObject): TextHintingMode;\n        static SetTextHintingMode(d: DependencyObject, value: TextHintingMode): void;\n    }\n}\ndeclare module Fayde.Media {\n    class TileBrush extends Brush {\n        static AlignmentXProperty: DependencyProperty;\n        static AlignmentYProperty: DependencyProperty;\n        static StretchProperty: DependencyProperty;\n        AlignmentX: AlignmentX;\n        AlignmentY: AlignmentY;\n        Stretch: Stretch;\n        CreateBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): CanvasPattern;\n        GetTileExtents(): minerva.Rect;\n        DrawTile(canvasCtx: CanvasRenderingContext2D, bounds: minerva.Rect): void;\n    }\n}\ndeclare module Fayde.Media {\n    class Transform extends GeneralTransform implements minerva.ITransform {\n        private _Value;\n        constructor();\n        Value: Matrix;\n        getRaw(): number[];\n        Inverse: Transform;\n        Transform(p: minerva.IPoint): Point;\n        TransformBounds(r: minerva.Rect): minerva.Rect;\n        TryTransform(inPoint: minerva.IPoint, outPoint: minerva.IPoint): boolean;\n        InvalidateValue(): void;\n        _BuildValue(): number[];\n        static copyMatTo(t: Transform, mat: number[]): void;\n    }\n    class MatrixTransform extends Transform {\n        static MatrixProperty: DependencyProperty;\n        Matrix: Matrix;\n        _BuildValue(): number[];\n        Clone(): MatrixTransform;\n    }\n}\ndeclare module Fayde.Media {\n    class RotateTransform extends Transform {\n        static AngleProperty: DependencyProperty;\n        static CenterXProperty: DependencyProperty;\n        static CenterYProperty: DependencyProperty;\n        Angle: number;\n        CenterX: number;\n        CenterY: number;\n        _BuildValue(): number[];\n    }\n    class ScaleTransform extends Transform {\n        static CenterXProperty: DependencyProperty;\n        static CenterYProperty: DependencyProperty;\n        static ScaleXProperty: DependencyProperty;\n        static ScaleYProperty: DependencyProperty;\n        CenterX: number;\n        CenterY: number;\n        ScaleX: number;\n        ScaleY: number;\n        _BuildValue(): number[];\n    }\n    class SkewTransform extends Transform {\n        static AngleXProperty: DependencyProperty;\n        static AngleYProperty: DependencyProperty;\n        static CenterXProperty: DependencyProperty;\n        static CenterYProperty: DependencyProperty;\n        AngleX: number;\n        AngleY: number;\n        CenterX: number;\n        CenterY: number;\n        _BuildValue(): number[];\n    }\n    class TranslateTransform extends Transform {\n        static XProperty: DependencyProperty;\n        static YProperty: DependencyProperty;\n        X: number;\n        Y: number;\n        _BuildValue(): number[];\n    }\n    class TransformCollection extends XamlObjectCollection<Transform> {\n        AddingToCollection(value: Transform, error: BError): boolean;\n        RemovedFromCollection(value: Transform, isValueSafe: boolean): boolean;\n    }\n    class TransformGroup extends Transform {\n        static ChildrenProperty: ImmutableDependencyProperty<TransformCollection>;\n        Children: TransformCollection;\n        constructor();\n        _BuildValue(): number[];\n    }\n}\ndeclare module Fayde.Navigation {\n    function Navigate(source: DependencyObject, targetName: string, navigateUri: Uri): void;\n}\ndeclare module Fayde.Navigation {\n    class NavigationService {\n        Href: string;\n        Hash: string;\n        LocationChanged: nullstone.Event<{}>;\n        constructor();\n        CurrentUri: Uri;\n        Navigate(uri: Uri): boolean;\n        private _HandleFragmentChange();\n    }\n}\ndeclare module Fayde.Navigation {\n    class RedirectRoute extends Route {\n        NewUri: Uri;\n        constructor(route: Route, newUri: string);\n        constructor(route: Route, newUri: Uri);\n    }\n}\ndeclare module Fayde.Navigation {\n    class RouteMapper extends DependencyObject {\n        static RouteMappingsProperty: ImmutableDependencyProperty<XamlObjectCollection<RouteMapping>>;\n        static ViewModelProviderProperty: DependencyProperty;\n        RouteMappings: XamlObjectCollection<RouteMapping>;\n        ViewModelProvider: Fayde.MVVM.IViewModelProvider;\n        constructor();\n        MapUri(uri: Uri): Route;\n    }\n}\ndeclare module Fayde.Navigation {\n    class RouteMapping extends DependencyObject {\n        static ViewProperty: DependencyProperty;\n        static UriProperty: DependencyProperty;\n        View: Uri;\n        Uri: Uri;\n        MapUri(uri: Uri): Route;\n    }\n}\ndeclare module Fayde.Navigation {\n    class UriMapper extends DependencyObject {\n        static UriMappingsProperty: ImmutableDependencyProperty<XamlObjectCollection<UriMapping>>;\n        UriMappings: XamlObjectCollection<UriMapping>;\n        constructor();\n        MapUri(uri: Uri): Uri;\n    }\n}\ndeclare module Fayde.Navigation {\n    class UriMapping extends DependencyObject {\n        static MappedUriProperty: DependencyProperty;\n        static UriProperty: DependencyProperty;\n        MappedUri: Uri;\n        Uri: Uri;\n        MapUri(uri: Uri): Uri;\n    }\n}\ndeclare class CornerRadius extends minerva.CornerRadius implements ICloneable {\n    Clone(): CornerRadius;\n}\ndeclare enum DurationType {\n    Automatic = 0,\n    Forever = 1,\n    TimeSpan = 2,\n}\ndeclare class Duration implements ICloneable {\n    private _Type;\n    private _TimeSpan;\n    constructor(ts?: TimeSpan);\n    Clone(): Duration;\n    Type: DurationType;\n    TimeSpan: TimeSpan;\n    HasTimeSpan: boolean;\n    IsForever: boolean;\n    IsAutomatic: boolean;\n    IsZero: boolean;\n    static Automatic: Duration;\n    static Forever: Duration;\n}\ndeclare class FontFamily implements ICloneable {\n    FamilyNames: string;\n    constructor(FamilyNames: string);\n    toString(): string;\n    Clone(): FontFamily;\n}\ndeclare class KeyTime implements ICloneable {\n    private _IsPaced;\n    private _IsUniform;\n    private _TimeSpan;\n    private _Percent;\n    IsValid: boolean;\n    static CreateUniform(): KeyTime;\n    static CreateTimeSpan(ts: TimeSpan): KeyTime;\n    Clone(): KeyTime;\n    IsPaced: boolean;\n    IsUniform: boolean;\n    HasTimeSpan: boolean;\n    TimeSpan: TimeSpan;\n    HasPercent: boolean;\n    Percent: number;\n}\ndeclare class Length {\n}\ndeclare class Rect extends minerva.Rect {\n    Clone(): Rect;\n}\ndeclare class Size extends minerva.Size {\n    Clone(): Size;\n}\ndeclare class Thickness extends minerva.Thickness {\n    Clone(): Thickness;\n    toString(): string;\n}\ndeclare module Fayde {\n    function splitCommaList(str: string): string[];\n}\ndeclare class BError {\n    static Argument: number;\n    static InvalidOperation: number;\n    static XamlParse: number;\n    static Attach: number;\n    Message: string;\n    Number: number;\n    Data: any;\n    ThrowException(): void;\n}\ndeclare module Fayde {\n    function Bootstrap(onLoaded?: (app: Application) => any): void;\n}\ndeclare module Fayde {\n    function LoadConfigJson(onComplete: (config: any, err?: any) => void): void;\n}\ndeclare module Fayde {\n    module Render {\n        var Debug: boolean;\n        var DebugIndent: number;\n    }\n    module Layout {\n        var Debug: boolean;\n        var DebugIndent: number;\n    }\n    module Media {\n        module Animation {\n            var Log: boolean;\n            var LogApply: boolean;\n        }\n        module VSM {\n            var Debug: boolean;\n        }\n    }\n    module Data {\n        var Debug: boolean;\n        var IsCounterEnabled: boolean;\n        var DataContextCounter: number;\n    }\n    var IsInspectionOn: boolean;\n}\ndeclare module NumberEx {\n    function AreClose(val1: number, val2: number): boolean;\n    function IsLessThanClose(val1: number, val2: number): boolean;\n    function IsGreaterThanClose(val1: number, val2: number): boolean;\n}\ndeclare module StringEx {\n    function Format(format: string, ...items: any[]): string;\n}\ninterface ITimelineEvent {\n    Type: string;\n    Name: string;\n    Time: number;\n}\ninterface ITimelineGroup {\n    Type: string;\n    Data: string;\n    Start: number;\n    Length: number;\n}\ndeclare class TimelineProfile {\n    private static _Events;\n    static Groups: ITimelineGroup[];\n    static TimelineStart: number;\n    static IsNextLayoutPassProfiled: boolean;\n    static Parse(isStart: boolean, name: string): void;\n    static Navigate(isStart: boolean, name?: string): void;\n    static LayoutPass(isStart: boolean): void;\n    private static _FinishEvent(type, name?);\n}\ndeclare module Fayde.Text.Buffer {\n    function cut(text: string, start: number, len: number): string;\n    function insert(text: string, index: number, str: string): string;\n    function replace(text: string, start: number, len: number, str: string): string;\n}\ndeclare module Fayde.Text {\n    interface ITextOwner {\n        text: string;\n    }\n}\ndeclare module Fayde.Text {\n    enum EmitChangedType {\n        NOTHING = 0,\n        SELECTION = 1,\n        TEXT = 2,\n    }\n    class Proxy implements ITextOwner {\n        selAnchor: number;\n        selCursor: number;\n        selText: string;\n        text: string;\n        maxLength: number;\n        acceptsReturn: boolean;\n        private $$batch;\n        private $$emit;\n        private $$syncing;\n        private $$eventsMask;\n        private $$history;\n        SyncSelectionStart: (value: number) => void;\n        SyncSelectionLength: (value: number) => void;\n        SyncText: (value: string) => void;\n        constructor(eventsMask: EmitChangedType, maxUndoCount: number);\n        setAnchorCursor(anchor: number, cursor: number): boolean;\n        enterText(newText: string, isPaste?: boolean): boolean;\n        removeText(start: number, length: number): boolean;\n        paste(text: string): boolean;\n        undo(): void;\n        redo(): void;\n        begin(): void;\n        end(): void;\n        beginSelect(cursor: number): void;\n        adjustSelection(cursor: number): void;\n        selectAll(): void;\n        clearSelection(start: number): void;\n        select(start: number, length: number): boolean;\n        setSelectionStart(value: number): void;\n        setSelectionLength(value: number): void;\n        setText(value: string): void;\n        getSelectedText(): string;\n        private $syncEmit(syncText?);\n        private $syncText();\n    }\n}\ndeclare module Fayde.Shapes {\n    class DoubleCollection extends XamlObjectCollection<XamlObject> {\n    }\n}\ndeclare module Fayde.Shapes {\n    import ShapeUpdater = minerva.shapes.shape.ShapeUpdater;\n    class Shape extends FrameworkElement {\n        CreateLayoutUpdater(): ShapeUpdater;\n        static FillProperty: DependencyProperty;\n        static StretchProperty: DependencyProperty;\n        static StrokeProperty: DependencyProperty;\n        static StrokeThicknessProperty: DependencyProperty;\n        static StrokeDashArrayProperty: DependencyProperty;\n        static StrokeDashCapProperty: DependencyProperty;\n        static StrokeDashOffsetProperty: DependencyProperty;\n        static StrokeEndLineCapProperty: DependencyProperty;\n        static StrokeLineJoinProperty: DependencyProperty;\n        static StrokeMiterLimitProperty: DependencyProperty;\n        static StrokeStartLineCapProperty: DependencyProperty;\n        Fill: Media.Brush;\n        Stretch: Media.Stretch;\n        Stroke: Media.Brush;\n        StrokeThickness: number;\n        StrokeDashArray: DoubleCollection;\n        StrokeDashCap: PenLineCap;\n        StrokeDashOffset: number;\n        StrokeEndLineCap: PenLineCap;\n        StrokeLineJoin: PenLineJoin;\n        StrokeMiterLimit: number;\n        StrokeStartLineCap: PenLineCap;\n        constructor();\n    }\n}\ndeclare module Fayde.Shapes {\n    import EllipseUpdater = minerva.shapes.ellipse.EllipseUpdater;\n    class Ellipse extends Shape {\n        CreateLayoutUpdater(): EllipseUpdater;\n        constructor();\n    }\n}\ndeclare module Fayde.Shapes {\n    import LineUpdater = minerva.shapes.line.LineUpdater;\n    class Line extends Shape {\n        CreateLayoutUpdater(): LineUpdater;\n        static X1Property: DependencyProperty;\n        static Y1Property: DependencyProperty;\n        static X2Property: DependencyProperty;\n        static Y2Property: DependencyProperty;\n        X1: number;\n        Y1: number;\n        X2: number;\n        Y2: number;\n    }\n}\ndeclare module Fayde.Shapes {\n    import PathUpdater = minerva.shapes.path.PathUpdater;\n    class Path extends Shape {\n        CreateLayoutUpdater(): PathUpdater;\n        private static _DataCoercer(dobj, propd, value);\n        static DataProperty: DependencyProperty;\n        Data: Media.Geometry;\n    }\n}\ndeclare module Fayde.Shapes {\n    class PointCollection implements nullstone.ICollection<Point> {\n        private _ht;\n        Count: number;\n        static FromData(data: string): PointCollection;\n        static FromArray(data: Point[]): PointCollection;\n        GetValueAt(index: number): Point;\n        SetValueAt(index: number, value: Point): boolean;\n        Add(value: Point): void;\n        AddRange(points: Point[]): void;\n        Insert(index: number, value: Point): void;\n        Remove(value: Point): boolean;\n        RemoveAt(index: number): void;\n        Clear(): void;\n        IndexOf(value: Point): number;\n        Contains(value: Point): boolean;\n        getEnumerator(reverse?: boolean): nullstone.IEnumerator<Point>;\n    }\n}\ndeclare module Fayde.Shapes {\n    import PolygonUpdater = minerva.shapes.polygon.PolygonUpdater;\n    class Polygon extends Shape {\n        CreateLayoutUpdater(): PolygonUpdater;\n        private static _PointsCoercer(dobj, propd, value);\n        static FillRuleProperty: DependencyProperty;\n        static PointsProperty: DependencyProperty;\n        FillRule: FillRule;\n        Points: PointCollection;\n        constructor();\n    }\n}\ndeclare module Fayde.Shapes {\n    import PolylineUpdater = minerva.shapes.polyline.PolylineUpdater;\n    class Polyline extends Shape {\n        CreateLayoutUpdater(): PolylineUpdater;\n        private static _PointsCoercer(d, propd, value);\n        static FillRuleProperty: DependencyProperty;\n        static PointsProperty: DependencyProperty;\n        FillRule: FillRule;\n        Points: PointCollection;\n        constructor();\n    }\n}\ndeclare module Fayde.Shapes {\n    import RectangleUpdater = minerva.shapes.rectangle.RectangleUpdater;\n    class Rectangle extends Shape {\n        CreateLayoutUpdater(): RectangleUpdater;\n        static RadiusXProperty: DependencyProperty;\n        static RadiusYProperty: DependencyProperty;\n        RadiusX: number;\n        RadiusY: number;\n        constructor();\n    }\n}\ndeclare module Fayde.Validation {\n    function Emit(fe: FrameworkElement, binding: Data.Binding, oldError: ValidationError, error: ValidationError): void;\n}\ndeclare module Fayde.Validation {\n    import ReadOnlyObservableCollection = Collections.ReadOnlyObservableCollection;\n    var HasErrorProperty: DependencyProperty;\n    var ErrorsProperty: DependencyProperty;\n    function GetErrors(dobj: DependencyObject): ReadOnlyObservableCollection<ValidationError>;\n    function GetHasError(dobj: DependencyObject): boolean;\n    function AddError(element: FrameworkElement, error: ValidationError): void;\n    function RemoveError(element: FrameworkElement, error: ValidationError): void;\n}\ndeclare module Fayde.Validation {\n    class ValidationError {\n        ErrorContent: any;\n        Exception: Exception;\n        PropertyName: string;\n        constructor(content: any, exception: Exception, propertyName: string);\n        constructor(content: any, exception: Error, propertyName: string);\n    }\n}\ndeclare module Fayde.Validation {\n    enum ValidationErrorEventAction {\n        Added = 0,\n        Removed = 1,\n    }\n}\ndeclare module Fayde.Validation {\n    class ValidationErrorEventArgs extends RoutedEventArgs {\n        Action: ValidationErrorEventAction;\n        Error: ValidationError;\n        constructor(action: ValidationErrorEventAction, error: ValidationError);\n    }\n}\ndeclare module Fayde.Controls.Internal {\n    interface ICursorAdvancer {\n        CursorDown(cursor: number, isPage: boolean): number;\n        CursorUp(cursor: number, isPage: boolean): number;\n        CursorNextWord(cursor: number): number;\n        CursorPrevWord(cursor: number): number;\n        CursorNextChar(cursor: number): number;\n        CursorPrevChar(cursor: number): number;\n        CursorLineBegin(cursor: number): number;\n        CursorLineEnd(cursor: number): number;\n        CursorBegin(cursor: number): number;\n        CursorEnd(cursor: number): number;\n    }\n    class TextBoxCursorAdvancer implements ICursorAdvancer {\n        private $textOwner;\n        constructor($textOwner: Text.ITextOwner);\n        CursorDown(cursor: number, isPage: boolean): number;\n        CursorUp(cursor: number, isPage: boolean): number;\n        CursorNextWord(cursor: number): number;\n        CursorPrevWord(cursor: number): number;\n        CursorNextChar(cursor: number): number;\n        CursorPrevChar(cursor: number): number;\n        CursorLineBegin(cursor: number): number;\n        CursorLineEnd(cursor: number): number;\n        CursorBegin(cursor: number): number;\n        CursorEnd(cursor: number): number;\n    }\n    class PasswordBoxCursorAdvancer implements ICursorAdvancer {\n        private $textOwner;\n        constructor($textOwner: Text.ITextOwner);\n        CursorDown(cursor: number, isPage: boolean): number;\n        CursorUp(cursor: number, isPage: boolean): number;\n        CursorNextWord(cursor: number): number;\n        CursorPrevWord(cursor: number): number;\n        CursorNextChar(cursor: number): number;\n        CursorPrevChar(cursor: number): number;\n        CursorLineBegin(cursor: number): number;\n        CursorLineEnd(cursor: number): number;\n        CursorBegin(cursor: number): number;\n        CursorEnd(cursor: number): number;\n    }\n}\ndeclare module Fayde.Controls.Internal {\n    interface IItemContainersOwner {\n        PrepareContainerForItem(container: UIElement, item: any): any;\n        ClearContainerForItem(container: UIElement, item: any): any;\n        GetContainerForItem(): UIElement;\n        IsItemItsOwnContainer(item: any): boolean;\n    }\n    interface IItemContainersManager {\n        IsRecycling: boolean;\n        IndexFromContainer(container: UIElement): number;\n        ContainerFromIndex(index: number): UIElement;\n        ItemFromContainer(container: UIElement): any;\n        ContainerFromItem(item: any): UIElement;\n        OnItemsAdded(index: number, newItems: any[]): any;\n        OnItemsRemoved(index: number, oldItems: any[]): any;\n        DisposeContainers(index?: number, count?: number): UIElement[];\n        CreateGenerator(index: number, count: number): IContainerGenerator;\n        GetEnumerator(index?: number, count?: number): IContainerEnumerator;\n    }\n    class ItemContainersManager implements IItemContainersManager {\n        Owner: IItemContainersOwner;\n        private _Items;\n        private _Containers;\n        private _Cache;\n        IsRecycling: boolean;\n        constructor(Owner: IItemContainersOwner);\n        IndexFromContainer(container: UIElement): number;\n        ContainerFromIndex(index: number): UIElement;\n        ItemFromContainer(container: UIElement): any;\n        ContainerFromItem(item: any): UIElement;\n        OnItemsAdded(index: number, newItems: any[]): void;\n        OnItemsRemoved(index: number, oldItems: any[]): void;\n        DisposeContainers(index?: number, count?: number): UIElement[];\n        CreateGenerator(index: number, count: number): IContainerGenerator;\n        GetEnumerator(start?: number, count?: number): IContainerEnumerator;\n    }\n    interface IContainerGenerator {\n        IsCurrentNew: boolean;\n        Current: UIElement;\n        CurrentItem: any;\n        CurrentIndex: number;\n        GenerateIndex: number;\n        Generate(): boolean;\n    }\n    interface IContainerEnumerator extends nullstone.IEnumerator<UIElement> {\n        CurrentItem: any;\n        CurrentIndex: number;\n    }\n}\ndeclare module Fayde.Controls.Internal {\n    interface IRange {\n        Minimum: number;\n        Maximum: number;\n        Value: number;\n        OnMinimumChanged(oldMin: number, newMin: number): any;\n        OnMaximumChanged(oldMax: number, newMax: number): any;\n        OnValueChanged(oldVal: number, newVal: number): any;\n    }\n    interface IRangeCoercer {\n        OnMinimumChanged(oldMinimum: number, newMinimum: number): any;\n        OnMaximumChanged(oldMaximum: number, newMaximum: number): any;\n        OnValueChanged(oldValue: number, newValue: number): any;\n    }\n    class RangeCoercer implements IRangeCoercer {\n        Range: IRange;\n        OnCoerceMaximum: (val: any) => void;\n        OnCoerceValue: (val: any) => void;\n        InitialMax: number;\n        InitialVal: number;\n        RequestedMax: number;\n        RequestedVal: number;\n        PreCoercedMax: number;\n        PreCoercedVal: number;\n        CoerceDepth: number;\n        Minimum: number;\n        Maximum: number;\n        Value: number;\n        constructor(Range: IRange, OnCoerceMaximum: (val: any) => void, OnCoerceValue: (val: any) => void);\n        OnMinimumChanged(oldMinimum: number, newMinimum: number): void;\n        OnMaximumChanged(oldMaximum: number, newMaximum: number): void;\n        OnValueChanged(oldValue: number, newValue: number): void;\n        CoerceMaximum(): void;\n        CoerceValue(): void;\n    }\n}\ndeclare module Fayde.Controls.Internal {\n    class TextBoxContentProxy {\n        private $$element;\n        setElement(fe: FrameworkElement, view: TextBoxView): void;\n        setHorizontalScrollBar(sbvis: ScrollBarVisibility): void;\n        setVerticalScrollBar(sbvis: ScrollBarVisibility): void;\n    }\n}\ndeclare module Fayde.Controls.Internal {\n    import TextBoxViewUpdater = minerva.controls.textboxview.TextBoxViewUpdater;\n    class TextBoxViewNode extends FENode {\n        LayoutUpdater: TextBoxViewUpdater;\n    }\n    class TextBoxView extends FrameworkElement {\n        XamlNode: TextBoxViewNode;\n        CreateLayoutUpdater(): TextBoxViewUpdater;\n        private _AutoRun;\n        constructor();\n        private _InlineChanged(obj?);\n        setFontProperty(propd: DependencyProperty, value: any): void;\n        setFontAttr(attrName: string, value: any): void;\n        setCaretBrush(value: Media.Brush): void;\n        setIsFocused(isFocused: boolean): void;\n        setIsReadOnly(isReadOnly: boolean): void;\n        setTextAlignment(textAlignment: TextAlignment): void;\n        setTextWrapping(textWrapping: TextWrapping): void;\n        setSelectionStart(selectionStart: number): void;\n        setSelectionLength(selectionLength: number): void;\n        setText(text: string): void;\n        GetCursorFromPoint(point: Point): number;\n    }\n}\ndeclare module Fayde.Controls.Internal {\n    class VirtualizingPanelContainerOwner implements minerva.IVirtualizingContainerOwner {\n        private $$panel;\n        constructor($$panel: VirtualizingPanel);\n        itemCount: number;\n        createGenerator(index: number, count: number): minerva.IVirtualizingGenerator;\n        remove(index: number, count: number): void;\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class DragCompletedEventArgs extends RoutedEventArgs {\n        HorizontalChange: number;\n        VerticalChange: number;\n        Canceled: boolean;\n        constructor(horizontal: number, vertical: number, canceled: boolean);\n    }\n    class DragDeltaEventArgs extends RoutedEventArgs {\n        HorizontalChange: number;\n        VerticalChange: number;\n        constructor(horizontal: number, vertical: number);\n    }\n    class DragStartedEventArgs extends RoutedEventArgs {\n        HorizontalOffset: number;\n        VerticalOffset: number;\n        constructor(horizontal: number, vertical: number);\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    import OverlayUpdater = minerva.controls.overlay.OverlayUpdater;\n    class OverlayNode extends FENode {\n        LayoutUpdater: OverlayUpdater;\n        XObject: Overlay;\n        private _Layer;\n        private _Mask;\n        EnsureLayer(): Panel;\n        EnsureMask(): Border;\n        private _OnMaskMouseDown(sender, args);\n        UpdateMask(): void;\n        OnIsAttachedChanged(newIsAttached: boolean): void;\n        RegisterInitiator(initiator: UIElement): void;\n    }\n    class Overlay extends FrameworkElement {\n        XamlNode: OverlayNode;\n        CreateNode(): OverlayNode;\n        CreateLayoutUpdater(): OverlayUpdater;\n        static VisualProperty: DependencyProperty;\n        static VisualUriProperty: DependencyProperty;\n        static VisualViewModelProperty: DependencyProperty;\n        static IsOpenProperty: DependencyProperty;\n        static MaskBrushProperty: DependencyProperty;\n        static ClosedCommandProperty: DependencyProperty;\n        Visual: UIElement;\n        VisualUri: Uri;\n        VisualViewModel: any;\n        IsOpen: boolean;\n        MaskBrush: Media.Brush;\n        ClosedCommand: Input.ICommand;\n        Opened: nullstone.Event<nullstone.IEventArgs>;\n        Closed: nullstone.Event<OverlayClosedEventArgs>;\n        constructor();\n        InitBindings(): void;\n        private _ContentControlForUri;\n        private _IgnoreClose;\n        private _OnVisualChanged(args);\n        private _OnVisualUriChanged(args);\n        private _OnVisualViewModelChanged(args);\n        private _SetVisualUri(uri);\n        private _ClearVisualUri();\n        private _OnIsOpenChanged(args);\n        private _DoOpen();\n        private _DoClose(result?);\n        Open(): void;\n        Close(result?: boolean): void;\n        private _GetDialogResult();\n        static FindOverlay(visual: UIElement): Overlay;\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class OverlayClosedEventArgs implements nullstone.IEventArgs {\n        Result: boolean;\n        Data: any;\n        constructor(result: boolean, data: any);\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class ScrollData implements minerva.IScrollData {\n        canHorizontallyScroll: boolean;\n        canVerticallyScroll: boolean;\n        offsetX: number;\n        offsetY: number;\n        cachedOffsetX: number;\n        cachedOffsetY: number;\n        viewportWidth: number;\n        viewportHeight: number;\n        extentWidth: number;\n        extentHeight: number;\n        maxDesiredWidth: number;\n        maxDesiredHeight: number;\n        scrollOwner: ScrollViewer;\n        invalidate(): void;\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    enum ScrollEventType {\n        SmallDecrement = 0,\n        SmallIncrement = 1,\n        LargeDecrement = 2,\n        LargeIncrement = 3,\n        ThumbPosition = 4,\n        ThumbTrack = 5,\n        First = 6,\n        Last = 7,\n        EndScroll = 8,\n    }\n    class ScrollEventArgs extends RoutedEventArgs {\n        ScrollEventType: ScrollEventType;\n        Value: number;\n        constructor(scrollEventType: ScrollEventType, value: number);\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class SelectionChangedEventArgs extends RoutedEventArgs {\n        OldValues: any[];\n        NewValues: any[];\n        constructor(oldValues: any[], newValues: any[]);\n    }\n}\ndeclare module Fayde.Controls.Primitives {\n    class SelectorSelection {\n        private _Owner;\n        private _SelectedItems;\n        private _SelectedItem;\n        private _IsUpdating;\n        private _AnchorIndex;\n        Mode: SelectionMode;\n        IsUpdating: boolean;\n        constructor(owner: Selector);\n        private _HandleOwnerSelectionChanged(sender, e);\n        RepopulateSelectedItems(): void;\n        ClearSelection(ignoreSelectedValue?: boolean): void;\n        Select(item: any): void;\n        private _SelectSingle(item, selIndex);\n        private _SelectExtended(item, selIndex);\n        private _SelectMultiple(item, selIndex);\n        SelectRange(startIndex: number, endIndex: number): void;\n        SelectAll(items: any[]): void;\n        SelectOnly(item: any): void;\n        Unselect(item: any): void;\n        AddToSelected(item: any): void;\n        RemoveFromSelected(item: any): void;\n        ReplaceSelection(item: any): void;\n        UpdateSelectorProperties(item: any, index: number, value: any): void;\n        UpdateCollectionView(item: any): boolean;\n    }\n}\ndeclare module Fayde.Providers {\n    enum StyleIndex {\n        VisualTree = 0,\n        ApplicationResources = 1,\n        Theme = 2,\n        Count = 3,\n    }\n    enum StyleMask {\n        None = 0,\n        VisualTree = 1,\n        ApplicationResources = 2,\n        Theme = 4,\n        All = 7,\n    }\n    interface IImplicitStyleHolder {\n        _ImplicitStyles: Style[];\n        _StyleMask: number;\n    }\n    class ImplicitStyleBroker {\n        static Set(fe: FrameworkElement, mask: StyleMask, styles?: Style[]): void;\n        private static SetImpl(fe, mask, styles);\n        static Clear(fe: FrameworkElement, mask: StyleMask): void;\n        private static ApplyStyles(fe, mask, styles);\n    }\n}\ndeclare module Fayde.Providers {\n    interface IStyleHolder {\n        _LocalStyle: Style;\n    }\n    class LocalStyleBroker {\n        static Set(fe: FrameworkElement, newStyle: Style): void;\n    }\n}\ndeclare module Fayde.Providers {\n    function SwapStyles(fe: FrameworkElement, oldWalker: IStyleWalker, newWalker: IStyleWalker, isImplicit: boolean): void;\n}\ndeclare module Fayde.Data {\n    interface IOutValue {\n        Value: any;\n    }\n    class PropertyPath implements ICloneable {\n        private _Path;\n        private _ExpandedPath;\n        private _Propd;\n        constructor(path?: string, expandedPath?: string);\n        static CreateFromParameter(parameter: any): PropertyPath;\n        TryResolveDependencyProperty(refobj: IOutValue, promotedValues: any[]): DependencyProperty;\n        Path: string;\n        ExpandedPath: string;\n        ParsePath: string;\n        HasDependencyProperty: boolean;\n        DependencyProperty: DependencyProperty;\n        static ResolvePropertyPath(refobj: IOutValue, propertyPath: PropertyPath, promotedValues: any[]): DependencyProperty;\n        Clone(): PropertyPath;\n    }\n}\ndeclare module Fayde.Data {\n    interface IPropertyPathParserData {\n        typeName: string;\n        propertyName: string;\n        index: number;\n    }\n    enum PropertyNodeType {\n        None = 0,\n        AttachedProperty = 1,\n        Indexed = 2,\n        Property = 3,\n    }\n    class PropertyPathParser {\n        Path: string;\n        constructor(path: string);\n        Step(data: IPropertyPathParserData): PropertyNodeType;\n    }\n}\ndeclare module Fayde.Data {\n    interface IPropertyPathWalkerListener {\n        IsBrokenChanged(): any;\n        ValueChanged(): any;\n    }\n    interface IPropertyPathNode {\n        Next: IPropertyPathNode;\n        Value: any;\n        IsBroken: boolean;\n        ValueType: IType;\n        GetSource(): any;\n        SetSource(source: any): any;\n        SetValue(value: any): any;\n        Listen(listener: IPropertyPathNodeListener): any;\n        Unlisten(listener: IPropertyPathNodeListener): any;\n    }\n    interface ICollectionViewNode extends IPropertyPathNode {\n        BindToView: boolean;\n    }\n    interface IPropertyPathNodeListener {\n        IsBrokenChanged(node: IPropertyPathNode): any;\n        ValueChanged(node: IPropertyPathNode): any;\n    }\n    class PropertyPathWalker implements IPropertyPathNodeListener {\n        Path: string;\n        IsDataContextBound: boolean;\n        Source: any;\n        ValueInternal: any;\n        Node: IPropertyPathNode;\n        FinalNode: IPropertyPathNode;\n        private _Listener;\n        IsPathBroken: boolean;\n        FinalPropertyName: string;\n        constructor(path: string, bindDirectlyToSource?: boolean, bindsToView?: boolean, isDataContextBound?: boolean);\n        GetValue(item: any): any;\n        Update(source: any): void;\n        Listen(listener: IPropertyPathWalkerListener): void;\n        Unlisten(listener: IPropertyPathWalkerListener): void;\n        IsBrokenChanged(node: IPropertyPathNode): void;\n        ValueChanged(node: IPropertyPathNode): void;\n        GetContext(): any;\n    }\n}\ndeclare module Fayde.Input.TouchInternal {\n    interface ITouchHandler {\n        HandleTouches(type: Input.TouchInputType, touches: ActiveTouchBase[], emitLeave?: boolean, emitEnter?: boolean): boolean;\n    }\n    class ActiveTouchBase {\n        Identifier: number;\n        Position: Point;\n        Device: Input.ITouchDevice;\n        InputList: UINode[];\n        private _IsEmitting;\n        private _PendingCapture;\n        private _PendingReleaseCapture;\n        private _Captured;\n        private _CapturedInputList;\n        private _FinishReleaseCaptureFunc;\n        constructor(touchHandler: ITouchHandler);\n        Capture(uie: UIElement): boolean;\n        ReleaseCapture(uie: UIElement): void;\n        private _PerformCapture(uin);\n        private _PerformReleaseCapture();\n        Emit(type: Input.TouchInputType, newInputList: UINode[], emitLeave?: boolean, emitEnter?: boolean): boolean;\n        private _EmitList(type, list, endIndex?);\n        GetTouchPoint(relativeTo: UIElement): TouchPoint;\n        CreateTouchPoint(p: Point): TouchPoint;\n        private CreateTouchDevice();\n    }\n}\ndeclare module Fayde.Input.TouchInternal {\n    interface IOffset {\n        left: number;\n        top: number;\n    }\n    class TouchInteropBase implements Fayde.Input.ITouchInterop, ITouchHandler {\n        Input: Engine.InputManager;\n        CanvasOffset: IOffset;\n        ActiveTouches: ActiveTouchBase[];\n        CoordinateOffset: IOffset;\n        Register(input: Engine.InputManager, canvas: HTMLCanvasElement): void;\n        private _CalcOffset(canvas);\n        HandleTouches(type: Input.TouchInputType, touches: ActiveTouchBase[], emitLeave?: boolean, emitEnter?: boolean): boolean;\n    }\n}\ndeclare module Fayde.Input.TouchInternal {\n    class NonPointerTouchInterop extends TouchInteropBase {\n        Register(input: Engine.InputManager, canvas: HTMLCanvasElement): void;\n        private _HandleTouchStart(e);\n        private _HandleTouchEnd(e);\n        private _HandleTouchMove(e);\n        private _HandleTouchEnter(e);\n        private _HandleTouchLeave(e);\n        private TouchArrayFromList(list);\n        private FindTouchInList(identifier);\n    }\n}\ndeclare module Fayde.Input.TouchInternal {\n    class PointerTouchInterop extends TouchInteropBase {\n        Register(input: Engine.InputManager, canvas: HTMLCanvasElement): void;\n        private _HandlePointerDown(e);\n        private _HandlePointerUp(e);\n        private _HandlePointerMove(e);\n        private _HandlePointerEnter(e);\n        private _HandlePointerLeave(e);\n        private GetActiveTouch(e);\n        private FindTouchInList(identifier);\n    }\n}\ndeclare module Fayde.Markup.Internal {\n    interface IActiveObject {\n        obj: any;\n        xo: XamlObject;\n        dobj: DependencyObject;\n        rd: ResourceDictionary;\n        coll: nullstone.ICollection<any>;\n        arr: any[];\n        type: any;\n        set(obj: any): any;\n        setName(name: string): any;\n        getApp(): Application;\n    }\n    function createActiveObject(app: Application, namescope: NameScope, bindingSource: any): IActiveObject;\n}\ndeclare module Fayde.Markup.Internal {\n    interface IObjectActor {\n        start(): any;\n        end(): any;\n    }\n    function createObjectActor(pactor: IPropertyActor): IObjectActor;\n}\ndeclare module Fayde.Markup.Internal {\n    interface IPropertyActor {\n        init(nstate: any): any;\n        start(ownerType: any, name: string): any;\n        startContent(): any;\n        end(): any;\n        addObject(obj: any, key?: any): any;\n        setContentText(text: string): any;\n        setObject(ownerType: any, name: string, obj: any): any;\n        isNewResources(): boolean;\n    }\n    function createPropertyActor(cur: IActiveObject, extractType: (text: string) => any, extractDP: (text: string) => any): IPropertyActor;\n}\ndeclare module Fayde.Markup.Internal {\n    interface IResourcesActor {\n        start(): any;\n        end(): any;\n        get(): ResourceDictionary[];\n    }\n    function createResourcesActor(cur: IActiveObject, resources: ResourceDictionary[]): IResourcesActor;\n}\ndeclare module Fayde.Media.Animation {\n    enum EasingMode {\n        EaseOut = 0,\n        EaseIn = 1,\n        EaseInOut = 2,\n    }\n    enum FillBehavior {\n        HoldEnd = 0,\n        Stop = 1,\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class RepeatBehavior {\n        private _Duration;\n        private _Count;\n        IsForever: boolean;\n        static FromRepeatDuration(duration: Duration): RepeatBehavior;\n        static FromIterationCount(count: number): RepeatBehavior;\n        HasCount: boolean;\n        Count: number;\n        HasDuration: boolean;\n        Duration: Duration;\n        Clone(): RepeatBehavior;\n        static Forever: RepeatBehavior;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    interface IClockData {\n        CurrentTime: TimeSpan;\n        Progress: number;\n        Completed: boolean;\n    }\n    class Timeline extends DependencyObject implements ITimeline {\n        static DEFAULT_REPEAT_BEHAVIOR: RepeatBehavior;\n        static AutoReverseProperty: DependencyProperty;\n        static BeginTimeProperty: DependencyProperty;\n        static DurationProperty: DependencyProperty;\n        static RepeatBehaviorProperty: DependencyProperty;\n        static SpeedRatioProperty: DependencyProperty;\n        static FillBehaviorProperty: DependencyProperty;\n        AutoReverse: boolean;\n        BeginTime: TimeSpan;\n        Duration: Duration;\n        RepeatBehavior: RepeatBehavior;\n        SpeedRatio: number;\n        FillBehavior: FillBehavior;\n        Completed: nullstone.Event<{}>;\n        private _IsPaused;\n        private _BeginPauseTime;\n        private _TicksPaused;\n        private _IsFirstUpdate;\n        private _HasBegun;\n        private _BeginTicks;\n        private _InitialStep;\n        private _HasCompleted;\n        ManualTarget: DependencyObject;\n        HasManualTarget: boolean;\n        Reset(): void;\n        Pause(): void;\n        Resume(): void;\n        Stop(): void;\n        OnCompleted(): void;\n        Update(nowTime: number): void;\n        UpdateInternal(clockData: IClockData): void;\n        HoldEnd(): void;\n        private CreateClockData(nowTime);\n        private IsAfterBeginTime(nowTime);\n        GetNaturalDuration(): Duration;\n        GetNaturalDurationCore(): Duration;\n        GenerateFrom(): AnimationBase;\n        GenerateTo(isEntering: boolean): AnimationBase;\n    }\n    class TimelineCollection extends XamlObjectCollection<Timeline> {\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class AnimationBase extends Timeline {\n        private _AnimStorage;\n        private _IsHolding;\n        constructor();\n        Resolve(target: DependencyObject, propd: DependencyProperty): boolean;\n        HoldEnd(): void;\n        Stop(): void;\n        UpdateInternal(clockData: IClockData): void;\n        GetNaturalDurationCore(): Duration;\n        GetCurrentValue(defaultOriginalValue: any, defaultDestinationValue: any, clockData: IClockData): any;\n        _Hookup(promotedValues: any[], error: BError): boolean;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    interface IAnimationStorage {\n        ID: number;\n        Animation: AnimationBase;\n        PropStorage: Providers.IPropertyStorage;\n        IsDisabled: boolean;\n        BaseValue: any;\n        CurrentValue: any;\n        StopValue: any;\n    }\n    class AnimationStore {\n        static Create(target: DependencyObject, propd: DependencyProperty): IAnimationStorage;\n        static Attach(animStorage: IAnimationStorage): void;\n        static Detach(animStorage: IAnimationStorage): boolean;\n        static ApplyCurrent(animStorage: IAnimationStorage): void;\n        static ApplyStop(animStorage: IAnimationStorage): void;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class AnimationUsingKeyFrames extends AnimationBase {\n        static KeyFramesProperty: ImmutableDependencyProperty<KeyFrameCollection>;\n        KeyFrames: KeyFrameCollection;\n        constructor();\n        Resolve(target: DependencyObject, propd: DependencyProperty): boolean;\n        GetCurrentValue(defaultOriginValue: any, defaultDestinationValue: any, clockData: IClockData): any;\n        GetNaturalDurationCore(): Duration;\n        AddKeyFrame(kf: KeyFrame): void;\n        RemoveKeyFrame(kf: KeyFrame): void;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class BeginStoryboard extends TriggerAction {\n        static StoryboardProperty: DependencyProperty;\n        Storyboard: Animation.Storyboard;\n        Fire(): void;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class ColorAnimation extends AnimationBase {\n        static ByProperty: DependencyProperty;\n        static EasingFunctionProperty: DependencyProperty;\n        static FromProperty: DependencyProperty;\n        static ToProperty: DependencyProperty;\n        By: Color;\n        EasingFunction: IEasingFunction;\n        From: Color;\n        To: Color;\n        private _FromCached;\n        private _ToCached;\n        private _ByCached;\n        private _EasingCached;\n        constructor();\n        GetCurrentValue(defaultOriginalValue: any, defaultDestinationValue: any, clockData: IClockData): Color;\n        private _FromChanged(args);\n        private _ToChanged(args);\n        private _ByChanged(args);\n        private _EasingChanged(args);\n        GenerateFrom(): AnimationBase;\n        GenerateTo(isEntering: boolean): AnimationBase;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class ColorAnimationUsingKeyFrames extends AnimationUsingKeyFrames {\n        GenerateFrom(): AnimationBase;\n        GenerateTo(isEntering: boolean): AnimationBase;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    interface IOutValue {\n        Value: any;\n    }\n    interface IKeyFrameListener {\n        KeyFrameChanged(source: KeyFrame): any;\n    }\n    interface IKeyFrame {\n        _ResolvedKeyTime: TimeSpan;\n        _Resolved: boolean;\n        Value: any;\n        InterpolateValue(baseValue: any, keyFrameProgress: number): any;\n    }\n    class KeyFrame extends DependencyObject implements IKeyFrame {\n        _ResolvedKeyTime: TimeSpan;\n        _Resolved: boolean;\n        private _Listener;\n        static KeyTimeProperty: DependencyProperty;\n        KeyTime: KeyTime;\n        Value: any;\n        CoerceKeyTime(dobj: DependencyObject, propd: DependencyProperty, value: any, coerced: IOutValue, error: BError): boolean;\n        InterpolateValue(baseValue: any, keyFrameProgress: number): any;\n        CompareToTimeSpan(otherTs: TimeSpan): number;\n        Listen(listener: IKeyFrameListener): void;\n        Unlisten(listener: IKeyFrameListener): void;\n        InvalidateKeyFrame(): void;\n        static Comparer(kf1: KeyFrame, kf2: KeyFrame): number;\n        static ResolveKeyFrames(animation: AnimationBase, arr: KeyFrame[]): KeyFrame[];\n    }\n    class KeyFrameCollection extends XamlObjectCollection<KeyFrame> {\n        private _Resolved;\n        private _SortedList;\n        GetKeyFrameForTime(t: TimeSpan, prevFrameRef: IOutValue): KeyFrame;\n        Clear(): boolean;\n        AddingToCollection(value: KeyFrame, error: BError): boolean;\n        RemovedFromCollection(value: KeyFrame, isValueSafe: boolean): void;\n        KeyFrameChanged(source: KeyFrame): void;\n        static ResolveKeyFrames(animation: AnimationBase, coll: KeyFrameCollection): KeyFrame[];\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class ColorKeyFrame extends KeyFrame {\n        static ValueProperty: DependencyProperty;\n        Value: Color;\n    }\n    class DiscreteColorKeyFrame extends ColorKeyFrame {\n        InterpolateValue(baseValue: Color, keyFrameProgress: number): Color;\n    }\n    class EasingColorKeyFrame extends ColorKeyFrame {\n        static EasingFunctionProperty: DependencyProperty;\n        EasingFunction: EasingFunctionBase;\n        InterpolateValue(baseValue: Color, keyFrameProgress: number): Color;\n    }\n    class LinearColorKeyFrame extends ColorKeyFrame {\n        InterpolateValue(baseValue: Color, keyFrameProgress: number): Color;\n    }\n    class SplineColorKeyFrame extends ColorKeyFrame {\n        static KeySplineProperty: DependencyProperty;\n        KeySpline: KeySpline;\n        InterpolateValue(baseValue: Color, keyFrameProgress: number): Color;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    interface ICurvePoint {\n        x: number;\n        y: number;\n    }\n    interface IQuadraticCurve {\n        c0: ICurvePoint;\n        c1: ICurvePoint;\n        c2: ICurvePoint;\n    }\n    interface ICubicCurve {\n        c0: ICurvePoint;\n        c1: ICurvePoint;\n        c2: ICurvePoint;\n        c3: ICurvePoint;\n    }\n    interface ISubdiviedCubicCurve {\n        b1: ICubicCurve;\n        b2: ICubicCurve;\n    }\n    class Curves {\n        static QuadraticArrayYForX(arr: IQuadraticCurve[], x: number, count: number): number;\n        static QuadraticYForX(x: number, src: IQuadraticCurve): number;\n        static SubdivideCubicAtLevel(b: ICubicCurve[], lvl: number, src: ICubicCurve): void;\n        static RecursiveSubdivide(b: ICubicCurve[], lvl: number, currentlvl: number, pos: number, src: ICubicCurve): number;\n        static SubdivideCubic(data: ISubdiviedCubicCurve, src: ICubicCurve): void;\n        static HalfLerpPoint(p: ICurvePoint, p1: ICurvePoint, p2: ICurvePoint): void;\n        static ConvertCubicsToQuadratics(srcArray: ICubicCurve[], count: number): IQuadraticCurve[];\n        static QuadraticFromCubic(src: ICubicCurve): IQuadraticCurve;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class DoubleAnimation extends AnimationBase {\n        static ByProperty: DependencyProperty;\n        static EasingFunctionProperty: DependencyProperty;\n        static FromProperty: DependencyProperty;\n        static ToProperty: DependencyProperty;\n        By: number;\n        EasingFunction: IEasingFunction;\n        From: number;\n        To: number;\n        private _FromCached;\n        private _ToCached;\n        private _ByCached;\n        private _EasingCached;\n        constructor();\n        GetCurrentValue(defaultOriginalValue: any, defaultDestinationValue: any, clockData: IClockData): number;\n        private _FromChanged(args);\n        private _ToChanged(args);\n        private _ByChanged(args);\n        private _EasingChanged(args);\n        GenerateFrom(): AnimationBase;\n        GenerateTo(isEntering: boolean): AnimationBase;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class DoubleAnimationUsingKeyFrames extends AnimationUsingKeyFrames {\n        GenerateFrom(): AnimationBase;\n        GenerateTo(isEntering: boolean): AnimationBase;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class DoubleKeyFrame extends KeyFrame {\n        static ValueProperty: DependencyProperty;\n        Value: number;\n    }\n    class DiscreteDoubleKeyFrame extends DoubleKeyFrame {\n        InterpolateValue(baseValue: number, keyFrameProgress: number): number;\n    }\n    class EasingDoubleKeyFrame extends DoubleKeyFrame {\n        static EasingFunctionProperty: DependencyProperty;\n        EasingFunction: EasingFunctionBase;\n        InterpolateValue(baseValue: number, keyFrameProgress: number): number;\n    }\n    class LinearDoubleKeyFrame extends DoubleKeyFrame {\n        InterpolateValue(baseValue: number, keyFrameProgress: number): number;\n    }\n    class SplineDoubleKeyFrame extends DoubleKeyFrame {\n        static KeySplineProperty: DependencyProperty;\n        KeySpline: KeySpline;\n        InterpolateValue(baseValue: number, keyFrameProgress: number): number;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    interface IEasingFunction {\n        Ease(normalizedTime: number): number;\n    }\n    class EasingFunctionBase extends DependencyObject implements IEasingFunction {\n        static EasingModeProperty: DependencyProperty;\n        EasingMode: EasingMode;\n        Ease(normalizedTime: number): number;\n        EaseInCore(t: number): number;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class BackEase extends EasingFunctionBase {\n        static AmplitudeProperty: DependencyProperty;\n        Amplitude: number;\n        EaseInCore(t: number): number;\n    }\n    class BounceEase extends EasingFunctionBase {\n        static BouncesProperty: DependencyProperty;\n        static BouncinessProperty: DependencyProperty;\n        Bounces: number;\n        Bounciness: number;\n        EaseInCore(t: number): number;\n    }\n    class CircleEase extends EasingFunctionBase {\n        EaseInCore(t: number): number;\n    }\n    class CubicEase extends EasingFunctionBase {\n        EaseInCore(t: number): number;\n    }\n    class ElasticEase extends EasingFunctionBase {\n        static OscillationsProperty: DependencyProperty;\n        static SpringinessProperty: DependencyProperty;\n        Oscillations: number;\n        Springiness: number;\n        EaseInCore(t: number): number;\n    }\n    class ExponentialEase extends EasingFunctionBase {\n        static ExponentProperty: DependencyProperty;\n        Exponent: number;\n        EaseInCore(t: number): number;\n    }\n    class PowerEase extends EasingFunctionBase {\n        static PowerProperty: DependencyProperty;\n        Power: number;\n        EaseInCore(t: number): number;\n    }\n    class QuadraticEase extends EasingFunctionBase {\n        EaseInCore(t: number): number;\n    }\n    class QuarticEase extends EasingFunctionBase {\n        EaseInCore(t: number): number;\n    }\n    class QuinticEase extends EasingFunctionBase {\n        EaseInCore(t: number): number;\n    }\n    class SineEase extends EasingFunctionBase {\n        EaseInCore(t: number): number;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class KeySpline extends DependencyObject {\n        static PRECISION_LEVEL: number;\n        static TOTAL_COUNT: number;\n        static ControlPoint1Property: DependencyProperty;\n        static ControlPoint2Property: DependencyProperty;\n        ControlPoint1: Point;\n        ControlPoint2: Point;\n        private _QuadraticsArray;\n        GetSplineProgress(linearProgress: number): number;\n        private InvalidateControlPoints();\n        private _RegenerateQuadratics();\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class ObjectAnimationUsingKeyFrames extends AnimationUsingKeyFrames {\n        Resolve(target: DependencyObject, propd: DependencyProperty): boolean;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class ObjectKeyFrame extends KeyFrame {\n        static ValueProperty: DependencyProperty;\n        Value: any;\n        ConvertedValue: any;\n    }\n    class DiscreteObjectKeyFrame extends ObjectKeyFrame {\n        InterpolateValue(baseValue: any, keyFrameProgress: number): any;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class PointAnimation extends AnimationBase {\n        static ByProperty: DependencyProperty;\n        static EasingFunctionProperty: DependencyProperty;\n        static FromProperty: DependencyProperty;\n        static ToProperty: DependencyProperty;\n        By: Point;\n        EasingFunction: IEasingFunction;\n        From: Point;\n        To: Point;\n        private _FromCached;\n        private _ToCached;\n        private _ByCached;\n        private _EasingCached;\n        constructor();\n        GetCurrentValue(defaultOriginalValue: any, defaultDestinationValue: any, clockData: IClockData): Point;\n        private _FromChanged(args);\n        private _ToChanged(args);\n        private _ByChanged(args);\n        private _EasingChanged(args);\n        GenerateFrom(): AnimationBase;\n        GenerateTo(isEntering: boolean): AnimationBase;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class PointAnimationUsingKeyFrames extends AnimationUsingKeyFrames {\n        GenerateFrom(): AnimationBase;\n        GenerateTo(isEntering: boolean): AnimationBase;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    class PointKeyFrame extends KeyFrame {\n        static ValueProperty: DependencyProperty;\n        Value: Point;\n    }\n    class DiscretePointKeyFrame extends PointKeyFrame {\n        InterpolateValue(baseValue: Point, keyFrameProgress: number): Point;\n    }\n    class EasingPointKeyFrame extends PointKeyFrame {\n        static EasingFunctionProperty: DependencyProperty;\n        EasingFunction: EasingFunctionBase;\n        InterpolateValue(baseValue: Point, keyFrameProgress: number): Point;\n    }\n    class LinearPointKeyFrame extends PointKeyFrame {\n        InterpolateValue(baseValue: Point, keyFrameProgress: number): Point;\n    }\n    class SplinePointKeyFrame extends PointKeyFrame {\n        static KeySplineProperty: DependencyProperty;\n        KeySpline: KeySpline;\n        InterpolateValue(baseValue: Point, keyFrameProgress: number): Point;\n    }\n}\ndeclare module Fayde.Media.Animation {\n    interface IStoryboadResolution {\n        Target: DependencyObject;\n        Property: Data.PropertyPath;\n    }\n    class Storyboard extends Timeline {\n        static TargetNameProperty: DependencyProperty;\n        static GetTargetName(d: DependencyObject): string;\n        static SetTargetName(d: DependencyObject, value: string): void;\n        TargetName: string;\n        static TargetPropertyProperty: DependencyProperty;\n        static GetTargetProperty(d: DependencyObject): Data.PropertyPath;\n        static SetTargetProperty(d: DependencyObject, value: Data.PropertyPath): void;\n        TargetProperty: Data.PropertyPath;\n        static ResolveTarget(timeline: Timeline): IStoryboadResolution;\n        static ChildrenProperty: ImmutableDependencyProperty<TimelineCollection>;\n        Children: TimelineCollection;\n        constructor();\n        static SetTarget(timeline: Timeline, target: DependencyObject): void;\n        Begin(): void;\n        Pause(): void;\n        Resume(): void;\n        Stop(): void;\n        UpdateInternal(clockData: IClockData): void;\n        GetNaturalDurationCore(): Duration;\n    }\n}\ndeclare module Fayde.Media.Effects {\n    class Effect extends DependencyObject implements minerva.IEffect {\n        static EffectMappingProperty: DependencyProperty;\n        EffectMapping: GeneralTransform;\n        PreRender(ctx: minerva.core.render.RenderContext): void;\n        PostRender(ctx: minerva.core.render.RenderContext): void;\n        GetPadding(thickness: Thickness): boolean;\n    }\n}\ndeclare module Fayde.Media.Effects {\n    class BlurEffect extends Effect {\n        static RadiusProperty: DependencyProperty;\n        Radius: number;\n    }\n}\ndeclare module Fayde.Media.Effects {\n    class DropShadowEffect extends Effect {\n        static MAX_BLUR_RADIUS: number;\n        static MAX_SHADOW_DEPTH: number;\n        static BlurRadiusProperty: DependencyProperty;\n        static ColorProperty: DependencyProperty;\n        static DirectionProperty: DependencyProperty;\n        static OpacityProperty: DependencyProperty;\n        static ShadowDepthProperty: DependencyProperty;\n        BlurRadius: number;\n        Color: Color;\n        Direction: number;\n        Opacity: number;\n        ShadowDepth: number;\n        GetPadding(thickness: Thickness): boolean;\n        PreRender(ctx: minerva.core.render.RenderContext): void;\n    }\n}\ndeclare module Fayde.Media.Imaging {\n    class ImageSource extends DependencyObject implements minerva.controls.image.IImageSource {\n        static PixelWidthProperty: DependencyProperty;\n        static PixelHeightProperty: DependencyProperty;\n        PixelWidth: number;\n        PixelHeight: number;\n        protected $element: HTMLMediaElement | HTMLImageElement;\n        constructor();\n        pixelWidth: number;\n        pixelHeight: number;\n        isEmpty: boolean;\n        draw(ctx: CanvasRenderingContext2D): void;\n        createPattern(ctx: CanvasRenderingContext2D): CanvasPattern;\n        reset(): void;\n        createElement(): HTMLMediaElement | HTMLImageElement;\n        protected setMetrics(pixelWidth: number, pixelHeight: number): void;\n    }\n}\ndeclare module Fayde.Media.Imaging {\n    interface IBitmapSourceWatcher {\n        onErrored(source: BitmapSource, error: Error): any;\n        onLoaded(source: BitmapSource): any;\n        onChanged(source: BitmapSource): any;\n    }\n    class BitmapSource extends ImageSource {\n        protected $element: HTMLImageElement;\n        private $watchers;\n        createElement(): HTMLMediaElement | HTMLImageElement;\n        reset(): void;\n        watch(watcher: IBitmapSourceWatcher): nullstone.IDisposable;\n        protected onImageLoaded(): void;\n        protected onImageErrored(e: ErrorEvent): void;\n        protected onImageChanged(): void;\n    }\n}\ndeclare module Fayde.Media.Imaging {\n    class BitmapImage extends BitmapSource {\n        static UriSourceProperty: DependencyProperty;\n        UriSource: Uri;\n        ImageFailed: nullstone.Event<{}>;\n        ImageOpened: nullstone.Event<{}>;\n        private _BackingBuffer;\n        constructor(uri?: Uri);\n        protected OnUriSourceChanged(oldValue: Uri, newValue: Uri): void;\n        protected onImageErrored(e: ErrorEvent): void;\n        protected onImageLoaded(): void;\n        SetSource(buffer: ArrayBuffer): void;\n    }\n}\ndeclare module Fayde.Media.Imaging {\n    class ImageBrush extends TileBrush {\n        private static _SourceCoercer(d, propd, value);\n        static ImageSourceProperty: DependencyProperty;\n        ImageSource: ImageSource;\n        ImageFailed: nullstone.Event<{}>;\n        ImageOpened: nullstone.Event<{}>;\n        private $watcher;\n        setupBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): void;\n        GetTileExtents(): minerva.Rect;\n        DrawTile(canvasCtx: CanvasRenderingContext2D, bounds: minerva.Rect): void;\n        private _ImageSourceChanged(args);\n        OnImageErrored(source: BitmapSource, error: Error): void;\n        OnImageLoaded(source: BitmapSource): void;\n        OnImageChanged(source: BitmapSource): void;\n    }\n}\ndeclare module Fayde.Media.Imaging {\n    function encodeImage(buffer: ArrayBuffer): Uri;\n}\ndeclare module Fayde.Media.LinearGradient {\n    interface IInterpolator {\n        x0: number;\n        y0: number;\n        x1: number;\n        y1: number;\n        step(): boolean;\n        interpolate(offset: number): number;\n    }\n    function createRepeatInterpolator(start: Point, end: Point, bounds: minerva.Rect): IInterpolator;\n    function createReflectInterpolator(start: Point, end: Point, bounds: minerva.Rect): IInterpolator;\n}\ndeclare module Fayde.Media.LinearGradient {\n    interface ICoordinates {\n        x: number;\n        y: number;\n    }\n    function calcMetrics(dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect): void;\n}\ndeclare module Fayde.Media.RadialGradient {\n    interface IExtender {\n        x0: number;\n        y0: number;\n        r0: number;\n        x1: number;\n        y1: number;\n        r1: number;\n        step(): boolean;\n        createGradient(ctx: CanvasRenderingContext2D): CanvasGradient;\n    }\n    interface IRadialPointData {\n        x0: number;\n        y0: number;\n        x1: number;\n        y1: number;\n        r1: number;\n        sx: number;\n        sy: number;\n        side: number;\n        balanced: boolean;\n    }\n    function createExtender(data: IRadialPointData, bounds: minerva.Rect): IExtender;\n}\ndeclare module Fayde.Media.VSM {\n    class VisualState extends DependencyObject {\n        static StoryboardProperty: DependencyProperty;\n        Storyboard: Animation.Storyboard;\n    }\n    class VisualStateCollection extends XamlObjectCollection<VisualState> {\n    }\n}\ndeclare module Fayde.Media.VSM {\n    class VisualStateChangedEventArgs implements nullstone.IEventArgs {\n        OldState: VisualState;\n        NewState: VisualState;\n        Control: Controls.Control;\n        constructor(oldState: VisualState, newState: VisualState, control: Controls.Control);\n    }\n    class VisualStateGroup extends DependencyObject {\n        static StatesProperty: ImmutableDependencyProperty<VisualStateCollection>;\n        States: VisualStateCollection;\n        static TransitionsProperty: ImmutableDependencyProperty<XamlObjectCollection<VisualTransition>>;\n        Transitions: XamlObjectCollection<VisualTransition>;\n        private _CurrentStoryboards;\n        CurrentStoryboards: Animation.Storyboard[];\n        CurrentStateChanging: nullstone.Event<VisualStateChangedEventArgs>;\n        CurrentStateChanged: nullstone.Event<VisualStateChangedEventArgs>;\n        CurrentState: VisualState;\n        constructor();\n        GetState(stateName: string): VisualState;\n        StartNewThenStopOld(element: FrameworkElement, newStoryboards: Animation.Storyboard[]): void;\n        StopCurrentStoryboards(element: FrameworkElement): void;\n        Deactivate(): void;\n        Activate(): void;\n        RaiseCurrentStateChanging(element: FrameworkElement, oldState: VisualState, newState: VisualState, control: Controls.Control): void;\n        RaiseCurrentStateChanged(element: FrameworkElement, oldState: VisualState, newState: VisualState, control: Controls.Control): void;\n    }\n    class VisualStateGroupCollection extends XamlObjectCollection<VisualStateGroup> {\n    }\n}\ndeclare module Fayde.Media.VSM {\n    interface IOutValue {\n        Value: any;\n    }\n    interface IStateData {\n        state: VisualState;\n        group: VisualStateGroup;\n    }\n    class VisualStateManager extends DependencyObject {\n        static VisualStateGroupsProperty: DependencyProperty;\n        static GetVisualStateGroups(d: DependencyObject): VisualStateGroupCollection;\n        static SetVisualStateGroups(d: DependencyObject, value: VisualStateGroupCollection): void;\n        static CustomVisualStateManagerProperty: DependencyProperty;\n        static GetCustomVisualStateManager(d: DependencyObject): VisualStateManager;\n        static SetCustomVisualStateManager(d: DependencyObject, value: VisualStateManager): void;\n        static GoToState(control: Controls.Control, stateName: string, useTransitions: boolean): boolean;\n        GoToStateCore(control: Controls.Control, element: FrameworkElement, stateName: string, group: VisualStateGroup, state: VisualState, useTransitions: boolean): boolean;\n        private static GoToStateInternal(control, element, group, state, useTransitions);\n        static DestroyStoryboards(control: Controls.Control, root: FrameworkElement): boolean;\n        static Deactivate(control: Controls.Control, root: FrameworkElement): boolean;\n        static Activate(control: Controls.Control, root: FrameworkElement): boolean;\n        private static _GetTemplateRoot(control);\n        static GetGroup(control: Controls.Control, name: string): VisualStateGroup;\n        private static _TryGetState(groups, stateName, data);\n        private static _GetTransition(element, group, from, to);\n    }\n}\ndeclare module Fayde.Media.VSM {\n    class VisualTransition extends DependencyObject {\n        From: string;\n        To: string;\n        static StoryboardProperty: DependencyProperty;\n        Storyboard: Animation.Storyboard;\n        private _GeneratedDuration;\n        GeneratedDuration: Duration;\n        DynamicStoryboardCompleted: boolean;\n        ExplicitStoryboardCompleted: boolean;\n        GeneratedEasingFunction: Animation.EasingFunctionBase;\n        IsDefault: boolean;\n    }\n}\ndeclare module Fayde.Media.Videos {\n    interface IVideoSourceWatcher {\n        onErrored(source: VideoSourceBase, error: Error): any;\n        onCanPlay(source: VideoSourceBase): any;\n        onChanged(source: VideoSourceBase): any;\n    }\n    class VideoSourceBase extends Imaging.ImageSource implements minerva.controls.video.IVideoSource {\n        protected $element: HTMLVideoElement;\n        private $watchers;\n        private $autoplay;\n        createElement(): HTMLVideoElement;\n        reset(): void;\n        watch(watcher: IVideoSourceWatcher): nullstone.IDisposable;\n        setAutoPlay(value: boolean): void;\n        getIsPlaying(): boolean;\n        Play(): void;\n        Pause(): void;\n        protected onVideoErrored(e: ErrorEvent): void;\n        protected onVideoCanPlay(): void;\n        protected onVideoChanged(): void;\n    }\n}\ndeclare module Fayde.Media.Videos {\n    class VideoSource extends VideoSourceBase {\n        static UriSourceProperty: DependencyProperty;\n        UriSource: Uri;\n        VideoFailed: nullstone.Event<{}>;\n        VideoOpened: nullstone.Event<{}>;\n        constructor(uri?: Uri);\n        private _UriSourceChanged(args);\n        protected OnUriSourceChanged(oldValue: Uri, newValue: Uri): void;\n        protected onVideoErrored(e: ErrorEvent): void;\n    }\n}\ndeclare module Fayde.Text.History {\n    class DeleteAction implements IAction {\n        SelectionAnchor: number;\n        SelectionCursor: number;\n        Start: number;\n        Text: string;\n        constructor(selectionAnchor: number, selectionCursor: number, buffer: string, start: number, length: number);\n        Undo(bo: ITextOwner): void;\n        Redo(bo: ITextOwner): number;\n    }\n}\ndeclare module Fayde.Text.History {\n    interface IAction {\n        SelectionAnchor: number;\n        SelectionCursor: number;\n        Undo(bufferholder: ITextOwner): any;\n        Redo(bufferholder: ITextOwner): number;\n    }\n}\ndeclare module Fayde.Text.History {\n    class InsertAction implements IAction {\n        SelectionAnchor: number;\n        SelectionCursor: number;\n        Start: number;\n        Text: string;\n        IsGrowable: boolean;\n        constructor(selectionAnchor: number, selectionCursor: number, start: number, inserted: string, isAtomic?: boolean);\n        Undo(bo: ITextOwner): void;\n        Redo(bo: ITextOwner): number;\n        Insert(start: number, text: string): boolean;\n    }\n}\ndeclare module Fayde.Text.History {\n    class ReplaceAction implements IAction {\n        SelectionAnchor: number;\n        SelectionCursor: number;\n        Start: number;\n        Length: number;\n        Deleted: string;\n        Inserted: string;\n        constructor(selectionAnchor: number, selectionCursor: number, buffer: string, start: number, length: number, inserted: string);\n        Undo(bo: ITextOwner): void;\n        Redo(bo: ITextOwner): number;\n    }\n}\ndeclare module Fayde.Text.History {\n    class Tracker {\n        private $$undo;\n        private $$redo;\n        private $$maxUndoCount;\n        constructor(maxUndoCount: number);\n        canUndo: boolean;\n        canRedo: boolean;\n        undo(bufferholder: ITextOwner): IAction;\n        redo(bufferholder: ITextOwner): number;\n        enter(anchor: number, cursor: number, start: number, newText: string): void;\n        insert(anchor: number, cursor: number, start: number, newText: string): void;\n        replace(anchor: number, cursor: number, text: string, start: number, length: number, newText: string): void;\n        delete(anchor: number, cursor: number, text: string, start: number, length: number): void;\n        private $doAction(action);\n    }\n}\ndeclare module Fayde {\n    function debugLayers(): any[];\n    function sexify(updater: minerva.core.Updater): any;\n    function debugLayersRaw(): string;\n    function getById(id: number): {\n        obj: any;\n        node: any;\n        updater: minerva.core.Updater;\n        flags: string;\n        uiflags: string;\n    };\n    function debugLayersFlatten(): any[];\n}\n"
  },
  {
    "path": "dist/fayde.js",
    "content": "var Fayde;\n(function (Fayde) {\n    Fayde.version = '0.19.19';\n})(Fayde || (Fayde = {}));\nif (!Function.prototype.bind) {\n    Function.prototype.bind = function (oThis) {\n        if (typeof this !== 'function') {\n            throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n        }\n        var aArgs = Array.prototype.slice.call(arguments, 1), fToBind = this, fNOP = function () {\n        }, fBound = function () {\n            return fToBind.apply(this instanceof fNOP && oThis\n                ? this\n                : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n        };\n        fNOP.prototype = this.prototype;\n        fBound.prototype = new fNOP();\n        return fBound;\n    };\n}\n(function (context) {\n    if (!context.perfex) {\n        context.perfex = {};\n    }\n    if (!context.perfex.timer) {\n        context.perfex.timer = {\n            all: [],\n            reset: function () {\n            },\n            start: function (tag) {\n            },\n            stop: function () {\n            }\n        };\n    }\n    if (!context.perfex.phases) {\n        context.perfex.phases = {\n            current: null,\n            all: [],\n            start: function (tag) {\n            }\n        };\n    }\n})(window);\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Fayde;\n(function (Fayde) {\n    var ThemedLibrary = (function (_super) {\n        __extends(ThemedLibrary, _super);\n        function ThemedLibrary() {\n            _super.apply(this, arguments);\n            this.$$themes = {};\n            this.$$activeTheme = null;\n            this.$$activeThemeName = null;\n        }\n        Object.defineProperty(ThemedLibrary.prototype, \"activeTheme\", {\n            get: function () {\n                return this.$$activeTheme;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(ThemedLibrary.prototype, \"isActiveThemeInvalid\", {\n            get: function () {\n                return !this.$$activeTheme || this.$$activeTheme.Name !== this.$$activeThemeName;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        ThemedLibrary.prototype.loadAsync = function () {\n            var _this = this;\n            return Promise.resolve(this)\n                .tap(function (lib) { return Promise.all([\n                _super.prototype.loadAsync.call(_this),\n                _this.retrieveTheme()\n            ]); })\n                .tap(function () { return _this.ensureThemeLoaded(); });\n        };\n        ThemedLibrary.prototype.retrieveTheme = function () {\n            if (this.isActiveThemeInvalid || !this.$$activeThemeName)\n                return Promise.resolve(null);\n            var theme = this.getTheme(this.$$activeThemeName);\n            return theme.RetrieveAsync();\n        };\n        ThemedLibrary.prototype.ensureThemeLoaded = function () {\n            if (!this.isActiveThemeInvalid)\n                return Promise.resolve(this.$$activeTheme);\n            if (!this.$$activeThemeName)\n                return Promise.resolve(null);\n            return this.loadActiveTheme();\n        };\n        ThemedLibrary.prototype.getTheme = function (name) {\n            var theme = this.$$themes[name];\n            if (!theme)\n                theme = this.$$themes[name] = new Fayde.Theme(name, this.uri);\n            return theme;\n        };\n        ThemedLibrary.prototype.setThemeName = function (name) {\n            this.$$activeThemeName = name;\n        };\n        ThemedLibrary.prototype.loadActiveTheme = function () {\n            var _this = this;\n            var theme = this.getTheme(this.$$activeThemeName);\n            return theme.LoadAsync()\n                .then(function () { return _this.$$activeTheme = theme; });\n        };\n        return ThemedLibrary;\n    })(nullstone.Library);\n    Fayde.ThemedLibrary = ThemedLibrary;\n})(Fayde || (Fayde = {}));\n/// <reference path=\"./ThemedLibrary\" />\nvar Fayde;\n(function (Fayde) {\n    var ThemedLibraryResolver = (function (_super) {\n        __extends(ThemedLibraryResolver, _super);\n        function ThemedLibraryResolver() {\n            _super.apply(this, arguments);\n        }\n        ThemedLibraryResolver.prototype.createLibrary = function (uri) {\n            return new Fayde.ThemedLibrary(uri);\n        };\n        return ThemedLibraryResolver;\n    })(nullstone.LibraryResolver);\n    Fayde.ThemedLibraryResolver = ThemedLibraryResolver;\n})(Fayde || (Fayde = {}));\n/// <reference path=\"./Engine/ThemedLibraryResolver\" />\nvar Fayde;\n(function (Fayde) {\n    Fayde.XMLNS = \"http://schemas.wsick.com/fayde\";\n    Fayde.XMLNSX = \"http://schemas.wsick.com/fayde/x\";\n    Fayde.XMLNSINTERNAL = \"http://schemas.wsick.com/fayde/internal\";\n    Fayde.Enum = nullstone.Enum;\n    Fayde.Uri = nullstone.Uri;\n    var ResourceTypeManager = (function (_super) {\n        __extends(ResourceTypeManager, _super);\n        function ResourceTypeManager() {\n            _super.apply(this, arguments);\n        }\n        ResourceTypeManager.prototype.createLibResolver = function () {\n            return new Fayde.ThemedLibraryResolver();\n        };\n        ResourceTypeManager.prototype.resolveResource = function (uri) {\n            if (uri.scheme === \"lib\") {\n                var res = uri.resource;\n                var full = uri.toString();\n                var base = full.replace(res, \"\");\n                var lib = this.resolveLibrary(base);\n                if (!lib)\n                    throw new Error(\"Could not find library when resolving resource [\" + full + \"].\");\n                return joinPaths(lib.basePath, res.length > 1 ? res.substr(1) : \"\");\n            }\n            return uri.toString();\n        };\n        return ResourceTypeManager;\n    })(nullstone.TypeManager);\n    Fayde.ResourceTypeManager = ResourceTypeManager;\n    Fayde.TypeManager = new ResourceTypeManager(Fayde.XMLNS, Fayde.XMLNSX);\n    function joinPaths(base, rel) {\n        if (base[base.length - 1] !== \"/\")\n            base += \"/\";\n        return base + (rel[0] === \"/\" ? rel.substr(1) : rel);\n    }\n    Fayde.CoreLibrary = Fayde.TypeManager.resolveLibrary(Fayde.XMLNS);\n    Fayde.CoreLibrary.$$module = Fayde;\n    Fayde.CoreLibrary.$$loaded = true;\n    Fayde.XLibrary = Fayde.TypeManager.resolveLibrary(Fayde.XMLNSX);\n    Fayde.XLibrary.$$module = Fayde;\n    Fayde.XLibrary.$$loaded = true;\n    function RegisterType(type, uri, name) {\n        name = name || nullstone.getTypeName(type);\n        Fayde.TypeManager.add(uri, name, type);\n    }\n    Fayde.RegisterType = RegisterType;\n    function RegisterEnum(enu, uri, name) {\n        Fayde.TypeManager.addEnum(uri, name, enu);\n    }\n    Fayde.RegisterEnum = RegisterEnum;\n    Fayde.IType_ = new nullstone.Interface(\"IType\");\n    Fayde.IType_.is = function (o) {\n        return typeof o === \"function\";\n    };\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Clipboard;\n    (function (Clipboard) {\n        var BasicClipboard = (function () {\n            function BasicClipboard() {\n            }\n            BasicClipboard.prototype.CopyText = function (text) {\n                var res = window.clipboardData.setData(\"Text\", text);\n                if (!res)\n                    alert(\"Your browser do not allow copy to the clipboard.\");\n            };\n            BasicClipboard.prototype.GetTextContents = function (callback) {\n                var text = window.clipboardData.getData(\"Text\");\n                callback(text);\n            };\n            return BasicClipboard;\n        })();\n        Clipboard.BasicClipboard = BasicClipboard;\n    })(Clipboard = Fayde.Clipboard || (Fayde.Clipboard = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Clipboard;\n    (function (Clipboard) {\n        function Create() {\n            if (window.clipboardData)\n                return new Clipboard.BasicClipboard();\n            return new Clipboard.NetscapeClipboard();\n        }\n        Clipboard.Create = Create;\n    })(Clipboard = Fayde.Clipboard || (Fayde.Clipboard = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Clipboard;\n    (function (Clipboard) {\n        var cp = new nullstone.Memoizer(function (key) {\n            var div = document.createElement(\"div\");\n            div.id = key;\n            (function (style) {\n                style.opacity = \"0.0\";\n                style.position = \"absolute\";\n                style.left = \"-300px\";\n            })(div.style);\n            document.body.appendChild(div);\n            div.contentEditable = \"true\";\n            return div;\n        });\n        function memoizePlaceholder(key) {\n            return cp.memoize(key);\n        }\n        Clipboard.memoizePlaceholder = memoizePlaceholder;\n    })(Clipboard = Fayde.Clipboard || (Fayde.Clipboard = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"BasicClipboard\" />\nvar Fayde;\n(function (Fayde) {\n    var Clipboard;\n    (function (Clipboard) {\n        var NetscapeClipboard = (function () {\n            function NetscapeClipboard() {\n                var _this = this;\n                this.$$fn = null;\n                this.$$notify = function (e) {\n                    if (!_this.$$fn)\n                        return;\n                    var ev = e.originalEvent || e;\n                    var dt = ev.clipboardData;\n                    _this.$$fn(dt.getData('text/plain'));\n                    _this.$$fn = null;\n                };\n                document.body.contentEditable = \"true\";\n                document.body.style.cursor = \"default\";\n                document.body.addEventListener(\"paste\", this.$$notify);\n            }\n            NetscapeClipboard.prototype.CopyText = function (text) {\n                var div = Clipboard.memoizePlaceholder(\"special_copy\");\n                div.textContent = text;\n                selectContent(div);\n                tryRequestPrivilege();\n                if (!document.execCommand(\"copy\", false, null))\n                    alert(\"Your browser does not allow copy to the clipboard. This feature will not function\");\n            };\n            NetscapeClipboard.prototype.GetTextContents = function (callback) {\n                this.$$fn = callback;\n            };\n            return NetscapeClipboard;\n        })();\n        Clipboard.NetscapeClipboard = NetscapeClipboard;\n        function selectContent(element) {\n            var rangeToSelect = document.createRange();\n            rangeToSelect.selectNodeContents(element);\n            var selection = window.getSelection();\n            selection.removeAllRanges();\n            selection.addRange(rangeToSelect);\n        }\n        function tryRequestPrivilege() {\n            var netscape = window ? window.netscape : null;\n            if (netscape && netscape.security) {\n                netscape.security.PrivilegeManager.enablePrivilege(\"UniversalXPConnect\");\n            }\n        }\n    })(Clipboard = Fayde.Clipboard || (Fayde.Clipboard = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Collections;\n    (function (Collections) {\n        (function (CollectionChangedAction) {\n            CollectionChangedAction[CollectionChangedAction[\"Add\"] = 1] = \"Add\";\n            CollectionChangedAction[CollectionChangedAction[\"Remove\"] = 2] = \"Remove\";\n            CollectionChangedAction[CollectionChangedAction[\"Replace\"] = 3] = \"Replace\";\n            CollectionChangedAction[CollectionChangedAction[\"Reset\"] = 4] = \"Reset\";\n        })(Collections.CollectionChangedAction || (Collections.CollectionChangedAction = {}));\n        var CollectionChangedAction = Collections.CollectionChangedAction;\n        Fayde.CoreLibrary.addEnum(CollectionChangedAction, \"NotifyCollectionChangedAction\");\n        var CollectionChangedEventArgs = (function () {\n            function CollectionChangedEventArgs() {\n            }\n            CollectionChangedEventArgs.Reset = function (allValues) {\n                var args = new CollectionChangedEventArgs();\n                Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Reset, writable: false });\n                Object.defineProperty(args, \"OldStartingIndex\", { value: 0, writable: false });\n                Object.defineProperty(args, \"NewStartingIndex\", { value: -1, writable: false });\n                Object.defineProperty(args, \"OldItems\", { value: allValues, writable: false });\n                Object.defineProperty(args, \"NewItems\", { value: null, writable: false });\n                return args;\n            };\n            CollectionChangedEventArgs.Replace = function (newValue, oldValue, index) {\n                var args = new CollectionChangedEventArgs();\n                Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Replace, writable: false });\n                Object.defineProperty(args, \"OldStartingIndex\", { value: -1, writable: false });\n                Object.defineProperty(args, \"NewStartingIndex\", { value: index, writable: false });\n                Object.defineProperty(args, \"OldItems\", { value: [oldValue], writable: false });\n                Object.defineProperty(args, \"NewItems\", { value: [newValue], writable: false });\n                return args;\n            };\n            CollectionChangedEventArgs.Add = function (newValue, index) {\n                var args = new CollectionChangedEventArgs();\n                Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Add, writable: false });\n                Object.defineProperty(args, \"OldStartingIndex\", { value: -1, writable: false });\n                Object.defineProperty(args, \"NewStartingIndex\", { value: index, writable: false });\n                Object.defineProperty(args, \"OldItems\", { value: null, writable: false });\n                Object.defineProperty(args, \"NewItems\", { value: [newValue], writable: false });\n                return args;\n            };\n            CollectionChangedEventArgs.AddRange = function (newValues, index) {\n                var args = new CollectionChangedEventArgs();\n                Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Add, writable: false });\n                Object.defineProperty(args, \"OldStartingIndex\", { value: -1, writable: false });\n                Object.defineProperty(args, \"NewStartingIndex\", { value: index, writable: false });\n                Object.defineProperty(args, \"OldItems\", { value: null, writable: false });\n                Object.defineProperty(args, \"NewItems\", { value: newValues, writable: false });\n                return args;\n            };\n            CollectionChangedEventArgs.Remove = function (oldValue, index) {\n                var args = new CollectionChangedEventArgs();\n                Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Remove, writable: false });\n                Object.defineProperty(args, \"OldStartingIndex\", { value: index, writable: false });\n                Object.defineProperty(args, \"NewStartingIndex\", { value: -1, writable: false });\n                Object.defineProperty(args, \"OldItems\", { value: [oldValue], writable: false });\n                Object.defineProperty(args, \"NewItems\", { value: null, writable: false });\n                return args;\n            };\n            return CollectionChangedEventArgs;\n        })();\n        Collections.CollectionChangedEventArgs = CollectionChangedEventArgs;\n    })(Collections = Fayde.Collections || (Fayde.Collections = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Collections;\n    (function (Collections) {\n        Collections.INotifyCollectionChanged_ = new nullstone.Interface(\"INotifyCollectionChanged\");\n        Collections.INotifyCollectionChanged_.is = function (o) {\n            return o && o.CollectionChanged instanceof nullstone.Event;\n        };\n    })(Collections = Fayde.Collections || (Fayde.Collections = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var PropertyChangedEventArgs = (function () {\n        function PropertyChangedEventArgs(propertyName) {\n            Object.defineProperty(this, \"PropertyName\", { value: propertyName, writable: false });\n        }\n        return PropertyChangedEventArgs;\n    })();\n    Fayde.PropertyChangedEventArgs = PropertyChangedEventArgs;\n    Fayde.CoreLibrary.add(PropertyChangedEventArgs);\n    Fayde.INotifyPropertyChanged_ = new nullstone.Interface(\"INotifyPropertyChanged\");\n    Fayde.INotifyPropertyChanged_.is = function (o) {\n        return o && o.PropertyChanged instanceof nullstone.Event;\n    };\n})(Fayde || (Fayde = {}));\n/// <reference path=\"INotifyCollectionChanged.ts\" />\n/// <reference path=\"../Core/INotifyPropertyChanged.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Collections;\n    (function (Collections) {\n        var ObservableCollection = (function () {\n            function ObservableCollection() {\n                this._ht = [];\n                this.CollectionChanged = new nullstone.Event();\n                this.PropertyChanged = new nullstone.Event();\n            }\n            ObservableCollection.prototype.getEnumerator = function () {\n                return nullstone.IEnumerator_.fromArray(this._ht);\n            };\n            Object.defineProperty(ObservableCollection.prototype, \"Count\", {\n                get: function () {\n                    return this._ht.length;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            ObservableCollection.prototype.ToArray = function () {\n                return this._ht.slice(0);\n            };\n            ObservableCollection.prototype.GetValueAt = function (index) {\n                var ht = this._ht;\n                if (index < 0 || index >= ht.length)\n                    throw new IndexOutOfRangeException(index);\n                return ht[index];\n            };\n            ObservableCollection.prototype.SetValueAt = function (index, value) {\n                var ht = this._ht;\n                if (index < 0 || index >= ht.length)\n                    throw new IndexOutOfRangeException(index);\n                var oldValue = ht[index];\n                ht[index] = value;\n                this.CollectionChanged.raise(this, Collections.CollectionChangedEventArgs.Replace(value, oldValue, index));\n            };\n            ObservableCollection.prototype.Add = function (value) {\n                var index = this._ht.push(value) - 1;\n                this.CollectionChanged.raise(this, Collections.CollectionChangedEventArgs.Add(value, index));\n                this._RaisePropertyChanged(\"Count\");\n            };\n            ObservableCollection.prototype.AddRange = function (values) {\n                var index = this._ht.length;\n                var len = values.length;\n                for (var i = 0; i < len; i++) {\n                    this._ht.push(values[i]);\n                }\n                this.CollectionChanged.raise(this, Collections.CollectionChangedEventArgs.AddRange(values, index));\n                this._RaisePropertyChanged(\"Count\");\n            };\n            ObservableCollection.prototype.Insert = function (index, value) {\n                var ht = this._ht;\n                if (index < 0 || index > ht.length)\n                    throw new IndexOutOfRangeException(index);\n                if (index >= ht.length)\n                    ht.push(value);\n                else\n                    ht.splice(index, 0, value);\n                this.CollectionChanged.raise(this, Collections.CollectionChangedEventArgs.Add(value, index));\n                this._RaisePropertyChanged(\"Count\");\n            };\n            ObservableCollection.prototype.IndexOf = function (value) {\n                return this._ht.indexOf(value);\n            };\n            ObservableCollection.prototype.Contains = function (value) {\n                return this._ht.indexOf(value) > -1;\n            };\n            ObservableCollection.prototype.Remove = function (value) {\n                var index = this._ht.indexOf(value);\n                if (index < 0)\n                    return false;\n                this._ht.splice(index, 1);\n                this.CollectionChanged.raise(this, Collections.CollectionChangedEventArgs.Remove(value, index));\n                this._RaisePropertyChanged(\"Count\");\n                return true;\n            };\n            ObservableCollection.prototype.RemoveAt = function (index) {\n                if (index < 0 || index >= this._ht.length)\n                    throw new IndexOutOfRangeException(index);\n                var item = this._ht.splice(index, 1)[0];\n                this.CollectionChanged.raise(this, Collections.CollectionChangedEventArgs.Remove(item, index));\n                this._RaisePropertyChanged(\"Count\");\n            };\n            ObservableCollection.prototype.Clear = function () {\n                var old = this._ht;\n                this._ht = [];\n                this.CollectionChanged.raise(this, Collections.CollectionChangedEventArgs.Reset(old));\n                this._RaisePropertyChanged(\"Count\");\n            };\n            ObservableCollection.prototype._RaisePropertyChanged = function (propertyName) {\n                this.PropertyChanged.raise(this, new Fayde.PropertyChangedEventArgs(propertyName));\n            };\n            return ObservableCollection;\n        })();\n        Collections.ObservableCollection = ObservableCollection;\n        Fayde.CoreLibrary.add(ObservableCollection);\n        nullstone.ICollection_.mark(ObservableCollection);\n    })(Collections = Fayde.Collections || (Fayde.Collections = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ObservableCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Collections;\n    (function (Collections) {\n        var DeepObservableCollection = (function (_super) {\n            __extends(DeepObservableCollection, _super);\n            function DeepObservableCollection() {\n                _super.call(this);\n                this.ItemPropertyChanged = new nullstone.Event();\n                this.CollectionChanged.on(this._OnCollectionChanged, this);\n            }\n            DeepObservableCollection.prototype._OnCollectionChanged = function (sender, e) {\n                if (e.NewItems) {\n                    for (var i = 0; i < e.NewItems.length; i++) {\n                        var notify = Fayde.INotifyPropertyChanged_.as(e.NewItems[i]);\n                        if (notify)\n                            notify.PropertyChanged.on(this._OnItemPropertyChanged, this);\n                    }\n                }\n                if (e.OldItems) {\n                    for (var i = 0; i < e.OldItems.length; i++) {\n                        var notify = Fayde.INotifyPropertyChanged_.as(e.OldItems[i]);\n                        if (notify)\n                            notify.PropertyChanged.off(this._OnItemPropertyChanged, this);\n                    }\n                }\n            };\n            DeepObservableCollection.prototype._OnItemPropertyChanged = function (sender, e) {\n                this.ItemPropertyChanged.raise(this, new Collections.ItemPropertyChangedEventArgs(sender, e.PropertyName));\n            };\n            return DeepObservableCollection;\n        })(Collections.ObservableCollection);\n        Collections.DeepObservableCollection = DeepObservableCollection;\n    })(Collections = Fayde.Collections || (Fayde.Collections = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Collections;\n    (function (Collections) {\n        var FilteredCollection = (function (_super) {\n            __extends(FilteredCollection, _super);\n            function FilteredCollection(filter, source) {\n                _super.call(this);\n                this.Filter = filter;\n                this._SetSource(source || new Collections.DeepObservableCollection());\n            }\n            Object.defineProperty(FilteredCollection.prototype, \"Source\", {\n                get: function () { return this._Source; },\n                set: function (value) { this._SetSource(value); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(FilteredCollection.prototype, \"Filter\", {\n                get: function () {\n                    return this._Filter;\n                },\n                set: function (value) {\n                    this._Filter = value;\n                    this.Update();\n                },\n                enumerable: true,\n                configurable: true\n            });\n            FilteredCollection.prototype._SetSource = function (source) {\n                if (this._Source) {\n                    this._Source.CollectionChanged.off(this._OnSourceCollectionChanged, this);\n                    this._Source.ItemPropertyChanged.off(this._OnSourceItemPropertyChanged, this);\n                }\n                this._Source = source;\n                if (source) {\n                    source.CollectionChanged.on(this._OnSourceCollectionChanged, this);\n                    source.ItemPropertyChanged.on(this._OnSourceItemPropertyChanged, this);\n                }\n                this.Update();\n            };\n            FilteredCollection.prototype._OnSourceCollectionChanged = function (sender, e) {\n                this.Update();\n            };\n            FilteredCollection.prototype._OnSourceItemPropertyChanged = function (sender, e) {\n                this.Update();\n                var index = this.Source.IndexOf(e.Item);\n                if (this.Filter && this.Filter(e.Item, index))\n                    this.ItemPropertyChanged.raise(this, e);\n            };\n            FilteredCollection.prototype.Update = function () {\n                if (!this._Source)\n                    return;\n                var filter = this.Filter || (function (item) { return true; });\n                for (var i = 0, j = 0, enumerator = this._Source.getEnumerator(); enumerator.moveNext(); i++) {\n                    var isIncluded = filter(enumerator.current, i);\n                    var isCurrent = j < this.Count && this.GetValueAt(j) === enumerator.current;\n                    if (isIncluded && !isCurrent)\n                        this.Insert(j, enumerator.current);\n                    else if (!isIncluded && isCurrent)\n                        this.RemoveAt(j);\n                    if (isIncluded)\n                        j++;\n                }\n            };\n            return FilteredCollection;\n        })(Collections.DeepObservableCollection);\n        Collections.FilteredCollection = FilteredCollection;\n    })(Collections = Fayde.Collections || (Fayde.Collections = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/INotifyPropertyChanged.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Collections;\n    (function (Collections) {\n        var ItemPropertyChangedEventArgs = (function (_super) {\n            __extends(ItemPropertyChangedEventArgs, _super);\n            function ItemPropertyChangedEventArgs(item, propertyName) {\n                _super.call(this, propertyName);\n                Object.defineProperty(this, \"Item\", { value: item, writable: false });\n            }\n            return ItemPropertyChangedEventArgs;\n        })(Fayde.PropertyChangedEventArgs);\n        Collections.ItemPropertyChangedEventArgs = ItemPropertyChangedEventArgs;\n    })(Collections = Fayde.Collections || (Fayde.Collections = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Collections;\n    (function (Collections) {\n        var ReadOnlyObservableCollection = (function () {\n            function ReadOnlyObservableCollection(source) {\n                this.CollectionChanged = new nullstone.Event();\n                this.PropertyChanged = new nullstone.Event();\n                this._Source = source;\n                this._Source.CollectionChanged.on(this._OnCollectionChanged, this);\n                this._Source.PropertyChanged.on(this._OnPropertyChanged, this);\n            }\n            Object.defineProperty(ReadOnlyObservableCollection.prototype, \"Count\", {\n                get: function () {\n                    return this._Source.Count;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            ReadOnlyObservableCollection.prototype.GetValueAt = function (index) {\n                return this._Source.GetValueAt(index);\n            };\n            ReadOnlyObservableCollection.prototype.getEnumerator = function () {\n                return this._Source.getEnumerator();\n            };\n            ReadOnlyObservableCollection.prototype.ToArray = function () {\n                return this._Source.ToArray();\n            };\n            ReadOnlyObservableCollection.prototype.IndexOf = function (value) {\n                return this._Source.IndexOf(value);\n            };\n            ReadOnlyObservableCollection.prototype.Contains = function (value) {\n                return this._Source.Contains(value);\n            };\n            ReadOnlyObservableCollection.prototype._OnCollectionChanged = function (sender, args) {\n                this.CollectionChanged.raise(this, args);\n            };\n            ReadOnlyObservableCollection.prototype._OnPropertyChanged = function (sender, args) {\n                this.PropertyChanged.raise(this, args);\n            };\n            ReadOnlyObservableCollection.prototype.SetValueAt = function (index, value) {\n                throw new Error(\"Collection is read only.\");\n            };\n            ReadOnlyObservableCollection.prototype.Insert = function (index, value) {\n                throw new Error(\"Collection is read only.\");\n            };\n            ReadOnlyObservableCollection.prototype.Add = function (value) {\n                throw new Error(\"Collection is read only.\");\n            };\n            ReadOnlyObservableCollection.prototype.Remove = function (value) {\n                throw new Error(\"Collection is read only.\");\n            };\n            ReadOnlyObservableCollection.prototype.RemoveAt = function (index) {\n                throw new Error(\"Collection is read only.\");\n            };\n            ReadOnlyObservableCollection.prototype.Clear = function () {\n                throw new Error(\"Collection is read only.\");\n            };\n            return ReadOnlyObservableCollection;\n        })();\n        Collections.ReadOnlyObservableCollection = ReadOnlyObservableCollection;\n        Fayde.CoreLibrary.add(Collections.ObservableCollection);\n        nullstone.addTypeInterfaces(ReadOnlyObservableCollection, nullstone.ICollection_, Collections.INotifyCollectionChanged_, Fayde.INotifyPropertyChanged_);\n    })(Collections = Fayde.Collections || (Fayde.Collections = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var XamlNode = (function () {\n        function XamlNode(xobj) {\n            this.ParentNode = null;\n            this.Name = \"\";\n            this.NameScope = null;\n            this.DocNameScope = null;\n            this.IsShareable = false;\n            this._OwnerNameScope = null;\n            this._LogicalChildren = [];\n            this._IAMonitors = null;\n            this._DataContext = undefined;\n            this._IsEnabled = true;\n            this.IsAttached = false;\n            this.XObject = xobj;\n        }\n        Object.defineProperty(XamlNode.prototype, \"DataContext\", {\n            get: function () { return this._DataContext; },\n            set: function (value) {\n                var old = this._DataContext;\n                if (old === value)\n                    return;\n                this._DataContext = value;\n                this.OnDataContextChanged(old, value);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        XamlNode.prototype.OnDataContextChanged = function (oldDataContext, newDataContext) {\n            var childNodes = this._LogicalChildren;\n            var len = childNodes.length;\n            var childNode = null;\n            for (var i = 0; i < len; i++) {\n                childNode = childNodes[i];\n                childNode.DataContext = newDataContext;\n            }\n        };\n        Object.defineProperty(XamlNode.prototype, \"IsEnabled\", {\n            get: function () { return this._IsEnabled; },\n            set: function (value) {\n                value = value !== false;\n                var old = this._IsEnabled;\n                if (old === value)\n                    return;\n                this._IsEnabled = value;\n                this.OnIsEnabledChanged(old, value);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        XamlNode.prototype.OnIsEnabledChanged = function (oldValue, newValue) {\n            var childNodes = this._LogicalChildren;\n            var len = childNodes.length;\n            var childNode = null;\n            for (var i = 0; i < len; i++) {\n                childNode = childNodes[i];\n                childNode.IsEnabled = newValue;\n            }\n        };\n        XamlNode.prototype.FindName = function (name, doc) {\n            var scope = this.FindNameScope();\n            var node;\n            if (scope)\n                node = scope.FindName(name);\n            var docscope;\n            ;\n            if (!node && doc && (docscope = this.DocNameScope))\n                node = docscope.FindName(name);\n            return node;\n        };\n        XamlNode.prototype.SetName = function (name) {\n            this.Name = name;\n            var ns = this.FindNameScope();\n            if (ns)\n                ns.RegisterName(name, this);\n        };\n        XamlNode.prototype.FindNameScope = function () {\n            if (this._OwnerNameScope)\n                return this._OwnerNameScope;\n            var curNode = this;\n            var ns;\n            while (curNode) {\n                ns = curNode.NameScope;\n                if (ns) {\n                    this._OwnerNameScope = ns;\n                    return ns;\n                }\n                curNode = curNode.ParentNode;\n            }\n            return undefined;\n        };\n        XamlNode.prototype.SetIsAttached = function (value) {\n            if (this.IsAttached === value)\n                return;\n            this.IsAttached = value;\n            this.OnIsAttachedChanged(value);\n        };\n        XamlNode.prototype.OnIsAttachedChanged = function (newIsAttached) {\n            var xobj = this.XObject;\n            if (newIsAttached && this.ParentNode && !xobj.App) {\n                xobj.App = this.ParentNode.XObject.App;\n            }\n            var childNodes = this._LogicalChildren;\n            var len = childNodes.length;\n            var childNode = null;\n            for (var i = 0; i < len; i++) {\n                childNode = childNodes[i];\n                childNode.SetIsAttached(newIsAttached);\n            }\n            for (var i = 0, monitors = (this._IAMonitors || []).slice(0), len = monitors.length; i < len; i++) {\n                monitors[i].Callback(newIsAttached);\n            }\n            if (!newIsAttached)\n                this._OwnerNameScope = undefined;\n        };\n        XamlNode.prototype.MonitorIsAttached = function (func) {\n            var monitors = this._IAMonitors;\n            if (!monitors)\n                this._IAMonitors = monitors = [];\n            var monitor = {\n                Callback: func,\n                Detach: null\n            };\n            monitor.Detach = function () {\n                var index = monitors.indexOf(monitor);\n                if (index > -1)\n                    monitors.splice(index, 1);\n            };\n            this._IAMonitors.push(monitor);\n            return monitor;\n        };\n        XamlNode.prototype.AttachTo = function (parentNode, error) {\n            if (this.ParentNode && this.IsShareable)\n                return true;\n            var data = {\n                ParentNode: parentNode,\n                ChildNode: this,\n                Name: \"\"\n            };\n            var curNode = parentNode;\n            while (curNode) {\n                if (curNode === this) {\n                    error.Message = \"Cycle found.\";\n                    error.Data = data;\n                    error.Number = BError.Attach;\n                    return false;\n                }\n                curNode = curNode.ParentNode;\n            }\n            if (this.ParentNode) {\n                if (this.ParentNode === parentNode)\n                    return true;\n                error.Message = \"Element is already a child of another element.\";\n                error.Data = data;\n                error.Number = BError.Attach;\n                return false;\n            }\n            var parentScope = parentNode.FindNameScope();\n            var thisScope = this.NameScope;\n            if (thisScope) {\n                if (!thisScope.IsRoot) {\n                    parentScope.Absorb(thisScope);\n                    this.NameScope = null;\n                    this._OwnerNameScope = parentScope;\n                }\n            }\n            else if (parentScope) {\n                var name = this.Name;\n                if (name) {\n                    var existing = parentScope.FindName(name);\n                    if (existing && existing !== this) {\n                        error.Message = \"Name is already registered in parent namescope.\";\n                        data.Name = name;\n                        error.Data = data;\n                        error.Number = BError.Attach;\n                        return false;\n                    }\n                    parentScope.RegisterName(name, this);\n                }\n                this._OwnerNameScope = parentScope;\n            }\n            var old = this.ParentNode;\n            this.ParentNode = parentNode;\n            this.OnParentChanged(old, parentNode);\n            parentNode._LogicalChildren.push(this);\n            this.SetIsAttached(parentNode.IsAttached);\n            return true;\n        };\n        XamlNode.prototype.Detach = function () {\n            var name = this.Name;\n            if (name && !this.NameScope) {\n                var ns = this.FindNameScope();\n                if (ns)\n                    ns.UnregisterName(this.Name);\n            }\n            this._OwnerNameScope = null;\n            this.SetIsAttached(false);\n            var old = this.ParentNode;\n            this.ParentNode = null;\n            if (old) {\n                var index = old._LogicalChildren.indexOf(this);\n                if (index > -1)\n                    old._LogicalChildren.splice(index, 1);\n                this.OnParentChanged(old, null);\n            }\n        };\n        XamlNode.prototype.OnParentChanged = function (oldParentNode, newParentNode) { };\n        XamlNode.prototype.GetInheritedEnumerator = function () { return undefined; };\n        XamlNode.SetShareable = function (xn) {\n            xn.IsShareable = true;\n        };\n        return XamlNode;\n    })();\n    Fayde.XamlNode = XamlNode;\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var XamlObject = (function () {\n        function XamlObject() {\n            this.TemplateOwner = null;\n            this.App = null;\n            this._ID = XamlObject._LastID++;\n            this.XamlNode = this.CreateNode();\n        }\n        XamlObject.prototype.CreateNode = function () {\n            return new Fayde.XamlNode(this);\n        };\n        Object.defineProperty(XamlObject.prototype, \"Name\", {\n            get: function () { return this.XamlNode.Name; },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(XamlObject.prototype, \"Parent\", {\n            get: function () {\n                var pn = this.XamlNode.ParentNode;\n                if (!pn)\n                    return;\n                return pn.XObject;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        XamlObject.prototype.FindName = function (name, doc) {\n            var n = this.XamlNode.FindName(name, doc);\n            return n ? n.XObject : undefined;\n        };\n        XamlObject.prototype.Clone = function () {\n            var xobj = new this.constructor();\n            xobj.CloneCore(this);\n            return xobj;\n        };\n        XamlObject.prototype.CloneCore = function (source) { };\n        XamlObject.prototype.IsInheritable = function (propd) { return false; };\n        XamlObject._LastID = 0;\n        return XamlObject;\n    })();\n    Fayde.XamlObject = XamlObject;\n    Fayde.CoreLibrary.add(XamlObject);\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        (function (PropertyPrecedence) {\n            PropertyPrecedence[PropertyPrecedence[\"IsEnabled\"] = 0] = \"IsEnabled\";\n            PropertyPrecedence[PropertyPrecedence[\"LocalValue\"] = 1] = \"LocalValue\";\n            PropertyPrecedence[PropertyPrecedence[\"LocalStyle\"] = 2] = \"LocalStyle\";\n            PropertyPrecedence[PropertyPrecedence[\"ImplicitStyle\"] = 3] = \"ImplicitStyle\";\n            PropertyPrecedence[PropertyPrecedence[\"Inherited\"] = 4] = \"Inherited\";\n            PropertyPrecedence[PropertyPrecedence[\"InheritedDataContext\"] = 5] = \"InheritedDataContext\";\n            PropertyPrecedence[PropertyPrecedence[\"DefaultValue\"] = 6] = \"DefaultValue\";\n            PropertyPrecedence[PropertyPrecedence[\"Lowest\"] = 6] = \"Lowest\";\n            PropertyPrecedence[PropertyPrecedence[\"Highest\"] = 0] = \"Highest\";\n            PropertyPrecedence[PropertyPrecedence[\"Count\"] = 7] = \"Count\";\n        })(Providers.PropertyPrecedence || (Providers.PropertyPrecedence = {}));\n        var PropertyPrecedence = Providers.PropertyPrecedence;\n        function GetStorage(dobj, propd) {\n            var arr = dobj._PropertyStorage;\n            var storage = arr[propd._ID];\n            if (!storage)\n                arr[propd._ID] = storage = propd.Store.CreateStorage(dobj, propd);\n            return storage;\n        }\n        Providers.GetStorage = GetStorage;\n        var PropertyStore = (function () {\n            function PropertyStore() {\n            }\n            PropertyStore.prototype.GetValue = function (storage) {\n                var val;\n                if ((val = storage.Local) !== undefined)\n                    return val;\n                if ((val = storage.LocalStyleValue) !== undefined)\n                    return val;\n                if ((val = storage.ImplicitStyleValue) !== undefined)\n                    return val;\n                return storage.Property.DefaultValue;\n            };\n            PropertyStore.prototype.GetValuePrecedence = function (storage) {\n                if (storage.Local !== undefined)\n                    return PropertyPrecedence.LocalValue;\n                if (storage.LocalStyleValue !== undefined)\n                    return PropertyPrecedence.LocalStyle;\n                if (storage.ImplicitStyleValue !== undefined)\n                    return PropertyPrecedence.ImplicitStyle;\n                return PropertyPrecedence.DefaultValue;\n            };\n            PropertyStore.prototype.SetLocalValue = function (storage, newValue) {\n                if (newValue === undefined || newValue === DependencyProperty.UnsetValue) {\n                    this.ClearValue(storage);\n                    return;\n                }\n                var propd = storage.Property;\n                if (newValue && propd.GetTargetType() === String) {\n                    if (typeof newValue !== \"string\")\n                        newValue = newValue.toString();\n                }\n                var isValidOut = { IsValid: false };\n                newValue = propd.ValidateSetValue(storage.OwnerNode.XObject, newValue, isValidOut);\n                if (!isValidOut.IsValid)\n                    return;\n                var precDiff = storage.Precedence - PropertyPrecedence.LocalValue;\n                if (!propd.AlwaysChange && precDiff < 0) {\n                    storage.Local = newValue;\n                    return;\n                }\n                var oldValue = undefined;\n                if (precDiff > 0)\n                    oldValue = this.GetValue(storage);\n                else\n                    oldValue = storage.Local;\n                storage.Local = newValue;\n                this.OnPropertyChanged(storage, PropertyPrecedence.LocalValue, oldValue, newValue);\n            };\n            PropertyStore.prototype.SetLocalStyleValue = function (storage, newValue) {\n                var precDiff = storage.Precedence - PropertyPrecedence.LocalStyle;\n                if (precDiff < 0) {\n                    storage.LocalStyleValue = newValue;\n                    return;\n                }\n                var oldValue = undefined;\n                if (precDiff > 0)\n                    oldValue = this.GetValue(storage);\n                else\n                    oldValue = storage.LocalStyleValue;\n                storage.LocalStyleValue = newValue;\n                this.OnPropertyChanged(storage, PropertyPrecedence.LocalStyle, oldValue, newValue);\n            };\n            PropertyStore.prototype.SetImplicitStyle = function (storage, newValue) {\n                var precDiff = storage.Precedence - PropertyPrecedence.ImplicitStyle;\n                if (precDiff < 0) {\n                    storage.ImplicitStyleValue = newValue;\n                    return;\n                }\n                var oldValue = undefined;\n                if (precDiff > 0)\n                    oldValue = this.GetValue(storage);\n                else\n                    oldValue = storage.ImplicitStyleValue;\n                storage.ImplicitStyleValue = newValue;\n                this.OnPropertyChanged(storage, PropertyPrecedence.ImplicitStyle, oldValue, newValue);\n            };\n            PropertyStore.prototype.ClearValue = function (storage) {\n                var oldLocal = storage.Local;\n                if (oldLocal === undefined)\n                    return;\n                storage.Local = undefined;\n                this.OnPropertyChanged(storage, PropertyPrecedence.LocalValue, oldLocal, undefined);\n            };\n            PropertyStore.prototype.OnPropertyChanged = function (storage, effectivePrecedence, oldValue, newValue) {\n                var propd = storage.Property;\n                if (newValue === undefined) {\n                    effectivePrecedence = this.GetValuePrecedence(storage);\n                    newValue = this.GetValue(storage);\n                }\n                storage.Precedence = effectivePrecedence;\n                if (!propd.AlwaysChange && oldValue === newValue)\n                    return undefined;\n                if (!storage.Property.IsCustom) {\n                    if (oldValue instanceof Fayde.XamlObject)\n                        oldValue.XamlNode.Detach();\n                    if (newValue instanceof Fayde.XamlObject) {\n                        var error = new BError();\n                        if (!newValue.XamlNode.AttachTo(storage.OwnerNode, error))\n                            error.ThrowException();\n                    }\n                }\n                var args = {\n                    Property: propd,\n                    OldValue: oldValue,\n                    NewValue: newValue\n                };\n                var sender = storage.OwnerNode.XObject;\n                if (propd.ChangedCallback)\n                    propd.ChangedCallback(sender, args);\n                var listeners = storage.PropListeners;\n                if (listeners) {\n                    var len = listeners.length;\n                    for (var i = 0; i < len; i++) {\n                        listeners[i].OnPropertyChanged(sender, args);\n                    }\n                }\n                return args;\n            };\n            PropertyStore.prototype.ListenToChanged = function (target, propd, func, closure) {\n                var storage = GetStorage(target, propd);\n                var listeners = storage.PropListeners;\n                if (!listeners)\n                    listeners = storage.PropListeners = [];\n                var listener = {\n                    Detach: function () {\n                        var index = listeners.indexOf(listener);\n                        if (index > -1)\n                            listeners.splice(index, 1);\n                    },\n                    Property: propd,\n                    OnPropertyChanged: function (sender, args) { func.call(closure, sender, args); }\n                };\n                listeners.push(listener);\n                return listener;\n            };\n            PropertyStore.prototype.CreateStorage = function (dobj, propd) {\n                return {\n                    OwnerNode: dobj.XamlNode,\n                    Property: propd,\n                    Precedence: PropertyPrecedence.DefaultValue,\n                    Animations: undefined,\n                    Local: undefined,\n                    LocalStyleValue: undefined,\n                    ImplicitStyleValue: undefined,\n                    PropListeners: undefined,\n                };\n            };\n            PropertyStore.prototype.Clone = function (dobj, sourceStorage) {\n                var newStorage = this.CreateStorage(dobj, sourceStorage.Property);\n                newStorage.Precedence = sourceStorage.Precedence;\n                newStorage.Local = Fayde.Clone(sourceStorage.Local);\n                var anims = newStorage.Animations = sourceStorage.Animations;\n                if (anims) {\n                    for (var i = 0; i < anims.length; i++) {\n                        anims[i].PropStorage = newStorage;\n                    }\n                }\n                return newStorage;\n            };\n            return PropertyStore;\n        })();\n        Providers.PropertyStore = PropertyStore;\n        PropertyStore.Instance = new PropertyStore();\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"PropertyStore.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        var ImmutableStore = (function (_super) {\n            __extends(ImmutableStore, _super);\n            function ImmutableStore() {\n                _super.apply(this, arguments);\n            }\n            ImmutableStore.prototype.GetValue = function (storage) {\n                return storage.Local;\n            };\n            ImmutableStore.prototype.GetValuePrecedence = function (storage) {\n                return Providers.PropertyPrecedence.LocalValue;\n            };\n            ImmutableStore.prototype.SetLocalValue = function (storage, newValue) {\n                console.warn(\"Trying to set value for immutable property.\");\n            };\n            ImmutableStore.prototype.ClearValue = function (storage) {\n                console.warn(\"Trying to clear value for immutable property.\");\n            };\n            ImmutableStore.prototype.ListenToChanged = function (target, propd, func, closure) {\n                return {\n                    Property: propd,\n                    OnPropertyChanged: function (sender, args) { },\n                    Detach: function () { }\n                };\n            };\n            ImmutableStore.prototype.Clone = function (dobj, sourceStorage) {\n                if (sourceStorage.Local instanceof Fayde.XamlObjectCollection) {\n                    var newStorage = Providers.GetStorage(dobj, sourceStorage.Property);\n                    var newColl = newStorage.Local;\n                    newColl.CloneCore(sourceStorage.Local);\n                    var anims = newStorage.Animations = sourceStorage.Animations;\n                    if (anims) {\n                        for (var i = 0; i < anims.length; i++) {\n                            anims[i].PropStorage = newStorage;\n                        }\n                    }\n                    return newStorage;\n                }\n                else {\n                    console.warn(\"Cloning Immutable improperly\");\n                    return _super.prototype.Clone.call(this, dobj, sourceStorage);\n                }\n            };\n            return ImmutableStore;\n        })(Providers.PropertyStore);\n        Providers.ImmutableStore = ImmutableStore;\n        ImmutableStore.Instance = new ImmutableStore();\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Providers/ImmutableStore.ts\" />\nvar DependencyProperty = (function () {\n    function DependencyProperty() {\n        this.IsReadOnly = false;\n        this.IsCustom = true;\n        this.IsAttached = false;\n        this.IsInheritable = false;\n        this.IsImmutable = false;\n        this.AlwaysChange = false;\n        this._Coercer = null;\n        this._Validator = null;\n    }\n    DependencyProperty.Register = function (name, getTargetType, ownerType, defaultValue, changedCallback) {\n        var propd = new DependencyProperty();\n        propd.Name = name;\n        propd.GetTargetType = getTargetType;\n        propd.OwnerType = ownerType;\n        propd.DefaultValue = defaultValue;\n        propd.ChangedCallback = changedCallback;\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\n        propd.FinishRegister();\n        return propd;\n    };\n    DependencyProperty.RegisterReadOnly = function (name, getTargetType, ownerType, defaultValue, changedCallback) {\n        var propd = new DependencyProperty();\n        propd.Name = name;\n        propd.GetTargetType = getTargetType;\n        propd.OwnerType = ownerType;\n        propd.DefaultValue = defaultValue;\n        propd.ChangedCallback = changedCallback;\n        propd.IsReadOnly = true;\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\n        propd.FinishRegister();\n        return propd;\n    };\n    DependencyProperty.RegisterAttached = function (name, getTargetType, ownerType, defaultValue, changedCallback) {\n        var propd = new DependencyProperty();\n        propd.Name = name;\n        propd.GetTargetType = getTargetType;\n        propd.OwnerType = ownerType;\n        propd.DefaultValue = defaultValue;\n        propd.ChangedCallback = changedCallback;\n        propd.IsAttached = true;\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\n        propd.FinishRegister();\n        return propd;\n    };\n    DependencyProperty.RegisterCore = function (name, getTargetType, ownerType, defaultValue, changedCallback) {\n        var propd = new DependencyProperty();\n        propd.Name = name;\n        propd.GetTargetType = getTargetType;\n        propd.OwnerType = ownerType;\n        propd.DefaultValue = defaultValue;\n        propd.ChangedCallback = changedCallback;\n        propd.IsCustom = false;\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\n        propd.FinishRegister();\n        return propd;\n    };\n    DependencyProperty.RegisterReadOnlyCore = function (name, getTargetType, ownerType, defaultValue, changedCallback) {\n        var propd = new DependencyProperty();\n        propd.Name = name;\n        propd.GetTargetType = getTargetType;\n        propd.OwnerType = ownerType;\n        propd.DefaultValue = defaultValue;\n        propd.ChangedCallback = changedCallback;\n        propd.IsCustom = false;\n        propd.IsReadOnly = true;\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\n        propd.FinishRegister();\n        return propd;\n    };\n    DependencyProperty.RegisterAttachedCore = function (name, getTargetType, ownerType, defaultValue, changedCallback) {\n        var propd = new DependencyProperty();\n        propd.Name = name;\n        propd.GetTargetType = getTargetType;\n        propd.OwnerType = ownerType;\n        propd.DefaultValue = defaultValue;\n        propd.ChangedCallback = changedCallback;\n        propd.IsCustom = false;\n        propd.IsAttached = true;\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\n        propd.FinishRegister();\n        return propd;\n    };\n    DependencyProperty.RegisterImmutable = function (name, getTargetType, ownerType) {\n        var propd = new ImmutableDependencyProperty();\n        propd.Name = name;\n        propd.GetTargetType = getTargetType;\n        propd.OwnerType = ownerType;\n        propd.DefaultValue = undefined;\n        propd.IsImmutable = true;\n        propd.Store = Fayde.Providers.ImmutableStore.Instance;\n        propd.FinishRegister();\n        return propd;\n    };\n    DependencyProperty.RegisterInheritable = function (name, getTargetType, ownerType, defaultValue, changedCallback) {\n        var propd = new DependencyProperty();\n        propd.Name = name;\n        propd.GetTargetType = getTargetType;\n        propd.OwnerType = ownerType;\n        propd.DefaultValue = defaultValue;\n        propd.ChangedCallback = changedCallback;\n        propd.IsCustom = true;\n        propd.IsInheritable = true;\n        propd.Store = Fayde.Providers.InheritedStore.Instance;\n        propd.FinishRegister();\n        return propd;\n    };\n    DependencyProperty.RegisterFull = function (name, getTargetType, ownerType, defaultValue, changedCallback, coercer, alwaysChange, validator, isCustom, isReadOnly, isAttached) {\n        var propd = new DependencyProperty();\n        propd.Name = name;\n        propd.GetTargetType = getTargetType;\n        propd.OwnerType = ownerType;\n        propd.DefaultValue = defaultValue;\n        propd.ChangedCallback = changedCallback;\n        propd._Coercer = coercer;\n        propd.AlwaysChange = alwaysChange;\n        propd._Validator = validator;\n        propd.IsCustom = isCustom !== false;\n        propd.IsReadOnly = isReadOnly === true;\n        propd.IsAttached = isAttached === true;\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\n        propd.FinishRegister();\n        return propd;\n    };\n    DependencyProperty.prototype.FinishRegister = function () {\n        var name = this.Name;\n        var ownerType = this.OwnerType;\n        if (!ownerType || typeof ownerType !== \"function\")\n            throw new InvalidOperationException(\"DependencyProperty does not have a valid OwnerType.\");\n        var registeredDPs = ownerType._RegisteredDPs;\n        if (!registeredDPs) {\n            var registeredDPs = {};\n            Object.defineProperty(ownerType, \"_RegisteredDPs\", {\n                value: registeredDPs,\n                enumerable: false,\n                writable: false\n            });\n        }\n        if (registeredDPs[name] !== undefined)\n            throw new InvalidOperationException(\"Dependency Property is already registered. [\" + name + \"]\");\n        registeredDPs[name] = this;\n        this._ID = DependencyProperty._LastID = DependencyProperty._LastID + 1;\n        DependencyProperty._IDs[this._ID] = this;\n        if (this.IsImmutable)\n            return;\n        var propd = this;\n        var getter = function () {\n            return this.GetValue(propd);\n        };\n        var setter = function (value) {\n            this.SetValue(propd, value);\n        };\n        if (this.IsReadOnly)\n            setter = function (value) {\n                throw new Exception(\"Property [\" + propd.Name + \"] is readonly.\");\n            };\n        Object.defineProperty(ownerType.prototype, this.Name, {\n            get: getter,\n            set: setter,\n            configurable: true\n        });\n    };\n    DependencyProperty.prototype.ExtendTo = function (type) {\n        var registeredDPs = type._RegisteredDPs;\n        if (!registeredDPs) {\n            var registeredDPs = {};\n            Object.defineProperty(type, \"_RegisteredDPs\", {\n                value: registeredDPs,\n                enumerable: false,\n                writable: false\n            });\n        }\n        registeredDPs[this.Name] = this;\n        var propd = this;\n        var getter = function () {\n            return this.GetValue(propd);\n        };\n        var setter = function (value) {\n            this.SetValue(propd, value);\n        };\n        Object.defineProperty(type.prototype, this.Name, {\n            get: getter,\n            set: setter,\n            configurable: true\n        });\n        return this;\n    };\n    DependencyProperty.prototype.ValidateSetValue = function (dobj, value, isValidOut) {\n        var coerced = value;\n        if (this._Coercer)\n            coerced = this._Coercer(dobj, this, coerced);\n        isValidOut.IsValid = true;\n        if (this._Validator)\n            isValidOut.IsValid = !!this._Validator(dobj, this, coerced, value);\n        return coerced;\n    };\n    DependencyProperty.GetDependencyProperty = function (ownerType, name, noError) {\n        if (!ownerType)\n            return undefined;\n        var reg = ownerType._RegisteredDPs;\n        var propd;\n        if (reg)\n            propd = reg[name];\n        if (!propd)\n            propd = DependencyProperty.GetDependencyProperty(nullstone.getTypeParent(ownerType), name, true);\n        if (!propd && !noError)\n            throw new Exception(\"Cannot locate dependency property [\" + ownerType.name + \"].[\" + name + \"]\");\n        return propd;\n    };\n    DependencyProperty.UnsetValue = {};\n    DependencyProperty._IDs = [];\n    DependencyProperty._LastID = 0;\n    return DependencyProperty;\n})();\nFayde.CoreLibrary.add(DependencyProperty);\nvar ImmutableDependencyProperty = (function (_super) {\n    __extends(ImmutableDependencyProperty, _super);\n    function ImmutableDependencyProperty() {\n        _super.apply(this, arguments);\n        this.IsImmutable = true;\n    }\n    ImmutableDependencyProperty.prototype.Initialize = function (dobj) {\n        var storage = Fayde.Providers.GetStorage(dobj, this);\n        storage.Precedence = Fayde.Providers.PropertyPrecedence.LocalValue;\n        var type = this.GetTargetType();\n        var obj = new type();\n        Object.defineProperty(dobj, this.Name, {\n            value: obj,\n            writable: false\n        });\n        return storage.Local = obj;\n    };\n    return ImmutableDependencyProperty;\n})(DependencyProperty);\n/// <reference path=\"PropertyStore.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        var DataContextStore = (function (_super) {\n            __extends(DataContextStore, _super);\n            function DataContextStore() {\n                _super.apply(this, arguments);\n            }\n            DataContextStore.prototype.GetValue = function (storage) {\n                var val = _super.prototype.GetValue.call(this, storage);\n                if (val === undefined)\n                    val = storage.InheritedValue;\n                return val;\n            };\n            DataContextStore.prototype.GetValuePrecedence = function (storage) {\n                var prec = _super.prototype.GetValuePrecedence.call(this, storage);\n                if (prec < Providers.PropertyPrecedence.InheritedDataContext)\n                    return prec;\n                if (storage.InheritedValue !== undefined)\n                    return Providers.PropertyPrecedence.InheritedDataContext;\n                return Providers.PropertyPrecedence.DefaultValue;\n            };\n            DataContextStore.prototype.OnInheritedChanged = function (storage, newInherited) {\n                var oldInherited = storage.InheritedValue;\n                storage.InheritedValue = newInherited;\n                if (storage.Precedence >= Providers.PropertyPrecedence.InheritedDataContext && oldInherited !== newInherited)\n                    this.OnPropertyChanged(storage, Providers.PropertyPrecedence.InheritedDataContext, oldInherited, newInherited);\n            };\n            DataContextStore.prototype.CreateStorage = function (dobj, propd) {\n                return {\n                    OwnerNode: dobj.XamlNode,\n                    Property: propd,\n                    Precedence: Providers.PropertyPrecedence.DefaultValue,\n                    Animations: undefined,\n                    Local: undefined,\n                    LocalStyleValue: undefined,\n                    ImplicitStyleValue: undefined,\n                    InheritedValue: undefined,\n                    PropListeners: undefined,\n                };\n            };\n            DataContextStore.prototype.OnPropertyChanged = function (storage, effectivePrecedence, oldValue, newValue) {\n                var args = _super.prototype.OnPropertyChanged.call(this, storage, effectivePrecedence, oldValue, newValue);\n                if (args) {\n                    if (effectivePrecedence > Providers.PropertyPrecedence.LocalValue && this.TryUpdateDataContextExpression(storage, args.NewValue))\n                        return;\n                    storage.OwnerNode.OnDataContextChanged(args.OldValue, args.NewValue);\n                }\n                return args;\n            };\n            DataContextStore.prototype.TryUpdateDataContextExpression = function (storage, newDataContext) {\n                var val = storage.InheritedValue;\n                var exprs = storage.OwnerNode.XObject._Expressions;\n                var dcexpr = exprs[storage.Property._ID];\n                if (!dcexpr)\n                    return false;\n                dcexpr.OnDataContextChanged(newDataContext);\n                return true;\n            };\n            return DataContextStore;\n        })(Providers.PropertyStore);\n        Providers.DataContextStore = DataContextStore;\n        DataContextStore.Instance = new DataContextStore();\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    function DPReaction(propd, callback, listen) {\n        if (listen === false) {\n            propd.ChangedCallback = reaction(callback);\n        }\n        else {\n            propd.ChangedCallback = lReaction(callback);\n        }\n    }\n    Fayde.DPReaction = DPReaction;\n    function reaction(callback) {\n        return function (dobj, args) {\n            callback && callback(dobj, args.OldValue, args.NewValue);\n        };\n    }\n    function lReaction(callback) {\n        return function (dobj, args) {\n            var ov = args.OldValue;\n            var nv = args.NewValue;\n            Fayde.UnreactTo(ov, dobj);\n            callback && callback(dobj, ov, nv);\n            Fayde.ReactTo(nv, dobj, function () { return callback(dobj, nv, nv); });\n        };\n    }\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    function Incite(obj, val) {\n        if (!obj)\n            return;\n        var reactions = obj.$$reactions;\n        if (!reactions)\n            return;\n        var rs = obj.$$reaction_sources;\n        for (var i = 0; i < reactions.length; i++) {\n            reactions[i].call(rs[i], val);\n        }\n    }\n    Fayde.Incite = Incite;\n    function ReactTo(obj, scope, changed) {\n        if (!obj)\n            return;\n        var rs = obj.$$reaction_sources;\n        if (!rs) {\n            rs = [];\n            Object.defineProperty(obj, \"$$reaction_sources\", { value: rs, enumerable: false });\n        }\n        rs.push(scope);\n        var reactions = obj.$$reactions;\n        if (!reactions) {\n            reactions = [];\n            Object.defineProperty(obj, \"$$reactions\", { value: reactions, enumerable: false });\n        }\n        reactions.push(changed);\n    }\n    Fayde.ReactTo = ReactTo;\n    function UnreactTo(obj, scope) {\n        if (!obj)\n            return;\n        var reactions = obj.$$reactions;\n        if (!reactions)\n            return;\n        var rs = obj.$$reaction_sources;\n        var index = rs.indexOf(scope);\n        if (index < 0)\n            return;\n        rs.splice(index, 1);\n        reactions.splice(index, 1);\n    }\n    Fayde.UnreactTo = UnreactTo;\n})(Fayde || (Fayde = {}));\n/// <reference path=\"XamlNode.ts\" />\n/// <reference path=\"XamlObject.ts\" />\n/// <reference path=\"DependencyProperty.ts\" />\n/// <reference path=\"Providers/PropertyStore.ts\" />\n/// <reference path=\"Providers/DataContextStore.ts\" />\n/// <reference path=\"DPReaction.ts\" />\n/// <reference path=\"../Runtime/React.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var DONode = (function (_super) {\n        __extends(DONode, _super);\n        function DONode(xobj) {\n            _super.call(this, xobj);\n        }\n        DONode.prototype.OnParentChanged = function (oldParentNode, newParentNode) {\n            _super.prototype.OnParentChanged.call(this, oldParentNode, newParentNode);\n            var propd = DependencyObject.DataContextProperty;\n            var storage = Fayde.Providers.GetStorage(this.XObject, propd);\n            var newInherited = newParentNode ? newParentNode.DataContext : undefined;\n            propd.Store.OnInheritedChanged(storage, newInherited);\n        };\n        Object.defineProperty(DONode.prototype, \"DataContext\", {\n            get: function () { return this.XObject.DataContext; },\n            set: function (value) {\n                var propd = DependencyObject.DataContextProperty;\n                var storage = Fayde.Providers.GetStorage(this.XObject, propd);\n                propd.Store.OnInheritedChanged(storage, value);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        DONode.prototype.OnDataContextChanged = function (oldDataContext, newDataContext) {\n            var dcpid = DependencyObject.DataContextProperty._ID.toString();\n            var exprs = this.XObject._Expressions;\n            var expr;\n            for (var id in exprs) {\n                expr = exprs[id];\n                if (!(expr instanceof Fayde.Expression))\n                    continue;\n                if (id === dcpid)\n                    continue;\n                expr.OnDataContextChanged(newDataContext);\n            }\n            _super.prototype.OnDataContextChanged.call(this, oldDataContext, newDataContext);\n        };\n        return DONode;\n    })(Fayde.XamlNode);\n    Fayde.DONode = DONode;\n    var DependencyObject = (function (_super) {\n        __extends(DependencyObject, _super);\n        function DependencyObject() {\n            _super.call(this);\n            this._Expressions = [];\n            this._PropertyStorage = [];\n        }\n        DependencyObject.prototype.CreateNode = function () { return new DONode(this); };\n        DependencyObject.prototype.GetValue = function (propd) {\n            if (!propd)\n                throw new ArgumentException(\"No property specified.\");\n            var storage = Fayde.Providers.GetStorage(this, propd);\n            return propd.Store.GetValue(storage);\n        };\n        DependencyObject.prototype.SetValue = function (propd, value) {\n            if (!propd)\n                throw new ArgumentException(\"No property specified.\");\n            if (propd.IsReadOnly)\n                throw new InvalidOperationException(\"DependencyProperty '\" + propd.OwnerType.name + \".\" + propd.Name + \"' is read only.\");\n            this.SetValueInternal(propd, value);\n        };\n        DependencyObject.prototype.SetValueInternal = function (propd, value) {\n            var expression;\n            if (value instanceof Fayde.Expression) {\n                expression = value;\n                expression.Seal(this, propd);\n            }\n            var existing = this._Expressions[propd._ID];\n            var updateTwoWay = false;\n            var addingExpression = false;\n            if (expression) {\n                if (expression !== existing) {\n                    if (expression.IsAttached)\n                        throw new ArgumentException(\"Cannot attach the same Expression to multiple FrameworkElements\");\n                    if (existing)\n                        this._RemoveExpression(propd);\n                    this._AddExpression(propd, expression);\n                }\n                addingExpression = true;\n                value = expression.GetValue(propd);\n            }\n            else if (existing) {\n                if (existing instanceof Fayde.Data.BindingExpressionBase) {\n                    var binding = existing.ParentBinding;\n                    if (binding.Mode === Fayde.Data.BindingMode.TwoWay) {\n                        updateTwoWay = !existing.IsUpdating && !propd.IsCustom;\n                    }\n                    else if (!existing.IsUpdating || binding.Mode === Fayde.Data.BindingMode.OneTime) {\n                        this._RemoveExpression(propd);\n                    }\n                }\n                else if (!existing.IsUpdating) {\n                    this._RemoveExpression(propd);\n                }\n            }\n            var storage = Fayde.Providers.GetStorage(this, propd);\n            try {\n                propd.Store.SetLocalValue(storage, value);\n                if (updateTwoWay)\n                    existing._TryUpdateSourceObject(value);\n            }\n            catch (err) {\n                if (!addingExpression)\n                    throw err;\n                var msg = \"Error setting value: \" + err.toString();\n                msg += err.stack;\n                console.warn(msg);\n                propd.Store.SetLocalValue(storage, propd.DefaultValue);\n                if (updateTwoWay)\n                    existing._TryUpdateSourceObject(value);\n            }\n        };\n        DependencyObject.prototype.SetCurrentValue = function (propd, value) {\n            var storage = Fayde.Providers.GetStorage(this, propd);\n            propd.Store.SetLocalValue(storage, value);\n            var expr = this._Expressions[propd._ID];\n            if (expr instanceof Fayde.Data.BindingExpressionBase)\n                expr._TryUpdateSourceObject(value);\n        };\n        DependencyObject.prototype.ClearValue = function (propd) {\n            if (!propd)\n                throw new ArgumentException(\"No dependency property.\");\n            if (propd.IsReadOnly && !propd.IsCustom)\n                throw new ArgumentException(\"This property is readonly.\");\n            this._RemoveExpression(propd);\n            var storage = Fayde.Providers.GetStorage(this, propd);\n            var anims = storage.Animations;\n            if (anims && anims.length > 0)\n                return;\n            propd.Store.ClearValue(storage);\n        };\n        DependencyObject.prototype.ReadLocalValue = function (propd) {\n            if (!propd)\n                throw new ArgumentException(\"No property specified.\");\n            var expr = this._Expressions[propd._ID];\n            var val;\n            if (expr)\n                val = expr.GetValue(propd);\n            else\n                val = this.ReadLocalValueInternal(propd);\n            if (val === undefined)\n                return DependencyProperty.UnsetValue;\n            return val;\n        };\n        DependencyObject.prototype.ReadLocalValueInternal = function (propd) {\n            var storage = Fayde.Providers.GetStorage(this, propd);\n            return storage.Local;\n        };\n        DependencyObject.prototype._AddExpression = function (propd, expr) {\n            this._Expressions[propd._ID] = expr;\n            expr.OnAttached(this);\n        };\n        DependencyObject.prototype._RemoveExpression = function (propd) {\n            var expr = this._Expressions[propd._ID];\n            if (expr) {\n                this._Expressions[propd._ID] = undefined;\n                expr.OnDetached(this);\n            }\n        };\n        DependencyObject.prototype._HasDeferredValueExpression = function (propd) {\n            var expr = this._Expressions[propd._ID];\n            return expr instanceof Fayde.DeferredValueExpression;\n        };\n        DependencyObject.prototype.GetBindingExpression = function (propd) {\n            var expr = this._Expressions[propd._ID];\n            if (expr instanceof Fayde.Data.BindingExpressionBase)\n                return expr;\n        };\n        DependencyObject.prototype.HasValueOrExpression = function (propd) {\n            if (this._Expressions[propd._ID] instanceof Fayde.Expression)\n                return true;\n            return this.ReadLocalValueInternal(propd) !== undefined;\n        };\n        DependencyObject.prototype.SetBinding = function (propd, binding) {\n            if (!propd)\n                throw new ArgumentException(\"propd\");\n            if (!binding)\n                throw new ArgumentException(\"binding\");\n            var e = new Fayde.Data.BindingExpression(binding);\n            this.SetValueInternal(propd, e);\n            return e;\n        };\n        DependencyObject.prototype.CloneCore = function (source) {\n            var sarr = source._PropertyStorage;\n            var darr = this._PropertyStorage;\n            if (!darr)\n                darr = this._PropertyStorage = [];\n            for (var id in sarr) {\n                var storage = sarr[id];\n                darr[id] = storage.Property.Store.Clone(this, storage);\n            }\n        };\n        DependencyObject.prototype.ListenToChanged = function (propd, func, closure) {\n            return propd.Store.ListenToChanged(this, propd, func, closure);\n        };\n        DependencyObject.DataContextProperty = DependencyProperty.Register(\"DataContext\", function () { return Object; }, DependencyObject);\n        return DependencyObject;\n    })(Fayde.XamlObject);\n    Fayde.DependencyObject = DependencyObject;\n    Fayde.CoreLibrary.add(DependencyObject);\n    DependencyObject.DataContextProperty.Store = Fayde.Providers.DataContextStore.Instance;\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    function UIReaction(propd, callback, listen, sync, instance) {\n        var changed;\n        if (sync === false) {\n            changed = (listen === false) ? reaction(callback) : lReaction(callback);\n        }\n        else {\n            var name = propd.Name;\n            name = name.charAt(0).toLowerCase() + name.substr(1);\n            if (typeof sync !== \"function\")\n                changed = (listen === false) ? sReaction(callback, name) : slReaction(callback, name);\n            else\n                changed = (listen === false) ? sReaction(callback, name, sync) : slReaction(callback, name, sync);\n        }\n        if (instance)\n            propd.Store.ListenToChanged(instance, propd, changed, instance);\n        else\n            propd.ChangedCallback = changed;\n    }\n    Fayde.UIReaction = UIReaction;\n    function reaction(callback) {\n        return function (uie, args) {\n            callback && callback(uie.XamlNode.LayoutUpdater, args.OldValue, args.NewValue, uie);\n        };\n    }\n    function sReaction(callback, name, syncer) {\n        return function (uie, args) {\n            var ov = args.OldValue;\n            var nv = args.NewValue;\n            var upd = uie.XamlNode.LayoutUpdater;\n            if (!syncer)\n                upd.assets[name] = nv;\n            else\n                syncer(nv, upd.assets[name]);\n            callback && callback(upd, ov, nv, uie);\n        };\n    }\n    function lReaction(callback) {\n        return function (uie, args) {\n            var ov = args.OldValue;\n            var nv = args.NewValue;\n            var upd = uie.XamlNode.LayoutUpdater;\n            Fayde.UnreactTo(ov, uie);\n            callback && callback(upd, ov, nv, uie);\n            Fayde.ReactTo(nv, uie, function () { return callback(upd, nv, nv, uie); });\n        };\n    }\n    function slReaction(callback, name, syncer) {\n        return function (uie, args) {\n            var ov = args.OldValue;\n            var nv = args.NewValue;\n            var upd = uie.XamlNode.LayoutUpdater;\n            Fayde.UnreactTo(ov, uie);\n            if (!syncer)\n                upd.assets[name] = nv;\n            else\n                syncer(nv, upd.assets[name]);\n            callback && callback(upd, ov, nv, uie);\n            Fayde.ReactTo(nv, uie, function () { return callback && callback(upd, nv, nv, uie); });\n        };\n    }\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    function UIReactionAttached(propd, callback) {\n        propd.ChangedCallback = reaction(nullstone.getTypeName(propd.OwnerType) + '.' + propd.Name, callback);\n    }\n    Fayde.UIReactionAttached = UIReactionAttached;\n    function reaction(name, callback) {\n        return function (uie, args) {\n            var ov = args.OldValue;\n            var nv = args.NewValue;\n            var upd = uie.XamlNode.LayoutUpdater;\n            upd.setAttachedValue(name, nv);\n            callback && callback(upd, ov, nv, uie);\n        };\n    }\n})(Fayde || (Fayde = {}));\n/// <reference path=\"PropertyStore.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        var InheritedStore = (function (_super) {\n            __extends(InheritedStore, _super);\n            function InheritedStore() {\n                _super.apply(this, arguments);\n            }\n            InheritedStore.prototype.GetValue = function (storage) {\n                var val;\n                if ((val = storage.Local) !== undefined)\n                    return val;\n                if ((val = storage.LocalStyleValue) !== undefined)\n                    return val;\n                if ((val = storage.ImplicitStyleValue) !== undefined)\n                    return val;\n                if ((val = storage.InheritedValue) !== undefined)\n                    return val;\n                return storage.Property.DefaultValue;\n            };\n            InheritedStore.prototype.GetValuePrecedence = function (storage) {\n                var prec = _super.prototype.GetValuePrecedence.call(this, storage);\n                if (prec < Providers.PropertyPrecedence.Inherited)\n                    return prec;\n                if (storage.InheritedValue !== undefined)\n                    return Providers.PropertyPrecedence.Inherited;\n                return Providers.PropertyPrecedence.DefaultValue;\n            };\n            InheritedStore.prototype.OnPropertyChanged = function (storage, effectivePrecedence, oldValue, newValue) {\n                var args = _super.prototype.OnPropertyChanged.call(this, storage, effectivePrecedence, oldValue, newValue);\n                if (effectivePrecedence <= Providers.PropertyPrecedence.Inherited)\n                    this.Propagate(storage.OwnerNode, storage.Property, newValue);\n                return args;\n            };\n            InheritedStore.prototype.CreateStorage = function (dobj, propd) {\n                return {\n                    OwnerNode: dobj.XamlNode,\n                    Property: propd,\n                    Precedence: Providers.PropertyPrecedence.DefaultValue,\n                    Animations: undefined,\n                    Local: undefined,\n                    LocalStyleValue: undefined,\n                    ImplicitStyleValue: undefined,\n                    InheritedValue: undefined,\n                    PropListeners: undefined,\n                };\n            };\n            InheritedStore.PropagateInheritedOnAdd = function (dobj, subtreeNode) {\n                var destination = subtreeNode.XObject;\n                var store = InheritedStore.Instance;\n                var arr = destination._PropertyStorage;\n                var storage;\n                var allProps = Fayde.InheritableOwner.AllInheritedProperties;\n                var len = allProps.length;\n                var propd;\n                var newValue;\n                var sourceNode;\n                for (var i = 0; i < len; i++) {\n                    propd = allProps[i];\n                    sourceNode = dobj.XamlNode;\n                    while (sourceNode && !(sourceNode.XObject.IsInheritable(propd))) {\n                        sourceNode = sourceNode.ParentNode;\n                    }\n                    if (!sourceNode)\n                        continue;\n                    newValue = sourceNode.XObject.GetValue(propd);\n                    if (newValue === propd.DefaultValue)\n                        continue;\n                    storage = arr[propd._ID];\n                    if (!storage)\n                        storage = arr[propd._ID] = store.CreateStorage(destination, propd);\n                    if (!store.SetInheritedValue(subtreeNode, propd, newValue))\n                        store.Propagate(subtreeNode, propd, newValue);\n                }\n            };\n            InheritedStore.ClearInheritedOnRemove = function (dobj, subtreeNode) {\n                var store = InheritedStore.Instance;\n                var allProps = Fayde.InheritableOwner.AllInheritedProperties;\n                var len = allProps.length;\n                var propd;\n                for (var i = 0; i < len; i++) {\n                    propd = allProps[i];\n                    if (!store.SetInheritedValue(subtreeNode, propd, undefined))\n                        store.Propagate(subtreeNode, propd, undefined);\n                }\n            };\n            InheritedStore.prototype.Propagate = function (ownerNode, propd, newValue) {\n                var enumerator = ownerNode.GetInheritedEnumerator();\n                var uin;\n                while (enumerator.moveNext()) {\n                    uin = enumerator.current;\n                    if (!this.SetInheritedValue(uin, propd, newValue))\n                        this.Propagate(uin, propd, newValue);\n                }\n            };\n            InheritedStore.prototype.SetInheritedValue = function (don, propd, newValue) {\n                var dobj = don.XObject;\n                if (!dobj.IsInheritable(propd))\n                    return false;\n                var storage = Providers.GetStorage(dobj, propd);\n                if (storage.Precedence < Providers.PropertyPrecedence.Inherited) {\n                    storage.InheritedValue = newValue;\n                    return true;\n                }\n                var oldValue = storage.InheritedValue;\n                if (oldValue === undefined)\n                    oldValue = propd.DefaultValue;\n                storage.InheritedValue = newValue;\n                storage.Precedence = Providers.PropertyPrecedence.Inherited;\n                this.OnPropertyChanged(storage, Providers.PropertyPrecedence.Inherited, oldValue, newValue);\n                return true;\n            };\n            return InheritedStore;\n        })(Providers.PropertyStore);\n        Providers.InheritedStore = InheritedStore;\n        InheritedStore.Instance = new InheritedStore();\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    (function (Orientation) {\n        Orientation[Orientation[\"Horizontal\"] = 0] = \"Horizontal\";\n        Orientation[Orientation[\"Vertical\"] = 1] = \"Vertical\";\n    })(Fayde.Orientation || (Fayde.Orientation = {}));\n    var Orientation = Fayde.Orientation;\n    Fayde.CoreLibrary.addEnum(Orientation, \"Orientation\");\n    (function (Visibility) {\n        Visibility[Visibility[\"Visible\"] = 0] = \"Visible\";\n        Visibility[Visibility[\"Collapsed\"] = 1] = \"Collapsed\";\n    })(Fayde.Visibility || (Fayde.Visibility = {}));\n    var Visibility = Fayde.Visibility;\n    Fayde.CoreLibrary.addEnum(Visibility, \"Visibility\");\n    nullstone.registerEnumConverter(Visibility, function (val) {\n        if (val === \"true\" || val === true || val === Visibility.Visible || val === \"Visible\")\n            return Visibility.Visible;\n        return Visibility.Collapsed;\n    });\n    (function (CursorType) {\n        CursorType[CursorType[\"Default\"] = 0] = \"Default\";\n        CursorType[CursorType[\"Hand\"] = 1] = \"Hand\";\n        CursorType[CursorType[\"IBeam\"] = 2] = \"IBeam\";\n        CursorType[CursorType[\"Wait\"] = 3] = \"Wait\";\n        CursorType[CursorType[\"SizeNESW\"] = 4] = \"SizeNESW\";\n        CursorType[CursorType[\"SizeNWSE\"] = 5] = \"SizeNWSE\";\n        CursorType[CursorType[\"SizeNS\"] = 6] = \"SizeNS\";\n        CursorType[CursorType[\"SizeWE\"] = 7] = \"SizeWE\";\n    })(Fayde.CursorType || (Fayde.CursorType = {}));\n    var CursorType = Fayde.CursorType;\n    Fayde.CoreLibrary.addEnum(CursorType, \"CursorType\");\n    Fayde.CursorTypeMappings = {\n        Default: \"\",\n        Hand: \"pointer\",\n        IBeam: \"text\",\n        Wait: \"wait\",\n        SizeNESW: \"ne-resize\",\n        SizeNWSE: \"nw-resize\",\n        SizeNS: \"n-resize\",\n        SizeWE: \"w-resize\"\n    };\n    (function (HorizontalAlignment) {\n        HorizontalAlignment[HorizontalAlignment[\"Left\"] = 0] = \"Left\";\n        HorizontalAlignment[HorizontalAlignment[\"Center\"] = 1] = \"Center\";\n        HorizontalAlignment[HorizontalAlignment[\"Right\"] = 2] = \"Right\";\n        HorizontalAlignment[HorizontalAlignment[\"Stretch\"] = 3] = \"Stretch\";\n    })(Fayde.HorizontalAlignment || (Fayde.HorizontalAlignment = {}));\n    var HorizontalAlignment = Fayde.HorizontalAlignment;\n    Fayde.CoreLibrary.addEnum(HorizontalAlignment, \"HorizontalAlignment\");\n    (function (VerticalAlignment) {\n        VerticalAlignment[VerticalAlignment[\"Top\"] = 0] = \"Top\";\n        VerticalAlignment[VerticalAlignment[\"Center\"] = 1] = \"Center\";\n        VerticalAlignment[VerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n        VerticalAlignment[VerticalAlignment[\"Stretch\"] = 3] = \"Stretch\";\n    })(Fayde.VerticalAlignment || (Fayde.VerticalAlignment = {}));\n    var VerticalAlignment = Fayde.VerticalAlignment;\n    Fayde.CoreLibrary.addEnum(VerticalAlignment, \"VerticalAlignment\");\n    (function (FlowDirection) {\n        FlowDirection[FlowDirection[\"LeftToRight\"] = 0] = \"LeftToRight\";\n        FlowDirection[FlowDirection[\"RightToLeft\"] = 1] = \"RightToLeft\";\n    })(Fayde.FlowDirection || (Fayde.FlowDirection = {}));\n    var FlowDirection = Fayde.FlowDirection;\n    Fayde.CoreLibrary.addEnum(FlowDirection, \"FlowDirection\");\n    (function (FontWeight) {\n        FontWeight[FontWeight[\"Thin\"] = 100] = \"Thin\";\n        FontWeight[FontWeight[\"ExtraLight\"] = 200] = \"ExtraLight\";\n        FontWeight[FontWeight[\"Light\"] = 300] = \"Light\";\n        FontWeight[FontWeight[\"Normal\"] = 400] = \"Normal\";\n        FontWeight[FontWeight[\"Medium\"] = 500] = \"Medium\";\n        FontWeight[FontWeight[\"SemiBold\"] = 600] = \"SemiBold\";\n        FontWeight[FontWeight[\"Bold\"] = 700] = \"Bold\";\n        FontWeight[FontWeight[\"ExtraBold\"] = 800] = \"ExtraBold\";\n        FontWeight[FontWeight[\"Black\"] = 900] = \"Black\";\n        FontWeight[FontWeight[\"ExtraBlack\"] = 950] = \"ExtraBlack\";\n    })(Fayde.FontWeight || (Fayde.FontWeight = {}));\n    var FontWeight = Fayde.FontWeight;\n    Fayde.CoreLibrary.addEnum(FontWeight, \"FontWeight\");\n    (function (TextAlignment) {\n        TextAlignment[TextAlignment[\"Left\"] = 0] = \"Left\";\n        TextAlignment[TextAlignment[\"Center\"] = 1] = \"Center\";\n        TextAlignment[TextAlignment[\"Right\"] = 2] = \"Right\";\n        TextAlignment[TextAlignment[\"Justify\"] = 3] = \"Justify\";\n    })(Fayde.TextAlignment || (Fayde.TextAlignment = {}));\n    var TextAlignment = Fayde.TextAlignment;\n    Fayde.CoreLibrary.addEnum(TextAlignment, \"TextAlignment\");\n    (function (TextDecorations) {\n        TextDecorations[TextDecorations[\"None\"] = 0] = \"None\";\n        TextDecorations[TextDecorations[\"Underline\"] = 1] = \"Underline\";\n    })(Fayde.TextDecorations || (Fayde.TextDecorations = {}));\n    var TextDecorations = Fayde.TextDecorations;\n    Fayde.CoreLibrary.addEnum(TextDecorations, \"TextDecorations\");\n    (function (LineStackingStrategy) {\n        LineStackingStrategy[LineStackingStrategy[\"MaxHeight\"] = 0] = \"MaxHeight\";\n        LineStackingStrategy[LineStackingStrategy[\"BlockLineHeight\"] = 1] = \"BlockLineHeight\";\n    })(Fayde.LineStackingStrategy || (Fayde.LineStackingStrategy = {}));\n    var LineStackingStrategy = Fayde.LineStackingStrategy;\n    Fayde.CoreLibrary.addEnum(LineStackingStrategy, \"LineStackingStrategy\");\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    Fayde.FontStyle = minerva.FontStyle;\n    Fayde.FontStretch = minerva.FontStretch;\n    Fayde.CoreLibrary.addEnum(Fayde.FontStretch, \"FontStretch\");\n    Fayde.Font = minerva.Font;\n    Fayde.CoreLibrary.add(minerva.Font);\n})(Fayde || (Fayde = {}));\n/// <reference path=\"UIReaction.ts\" />\n/// <reference path=\"Providers/InheritedStore.ts\" />\n/// <reference path=\"../Primitives/Font.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var InheritableOwner = (function () {\n        function InheritableOwner() {\n        }\n        InheritableOwner.UseLayoutRoundingProperty = DependencyProperty.RegisterInheritable(\"UseLayoutRounding\", function () { return Boolean; }, InheritableOwner, true);\n        InheritableOwner.FlowDirectionProperty = DependencyProperty.RegisterInheritable(\"FlowDirection\", function () { return new Fayde.Enum(minerva.FlowDirection); }, InheritableOwner, minerva.FlowDirection.LeftToRight);\n        InheritableOwner.ForegroundProperty = DependencyProperty.RegisterInheritable(\"Foreground\", function () { return Fayde.Media.Brush; }, InheritableOwner);\n        InheritableOwner.FontFamilyProperty = DependencyProperty.RegisterInheritable(\"FontFamily\", function () { return String; }, InheritableOwner, Fayde.Font.DEFAULT_FAMILY);\n        InheritableOwner.FontSizeProperty = DependencyProperty.RegisterInheritable(\"FontSize\", function () { return Number; }, InheritableOwner, Fayde.Font.DEFAULT_SIZE);\n        InheritableOwner.FontStretchProperty = DependencyProperty.RegisterInheritable(\"FontStretch\", function () { return String; }, InheritableOwner, Fayde.Font.DEFAULT_STRETCH);\n        InheritableOwner.FontStyleProperty = DependencyProperty.RegisterInheritable(\"FontStyle\", function () { return String; }, InheritableOwner, Fayde.Font.DEFAULT_STYLE);\n        InheritableOwner.FontWeightProperty = DependencyProperty.RegisterInheritable(\"FontWeight\", function () { return new Fayde.Enum(Fayde.FontWeight); }, InheritableOwner, Fayde.Font.DEFAULT_WEIGHT);\n        InheritableOwner.TextDecorationsProperty = DependencyProperty.RegisterInheritable(\"TextDecorations\", function () { return new Fayde.Enum(Fayde.TextDecorations); }, InheritableOwner, Fayde.TextDecorations.None);\n        InheritableOwner.LanguageProperty = DependencyProperty.RegisterInheritable(\"Language\", function () { return String; }, InheritableOwner);\n        return InheritableOwner;\n    })();\n    Fayde.InheritableOwner = InheritableOwner;\n    InheritableOwner.AllInheritedProperties = [\n        InheritableOwner.ForegroundProperty,\n        InheritableOwner.FontFamilyProperty,\n        InheritableOwner.FontStretchProperty,\n        InheritableOwner.FontStyleProperty,\n        InheritableOwner.FontWeightProperty,\n        InheritableOwner.FontSizeProperty,\n        InheritableOwner.LanguageProperty,\n        InheritableOwner.FlowDirectionProperty,\n        InheritableOwner.UseLayoutRoundingProperty,\n        InheritableOwner.TextDecorationsProperty\n    ];\n    Fayde.CoreLibrary.add(InheritableOwner);\n    var reactions;\n    (function (reactions) {\n        Fayde.UIReaction(InheritableOwner.UseLayoutRoundingProperty, minerva.core.reactTo.useLayoutRounding, false);\n        Fayde.UIReaction(InheritableOwner.FlowDirectionProperty, minerva.core.reactTo.flowDirection, false);\n    })(reactions || (reactions = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"DependencyObject.ts\" />\n/// <reference path=\"UIReaction.ts\" />\n/// <reference path=\"UIReactionAttached.ts\" />\n/// <reference path=\"Providers/InheritedStore.ts\" />\n/// <reference path=\"Enums.ts\" />\n/// <reference path=\"InheritableOwner.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var UINode = (function (_super) {\n        __extends(UINode, _super);\n        function UINode(xobj) {\n            _super.call(this, xobj);\n            this.IsMouseOver = false;\n            this.IsLoaded = false;\n            var upd = this.LayoutUpdater = xobj.CreateLayoutUpdater();\n            upd.setAttachedValue(\"$node\", this);\n            upd.setAttachedValue(\"$id\", this.XObject._ID);\n        }\n        UINode.prototype.GetVisualRoot = function () {\n            var curNode = this;\n            var vpNode;\n            while (vpNode = curNode.VisualParentNode) {\n                curNode = vpNode;\n            }\n            return curNode;\n        };\n        UINode.prototype.SetIsLoaded = function (value) { };\n        UINode.prototype.OnVisualChildAttached = function (uie) {\n            var un = uie.XamlNode;\n            Fayde.Providers.InheritedStore.PropagateInheritedOnAdd(this.XObject, un);\n            un.SetVisualParentNode(this);\n        };\n        UINode.prototype.OnVisualChildDetached = function (uie) {\n            var un = uie.XamlNode;\n            un.SetVisualParentNode(null);\n            Fayde.Providers.InheritedStore.ClearInheritedOnRemove(this.XObject, un);\n        };\n        UINode.prototype.SetVisualParentNode = function (visualParentNode) {\n            if (this.VisualParentNode === visualParentNode)\n                return;\n            this.VisualParentNode = visualParentNode;\n            this.LayoutUpdater.setVisualParent(visualParentNode ? visualParentNode.LayoutUpdater : null);\n        };\n        UINode.prototype.Focus = function (recurse) { return false; };\n        UINode.prototype._EmitFocusChange = function (type) {\n            if (type === \"got\")\n                this._EmitGotFocus();\n            else if (type === \"lost\")\n                this._EmitLostFocus();\n        };\n        UINode.prototype._EmitLostFocus = function () {\n            var e = new Fayde.RoutedEventArgs();\n            var x = this.XObject;\n            x.OnLostFocus(e);\n            x.LostFocus.raise(x, e);\n        };\n        UINode.prototype._EmitGotFocus = function () {\n            var e = new Fayde.RoutedEventArgs();\n            var x = this.XObject;\n            x.OnGotFocus(e);\n            x.GotFocus.raise(x, e);\n        };\n        UINode.prototype._EmitKeyDown = function (args) {\n            var x = this.XObject;\n            x.OnKeyDown(args);\n            x.KeyDown.raise(x, args);\n        };\n        UINode.prototype._EmitKeyUp = function (args) {\n            var x = this.XObject;\n            x.OnKeyUp(args);\n            x.KeyUp.raise(x, args);\n        };\n        UINode.prototype._EmitLostMouseCapture = function (pos) {\n            var x = this.XObject;\n            var e = new Fayde.Input.MouseEventArgs(pos);\n            x.OnLostMouseCapture(e);\n            x.LostMouseCapture.raise(x, e);\n        };\n        UINode.prototype._EmitMouseEvent = function (type, isLeftButton, isRightButton, args) {\n            var x = this.XObject;\n            switch (type) {\n                case Fayde.Input.MouseInputType.MouseUp:\n                    if (isLeftButton) {\n                        x.OnMouseLeftButtonUp(args);\n                        x.MouseLeftButtonUp.raise(x, args);\n                    }\n                    else if (isRightButton) {\n                        x.OnMouseRightButtonUp(args);\n                        x.MouseRightButtonUp.raise(x, args);\n                    }\n                    break;\n                case Fayde.Input.MouseInputType.MouseDown:\n                    if (isLeftButton) {\n                        x.OnMouseLeftButtonDown(args);\n                        x.MouseLeftButtonDown.raise(x, args);\n                    }\n                    else if (isRightButton) {\n                        x.OnMouseRightButtonDown(args);\n                        x.MouseRightButtonDown.raise(x, args);\n                    }\n                    break;\n                case Fayde.Input.MouseInputType.MouseLeave:\n                    this.IsMouseOver = false;\n                    x.OnMouseLeave(args);\n                    x.MouseLeave.raise(x, args);\n                    break;\n                case Fayde.Input.MouseInputType.MouseEnter:\n                    this.IsMouseOver = true;\n                    x.OnMouseEnter(args);\n                    x.MouseEnter.raise(x, args);\n                    break;\n                case Fayde.Input.MouseInputType.MouseMove:\n                    x.OnMouseMove(args);\n                    x.MouseMove.raise(x, args);\n                    break;\n                case Fayde.Input.MouseInputType.MouseWheel:\n                    x.OnMouseWheel(args);\n                    x.MouseWheel.raise(x, args);\n                    break;\n                default:\n                    return false;\n            }\n            return args.Handled;\n        };\n        UINode.prototype._EmitTouchEvent = function (type, args) {\n            var x = this.XObject;\n            switch (type) {\n                case Fayde.Input.TouchInputType.TouchDown:\n                    x.OnTouchDown(args);\n                    x.TouchDown.raise(x, args);\n                    break;\n                case Fayde.Input.TouchInputType.TouchUp:\n                    x.OnTouchUp(args);\n                    x.TouchUp.raise(x, args);\n                    break;\n                case Fayde.Input.TouchInputType.TouchMove:\n                    x.OnTouchMove(args);\n                    x.TouchMove.raise(x, args);\n                    break;\n                case Fayde.Input.TouchInputType.TouchEnter:\n                    x.OnTouchEnter(args);\n                    x.TouchEnter.raise(x, args);\n                    break;\n                case Fayde.Input.TouchInputType.TouchLeave:\n                    x.OnTouchLeave(args);\n                    x.TouchLeave.raise(x, args);\n                    break;\n                default:\n                    return false;\n            }\n            return args.Handled;\n        };\n        UINode.prototype._EmitGotTouchCapture = function (e) {\n            var x = this.XObject;\n            x.OnGotTouchCapture(e);\n            x.GotTouchCapture.raise(this, e);\n        };\n        UINode.prototype._EmitLostTouchCapture = function (e) {\n            var x = this.XObject;\n            x.OnLostTouchCapture(e);\n            x.LostTouchCapture.raise(this, e);\n        };\n        UINode.prototype.CanCaptureMouse = function () { return true; };\n        UINode.prototype.CaptureMouse = function () {\n            if (!this.IsAttached)\n                return false;\n            Fayde.Surface.SetMouseCapture(this);\n            return true;\n        };\n        UINode.prototype.ReleaseMouseCapture = function () {\n            if (!this.IsAttached)\n                return;\n            Fayde.Surface.ReleaseMouseCapture(this);\n        };\n        UINode.prototype.IsAncestorOf = function (uin) {\n            var vpNode = uin;\n            while (vpNode && vpNode !== this)\n                vpNode = vpNode.VisualParentNode;\n            return vpNode === this;\n        };\n        UINode.prototype.TransformToVisual = function (uin) {\n            var raw = minerva.core.Updater.transformToVisual(this.LayoutUpdater, uin ? uin.LayoutUpdater : null);\n            if (!raw)\n                throw new ArgumentException(\"UIElement not attached.\");\n            var mt = new Fayde.Media.MatrixTransform();\n            mt.SetCurrentValue(Fayde.Media.MatrixTransform.MatrixProperty, new Fayde.Media.Matrix(raw));\n            return mt;\n        };\n        return UINode;\n    })(Fayde.DONode);\n    Fayde.UINode = UINode;\n    var UIElement = (function (_super) {\n        __extends(UIElement, _super);\n        function UIElement() {\n            _super.apply(this, arguments);\n            this.LostFocus = new Fayde.RoutedEvent();\n            this.GotFocus = new Fayde.RoutedEvent();\n            this.LostMouseCapture = new Fayde.RoutedEvent();\n            this.KeyDown = new Fayde.RoutedEvent();\n            this.KeyUp = new Fayde.RoutedEvent();\n            this.MouseLeftButtonUp = new Fayde.RoutedEvent();\n            this.MouseRightButtonUp = new Fayde.RoutedEvent();\n            this.MouseLeftButtonDown = new Fayde.RoutedEvent();\n            this.MouseRightButtonDown = new Fayde.RoutedEvent();\n            this.MouseLeave = new Fayde.RoutedEvent();\n            this.MouseEnter = new Fayde.RoutedEvent();\n            this.MouseMove = new Fayde.RoutedEvent();\n            this.MouseWheel = new Fayde.RoutedEvent();\n            this.TouchDown = new Fayde.RoutedEvent();\n            this.TouchUp = new Fayde.RoutedEvent();\n            this.TouchEnter = new Fayde.RoutedEvent();\n            this.TouchLeave = new Fayde.RoutedEvent();\n            this.TouchMove = new Fayde.RoutedEvent();\n            this.GotTouchCapture = new Fayde.RoutedEvent();\n            this.LostTouchCapture = new Fayde.RoutedEvent();\n        }\n        UIElement.prototype.CreateNode = function () { return new UINode(this); };\n        UIElement.prototype.CreateLayoutUpdater = function () { return new minerva.core.Updater(); };\n        Object.defineProperty(UIElement.prototype, \"IsItemsControl\", {\n            get: function () { return false; },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(UIElement.prototype, \"VisualParent\", {\n            get: function () {\n                var vpNode = this.XamlNode.VisualParentNode;\n                if (vpNode)\n                    return vpNode.XObject;\n                return undefined;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        UIElement.prototype.IsInheritable = function (propd) {\n            return propd === UIElement.UseLayoutRoundingProperty;\n        };\n        Object.defineProperty(UIElement.prototype, \"IsMouseOver\", {\n            get: function () { return this.XamlNode.IsMouseOver; },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(UIElement.prototype, \"DesiredSize\", {\n            get: function () {\n                var ds = this.XamlNode.LayoutUpdater.assets.desiredSize;\n                return new minerva.Size(ds.width, ds.height);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(UIElement.prototype, \"RenderSize\", {\n            get: function () {\n                var ds = this.XamlNode.LayoutUpdater.assets.renderSize;\n                return new minerva.Size(ds.width, ds.height);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        UIElement.prototype.Focus = function () { return this.XamlNode.Focus(); };\n        UIElement.prototype.CaptureMouse = function () { return this.XamlNode.CaptureMouse(); };\n        UIElement.prototype.ReleaseMouseCapture = function () { this.XamlNode.ReleaseMouseCapture(); };\n        UIElement.prototype.IsAncestorOf = function (uie) {\n            if (!uie)\n                return false;\n            return this.XamlNode.IsAncestorOf(uie.XamlNode);\n        };\n        UIElement.prototype.TransformToVisual = function (uie) {\n            var uin = (uie) ? uie.XamlNode : null;\n            return this.XamlNode.TransformToVisual(uin);\n        };\n        UIElement.prototype.InvalidateMeasure = function () { this.XamlNode.LayoutUpdater.invalidateMeasure(); };\n        UIElement.prototype.Measure = function (availableSize) {\n            this.XamlNode.LayoutUpdater.measure(availableSize);\n        };\n        UIElement.prototype.InvalidateArrange = function () { this.XamlNode.LayoutUpdater.invalidateArrange(); };\n        UIElement.prototype.Arrange = function (finalRect) {\n            this.XamlNode.LayoutUpdater.arrange(finalRect);\n        };\n        UIElement.prototype.OnGotFocus = function (e) { };\n        UIElement.prototype.OnLostFocus = function (e) { };\n        UIElement.prototype.OnLostMouseCapture = function (e) { };\n        UIElement.prototype.OnKeyDown = function (e) { };\n        UIElement.prototype.OnKeyUp = function (e) { };\n        UIElement.prototype.OnMouseEnter = function (e) { };\n        UIElement.prototype.OnMouseLeave = function (e) { };\n        UIElement.prototype.OnMouseLeftButtonDown = function (e) { };\n        UIElement.prototype.OnMouseLeftButtonUp = function (e) { };\n        UIElement.prototype.OnMouseMove = function (e) { };\n        UIElement.prototype.OnMouseRightButtonDown = function (e) { };\n        UIElement.prototype.OnMouseRightButtonUp = function (e) { };\n        UIElement.prototype.OnMouseWheel = function (e) { };\n        UIElement.prototype.OnTouchDown = function (e) { };\n        UIElement.prototype.OnTouchUp = function (e) { };\n        UIElement.prototype.OnTouchEnter = function (e) { };\n        UIElement.prototype.OnTouchLeave = function (e) { };\n        UIElement.prototype.OnTouchMove = function (e) { };\n        UIElement.prototype.OnGotTouchCapture = function (e) { };\n        UIElement.prototype.OnLostTouchCapture = function (e) { };\n        UIElement.prototype._TriggersChanged = function (args) {\n            var oldTriggers = args.OldValue;\n            var newTriggers = args.NewValue;\n            if (oldTriggers instanceof Fayde.TriggerCollection)\n                oldTriggers.DetachTarget(this);\n            if (newTriggers instanceof Fayde.TriggerCollection)\n                newTriggers.AttachTarget(this);\n        };\n        UIElement.ClipProperty = DependencyProperty.RegisterCore(\"Clip\", function () { return Fayde.Media.Geometry; }, UIElement);\n        UIElement.EffectProperty = DependencyProperty.Register(\"Effect\", function () { return Fayde.Media.Effects.Effect; }, UIElement);\n        UIElement.IsHitTestVisibleProperty = DependencyProperty.RegisterCore(\"IsHitTestVisible\", function () { return Boolean; }, UIElement, true);\n        UIElement.OpacityMaskProperty = DependencyProperty.RegisterCore(\"OpacityMask\", function () { return Fayde.Media.Brush; }, UIElement);\n        UIElement.OpacityProperty = DependencyProperty.RegisterCore(\"Opacity\", function () { return Number; }, UIElement, 1.0);\n        UIElement.RenderTransformProperty = DependencyProperty.RegisterCore(\"RenderTransform\", function () { return Fayde.Media.Transform; }, UIElement);\n        UIElement.RenderTransformOriginProperty = DependencyProperty.Register(\"RenderTransformOrigin\", function () { return Point; }, UIElement);\n        UIElement.TagProperty = DependencyProperty.Register(\"Tag\", function () { return Object; }, UIElement);\n        UIElement.TriggersProperty = DependencyProperty.RegisterCore(\"Triggers\", function () { return Fayde.TriggerCollection; }, UIElement, undefined, function (d, args) { return d._TriggersChanged(args); });\n        UIElement.UseLayoutRoundingProperty = Fayde.InheritableOwner.UseLayoutRoundingProperty.ExtendTo(UIElement);\n        UIElement.VisibilityProperty = DependencyProperty.RegisterCore(\"Visibility\", function () { return new Fayde.Enum(Fayde.Visibility); }, UIElement, Fayde.Visibility.Visible);\n        return UIElement;\n    })(Fayde.DependencyObject);\n    Fayde.UIElement = UIElement;\n    Fayde.CoreLibrary.add(UIElement);\n    var reactions;\n    (function (reactions) {\n        Fayde.UIReaction(UIElement.ClipProperty, minerva.core.reactTo.clip);\n        Fayde.UIReaction(UIElement.EffectProperty, minerva.core.reactTo.effect);\n        Fayde.UIReaction(UIElement.IsHitTestVisibleProperty, minerva.core.reactTo.isHitTestVisible, false);\n        Fayde.UIReaction(UIElement.OpacityProperty, minerva.core.reactTo.opacity, false);\n        Fayde.UIReaction(UIElement.RenderTransformProperty, minerva.core.reactTo.renderTransform);\n        Fayde.UIReaction(UIElement.RenderTransformOriginProperty, minerva.core.reactTo.renderTransformOrigin, false, minerva.Point.copyTo);\n        Fayde.UIReaction(UIElement.VisibilityProperty, function (upd, ov, nv, uie) {\n            minerva.core.reactTo.visibility(upd, ov, nv);\n            Fayde.Surface.RemoveFocusFrom(uie);\n        }, false);\n    })(reactions || (reactions = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"PropertyStore.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        var ResourcesStore = (function (_super) {\n            __extends(ResourcesStore, _super);\n            function ResourcesStore() {\n                _super.apply(this, arguments);\n            }\n            ResourcesStore.prototype.GetValue = function (storage) {\n                if (storage.Local !== undefined)\n                    return storage.Local;\n                var rd = storage.Local = new Fayde.ResourceDictionary();\n                rd.AttachTo(storage.OwnerNode.XObject);\n                return rd;\n            };\n            ResourcesStore.prototype.GetValuePrecedence = function (storage) {\n                return Providers.PropertyPrecedence.LocalValue;\n            };\n            ResourcesStore.prototype.SetLocalValue = function (storage, newValue) {\n                console.warn(\"Cannot set Resources.\");\n            };\n            ResourcesStore.prototype.SetLocalStyleValue = function (storage, newValue) {\n            };\n            ResourcesStore.prototype.SetImplicitStyle = function (storage, newValue) {\n            };\n            ResourcesStore.prototype.ClearValue = function (storage, notifyListeners) {\n            };\n            return ResourcesStore;\n        })(Providers.PropertyStore);\n        Providers.ResourcesStore = ResourcesStore;\n        ResourcesStore.Instance = new ResourcesStore();\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"PropertyStore.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        var ActualSizeStore = (function (_super) {\n            __extends(ActualSizeStore, _super);\n            function ActualSizeStore() {\n                _super.apply(this, arguments);\n            }\n            ActualSizeStore.prototype.GetValue = function (storage) {\n                if (storage.Local !== undefined)\n                    return storage.Local;\n                return 0.0;\n            };\n            ActualSizeStore.prototype.GetValuePrecedence = function (storage) { return Providers.PropertyPrecedence.LocalValue; };\n            ActualSizeStore.prototype.SetLocalValue = function (storage, newValue) {\n                var oldValue = storage.Local;\n                storage.Local = newValue;\n                if (oldValue === newValue)\n                    return;\n                this.OnPropertyChanged(storage, Providers.PropertyPrecedence.LocalValue, oldValue, newValue);\n            };\n            ActualSizeStore.prototype.SetLocalStyleValue = function (storage, newValue) { };\n            ActualSizeStore.prototype.SetImplicitStyle = function (storage, newValue) { };\n            ActualSizeStore.prototype.ClearValue = function (storage, notifyListeners) { };\n            return ActualSizeStore;\n        })(Providers.PropertyStore);\n        Providers.ActualSizeStore = ActualSizeStore;\n        ActualSizeStore.Instance = new ActualSizeStore();\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"UIElement.ts\" />\n/// <reference path=\"Providers/ResourcesStore.ts\" />\n/// <reference path=\"Providers/ActualSizeStore.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var FENode = (function (_super) {\n        __extends(FENode, _super);\n        function FENode(xobj) {\n            var _this = this;\n            _super.call(this, xobj);\n            var lu = this.LayoutUpdater;\n            lu.tree.setTemplateApplier(function () {\n                var error = new BError();\n                var result = _this.ApplyTemplateWithError(error);\n                if (error.Message)\n                    error.ThrowException();\n                return result;\n            });\n            lu.setSizeUpdater({\n                setActualWidth: function (value) {\n                    xobj.SetCurrentValue(FrameworkElement.ActualWidthProperty, value);\n                },\n                setActualHeight: function (value) {\n                    xobj.SetCurrentValue(FrameworkElement.ActualHeightProperty, value);\n                },\n                onSizeChanged: function (oldSize, newSize) {\n                    xobj.SizeChanged.raise(xobj, new Fayde.SizeChangedEventArgs(oldSize, newSize));\n                }\n            });\n        }\n        FENode.prototype.SetSubtreeNode = function (subtreeNode, error) {\n            if (this.SubtreeNode) {\n                this.SubtreeNode.Detach();\n                this.SubtreeNode = null;\n            }\n            if (subtreeNode && !subtreeNode.AttachTo(this, error))\n                return false;\n            this.SubtreeNode = subtreeNode;\n            return true;\n        };\n        FENode.prototype.GetInheritedEnumerator = function () {\n            return this.GetVisualTreeEnumerator();\n        };\n        FENode.prototype.GetVisualTreeEnumerator = function () {\n            var walker = this.LayoutUpdater.tree.walk();\n            return {\n                current: undefined,\n                moveNext: function () {\n                    if (!walker.step())\n                        return false;\n                    this.current = walker.current.getAttachedValue(\"$node\");\n                    return true;\n                }\n            };\n        };\n        FENode.prototype.SetIsLoaded = function (value) {\n            if (this.IsLoaded === value)\n                return;\n            this.IsLoaded = value;\n            this.OnIsLoadedChanged(value);\n        };\n        FENode.prototype.OnIsLoadedChanged = function (newIsLoaded) {\n            var xobj = this.XObject;\n            var res = xobj.Resources;\n            if (!newIsLoaded) {\n                Fayde.Providers.ImplicitStyleBroker.Clear(xobj, Fayde.Providers.StyleMask.VisualTree);\n                xobj.Unloaded.raise(xobj, new Fayde.RoutedEventArgs());\n            }\n            else {\n                Fayde.Providers.ImplicitStyleBroker.Set(xobj, Fayde.Providers.StyleMask.All);\n            }\n            for (var en = this.GetVisualTreeEnumerator(); en.moveNext();) {\n                en.current.SetIsLoaded(newIsLoaded);\n            }\n            if (newIsLoaded) {\n                xobj.Loaded.raise(xobj, new Fayde.RoutedEventArgs());\n                this.InvokeLoaded();\n            }\n        };\n        FENode.prototype.InvokeLoaded = function () { };\n        FENode.prototype.AttachVisualChild = function (uie, error) {\n            this.OnVisualChildAttached(uie);\n            if (!this.SetSubtreeNode(uie.XamlNode, error))\n                return false;\n            uie.XamlNode.SetIsLoaded(this.IsLoaded);\n            return true;\n        };\n        FENode.prototype.DetachVisualChild = function (uie, error) {\n            if (!this.SetSubtreeNode(null, error))\n                return false;\n            this.OnVisualChildDetached(uie);\n            uie.XamlNode.SetIsLoaded(false);\n            return true;\n        };\n        FENode.prototype.ApplyTemplateWithError = function (error) {\n            if (this.SubtreeNode)\n                return false;\n            var result = this.DoApplyTemplateWithError(error);\n            var xobj = this.XObject;\n            if (result)\n                xobj.OnApplyTemplate();\n            xobj.TemplateApplied.raise(xobj, null);\n            return result;\n        };\n        FENode.prototype.DoApplyTemplateWithError = function (error) { return false; };\n        FENode.prototype.FinishApplyTemplateWithError = function (uie, error) {\n            if (!uie || error.Message)\n                return false;\n            this.AttachVisualChild(uie, error);\n            return error.Message == null;\n        };\n        FENode.prototype.UpdateLayout = function () {\n            console.warn(\"FENode.UpdateLayout not implemented\");\n        };\n        FENode.DetachFromVisualParent = function (xobj) {\n            var vpNode = xobj.XamlNode.VisualParentNode;\n            if (vpNode instanceof FENode) {\n                var err = new BError();\n                vpNode.DetachVisualChild(xobj, err);\n                if (err.Message)\n                    err.ThrowException();\n            }\n        };\n        return FENode;\n    })(Fayde.UINode);\n    Fayde.FENode = FENode;\n    var FrameworkElement = (function (_super) {\n        __extends(FrameworkElement, _super);\n        function FrameworkElement() {\n            _super.apply(this, arguments);\n            this.SizeChanged = new Fayde.RoutedEvent();\n            this.Loaded = new Fayde.RoutedEvent();\n            this.Unloaded = new Fayde.RoutedEvent();\n            this.LayoutUpdated = new nullstone.Event();\n            this.TemplateApplied = new nullstone.Event();\n            this.BindingValidationError = new nullstone.Event();\n        }\n        FrameworkElement.prototype.CreateNode = function () { return new FENode(this); };\n        FrameworkElement.prototype.IsInheritable = function (propd) {\n            if (propd === FrameworkElement.FlowDirectionProperty)\n                return true;\n            if (propd === FrameworkElement.LanguageProperty)\n                return true;\n            return _super.prototype.IsInheritable.call(this, propd);\n        };\n        FrameworkElement.prototype.OnApplyTemplate = function () { };\n        FrameworkElement.prototype.OnBindingValidationError = function (args) {\n            this.BindingValidationError.raise(this, args);\n        };\n        FrameworkElement.prototype.UpdateLayout = function () { this.XamlNode.UpdateLayout(); };\n        FrameworkElement.ActualHeightProperty = DependencyProperty.RegisterReadOnly(\"ActualHeight\", function () { return Number; }, FrameworkElement);\n        FrameworkElement.ActualWidthProperty = DependencyProperty.RegisterReadOnly(\"ActualWidth\", function () { return Number; }, FrameworkElement);\n        FrameworkElement.CursorProperty = DependencyProperty.Register(\"Cursor\", function () { return new Fayde.Enum(Fayde.CursorType); }, FrameworkElement, Fayde.CursorType.Default);\n        FrameworkElement.FlowDirectionProperty = Fayde.InheritableOwner.FlowDirectionProperty.ExtendTo(FrameworkElement);\n        FrameworkElement.HeightProperty = DependencyProperty.Register(\"Height\", function () { return Length; }, FrameworkElement, NaN);\n        FrameworkElement.HorizontalAlignmentProperty = DependencyProperty.Register(\"HorizontalAlignment\", function () { return new Fayde.Enum(Fayde.HorizontalAlignment); }, FrameworkElement, Fayde.HorizontalAlignment.Stretch);\n        FrameworkElement.LanguageProperty = Fayde.InheritableOwner.LanguageProperty.ExtendTo(FrameworkElement);\n        FrameworkElement.MarginProperty = DependencyProperty.RegisterCore(\"Margin\", function () { return Thickness; }, FrameworkElement);\n        FrameworkElement.MaxHeightProperty = DependencyProperty.Register(\"MaxHeight\", function () { return Number; }, FrameworkElement, Number.POSITIVE_INFINITY);\n        FrameworkElement.MaxWidthProperty = DependencyProperty.Register(\"MaxWidth\", function () { return Number; }, FrameworkElement, Number.POSITIVE_INFINITY);\n        FrameworkElement.MinHeightProperty = DependencyProperty.Register(\"MinHeight\", function () { return Number; }, FrameworkElement, 0.0);\n        FrameworkElement.MinWidthProperty = DependencyProperty.Register(\"MinWidth\", function () { return Number; }, FrameworkElement, 0.0);\n        FrameworkElement.StyleProperty = DependencyProperty.Register(\"Style\", function () { return Fayde.Style; }, FrameworkElement, undefined, function (dobj, args) { return Fayde.Providers.LocalStyleBroker.Set(dobj, args.NewValue); });\n        FrameworkElement.VerticalAlignmentProperty = DependencyProperty.Register(\"VerticalAlignment\", function () { return new Fayde.Enum(Fayde.VerticalAlignment); }, FrameworkElement, Fayde.VerticalAlignment.Stretch);\n        FrameworkElement.WidthProperty = DependencyProperty.Register(\"Width\", function () { return Length; }, FrameworkElement, NaN);\n        FrameworkElement.ResourcesProperty = DependencyProperty.Register(\"Resources\", function () { return Fayde.ResourceDictionary; }, FrameworkElement);\n        FrameworkElement.DefaultStyleKeyProperty = DependencyProperty.Register(\"DefaultStyleKey\", function () { return Function; }, FrameworkElement);\n        return FrameworkElement;\n    })(Fayde.UIElement);\n    Fayde.FrameworkElement = FrameworkElement;\n    Fayde.CoreLibrary.add(FrameworkElement);\n    FrameworkElement.ActualWidthProperty.Store = Fayde.Providers.ActualSizeStore.Instance;\n    FrameworkElement.ActualHeightProperty.Store = Fayde.Providers.ActualSizeStore.Instance;\n    FrameworkElement.ResourcesProperty.Store = Fayde.Providers.ResourcesStore.Instance;\n    var reactions;\n    (function (reactions) {\n        Fayde.UIReaction(FrameworkElement.WidthProperty, minerva.core.reactTo.width, false);\n        Fayde.UIReaction(FrameworkElement.HeightProperty, minerva.core.reactTo.height, false);\n        Fayde.UIReaction(FrameworkElement.MaxWidthProperty, minerva.core.reactTo.maxWidth, false);\n        Fayde.UIReaction(FrameworkElement.MaxHeightProperty, minerva.core.reactTo.maxHeight, false);\n        Fayde.UIReaction(FrameworkElement.MinWidthProperty, minerva.core.reactTo.minWidth, false);\n        Fayde.UIReaction(FrameworkElement.MinHeightProperty, minerva.core.reactTo.minHeight, false);\n        Fayde.UIReaction(FrameworkElement.MarginProperty, minerva.core.reactTo.margin, false, minerva.Thickness.copyTo);\n        Fayde.UIReaction(FrameworkElement.HorizontalAlignmentProperty, minerva.core.reactTo.horizontalAlignment, false);\n        Fayde.UIReaction(FrameworkElement.VerticalAlignmentProperty, minerva.core.reactTo.verticalAlignment, false);\n    })(reactions || (reactions = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        Markup.Content = (function () {\n            function ca(type, prop) {\n                nullstone.Annotation(type, \"Content\", prop, true);\n            }\n            ca.Get = function (type) {\n                var cur = type;\n                while (cur) {\n                    var anns = nullstone.GetAnnotations(cur, \"Content\");\n                    if (anns) {\n                        var cp = anns[0];\n                        if (cp)\n                            return cp;\n                    }\n                    cur = nullstone.getTypeParent(cur);\n                }\n                return undefined;\n            };\n            return ca;\n        })();\n        Markup.TextContent = (function () {\n            function tca(type, prop) {\n                nullstone.Annotation(type, \"TextContent\", prop, true);\n            }\n            tca.Get = function (type) {\n                var cur = type;\n                while (cur) {\n                    var anns = nullstone.GetAnnotations(cur, \"TextContent\");\n                    if (anns) {\n                        var cp = anns[0];\n                        if (cp)\n                            return cp;\n                    }\n                    cur = nullstone.getTypeParent(cur);\n                }\n                return undefined;\n            };\n            return tca;\n        })();\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/FrameworkElement.ts\" />\n/// <reference path=\"../Markup/ContentAnnotation.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Border = (function (_super) {\n            __extends(Border, _super);\n            function Border() {\n                _super.call(this);\n                this.DefaultStyleKey = Border;\n            }\n            Border.prototype.CreateLayoutUpdater = function () {\n                return new minerva.controls.border.BorderUpdater();\n            };\n            Border.BackgroundProperty = DependencyProperty.RegisterCore(\"Background\", function () { return Fayde.Media.Brush; }, Border);\n            Border.BorderBrushProperty = DependencyProperty.RegisterCore(\"BorderBrush\", function () { return Fayde.Media.Brush; }, Border);\n            Border.BorderThicknessProperty = DependencyProperty.Register(\"BorderThickness\", function () { return Thickness; }, Border);\n            Border.ChildProperty = DependencyProperty.Register(\"Child\", function () { return Fayde.UIElement; }, Border);\n            Border.CornerRadiusProperty = DependencyProperty.Register(\"CornerRadius\", function () { return CornerRadius; }, Border);\n            Border.PaddingProperty = DependencyProperty.Register(\"Padding\", function () { return Thickness; }, Border);\n            return Border;\n        })(Fayde.FrameworkElement);\n        Controls.Border = Border;\n        Fayde.CoreLibrary.add(Border);\n        Fayde.Markup.Content(Border, Border.ChildProperty);\n        Fayde.UIReaction(Border.BackgroundProperty, function (upd, ov, nv) {\n            upd.invalidate();\n        });\n        Fayde.UIReaction(Border.BorderBrushProperty, function (upd, ov, nv) {\n            upd.invalidate();\n        });\n        Fayde.UIReaction(Border.BorderThicknessProperty, function (upd, ov, nv) { return upd.invalidateMeasure(); }, false, function (src, dest) { return !!src && !!dest && minerva.Thickness.copyTo(src, dest); });\n        Fayde.UIReaction(Border.PaddingProperty, function (upd, ov, nv) { return upd.invalidateMeasure(); }, false, function (src, dest) { return !!src && !!dest && minerva.Thickness.copyTo(src, dest); });\n        Fayde.UIReaction(Border.CornerRadiusProperty, function (upd, ov, nv) { return upd.invalidate(); }, false, function (src, dest) { return !!src && !!dest && minerva.CornerRadius.copyTo(src, dest); });\n        Fayde.UIReaction(Border.ChildProperty, function (upd, ov, nv, border) {\n            var node = border.XamlNode;\n            var error = new BError();\n            if (ov instanceof Fayde.UIElement)\n                node.DetachVisualChild(ov, error);\n            if (nv instanceof Fayde.UIElement)\n                node.AttachVisualChild(nv, error);\n            if (error.Message)\n                error.ThrowException();\n            upd.updateBounds();\n            upd.invalidateMeasure();\n        }, false, false);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"PropertyStore.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        var IsEnabledStore = (function (_super) {\n            __extends(IsEnabledStore, _super);\n            function IsEnabledStore() {\n                _super.apply(this, arguments);\n            }\n            IsEnabledStore.prototype.GetValue = function (storage) {\n                if (storage.InheritedValue === false)\n                    return false;\n                return _super.prototype.GetValue.call(this, storage);\n            };\n            IsEnabledStore.prototype.GetValuePrecedence = function (storage) {\n                if (storage.InheritedValue === false)\n                    return Providers.PropertyPrecedence.IsEnabled;\n                return _super.prototype.GetValuePrecedence.call(this, storage);\n            };\n            IsEnabledStore.prototype.SetLocalValue = function (storage, newValue) {\n                var oldValue = storage.Local;\n                storage.Local = newValue;\n                if (oldValue === newValue || storage.InheritedValue === false)\n                    return;\n                this.OnPropertyChanged(storage, Providers.PropertyPrecedence.LocalValue, oldValue, newValue);\n            };\n            IsEnabledStore.prototype.OnPropertyChanged = function (storage, effectivePrecedence, oldValue, newValue) {\n                var args = _super.prototype.OnPropertyChanged.call(this, storage, effectivePrecedence, oldValue, newValue);\n                storage.OwnerNode.OnIsEnabledChanged(oldValue, newValue);\n                return args;\n            };\n            IsEnabledStore.prototype.CreateStorage = function (dobj, propd) {\n                return {\n                    OwnerNode: dobj.XamlNode,\n                    Property: propd,\n                    Precedence: Providers.PropertyPrecedence.DefaultValue,\n                    InheritedValue: true,\n                    Animations: undefined,\n                    Local: undefined,\n                    LocalStyleValue: undefined,\n                    ImplicitStyleValue: undefined,\n                    PropListeners: undefined,\n                };\n            };\n            IsEnabledStore.prototype.EmitInheritedChanged = function (storage, newInherited) {\n                var oldInherited = storage.InheritedValue;\n                if (newInherited !== false) {\n                    storage.Precedence = _super.prototype.GetValuePrecedence.call(this, storage);\n                    storage.InheritedValue = true;\n                }\n                else {\n                    storage.InheritedValue = false;\n                }\n                if (oldInherited === newInherited)\n                    return;\n                this.OnPropertyChanged(storage, Providers.PropertyPrecedence.IsEnabled, oldInherited, newInherited);\n            };\n            IsEnabledStore.EmitInheritedChanged = function (cn, value) {\n                var propd = Fayde.Controls.Control.IsEnabledProperty;\n                var storage = Providers.GetStorage(cn.XObject, propd);\n                propd.Store.EmitInheritedChanged(storage, value);\n            };\n            return IsEnabledStore;\n        })(Providers.PropertyStore);\n        Providers.IsEnabledStore = IsEnabledStore;\n        IsEnabledStore.Instance = new IsEnabledStore();\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        (function (KeyboardNavigationMode) {\n            KeyboardNavigationMode[KeyboardNavigationMode[\"Continue\"] = 0] = \"Continue\";\n            KeyboardNavigationMode[KeyboardNavigationMode[\"Once\"] = 1] = \"Once\";\n            KeyboardNavigationMode[KeyboardNavigationMode[\"Cycle\"] = 2] = \"Cycle\";\n            KeyboardNavigationMode[KeyboardNavigationMode[\"None\"] = 3] = \"None\";\n            KeyboardNavigationMode[KeyboardNavigationMode[\"Contained\"] = 4] = \"Contained\";\n            KeyboardNavigationMode[KeyboardNavigationMode[\"Local\"] = 5] = \"Local\";\n        })(Input.KeyboardNavigationMode || (Input.KeyboardNavigationMode = {}));\n        var KeyboardNavigationMode = Input.KeyboardNavigationMode;\n        Fayde.CoreLibrary.addEnum(KeyboardNavigationMode, \"KeyboardNavigationMode\");\n        (function (ModifierKeys) {\n            ModifierKeys[ModifierKeys[\"None\"] = 0] = \"None\";\n            ModifierKeys[ModifierKeys[\"Alt\"] = 1] = \"Alt\";\n            ModifierKeys[ModifierKeys[\"Control\"] = 2] = \"Control\";\n            ModifierKeys[ModifierKeys[\"Shift\"] = 4] = \"Shift\";\n            ModifierKeys[ModifierKeys[\"Windows\"] = 8] = \"Windows\";\n            ModifierKeys[ModifierKeys[\"Apple\"] = 16] = \"Apple\";\n        })(Input.ModifierKeys || (Input.ModifierKeys = {}));\n        var ModifierKeys = Input.ModifierKeys;\n        var Keyboard = (function () {\n            function Keyboard() {\n            }\n            Keyboard.RefreshModifiers = function (e) {\n                if (e.Shift)\n                    Keyboard.Modifiers |= ModifierKeys.Shift;\n                else\n                    Keyboard.Modifiers &= ~ModifierKeys.Shift;\n                if (e.Ctrl)\n                    Keyboard.Modifiers |= ModifierKeys.Control;\n                else\n                    Keyboard.Modifiers &= ~ModifierKeys.Control;\n                if (e.Alt)\n                    Keyboard.Modifiers |= ModifierKeys.Alt;\n                else\n                    Keyboard.Modifiers &= ~ModifierKeys.Alt;\n            };\n            Keyboard.HasControl = function () {\n                return (Keyboard.Modifiers & ModifierKeys.Control) === ModifierKeys.Control;\n            };\n            Keyboard.HasAlt = function () {\n                return (Keyboard.Modifiers & ModifierKeys.Alt) === ModifierKeys.Alt;\n            };\n            Keyboard.HasShift = function () {\n                return (Keyboard.Modifiers & ModifierKeys.Shift) === ModifierKeys.Shift;\n            };\n            Keyboard.Modifiers = ModifierKeys.None;\n            return Keyboard;\n        })();\n        Input.Keyboard = Keyboard;\n        Fayde.CoreLibrary.add(Keyboard);\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/FrameworkElement.ts\" />\n/// <reference path=\"../Core/Providers/IsEnabledStore.ts\" />\n/// <reference path=\"../Input/Keyboard.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ControlNode = (function (_super) {\n            __extends(ControlNode, _super);\n            function ControlNode(xobj) {\n                _super.call(this, xobj);\n                this.IsFocused = false;\n            }\n            ControlNode.prototype.TabTo = function () {\n                var xobj = this.XObject;\n                return xobj.IsEnabled && xobj.IsTabStop && this.Focus();\n            };\n            ControlNode.prototype.ApplyTemplateWithError = function (error) {\n                if (!_super.prototype.ApplyTemplateWithError.call(this, error))\n                    return false;\n                this.XObject.UpdateValidationState();\n                return true;\n            };\n            ControlNode.prototype.DoApplyTemplateWithError = function (error) {\n                var xobj = this.XObject;\n                var t = xobj.Template;\n                var root;\n                if (t)\n                    root = t.GetVisualTree(xobj);\n                if (!root && !(root = this.GetDefaultVisualTree()))\n                    return false;\n                if (this.TemplateRoot && this.TemplateRoot !== root)\n                    this.DetachVisualChild(this.TemplateRoot, error);\n                this.TemplateRoot = root;\n                if (this.TemplateRoot)\n                    this.AttachVisualChild(this.TemplateRoot, error);\n                if (error.Message)\n                    return false;\n                return true;\n            };\n            ControlNode.prototype.GetDefaultVisualTree = function () { return undefined; };\n            ControlNode.prototype.OnIsAttachedChanged = function (newIsAttached) {\n                _super.prototype.OnIsAttachedChanged.call(this, newIsAttached);\n                if (!newIsAttached)\n                    Fayde.Media.VSM.VisualStateManager.Deactivate(this.XObject, this.TemplateRoot);\n                else\n                    Fayde.Media.VSM.VisualStateManager.Activate(this.XObject, this.TemplateRoot);\n            };\n            ControlNode.prototype.OnParentChanged = function (oldParentNode, newParentNode) {\n                _super.prototype.OnParentChanged.call(this, oldParentNode, newParentNode);\n                this.IsEnabled = newParentNode ? newParentNode.IsEnabled : true;\n            };\n            ControlNode.prototype.OnTemplateChanged = function (oldTemplate, newTemplate) {\n                var subtree = this.SubtreeNode;\n                if (subtree) {\n                    var error = new BError();\n                    if (!this.DetachVisualChild(subtree.XObject, error))\n                        error.ThrowException();\n                }\n                this.LayoutUpdater.invalidateMeasure();\n            };\n            Object.defineProperty(ControlNode.prototype, \"IsEnabled\", {\n                get: function () { return this.XObject.IsEnabled; },\n                set: function (value) {\n                    Fayde.Providers.IsEnabledStore.EmitInheritedChanged(this, value);\n                    this.OnIsEnabledChanged(undefined, value);\n                },\n                enumerable: true,\n                configurable: true\n            });\n            ControlNode.prototype.OnIsEnabledChanged = function (oldValue, newValue) {\n                if (!newValue) {\n                    this.IsMouseOver = false;\n                    if (Fayde.Surface.RemoveFocusFrom(this.XObject)) {\n                        Fayde.TabNavigationWalker.Focus(this, true);\n                    }\n                    this.ReleaseMouseCapture();\n                }\n                _super.prototype.OnIsEnabledChanged.call(this, oldValue, newValue);\n            };\n            ControlNode.prototype.Focus = function (recurse) {\n                return Fayde.Surface.Focus(this.XObject, recurse);\n            };\n            ControlNode.prototype.CanCaptureMouse = function () { return this.XObject.IsEnabled; };\n            return ControlNode;\n        })(Fayde.FENode);\n        Controls.ControlNode = ControlNode;\n        var Control = (function (_super) {\n            __extends(Control, _super);\n            function Control() {\n                _super.call(this);\n                this.IsEnabledChanged = new nullstone.Event();\n                Fayde.UIReaction(Control.IsEnabledProperty, function (upd, nv, ov, control) {\n                    var args = {\n                        Property: Control.IsEnabledProperty,\n                        OldValue: ov,\n                        NewValue: nv\n                    };\n                    control.OnIsEnabledChanged(args);\n                    if (nv !== true)\n                        control.XamlNode.IsMouseOver = false;\n                    control.UpdateVisualState();\n                    control.IsEnabledChanged.raiseAsync(control, args);\n                }, false, true, this);\n                Fayde.UIReaction(Control.PaddingProperty, function (upd, nv, ov) { return upd.invalidateMeasure(); }, false, true, this);\n                Fayde.UIReaction(Control.BorderThicknessProperty, function (upd, nv, ov) { return upd.invalidateMeasure(); }, false, true, this);\n                Fayde.UIReaction(Control.HorizontalContentAlignmentProperty, function (upd, nv, ov) { return upd.invalidateArrange(); }, false, true, this);\n                Fayde.UIReaction(Control.VerticalContentAlignmentProperty, function (upd, nv, ov) { return upd.invalidateArrange(); }, false, true, this);\n            }\n            Control.prototype.CreateNode = function () { return new ControlNode(this); };\n            Control.prototype.CreateLayoutUpdater = function () { return new minerva.controls.control.ControlUpdater(); };\n            Control.prototype.IsInheritable = function (propd) {\n                if (ControlInheritedProperties.indexOf(propd) > -1)\n                    return true;\n                return _super.prototype.IsInheritable.call(this, propd);\n            };\n            Object.defineProperty(Control.prototype, \"IsFocused\", {\n                get: function () { return this.XamlNode.IsFocused; },\n                enumerable: true,\n                configurable: true\n            });\n            Control.prototype.GetTemplateChild = function (childName, type) {\n                var root = this.XamlNode.TemplateRoot;\n                if (!root)\n                    return;\n                var n = root.XamlNode.FindName(childName);\n                if (!n)\n                    return;\n                var xobj = n.XObject;\n                if (!type || (xobj instanceof type))\n                    return xobj;\n            };\n            Control.prototype.ApplyTemplate = function () {\n                var error = new BError();\n                var result = this.XamlNode.ApplyTemplateWithError(error);\n                if (error.Message)\n                    error.ThrowException();\n                return result;\n            };\n            Control.prototype.GetDefaultStyle = function () {\n                return undefined;\n            };\n            Control.prototype.OnIsEnabledChanged = function (e) { };\n            Control.prototype.OnGotFocus = function (e) {\n                this.XamlNode.IsFocused = true;\n                this.UpdateValidationState();\n            };\n            Control.prototype.OnLostFocus = function (e) {\n                this.XamlNode.IsFocused = false;\n                this.UpdateValidationState();\n            };\n            Control.prototype.UpdateVisualState = function (useTransitions) {\n                var _this = this;\n                useTransitions = useTransitions !== false;\n                var gotoFunc = function (state) { return Fayde.Media.VSM.VisualStateManager.GoToState(_this, state, useTransitions); };\n                this.GoToStates(gotoFunc);\n            };\n            Control.prototype.GoToStates = function (gotoFunc) {\n                this.GoToStateCommon(gotoFunc);\n                this.GoToStateFocus(gotoFunc);\n                this.GoToStateSelection(gotoFunc);\n            };\n            Control.prototype.GoToStateCommon = function (gotoFunc) {\n                if (!this.IsEnabled)\n                    return gotoFunc(\"Disabled\");\n                if (this.IsMouseOver)\n                    return gotoFunc(\"MouseOver\");\n                return gotoFunc(\"Normal\");\n            };\n            Control.prototype.GoToStateFocus = function (gotoFunc) {\n                if (this.IsFocused && this.IsEnabled)\n                    return gotoFunc(\"Focused\");\n                return gotoFunc(\"Unfocused\");\n            };\n            Control.prototype.GoToStateSelection = function (gotoFunc) {\n                return false;\n            };\n            Control.prototype.UpdateValidationState = function (valid) {\n                var _this = this;\n                if (valid === undefined) {\n                    var errors = Fayde.Validation.GetErrors(this);\n                    valid = errors.Count < 1;\n                }\n                var gotoFunc = function (state) { return Fayde.Media.VSM.VisualStateManager.GoToState(_this, state, true); };\n                this.GoToStateValidation(valid, gotoFunc);\n            };\n            Control.prototype.GoToStateValidation = function (valid, gotoFunc) {\n                if (valid)\n                    return gotoFunc(\"Valid\");\n                else if (this.IsFocused)\n                    return gotoFunc(\"InvalidFocused\");\n                return gotoFunc(\"InvalidUnfocused\");\n            };\n            Control.BackgroundProperty = DependencyProperty.RegisterCore(\"Background\", function () { return Fayde.Media.Brush; }, Control);\n            Control.BorderBrushProperty = DependencyProperty.RegisterCore(\"BorderBrush\", function () { return Fayde.Media.Brush; }, Control);\n            Control.BorderThicknessProperty = DependencyProperty.RegisterCore(\"BorderThickness\", function () { return Thickness; }, Control);\n            Control.FontFamilyProperty = Fayde.InheritableOwner.FontFamilyProperty.ExtendTo(Control);\n            Control.FontSizeProperty = Fayde.InheritableOwner.FontSizeProperty.ExtendTo(Control);\n            Control.FontStretchProperty = Fayde.InheritableOwner.FontStretchProperty.ExtendTo(Control);\n            Control.FontStyleProperty = Fayde.InheritableOwner.FontStyleProperty.ExtendTo(Control);\n            Control.FontWeightProperty = Fayde.InheritableOwner.FontWeightProperty.ExtendTo(Control);\n            Control.ForegroundProperty = Fayde.InheritableOwner.ForegroundProperty.ExtendTo(Control);\n            Control.HorizontalContentAlignmentProperty = DependencyProperty.Register(\"HorizontalContentAlignment\", function () { return new Fayde.Enum(Fayde.HorizontalAlignment); }, Control, Fayde.HorizontalAlignment.Center);\n            Control.IsEnabledProperty = DependencyProperty.Register(\"IsEnabled\", function () { return Boolean; }, Control, true);\n            Control.IsTabStopProperty = DependencyProperty.Register(\"IsTabStop\", function () { return Boolean; }, Control, true);\n            Control.PaddingProperty = DependencyProperty.RegisterCore(\"Padding\", function () { return Thickness; }, Control);\n            Control.TabIndexProperty = DependencyProperty.Register(\"TabIndex\", function () { return Number; }, Control);\n            Control.TabNavigationProperty = DependencyProperty.Register(\"TabNavigation\", function () { return new Fayde.Enum(Fayde.Input.KeyboardNavigationMode); }, Control, Fayde.Input.KeyboardNavigationMode.Local);\n            Control.TemplateProperty = DependencyProperty.Register(\"Template\", function () { return Controls.ControlTemplate; }, Control, undefined, function (d, args) { return d.XamlNode.OnTemplateChanged(args.OldValue, args.NewValue); });\n            Control.VerticalContentAlignmentProperty = DependencyProperty.Register(\"VerticalContentAlignment\", function () { return new Fayde.Enum(Fayde.VerticalAlignment); }, Control, Fayde.VerticalAlignment.Center);\n            return Control;\n        })(Fayde.FrameworkElement);\n        Controls.Control = Control;\n        Fayde.CoreLibrary.add(Control);\n        Control.IsEnabledProperty.Store = Fayde.Providers.IsEnabledStore.Instance;\n        var ControlInheritedProperties = [\n            Control.FontFamilyProperty,\n            Control.FontSizeProperty,\n            Control.FontStretchProperty,\n            Control.FontStyleProperty,\n            Control.FontWeightProperty,\n            Control.ForegroundProperty\n        ];\n        Controls.TemplateVisualStates = nullstone.CreateTypedAnnotation(\"TemplateVisualState\");\n        Controls.TemplateParts = nullstone.CreateTypedAnnotation(\"TemplatePart\");\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Control.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ContentControlNode = (function (_super) {\n            __extends(ContentControlNode, _super);\n            function ContentControlNode(xobj) {\n                _super.call(this, xobj);\n                this._DefaultPresenter = null;\n            }\n            ContentControlNode.prototype.GetDefaultVisualTree = function () {\n                var xobj = this.XObject;\n                var content = xobj.Content;\n                if (content instanceof Fayde.UIElement)\n                    return content;\n                var presenter = this._DefaultPresenter;\n                if (!presenter) {\n                    presenter = this._DefaultPresenter = new Controls.ContentPresenter();\n                    presenter.TemplateOwner = this.XObject;\n                }\n                presenter.SetValue(Controls.ContentPresenter.ContentProperty, new Fayde.TemplateBindingExpression(\"Content\"));\n                presenter.SetValue(Controls.ContentPresenter.ContentTemplateProperty, new Fayde.TemplateBindingExpression(\"ContentTemplate\"));\n                return presenter;\n            };\n            ContentControlNode.prototype.OnContentChanged = function (o, n) {\n                if (o instanceof Fayde.UIElement || n instanceof Fayde.UIElement)\n                    this.CleanOldContent(o);\n            };\n            ContentControlNode.prototype.OnTemplateChanged = function (oldTemplate, newTemplate) {\n                if (oldTemplate)\n                    this.CleanOldContent(this.XObject.Content);\n                _super.prototype.OnTemplateChanged.call(this, oldTemplate, newTemplate);\n            };\n            ContentControlNode.prototype.CleanOldContent = function (content) {\n                if (content instanceof Fayde.UIElement) {\n                    Fayde.FENode.DetachFromVisualParent(content);\n                    this.LayoutUpdater.invalidateMeasure();\n                }\n                else {\n                    var presenter = this._DefaultPresenter;\n                    if (presenter) {\n                        presenter.ClearValue(Controls.ContentPresenter.ContentProperty);\n                        presenter.ClearValue(Controls.ContentPresenter.ContentTemplateProperty);\n                        Fayde.FENode.DetachFromVisualParent(presenter);\n                        this.LayoutUpdater.invalidateMeasure();\n                    }\n                }\n            };\n            return ContentControlNode;\n        })(Controls.ControlNode);\n        Controls.ContentControlNode = ContentControlNode;\n        var ContentControl = (function (_super) {\n            __extends(ContentControl, _super);\n            function ContentControl() {\n                _super.call(this);\n                this.DefaultStyleKey = ContentControl;\n            }\n            ContentControl.prototype.CreateNode = function () {\n                return new ContentControlNode(this);\n            };\n            ContentControl.prototype.OnContentPropertyChanged = function (args) {\n                this.XamlNode.OnContentChanged(args.OldValue, args.NewValue);\n                this.OnContentChanged(args.OldValue, args.NewValue);\n            };\n            ContentControl.prototype.OnContentUriPropertyChanged = function (args) {\n                var _this = this;\n                var oldUri;\n                if (args.OldValue instanceof Fayde.Uri) {\n                    this.Content = undefined;\n                    oldUri = args.OldValue;\n                }\n                var newUri;\n                if (args.NewValue instanceof Fayde.Uri) {\n                    newUri = args.NewValue;\n                    Fayde.Markup.Resolve(newUri)\n                        .then(function (m) { return _this._OnLoadedUri(m); }, function (err) { return _this._OnErroredUri(err, newUri); });\n                }\n                this.OnContentUriChanged(oldUri, newUri);\n            };\n            ContentControl.prototype.OnContentChanged = function (oldContent, newContent) {\n            };\n            ContentControl.prototype.OnContentTemplateChanged = function (oldContentTemplate, newContentTemplate) {\n            };\n            ContentControl.prototype.OnContentUriChanged = function (oldSourceUri, newSourceUri) {\n            };\n            ContentControl.prototype._OnLoadedUri = function (xm) {\n                this.Content = Fayde.Markup.Load(this.App, xm);\n            };\n            ContentControl.prototype._OnErroredUri = function (err, src) {\n                console.warn(\"Error resolving XamlResource: '\" + src.toString() + \"'.\");\n            };\n            ContentControl.ContentProperty = DependencyProperty.Register(\"Content\", function () { return Object; }, ContentControl, undefined, function (d, args) { return d.OnContentPropertyChanged(args); });\n            ContentControl.ContentTemplateProperty = DependencyProperty.Register(\"ContentTemplate\", function () { return Fayde.DataTemplate; }, ContentControl, undefined, function (d, args) { return d.OnContentTemplateChanged(args.OldValue, args.NewValue); });\n            ContentControl.ContentUriProperty = DependencyProperty.Register(\"ContentUri\", function () { return Fayde.Uri; }, ContentControl, undefined, function (d, args) { return d.OnContentUriPropertyChanged(args); });\n            return ContentControl;\n        })(Controls.Control);\n        Controls.ContentControl = ContentControl;\n        Fayde.CoreLibrary.add(ContentControl);\n        Fayde.Markup.Content(ContentControl, ContentControl.ContentProperty);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        (function (TextWrapping) {\n            TextWrapping[TextWrapping[\"NoWrap\"] = 0] = \"NoWrap\";\n            TextWrapping[TextWrapping[\"Wrap\"] = 1] = \"Wrap\";\n            TextWrapping[TextWrapping[\"WrapWithOverflow\"] = 2] = \"WrapWithOverflow\";\n        })(Controls.TextWrapping || (Controls.TextWrapping = {}));\n        var TextWrapping = Controls.TextWrapping;\n        Fayde.CoreLibrary.addEnum(TextWrapping, \"TextWrapping\");\n        (function (ScrollBarVisibility) {\n            ScrollBarVisibility[ScrollBarVisibility[\"Disabled\"] = 0] = \"Disabled\";\n            ScrollBarVisibility[ScrollBarVisibility[\"Auto\"] = 1] = \"Auto\";\n            ScrollBarVisibility[ScrollBarVisibility[\"Hidden\"] = 2] = \"Hidden\";\n            ScrollBarVisibility[ScrollBarVisibility[\"Visible\"] = 3] = \"Visible\";\n        })(Controls.ScrollBarVisibility || (Controls.ScrollBarVisibility = {}));\n        var ScrollBarVisibility = Controls.ScrollBarVisibility;\n        Fayde.CoreLibrary.addEnum(ScrollBarVisibility, \"ScrollBarVisibility\");\n        (function (TextTrimming) {\n            TextTrimming[TextTrimming[\"None\"] = 0] = \"None\";\n            TextTrimming[TextTrimming[\"WordEllipsis\"] = 1] = \"WordEllipsis\";\n            TextTrimming[TextTrimming[\"CharacterEllipsis\"] = 2] = \"CharacterEllipsis\";\n        })(Controls.TextTrimming || (Controls.TextTrimming = {}));\n        var TextTrimming = Controls.TextTrimming;\n        Fayde.CoreLibrary.addEnum(TextTrimming, \"TextTrimming\");\n        (function (ClickMode) {\n            ClickMode[ClickMode[\"Release\"] = 0] = \"Release\";\n            ClickMode[ClickMode[\"Press\"] = 1] = \"Press\";\n            ClickMode[ClickMode[\"Hover\"] = 2] = \"Hover\";\n        })(Controls.ClickMode || (Controls.ClickMode = {}));\n        var ClickMode = Controls.ClickMode;\n        Fayde.CoreLibrary.addEnum(ClickMode, \"ClickMode\");\n        (function (PlacementMode) {\n            PlacementMode[PlacementMode[\"Bottom\"] = 0] = \"Bottom\";\n            PlacementMode[PlacementMode[\"Right\"] = 1] = \"Right\";\n            PlacementMode[PlacementMode[\"Mouse\"] = 2] = \"Mouse\";\n            PlacementMode[PlacementMode[\"Left\"] = 3] = \"Left\";\n            PlacementMode[PlacementMode[\"Top\"] = 4] = \"Top\";\n        })(Controls.PlacementMode || (Controls.PlacementMode = {}));\n        var PlacementMode = Controls.PlacementMode;\n        Fayde.CoreLibrary.addEnum(PlacementMode, \"PlacementMode\");\n        (function (SelectionMode) {\n            SelectionMode[SelectionMode[\"Single\"] = 0] = \"Single\";\n            SelectionMode[SelectionMode[\"Multiple\"] = 1] = \"Multiple\";\n            SelectionMode[SelectionMode[\"Extended\"] = 2] = \"Extended\";\n        })(Controls.SelectionMode || (Controls.SelectionMode = {}));\n        var SelectionMode = Controls.SelectionMode;\n        Fayde.CoreLibrary.addEnum(SelectionMode, \"SelectionMode\");\n        (function (MediaElementState) {\n            MediaElementState[MediaElementState[\"Closed\"] = 0] = \"Closed\";\n            MediaElementState[MediaElementState[\"Opening\"] = 1] = \"Opening\";\n            MediaElementState[MediaElementState[\"Buffering\"] = 4] = \"Buffering\";\n            MediaElementState[MediaElementState[\"Playing\"] = 5] = \"Playing\";\n            MediaElementState[MediaElementState[\"Paused\"] = 6] = \"Paused\";\n            MediaElementState[MediaElementState[\"Stopped\"] = 7] = \"Stopped\";\n        })(Controls.MediaElementState || (Controls.MediaElementState = {}));\n        var MediaElementState = Controls.MediaElementState;\n        Fayde.CoreLibrary.addEnum(MediaElementState, \"MediaElementState\");\n        (function (SelectionOnFocus) {\n            SelectionOnFocus[SelectionOnFocus[\"Unchanged\"] = 0] = \"Unchanged\";\n            SelectionOnFocus[SelectionOnFocus[\"SelectAll\"] = 1] = \"SelectAll\";\n            SelectionOnFocus[SelectionOnFocus[\"CaretToBeginning\"] = 2] = \"CaretToBeginning\";\n            SelectionOnFocus[SelectionOnFocus[\"CaretToEnd\"] = 3] = \"CaretToEnd\";\n            SelectionOnFocus[SelectionOnFocus[\"Default\"] = 4] = \"Default\";\n            SelectionOnFocus[SelectionOnFocus[\"DefaultSelectAll\"] = 5] = \"DefaultSelectAll\";\n        })(Controls.SelectionOnFocus || (Controls.SelectionOnFocus = {}));\n        var SelectionOnFocus = Controls.SelectionOnFocus;\n        Fayde.CoreLibrary.addEnum(SelectionOnFocus, \"SelectionOnFocus\");\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../ContentControl.ts\" />\n/// <reference path=\"../Enums.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var ButtonBase = (function (_super) {\n                __extends(ButtonBase, _super);\n                function ButtonBase() {\n                    _super.call(this);\n                    this.Click = new Fayde.RoutedEvent();\n                    this._IsMouseCaptured = false;\n                    this._IsMouseLeftButtonDown = false;\n                    this._IsSpaceKeyDown = false;\n                    this._MousePosition = new Point();\n                    this._SuspendStateChanges = false;\n                    this.IsTabStop = true;\n                }\n                ButtonBase.prototype.OnIsPressedChanged = function (args) {\n                    this.UpdateVisualState();\n                };\n                ButtonBase.prototype.OnIsEnabledChanged = function (e) {\n                    var _this = this;\n                    if (!!e.NewValue)\n                        return;\n                    this._DoWithSuspend(function () {\n                        _this.SetCurrentValue(ButtonBase.IsFocusedProperty, false);\n                        _this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\n                        _this._IsMouseCaptured = false;\n                        _this._IsSpaceKeyDown = false;\n                        _this._IsMouseLeftButtonDown = false;\n                    });\n                };\n                ButtonBase.prototype.OnMouseEnter = function (e) {\n                    var _this = this;\n                    _super.prototype.OnMouseEnter.call(this, e);\n                    this.UpdateVisualState();\n                    if (this.ClickMode !== Controls.ClickMode.Hover || !this.IsEnabled)\n                        return;\n                    this._DoWithSuspend(function () {\n                        _this.SetCurrentValue(ButtonBase.IsPressedProperty, true);\n                        _this.OnClick();\n                    });\n                };\n                ButtonBase.prototype.OnMouseLeave = function (e) {\n                    var _this = this;\n                    _super.prototype.OnMouseLeave.call(this, e);\n                    this.UpdateVisualState();\n                    if (this.ClickMode !== Controls.ClickMode.Hover || !this.IsEnabled)\n                        return;\n                    this._DoWithSuspend(function () {\n                        _this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\n                    });\n                };\n                ButtonBase.prototype.OnMouseMove = function (e) {\n                    _super.prototype.OnMouseMove.call(this, e);\n                    this._MousePosition = e.GetPosition(this);\n                    if (this._IsMouseLeftButtonDown && this.IsEnabled && this.ClickMode !== Controls.ClickMode.Hover && this._IsMouseCaptured && !this._IsSpaceKeyDown) {\n                        this.SetCurrentValue(ButtonBase.IsPressedProperty, this._IsValidPosition(this._MousePosition));\n                    }\n                };\n                ButtonBase.prototype.OnMouseLeftButtonDown = function (e) {\n                    var _this = this;\n                    _super.prototype.OnMouseLeftButtonDown.call(this, e);\n                    this._IsMouseLeftButtonDown = true;\n                    if (!this.IsEnabled)\n                        return;\n                    var clickMode = this.ClickMode;\n                    if (clickMode === Controls.ClickMode.Hover)\n                        return;\n                    e.Handled = true;\n                    this._DoWithSuspend(function () {\n                        _this.Focus();\n                        _this._CaptureMouseInternal();\n                        if (_this._IsMouseCaptured)\n                            _this.SetCurrentValue(ButtonBase.IsPressedProperty, true);\n                    });\n                    if (clickMode === Controls.ClickMode.Press)\n                        this.OnClick();\n                };\n                ButtonBase.prototype.OnMouseLeftButtonUp = function (e) {\n                    _super.prototype.OnMouseLeftButtonDown.call(this, e);\n                    this._IsMouseLeftButtonDown = false;\n                    if (!this.IsEnabled)\n                        return;\n                    var clickMode = this.ClickMode;\n                    if (clickMode === Controls.ClickMode.Hover)\n                        return;\n                    e.Handled = true;\n                    if (!this._IsSpaceKeyDown && this.IsPressed && clickMode === Controls.ClickMode.Release)\n                        this.OnClick();\n                    if (!this._IsSpaceKeyDown) {\n                        this._ReleaseMouseCaptureInternal();\n                        this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\n                    }\n                };\n                ButtonBase.prototype.OnGotFocus = function (e) {\n                    _super.prototype.OnGotFocus.call(this, e);\n                    this.SetCurrentValue(ButtonBase.IsFocusedProperty, true);\n                    this.UpdateVisualState();\n                };\n                ButtonBase.prototype.OnLostFocus = function (e) {\n                    var _this = this;\n                    _super.prototype.OnLostFocus.call(this, e);\n                    this.SetCurrentValue(ButtonBase.IsFocusedProperty, false);\n                    if (this.ClickMode === Controls.ClickMode.Hover)\n                        return;\n                    this._DoWithSuspend(function () {\n                        _this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\n                        _this._ReleaseMouseCaptureInternal();\n                        _this._IsSpaceKeyDown = false;\n                    });\n                };\n                ButtonBase.prototype.OnTouchMove = function (e) {\n                    _super.prototype.OnTouchMove.call(this, e);\n                    if (!this.IsEnabled || e.Device.Captured !== this)\n                        return;\n                    var tp = e.GetTouchPoint(this);\n                    this.SetCurrentValue(ButtonBase.IsPressedProperty, this._IsValidPosition(tp.Position));\n                };\n                ButtonBase.prototype.OnTouchDown = function (e) {\n                    var _this = this;\n                    _super.prototype.OnTouchDown.call(this, e);\n                    if (!this.IsEnabled)\n                        return;\n                    e.Handled = true;\n                    this._DoWithSuspend(function () {\n                        _this.Focus();\n                        if (e.Device.Capture(_this))\n                            _this.SetCurrentValue(ButtonBase.IsPressedProperty, true);\n                    });\n                    if (this.ClickMode === Controls.ClickMode.Press)\n                        this.OnClick();\n                };\n                ButtonBase.prototype.OnTouchUp = function (e) {\n                    _super.prototype.OnTouchUp.call(this, e);\n                    if (!this.IsEnabled)\n                        return;\n                    e.Handled = true;\n                    if (this.IsPressed && this.ClickMode === Controls.ClickMode.Release)\n                        this.OnClick();\n                    e.Device.ReleaseCapture(this);\n                    this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\n                };\n                ButtonBase.prototype.OnClick = function () {\n                    var cmd = this.Command;\n                    var par = this.CommandParameter;\n                    if (cmd != null) {\n                        var canf = cmd.CanExecute;\n                        if ((canf == null || typeof canf !== \"function\" || canf(par)) && (cmd.Execute && typeof cmd.Execute === \"function\"))\n                            cmd.Execute(par);\n                    }\n                    this.Click.raise(this, new Fayde.RoutedEventArgs());\n                };\n                ButtonBase.prototype._DoWithSuspend = function (action) {\n                    this._SuspendStateChanges = true;\n                    try {\n                        action();\n                    }\n                    finally {\n                        this._SuspendStateChanges = false;\n                        this.UpdateVisualState();\n                    }\n                };\n                ButtonBase.prototype.UpdateVisualState = function (useTransitions) {\n                    if (this._SuspendStateChanges)\n                        return;\n                    _super.prototype.UpdateVisualState.call(this, useTransitions);\n                };\n                ButtonBase.prototype.GoToStateCommon = function (gotoFunc) {\n                    if (!this.IsEnabled)\n                        return gotoFunc(\"Disabled\");\n                    if (this.IsPressed)\n                        return gotoFunc(\"Pressed\");\n                    if (this.IsMouseOver)\n                        return gotoFunc(\"MouseOver\");\n                    return gotoFunc(\"Normal\");\n                };\n                ButtonBase.prototype._CaptureMouseInternal = function () {\n                    if (!this._IsMouseCaptured)\n                        this._IsMouseCaptured = this.CaptureMouse();\n                };\n                ButtonBase.prototype._ReleaseMouseCaptureInternal = function () {\n                    this.ReleaseMouseCapture();\n                    this._IsMouseCaptured = false;\n                };\n                ButtonBase.prototype._IsValidPosition = function (pos) {\n                    return pos.x >= 0.0 && pos.x <= this.ActualWidth\n                        && pos.y >= 0.0 && pos.y <= this.ActualHeight;\n                };\n                ButtonBase.prototype.OnCommandChanged = function (args) {\n                    var cmd = Fayde.Input.ICommand_.as(args.OldValue);\n                    if (cmd)\n                        cmd.CanExecuteChanged.off(this.OnCommandCanExecuteChanged, this);\n                    cmd = Fayde.Input.ICommand_.as(args.NewValue);\n                    if (cmd) {\n                        cmd.CanExecuteChanged.on(this.OnCommandCanExecuteChanged, this);\n                        this.IsEnabled = cmd.CanExecute(this.CommandParameter);\n                    }\n                };\n                ButtonBase.prototype.OnCommandCanExecuteChanged = function (sender, e) {\n                    this.IsEnabled = this.Command.CanExecute(this.CommandParameter);\n                };\n                ButtonBase.prototype.OnCommandParameterChanged = function (args) {\n                    var cmd = this.Command;\n                    if (cmd)\n                        this.IsEnabled = cmd.CanExecute(args.NewValue);\n                };\n                ButtonBase.ClickModeProperty = DependencyProperty.Register(\"ClickMode\", function () { return new Fayde.Enum(Controls.ClickMode); }, ButtonBase, Controls.ClickMode.Release);\n                ButtonBase.IsPressedProperty = DependencyProperty.RegisterReadOnly(\"IsPressed\", function () { return Boolean; }, ButtonBase, false, function (d, args) { return d.OnIsPressedChanged(args); });\n                ButtonBase.IsFocusedProperty = DependencyProperty.RegisterReadOnly(\"IsFocused\", function () { return Boolean; }, ButtonBase, false);\n                ButtonBase.CommandProperty = DependencyProperty.RegisterCore(\"Command\", function () { return Fayde.Input.ICommand_; }, ButtonBase, undefined, function (d, args) { return d.OnCommandChanged(args); });\n                ButtonBase.CommandParameterProperty = DependencyProperty.RegisterCore(\"CommandParameter\", function () { return Object; }, ButtonBase, undefined, function (d, args) { return d.OnCommandParameterChanged(args); });\n                return ButtonBase;\n            })(Controls.ContentControl);\n            Primitives.ButtonBase = ButtonBase;\n            Fayde.CoreLibrary.add(ButtonBase);\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Primitives/ButtonBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Button = (function (_super) {\n            __extends(Button, _super);\n            function Button() {\n                _super.call(this);\n                this.DefaultStyleKey = Button;\n            }\n            Button.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                this.UpdateVisualState(false);\n            };\n            Button.prototype.OnIsEnabledChanged = function (e) {\n                _super.prototype.OnIsEnabledChanged.call(this, e);\n                this.IsTabStop = e.NewValue;\n            };\n            return Button;\n        })(Controls.Primitives.ButtonBase);\n        Controls.Button = Button;\n        Fayde.CoreLibrary.add(Button);\n        Controls.TemplateVisualStates(Button, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Pressed\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"XamlObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var XamlObjectCollection = (function (_super) {\n        __extends(XamlObjectCollection, _super);\n        function XamlObjectCollection() {\n            _super.apply(this, arguments);\n            this._ht = [];\n        }\n        XamlObjectCollection.prototype.AttachTo = function (xobj) {\n            var error = new BError();\n            if (!this.XamlNode.AttachTo(xobj.XamlNode, error))\n                error.ThrowException();\n        };\n        Object.defineProperty(XamlObjectCollection.prototype, \"Count\", {\n            get: function () {\n                return this._ht.length;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        XamlObjectCollection.prototype.GetRange = function (startIndex, endIndex) {\n            return this._ht.slice(startIndex, endIndex);\n        };\n        XamlObjectCollection.prototype.GetValueAt = function (index) {\n            return this._ht[index];\n        };\n        XamlObjectCollection.prototype.SetValueAt = function (index, value) {\n            if (!this.CanAdd(value))\n                return false;\n            if (index < 0 || index >= this._ht.length)\n                return false;\n            var removed = this._ht[index];\n            var added = value;\n            var error = new BError();\n            if (this.AddingToCollection(added, error)) {\n                this._ht[index] = added;\n                this.RemovedFromCollection(removed, true);\n                this._RaiseItemReplaced(removed, added, index);\n                return true;\n            }\n            return false;\n        };\n        XamlObjectCollection.prototype.Add = function (value) {\n            var rv = this.Insert(this._ht.length, value);\n            return rv ? this._ht.length - 1 : -1;\n        };\n        XamlObjectCollection.prototype.Insert = function (index, value) {\n            if (!this.CanAdd(value))\n                return false;\n            if (index < 0)\n                return false;\n            var count = this._ht.length;\n            if (index > count)\n                index = count;\n            var error = new BError();\n            if (this.AddingToCollection(value, error)) {\n                this._ht.splice(index, 0, value);\n                this._RaiseItemAdded(value, index);\n                return true;\n            }\n            if (error.Message)\n                throw new Exception(error.Message);\n            return false;\n        };\n        XamlObjectCollection.prototype.Remove = function (value) {\n            var index = this.IndexOf(value);\n            if (index === -1)\n                return false;\n            return this.RemoveAt(index);\n        };\n        XamlObjectCollection.prototype.RemoveAt = function (index) {\n            if (index < 0 || index >= this._ht.length)\n                return false;\n            var value = this._ht[index];\n            this._ht.splice(index, 1);\n            this.RemovedFromCollection(value, true);\n            this._RaiseItemRemoved(value, index);\n            return true;\n        };\n        XamlObjectCollection.prototype.Clear = function () {\n            var old = this._ht;\n            this._ht = [];\n            var len = old.length;\n            for (var i = 0; i < len; i++) {\n                this.RemovedFromCollection(old[i], true);\n            }\n            this._RaiseCleared(old);\n            return true;\n        };\n        XamlObjectCollection.prototype.IndexOf = function (value) {\n            return this._ht.indexOf(value);\n        };\n        XamlObjectCollection.prototype.Contains = function (value) {\n            return this.IndexOf(value) > -1;\n        };\n        XamlObjectCollection.prototype.CanAdd = function (value) {\n            return true;\n        };\n        XamlObjectCollection.prototype.AddingToCollection = function (value, error) {\n            if (value instanceof Fayde.XamlObject)\n                return value.XamlNode.AttachTo(this.XamlNode, error);\n            return true;\n        };\n        XamlObjectCollection.prototype.RemovedFromCollection = function (value, isValueSafe) {\n            if (value instanceof Fayde.XamlObject)\n                value.XamlNode.Detach();\n        };\n        XamlObjectCollection.prototype.getEnumerator = function (reverse) {\n            return nullstone.IEnumerator_.fromArray(this._ht, reverse);\n        };\n        XamlObjectCollection.prototype.GetNodeEnumerator = function (reverse) {\n            var prev = this.getEnumerator(reverse);\n            return {\n                current: undefined,\n                moveNext: function () {\n                    if (!prev.moveNext()) {\n                        this.current = undefined;\n                        return false;\n                    }\n                    var xobj = prev.current;\n                    this.current = xobj.XamlNode;\n                    return true;\n                }\n            };\n        };\n        XamlObjectCollection.prototype._RaiseItemAdded = function (value, index) {\n        };\n        XamlObjectCollection.prototype._RaiseItemRemoved = function (value, index) {\n        };\n        XamlObjectCollection.prototype._RaiseItemReplaced = function (removed, added, index) {\n        };\n        XamlObjectCollection.prototype._RaiseCleared = function (old) {\n        };\n        XamlObjectCollection.prototype.CloneCore = function (source) {\n            for (var en = source.getEnumerator(); en.moveNext();) {\n                this.Add(Fayde.Clone(en.current));\n            }\n        };\n        XamlObjectCollection.prototype.ToArray = function () {\n            return this._ht.slice(0);\n        };\n        return XamlObjectCollection;\n    })(Fayde.XamlObject);\n    Fayde.XamlObjectCollection = XamlObjectCollection;\n    nullstone.ICollection_.mark(XamlObjectCollection);\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/FrameworkElement.ts\" />\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\n/// <reference path=\"../Core/Providers/ImmutableStore.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var PanelChildrenCollection = (function (_super) {\n            __extends(PanelChildrenCollection, _super);\n            function PanelChildrenCollection() {\n                _super.apply(this, arguments);\n                this.$$updaters = [];\n            }\n            PanelChildrenCollection.prototype.AddingToCollection = function (value, error) {\n                var panelNode = this.XamlNode.ParentNode;\n                if (!panelNode.AttachVisualChild(value, error))\n                    return false;\n                return _super.prototype.AddingToCollection.call(this, value, error);\n            };\n            PanelChildrenCollection.prototype.RemovedFromCollection = function (value, isValueSafe) {\n                var panelNode = this.XamlNode.ParentNode;\n                panelNode.DetachVisualChild(value, null);\n                _super.prototype.RemovedFromCollection.call(this, value, isValueSafe);\n            };\n            PanelChildrenCollection.prototype._RaiseCleared = function (values) {\n                this.$$updaters.length = 0;\n            };\n            PanelChildrenCollection.prototype._RaiseItemAdded = function (value, index) {\n                this.$$updaters.splice(index, 0, value.XamlNode.LayoutUpdater);\n            };\n            PanelChildrenCollection.prototype._RaiseItemRemoved = function (value, index) {\n                this.$$updaters.splice(index, 1);\n            };\n            PanelChildrenCollection.prototype._RaiseItemReplaced = function (removed, added, index) {\n                this.$$updaters.splice(index, 1, added.XamlNode.LayoutUpdater);\n            };\n            return PanelChildrenCollection;\n        })(Fayde.XamlObjectCollection);\n        var PanelNode = (function (_super) {\n            __extends(PanelNode, _super);\n            function PanelNode(xobj) {\n                _super.call(this, xobj);\n            }\n            PanelNode.prototype.AttachVisualChild = function (uie, error) {\n                this.OnVisualChildAttached(uie);\n                uie.XamlNode.SetIsLoaded(this.IsLoaded);\n                return true;\n            };\n            PanelNode.prototype.DetachVisualChild = function (uie, error) {\n                this.OnVisualChildDetached(uie);\n                uie.XamlNode.SetIsLoaded(false);\n                return true;\n            };\n            return PanelNode;\n        })(Fayde.FENode);\n        Controls.PanelNode = PanelNode;\n        var Panel = (function (_super) {\n            __extends(Panel, _super);\n            function Panel() {\n                _super.call(this);\n                var coll = Panel.ChildrenProperty.Initialize(this);\n                this.XamlNode.LayoutUpdater.setChildren(coll.$$updaters);\n                var error = new BError();\n                this.XamlNode.SetSubtreeNode(coll.XamlNode, error);\n            }\n            Panel.prototype.CreateNode = function () { return new PanelNode(this); };\n            Panel.prototype.CreateLayoutUpdater = function () { return new minerva.controls.panel.PanelUpdater(); };\n            Panel.GetZIndex = function (uie) { return uie.GetValue(Panel.ZIndexProperty); };\n            Panel.SetZIndex = function (uie, value) { uie.SetValue(Panel.ZIndexProperty, value); };\n            Panel.BackgroundProperty = DependencyProperty.Register(\"Background\", function () { return Fayde.Media.Brush; }, Panel);\n            Panel.ChildrenProperty = DependencyProperty.RegisterImmutable(\"Children\", function () { return PanelChildrenCollection; }, Panel);\n            Panel.ZIndexProperty = DependencyProperty.RegisterAttached(\"ZIndex\", function () { return Number; }, Panel, 0);\n            return Panel;\n        })(Fayde.FrameworkElement);\n        Controls.Panel = Panel;\n        Fayde.CoreLibrary.add(Panel);\n        Fayde.Markup.Content(Panel, Panel.ChildrenProperty);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(Panel.BackgroundProperty, function (upd, ov, nv) {\n                if (nv !== ov)\n                    upd.updateBounds();\n                upd.invalidate();\n            });\n            Fayde.UIReactionAttached(Panel.ZIndexProperty, minerva.controls.panel.reactTo.zIndex);\n        })(reactions || (reactions = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Panel.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Canvas = (function (_super) {\n            __extends(Canvas, _super);\n            function Canvas() {\n                _super.apply(this, arguments);\n            }\n            Canvas.prototype.CreateLayoutUpdater = function () { return new minerva.controls.canvas.CanvasUpdater(); };\n            Canvas.GetTop = function (d) { return d.GetValue(Canvas.TopProperty); };\n            Canvas.SetTop = function (d, value) { d.SetValue(Canvas.TopProperty, value); };\n            Canvas.GetLeft = function (d) { return d.GetValue(Canvas.LeftProperty); };\n            Canvas.SetLeft = function (d, value) { d.SetValue(Canvas.LeftProperty, value); };\n            Canvas.TopProperty = DependencyProperty.RegisterAttached(\"Top\", function () { return Number; }, Canvas, 0.0);\n            Canvas.LeftProperty = DependencyProperty.RegisterAttached(\"Left\", function () { return Number; }, Canvas, 0.0);\n            return Canvas;\n        })(Controls.Panel);\n        Controls.Canvas = Canvas;\n        Fayde.CoreLibrary.add(Canvas);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReactionAttached(Canvas.TopProperty, minerva.controls.canvas.reactTo.top);\n            Fayde.UIReactionAttached(Canvas.LeftProperty, minerva.controls.canvas.reactTo.left);\n        })(reactions || (reactions = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ButtonBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var ToggleButton = (function (_super) {\n                __extends(ToggleButton, _super);\n                function ToggleButton() {\n                    _super.call(this);\n                    this.Checked = new Fayde.RoutedEvent();\n                    this.Indeterminate = new Fayde.RoutedEvent();\n                    this.Unchecked = new Fayde.RoutedEvent();\n                    this.DefaultStyleKey = ToggleButton;\n                }\n                ToggleButton.prototype.OnApplyTemplate = function () {\n                    _super.prototype.OnApplyTemplate.call(this);\n                    this.UpdateVisualState(false);\n                };\n                ToggleButton.prototype.OnContentChanged = function (oldContent, newContent) {\n                    _super.prototype.OnContentChanged.call(this, oldContent, newContent);\n                    this.UpdateVisualState();\n                };\n                ToggleButton.prototype.OnClick = function () {\n                    this.OnToggle();\n                    _super.prototype.OnClick.call(this);\n                };\n                ToggleButton.prototype.UpdateVisualState = function (useTransitions) {\n                    useTransitions = useTransitions !== false;\n                    _super.prototype.UpdateVisualState.call(this, useTransitions);\n                    var isChecked = this.IsChecked;\n                    var vsm = Fayde.Media.VSM.VisualStateManager;\n                    if (isChecked === true) {\n                        vsm.GoToState(this, \"Checked\", useTransitions);\n                    }\n                    else if (isChecked === false) {\n                        vsm.GoToState(this, \"Unchecked\", useTransitions);\n                    }\n                    else {\n                        if (!vsm.GoToState(this, \"Indeterminate\", useTransitions)) {\n                            vsm.GoToState(this, \"Unchecked\", useTransitions);\n                        }\n                    }\n                };\n                ToggleButton.prototype.OnIsCheckedChanged = function (args) {\n                    var isChecked = args.NewValue;\n                    this.UpdateVisualState();\n                    var rargs = new Fayde.RoutedEventArgs();\n                    if (isChecked === true) {\n                        this.Checked.raise(this, rargs);\n                    }\n                    else if (isChecked === false) {\n                        this.Unchecked.raise(this, rargs);\n                    }\n                    else {\n                        this.Indeterminate.raise(this, rargs);\n                    }\n                };\n                ToggleButton.prototype.OnToggle = function () {\n                    var isChecked = this.IsChecked;\n                    if (isChecked === true) {\n                        this.SetCurrentValue(ToggleButton.IsCheckedProperty, this.IsThreeState ? null : false);\n                    }\n                    else {\n                        this.SetCurrentValue(ToggleButton.IsCheckedProperty, isChecked != null);\n                    }\n                };\n                ToggleButton.IsCheckedProperty = DependencyProperty.RegisterCore(\"IsChecked\", function () { return Boolean; }, ToggleButton, false, function (d, args) { return d.OnIsCheckedChanged(args); });\n                ToggleButton.IsThreeStateProperty = DependencyProperty.RegisterCore(\"IsThreeState\", function () { return Boolean; }, ToggleButton, false);\n                return ToggleButton;\n            })(Primitives.ButtonBase);\n            Primitives.ToggleButton = ToggleButton;\n            Fayde.CoreLibrary.add(ToggleButton);\n            Controls.TemplateVisualStates(ToggleButton, { GroupName: \"CommonStates\", Name: \"Pressed\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" }, { GroupName: \"CheckStates\", Name: \"Checked\" }, { GroupName: \"CheckStates\", Name: \"Unchecked\" }, { GroupName: \"CheckStates\", Name: \"Indeterminate\" });\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Primitives/ToggleButton.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var CheckBox = (function (_super) {\n            __extends(CheckBox, _super);\n            function CheckBox() {\n                _super.call(this);\n                this.DefaultStyleKey = CheckBox;\n            }\n            return CheckBox;\n        })(Controls.Primitives.ToggleButton);\n        Controls.CheckBox = CheckBox;\n        Fayde.CoreLibrary.add(CheckBox);\n        Controls.TemplateVisualStates(CheckBox, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Pressed\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" }, { GroupName: \"CheckStates\", Name: \"Checked\" }, { GroupName: \"CheckStates\", Name: \"Unchecked\" }, { GroupName: \"CheckStates\", Name: \"Indeterminate\" }, { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" }, { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" }, { GroupName: \"ValidationStates\", Name: \"Valid\" });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ColumnDefinition = (function (_super) {\n            __extends(ColumnDefinition, _super);\n            function ColumnDefinition() {\n                _super.apply(this, arguments);\n            }\n            ColumnDefinition.prototype.setActualWidth = function (value) {\n                this.SetCurrentValue(ColumnDefinition.ActualWidthProperty, value);\n            };\n            ColumnDefinition.WidthProperty = DependencyProperty.Register(\"Width\", function () { return Controls.GridLength; }, ColumnDefinition, undefined, Fayde.Incite);\n            ColumnDefinition.MaxWidthProperty = DependencyProperty.Register(\"MaxWidth\", function () { return Number; }, ColumnDefinition, Number.POSITIVE_INFINITY, Fayde.Incite);\n            ColumnDefinition.MinWidthProperty = DependencyProperty.Register(\"MinWidth\", function () { return Number; }, ColumnDefinition, 0.0, Fayde.Incite);\n            ColumnDefinition.ActualWidthProperty = DependencyProperty.RegisterReadOnly(\"ActualWidth\", function () { return Number; }, ColumnDefinition, 0.0);\n            return ColumnDefinition;\n        })(Fayde.DependencyObject);\n        Controls.ColumnDefinition = ColumnDefinition;\n        Fayde.CoreLibrary.add(ColumnDefinition);\n        var GridUnitType = minerva.controls.grid.GridUnitType;\n        function ConvertColumnDefinition(o) {\n            if (!o || o instanceof ColumnDefinition)\n                return o;\n            var s = o.toString();\n            var cd = new ColumnDefinition();\n            if (s.toLowerCase() === \"auto\") {\n                cd.Width = new Controls.GridLength(0, GridUnitType.Auto);\n                return cd;\n            }\n            if (s === \"*\") {\n                cd.Width = new Controls.GridLength(1, GridUnitType.Star);\n                return cd;\n            }\n            var v = parseFloat(s);\n            if (isNaN(v))\n                throw new XamlParseException(\"Invalid ColumnDefinition: '\" + s + \"'.\");\n            cd.Width = new Controls.GridLength(v, s[s.length - 1] === \"*\" ? GridUnitType.Star : GridUnitType.Pixel);\n            return cd;\n        }\n        nullstone.registerTypeConverter(ColumnDefinition, ConvertColumnDefinition);\n        var ColumnDefinitionCollection = (function (_super) {\n            __extends(ColumnDefinitionCollection, _super);\n            function ColumnDefinitionCollection() {\n                _super.apply(this, arguments);\n            }\n            ColumnDefinitionCollection.prototype._RaiseItemAdded = function (value, index) {\n                Fayde.Incite(this, {\n                    item: value,\n                    index: index,\n                    add: true\n                });\n            };\n            ColumnDefinitionCollection.prototype._RaiseItemRemoved = function (value, index) {\n                Fayde.Incite(this, {\n                    item: value,\n                    index: index,\n                    add: false\n                });\n            };\n            return ColumnDefinitionCollection;\n        })(Fayde.XamlObjectCollection);\n        Controls.ColumnDefinitionCollection = ColumnDefinitionCollection;\n        Fayde.CoreLibrary.add(ColumnDefinitionCollection);\n        function ConvertColumnDefinitionCollection(o) {\n            if (!o || o instanceof ColumnDefinitionCollection)\n                return o;\n            if (typeof o === \"string\") {\n                var tokens = o.split(\" \");\n                var len = tokens.length;\n                var cdc = new ColumnDefinitionCollection();\n                var cd;\n                for (var i = 0; i < len; i++) {\n                    if (cd = ConvertColumnDefinition(tokens[i]))\n                        cdc.Add(cd);\n                }\n                return cdc;\n            }\n            return undefined;\n        }\n        nullstone.registerTypeConverter(ColumnDefinitionCollection, ConvertColumnDefinitionCollection);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Control.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ItemsControlNode = (function (_super) {\n            __extends(ItemsControlNode, _super);\n            function ItemsControlNode(xobj) {\n                _super.call(this, xobj);\n                this.ItemsPresenter = null;\n            }\n            ItemsControlNode.prototype.GetDefaultVisualTree = function () {\n                var presenter = this.ItemsPresenter;\n                if (!presenter)\n                    (presenter = new Controls.ItemsPresenter()).TemplateOwner = this.XObject;\n                return presenter;\n            };\n            return ItemsControlNode;\n        })(Controls.ControlNode);\n        Controls.ItemsControlNode = ItemsControlNode;\n        var ItemsControl = (function (_super) {\n            __extends(ItemsControl, _super);\n            function ItemsControl() {\n                _super.call(this);\n                this._IsDataBound = false;\n                this._SuspendItemsChanged = false;\n                this._DisplayMemberTemplate = null;\n                this.DefaultStyleKey = ItemsControl;\n                var coll = ItemsControl.ItemsProperty.Initialize(this);\n                coll.ItemsChanged.on(this._OnItemsUpdated, this);\n                this._ItemContainersManager = new Controls.Internal.ItemContainersManager(this);\n            }\n            ItemsControl.prototype.CreateNode = function () { return new ItemsControlNode(this); };\n            Object.defineProperty(ItemsControl.prototype, \"IsItemsControl\", {\n                get: function () { return true; },\n                enumerable: true,\n                configurable: true\n            });\n            ItemsControl.GetIsItemsHost = function (d) { return d.GetValue(ItemsControl.IsItemsHostProperty) === true; };\n            ItemsControl.SetIsItemsHost = function (d, value) { d.SetValue(ItemsControl.IsItemsHostProperty, value === true); };\n            ItemsControl.prototype.OnDisplayMemberPathChanged = function (e) {\n                for (var en = this.ItemContainersManager.GetEnumerator(); en.moveNext();) {\n                    this.UpdateContainerTemplate(en.current, en.CurrentItem);\n                }\n            };\n            ItemsControl.prototype.OnItemsSourceChanged = function (e) {\n                var nc = Fayde.Collections.INotifyCollectionChanged_.as(e.OldValue);\n                if (nc)\n                    nc.CollectionChanged.off(this._OnItemsSourceUpdated, this);\n                var items = this.Items;\n                var resetargs = Fayde.Collections.CollectionChangedEventArgs.Reset(items.ToArray());\n                try {\n                    this._SuspendItemsChanged = true;\n                    items.Clear();\n                }\n                finally {\n                    this._SuspendItemsChanged = false;\n                }\n                this.OnItemsChanged(resetargs);\n                this._IsDataBound = !!e.NewValue;\n                var arr = toArray(e.NewValue);\n                try {\n                    this._SuspendItemsChanged = true;\n                    if (arr)\n                        items.AddRange(arr);\n                }\n                finally {\n                    this._SuspendItemsChanged = false;\n                }\n                if (arr)\n                    this.OnItemsChanged(Fayde.Collections.CollectionChangedEventArgs.AddRange(arr, 0));\n                var nc = Fayde.Collections.INotifyCollectionChanged_.as(e.NewValue);\n                if (nc)\n                    nc.CollectionChanged.on(this._OnItemsSourceUpdated, this);\n            };\n            ItemsControl.prototype.OnItemTemplateChanged = function (e) {\n                for (var en = this.ItemContainersManager.GetEnumerator(); en.moveNext();) {\n                    this.UpdateContainerTemplate(en.current, en.CurrentItem);\n                }\n            };\n            Object.defineProperty(ItemsControl.prototype, \"ItemContainersManager\", {\n                get: function () { return this._ItemContainersManager; },\n                enumerable: true,\n                configurable: true\n            });\n            ItemsControl.prototype.PrepareContainerForItem = function (container, item) {\n                if (this.DisplayMemberPath != null && this.ItemTemplate != null)\n                    throw new InvalidOperationException(\"Cannot set 'DisplayMemberPath' and 'ItemTemplate' simultaneously\");\n                this.UpdateContainerTemplate(container, item);\n            };\n            ItemsControl.prototype.ClearContainerForItem = function (container, item) {\n                if (container instanceof Controls.ContentPresenter) {\n                    var cp = container;\n                    if (cp.Content === item)\n                        cp.Content = null;\n                }\n                else if (container instanceof Controls.ContentControl) {\n                    var cc = container;\n                    if (cc.Content === item)\n                        cc.Content = null;\n                }\n            };\n            ItemsControl.prototype.GetContainerForItem = function () { return new Controls.ContentPresenter(); };\n            ItemsControl.prototype.IsItemItsOwnContainer = function (item) { return item instanceof Fayde.UIElement; };\n            ItemsControl.prototype._OnItemsUpdated = function (sender, e) {\n                if (this._SuspendItemsChanged)\n                    return;\n                if (this._IsDataBound)\n                    throw new InvalidOperationException(\"Cannot modify Items while bound to ItemsSource.\");\n                this.OnItemsChanged(e);\n            };\n            ItemsControl.prototype._OnItemsSourceUpdated = function (sender, e) {\n                var items = this.Items;\n                try {\n                    this._SuspendItemsChanged = true;\n                    switch (e.Action) {\n                        case Fayde.Collections.CollectionChangedAction.Add:\n                            for (var i = 0, len = e.NewItems.length; i < len; i++) {\n                                items.Insert(e.NewStartingIndex + i, e.NewItems[i]);\n                            }\n                            break;\n                        case Fayde.Collections.CollectionChangedAction.Remove:\n                            for (var i = 0, len = e.OldItems.length; i < len; i++) {\n                                items.RemoveAt(e.OldStartingIndex);\n                            }\n                            break;\n                        case Fayde.Collections.CollectionChangedAction.Replace:\n                            items.SetValueAt(e.NewStartingIndex, e.NewItems[0]);\n                            break;\n                        case Fayde.Collections.CollectionChangedAction.Reset:\n                            items.Clear();\n                            break;\n                    }\n                }\n                finally {\n                    this._SuspendItemsChanged = false;\n                }\n                this.OnItemsChanged(e);\n            };\n            ItemsControl.prototype.OnItemsChanged = function (e) {\n                switch (e.Action) {\n                    case Fayde.Collections.CollectionChangedAction.Add:\n                        this.OnItemsAdded(e.NewStartingIndex, e.NewItems);\n                        break;\n                    case Fayde.Collections.CollectionChangedAction.Remove:\n                        this.OnItemsRemoved(e.OldStartingIndex, e.OldItems);\n                        break;\n                    case Fayde.Collections.CollectionChangedAction.Replace:\n                        this.OnItemsRemoved(e.NewStartingIndex, e.OldItems);\n                        this.OnItemsAdded(e.NewStartingIndex, e.NewItems);\n                        break;\n                    case Fayde.Collections.CollectionChangedAction.Reset:\n                        this.OnItemsRemoved(0, e.OldItems);\n                        break;\n                }\n            };\n            ItemsControl.prototype.OnItemsAdded = function (index, newItems) {\n                this._ItemContainersManager.OnItemsAdded(index, newItems);\n                var presenter = this.XamlNode.ItemsPresenter;\n                if (presenter)\n                    presenter.OnItemsAdded(index, newItems);\n            };\n            ItemsControl.prototype.OnItemsRemoved = function (index, oldItems) {\n                var presenter = this.XamlNode.ItemsPresenter;\n                if (presenter)\n                    presenter.OnItemsRemoved(index, oldItems);\n                this._ItemContainersManager.OnItemsRemoved(index, oldItems);\n            };\n            ItemsControl.prototype.UpdateContainerTemplate = function (container, item) {\n                if (!container || container === item)\n                    return;\n                var template;\n                if (!(item instanceof Fayde.UIElement))\n                    template = this.ItemTemplate || this._GetDisplayMemberTemplate();\n                if (container instanceof Controls.ContentPresenter) {\n                    var cp = container;\n                    cp.ContentTemplate = template;\n                    cp.Content = item;\n                }\n                else if (container instanceof Controls.ContentControl) {\n                    var cc = container;\n                    cc.ContentTemplate = template;\n                    cc.Content = item;\n                }\n            };\n            ItemsControl.prototype._GetDisplayMemberTemplate = function () {\n                if (!this._DisplayMemberTemplate) {\n                    var xm = DisplayTemplate.create(this.DisplayMemberPath || \"\");\n                    this._DisplayMemberTemplate = Fayde.Markup.Load(this.App, xm);\n                }\n                return this._DisplayMemberTemplate;\n            };\n            ItemsControl.DisplayMemberPathProperty = DependencyProperty.Register(\"DisplayMemberPath\", function () { return String; }, ItemsControl, null, function (d, args) { return d.OnDisplayMemberPathChanged(args); });\n            ItemsControl.ItemsPanelProperty = DependencyProperty.Register(\"ItemsPanel\", function () { return Controls.ItemsPanelTemplate; }, ItemsControl);\n            ItemsControl.ItemsSourceProperty = DependencyProperty.RegisterFull(\"ItemsSource\", function () { return nullstone.IEnumerable_; }, ItemsControl, null, function (d, args) { return d.OnItemsSourceChanged(args); });\n            ItemsControl.ItemsProperty = DependencyProperty.RegisterImmutable(\"Items\", function () { return Controls.ItemCollection; }, ItemsControl);\n            ItemsControl.ItemTemplateProperty = DependencyProperty.Register(\"ItemTemplate\", function () { return Fayde.DataTemplate; }, ItemsControl, undefined, function (d, args) { return d.OnItemTemplateChanged(args); });\n            ItemsControl.IsItemsHostProperty = DependencyProperty.RegisterAttached(\"IsItemsHost\", function () { return Boolean; }, ItemsControl, false);\n            return ItemsControl;\n        })(Controls.Control);\n        Controls.ItemsControl = ItemsControl;\n        Fayde.CoreLibrary.add(ItemsControl);\n        Fayde.Markup.Content(ItemsControl, ItemsControl.ItemsProperty);\n        function toArray(value) {\n            if (value instanceof Array)\n                return value;\n            var enu = nullstone.IEnumerable_.as(value);\n            if (enu) {\n                var arr = [];\n                for (var en = enu.getEnumerator(); en.moveNext();) {\n                    arr.push(en.current);\n                }\n                return arr;\n            }\n            return null;\n        }\n        var DisplayTemplate;\n        (function (DisplayTemplate) {\n            function create(dmp) {\n                return Fayde.Markup.CreateXaml(\"<DataTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\"><Grid><TextBlock Text=\\\"{Binding \" + dmp + \"}\\\" /></Grid></DataTemplate>\", Fayde.XMLNS + \"/itemscontrol/displaymember/\" + dmp);\n            }\n            DisplayTemplate.create = create;\n        })(DisplayTemplate || (DisplayTemplate = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../ItemsControl.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var Selector = (function (_super) {\n                __extends(Selector, _super);\n                function Selector() {\n                    _super.call(this);\n                    this.SelectionChanged = new Fayde.RoutedEvent();\n                    this._SelectedItems = new Fayde.Collections.ObservableCollection();\n                    this._SelectedItemsIsInvalid = false;\n                    this.$TemplateScrollViewer = null;\n                    this._SelectedValueWalker = null;\n                    this._Selection = new Primitives.SelectorSelection(this);\n                }\n                Object.defineProperty(Selector.prototype, \"SynchronizeWithCurrentItem\", {\n                    get: function () {\n                        if (!Fayde.Data.ICollectionView_.is(this.ItemsSource))\n                            return false;\n                        return this.IsSynchronizedWithCurrentItem !== false;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(Selector.prototype, \"SelectedItems\", {\n                    get: function () {\n                        if (this._SelectedItemsIsInvalid)\n                            this._Selection.RepopulateSelectedItems();\n                        return this._SelectedItems;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                Selector.prototype._OnIsSynchronizedWithCurrentItemChanged = function (args) {\n                    if (args.NewValue === true)\n                        throw new ArgumentException(\"Setting IsSynchronizedWithCurrentItem to 'true' is not supported\");\n                    if (args.NewValue != null)\n                        return this.SelectedItem = null;\n                    var icv = Fayde.Data.ICollectionView_.as(this.ItemsSource);\n                    if (icv)\n                        this.SelectedItem = icv.CurrentItem;\n                };\n                Selector.prototype._OnSelectedIndexChanged = function (args) {\n                    if (this._Selection.IsUpdating)\n                        return;\n                    var items = this.Items;\n                    if (args.NewValue < 0 || args.NewValue >= items.Count)\n                        this._Selection.ClearSelection();\n                    else\n                        this._Selection.Select(items.GetValueAt(args.NewValue));\n                };\n                Selector.prototype._OnSelectedItemChanged = function (args) {\n                    if (this._Selection.IsUpdating)\n                        return;\n                    if (args.NewValue == null)\n                        this._Selection.ClearSelection();\n                    else if (this.Items.IndexOf(args.NewValue) !== -1)\n                        this._Selection.Select(args.NewValue);\n                    else if (this.Items.IndexOf(args.OldValue) !== -1)\n                        this._Selection.Select(args.OldValue);\n                    else\n                        this._Selection.ClearSelection();\n                };\n                Selector.prototype._OnSelectedValueChanged = function (args) {\n                    if (this._Selection.IsUpdating)\n                        return;\n                    this._SelectItemFromValue(args.NewValue, false);\n                };\n                Selector.prototype._OnSelectedValuePathChanged = function (args) {\n                    this._SelectedValueWalker = !args.NewValue ? null : new Fayde.Data.PropertyPathWalker(args.NewValue);\n                    this._SelectItemFromValue(this.SelectedValue, true);\n                };\n                Selector.prototype._OnSelectionModeChanged = function (args) {\n                    this._Selection.Mode = args.NewValue;\n                    if (args.NewValue !== Controls.SelectionMode.Single)\n                        return;\n                    var selIndex = this.SelectedIndex;\n                    if (selIndex === -1)\n                        return;\n                    this._Selection.SelectOnly(this.Items.GetValueAt(selIndex));\n                };\n                Selector.prototype.OnApplyTemplate = function () {\n                    _super.prototype.OnApplyTemplate.call(this);\n                    var tsv = this.$TemplateScrollViewer = this.GetTemplateChild(\"ScrollViewer\", Controls.ScrollViewer);\n                    if (tsv) {\n                        tsv.$TemplatedParentHandlesScrolling = true;\n                        tsv.HorizontalScrollBarVisibility = Controls.ScrollViewer.GetHorizontalScrollBarVisibility(this);\n                        tsv.VerticalScrollBarVisibility = Controls.ScrollViewer.GetVerticalScrollBarVisibility(this);\n                    }\n                };\n                Selector.prototype.OnItemsChanged = function (e) {\n                    _super.prototype.OnItemsChanged.call(this, e);\n                    var item;\n                    switch (e.Action) {\n                        case Fayde.Collections.CollectionChangedAction.Add:\n                            var lbi;\n                            if (e.NewItems[0] instanceof Controls.ListBoxItem)\n                                lbi = e.NewItems[0];\n                            if (lbi != null && lbi.IsSelected && !this.SelectedItems.Contains(lbi)) {\n                                this._Selection.Select(lbi);\n                            }\n                            else if (this.SelectedItem != null) {\n                                this._Selection.Select(this.SelectedItem);\n                            }\n                            break;\n                        case Fayde.Collections.CollectionChangedAction.Reset:\n                            var o;\n                            var icv = Fayde.Data.ICollectionView_.as(this.ItemsSource);\n                            if (icv && this.SynchronizeWithCurrentItem)\n                                o = icv.CurrentItem;\n                            else\n                                o = this.SelectedItem;\n                            if (this.Items.Contains(o))\n                                this._Selection.Select(o);\n                            else\n                                this._Selection.ClearSelection();\n                            break;\n                        case Fayde.Collections.CollectionChangedAction.Remove:\n                            item = e.OldItems[0];\n                            if (this.SelectedItems.Contains(item))\n                                this._Selection.Unselect(item);\n                            else if (e.OldStartingIndex <= this.SelectedIndex)\n                                this._Selection.Select(this.SelectedItem);\n                            break;\n                        case Fayde.Collections.CollectionChangedAction.Replace:\n                            item = e.OldItems[0];\n                            this._Selection.Unselect(item);\n                            break;\n                        default:\n                            throw new NotSupportedException(\"Collection changed action '\" + e.Action + \"' not supported\");\n                    }\n                };\n                Selector.prototype.OnItemsSourceChanged = function (args) {\n                    _super.prototype.OnItemsSourceChanged.call(this, args);\n                    var view = Fayde.Data.ICollectionView_.as(args.OldValue);\n                    if (view)\n                        view.CurrentChanged.off(this._OnCurrentItemChanged, this);\n                    view = Fayde.Data.ICollectionView_.as(args.NewValue);\n                    if (view) {\n                        view.CurrentChanged.on(this._OnCurrentItemChanged, this);\n                        if (this.SynchronizeWithCurrentItem)\n                            this._Selection.SelectOnly(view.CurrentItem);\n                        else\n                            this._Selection.ClearSelection();\n                    }\n                    else {\n                        this._Selection.ClearSelection();\n                    }\n                };\n                Selector.prototype.OnItemContainerStyleChanged = function (oldStyle, newStyle) { };\n                Selector.prototype.ClearContainerForItem = function (element, item) {\n                    _super.prototype.ClearContainerForItem.call(this, element, item);\n                    var lbi = element;\n                    lbi.ParentSelector = null;\n                    if (lbi !== item)\n                        lbi.Content = null;\n                };\n                Selector.prototype.PrepareContainerForItem = function (element, item) {\n                    _super.prototype.PrepareContainerForItem.call(this, element, item);\n                    var lbi = element;\n                    lbi.ParentSelector = this;\n                    if (this.SelectedItems.Contains(item))\n                        lbi.IsSelected = true;\n                    if (lbi.IsSelected && !this.SelectedItems.Contains(item))\n                        this._Selection.Select(item);\n                };\n                Selector.prototype._GetValueFromItem = function (item) {\n                    if (this._SelectedValueWalker == null)\n                        return item;\n                    if (item == null)\n                        return item;\n                    return this._SelectedValueWalker.GetValue(item);\n                };\n                Selector.prototype._SelectItemFromValue = function (selectedValue, ignoreSelectedValue) {\n                    if (selectedValue == null) {\n                        this._Selection.ClearSelection(ignoreSelectedValue);\n                        return;\n                    }\n                    var items = this.Items;\n                    var count = items.Count;\n                    for (var i = 0; i < count; i++) {\n                        var item = items.GetValueAt(i);\n                        var val = this._GetValueFromItem(item);\n                        if (nullstone.equals(selectedValue, val)) {\n                            if (!this.SelectedItems.Contains(item))\n                                this._Selection.Select(item);\n                            return;\n                        }\n                    }\n                    this._Selection.ClearSelection(ignoreSelectedValue);\n                };\n                Selector.prototype.SelectAll = function () {\n                    this._Selection.SelectAll(this.Items.ToArray());\n                };\n                Selector.prototype._OnCurrentItemChanged = function (sender, e) {\n                    if (!this._Selection.IsUpdating && this.SynchronizeWithCurrentItem) {\n                        var icv = this.ItemsSource;\n                        if (!nullstone.equals(icv.CurrentItem, this.SelectedItem))\n                            this._Selection.SelectOnly(icv.CurrentItem);\n                    }\n                };\n                Selector.prototype._RaiseSelectionChanged = function (oldVals, newVals) {\n                    if (!oldVals)\n                        oldVals = [];\n                    if (!newVals)\n                        newVals = [];\n                    var lbi;\n                    var oldCount = oldVals.length;\n                    var oldValue;\n                    for (var i = 0; i < oldCount; i++) {\n                        oldValue = oldVals[i];\n                        if (oldValue == null)\n                            continue;\n                        lbi = null;\n                        if (oldValue instanceof Controls.ListBoxItem)\n                            lbi = oldValue;\n                        lbi = lbi || this.ItemContainersManager.ContainerFromItem(oldValue);\n                        if (lbi)\n                            lbi.IsSelected = false;\n                    }\n                    var newCount = newVals.length;\n                    var newValue;\n                    for (var i = 0; i < newCount; i++) {\n                        newValue = newVals[i];\n                        if (newValue == null)\n                            continue;\n                        lbi = null;\n                        if (newValue instanceof Controls.ListBoxItem)\n                            lbi = newValue;\n                        lbi = lbi || this.ItemContainersManager.ContainerFromItem(newValue);\n                        if (lbi) {\n                            lbi.IsSelected = true;\n                            lbi.Focus();\n                        }\n                    }\n                    var args = new Primitives.SelectionChangedEventArgs(oldVals, newVals);\n                    this.OnSelectionChanged(args);\n                    this.SelectionChanged.raise(this, args);\n                };\n                Selector.prototype.OnSelectionChanged = function (args) { };\n                Selector.prototype.NotifyListItemClicked = function (lbi) {\n                    this._Selection.Select(this.ItemContainersManager.ItemFromContainer(lbi));\n                };\n                Selector.prototype.NotifyListItemLoaded = function (lbi) {\n                    if (this.ItemContainersManager.ItemFromContainer(lbi) === this.SelectedItem) {\n                        lbi.IsSelected = true;\n                        lbi.Focus();\n                    }\n                };\n                Selector.prototype.NotifyListItemGotFocus = function (lbi) { };\n                Selector.prototype.NotifyListItemLostFocus = function (lbi) { };\n                Selector.IsSynchronizedWithCurrentItemProperty = DependencyProperty.Register(\"IsSynchronizedWithCurrentItem\", function () { return Boolean; }, Selector, null, function (d, args) { return d._OnIsSynchronizedWithCurrentItemChanged(args); });\n                Selector.SelectedIndexProperty = DependencyProperty.Register(\"SelectedIndex\", function () { return Number; }, Selector, -1, function (d, args) { return d._OnSelectedIndexChanged(args); });\n                Selector.SelectedItemProperty = DependencyProperty.Register(\"SelectedItem\", function () { return Object; }, Selector, undefined, function (d, args) { return d._OnSelectedItemChanged(args); });\n                Selector.SelectedValueProperty = DependencyProperty.Register(\"SelectedValue\", function () { return Object; }, Selector, undefined, function (d, args) { return d._OnSelectedValueChanged(args); });\n                Selector.SelectedValuePathProperty = DependencyProperty.Register(\"SelectedValuePath\", function () { return String; }, Selector, \"\", function (d, args) { return d._OnSelectedValuePathChanged(args); });\n                Selector.IsSelectionActiveProperty = DependencyProperty.RegisterReadOnlyCore(\"IsSelectionActive\", function () { return Boolean; }, Selector);\n                Selector.SelectionModeProperty = DependencyProperty.Register(\"SelectionMode\", function () { return new Fayde.Enum(Controls.SelectionMode); }, Selector, undefined, function (d, args) { return d._OnSelectionModeChanged(args); });\n                return Selector;\n            })(Controls.ItemsControl);\n            Primitives.Selector = Selector;\n            Fayde.CoreLibrary.add(Selector);\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        var XamlMarkup = nullstone.markup.xaml.XamlMarkup;\n        var lastId = 0;\n        function CreateXaml(obj, uri) {\n            lastId++;\n            uri = uri || \"http://gen/\" + lastId.toString();\n            var xm = new XamlMarkup(uri);\n            var root = (typeof obj === \"string\")\n                ? xm.loadRoot(obj)\n                : obj;\n            if (!root.isDefaultNamespace(Fayde.XMLNS))\n                throw new XamlParseException(\"Invalid default namespace. [\" + root.lookupNamespaceURI(null) + \"]\");\n            xm.setRoot(root);\n            return xm;\n        }\n        Markup.CreateXaml = CreateXaml;\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/FrameworkElement.ts\" />\n/// <reference path=\"../Markup/Creator.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var fmd = Fayde.Markup.CreateXaml(\"<DataTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\"><Grid><TextBlock Text=\\\"{Binding}\\\" /></Grid></DataTemplate>\", Fayde.XMLNS + \"/contentpresenter/default\");\n        var fallbackTemplate;\n        function getFallbackTemplate(app) {\n            return fallbackTemplate = fallbackTemplate || Fayde.Markup.Load(app, fmd);\n        }\n        var ContentPresenterNode = (function (_super) {\n            __extends(ContentPresenterNode, _super);\n            function ContentPresenterNode(xobj) {\n                _super.call(this, xobj);\n            }\n            Object.defineProperty(ContentPresenterNode.prototype, \"ContentRoot\", {\n                get: function () { return this._ContentRoot; },\n                enumerable: true,\n                configurable: true\n            });\n            ContentPresenterNode.prototype.DoApplyTemplateWithError = function (error) {\n                if (this._ContentRoot)\n                    return false;\n                var xobj = this.XObject;\n                if (xobj.TemplateOwner instanceof Controls.ContentControl) {\n                    if (!xobj.HasValueOrExpression(ContentPresenter.ContentProperty)) {\n                        xobj.SetValue(ContentPresenter.ContentProperty, new Fayde.TemplateBindingExpression(\"Content\"));\n                    }\n                    if (!xobj.HasValueOrExpression(ContentPresenter.ContentTemplateProperty)) {\n                        xobj.SetValue(ContentPresenter.ContentTemplateProperty, new Fayde.TemplateBindingExpression(\"ContentTemplate\"));\n                    }\n                }\n                var content = xobj.Content;\n                if (content instanceof Fayde.UIElement) {\n                    this._ContentRoot = content;\n                    xobj.DataContext = undefined;\n                }\n                else {\n                    xobj.DataContext = content == null ? null : content;\n                    this._ContentRoot = this._GetContentTemplate(content ? content.constructor : null).GetVisualTree(xobj);\n                }\n                if (!this._ContentRoot)\n                    return false;\n                return this.AttachVisualChild(this._ContentRoot, error);\n            };\n            ContentPresenterNode.prototype.ClearRoot = function () {\n                if (this._ContentRoot)\n                    this.DetachVisualChild(this._ContentRoot, null);\n                this._ContentRoot = null;\n            };\n            ContentPresenterNode.prototype._ContentChanged = function (args) {\n                var isUIContent = args.NewValue instanceof Fayde.UIElement;\n                if (isUIContent || args.OldValue instanceof Fayde.UIElement) {\n                    this.ClearRoot();\n                }\n                else if (!isUIContent) {\n                    if (this._ShouldInvalidateImplicitTemplate(args.OldValue, args.NewValue))\n                        this.ClearRoot();\n                    this.XObject.DataContext = args.NewValue == null ? null : args.NewValue;\n                }\n                this.LayoutUpdater.invalidateMeasure();\n            };\n            ContentPresenterNode.prototype._ContentTemplateChanged = function () {\n                this.ClearRoot();\n                this.LayoutUpdater.invalidateMeasure();\n            };\n            ContentPresenterNode.prototype._ShouldInvalidateImplicitTemplate = function (oldValue, newValue) {\n                var octor = oldValue ? oldValue.constructor : null;\n                var nctor = newValue ? newValue.constructor : null;\n                if (octor !== nctor)\n                    return true;\n                if (octor === Object)\n                    return true;\n                return false;\n            };\n            ContentPresenterNode.prototype._GetContentTemplate = function (type) {\n                var dt = this.XObject.ContentTemplate;\n                if (dt)\n                    return dt;\n                if (type && typeof type === \"function\") {\n                    var node = this;\n                    var rd;\n                    while (node) {\n                        var xobj = node.XObject;\n                        if (xobj instanceof Fayde.FrameworkElement && (rd = xobj.Resources)) {\n                            dt = rd.Get(type);\n                            if (dt instanceof Fayde.DataTemplate)\n                                return dt;\n                        }\n                        node = node.ParentNode;\n                    }\n                    var surface = this.LayoutUpdater.tree.surface;\n                    var app = surface ? surface.App : null;\n                    if (app) {\n                        dt = app.Resources.Get(type);\n                        if (dt instanceof Fayde.DataTemplate)\n                            return dt;\n                    }\n                }\n                return getFallbackTemplate(this.XObject.App);\n            };\n            return ContentPresenterNode;\n        })(Fayde.FENode);\n        Controls.ContentPresenterNode = ContentPresenterNode;\n        var ContentPresenter = (function (_super) {\n            __extends(ContentPresenter, _super);\n            function ContentPresenter() {\n                _super.apply(this, arguments);\n            }\n            ContentPresenter.prototype.CreateNode = function () { return new ContentPresenterNode(this); };\n            ContentPresenter.ContentProperty = DependencyProperty.Register(\"Content\", function () { return Object; }, ContentPresenter, undefined, function (d, args) { return d.XamlNode._ContentChanged(args); });\n            ContentPresenter.ContentTemplateProperty = DependencyProperty.Register(\"ContentTemplate\", function () { return Fayde.DataTemplate; }, ContentPresenter, undefined, function (d, args) { return d.XamlNode._ContentTemplateChanged(); });\n            return ContentPresenter;\n        })(Fayde.FrameworkElement);\n        Controls.ContentPresenter = ContentPresenter;\n        Fayde.CoreLibrary.add(ContentPresenter);\n        Fayde.Markup.Content(ContentPresenter, ContentPresenter.ContentProperty);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/FrameworkElement.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var PopupUpdater = minerva.controls.popup.PopupUpdater;\n            var PopupNode = (function (_super) {\n                __extends(PopupNode, _super);\n                function PopupNode() {\n                    _super.apply(this, arguments);\n                    this.ClickedOutside = new nullstone.Event();\n                    this._Overlay = null;\n                    this._Catcher = null;\n                }\n                PopupNode.prototype.OnIsAttachedChanged = function (newIsAttached) {\n                    _super.prototype.OnIsAttachedChanged.call(this, newIsAttached);\n                    this.RegisterInitiator(this.VisualParentNode.XObject);\n                    if (!newIsAttached && this.XObject.IsOpen)\n                        this.XObject.IsOpen = false;\n                };\n                PopupNode.prototype.EnsureOverlay = function () {\n                    if (!this._Overlay) {\n                        this._Overlay = new Controls.Canvas();\n                        this.LayoutUpdater.setLayer(this._Overlay.XamlNode.LayoutUpdater);\n                    }\n                    return this._Overlay;\n                };\n                PopupNode.prototype.EnsureCatcher = function () {\n                    var catcher = this._Catcher;\n                    if (this.ClickedOutside.has && !catcher) {\n                        catcher = this._Catcher = new Controls.Canvas();\n                        catcher.Background = Fayde.Media.SolidColorBrush.FromColor(Color.FromRgba(255, 255, 255, 0));\n                        catcher.LayoutUpdated.on(this.UpdateCatcher, this);\n                        catcher.MouseLeftButtonDown.on(this._RaiseClickedOutside, this);\n                        this.EnsureOverlay().Children.Insert(0, catcher);\n                    }\n                    return catcher;\n                };\n                PopupNode.prototype.UpdateCatcher = function () {\n                    var root = this._Overlay;\n                    if (!root)\n                        return;\n                    var surface = this.LayoutUpdater.tree.initiatorSurface;\n                    if (!surface)\n                        return;\n                    root.Width = surface.width;\n                    root.Height = surface.height;\n                    var catcher = this._Catcher;\n                    if (!catcher)\n                        return;\n                    catcher.Width = root.Width;\n                    catcher.Height = root.Height;\n                };\n                PopupNode.prototype._RaiseClickedOutside = function (sender, e) {\n                    this.ClickedOutside.raise(this, null);\n                };\n                PopupNode.prototype.RegisterInitiator = function (initiator) {\n                    if (!(initiator instanceof Fayde.UIElement))\n                        return;\n                    this.LayoutUpdater.setInitiator(initiator.XamlNode.LayoutUpdater);\n                };\n                return PopupNode;\n            })(Fayde.FENode);\n            Primitives.PopupNode = PopupNode;\n            var Popup = (function (_super) {\n                __extends(Popup, _super);\n                function Popup() {\n                    _super.apply(this, arguments);\n                    this.Opened = new nullstone.Event();\n                    this.Closed = new nullstone.Event();\n                }\n                Popup.prototype.CreateNode = function () { return new PopupNode(this); };\n                Popup.prototype.CreateLayoutUpdater = function () { return new PopupUpdater(); };\n                Popup.prototype.WatchOutsideClick = function (callback, closure) {\n                    this.XamlNode.ClickedOutside.on(callback, closure);\n                    this.XamlNode.EnsureCatcher();\n                };\n                Popup.ChildProperty = DependencyProperty.Register(\"Child\", function () { return Fayde.UIElement; }, Popup);\n                Popup.HorizontalOffsetProperty = DependencyProperty.Register(\"HorizontalOffset\", function () { return Number; }, Popup, 0.0);\n                Popup.VerticalOffsetProperty = DependencyProperty.Register(\"VerticalOffset\", function () { return Number; }, Popup, 0.0);\n                Popup.IsOpenProperty = DependencyProperty.Register(\"IsOpen\", function () { return Boolean; }, Popup, false);\n                return Popup;\n            })(Fayde.FrameworkElement);\n            Primitives.Popup = Popup;\n            Fayde.CoreLibrary.add(Popup);\n            Fayde.Markup.Content(Popup, Popup.ChildProperty);\n            var reactions;\n            (function (reactions) {\n                Fayde.UIReaction(Popup.IsOpenProperty, function (upd, ov, nv, popup) {\n                    if (nv === true) {\n                        popup.Opened.raiseAsync(popup, null);\n                        popup.XamlNode.UpdateCatcher();\n                    }\n                    else {\n                        popup.Closed.raiseAsync(popup, null);\n                    }\n                    minerva.controls.popup.reactTo.isOpen(upd, ov, nv);\n                }, false);\n                Fayde.UIReaction(Popup.ChildProperty, function (upd, ov, nv, popup) {\n                    var overlay = popup.XamlNode.EnsureOverlay();\n                    if (ov) {\n                        Fayde.Providers.InheritedStore.ClearInheritedOnRemove(popup, ov.XamlNode);\n                        overlay.Children.Remove(ov);\n                    }\n                    upd.setChild(nv ? nv.XamlNode.LayoutUpdater : null);\n                    if (nv) {\n                        popup.XamlNode.EnsureCatcher();\n                        overlay.Children.Add(nv);\n                        Fayde.Providers.InheritedStore.PropagateInheritedOnAdd(popup, nv.XamlNode);\n                    }\n                }, false, false);\n                Fayde.UIReaction(Popup.HorizontalOffsetProperty, minerva.controls.popup.reactTo.horizontalOffset, false);\n                Fayde.UIReaction(Popup.VerticalOffsetProperty, minerva.controls.popup.reactTo.verticalOffset, false);\n            })(reactions || (reactions = {}));\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            Primitives.IScrollInfo_ = new nullstone.Interface(\"IScrollInfo\");\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ContentPresenter.ts\" />\n/// <reference path=\"Primitives/IScrollInfo.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ScrollContentPresenter = (function (_super) {\n            __extends(ScrollContentPresenter, _super);\n            function ScrollContentPresenter() {\n                _super.apply(this, arguments);\n                this._IsClipPropertySet = false;\n                this._ClippingRectangle = null;\n            }\n            ScrollContentPresenter.prototype.CreateLayoutUpdater = function () {\n                var updater = new minerva.controls.scrollcontentpresenter.ScrollContentPresenterUpdater();\n                updater.assets.scrollData = this._ScrollData = new Controls.Primitives.ScrollData();\n                return updater;\n            };\n            Object.defineProperty(ScrollContentPresenter.prototype, \"ScrollOwner\", {\n                get: function () { return this._ScrollData.scrollOwner; },\n                set: function (value) { this._ScrollData.scrollOwner = value; },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ScrollContentPresenter.prototype, \"CanHorizontallyScroll\", {\n                get: function () { return this._ScrollData.canHorizontallyScroll; ; },\n                set: function (value) {\n                    var sd = this._ScrollData;\n                    if (sd.canHorizontallyScroll !== value) {\n                        sd.canHorizontallyScroll = value;\n                        this.XamlNode.LayoutUpdater.invalidateMeasure();\n                    }\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ScrollContentPresenter.prototype, \"CanVerticallyScroll\", {\n                get: function () { return this._ScrollData.canVerticallyScroll; },\n                set: function (value) {\n                    var sd = this._ScrollData;\n                    if (sd.canVerticallyScroll !== value) {\n                        sd.canVerticallyScroll = value;\n                        this.XamlNode.LayoutUpdater.invalidateMeasure();\n                    }\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ScrollContentPresenter.prototype, \"ExtentWidth\", {\n                get: function () { return this._ScrollData.extentWidth; },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ScrollContentPresenter.prototype, \"ExtentHeight\", {\n                get: function () { return this._ScrollData.extentHeight; },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ScrollContentPresenter.prototype, \"ViewportWidth\", {\n                get: function () { return this._ScrollData.viewportWidth; },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ScrollContentPresenter.prototype, \"ViewportHeight\", {\n                get: function () { return this._ScrollData.viewportHeight; },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ScrollContentPresenter.prototype, \"HorizontalOffset\", {\n                get: function () { return this._ScrollData.offsetX; },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ScrollContentPresenter.prototype, \"VerticalOffset\", {\n                get: function () { return this._ScrollData.offsetY; },\n                enumerable: true,\n                configurable: true\n            });\n            ScrollContentPresenter.prototype.LineUp = function () { return this.SetVerticalOffset(this._ScrollData.offsetY - 16); };\n            ScrollContentPresenter.prototype.LineDown = function () { return this.SetVerticalOffset(this._ScrollData.offsetY + 16); };\n            ScrollContentPresenter.prototype.LineLeft = function () { return this.SetHorizontalOffset(this._ScrollData.offsetX - 16); };\n            ScrollContentPresenter.prototype.LineRight = function () { return this.SetHorizontalOffset(this._ScrollData.offsetX + 16); };\n            ScrollContentPresenter.prototype.MouseWheelUp = function () { return this.SetVerticalOffset(this._ScrollData.offsetY - 48); };\n            ScrollContentPresenter.prototype.MouseWheelDown = function () { return this.SetVerticalOffset(this._ScrollData.offsetY + 48); };\n            ScrollContentPresenter.prototype.MouseWheelLeft = function () { return this.SetHorizontalOffset(this._ScrollData.offsetX - 48); };\n            ScrollContentPresenter.prototype.MouseWheelRight = function () { return this.SetHorizontalOffset(this._ScrollData.offsetX + 48); };\n            ScrollContentPresenter.prototype.PageUp = function () { return this.SetVerticalOffset(this._ScrollData.offsetY - this._ScrollData.viewportHeight); };\n            ScrollContentPresenter.prototype.PageDown = function () { return this.SetVerticalOffset(this._ScrollData.offsetY + this._ScrollData.viewportHeight); };\n            ScrollContentPresenter.prototype.PageLeft = function () { return this.SetHorizontalOffset(this._ScrollData.offsetX - this._ScrollData.viewportWidth); };\n            ScrollContentPresenter.prototype.PageRight = function () { return this.SetHorizontalOffset(this._ScrollData.offsetX + this._ScrollData.viewportWidth); };\n            ScrollContentPresenter.prototype.MakeVisible = function (uie, viewport) {\n                var vis = new minerva.Rect();\n                if (minerva.Rect.isEmpty(viewport) || !uie || uie === this || !this.XamlNode.IsAncestorOf(uie.XamlNode))\n                    return vis;\n                var generalTransform = uie.TransformToVisual(this);\n                var xpoint = generalTransform.Transform(viewport);\n                minerva.Size.copyTo(viewport, vis);\n                minerva.Point.copyTo(xpoint, vis);\n                return vis;\n            };\n            ScrollContentPresenter.prototype.SetHorizontalOffset = function (offset) {\n                if (isNaN(offset))\n                    throw new ArgumentException(\"Offset is not a number.\");\n                var sd = this._ScrollData;\n                if (!sd.canHorizontallyScroll)\n                    return false;\n                offset = Math.max(0, Math.min(offset, sd.extentWidth - sd.viewportWidth));\n                if (NumberEx.AreClose(this._ScrollData.offsetX, offset))\n                    return false;\n                sd.cachedOffsetX = offset;\n                this.XamlNode.LayoutUpdater.invalidateArrange();\n                return true;\n            };\n            ScrollContentPresenter.prototype.SetVerticalOffset = function (offset) {\n                if (isNaN(offset))\n                    throw new ArgumentException(\"Offset is not a number.\");\n                var sd = this._ScrollData;\n                if (!sd.canVerticallyScroll)\n                    return false;\n                offset = Math.max(0, Math.min(offset, sd.extentHeight - sd.viewportHeight));\n                if (NumberEx.AreClose(this._ScrollData.offsetY, offset))\n                    return false;\n                sd.cachedOffsetY = offset;\n                this.XamlNode.LayoutUpdater.invalidateArrange();\n                return true;\n            };\n            ScrollContentPresenter.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                var sv;\n                if (this.TemplateOwner instanceof Controls.ScrollViewer)\n                    sv = this.TemplateOwner;\n                else\n                    return;\n                var content = this.Content;\n                var info = Controls.Primitives.IScrollInfo_.as(content);\n                if (!info && content instanceof Controls.ItemsPresenter) {\n                    var ip = content;\n                    var err = new BError();\n                    ip.XamlNode.ApplyTemplateWithError(err);\n                    if (err.Message)\n                        err.ThrowException();\n                    info = Controls.Primitives.IScrollInfo_.as(ip.Panel);\n                }\n                if (!info)\n                    info = this;\n                info.CanHorizontallyScroll = sv.HorizontalScrollBarVisibility !== Controls.ScrollBarVisibility.Disabled;\n                info.CanVerticallyScroll = sv.VerticalScrollBarVisibility !== Controls.ScrollBarVisibility.Disabled;\n                info.ScrollOwner = sv;\n                sv.ScrollInfo = info;\n                sv.InvalidateScrollInfo();\n            };\n            return ScrollContentPresenter;\n        })(Controls.ContentPresenter);\n        Controls.ScrollContentPresenter = ScrollContentPresenter;\n        Fayde.CoreLibrary.add(ScrollContentPresenter);\n        nullstone.addTypeInterfaces(ScrollContentPresenter, Controls.Primitives.IScrollInfo_);\n        function computeScrollOffsetWithMinimalScroll(topView, bottomView, topChild, bottomChild) {\n            var flag = NumberEx.IsLessThanClose(topChild, topView) && NumberEx.IsLessThanClose(bottomChild, bottomView);\n            var flag1 = NumberEx.IsGreaterThanClose(topChild, topView) && NumberEx.IsGreaterThanClose(bottomChild, bottomView);\n            var flag4 = (bottomChild - topChild) > (bottomView - topView);\n            if ((!flag || flag4) && (!flag1 || !flag4)) {\n                if (flag || flag1)\n                    return bottomChild - bottomView - topView;\n                return topView;\n            }\n            return topChild;\n        }\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Control.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var RangeBase = (function (_super) {\n                __extends(RangeBase, _super);\n                function RangeBase() {\n                    var _this = this;\n                    _super.call(this);\n                    this.ValueChanged = new Fayde.RoutedPropertyChangedEvent();\n                    this._Coercer = new Controls.Internal.RangeCoercer(this, function (val) { return _this.SetCurrentValue(RangeBase.MaximumProperty, val); }, function (val) { return _this.SetCurrentValue(RangeBase.ValueProperty, val); });\n                }\n                RangeBase.prototype.OnMinimumChanged = function (oldMin, newMin) { };\n                RangeBase.prototype.OnMaximumChanged = function (oldMax, newMax) { };\n                RangeBase.prototype.OnValueChanged = function (oldVal, newVal) {\n                    this.ValueChanged.raise(this, new Fayde.RoutedPropertyChangedEventArgs(oldVal, newVal));\n                };\n                RangeBase.MinimumProperty = DependencyProperty.RegisterFull(\"Minimum\", function () { return Number; }, RangeBase, 0, function (d, args) { return d._Coercer.OnMinimumChanged(args.OldValue, args.NewValue); }, undefined, false, numberValidator);\n                RangeBase.MaximumProperty = DependencyProperty.RegisterFull(\"Maximum\", function () { return Number; }, RangeBase, 1, function (d, args) { return d._Coercer.OnMaximumChanged(args.OldValue, args.NewValue); }, undefined, false, numberValidator);\n                RangeBase.LargeChangeProperty = DependencyProperty.RegisterFull(\"LargeChange\", function () { return Number; }, RangeBase, 1, undefined, undefined, false, changeValidator);\n                RangeBase.SmallChangeProperty = DependencyProperty.RegisterFull(\"SmallChange\", function () { return Number; }, RangeBase, 0.1, undefined, undefined, false, changeValidator);\n                RangeBase.ValueProperty = DependencyProperty.RegisterFull(\"Value\", function () { return Number; }, RangeBase, 0, function (d, args) { return d._Coercer.OnValueChanged(args.OldValue, args.NewValue); }, undefined, false, numberValidator);\n                return RangeBase;\n            })(Controls.Control);\n            Primitives.RangeBase = RangeBase;\n            Fayde.CoreLibrary.add(RangeBase);\n            function numberValidator(d, propd, value) {\n                if (typeof value !== \"number\")\n                    return false;\n                if (isNaN(value))\n                    return false;\n                if (!isFinite(value))\n                    return false;\n                return true;\n            }\n            function changeValidator(d, propd, value) {\n                if (!numberValidator(d, propd, value))\n                    return false;\n                return value >= 0;\n            }\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ButtonBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var RepeatButton = (function (_super) {\n                __extends(RepeatButton, _super);\n                function RepeatButton() {\n                    _super.call(this);\n                    this._KeyboardCausingRepeat = false;\n                    this._MouseCausingRepeat = false;\n                    this._MousePosition = null;\n                    this._IntervalID = null;\n                    this._NewInterval = null;\n                    this.ClickMode = Controls.ClickMode.Press;\n                    this.DefaultStyleKey = RepeatButton;\n                }\n                RepeatButton.prototype.OnApplyTemplate = function () {\n                    _super.prototype.OnApplyTemplate.call(this);\n                    this.UpdateVisualState(false);\n                };\n                RepeatButton.prototype.OnDelayChanged = function (args) {\n                    if (args.NewValue < 0)\n                        throw new ArgumentException(\"Delay Property cannot be negative.\");\n                };\n                RepeatButton.prototype.OnIntervalChanged = function (args) {\n                    if (args.NewValue < 0)\n                        throw new ArgumentException(\"Interval Property cannot be negative.\");\n                    this._NewInterval = args.NewValue;\n                };\n                RepeatButton.prototype.OnIsEnabledChanged = function (e) {\n                    _super.prototype.OnIsEnabledChanged.call(this, e);\n                    this._KeyboardCausingRepeat = false;\n                    this._MouseCausingRepeat = false;\n                    this._UpdateRepeatState();\n                };\n                RepeatButton.prototype.OnKeyDown = function (e) {\n                    if (e.Key === Fayde.Input.Key.Space && this.ClickMode !== Controls.ClickMode.Hover) {\n                        this._KeyboardCausingRepeat = true;\n                        this._UpdateRepeatState();\n                    }\n                    _super.prototype.OnKeyDown.call(this, e);\n                };\n                RepeatButton.prototype.OnKeyUp = function (e) {\n                    _super.prototype.OnKeyUp.call(this, e);\n                    if (e.Key === Fayde.Input.Key.Space && this.ClickMode !== Controls.ClickMode.Hover) {\n                        this._KeyboardCausingRepeat = false;\n                        this._UpdateRepeatState();\n                    }\n                    this.UpdateVisualState();\n                };\n                RepeatButton.prototype.OnLostFocus = function (e) {\n                    _super.prototype.OnLostFocus.call(this, e);\n                    if (this.ClickMode !== Controls.ClickMode.Hover) {\n                        this._KeyboardCausingRepeat = false;\n                        this._MouseCausingRepeat = false;\n                        this._UpdateRepeatState();\n                    }\n                };\n                RepeatButton.prototype.OnMouseEnter = function (e) {\n                    _super.prototype.OnMouseEnter.call(this, e);\n                    if (this.ClickMode === Controls.ClickMode.Hover) {\n                        this._MouseCausingRepeat = true;\n                        this._UpdateRepeatState();\n                    }\n                    this.UpdateVisualState();\n                    this._UpdateMousePosition(e);\n                };\n                RepeatButton.prototype.OnMouseLeave = function (e) {\n                    _super.prototype.OnMouseLeave.call(this, e);\n                    if (this.ClickMode === Controls.ClickMode.Hover) {\n                        this._MouseCausingRepeat = false;\n                        this._UpdateRepeatState();\n                    }\n                    this.UpdateVisualState();\n                };\n                RepeatButton.prototype.OnMouseLeftButtonDown = function (e) {\n                    if (e.Handled)\n                        return;\n                    _super.prototype.OnMouseLeftButtonDown.call(this, e);\n                    if (this.ClickMode !== Controls.ClickMode.Hover) {\n                        this._MouseCausingRepeat = true;\n                        this._UpdateRepeatState();\n                    }\n                };\n                RepeatButton.prototype.OnMouseLeftButtonUp = function (e) {\n                    if (e.Handled)\n                        return;\n                    _super.prototype.OnMouseLeftButtonUp.call(this, e);\n                    if (this.ClickMode !== Controls.ClickMode.Hover) {\n                        this._MouseCausingRepeat = false;\n                        this._UpdateRepeatState();\n                    }\n                    this.UpdateVisualState();\n                };\n                RepeatButton.prototype.OnMouseMove = function (e) {\n                    this._UpdateMousePosition(e);\n                };\n                RepeatButton.prototype._UpdateMousePosition = function (e) {\n                    var curNode = this.XamlNode;\n                    var parentNode = curNode;\n                    while (curNode instanceof Fayde.FENode) {\n                        parentNode = curNode;\n                        curNode = curNode.ParentNode;\n                    }\n                    this._MousePosition = e.GetPosition(parentNode.XObject);\n                };\n                RepeatButton.prototype._UpdateRepeatState = function () {\n                    var _this = this;\n                    if (this._MouseCausingRepeat || this._KeyboardCausingRepeat) {\n                        if (this._IntervalID == null)\n                            this._IntervalID = window.setInterval(function () { return _this._StartRepeatingAfterDelay(); }, this.Delay);\n                    }\n                    else {\n                        if (this._IntervalID != null)\n                            window.clearInterval(this._IntervalID);\n                        this._IntervalID = null;\n                    }\n                };\n                RepeatButton.prototype._StartRepeatingAfterDelay = function () {\n                    var _this = this;\n                    window.clearInterval(this._IntervalID);\n                    this._IntervalID = window.setInterval(function () { return _this._OnTimeout(); }, this.Interval);\n                };\n                RepeatButton.prototype._OnTimeout = function () {\n                    var _this = this;\n                    if (this._NewInterval != null) {\n                        window.clearInterval(this._IntervalID);\n                        this._IntervalID = window.setInterval(function () { return _this._OnTimeout(); }, this._NewInterval);\n                        this._NewInterval = null;\n                    }\n                    if (!this.IsPressed)\n                        return;\n                    if (this._KeyboardCausingRepeat) {\n                        this.OnClick();\n                        return;\n                    }\n                    var els = Fayde.VisualTreeHelper.FindElementsInHostCoordinates(this._MousePosition, this);\n                    if (els.indexOf(this) > -1) {\n                        this.OnClick();\n                    }\n                };\n                RepeatButton.DelayProperty = DependencyProperty.Register(\"Delay\", function () { return Number; }, RepeatButton, 500, function (d, args) { return d.OnDelayChanged(args); });\n                RepeatButton.IntervalProperty = DependencyProperty.Register(\"Interval\", function () { return Number; }, RepeatButton, 33, function (d, args) { return d.OnIntervalChanged(args); });\n                return RepeatButton;\n            })(Primitives.ButtonBase);\n            Primitives.RepeatButton = RepeatButton;\n            Fayde.CoreLibrary.add(RepeatButton);\n            Controls.TemplateVisualStates(RepeatButton, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Pressed\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" });\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Control.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var Thumb = (function (_super) {\n                __extends(Thumb, _super);\n                function Thumb() {\n                    _super.call(this);\n                    this._PreviousPosition = null;\n                    this._Origin = null;\n                    this.DragCompleted = new Fayde.RoutedEvent();\n                    this.DragDelta = new Fayde.RoutedEvent();\n                    this.DragStarted = new Fayde.RoutedEvent();\n                    this.DefaultStyleKey = Thumb;\n                }\n                Thumb.prototype.OnApplyTemplate = function () {\n                    _super.prototype.OnApplyTemplate.call(this);\n                    this.UpdateVisualState(false);\n                };\n                Thumb.prototype.OnDraggingChanged = function (args) {\n                    this.UpdateVisualState();\n                };\n                Thumb.prototype.OnGotFocus = function (e) {\n                    _super.prototype.OnGotFocus.call(this, e);\n                    this._FocusChanged(Fayde.Surface.HasFocus(this));\n                };\n                Thumb.prototype.OnLostFocus = function (e) {\n                    _super.prototype.OnLostFocus.call(this, e);\n                    this._FocusChanged(Fayde.Surface.HasFocus(this));\n                };\n                Thumb.prototype._FocusChanged = function (hasFocus) {\n                    this.SetCurrentValue(Thumb.IsFocusedProperty, hasFocus);\n                    this.UpdateVisualState();\n                };\n                Thumb.prototype.OnLostMouseCapture = function (e) {\n                    if (!this.IsDragging || !this.IsEnabled)\n                        return;\n                    this.SetCurrentValue(Thumb.IsDraggingProperty, false);\n                    this._RaiseDragCompleted(false);\n                };\n                Thumb.prototype.OnMouseEnter = function (e) {\n                    if (this.IsEnabled)\n                        this.UpdateVisualState();\n                };\n                Thumb.prototype.OnMouseLeave = function (e) {\n                    if (this.IsEnabled)\n                        this.UpdateVisualState();\n                };\n                Thumb.prototype.OnMouseLeftButtonDown = function (e) {\n                    _super.prototype.OnMouseLeftButtonDown.call(this, e);\n                    if (e.Handled || this.IsDragging || !this.IsEnabled)\n                        return;\n                    e.Handled = true;\n                    this.CaptureMouse();\n                    this.SetCurrentValue(Thumb.IsDraggingProperty, true);\n                    var vpNode = this.XamlNode.VisualParentNode;\n                    this._Origin = this._PreviousPosition = e.GetPosition((vpNode) ? vpNode.XObject : undefined);\n                    var success = false;\n                    try {\n                        this._RaiseDragStarted();\n                        success = true;\n                    }\n                    finally {\n                        if (!success)\n                            this.CancelDrag();\n                    }\n                };\n                Thumb.prototype.OnMouseMove = function (e) {\n                    if (!this.IsDragging)\n                        return;\n                    var vpNode = this.XamlNode.VisualParentNode;\n                    var p = e.GetPosition((vpNode) ? vpNode.XObject : undefined);\n                    if (!minerva.Point.isEqual(p, this._PreviousPosition)) {\n                        this._RaiseDragDelta(p.x - this._PreviousPosition.x, p.y - this._PreviousPosition.y);\n                        this._PreviousPosition = p;\n                    }\n                };\n                Thumb.prototype.OnLostTouchCapture = function (e) {\n                    _super.prototype.OnLostTouchCapture.call(this, e);\n                    if (!this.IsDragging || !this.IsEnabled)\n                        return;\n                    this.SetCurrentValue(Thumb.IsDraggingProperty, false);\n                    this._RaiseDragCompleted(false);\n                };\n                Thumb.prototype.OnTouchEnter = function (e) {\n                    _super.prototype.OnTouchEnter.call(this, e);\n                    if (this.IsEnabled)\n                        this.UpdateVisualState();\n                };\n                Thumb.prototype.OnTouchLeave = function (e) {\n                    _super.prototype.OnTouchLeave.call(this, e);\n                    if (this.IsEnabled)\n                        this.UpdateVisualState();\n                };\n                Thumb.prototype.OnTouchDown = function (e) {\n                    _super.prototype.OnTouchDown.call(this, e);\n                    if (e.Handled || this.IsDragging || !this.IsEnabled)\n                        return;\n                    e.Handled = true;\n                    e.Device.Capture(this);\n                    this.SetCurrentValue(Thumb.IsDraggingProperty, true);\n                    var vpNode = this.XamlNode.VisualParentNode;\n                    var tp = e.GetTouchPoint(vpNode ? vpNode.XObject : undefined);\n                    this._Origin = this._PreviousPosition = tp.Position;\n                    var success = false;\n                    try {\n                        this._RaiseDragStarted();\n                        success = true;\n                    }\n                    finally {\n                        if (!success)\n                            this.CancelDrag();\n                    }\n                };\n                Thumb.prototype.OnTouchUp = function (e) {\n                    _super.prototype.OnTouchUp.call(this, e);\n                    if (e.Handled || !this.IsDragging || !this.IsEnabled)\n                        return;\n                    e.Handled = true;\n                    e.Device.ReleaseCapture(this);\n                };\n                Thumb.prototype.OnTouchMove = function (e) {\n                    _super.prototype.OnTouchMove.call(this, e);\n                    if (!this.IsDragging || e.Device.Captured !== this)\n                        return;\n                    var vpNode = this.XamlNode.VisualParentNode;\n                    var tp = e.Device.GetTouchPoint(vpNode ? vpNode.XObject : undefined);\n                    var pos = tp.Position;\n                    if (!minerva.Point.isEqual(pos, this._PreviousPosition)) {\n                        this._RaiseDragDelta(pos.x - this._PreviousPosition.x, pos.y - this._PreviousPosition.y);\n                        this._PreviousPosition = pos;\n                    }\n                };\n                Thumb.prototype.CancelDrag = function () {\n                    if (!this.IsDragging)\n                        return;\n                    this.SetCurrentValue(Thumb.IsDraggingProperty, false);\n                    this._RaiseDragCompleted(true);\n                };\n                Thumb.prototype._RaiseDragStarted = function () {\n                    this.DragStarted.raise(this, new Primitives.DragStartedEventArgs(this._Origin.x, this._Origin.y));\n                };\n                Thumb.prototype._RaiseDragDelta = function (x, y) {\n                    this.DragDelta.raise(this, new Primitives.DragDeltaEventArgs(x, y));\n                };\n                Thumb.prototype._RaiseDragCompleted = function (canceled) {\n                    this.DragCompleted.raise(this, new Primitives.DragCompletedEventArgs(this._PreviousPosition.x - this._Origin.x, this._PreviousPosition.y - this._Origin.y, canceled));\n                };\n                Thumb.prototype.GoToStateCommon = function (gotoFunc) {\n                    if (!this.IsEnabled)\n                        return gotoFunc(\"Disabled\");\n                    if (this.IsDragging)\n                        return gotoFunc(\"Pressed\");\n                    if (this.IsMouseOver)\n                        return gotoFunc(\"MouseOver\");\n                    return gotoFunc(\"Normal\");\n                };\n                Thumb.IsDraggingProperty = DependencyProperty.RegisterReadOnly(\"IsDragging\", function () { return Boolean; }, Thumb, false, function (d, args) { return d.OnDraggingChanged(args); });\n                Thumb.IsFocusedProperty = DependencyProperty.RegisterReadOnly(\"IsFocused\", function () { return Boolean; }, Thumb);\n                return Thumb;\n            })(Controls.Control);\n            Primitives.Thumb = Thumb;\n            Fayde.CoreLibrary.add(Thumb);\n            Controls.TemplateVisualStates(Thumb, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Pressed\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" });\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"RangeBase.ts\" />\n/// <reference path=\"RepeatButton.ts\" />\n/// <reference path=\"Thumb.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var ScrollBar = (function (_super) {\n                __extends(ScrollBar, _super);\n                function ScrollBar() {\n                    _super.call(this);\n                    this._DragValue = 0;\n                    this.Scroll = new Fayde.RoutedEvent();\n                    this.DefaultStyleKey = ScrollBar;\n                    this.SizeChanged.on(this._HandleSizeChanged, this);\n                }\n                Object.defineProperty(ScrollBar.prototype, \"IsDragging\", {\n                    get: function () {\n                        if (this.$HorizontalThumb)\n                            return this.$HorizontalThumb.IsDragging;\n                        if (this.$VerticalThumb)\n                            return this.$VerticalThumb.IsDragging;\n                        return false;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                ScrollBar.prototype.OnApplyTemplate = function () {\n                    _super.prototype.OnApplyTemplate.call(this);\n                    this.$HorizontalTemplate = this.GetTemplateChild(\"HorizontalRoot\", Fayde.FrameworkElement);\n                    this.$HorizontalLargeIncrease = this.GetTemplateChild(\"HorizontalLargeIncrease\", Primitives.RepeatButton);\n                    this.$HorizontalLargeDecrease = this.GetTemplateChild(\"HorizontalLargeDecrease\", Primitives.RepeatButton);\n                    this.$HorizontalSmallIncrease = this.GetTemplateChild(\"HorizontalSmallIncrease\", Primitives.RepeatButton);\n                    this.$HorizontalSmallDecrease = this.GetTemplateChild(\"HorizontalSmallDecrease\", Primitives.RepeatButton);\n                    this.$HorizontalThumb = this.GetTemplateChild(\"HorizontalThumb\", Primitives.Thumb);\n                    this.$VerticalTemplate = this.GetTemplateChild(\"VerticalRoot\", Fayde.FrameworkElement);\n                    this.$VerticalLargeIncrease = this.GetTemplateChild(\"VerticalLargeIncrease\", Primitives.RepeatButton);\n                    this.$VerticalLargeDecrease = this.GetTemplateChild(\"VerticalLargeDecrease\", Primitives.RepeatButton);\n                    this.$VerticalSmallIncrease = this.GetTemplateChild(\"VerticalSmallIncrease\", Primitives.RepeatButton);\n                    this.$VerticalSmallDecrease = this.GetTemplateChild(\"VerticalSmallDecrease\", Primitives.RepeatButton);\n                    this.$VerticalThumb = this.GetTemplateChild(\"VerticalThumb\", Primitives.Thumb);\n                    if (this.$HorizontalThumb) {\n                        this.$HorizontalThumb.DragStarted.on(this._OnThumbDragStarted, this);\n                        this.$HorizontalThumb.DragDelta.on(this._OnThumbDragDelta, this);\n                        this.$HorizontalThumb.DragCompleted.on(this._OnThumbDragCompleted, this);\n                    }\n                    if (this.$HorizontalLargeIncrease) {\n                        this.$HorizontalLargeIncrease.Click.on(this._LargeIncrement, this);\n                    }\n                    if (this.$HorizontalLargeDecrease) {\n                        this.$HorizontalLargeDecrease.Click.on(this._LargeDecrement, this);\n                    }\n                    if (this.$HorizontalSmallIncrease) {\n                        this.$HorizontalSmallIncrease.Click.on(this._SmallIncrement, this);\n                    }\n                    if (this.$HorizontalSmallDecrease) {\n                        this.$HorizontalSmallDecrease.Click.on(this._SmallDecrement, this);\n                    }\n                    if (this.$VerticalThumb) {\n                        this.$VerticalThumb.DragStarted.on(this._OnThumbDragStarted, this);\n                        this.$VerticalThumb.DragDelta.on(this._OnThumbDragDelta, this);\n                        this.$VerticalThumb.DragCompleted.on(this._OnThumbDragCompleted, this);\n                    }\n                    if (this.$VerticalLargeIncrease) {\n                        this.$VerticalLargeIncrease.Click.on(this._LargeIncrement, this);\n                    }\n                    if (this.$VerticalLargeDecrease) {\n                        this.$VerticalLargeDecrease.Click.on(this._LargeDecrement, this);\n                    }\n                    if (this.$VerticalSmallIncrease) {\n                        this.$VerticalSmallIncrease.Click.on(this._SmallIncrement, this);\n                    }\n                    if (this.$VerticalSmallDecrease) {\n                        this.$VerticalSmallDecrease.Click.on(this._SmallDecrement, this);\n                    }\n                    this._OnOrientationChanged();\n                    this.UpdateVisualState(false);\n                };\n                ScrollBar.prototype.OnMaximumChanged = function (oldMax, newMax) {\n                    _super.prototype.OnMaximumChanged.call(this, oldMax, newMax);\n                    this._UpdateTrackLayout();\n                };\n                ScrollBar.prototype.OnMinimumChanged = function (oldMin, newMin) {\n                    _super.prototype.OnMinimumChanged.call(this, oldMin, newMin);\n                    this._UpdateTrackLayout();\n                };\n                ScrollBar.prototype.OnValueChanged = function (oldValue, newValue) {\n                    _super.prototype.OnValueChanged.call(this, oldValue, newValue);\n                    this._UpdateTrackLayout();\n                };\n                ScrollBar.prototype._OnThumbDragStarted = function (sender, e) {\n                    this._DragValue = this.Value;\n                };\n                ScrollBar.prototype._OnThumbDragDelta = function (sender, e) {\n                    var change = 0;\n                    var zoomFactor = 1;\n                    var num = zoomFactor;\n                    var max = this.Maximum;\n                    var min = this.Minimum;\n                    var diff = max - min;\n                    var trackLength = this._GetTrackLength();\n                    var isHorizontal = this.Orientation === Fayde.Orientation.Horizontal;\n                    if (this.$VerticalThumb && !isHorizontal) {\n                        change = num * e.VerticalChange / (trackLength - this.$VerticalThumb.ActualHeight) * diff;\n                    }\n                    if (this.$HorizontalThumb && isHorizontal) {\n                        change = num * e.HorizontalChange / (trackLength - this.$HorizontalThumb.ActualWidth) * diff;\n                    }\n                    if (!isNaN(change) && isFinite(change)) {\n                        this._DragValue += change;\n                        var num1 = Math.min(max, Math.max(min, this._DragValue));\n                        if (num1 !== this.Value) {\n                            this.Value = num1;\n                            this._RaiseScroll(Primitives.ScrollEventType.ThumbTrack);\n                        }\n                    }\n                };\n                ScrollBar.prototype._OnThumbDragCompleted = function (sender, e) {\n                    this._RaiseScroll(Primitives.ScrollEventType.EndScroll);\n                };\n                ScrollBar.prototype._SmallDecrement = function (sender, e) {\n                    var curValue = this.Value;\n                    var num = Math.max(curValue - this.SmallChange, this.Minimum);\n                    if (curValue !== num) {\n                        this.SetCurrentValue(Primitives.RangeBase.ValueProperty, num);\n                        this._RaiseScroll(Primitives.ScrollEventType.SmallDecrement);\n                    }\n                };\n                ScrollBar.prototype._SmallIncrement = function (sender, e) {\n                    var curValue = this.Value;\n                    var num = Math.min(curValue + this.SmallChange, this.Maximum);\n                    if (curValue !== num) {\n                        this.SetCurrentValue(Primitives.RangeBase.ValueProperty, num);\n                        this._RaiseScroll(Primitives.ScrollEventType.SmallIncrement);\n                    }\n                };\n                ScrollBar.prototype._LargeDecrement = function (sender, e) {\n                    var curValue = this.Value;\n                    var num = Math.max(curValue - this.LargeChange, this.Minimum);\n                    if (curValue !== num) {\n                        this.SetCurrentValue(Primitives.RangeBase.ValueProperty, num);\n                        this._RaiseScroll(Primitives.ScrollEventType.LargeDecrement);\n                    }\n                };\n                ScrollBar.prototype._LargeIncrement = function (sender, e) {\n                    var curValue = this.Value;\n                    var num = Math.min(curValue + this.LargeChange, this.Maximum);\n                    if (curValue !== num) {\n                        this.SetCurrentValue(Primitives.RangeBase.ValueProperty, num);\n                        this._RaiseScroll(Primitives.ScrollEventType.LargeIncrement);\n                    }\n                };\n                ScrollBar.prototype._HandleSizeChanged = function (sender, e) {\n                    this._UpdateTrackLayout();\n                };\n                ScrollBar.prototype._OnOrientationChanged = function () {\n                    var isHorizontal = this.Orientation === Fayde.Orientation.Horizontal;\n                    if (this.$HorizontalTemplate) {\n                        this.$HorizontalTemplate.Visibility = isHorizontal ? Fayde.Visibility.Visible : Fayde.Visibility.Collapsed;\n                    }\n                    if (this.$VerticalTemplate) {\n                        this.$VerticalTemplate.Visibility = isHorizontal ? Fayde.Visibility.Collapsed : Fayde.Visibility.Visible;\n                    }\n                    this._UpdateTrackLayout();\n                };\n                ScrollBar.prototype._UpdateTrackLayout = function () {\n                    var trackLength = this._GetTrackLength();\n                    var max = this.Maximum;\n                    var min = this.Minimum;\n                    var val = this.Value;\n                    var multiplier = (val - min) / (max - min);\n                    var thumbSize = this._UpdateThumbSize(trackLength);\n                    var isHorizontal = this.Orientation === Fayde.Orientation.Horizontal;\n                    if (isHorizontal && this.$HorizontalLargeDecrease && this.$HorizontalThumb) {\n                        this.$HorizontalLargeDecrease.Width = Math.max(0, multiplier * (trackLength - thumbSize));\n                    }\n                    else if (!isHorizontal && this.$VerticalLargeDecrease && this.$VerticalThumb) {\n                        this.$VerticalLargeDecrease.Height = Math.max(0, multiplier * (trackLength - thumbSize));\n                    }\n                };\n                ScrollBar.prototype._UpdateThumbSize = function (trackLength) {\n                    var result = Number.NaN;\n                    var hideThumb = trackLength <= 0;\n                    if (trackLength > 0) {\n                        var isHorizontal = this.Orientation === Fayde.Orientation.Horizontal;\n                        var max = this.Maximum;\n                        var min = this.Minimum;\n                        if (isHorizontal && this.$HorizontalThumb) {\n                            if (max - min !== 0)\n                                result = Math.max(this.$HorizontalThumb.MinWidth, this._ConvertViewportSizeToDisplayUnits(trackLength));\n                            if (max - min === 0 || result > this.ActualWidth || trackLength <= this.$HorizontalThumb.MinWidth) {\n                                hideThumb = true;\n                            }\n                            else {\n                                this.$HorizontalThumb.Visibility = Fayde.Visibility.Visible;\n                                this.$HorizontalThumb.Width = result;\n                            }\n                        }\n                        else if (!isHorizontal && this.$VerticalThumb) {\n                            if (max - min !== 0)\n                                result = Math.max(this.$VerticalThumb.MinHeight, this._ConvertViewportSizeToDisplayUnits(trackLength));\n                            if (max - min === 0 || result > this.ActualHeight || trackLength <= this.$VerticalThumb.MinHeight) {\n                                hideThumb = true;\n                            }\n                            else {\n                                this.$VerticalThumb.Visibility = Fayde.Visibility.Visible;\n                                this.$VerticalThumb.Height = result;\n                            }\n                        }\n                    }\n                    if (hideThumb) {\n                        if (this.$HorizontalThumb) {\n                            this.$HorizontalThumb.Visibility = Fayde.Visibility.Collapsed;\n                        }\n                        if (this.$VerticalThumb) {\n                            this.$VerticalThumb.Visibility = Fayde.Visibility.Collapsed;\n                        }\n                    }\n                    return result;\n                };\n                ScrollBar.prototype._GetTrackLength = function () {\n                    var actual = NaN;\n                    if (this.Orientation === Fayde.Orientation.Horizontal) {\n                        actual = this.ActualWidth;\n                        if (this.$HorizontalSmallDecrease) {\n                            var thickness = this.$HorizontalSmallDecrease.Margin;\n                            actual = actual - (this.$HorizontalSmallDecrease.ActualWidth + thickness.left + thickness.right);\n                        }\n                        if (this.$HorizontalSmallIncrease) {\n                            var thickness = this.$HorizontalSmallIncrease.Margin;\n                            actual = actual - (this.$HorizontalSmallIncrease.ActualWidth + thickness.left + thickness.right);\n                        }\n                    }\n                    else {\n                        actual = this.ActualHeight;\n                        if (this.$VerticalSmallDecrease) {\n                            var thickness = this.$VerticalSmallDecrease.Margin;\n                            actual = actual - (this.$VerticalSmallDecrease.ActualHeight + thickness.top + thickness.bottom);\n                        }\n                        if (this.$VerticalSmallIncrease) {\n                            var thickness = this.$VerticalSmallIncrease.Margin;\n                            actual = actual - (this.$VerticalSmallIncrease.ActualHeight + thickness.top + thickness.bottom);\n                        }\n                    }\n                    return actual;\n                };\n                ScrollBar.prototype._ConvertViewportSizeToDisplayUnits = function (trackLength) {\n                    var viewportSize = this.ViewportSize;\n                    return trackLength * viewportSize / (viewportSize + this.Maximum - this.Minimum);\n                };\n                ScrollBar.prototype._RaiseScroll = function (type) {\n                    var args = new Primitives.ScrollEventArgs(type, this.Value);\n                    args.OriginalSource = this;\n                    this.Scroll.raise(this, args);\n                };\n                ScrollBar.OrientationProperty = DependencyProperty.Register(\"Orientation\", function () { return new Fayde.Enum(Fayde.Orientation); }, ScrollBar, Fayde.Orientation.Horizontal, function (d, args) { return d._OnOrientationChanged(); });\n                ScrollBar.ViewportSizeProperty = DependencyProperty.Register(\"ViewportSize\", function () { return Number; }, ScrollBar, 0, function (d, args) { return d._UpdateTrackLayout(); });\n                return ScrollBar;\n            })(Primitives.RangeBase);\n            Primitives.ScrollBar = ScrollBar;\n            Fayde.CoreLibrary.add(ScrollBar);\n            Controls.TemplateVisualStates(ScrollBar, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" });\n            Controls.TemplateParts(ScrollBar, { Name: \"VerticalRoot\", Type: Fayde.FrameworkElement }, { Name: \"VerticalLargeIncrease\", Type: Primitives.RepeatButton }, { Name: \"VerticalLargeDecrease\", Type: Primitives.RepeatButton }, { Name: \"VerticalSmallIncrease\", Type: Primitives.RepeatButton }, { Name: \"VerticalSmallDecrease\", Type: Primitives.RepeatButton }, { Name: \"VerticalThumb\", Type: Primitives.Thumb }, { Name: \"HorizontalRoot\", Type: Fayde.FrameworkElement }, { Name: \"HorizontalLargeIncrease\", Type: Primitives.RepeatButton }, { Name: \"HorizontalLargeDecrease\", Type: Primitives.RepeatButton }, { Name: \"HorizontalSmallIncrease\", Type: Primitives.RepeatButton }, { Name: \"HorizontalSmallDecrease\", Type: Primitives.RepeatButton }, { Name: \"HorizontalThumb\", Type: Primitives.Thumb });\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ContentControl.ts\" />\n/// <reference path=\"ScrollContentPresenter.ts\" />\n/// <reference path=\"Primitives/ScrollBar.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ScrollViewer = (function (_super) {\n            __extends(ScrollViewer, _super);\n            function ScrollViewer() {\n                _super.call(this);\n                this.$TemplatedParentHandlesScrolling = false;\n                this._Delta = new Point();\n                this._TouchInitialOffset = new Point();\n                this.DefaultStyleKey = ScrollViewer;\n            }\n            ScrollViewer._ScrollBarVisibilityChanged = function (d, args) {\n                if (!d)\n                    return;\n                if (d instanceof ScrollViewer) {\n                    var sv = d;\n                    sv.XamlNode.LayoutUpdater.invalidateMeasure();\n                    var scrollInfo = sv.ScrollInfo;\n                    if (scrollInfo) {\n                        scrollInfo.CanHorizontallyScroll = sv.HorizontalScrollBarVisibility !== Controls.ScrollBarVisibility.Disabled;\n                        scrollInfo.CanVerticallyScroll = sv.VerticalScrollBarVisibility !== Controls.ScrollBarVisibility.Disabled;\n                    }\n                    sv._UpdateScrollBarVisibility();\n                    return;\n                }\n                if (d instanceof Controls.ListBox) {\n                    var listbox = d;\n                    if (listbox.$TemplateScrollViewer)\n                        listbox.$TemplateScrollViewer.SetValue(args.Property, args.NewValue);\n                    return;\n                }\n            };\n            ScrollViewer.GetHorizontalScrollBarVisibility = function (d) { return d.GetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty); };\n            ScrollViewer.SetHorizontalScrollBarVisibility = function (d, value) { d.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, value); };\n            Object.defineProperty(ScrollViewer.prototype, \"HorizontalScrollBarVisibility\", {\n                get: function () { return this.GetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty); },\n                set: function (value) { this.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, value); },\n                enumerable: true,\n                configurable: true\n            });\n            ScrollViewer.GetVerticalScrollBarVisibility = function (d) { return d.GetValue(ScrollViewer.VerticalScrollBarVisibilityProperty); };\n            ScrollViewer.SetVerticalScrollBarVisibility = function (d, value) { d.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, value); };\n            Object.defineProperty(ScrollViewer.prototype, \"VerticalScrollBarVisibility\", {\n                get: function () { return this.GetValue(ScrollViewer.VerticalScrollBarVisibilityProperty); },\n                set: function (value) { this.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, value); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ScrollViewer.prototype, \"ScrollInfo\", {\n                get: function () { return this._ScrollInfo; },\n                set: function (value) {\n                    this._ScrollInfo = value;\n                    if (value) {\n                        value.CanHorizontallyScroll = this.HorizontalScrollBarVisibility !== Controls.ScrollBarVisibility.Disabled;\n                        value.CanVerticallyScroll = this.VerticalScrollBarVisibility !== Controls.ScrollBarVisibility.Disabled;\n                    }\n                },\n                enumerable: true,\n                configurable: true\n            });\n            ScrollViewer.prototype.InvalidateScrollInfo = function () {\n                var scrollInfo = this.ScrollInfo;\n                if (scrollInfo) {\n                    this.SetCurrentValue(ScrollViewer.ExtentWidthProperty, scrollInfo.ExtentWidth);\n                    this.SetCurrentValue(ScrollViewer.ExtentHeightProperty, scrollInfo.ExtentHeight);\n                    this.SetCurrentValue(ScrollViewer.ViewportWidthProperty, scrollInfo.ViewportWidth);\n                    this.SetCurrentValue(ScrollViewer.ViewportHeightProperty, scrollInfo.ViewportHeight);\n                    this._UpdateScrollBar(Fayde.Orientation.Horizontal, scrollInfo.HorizontalOffset);\n                    this._UpdateScrollBar(Fayde.Orientation.Vertical, scrollInfo.VerticalOffset);\n                    this._UpdateScrollBarVisibility();\n                }\n                var lu = this.XamlNode.LayoutUpdater;\n                var w = Math.max(0, this.ExtentWidth - this.ViewportWidth);\n                if (w !== this.ScrollableWidth) {\n                    this.SetCurrentValue(ScrollViewer.ScrollableWidthProperty, w);\n                    lu.invalidateMeasure();\n                }\n                var h = Math.max(0, this.ExtentHeight - this.ViewportHeight);\n                if (h !== this.ScrollableHeight) {\n                    this.SetCurrentValue(ScrollViewer.ScrollableHeightProperty, h);\n                    lu.invalidateMeasure();\n                }\n            };\n            ScrollViewer.prototype._UpdateScrollBarVisibility = function () {\n                var lu = this.XamlNode.LayoutUpdater;\n                var scrollInfo = this.ScrollInfo;\n                var horizontalVisibility = Fayde.Visibility.Visible;\n                var hsbv = this.HorizontalScrollBarVisibility;\n                switch (hsbv) {\n                    case Controls.ScrollBarVisibility.Visible:\n                        break;\n                    case Controls.ScrollBarVisibility.Disabled:\n                    case Controls.ScrollBarVisibility.Hidden:\n                        horizontalVisibility = Fayde.Visibility.Collapsed;\n                        break;\n                    case Controls.ScrollBarVisibility.Auto:\n                    default:\n                        horizontalVisibility = (!scrollInfo || scrollInfo.ExtentWidth <= scrollInfo.ViewportWidth) ? Fayde.Visibility.Collapsed : Fayde.Visibility.Visible;\n                        break;\n                }\n                if (horizontalVisibility !== this.ComputedHorizontalScrollBarVisibility) {\n                    this.SetCurrentValue(ScrollViewer.ComputedHorizontalScrollBarVisibilityProperty, horizontalVisibility);\n                    lu.invalidateMeasure();\n                }\n                var verticalVisibility = Fayde.Visibility.Visible;\n                var vsbv = this.VerticalScrollBarVisibility;\n                switch (vsbv) {\n                    case Controls.ScrollBarVisibility.Visible:\n                        break;\n                    case Controls.ScrollBarVisibility.Disabled:\n                    case Controls.ScrollBarVisibility.Hidden:\n                        verticalVisibility = Fayde.Visibility.Collapsed;\n                        break;\n                    case Controls.ScrollBarVisibility.Auto:\n                    default:\n                        verticalVisibility = (!scrollInfo || scrollInfo.ExtentHeight <= scrollInfo.ViewportHeight) ? Fayde.Visibility.Collapsed : Fayde.Visibility.Visible;\n                        break;\n                }\n                if (verticalVisibility !== this.ComputedVerticalScrollBarVisibility) {\n                    this.SetCurrentValue(ScrollViewer.ComputedVerticalScrollBarVisibilityProperty, verticalVisibility);\n                    lu.invalidateMeasure();\n                }\n            };\n            ScrollViewer.prototype._UpdateScrollBar = function (orientation, value) {\n                var propd;\n                var sb;\n                if (orientation === Fayde.Orientation.Horizontal) {\n                    propd = ScrollViewer.HorizontalOffsetProperty;\n                    sb = this.$HorizontalScrollBar;\n                }\n                else {\n                    propd = ScrollViewer.VerticalOffsetProperty;\n                    sb = this.$VerticalScrollBar;\n                }\n                try {\n                    this.SetCurrentValue(propd, value);\n                    if (sb)\n                        sb.SetCurrentValue(Controls.Primitives.RangeBase.ValueProperty, value);\n                }\n                finally {\n                }\n            };\n            ScrollViewer.prototype.OnApplyTemplate = function () {\n                var _this = this;\n                _super.prototype.OnApplyTemplate.call(this);\n                this.$ScrollContentPresenter = this.GetTemplateChild(\"ScrollContentPresenter\", Controls.ScrollContentPresenter);\n                this.$HorizontalScrollBar = this.GetTemplateChild(\"HorizontalScrollBar\", Controls.Primitives.ScrollBar);\n                if (this.$HorizontalScrollBar) {\n                    this.$HorizontalScrollBar.Scroll.on(function (sender, e) { return _this._HandleScroll(Fayde.Orientation.Horizontal, e); }, this);\n                }\n                this.$VerticalScrollBar = this.GetTemplateChild(\"VerticalScrollBar\", Controls.Primitives.ScrollBar);\n                if (this.$VerticalScrollBar) {\n                    this.$VerticalScrollBar.Scroll.on(function (sender, e) { return _this._HandleScroll(Fayde.Orientation.Vertical, e); }, this);\n                }\n                this._UpdateScrollBarVisibility();\n            };\n            ScrollViewer.prototype.OnMouseLeftButtonDown = function (e) {\n                if (!e.Handled && this.Focus())\n                    e.Handled = true;\n                _super.prototype.OnMouseLeftButtonDown.call(this, e);\n            };\n            ScrollViewer.prototype.OnMouseWheel = function (e) {\n                _super.prototype.OnMouseWheel.call(this, e);\n                if (e.Handled)\n                    return;\n                var scrollInfo = this.ScrollInfo;\n                if (!scrollInfo)\n                    return;\n                if ((e.Delta > 0 && scrollInfo.VerticalOffset !== 0) || (e.Delta < 0 && scrollInfo.VerticalOffset < this.ScrollableHeight)) {\n                    if (e.Delta >= 0)\n                        scrollInfo.MouseWheelUp();\n                    else\n                        scrollInfo.MouseWheelDown();\n                    e.Handled = true;\n                }\n            };\n            ScrollViewer.prototype.OnTouchDown = function (e) {\n                _super.prototype.OnTouchDown.call(this, e);\n                var scrollInfo = this.ScrollInfo;\n                if (e.Handled || !this.IsEnabled || !scrollInfo)\n                    return;\n                e.Handled = true;\n                this.Focus();\n                e.Device.Capture(this);\n                var offset = this._TouchInitialOffset;\n                offset.x = scrollInfo.HorizontalOffset;\n                offset.y = scrollInfo.VerticalOffset;\n                this._TouchOrigin = e.GetTouchPoint(this).Position;\n            };\n            ScrollViewer.prototype.OnTouchUp = function (e) {\n                _super.prototype.OnTouchUp.call(this, e);\n                if (e.Handled || !this.IsEnabled)\n                    return;\n                e.Handled = true;\n                e.Device.ReleaseCapture(this);\n            };\n            ScrollViewer.prototype.OnTouchMove = function (e) {\n                _super.prototype.OnTouchMove.call(this, e);\n                if (e.Handled || e.Device.Captured !== this)\n                    return;\n                var tp = e.GetTouchPoint(this);\n                var pos = tp.Position;\n                var delta = this._Delta;\n                var origin = this._TouchOrigin;\n                delta.x = pos.x - origin.x;\n                delta.y = pos.y - origin.y;\n                this.ScrollToHorizontalOffset(this._TouchInitialOffset.x + delta.x);\n                this.ScrollToVerticalOffset(this._TouchInitialOffset.y + delta.y);\n            };\n            ScrollViewer.prototype.OnKeyDown = function (e) {\n                _super.prototype.OnKeyDown.call(this, e);\n                if (e.Handled)\n                    return;\n                if (this.$TemplatedParentHandlesScrolling)\n                    return;\n                var orientation = Fayde.Orientation.Vertical;\n                var scrollEventType = Controls.Primitives.ScrollEventType.ThumbTrack;\n                switch (e.Key) {\n                    case Fayde.Input.Key.PageUp:\n                        scrollEventType = Controls.Primitives.ScrollEventType.LargeDecrement;\n                        break;\n                    case Fayde.Input.Key.PageDown:\n                        scrollEventType = Controls.Primitives.ScrollEventType.LargeIncrement;\n                        break;\n                    case Fayde.Input.Key.End:\n                        if (!e.Modifiers.Ctrl)\n                            orientation = Fayde.Orientation.Horizontal;\n                        scrollEventType = Controls.Primitives.ScrollEventType.Last;\n                        break;\n                    case Fayde.Input.Key.Home:\n                        if (!e.Modifiers.Ctrl)\n                            orientation = Fayde.Orientation.Horizontal;\n                        scrollEventType = Controls.Primitives.ScrollEventType.First;\n                        break;\n                    case Fayde.Input.Key.Left:\n                        orientation = Fayde.Orientation.Horizontal;\n                        scrollEventType = Controls.Primitives.ScrollEventType.SmallDecrement;\n                    case Fayde.Input.Key.Up:\n                        scrollEventType = Controls.Primitives.ScrollEventType.SmallDecrement;\n                        break;\n                    case Fayde.Input.Key.Right:\n                        orientation = Fayde.Orientation.Horizontal;\n                        scrollEventType = Controls.Primitives.ScrollEventType.SmallIncrement;\n                    case Fayde.Input.Key.Down:\n                        scrollEventType = Controls.Primitives.ScrollEventType.SmallIncrement;\n                        break;\n                }\n                if (scrollEventType !== Controls.Primitives.ScrollEventType.ThumbTrack)\n                    e.Handled = !!this._HandleScroll(orientation, new Controls.Primitives.ScrollEventArgs(scrollEventType, 0));\n            };\n            ScrollViewer.prototype.ScrollInDirection = function (key) {\n                switch (key) {\n                    case Fayde.Input.Key.PageUp:\n                        this.PageUp();\n                        break;\n                    case Fayde.Input.Key.PageDown:\n                        this.PageDown();\n                        break;\n                    case Fayde.Input.Key.End:\n                        this.PageEnd();\n                        break;\n                    case Fayde.Input.Key.Home:\n                        this.PageHome();\n                        break;\n                    case Fayde.Input.Key.Left:\n                        this.LineLeft();\n                        break;\n                    case Fayde.Input.Key.Up:\n                        this.LineUp();\n                        break;\n                    case Fayde.Input.Key.Right:\n                        this.LineRight();\n                        break;\n                    case Fayde.Input.Key.Down:\n                        this.LineDown();\n                        break;\n                }\n            };\n            ScrollViewer.prototype.ScrollToHorizontalOffset = function (offset) { this._HandleHorizontalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.ThumbPosition, offset)); };\n            ScrollViewer.prototype.ScrollToVerticalOffset = function (offset) { this._HandleVerticalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.ThumbPosition, offset)); };\n            ScrollViewer.prototype.LineUp = function () { this._HandleVerticalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.SmallDecrement, 0)); };\n            ScrollViewer.prototype.LineDown = function () { this._HandleVerticalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.SmallIncrement, 0)); };\n            ScrollViewer.prototype.LineLeft = function () { this._HandleHorizontalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.SmallDecrement, 0)); };\n            ScrollViewer.prototype.LineRight = function () { this._HandleHorizontalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.SmallIncrement, 0)); };\n            ScrollViewer.prototype.PageHome = function () { this._HandleHorizontalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.First, 0)); };\n            ScrollViewer.prototype.PageEnd = function () { this._HandleHorizontalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.Last, 0)); };\n            ScrollViewer.prototype.PageUp = function () { this._HandleVerticalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.LargeDecrement, 0)); };\n            ScrollViewer.prototype.PageDown = function () { this._HandleVerticalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.LargeIncrement, 0)); };\n            ScrollViewer.prototype.PageLeft = function () { this._HandleHorizontalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.LargeDecrement, 0)); };\n            ScrollViewer.prototype.PageRight = function () { this._HandleHorizontalScroll(new Controls.Primitives.ScrollEventArgs(Controls.Primitives.ScrollEventType.LargeIncrement, 0)); };\n            ScrollViewer.prototype._HandleScroll = function (orientation, e) {\n                if (orientation !== Fayde.Orientation.Horizontal)\n                    return this._HandleVerticalScroll(e);\n                return this._HandleHorizontalScroll(e);\n            };\n            ScrollViewer.prototype._HandleHorizontalScroll = function (e) {\n                var scrollInfo = this.ScrollInfo;\n                if (!scrollInfo)\n                    return false;\n                var offset = scrollInfo.HorizontalOffset;\n                var newValue = offset;\n                switch (e.ScrollEventType) {\n                    case Controls.Primitives.ScrollEventType.SmallDecrement:\n                        return scrollInfo.LineLeft();\n                    case Controls.Primitives.ScrollEventType.SmallIncrement:\n                        return scrollInfo.LineRight();\n                    case Controls.Primitives.ScrollEventType.LargeDecrement:\n                        return scrollInfo.PageLeft();\n                    case Controls.Primitives.ScrollEventType.LargeIncrement:\n                        return scrollInfo.PageRight();\n                    case Controls.Primitives.ScrollEventType.ThumbPosition:\n                    case Controls.Primitives.ScrollEventType.ThumbTrack:\n                        newValue = e.Value;\n                        break;\n                    case Controls.Primitives.ScrollEventType.First:\n                        newValue = Number.NEGATIVE_INFINITY;\n                        break;\n                    case Controls.Primitives.ScrollEventType.Last:\n                        newValue = Number.POSITIVE_INFINITY;\n                        break;\n                }\n                newValue = Math.max(newValue, 0);\n                newValue = Math.min(this.ScrollableWidth, newValue);\n                if (NumberEx.AreClose(offset, newValue))\n                    return false;\n                scrollInfo.SetHorizontalOffset(newValue);\n                return true;\n            };\n            ScrollViewer.prototype._HandleVerticalScroll = function (e) {\n                var scrollInfo = this.ScrollInfo;\n                if (!scrollInfo)\n                    return false;\n                var offset = scrollInfo.VerticalOffset;\n                var newValue = offset;\n                switch (e.ScrollEventType) {\n                    case Controls.Primitives.ScrollEventType.SmallDecrement:\n                        return scrollInfo.LineUp();\n                    case Controls.Primitives.ScrollEventType.SmallIncrement:\n                        return scrollInfo.LineDown();\n                        break;\n                    case Controls.Primitives.ScrollEventType.LargeDecrement:\n                        return scrollInfo.PageUp();\n                        break;\n                    case Controls.Primitives.ScrollEventType.LargeIncrement:\n                        return scrollInfo.PageDown();\n                        break;\n                    case Controls.Primitives.ScrollEventType.ThumbPosition:\n                    case Controls.Primitives.ScrollEventType.ThumbTrack:\n                        newValue = e.Value;\n                        break;\n                    case Controls.Primitives.ScrollEventType.First:\n                        newValue = Number.NEGATIVE_INFINITY;\n                        break;\n                    case Controls.Primitives.ScrollEventType.Last:\n                        newValue = Number.POSITIVE_INFINITY;\n                        break;\n                }\n                newValue = Math.max(newValue, 0);\n                newValue = Math.min(this.ScrollableHeight, newValue);\n                if (NumberEx.AreClose(offset, newValue))\n                    return false;\n                return scrollInfo.SetVerticalOffset(newValue);\n            };\n            ScrollViewer.HorizontalScrollBarVisibilityProperty = DependencyProperty.RegisterAttachedCore(\"HorizontalScrollBarVisibility\", function () { return new Fayde.Enum(Controls.ScrollBarVisibility); }, ScrollViewer, Controls.ScrollBarVisibility.Disabled, ScrollViewer._ScrollBarVisibilityChanged);\n            ScrollViewer.VerticalScrollBarVisibilityProperty = DependencyProperty.RegisterAttachedCore(\"VerticalScrollBarVisibility\", function () { return new Fayde.Enum(Controls.ScrollBarVisibility); }, ScrollViewer, Controls.ScrollBarVisibility.Disabled, ScrollViewer._ScrollBarVisibilityChanged);\n            ScrollViewer.ComputedHorizontalScrollBarVisibilityProperty = DependencyProperty.RegisterReadOnlyCore(\"ComputedHorizontalScrollBarVisibility\", function () { return new Fayde.Enum(Fayde.Visibility); }, ScrollViewer);\n            ScrollViewer.ComputedVerticalScrollBarVisibilityProperty = DependencyProperty.RegisterReadOnlyCore(\"ComputedVerticalScrollBarVisibility\", function () { return new Fayde.Enum(Fayde.Visibility); }, ScrollViewer);\n            ScrollViewer.HorizontalOffsetProperty = DependencyProperty.RegisterReadOnlyCore(\"HorizontalOffset\", function () { return Number; }, ScrollViewer);\n            ScrollViewer.VerticalOffsetProperty = DependencyProperty.RegisterReadOnlyCore(\"VerticalOffset\", function () { return Number; }, ScrollViewer);\n            ScrollViewer.ScrollableWidthProperty = DependencyProperty.RegisterReadOnlyCore(\"ScrollableWidth\", function () { return Number; }, ScrollViewer);\n            ScrollViewer.ScrollableHeightProperty = DependencyProperty.RegisterReadOnlyCore(\"ScrollableHeight\", function () { return Number; }, ScrollViewer);\n            ScrollViewer.ViewportWidthProperty = DependencyProperty.RegisterReadOnlyCore(\"ViewportWidth\", function () { return Number; }, ScrollViewer);\n            ScrollViewer.ViewportHeightProperty = DependencyProperty.RegisterReadOnlyCore(\"ViewportHeight\", function () { return Number; }, ScrollViewer);\n            ScrollViewer.ExtentWidthProperty = DependencyProperty.RegisterReadOnlyCore(\"ExtentWidth\", function () { return Number; }, ScrollViewer);\n            ScrollViewer.ExtentHeightProperty = DependencyProperty.RegisterReadOnlyCore(\"ExtentHeight\", function () { return Number; }, ScrollViewer);\n            return ScrollViewer;\n        })(Controls.ContentControl);\n        Controls.ScrollViewer = ScrollViewer;\n        Fayde.CoreLibrary.add(ScrollViewer);\n        Controls.TemplateParts(ScrollViewer, { Name: \"ScrollContentPresenter\", Type: Controls.ScrollContentPresenter }, { Name: \"HorizontalScrollBar\", Type: Controls.Primitives.ScrollBar }, { Name: \"VerticalScrollBar\", Type: Controls.Primitives.ScrollBar });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Primitives/Selector.ts\" />\n/// <reference path=\"ContentPresenter.ts\" />\n/// <reference path=\"Primitives/Popup.ts\" />\n/// <reference path=\"Primitives/ToggleButton.ts\" />\n/// <reference path=\"ScrollViewer.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ComboBox = (function (_super) {\n            __extends(ComboBox, _super);\n            function ComboBox() {\n                _super.call(this);\n                this.DropDownOpened = new nullstone.Event();\n                this.DropDownClosed = new nullstone.Event();\n                this.$DisplayedItem = null;\n                this.$SelectionBoxItem = null;\n                this.$SelectionBoxItemTemplate = null;\n                this._FocusedIndex = -1;\n                this.DefaultStyleKey = ComboBox;\n            }\n            ComboBox.prototype._IsDropDownOpenChanged = function (args) {\n                var open = args.NewValue;\n                if (this.$Popup != null)\n                    this.$Popup.IsOpen = open;\n                if (this.$DropDownToggle != null)\n                    this.$DropDownToggle.IsChecked = open;\n                if (open) {\n                    this._FocusedIndex = this.Items.Count > 0 ? Math.max(this.SelectedIndex, 0) : -1;\n                    if (this._FocusedIndex > -1) {\n                        var focusedItem = this.ItemContainersManager.ContainerFromIndex(this._FocusedIndex);\n                        if (focusedItem instanceof Controls.ComboBoxItem)\n                            focusedItem.Focus();\n                    }\n                    this.LayoutUpdated.on(this._UpdatePopupSizeAndPosition, this);\n                    this.DropDownOpened.raise(this, null);\n                }\n                else {\n                    this.Focus();\n                    this.LayoutUpdated.off(this._UpdatePopupSizeAndPosition, this);\n                    this.DropDownClosed.raise(this, null);\n                }\n                var selectedItem = this.SelectedItem;\n                this._UpdateDisplayedItem(open && selectedItem instanceof Fayde.UIElement ? null : selectedItem);\n                this.UpdateVisualState(true);\n                this._CheckWatermarkVisibility();\n            };\n            ComboBox.prototype._MaxDropDownHeightChanged = function (args) {\n                this._UpdatePopupMaxHeight(args.NewValue);\n            };\n            ComboBox.prototype._GetChildOfType = function (name, type) {\n                var temp = this.GetTemplateChild(name);\n                if (temp instanceof type)\n                    return temp;\n            };\n            ComboBox.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                this.UpdateVisualState(false);\n                this.$ContentPresenter = this._GetChildOfType(\"ContentPresenter\", Controls.ContentPresenter);\n                this.$Popup = this._GetChildOfType(\"Popup\", Controls.Primitives.Popup);\n                this.$DropDownToggle = this._GetChildOfType(\"DropDownToggle\", Controls.Primitives.ToggleButton);\n                this.$WatermarkElement = this.GetTemplateChild(\"WatermarkElement\", Fayde.FrameworkElement);\n                if (this.$ContentPresenter != null)\n                    this._NullSelFallback = this.$ContentPresenter.Content;\n                if (this.$Popup != null) {\n                    this._UpdatePopupMaxHeight(this.MaxDropDownHeight);\n                    this.$Popup.WatchOutsideClick(this._PopupClickedOutside, this);\n                    var child = this.$Popup.Child;\n                    if (child != null) {\n                        child.KeyDown.on(this._OnChildKeyDown, this);\n                        child.SizeChanged.on(this._UpdatePopupSizeAndPosition, this);\n                    }\n                }\n                if (this.$DropDownToggle != null) {\n                    this.$DropDownToggle.Checked.on(this._OnToggleChecked, this);\n                    this.$DropDownToggle.Unchecked.on(this._OnToggleUnchecked, this);\n                }\n                this.UpdateVisualState(false);\n                this._UpdateDisplayedItem(this.SelectedItem);\n            };\n            ComboBox.prototype.OnItemContainerStyleChanged = function (args) {\n                var newStyle = args.NewValue;\n                var enumerator = this.ItemContainersManager.GetEnumerator();\n                while (enumerator.moveNext()) {\n                    var container = enumerator.current;\n                    if (container && container !== enumerator.CurrentItem)\n                        container.Style = newStyle;\n                }\n            };\n            ComboBox.prototype.IsItemItsOwnContainer = function (item) {\n                return item instanceof Controls.ComboBoxItem;\n            };\n            ComboBox.prototype.GetContainerForItem = function () {\n                return new Controls.ComboBoxItem();\n            };\n            ComboBox.prototype.PrepareContainerForItem = function (container, item) {\n                _super.prototype.PrepareContainerForItem.call(this, container, item);\n                var cbi = container;\n                if (cbi !== item) {\n                    var ics = this.ItemContainerStyle;\n                    if (!cbi.Style && ics)\n                        cbi.Style = ics;\n                }\n            };\n            ComboBox.prototype.GoToStateFocus = function (gotoFunc) {\n                var isEnabled = this.IsEnabled;\n                if (this.IsDropDownOpen && isEnabled)\n                    return gotoFunc(\"FocusedDropDown\");\n                else if (this.IsFocused && isEnabled)\n                    return gotoFunc(\"Focused\");\n                return gotoFunc(\"Unfocused\");\n            };\n            ComboBox.prototype.OnIsEnabledChanged = function (e) {\n                _super.prototype.OnIsEnabledChanged.call(this, e);\n                if (!this.IsEnabled)\n                    this.IsDropDownOpen = false;\n            };\n            ComboBox.prototype.OnMouseLeftButtonDown = function (e) {\n                _super.prototype.OnMouseLeftButtonDown.call(this, e);\n                if (!e.Handled) {\n                    e.Handled = true;\n                    this.SetValueInternal(ComboBox.IsSelectionActiveProperty, true);\n                    this.IsDropDownOpen = !this.IsDropDownOpen;\n                }\n            };\n            ComboBox.prototype.OnMouseEnter = function (e) {\n                _super.prototype.OnMouseEnter.call(this, e);\n                this.UpdateVisualState(true);\n            };\n            ComboBox.prototype.OnMouseLeave = function (e) {\n                _super.prototype.OnMouseLeave.call(this, e);\n                this.UpdateVisualState(true);\n            };\n            ComboBox.prototype.OnTouchMove = function (e) {\n                _super.prototype.OnTouchMove.call(this, e);\n                this.UpdateVisualState(true);\n            };\n            ComboBox.prototype.OnTouchDown = function (e) {\n                _super.prototype.OnTouchDown.call(this, e);\n                if (!e.Handled) {\n                    e.Handled = true;\n                    this.SetValueInternal(ComboBox.IsSelectionActiveProperty, true);\n                    this.IsDropDownOpen = !this.IsDropDownOpen;\n                }\n            };\n            ComboBox.prototype.OnTouchLeave = function (e) {\n                _super.prototype.OnTouchLeave.call(this, e);\n                this.UpdateVisualState(true);\n            };\n            ComboBox.prototype.OnKeyDown = function (e) {\n                _super.prototype.OnKeyDown.call(this, e);\n                if (e.Handled)\n                    return;\n                e.Handled = true;\n                var key = e.Key;\n                if (this.FlowDirection === Fayde.FlowDirection.RightToLeft) {\n                    if (key === Fayde.Input.Key.Left)\n                        key = Fayde.Input.Key.Right;\n                    else if (key === Fayde.Input.Key.Right)\n                        key = Fayde.Input.Key.Left;\n                }\n                switch (key) {\n                    case Fayde.Input.Key.Escape:\n                        this.IsDropDownOpen = false;\n                        break;\n                    case Fayde.Input.Key.Enter:\n                    case Fayde.Input.Key.Space:\n                        if (this.IsDropDownOpen && this._FocusedIndex !== this.SelectedIndex) {\n                            this.SelectedIndex = this._FocusedIndex;\n                            this.IsDropDownOpen = false;\n                        }\n                        else {\n                            this.IsDropDownOpen = true;\n                        }\n                        break;\n                    case Fayde.Input.Key.Right:\n                    case Fayde.Input.Key.Down:\n                        if (this.IsDropDownOpen) {\n                            if (this._FocusedIndex < (this.Items.Count - 1)) {\n                                this._FocusedIndex++;\n                                this.ItemContainersManager.ContainerFromIndex(this._FocusedIndex).Focus();\n                            }\n                        }\n                        else {\n                            this.SelectedIndex = Math.min(this.SelectedIndex + 1, this.Items.Count - 1);\n                        }\n                        break;\n                    case Fayde.Input.Key.Left:\n                    case Fayde.Input.Key.Up:\n                        if (this.IsDropDownOpen) {\n                            if (this._FocusedIndex > 0) {\n                                this._FocusedIndex--;\n                                this.ItemContainersManager.ContainerFromIndex(this._FocusedIndex).Focus();\n                            }\n                        }\n                        else {\n                            this.SelectedIndex = Math.max(this.SelectedIndex - 1, 0);\n                        }\n                        break;\n                    default:\n                        e.Handled = false;\n                        break;\n                }\n            };\n            ComboBox.prototype._CheckWatermarkVisibility = function () {\n                if (this.Watermark.length > 0 && this.$WatermarkElement)\n                    this.$WatermarkElement.Visibility = this.$SelectionBoxItem != null ? Fayde.Visibility.Collapsed : Fayde.Visibility.Visible;\n            };\n            ComboBox.prototype.OnGotFocus = function (e) {\n                _super.prototype.OnGotFocus.call(this, e);\n                this.UpdateVisualState(true);\n            };\n            ComboBox.prototype.OnLostFocus = function (e) {\n                _super.prototype.OnLostFocus.call(this, e);\n                this.SetValueInternal(ComboBox.IsSelectionActiveProperty, this.$Popup == null ? false : this.$Popup.IsOpen);\n                this.UpdateVisualState(true);\n            };\n            ComboBox.prototype._OnChildKeyDown = function (sender, e) {\n                this.OnKeyDown(e);\n            };\n            ComboBox.prototype.OnSelectionChanged = function (e) {\n                if (!this.IsDropDownOpen)\n                    this._UpdateDisplayedItem(this.SelectedItem);\n                this._CheckWatermarkVisibility();\n            };\n            ComboBox.prototype._OnToggleChecked = function (sender, e) { this.IsDropDownOpen = true; };\n            ComboBox.prototype._OnToggleUnchecked = function (sender, e) { this.IsDropDownOpen = false; };\n            ComboBox.prototype._PopupClickedOutside = function () {\n                this.IsDropDownOpen = false;\n            };\n            ComboBox.prototype._UpdateDisplayedItem = function (selectedItem) {\n                if (!this.$ContentPresenter)\n                    return;\n                if (this.$DisplayedItem != null) {\n                    this.$DisplayedItem.Content = this.$ContentPresenter.Content;\n                    this.$DisplayedItem = null;\n                }\n                this.$ContentPresenter.Content = null;\n                if (selectedItem == null) {\n                    this.$ContentPresenter.Content = this._NullSelFallback;\n                    this.$ContentPresenter.ContentTemplate = null;\n                    this.$SelectionBoxItem = null;\n                    this.$SelectionBoxItemTemplate = null;\n                    return;\n                }\n                var content = selectedItem;\n                if (content instanceof Controls.ComboBoxItem)\n                    content = content.Content;\n                var icm = this.ItemContainersManager;\n                var selectedIndex = this.SelectedIndex;\n                var temp = icm.ContainerFromIndex(selectedIndex);\n                if (temp instanceof Controls.ComboBoxItem)\n                    this.$DisplayedItem = temp;\n                this.$SelectionBoxItem = content;\n                this.$SelectionBoxItemTemplate = this.ItemTemplate;\n                if (this.$DisplayedItem != null) {\n                    this.$SelectionBoxItemTemplate = this.$DisplayedItem.ContentTemplate;\n                    if (content instanceof Fayde.UIElement)\n                        this.$DisplayedItem.Content = null;\n                    else\n                        this.$DisplayedItem = null;\n                }\n                else {\n                    temp = icm.ContainerFromIndex(selectedIndex);\n                    var container;\n                    if (temp instanceof Controls.ComboBoxItem)\n                        container = temp;\n                    if (!container) {\n                        var generator = icm.CreateGenerator(selectedIndex, 1);\n                        if (generator.Generate() && generator.Current instanceof Controls.ComboBoxItem) {\n                            container = generator.Current;\n                            this.PrepareContainerForItem(container, generator.CurrentItem);\n                        }\n                    }\n                    if (container)\n                        this.$SelectionBoxItemTemplate = container.ContentTemplate;\n                }\n                this.$ContentPresenter.Content = this.$SelectionBoxItem;\n                this.$ContentPresenter.ContentTemplate = this.$SelectionBoxItemTemplate;\n            };\n            ComboBox.prototype._UpdatePopupSizeAndPosition = function (sender, e) {\n                var popup = this.$Popup;\n                if (!popup)\n                    return;\n                var child = popup.Child;\n                if (!(child instanceof Fayde.FrameworkElement))\n                    return;\n                child.MinWidth = this.ActualWidth;\n                var root = Fayde.VisualTreeHelper.GetRoot(this);\n                if (!root)\n                    return;\n                try {\n                    var xform = this.TransformToVisual(null);\n                }\n                catch (err) {\n                    return;\n                }\n                var offset = new Point(0, this.ActualHeight);\n                var bottomRight = new Point(offset.x + child.ActualWidth, offset.y + child.ActualHeight);\n                var topLeft = xform.Transform(offset);\n                bottomRight = xform.Transform(bottomRight);\n                var isRightToLeft = (this.FlowDirection === Fayde.FlowDirection.RightToLeft);\n                if (isRightToLeft) {\n                    var left = bottomRight.x;\n                    bottomRight.x = topLeft.x;\n                    topLeft.x = left;\n                }\n                var finalOffset = new Point();\n                var raw = root.ActualWidth;\n                if (bottomRight.x > raw) {\n                    finalOffset.x = raw - bottomRight.x;\n                }\n                else if (topLeft.x < 0) {\n                    finalOffset.x = offset.x - topLeft.x;\n                }\n                else {\n                    finalOffset.x = offset.x;\n                }\n                if (isRightToLeft)\n                    finalOffset.x = -finalOffset.x;\n                var rah = root.ActualHeight;\n                if (bottomRight.y > rah) {\n                    finalOffset.y = -child.ActualHeight;\n                }\n                else {\n                    finalOffset.y = this.RenderSize.height;\n                }\n                popup.HorizontalOffset = finalOffset.x;\n                popup.VerticalOffset = finalOffset.y;\n                this._UpdatePopupMaxHeight(this.MaxDropDownHeight);\n            };\n            ComboBox.prototype._UpdatePopupMaxHeight = function (height) {\n                var child;\n                if (this.$Popup && (child = this.$Popup.Child) && child instanceof Fayde.FrameworkElement) {\n                    if (height === Number.POSITIVE_INFINITY) {\n                        var surface = this.XamlNode.LayoutUpdater.tree.surface;\n                        if (surface)\n                            height = surface.height / 2.0;\n                    }\n                    child.MaxHeight = height;\n                }\n            };\n            ComboBox.IsDropDownOpenProperty = DependencyProperty.Register(\"IsDropDownOpen\", function () { return Boolean; }, ComboBox, false, function (d, args) { return d._IsDropDownOpenChanged(args); });\n            ComboBox.ItemContainerStyleProperty = DependencyProperty.Register(\"ItemContainerStyle\", function () { return Fayde.Style; }, ComboBox, undefined, function (d, args) { return d.OnItemContainerStyleChanged(args); });\n            ComboBox.MaxDropDownHeightProperty = DependencyProperty.Register(\"MaxDropDownHeight\", function () { return Number; }, ComboBox, Number.POSITIVE_INFINITY, function (d, args) { return d._MaxDropDownHeightChanged(args); });\n            ComboBox.IsSelectionActiveProperty = Controls.Primitives.Selector.IsSelectionActiveProperty;\n            ComboBox.WatermarkProperty = DependencyProperty.Register(\"Watermark\", function () { return String; }, ComboBox, \"\");\n            return ComboBox;\n        })(Controls.Primitives.Selector);\n        Controls.ComboBox = ComboBox;\n        Fayde.CoreLibrary.add(ComboBox);\n        Controls.TemplateParts(ComboBox, { Name: \"ContentPresenter\", Type: Controls.ContentPresenter }, { Name: \"Popup\", Type: Controls.Primitives.Popup }, { Name: \"ContentPresenterBorder\", Type: Fayde.FrameworkElement }, { Name: \"DropDownToggle\", Type: Controls.Primitives.ToggleButton }, { Name: \"ScrollViewer\", Type: Controls.ScrollViewer }, { Name: \"WatermarkElement\", Type: Fayde.FrameworkElement });\n        Controls.TemplateVisualStates(ComboBox, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" }, { GroupName: \"FocusStates\", Name: \"FocusedDropDown\" }, { GroupName: \"ValidationStates\", Name: \"Valid\" }, { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" }, { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ContentControl.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ListBoxItem = (function (_super) {\n            __extends(ListBoxItem, _super);\n            function ListBoxItem() {\n                _super.call(this);\n                this.ParentSelectorChanged = new nullstone.Event();\n                this.DefaultStyleKey = ListBoxItem;\n            }\n            Object.defineProperty(ListBoxItem.prototype, \"ParentSelector\", {\n                get: function () { return this._ParentSelector; },\n                set: function (value) {\n                    if (this._ParentSelector === value)\n                        return;\n                    this._ParentSelector = value;\n                    this.ParentSelectorChanged.raise(this, null);\n                },\n                enumerable: true,\n                configurable: true\n            });\n            ListBoxItem.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                this.UpdateVisualState(false);\n            };\n            ListBoxItem.prototype.OnMouseLeftButtonDown = function (e) {\n                if (e.Handled)\n                    return;\n                e.Handled = true;\n                if (!this.XamlNode.Focus(true))\n                    return;\n                if (this._ParentSelector != null)\n                    this._ParentSelector.NotifyListItemClicked(this);\n            };\n            ListBoxItem.prototype.OnMouseEnter = function (e) {\n                _super.prototype.OnMouseEnter.call(this, e);\n                this.UpdateVisualState();\n            };\n            ListBoxItem.prototype.OnMouseLeave = function (e) {\n                _super.prototype.OnMouseLeave.call(this, e);\n                this.UpdateVisualState();\n            };\n            ListBoxItem.prototype.OnTouchMove = function (e) {\n                _super.prototype.OnTouchMove.call(this, e);\n                this.UpdateVisualState();\n            };\n            ListBoxItem.prototype.OnTouchDown = function (e) {\n                if (e.Handled)\n                    return;\n                e.Handled = true;\n                if (!this.XamlNode.Focus(true))\n                    return;\n                if (this._ParentSelector != null)\n                    this._ParentSelector.NotifyListItemClicked(this);\n            };\n            ListBoxItem.prototype.OnTouchUp = function (e) {\n                _super.prototype.OnTouchUp.call(this, e);\n                this.UpdateVisualState();\n            };\n            ListBoxItem.prototype.OnGotFocus = function (e) {\n                _super.prototype.OnGotFocus.call(this, e);\n                this.UpdateVisualState();\n                if (this._ParentSelector != null) {\n                    this._ParentSelector.NotifyListItemGotFocus(this);\n                }\n            };\n            ListBoxItem.prototype.OnLostFocus = function (e) {\n                _super.prototype.OnLostFocus.call(this, e);\n                this.UpdateVisualState();\n                if (this._ParentSelector != null) {\n                    this._ParentSelector.NotifyListItemLostFocus(this);\n                }\n            };\n            ListBoxItem.prototype.GoToStateSelection = function (gotoFunc) {\n                if (!this.IsSelected)\n                    return gotoFunc(\"Unselected\");\n                if (gotoFunc(\"SelectedUnfocused\"))\n                    return true;\n                return gotoFunc(\"Selected\");\n            };\n            ListBoxItem.prototype.OnIsSelectedChanged = function (args) {\n                this.UpdateVisualState();\n            };\n            ListBoxItem.IsSelectedProperty = DependencyProperty.RegisterCore(\"IsSelected\", function () { return Boolean; }, ListBoxItem, null, function (d, args) { return d.OnIsSelectedChanged(args); });\n            return ListBoxItem;\n        })(Controls.ContentControl);\n        Controls.ListBoxItem = ListBoxItem;\n        Fayde.CoreLibrary.add(ListBoxItem);\n        Controls.TemplateVisualStates(ListBoxItem, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" }, { GroupName: \"SelectionStates\", Name: \"Unselected\" }, { GroupName: \"SelectionStates\", Name: \"Selected\" }, { GroupName: \"SelectionStates\", Name: \"SelectedUnfocused\" });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ListBoxItem.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ComboBoxItem = (function (_super) {\n            __extends(ComboBoxItem, _super);\n            function ComboBoxItem() {\n                _super.call(this);\n                this.DefaultStyleKey = ComboBoxItem;\n            }\n            ComboBoxItem.prototype.OnMouseLeftButtonUp = function (e) {\n                _super.prototype.OnMouseLeftButtonUp.call(this, e);\n                if (this.ParentSelector instanceof Controls.ComboBox)\n                    this.ParentSelector.IsDropDownOpen = false;\n            };\n            ComboBoxItem.prototype.OnTouchUp = function (e) {\n                _super.prototype.OnTouchUp.call(this, e);\n                if (this.ParentSelector instanceof Controls.ComboBox)\n                    this.ParentSelector.IsDropDownOpen = false;\n            };\n            return ComboBoxItem;\n        })(Controls.ListBoxItem);\n        Controls.ComboBoxItem = ComboBoxItem;\n        Fayde.CoreLibrary.add(ComboBoxItem);\n        Controls.TemplateVisualStates(ComboBoxItem, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" }, { GroupName: \"SelectionStates\", Name: \"Unselected\" }, { GroupName: \"SelectionStates\", Name: \"Selected\" }, { GroupName: \"SelectionStates\", Name: \"SelectedUnfocused\" });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject\" />\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        var FrameworkTemplate = (function (_super) {\n            __extends(FrameworkTemplate, _super);\n            function FrameworkTemplate() {\n                _super.apply(this, arguments);\n            }\n            FrameworkTemplate.prototype.Validate = function () {\n                return \"\";\n            };\n            FrameworkTemplate.prototype.GetVisualTree = function (bindingSource) {\n                var uie = LoadImpl(this.App, this.$$markup, this.$$resources, bindingSource);\n                if (!(uie instanceof Fayde.UIElement))\n                    throw new XamlParseException(\"Template root visual is not a UIElement.\");\n                return uie;\n            };\n            return FrameworkTemplate;\n        })(Fayde.DependencyObject);\n        Markup.FrameworkTemplate = FrameworkTemplate;\n        function setTemplateRoot(ft, root) {\n            if (root instanceof Element)\n                ft.$$markup = Markup.CreateXaml(root);\n        }\n        function setResources(ft, res) {\n            ft.$$resources = res;\n        }\n        function LoadXaml(app, xaml) {\n            var markup = Markup.CreateXaml(xaml);\n            return Load(app, markup);\n        }\n        Markup.LoadXaml = LoadXaml;\n        function Load(app, xm) {\n            return LoadImpl(app, xm);\n        }\n        Markup.Load = Load;\n        function LoadImpl(app, xm, resources, bindingSource) {\n            perfex.timer.start('MarkupLoad', xm.uri.toString());\n            var oresolve = {\n                isPrimitive: false,\n                type: undefined\n            };\n            var namescope = new Fayde.NameScope(true);\n            var active = Markup.Internal.createActiveObject(app, namescope, bindingSource);\n            var pactor = Markup.Internal.createPropertyActor(active, extractType, extractDP);\n            var oactor = Markup.Internal.createObjectActor(pactor);\n            var ractor = Markup.Internal.createResourcesActor(active, resources);\n            var last;\n            var parser = xm.createParser()\n                .setNamespaces(Fayde.XMLNS, Fayde.XMLNSX);\n            var parse = {\n                resolveType: function (uri, name) {\n                    if (!Fayde.TypeManager.resolveType(uri, name, oresolve))\n                        throw new XamlParseException(\"Could not resolve type [\" + uri + \"][\" + name + \"].\");\n                    return oresolve;\n                },\n                resolveObject: function (type) {\n                    if (type === Fayde.ResourceDictionary && !pactor.isNewResources())\n                        return undefined;\n                    perfex.timer.start('MarkupCreateObject', type);\n                    var obj = new (type)();\n                    if (obj instanceof FrameworkTemplate)\n                        parser.skipBranch();\n                    else if (obj instanceof Markup.StaticResource)\n                        obj.setContext(active.getApp(), resources);\n                    perfex.timer.stop();\n                    return obj;\n                },\n                resolvePrimitive: function (type, text) {\n                    return nullstone.convertAnyToType(text, type);\n                },\n                resolveResources: function (owner, ownerType) {\n                    var rd = owner.Resources;\n                    return rd;\n                },\n                branchSkip: function (root, obj) {\n                    if (obj instanceof FrameworkTemplate) {\n                        var ft = last = obj;\n                        var err = obj.Validate();\n                        if (err)\n                            throw new XamlParseException(err);\n                        setTemplateRoot(ft, root);\n                        setResources(ft, ractor.get());\n                    }\n                },\n                object: function (obj, isContent) {\n                    active.set(obj);\n                    oactor.start();\n                    ractor.start();\n                },\n                objectEnd: function (obj, key, isContent, prev) {\n                    last = obj;\n                    ractor.end();\n                    oactor.end();\n                    active.set(prev);\n                    if (!active.obj)\n                        return;\n                    if (isContent) {\n                        pactor.startContent();\n                        pactor.addObject(obj, key);\n                        pactor.end();\n                    }\n                    else {\n                        pactor.addObject(obj, key);\n                    }\n                },\n                contentText: function (text) {\n                    pactor.setContentText(text);\n                },\n                name: function (name) {\n                    active.setName(name);\n                },\n                propertyStart: function (ownerType, propName) {\n                    pactor.start(ownerType, propName);\n                },\n                propertyEnd: function (ownerType, propName) {\n                    pactor.end();\n                },\n                attributeStart: function (ownerType, attrName) {\n                },\n                attributeEnd: function (ownerType, attrName, obj) {\n                    pactor.setObject(ownerType, attrName, obj);\n                },\n                error: function (err) {\n                    if (err instanceof nullstone.markup.xaml.SkipBranchError) {\n                        if (active.obj instanceof FrameworkTemplate)\n                            throw new XamlParseException(\"Templates must contain only 1 visual root and no other child elements.\", err.root);\n                    }\n                    throw new XamlParseException(\"Invalid XAML in document '\" + xm.uri + \"'\", err);\n                    return false;\n                },\n                end: function () {\n                }\n            };\n            function extractType(text) {\n                var prefix = null;\n                var name = text;\n                var ind = name.indexOf(':');\n                if (ind > -1) {\n                    prefix = name.substr(0, ind);\n                    name = name.substr(ind + 1);\n                }\n                var uri = parser.resolvePrefix(prefix);\n                Fayde.TypeManager.resolveType(uri, name, oresolve);\n                return oresolve.type;\n            }\n            function extractDP(text) {\n                var name = text;\n                var ind = name.indexOf('.');\n                var ownerType;\n                if (ind > -1) {\n                    ownerType = extractType(name.substr(0, ind));\n                    name = name.substr(ind + 1);\n                }\n                else {\n                    for (var en = parser.walkUpObjects(); en.moveNext();) {\n                        var style = en.current;\n                        if (style instanceof Fayde.Style) {\n                            ownerType = style.TargetType;\n                            if (!ownerType)\n                                throw new XamlParseException(\"Style must have a TargetType.\");\n                            break;\n                        }\n                    }\n                }\n                return (ownerType)\n                    ? DependencyProperty.GetDependencyProperty(ownerType, name)\n                    : null;\n            }\n            parser.on(parse)\n                .parse(xm.root);\n            if (last instanceof Fayde.XamlObject) {\n                last.XamlNode.NameScope = namescope;\n            }\n            perfex.timer.stop();\n            return last;\n        }\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Markup/Loader\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ControlTemplate = (function (_super) {\n            __extends(ControlTemplate, _super);\n            function ControlTemplate() {\n                _super.apply(this, arguments);\n            }\n            ControlTemplate.prototype.Validate = function () {\n                if (!this.TargetType)\n                    return \"ControlTemplate must have a TargetType.\";\n            };\n            ControlTemplate.TargetTypeProperty = DependencyProperty.Register(\"TargetType\", function () { return Fayde.IType_; }, ControlTemplate);\n            return ControlTemplate;\n        })(Fayde.Markup.FrameworkTemplate);\n        Controls.ControlTemplate = ControlTemplate;\n        Fayde.CoreLibrary.add(ControlTemplate);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ContentControl\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        function clickResultPropertyChanged(dobj, args) {\n            var btn = (dobj instanceof Controls.Primitives.ButtonBase) ? dobj : null;\n            if (!btn)\n                return;\n            if (args.OldValue !== undefined)\n                btn.Click.off(buttonClicked, btn);\n            if (args.NewValue !== undefined)\n                btn.Click.on(buttonClicked, btn);\n        }\n        function buttonClicked(sender, args) {\n            var dialog = Fayde.VisualTreeHelper.GetParentOfType(sender, Dialog);\n            if (dialog)\n                dialog.DialogResult = Dialog.GetClickResult(sender);\n        }\n        var Dialog = (function (_super) {\n            __extends(Dialog, _super);\n            function Dialog() {\n                _super.call(this);\n                this._IgnoreResult = false;\n                this.DefaultStyleKey = Dialog;\n            }\n            Dialog.prototype.OnDialogResultChanged = function (args) {\n                if (this._IgnoreResult === true)\n                    return;\n                var overlay = Controls.Primitives.Overlay.FindOverlay(this);\n                if (overlay) {\n                    overlay.Close(args.NewValue);\n                    this._IgnoreResult = true;\n                    try {\n                        this.SetCurrentValue(Dialog.DialogResultProperty, undefined);\n                    }\n                    finally {\n                        this._IgnoreResult = false;\n                    }\n                }\n            };\n            Dialog.GetClickResult = function (dobj) {\n                return dobj.GetValue(Dialog.ClickResultProperty);\n            };\n            Dialog.SetClickResult = function (dobj, value) {\n                dobj.SetValue(Dialog.ClickResultProperty, value);\n            };\n            Dialog.DialogResultProperty = DependencyProperty.Register(\"DialogResult\", function () { return Boolean; }, Dialog, undefined, function (d, args) { return d.OnDialogResultChanged(args); });\n            Dialog.ClickResultProperty = DependencyProperty.RegisterAttached(\"ClickResult\", function () { return Boolean; }, Dialog, undefined, clickResultPropertyChanged);\n            return Dialog;\n        })(Controls.ContentControl);\n        Controls.Dialog = Dialog;\n        Fayde.CoreLibrary.add(Dialog);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Control.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var UserControl = (function (_super) {\n            __extends(UserControl, _super);\n            function UserControl() {\n                _super.call(this);\n                this.DefaultStyleKey = UserControl;\n            }\n            UserControl.prototype.CreateLayoutUpdater = function () {\n                return new minerva.controls.usercontrol.UserControlUpdater();\n            };\n            UserControl.prototype.InitializeComponent = function () {\n                this.ApplyTemplate();\n            };\n            UserControl.ContentProperty = DependencyProperty.Register(\"Content\", function () { return Fayde.UIElement; }, UserControl);\n            return UserControl;\n        })(Controls.Control);\n        Controls.UserControl = UserControl;\n        Fayde.CoreLibrary.add(UserControl);\n        Fayde.Markup.Content(UserControl, UserControl.ContentProperty);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(UserControl.ContentProperty, function (updater, ov, nv, uc) {\n                var error = new BError();\n                if (ov instanceof Fayde.UIElement)\n                    uc.XamlNode.DetachVisualChild(ov, error);\n                if (nv instanceof Fayde.UIElement)\n                    uc.XamlNode.AttachVisualChild(nv, error);\n                if (error.Message)\n                    error.ThrowException();\n                updater.updateBounds();\n            }, false, false);\n        })(reactions || (reactions = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"UserControl.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Page = (function (_super) {\n            __extends(Page, _super);\n            function Page() {\n                _super.call(this);\n                this.DefaultStyleKey = Page;\n            }\n            Page.GetAsync = function (initiator, url) {\n                return Fayde.Markup.Resolve(url)\n                    .then(function (xm) {\n                    TimelineProfile.Parse(true, \"Page\");\n                    var page = Fayde.Markup.Load(initiator.App, xm);\n                    TimelineProfile.Parse(false, \"Page\");\n                    if (!(page instanceof Controls.Page))\n                        throw new Error(\"Markup must be a Page.\");\n                    return page;\n                });\n            };\n            Page.TitleProperty = DependencyProperty.Register(\"Title\", function () { return String; }, Page);\n            return Page;\n        })(Controls.UserControl);\n        Controls.Page = Page;\n        Fayde.CoreLibrary.add(Page);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Navigation;\n    (function (Navigation) {\n        Navigation.INavigate_ = new nullstone.Interface(\"INavigate\");\n    })(Navigation = Fayde.Navigation || (Fayde.Navigation = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ContentControl.ts\" />\n/// <reference path=\"Page.ts\" />\n/// <reference path=\"../Navigation/INavigate.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        function createErrorDoc(error) {\n            var safe = (error || '').toString()\n                .replace(/&/g, '&amp;')\n                .replace(/</g, '&lt;')\n                .replace(/>/g, '&gt;')\n                .replace(/\"/g, '&quot;')\n                .replace(/'/g, '&apos;');\n            var xaml = '<Page xmlns=\"' + Fayde.XMLNS + '\" xmlns:x=\"' + Fayde.XMLNSX + '\" Title=\"Error\">';\n            xaml += '<TextBlock Text=\"' + safe + '\" />';\n            xaml += '</Page>';\n            return Fayde.Markup.CreateXaml(xaml, Fayde.XMLNS + \"/frame/error\");\n        }\n        function getErrorPage(app, error) {\n            return Fayde.Markup.Load(app, createErrorDoc(error));\n        }\n        var Frame = (function (_super) {\n            __extends(Frame, _super);\n            function Frame() {\n                _super.call(this);\n                this._NavService = new Fayde.Navigation.NavigationService();\n                this._CurrentRoute = undefined;\n                this.DefaultStyleKey = Frame;\n                this.Loaded.on(this._FrameLoaded, this);\n            }\n            Frame.prototype.OnIsLoadingChanged = function (oldIsLoading, newIsLoading) {\n                this.UpdateVisualState();\n            };\n            Frame.prototype.GoToStates = function (gotoFunc) {\n                this.GoToStateLoading(gotoFunc);\n            };\n            Frame.prototype.GoToStateLoading = function (gotoFunc) {\n                return gotoFunc(this.IsLoading ? \"Loading\" : \"Idle\");\n            };\n            Frame.prototype.Navigate = function (uri) {\n                return this._NavService.Navigate(uri);\n            };\n            Frame.prototype.GoForward = function () {\n            };\n            Frame.prototype.GoBackward = function () {\n            };\n            Frame.prototype.StopLoading = function () {\n            };\n            Frame.prototype._FrameLoaded = function (sender, e) {\n                if (this.IsDeepLinked) {\n                    this._NavService.LocationChanged.on(this._HandleDeepLink, this);\n                    this._HandleDeepLink();\n                }\n            };\n            Frame.prototype._HandleDeepLink = function () {\n                this._LoadContent(this._NavService.CurrentUri);\n            };\n            Frame.prototype._LoadContent = function (source) {\n                var _this = this;\n                this.SetCurrentValue(Frame.CurrentSourceProperty, source);\n                this.StopLoading();\n                this.SetCurrentValue(Frame.IsLoadingProperty, true);\n                var fragment = source.fragment;\n                if (fragment[0] === \"#\")\n                    fragment = fragment.substr(1);\n                TimelineProfile.Navigate(true, fragment);\n                var targetUri = new Fayde.Uri(fragment, nullstone.UriKind.Relative);\n                var target = undefined;\n                if (this.RouteMapper) {\n                    var route = this.RouteMapper.MapUri(targetUri);\n                    if (route instanceof Fayde.Navigation.RedirectRoute) {\n                        this.Navigate(route.NewUri);\n                        return;\n                    }\n                    this._CurrentRoute = route;\n                    if (!this._CurrentRoute)\n                        throw new InvalidOperationException(\"Route could not be mapped.\" + targetUri.toString());\n                    target = this._CurrentRoute.View.toString();\n                }\n                else if (this.UriMapper) {\n                    var mapped = this.UriMapper.MapUri(targetUri);\n                    if (!mapped)\n                        throw new InvalidOperationException(\"Uri could not be mapped.\" + targetUri.toString());\n                    target = mapped.toString();\n                }\n                Controls.Page.GetAsync(this, target)\n                    .then(function (page) { return _this._HandleSuccess(page); }, function (err) { return _this._HandleError(err); });\n            };\n            Frame.prototype._HandleSuccess = function (page) {\n                this._SetPage(page);\n                this.SetCurrentValue(Frame.IsLoadingProperty, false);\n                TimelineProfile.Navigate(false);\n                TimelineProfile.IsNextLayoutPassProfiled = true;\n            };\n            Frame.prototype._HandleError = function (error) {\n                this._SetPage(getErrorPage(this.App, error));\n                this.SetCurrentValue(Frame.IsLoadingProperty, false);\n                TimelineProfile.Navigate(false);\n            };\n            Frame.prototype._SetPage = function (page) {\n                document.title = page.Title;\n                this.Content = page;\n                if (this._CurrentRoute)\n                    page.DataContext = this._CurrentRoute.DataContext;\n                if (page.DataContext == null)\n                    page.DataContext = this.DataContext;\n            };\n            Frame.prototype.SourcePropertyChanged = function (args) {\n                if (true)\n                    this.Navigate(args.NewValue);\n            };\n            Frame.IsDeepLinkedProperty = DependencyProperty.Register(\"IsDeepLinked\", function () { return Boolean; }, Frame, true);\n            Frame.CurrentSourceProperty = DependencyProperty.RegisterReadOnly(\"CurrentSource\", function () { return Fayde.Uri; }, Frame);\n            Frame.SourceProperty = DependencyProperty.Register(\"Source\", function () { return Fayde.Uri; }, Frame, undefined, function (d, args) { return d.SourcePropertyChanged(args); });\n            Frame.UriMapperProperty = DependencyProperty.Register(\"UriMapper\", function () { return Fayde.Navigation.UriMapper; }, Frame);\n            Frame.RouteMapperProperty = DependencyProperty.RegisterCore(\"RouteMapper\", function () { return Fayde.Navigation.RouteMapper; }, Frame);\n            Frame.IsLoadingProperty = DependencyProperty.RegisterReadOnly(\"IsLoading\", function () { return Boolean; }, Frame, false, function (d, args) { return d.OnIsLoadingChanged(args.OldValue, args.NewValue); });\n            return Frame;\n        })(Controls.ContentControl);\n        Controls.Frame = Frame;\n        Fayde.CoreLibrary.add(Frame);\n        nullstone.addTypeInterfaces(Frame, Fayde.Navigation.INavigate_);\n        Controls.TemplateVisualStates(Frame, { GroupName: \"LoadingStates\", Name: \"Idle\" }, { GroupName: \"LoadingStates\", Name: \"Loading\" });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Panel.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var GridNode = (function (_super) {\n            __extends(GridNode, _super);\n            function GridNode() {\n                _super.apply(this, arguments);\n            }\n            GridNode.prototype.ColumnDefinitionsChanged = function (coldef, index, add) {\n                var updater = this.LayoutUpdater;\n                var coldefs = updater.assets.columnDefinitions;\n                if (add) {\n                    coldefs.splice(index, 0, coldef);\n                    Fayde.ReactTo(coldef, this, function () { return updater.invalidateMeasure(); });\n                }\n                else {\n                    Fayde.UnreactTo(coldef, this);\n                    coldefs.splice(index, 1);\n                }\n                updater.invalidateMeasure();\n            };\n            GridNode.prototype.RowDefinitionsChanged = function (rowdef, index, add) {\n                var updater = this.LayoutUpdater;\n                var rowdefs = updater.assets.rowDefinitions;\n                if (add) {\n                    rowdefs.splice(index, 0, rowdef);\n                    Fayde.ReactTo(rowdef, this, function () { return updater.invalidateMeasure(); });\n                }\n                else {\n                    Fayde.UnreactTo(rowdef, this);\n                    rowdefs.splice(index, 1);\n                }\n                updater.invalidateMeasure();\n            };\n            return GridNode;\n        })(Controls.PanelNode);\n        Controls.GridNode = GridNode;\n        var Grid = (function (_super) {\n            __extends(Grid, _super);\n            function Grid() {\n                var _this = this;\n                _super.call(this);\n                var coldefs = Grid.ColumnDefinitionsProperty.Initialize(this);\n                Fayde.ReactTo(coldefs, this, function (obj) { return _this.XamlNode.ColumnDefinitionsChanged(obj.item, obj.index, obj.add); });\n                var rowdefs = Grid.RowDefinitionsProperty.Initialize(this);\n                Fayde.ReactTo(rowdefs, this, function (obj) { return _this.XamlNode.RowDefinitionsChanged(obj.item, obj.index, obj.add); });\n            }\n            Grid.prototype.CreateNode = function () { return new GridNode(this); };\n            Grid.prototype.CreateLayoutUpdater = function () { return new minerva.controls.grid.GridUpdater(); };\n            Grid.GetColumn = function (d) { return d.GetValue(Grid.ColumnProperty); };\n            Grid.SetColumn = function (d, value) { d.SetValue(Grid.ColumnProperty, value); };\n            Grid.GetColumnSpan = function (d) { return d.GetValue(Grid.ColumnSpanProperty); };\n            Grid.SetColumnSpan = function (d, value) { d.SetValue(Grid.ColumnSpanProperty, value); };\n            Grid.GetRow = function (d) { return d.GetValue(Grid.RowProperty); };\n            Grid.SetRow = function (d, value) { d.SetValue(Grid.RowProperty, value); };\n            Grid.GetRowSpan = function (d) { return d.GetValue(Grid.RowSpanProperty); };\n            Grid.SetRowSpan = function (d, value) { d.SetValue(Grid.RowSpanProperty, value); };\n            Grid.ColumnProperty = DependencyProperty.RegisterAttached(\"Column\", function () { return Number; }, Grid, 0);\n            Grid.ColumnSpanProperty = DependencyProperty.RegisterAttached(\"ColumnSpan\", function () { return Number; }, Grid, 1);\n            Grid.RowProperty = DependencyProperty.RegisterAttached(\"Row\", function () { return Number; }, Grid, 0);\n            Grid.RowSpanProperty = DependencyProperty.RegisterAttached(\"RowSpan\", function () { return Number; }, Grid, 1);\n            Grid.ColumnDefinitionsProperty = DependencyProperty.RegisterImmutable(\"ColumnDefinitions\", function () { return Controls.ColumnDefinitionCollection; }, Grid);\n            Grid.RowDefinitionsProperty = DependencyProperty.RegisterImmutable(\"RowDefinitions\", function () { return Controls.RowDefinitionCollection; }, Grid);\n            Grid.ShowGridLinesProperty = DependencyProperty.Register(\"ShowGridLines\", function () { return Boolean; }, Grid, false);\n            return Grid;\n        })(Controls.Panel);\n        Controls.Grid = Grid;\n        Fayde.CoreLibrary.add(Grid);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(Grid.ShowGridLinesProperty, minerva.controls.grid.reactTo.showGridLines, false);\n            Fayde.UIReactionAttached(Grid.ColumnProperty, minerva.controls.grid.reactTo.column);\n            Fayde.UIReactionAttached(Grid.ColumnSpanProperty, minerva.controls.grid.reactTo.columnSpan);\n            Fayde.UIReactionAttached(Grid.RowProperty, minerva.controls.grid.reactTo.row);\n            Fayde.UIReactionAttached(Grid.RowSpanProperty, minerva.controls.grid.reactTo.rowSpan);\n        })(reactions || (reactions = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var GridUnitType = minerva.controls.grid.GridUnitType;\n        Fayde.CoreLibrary.addEnum(GridUnitType, \"GridUnitType\");\n        var GridLength = (function () {\n            function GridLength(value, unitType) {\n                this.Value = value == null ? 0 : value;\n                this.Type = unitType || GridUnitType.Auto;\n            }\n            GridLength.Equals = function (gl1, gl2) {\n                return Math.abs(gl1.Value - gl2.Value) < 0.001 && gl1.Type == gl2.Type;\n            };\n            GridLength.prototype.Clone = function () {\n                return new Controls.GridLength(this.Value, this.Type);\n            };\n            return GridLength;\n        })();\n        Controls.GridLength = GridLength;\n        Fayde.CoreLibrary.add(GridLength);\n        nullstone.registerTypeConverter(GridLength, function (val) {\n            if (val instanceof GridLength)\n                return val;\n            if (!val || val.toLowerCase() === \"auto\")\n                return new GridLength();\n            var type = GridUnitType.Pixel;\n            if (val[val.length - 1] === \"*\") {\n                val = val.substr(0, val.length - 1);\n                type = GridUnitType.Star;\n            }\n            var v = parseFloat(val);\n            if (isNaN(v))\n                v = 1;\n            return new GridLength(v, type);\n        });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ContentControl.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var HeaderedContentControl = (function (_super) {\n            __extends(HeaderedContentControl, _super);\n            function HeaderedContentControl() {\n                _super.call(this);\n                this.DefaultStyleKey = HeaderedContentControl;\n            }\n            HeaderedContentControl.prototype.OnHeaderChanged = function (oldHeader, newHeader) { };\n            HeaderedContentControl.prototype.OnHeaderTemplateChanged = function (oldHeaderTemplate, newHeaderTemplate) { };\n            HeaderedContentControl.HeaderProperty = DependencyProperty.Register(\"Header\", function () { return Object; }, HeaderedContentControl, undefined, function (d, args) { return d.OnHeaderChanged(args.OldValue, args.NewValue); });\n            HeaderedContentControl.HeaderTemplateProperty = DependencyProperty.Register(\"HeaderTemplate\", function () { return Fayde.DataTemplate; }, HeaderedContentControl, undefined, function (d, args) { return d.OnHeaderTemplateChanged(args.OldValue, args.NewValue); });\n            return HeaderedContentControl;\n        })(Controls.ContentControl);\n        Controls.HeaderedContentControl = HeaderedContentControl;\n        Fayde.CoreLibrary.add(HeaderedContentControl);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Primitives/ButtonBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var HyperlinkButton = (function (_super) {\n            __extends(HyperlinkButton, _super);\n            function HyperlinkButton() {\n                _super.call(this);\n                this.DefaultStyleKey = HyperlinkButton;\n            }\n            HyperlinkButton.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                this.UpdateVisualState(false);\n            };\n            HyperlinkButton.prototype.OnClick = function () {\n                _super.prototype.OnClick.call(this);\n                var navUri = this.NavigateUri;\n                if (navUri)\n                    Fayde.Navigation.Navigate(this, this.TargetName, navUri);\n            };\n            HyperlinkButton.NavigateUriProperty = DependencyProperty.Register(\"NavigateUri\", function () { return Fayde.Uri; }, HyperlinkButton);\n            HyperlinkButton.TargetNameProperty = DependencyProperty.Register(\"TargetName\", function () { return String; }, HyperlinkButton);\n            return HyperlinkButton;\n        })(Controls.Primitives.ButtonBase);\n        Controls.HyperlinkButton = HyperlinkButton;\n        Fayde.CoreLibrary.add(HyperlinkButton);\n        Controls.TemplateVisualStates(HyperlinkButton, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Pressed\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        (function (BrushMappingMode) {\n            BrushMappingMode[BrushMappingMode[\"Absolute\"] = 0] = \"Absolute\";\n            BrushMappingMode[BrushMappingMode[\"RelativeToBoundingBox\"] = 1] = \"RelativeToBoundingBox\";\n        })(Media.BrushMappingMode || (Media.BrushMappingMode = {}));\n        var BrushMappingMode = Media.BrushMappingMode;\n        Fayde.CoreLibrary.addEnum(BrushMappingMode, \"BrushMappingMode\");\n        (function (GradientSpreadMethod) {\n            GradientSpreadMethod[GradientSpreadMethod[\"Pad\"] = 0] = \"Pad\";\n            GradientSpreadMethod[GradientSpreadMethod[\"Reflect\"] = 1] = \"Reflect\";\n            GradientSpreadMethod[GradientSpreadMethod[\"Repeat\"] = 2] = \"Repeat\";\n        })(Media.GradientSpreadMethod || (Media.GradientSpreadMethod = {}));\n        var GradientSpreadMethod = Media.GradientSpreadMethod;\n        Fayde.CoreLibrary.addEnum(GradientSpreadMethod, \"GradientSpreadMethod\");\n        (function (Stretch) {\n            Stretch[Stretch[\"None\"] = 0] = \"None\";\n            Stretch[Stretch[\"Fill\"] = 1] = \"Fill\";\n            Stretch[Stretch[\"Uniform\"] = 2] = \"Uniform\";\n            Stretch[Stretch[\"UniformToFill\"] = 3] = \"UniformToFill\";\n        })(Media.Stretch || (Media.Stretch = {}));\n        var Stretch = Media.Stretch;\n        Fayde.CoreLibrary.addEnum(Stretch, \"Stretch\");\n        (function (AlignmentX) {\n            AlignmentX[AlignmentX[\"Left\"] = 0] = \"Left\";\n            AlignmentX[AlignmentX[\"Center\"] = 1] = \"Center\";\n            AlignmentX[AlignmentX[\"Right\"] = 2] = \"Right\";\n        })(Media.AlignmentX || (Media.AlignmentX = {}));\n        var AlignmentX = Media.AlignmentX;\n        Fayde.CoreLibrary.addEnum(AlignmentX, \"AlignmentX\");\n        (function (AlignmentY) {\n            AlignmentY[AlignmentY[\"Top\"] = 0] = \"Top\";\n            AlignmentY[AlignmentY[\"Center\"] = 1] = \"Center\";\n            AlignmentY[AlignmentY[\"Bottom\"] = 2] = \"Bottom\";\n        })(Media.AlignmentY || (Media.AlignmentY = {}));\n        var AlignmentY = Media.AlignmentY;\n        Fayde.CoreLibrary.addEnum(AlignmentY, \"AlignmentY\");\n        (function (TextHintingMode) {\n            TextHintingMode[TextHintingMode[\"Fixed\"] = 0] = \"Fixed\";\n            TextHintingMode[TextHintingMode[\"Animated\"] = 1] = \"Animated\";\n        })(Media.TextHintingMode || (Media.TextHintingMode = {}));\n        var TextHintingMode = Media.TextHintingMode;\n        Fayde.CoreLibrary.addEnum(TextHintingMode, \"TextHintingMode\");\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/FrameworkElement.ts\" />\n/// <reference path=\"../Media/Enums.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ImageUpdater = minerva.controls.image.ImageUpdater;\n        var Image = (function (_super) {\n            __extends(Image, _super);\n            function Image() {\n                _super.apply(this, arguments);\n                this.ImageOpened = new nullstone.Event();\n                this.ImageFailed = new nullstone.Event();\n                this.$watcher = null;\n            }\n            Image.prototype.CreateLayoutUpdater = function () {\n                return new ImageUpdater();\n            };\n            Image._SourceCoercer = function (d, propd, value) {\n                if (typeof value === \"string\")\n                    return new Fayde.Media.Imaging.BitmapImage(new Fayde.Uri(value));\n                if (value instanceof Fayde.Uri)\n                    return new Fayde.Media.Imaging.BitmapImage(value);\n                return value;\n            };\n            Image.prototype.OnImageErrored = function (source, error) {\n                this.ImageFailed.raise(this, null);\n            };\n            Image.prototype.OnImageLoaded = function (source) {\n                this.ImageOpened.raise(this, null);\n                var lu = this.XamlNode.LayoutUpdater;\n                lu.invalidateMeasure();\n            };\n            Image.prototype.OnImageChanged = function (source) {\n                var lu = this.XamlNode.LayoutUpdater;\n                lu.invalidateMeasure();\n                lu.invalidate();\n            };\n            Image.prototype.OnSourceChanged = function (oldSource, newSource) {\n                var _this = this;\n                if (this.$watcher) {\n                    this.$watcher.dispose();\n                    this.$watcher = null;\n                }\n                if (newSource instanceof Fayde.Media.Imaging.BitmapSource) {\n                    this.$watcher = newSource.watch({\n                        onErrored: function (source, error) { return _this.OnImageErrored(source, error); },\n                        onLoaded: function (source) { return _this.OnImageLoaded(source); },\n                        onChanged: function (source) { return _this.OnImageChanged(source); }\n                    });\n                }\n            };\n            Image.SourceProperty = DependencyProperty.RegisterFull(\"Source\", function () { return Fayde.Media.Imaging.ImageSource; }, Image, undefined, undefined, Image._SourceCoercer);\n            Image.StretchProperty = DependencyProperty.RegisterCore(\"Stretch\", function () { return new Fayde.Enum(Fayde.Media.Stretch); }, Image, Fayde.Media.Stretch.Uniform);\n            return Image;\n        })(Fayde.FrameworkElement);\n        Controls.Image = Image;\n        Fayde.CoreLibrary.add(Image);\n        Fayde.UIReaction(Image.SourceProperty, function (upd, ov, nv, image) {\n            image.OnSourceChanged(ov, nv);\n            if (!nv) {\n                upd.updateBounds();\n                upd.invalidate();\n            }\n            upd.invalidateMeasure();\n            upd.invalidateMetrics();\n        }, false);\n        Fayde.UIReaction(Image.StretchProperty, function (upd, ov, nv) {\n            upd.invalidateMeasure();\n            upd.invalidateMetrics();\n        }, false);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ItemCollection = (function (_super) {\n            __extends(ItemCollection, _super);\n            function ItemCollection() {\n                _super.apply(this, arguments);\n                this.ItemsChanged = new nullstone.Event();\n                this.IsReadOnly = false;\n            }\n            ItemCollection.prototype.ToArray = function () {\n                return this._ht.slice(0);\n            };\n            Object.defineProperty(ItemCollection.prototype, \"Count\", {\n                get: function () {\n                    return this._ht.length;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            ItemCollection.prototype.GetValueAt = function (index) {\n                var ht = this._ht;\n                if (index < 0 || index >= ht.length)\n                    throw new IndexOutOfRangeException(index);\n                return ht[index];\n            };\n            ItemCollection.prototype.GetRange = function (startIndex, endIndex) {\n                return this._ht.slice(startIndex, endIndex + 1);\n            };\n            ItemCollection.prototype.SetValueAt = function (index, value) {\n                this._ValidateReadOnly();\n                this.SetValueAtImpl(index, value);\n                return true;\n            };\n            ItemCollection.prototype.SetValueAtImpl = function (index, value) {\n                var ht = this._ht;\n                if (index < 0 || index >= ht.length)\n                    throw new IndexOutOfRangeException(index);\n                var oldValue = ht[index];\n                ht[index] = value;\n                this.ItemsChanged.raise(this, Fayde.Collections.CollectionChangedEventArgs.Replace(value, oldValue, index));\n            };\n            ItemCollection.prototype.Add = function (value) {\n                this._ValidateReadOnly();\n                if (value == null)\n                    throw new ArgumentException(\"value\");\n                return this.AddImpl(value);\n            };\n            ItemCollection.prototype.AddImpl = function (value) {\n                var index = this._ht.push(value) - 1;\n                this.ItemsChanged.raise(this, Fayde.Collections.CollectionChangedEventArgs.Add(value, index));\n                return index;\n            };\n            ItemCollection.prototype.AddRange = function (values) {\n                this._ValidateReadOnly();\n                if (!values)\n                    return;\n                for (var i = 0; i < values.length; i++) {\n                    if (values[i] == null)\n                        throw new ArgumentException(\"value\");\n                }\n                this.AddRangeImpl(values);\n            };\n            ItemCollection.prototype.AddRangeImpl = function (values) {\n                var index = this._ht.length;\n                this._ht = this._ht.concat(values);\n                this.ItemsChanged.raise(this, Fayde.Collections.CollectionChangedEventArgs.AddRange(values, index));\n            };\n            ItemCollection.prototype.Insert = function (index, value) {\n                this._ValidateReadOnly();\n                if (value == null)\n                    throw new ArgumentException(\"value\");\n                this.InsertImpl(index, value);\n                return true;\n            };\n            ItemCollection.prototype.InsertImpl = function (index, value) {\n                var ht = this._ht;\n                if (index < 0 || index > ht.length)\n                    throw new IndexOutOfRangeException(index);\n                if (index >= ht.length)\n                    ht.push(value);\n                else\n                    ht.splice(index, 0, value);\n                this.ItemsChanged.raise(this, Fayde.Collections.CollectionChangedEventArgs.Add(value, index));\n            };\n            ItemCollection.prototype.IndexOf = function (value) {\n                return this._ht.indexOf(value);\n            };\n            ItemCollection.prototype.Contains = function (value) {\n                return this._ht.indexOf(value) > -1;\n            };\n            ItemCollection.prototype.Remove = function (value) {\n                this._ValidateReadOnly();\n                this.RemoveImpl(value);\n                return true;\n            };\n            ItemCollection.prototype.RemoveImpl = function (value) {\n                var index = this._ht.indexOf(value);\n                if (index < 0)\n                    return;\n                this._ht.splice(index, 1);\n                this.ItemsChanged.raise(this, Fayde.Collections.CollectionChangedEventArgs.Remove(value, index));\n            };\n            ItemCollection.prototype.RemoveAt = function (index) {\n                this._ValidateReadOnly();\n                if (index < 0 || index >= this._ht.length)\n                    throw new IndexOutOfRangeException(index);\n                this.RemoveAtImpl(index);\n                return true;\n            };\n            ItemCollection.prototype.RemoveAtImpl = function (index) {\n                var item = this._ht.splice(index, 1)[0];\n                this.ItemsChanged.raise(this, Fayde.Collections.CollectionChangedEventArgs.Remove(item, index));\n            };\n            ItemCollection.prototype.Clear = function () {\n                this._ValidateReadOnly();\n                this.ClearImpl();\n                return true;\n            };\n            ItemCollection.prototype.ClearImpl = function () {\n                var old = this._ht;\n                this._ht = [];\n                this.ItemsChanged.raise(this, Fayde.Collections.CollectionChangedEventArgs.Reset(old));\n            };\n            ItemCollection.prototype._ValidateReadOnly = function () {\n                if (this.IsReadOnly)\n                    throw new InvalidOperationException(\"The collection is readonly.\");\n            };\n            return ItemCollection;\n        })(Fayde.XamlObjectCollection);\n        Controls.ItemCollection = ItemCollection;\n        Fayde.CoreLibrary.add(ItemCollection);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Markup/Loader\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ItemsPanelTemplate = (function (_super) {\n            __extends(ItemsPanelTemplate, _super);\n            function ItemsPanelTemplate() {\n                _super.apply(this, arguments);\n            }\n            ItemsPanelTemplate.prototype.GetVisualTree = function (bindingSource) {\n                var panel = _super.prototype.GetVisualTree.call(this, bindingSource);\n                if (!(panel instanceof Controls.Panel))\n                    throw new XamlParseException(\"The root element of an ItemsPanelTemplate must be a Panel subclass.\");\n                return panel;\n            };\n            return ItemsPanelTemplate;\n        })(Fayde.Markup.FrameworkTemplate);\n        Controls.ItemsPanelTemplate = ItemsPanelTemplate;\n        Fayde.CoreLibrary.add(ItemsPanelTemplate);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/FrameworkElement.ts\" />\n/// <reference path=\"../Markup/Creator.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var spxd = Fayde.Markup.CreateXaml(\"<ItemsPanelTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\"><StackPanel /></ItemsPanelTemplate>\", Fayde.XMLNS + \"/itemspresenter/stackpanel/default\");\n        var spft;\n        var vspxd = Fayde.Markup.CreateXaml(\"<ItemsPanelTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\"><VirtualizingStackPanel /></ItemsPanelTemplate>\", Fayde.XMLNS + \"/itemspresenter/virtualizingstackpanel/default\");\n        var vspft;\n        function getFallbackTemplate(ic) {\n            if (ic instanceof Controls.ListBox)\n                return vspft = vspft || Fayde.Markup.Load(ic.App, vspxd);\n            return spft = spft || Fayde.Markup.Load(ic.App, spxd);\n        }\n        var ItemsPresenterNode = (function (_super) {\n            __extends(ItemsPresenterNode, _super);\n            function ItemsPresenterNode(xobj) {\n                _super.call(this, xobj);\n            }\n            Object.defineProperty(ItemsPresenterNode.prototype, \"ElementRoot\", {\n                get: function () { return this._ElementRoot; },\n                enumerable: true,\n                configurable: true\n            });\n            ItemsPresenterNode.prototype.DoApplyTemplateWithError = function (error) {\n                if (this._ElementRoot)\n                    return false;\n                var xobj = this.XObject;\n                var ic = xobj.TemplateOwner;\n                if (!(ic instanceof Controls.ItemsControl))\n                    return false;\n                var er;\n                if (ic.ItemsPanel)\n                    er = this._ElementRoot = ic.ItemsPanel.GetVisualTree(xobj);\n                if (!er)\n                    er = this._ElementRoot = getFallbackTemplate(ic).GetVisualTree(xobj);\n                Controls.ItemsControl.SetIsItemsHost(er, true);\n                if (!this.FinishApplyTemplateWithError(er, error))\n                    return false;\n                ic.XamlNode.ItemsPresenter = xobj;\n                xobj.OnItemsAdded(0, ic.Items.ToArray());\n                return true;\n            };\n            return ItemsPresenterNode;\n        })(Fayde.FENode);\n        Controls.ItemsPresenterNode = ItemsPresenterNode;\n        var ItemsPresenter = (function (_super) {\n            __extends(ItemsPresenter, _super);\n            function ItemsPresenter() {\n                _super.apply(this, arguments);\n            }\n            ItemsPresenter.prototype.CreateNode = function () { return new ItemsPresenterNode(this); };\n            Object.defineProperty(ItemsPresenter.prototype, \"ItemsControl\", {\n                get: function () {\n                    return this.TemplateOwner instanceof Controls.ItemsControl ? this.TemplateOwner : null;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(ItemsPresenter.prototype, \"Panel\", {\n                get: function () {\n                    var er = this.XamlNode.ElementRoot;\n                    return er instanceof Controls.Panel ? er : undefined;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            ItemsPresenter.Get = function (panel) {\n                if (!(panel instanceof Controls.Panel))\n                    return null;\n                if (!Controls.ItemsControl.GetIsItemsHost(panel))\n                    return null;\n                return panel.TemplateOwner instanceof ItemsPresenter ? panel.TemplateOwner : null;\n            };\n            ItemsPresenter.prototype.OnItemsAdded = function (index, newItems) {\n                var panel = this.Panel;\n                if (!panel)\n                    return;\n                if (panel instanceof Controls.VirtualizingPanel) {\n                    panel.OnItemsAdded(index, newItems);\n                }\n                else {\n                    for (var ic = this.ItemsControl, children = panel.Children, generator = ic.ItemContainersManager.CreateGenerator(index, newItems.length); generator.Generate();) {\n                        var container = generator.Current;\n                        children.Insert(index + generator.GenerateIndex, container);\n                        ic.PrepareContainerForItem(container, generator.CurrentItem);\n                    }\n                }\n            };\n            ItemsPresenter.prototype.OnItemsRemoved = function (index, oldItems) {\n                var panel = this.Panel;\n                if (!panel)\n                    return;\n                if (panel instanceof Controls.VirtualizingPanel) {\n                    panel.OnItemsRemoved(index, oldItems);\n                }\n                else {\n                    var icm = this.ItemsControl.ItemContainersManager;\n                    var children = panel.Children;\n                    var count = oldItems ? oldItems.length : null;\n                    if (count == null || count === children.Count) {\n                        children.Clear();\n                    }\n                    else {\n                        while (count > 0) {\n                            children.RemoveAt(index);\n                            count--;\n                        }\n                    }\n                }\n            };\n            return ItemsPresenter;\n        })(Fayde.FrameworkElement);\n        Controls.ItemsPresenter = ItemsPresenter;\n        Fayde.CoreLibrary.add(ItemsPresenter);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Primitives/Selector.ts\" />\n/// <reference path=\"ScrollViewer.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Rect = minerva.Rect;\n        var ListBox = (function (_super) {\n            __extends(ListBox, _super);\n            function ListBox() {\n                _super.call(this);\n                this._FocusedIndex = 0;\n                this.DefaultStyleKey = ListBox;\n            }\n            ListBox.prototype.ScrollIntoView = function (item) {\n                var tsv = this.$TemplateScrollViewer;\n                if (!tsv)\n                    return;\n                var items = this.Items;\n                if (!items.Contains(item))\n                    return;\n                var ihro = { Value: null };\n                var lbiro = { Value: null };\n                var virtualizing = Controls.VirtualizingStackPanel.GetIsVirtualizing(this);\n                if (this._IsOnCurrentPage(item, ihro, lbiro))\n                    return;\n                var ihr = ihro.Value;\n                var lbir = lbiro.Value;\n                if (this._GetIsVerticalOrientation()) {\n                    if (virtualizing) {\n                        tsv.ScrollToVerticalOffset(this.SelectedIndex);\n                        return;\n                    }\n                    var verticalOffset = tsv.VerticalOffset;\n                    var verticalDelta = 0;\n                    if (Rect.getBottom(ihr) < Rect.getBottom(lbir)) {\n                        verticalDelta = Rect.getBottom(lbir) - Rect.getBottom(ihr);\n                        verticalOffset += verticalDelta;\n                    }\n                    if ((lbir.y - verticalDelta) < ihr.y) {\n                        verticalOffset -= ihr.y - (lbir.y - verticalDelta);\n                    }\n                    tsv.ScrollToVerticalOffset(verticalOffset);\n                }\n                else {\n                    if (virtualizing) {\n                        tsv.ScrollToHorizontalOffset(this.SelectedIndex);\n                        return;\n                    }\n                    var horizontalOffset = tsv.HorizontalOffset;\n                    var horizontalDelta = 0;\n                    if (Rect.getRight(ihr) < Rect.getRight(lbir)) {\n                        horizontalDelta = Rect.getRight(lbir) - Rect.getRight(ihr);\n                        horizontalOffset += horizontalDelta;\n                    }\n                    if ((ihr.x - horizontalDelta) < ihr.x) {\n                        horizontalOffset -= ihr.x - (lbir.x - horizontalDelta);\n                    }\n                    tsv.ScrollToHorizontalOffset(horizontalOffset);\n                }\n            };\n            ListBox.prototype._NavigateByPage = function (forward) {\n                var tsv = this.$TemplateScrollViewer;\n                var newFocusedIndex = -1;\n                var item = (this._FocusedIndex !== -1) ? this.Items.GetValueAt(this._FocusedIndex) : null;\n                if (item != null && !this._IsOnCurrentPage(item)) {\n                    this.ScrollIntoView(item);\n                    if (tsv != null)\n                        tsv.UpdateLayout();\n                }\n                if (item == null) {\n                    newFocusedIndex = this._GetFirstItemOnCurrentPage(this._FocusedIndex, forward);\n                }\n                else {\n                    var firstItemOnCurrentPage = this._GetFirstItemOnCurrentPage(this._FocusedIndex, forward);\n                    if (firstItemOnCurrentPage !== this._FocusedIndex) {\n                        newFocusedIndex = firstItemOnCurrentPage;\n                    }\n                    else {\n                        if (tsv != null) {\n                            if (this._GetIsVerticalOrientation()) {\n                                tsv.ScrollToVerticalOffset(Math.max(0, Math.min(tsv.ScrollableHeight, tsv.VerticalOffset + (tsv.ViewportHeight * (forward ? 1 : -1)))));\n                            }\n                            else {\n                                tsv.ScrollToHorizontalOffset(Math.max(0, Math.min(tsv.ScrollableWidth, tsv.HorizontalOffset + (tsv.ViewportWidth * (forward ? 1 : -1)))));\n                            }\n                            tsv.UpdateLayout();\n                        }\n                        newFocusedIndex = this._GetFirstItemOnCurrentPage(this._FocusedIndex, forward);\n                    }\n                }\n                return newFocusedIndex;\n            };\n            ListBox.prototype._ScrollInDirection = function (key) {\n                if (this.$TemplateScrollViewer)\n                    this.$TemplateScrollViewer.ScrollInDirection(key);\n            };\n            ListBox.prototype._IsOnCurrentPage = function (item, itemsHostRectOut, listBoxItemsRectOut) {\n                if (!itemsHostRectOut)\n                    itemsHostRectOut = { Value: null };\n                if (!listBoxItemsRectOut)\n                    listBoxItemsRectOut = { Value: null };\n                var itemsHost = Fayde.VisualTreeHelper.GetChild(Fayde.VisualTreeHelper.GetChild(this, 0), 0);\n                var tsv = this.$TemplateScrollViewer;\n                if (tsv != null) {\n                    itemsHost = tsv;\n                    if (tsv.$ScrollContentPresenter != null)\n                        itemsHost = tsv.$ScrollContentPresenter;\n                }\n                if (!(itemsHost instanceof Fayde.FrameworkElement))\n                    itemsHost = null;\n                var ihro = itemsHostRectOut.Value = new minerva.Rect();\n                var lbiro = listBoxItemsRectOut.Value = new minerva.Rect();\n                if (!itemsHost)\n                    return false;\n                minerva.Size.copyTo(itemsHost.RenderSize, ihro);\n                var lbi = this.ItemContainersManager.ContainerFromItem(item);\n                if (!lbi)\n                    return false;\n                minerva.Size.copyTo(lbi.RenderSize, lbiro);\n                if (itemsHost instanceof Controls.Control) {\n                    var padding = itemsHost.Padding;\n                    if (padding) {\n                        ihro.x = ihro.x + padding.left;\n                        ihro.y = ihro.y + padding.top;\n                        ihro.width = ihro.width - padding.left - padding.right;\n                        ihro.height = ihro.height - padding.top - padding.bottom;\n                    }\n                }\n                var genXform = lbi.TransformToVisual(itemsHost);\n                if (genXform != null) {\n                    var ptl = genXform.Transform(new Point());\n                    var pbr = genXform.Transform(new Point(lbi.RenderSize.width, lbi.RenderSize.height));\n                    lbiro.x = Math.min(ptl.x, pbr.x);\n                    lbiro.y = Math.min(ptl.y, pbr.y);\n                    lbiro.width = Math.abs(ptl.x - pbr.x);\n                    lbiro.height = Math.abs(ptl.y - pbr.y);\n                }\n                return this._GetIsVerticalOrientation()\n                    ? ihro.y <= lbiro.y && minerva.Rect.getBottom(ihro) >= minerva.Rect.getBottom(lbiro)\n                    : ihro.x <= lbiro.x && minerva.Rect.getRight(ihro) >= minerva.Rect.getRight(lbiro);\n            };\n            ListBox.prototype._GetFirstItemOnCurrentPage = function (startingIndex, forward) {\n                var delta = forward ? 1 : -1;\n                var fiocp = -1;\n                var probeIndex = startingIndex;\n                var items = this.Items;\n                var itemsCount = items.Count;\n                while (probeIndex >= 0 && probeIndex < itemsCount && !this._IsOnCurrentPage(items.GetValueAt(probeIndex))) {\n                    fiocp = probeIndex;\n                    probeIndex += delta;\n                }\n                while (probeIndex >= 0 && probeIndex < itemsCount && this._IsOnCurrentPage(items.GetValueAt(probeIndex))) {\n                    fiocp = probeIndex;\n                    probeIndex += delta;\n                }\n                return fiocp;\n            };\n            ListBox.prototype.OnItemContainerStyleChanged = function (args) {\n                var oldStyle = args.OldValue;\n                var newStyle = args.NewValue;\n                var enumerator = this.ItemContainersManager.GetEnumerator();\n                while (enumerator.moveNext()) {\n                    var lbi = enumerator.current;\n                    if (lbi instanceof Controls.ListBoxItem && lbi.Style === oldStyle)\n                        lbi.Style = newStyle;\n                }\n            };\n            ListBox.prototype.OnKeyDown = function (args) {\n                if (args.Handled)\n                    return;\n                var newFocusedIndex = -1;\n                switch (args.Key) {\n                    case Fayde.Input.Key.Space:\n                    case Fayde.Input.Key.Enter:\n                        if (Fayde.Input.Key.Enter !== args.Key || Fayde.Input.KeyboardNavigation.GetAcceptsReturn(this)) {\n                            if (!Fayde.Input.Keyboard.HasAlt()) {\n                                var focusedEl = Fayde.Surface.GetFocusedElement(this);\n                                var lbi;\n                                if (focusedEl instanceof Controls.ListBoxItem)\n                                    lbi = focusedEl;\n                                if (lbi) {\n                                    if (Fayde.Input.Keyboard.HasControl() && lbi.IsSelected) {\n                                        this.SelectedItem = null;\n                                    }\n                                    else {\n                                        this.SelectedItem = this.ItemContainersManager.ItemFromContainer(lbi);\n                                    }\n                                    args.Handled = true;\n                                }\n                            }\n                        }\n                        break;\n                    case Fayde.Input.Key.Home:\n                        newFocusedIndex = 0;\n                        break;\n                    case Fayde.Input.Key.End:\n                        newFocusedIndex = this.Items.Count - 1;\n                        break;\n                    case Fayde.Input.Key.PageUp:\n                        newFocusedIndex = this._NavigateByPage(false);\n                        break;\n                    case Fayde.Input.Key.PageDown:\n                        newFocusedIndex = this._NavigateByPage(true);\n                        break;\n                    case Fayde.Input.Key.Left:\n                        if (this._GetIsVerticalOrientation()) {\n                            this._ScrollInDirection(Fayde.Input.Key.Left);\n                        }\n                        else {\n                            newFocusedIndex = this._FocusedIndex - 1;\n                        }\n                        break;\n                    case Fayde.Input.Key.Up:\n                        if (this._GetIsVerticalOrientation()) {\n                            newFocusedIndex = this._FocusedIndex - 1;\n                        }\n                        else {\n                            this._ScrollInDirection(Fayde.Input.Key.Up);\n                        }\n                        break;\n                    case Fayde.Input.Key.Right:\n                        if (this._GetIsVerticalOrientation()) {\n                            this._ScrollInDirection(Fayde.Input.Key.Right);\n                        }\n                        else {\n                            newFocusedIndex = this._FocusedIndex + 1;\n                        }\n                        break;\n                    case Fayde.Input.Key.Down:\n                        if (this._GetIsVerticalOrientation()) {\n                            newFocusedIndex = this._FocusedIndex + 1;\n                        }\n                        else {\n                            this._ScrollInDirection(Fayde.Input.Key.Down);\n                        }\n                        break;\n                }\n                if (newFocusedIndex !== -1 && this._FocusedIndex !== -1 && newFocusedIndex !== this._FocusedIndex && newFocusedIndex >= 0 && newFocusedIndex < this.Items.Count) {\n                    var icm = this.ItemContainersManager;\n                    var lbi = icm.ContainerFromIndex(newFocusedIndex);\n                    var item = icm.ItemFromContainer(lbi);\n                    this.ScrollIntoView(item);\n                    if (Fayde.Input.Keyboard.HasControl()) {\n                        lbi.Focus();\n                    }\n                    else {\n                        this.SelectedItem = item;\n                    }\n                    args.Handled = true;\n                }\n            };\n            ListBox.prototype._GetIsVerticalOrientation = function () {\n                var presenter = this.XamlNode.ItemsPresenter;\n                if (!presenter)\n                    return true;\n                var p = presenter.Panel;\n                if (p instanceof Controls.StackPanel)\n                    return p.Orientation === Fayde.Orientation.Vertical;\n                if (p instanceof Controls.VirtualizingStackPanel)\n                    return p.Orientation === Fayde.Orientation.Vertical;\n                return true;\n            };\n            ListBox.prototype.IsItemItsOwnContainer = function (item) {\n                return item instanceof Controls.ListBoxItem;\n            };\n            ListBox.prototype.GetContainerForItem = function () {\n                var item = new Controls.ListBoxItem();\n                var ics = this.ItemContainerStyle;\n                if (ics != null)\n                    item.Style = ics;\n                return item;\n            };\n            ListBox.prototype.PrepareContainerForItem = function (element, item) {\n                _super.prototype.PrepareContainerForItem.call(this, element, item);\n                var ics = this.ItemContainerStyle;\n                var lbi = element;\n                if (!lbi.Style && ics)\n                    lbi.Style = ics;\n            };\n            ListBox.prototype.OnGotFocus = function (e) {\n                _super.prototype.OnGotFocus.call(this, e);\n                this.SetValueInternal(ListBox.IsSelectionActiveProperty, true);\n            };\n            ListBox.prototype.OnLostFocus = function (e) {\n                _super.prototype.OnLostFocus.call(this, e);\n                this.SetValueInternal(ListBox.IsSelectionActiveProperty, false);\n            };\n            ListBox.prototype.NotifyListItemGotFocus = function (lbi) {\n                this._FocusedIndex = this.ItemContainersManager.IndexFromContainer(lbi);\n            };\n            ListBox.prototype.NotifyListItemLostFocus = function (lbi) {\n                this._FocusedIndex = -1;\n            };\n            ListBox.prototype.OnItemsSourceChanged = function (e) {\n                _super.prototype.OnItemsSourceChanged.call(this, e);\n                var tsv = this.$TemplateScrollViewer;\n                if (tsv) {\n                    tsv.ScrollToVerticalOffset(0);\n                }\n            };\n            ListBox.ItemContainerStyleProperty = DependencyProperty.Register(\"ItemContainerStyle\", function () { return Fayde.Style; }, ListBox, undefined, function (d, args) { return d.OnItemContainerStyleChanged(args); });\n            ListBox.IsSelectionActiveProperty = Controls.Primitives.Selector.IsSelectionActiveProperty;\n            return ListBox;\n        })(Controls.Primitives.Selector);\n        Controls.ListBox = ListBox;\n        Fayde.CoreLibrary.add(ListBox);\n        Controls.TemplateVisualStates(ListBox, { GroupName: \"ValidationStates\", Name: \"Valid\" }, { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" }, { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" });\n        Controls.TemplateParts(ListBox, { Name: \"ScrollViewer\", Type: Controls.ScrollViewer });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/FrameworkElement.ts\" />\n/// <reference path=\"../Media/Enums.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var VideoUpdater = minerva.controls.video.VideoUpdater;\n        var MediaElement = (function (_super) {\n            __extends(MediaElement, _super);\n            function MediaElement() {\n                _super.apply(this, arguments);\n                this.VideoOpened = new nullstone.Event();\n                this.VideoFailed = new nullstone.Event();\n                this.$watcher = null;\n            }\n            MediaElement.prototype.CreateLayoutUpdater = function () {\n                return new VideoUpdater();\n            };\n            MediaElement._SourceCoercer = function (d, propd, value) {\n                if (typeof value === \"string\")\n                    return new Fayde.Media.Videos.VideoSource(new Fayde.Uri(value));\n                if (value instanceof Fayde.Uri)\n                    return new Fayde.Media.Videos.VideoSource(value);\n                return value;\n            };\n            MediaElement.prototype.OnAutoPlayChanged = function (oldValue, newValue) {\n                var source = this.Source;\n                if (source instanceof Fayde.Media.Videos.VideoSourceBase)\n                    source.setAutoPlay(newValue);\n            };\n            MediaElement.prototype.OnSourceChanged = function (oldSource, newSource) {\n                var _this = this;\n                if (this.$watcher) {\n                    this.$watcher.dispose();\n                    this.$watcher = null;\n                }\n                if (newSource instanceof Fayde.Media.Videos.VideoSourceBase) {\n                    newSource.setAutoPlay(this.AutoPlay);\n                    this.$watcher = newSource.watch({\n                        onErrored: function (source, error) { return _this.OnVideoErrored(source, error); },\n                        onCanPlay: function (source) { return _this.OnVideoCanPlay(source); },\n                        onChanged: function (source) { return _this.OnVideoChanged(source); }\n                    });\n                }\n            };\n            MediaElement.prototype.OnVideoErrored = function (source, error) {\n                this.VideoFailed.raise(this, null);\n            };\n            MediaElement.prototype.OnVideoCanPlay = function (source) {\n                this.VideoOpened.raise(this, null);\n                var lu = this.XamlNode.LayoutUpdater;\n                lu.invalidateMeasure();\n            };\n            MediaElement.prototype.OnVideoChanged = function (source) {\n                var lu = this.XamlNode.LayoutUpdater;\n                lu.invalidateMeasure();\n                lu.invalidate();\n            };\n            MediaElement.prototype.Play = function () {\n                this.Source.Play();\n            };\n            MediaElement.prototype.Pause = function () {\n                this.Source.Pause();\n            };\n            MediaElement.AutoPlayProperty = DependencyProperty.Register(\"AutoPlay\", function () { return Boolean; }, MediaElement, true, function (d, args) { return d.OnAutoPlayChanged(args.OldValue, args.NewValue); });\n            MediaElement.SourceProperty = DependencyProperty.RegisterFull(\"Source\", function () { return Fayde.Media.Videos.VideoSource; }, MediaElement, undefined, undefined, MediaElement._SourceCoercer);\n            MediaElement.StretchProperty = DependencyProperty.RegisterCore(\"Stretch\", function () { return new Fayde.Enum(Fayde.Media.Stretch); }, MediaElement, Fayde.Media.Stretch.Uniform);\n            return MediaElement;\n        })(Fayde.FrameworkElement);\n        Controls.MediaElement = MediaElement;\n        Fayde.CoreLibrary.add(MediaElement);\n        Fayde.UIReaction(MediaElement.SourceProperty, function (upd, ov, nv, video) {\n            video.OnSourceChanged(ov, nv);\n            if (!nv) {\n                upd.updateBounds();\n                upd.invalidate();\n            }\n            upd.invalidateMeasure();\n            upd.invalidateMetrics();\n        }, false);\n        Fayde.UIReaction(MediaElement.StretchProperty, function (upd, ov, nv) {\n            upd.invalidateMeasure();\n            upd.invalidateMetrics();\n        }, false);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var RoutedEventArgs = (function () {\n        function RoutedEventArgs() {\n            this.Handled = false;\n            this.Source = null;\n            this.OriginalSource = null;\n        }\n        return RoutedEventArgs;\n    })();\n    Fayde.RoutedEventArgs = RoutedEventArgs;\n    Fayde.CoreLibrary.add(RoutedEventArgs);\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/RoutedEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        (function (Key) {\n            Key[Key[\"None\"] = 0] = \"None\";\n            Key[Key[\"Back\"] = 1] = \"Back\";\n            Key[Key[\"Tab\"] = 2] = \"Tab\";\n            Key[Key[\"Enter\"] = 3] = \"Enter\";\n            Key[Key[\"Shift\"] = 4] = \"Shift\";\n            Key[Key[\"Ctrl\"] = 5] = \"Ctrl\";\n            Key[Key[\"Alt\"] = 6] = \"Alt\";\n            Key[Key[\"CapsLock\"] = 7] = \"CapsLock\";\n            Key[Key[\"Escape\"] = 8] = \"Escape\";\n            Key[Key[\"Space\"] = 9] = \"Space\";\n            Key[Key[\"PageUp\"] = 10] = \"PageUp\";\n            Key[Key[\"PageDown\"] = 11] = \"PageDown\";\n            Key[Key[\"End\"] = 12] = \"End\";\n            Key[Key[\"Home\"] = 13] = \"Home\";\n            Key[Key[\"Left\"] = 14] = \"Left\";\n            Key[Key[\"Up\"] = 15] = \"Up\";\n            Key[Key[\"Right\"] = 16] = \"Right\";\n            Key[Key[\"Down\"] = 17] = \"Down\";\n            Key[Key[\"Insert\"] = 18] = \"Insert\";\n            Key[Key[\"Delete\"] = 19] = \"Delete\";\n            Key[Key[\"D0\"] = 20] = \"D0\";\n            Key[Key[\"D1\"] = 21] = \"D1\";\n            Key[Key[\"D2\"] = 22] = \"D2\";\n            Key[Key[\"D3\"] = 23] = \"D3\";\n            Key[Key[\"D4\"] = 24] = \"D4\";\n            Key[Key[\"D5\"] = 25] = \"D5\";\n            Key[Key[\"D6\"] = 26] = \"D6\";\n            Key[Key[\"D7\"] = 27] = \"D7\";\n            Key[Key[\"D8\"] = 28] = \"D8\";\n            Key[Key[\"D9\"] = 29] = \"D9\";\n            Key[Key[\"A\"] = 30] = \"A\";\n            Key[Key[\"B\"] = 31] = \"B\";\n            Key[Key[\"C\"] = 32] = \"C\";\n            Key[Key[\"D\"] = 33] = \"D\";\n            Key[Key[\"E\"] = 34] = \"E\";\n            Key[Key[\"F\"] = 35] = \"F\";\n            Key[Key[\"G\"] = 36] = \"G\";\n            Key[Key[\"H\"] = 37] = \"H\";\n            Key[Key[\"I\"] = 38] = \"I\";\n            Key[Key[\"J\"] = 39] = \"J\";\n            Key[Key[\"K\"] = 40] = \"K\";\n            Key[Key[\"L\"] = 41] = \"L\";\n            Key[Key[\"M\"] = 42] = \"M\";\n            Key[Key[\"N\"] = 43] = \"N\";\n            Key[Key[\"O\"] = 44] = \"O\";\n            Key[Key[\"P\"] = 45] = \"P\";\n            Key[Key[\"Q\"] = 46] = \"Q\";\n            Key[Key[\"R\"] = 47] = \"R\";\n            Key[Key[\"S\"] = 48] = \"S\";\n            Key[Key[\"T\"] = 49] = \"T\";\n            Key[Key[\"U\"] = 50] = \"U\";\n            Key[Key[\"V\"] = 51] = \"V\";\n            Key[Key[\"W\"] = 52] = \"W\";\n            Key[Key[\"X\"] = 53] = \"X\";\n            Key[Key[\"Y\"] = 54] = \"Y\";\n            Key[Key[\"Z\"] = 55] = \"Z\";\n            Key[Key[\"F1\"] = 56] = \"F1\";\n            Key[Key[\"F2\"] = 57] = \"F2\";\n            Key[Key[\"F3\"] = 58] = \"F3\";\n            Key[Key[\"F4\"] = 59] = \"F4\";\n            Key[Key[\"F5\"] = 60] = \"F5\";\n            Key[Key[\"F6\"] = 61] = \"F6\";\n            Key[Key[\"F7\"] = 62] = \"F7\";\n            Key[Key[\"F8\"] = 63] = \"F8\";\n            Key[Key[\"F9\"] = 64] = \"F9\";\n            Key[Key[\"F10\"] = 65] = \"F10\";\n            Key[Key[\"F11\"] = 66] = \"F11\";\n            Key[Key[\"F12\"] = 67] = \"F12\";\n            Key[Key[\"NumPad0\"] = 68] = \"NumPad0\";\n            Key[Key[\"NumPad1\"] = 69] = \"NumPad1\";\n            Key[Key[\"NumPad2\"] = 70] = \"NumPad2\";\n            Key[Key[\"NumPad3\"] = 71] = \"NumPad3\";\n            Key[Key[\"NumPad4\"] = 72] = \"NumPad4\";\n            Key[Key[\"NumPad5\"] = 73] = \"NumPad5\";\n            Key[Key[\"NumPad6\"] = 74] = \"NumPad6\";\n            Key[Key[\"NumPad7\"] = 75] = \"NumPad7\";\n            Key[Key[\"NumPad8\"] = 76] = \"NumPad8\";\n            Key[Key[\"NumPad9\"] = 77] = \"NumPad9\";\n            Key[Key[\"Multiply\"] = 78] = \"Multiply\";\n            Key[Key[\"Add\"] = 79] = \"Add\";\n            Key[Key[\"Subtract\"] = 80] = \"Subtract\";\n            Key[Key[\"Decimal\"] = 81] = \"Decimal\";\n            Key[Key[\"Divide\"] = 82] = \"Divide\";\n            Key[Key[\"Unknown\"] = 255] = \"Unknown\";\n        })(Input.Key || (Input.Key = {}));\n        var Key = Input.Key;\n        Fayde.CoreLibrary.addEnum(Key, \"Key\");\n        var KeyboardEventArgs = (function (_super) {\n            __extends(KeyboardEventArgs, _super);\n            function KeyboardEventArgs() {\n                _super.apply(this, arguments);\n            }\n            return KeyboardEventArgs;\n        })(Fayde.RoutedEventArgs);\n        Input.KeyboardEventArgs = KeyboardEventArgs;\n        Fayde.CoreLibrary.add(KeyboardEventArgs);\n        var KeyEventArgs = (function (_super) {\n            __extends(KeyEventArgs, _super);\n            function KeyEventArgs(modifiers, keyCode, key, c) {\n                _super.call(this);\n                this.Modifiers = modifiers;\n                this.PlatformKeyCode = keyCode;\n                this.Key = key;\n                if (this.Key == null)\n                    this.Key = Key.Unknown;\n                this.Char = c;\n            }\n            return KeyEventArgs;\n        })(KeyboardEventArgs);\n        Input.KeyEventArgs = KeyEventArgs;\n        Fayde.CoreLibrary.add(KeyEventArgs);\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Control.ts\" />\n/// <reference path=\"../Input/KeyEventArgs.ts\" />\n/// <reference path=\"Enums.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Key = Fayde.Input.Key;\n        var MAX_UNDO_COUNT = 10;\n        var TextBoxBase = (function (_super) {\n            __extends(TextBoxBase, _super);\n            function TextBoxBase(eventsMask) {\n                var _this = this;\n                _super.call(this);\n                this._Selecting = false;\n                this._Captured = false;\n                this.IsReadOnly = false;\n                this.AcceptsReturn = false;\n                this.$ContentProxy = new Controls.Internal.TextBoxContentProxy();\n                this.$Clipboard = Fayde.Clipboard.Create();\n                var view = this.$View = this.CreateView();\n                view.MouseLeftButtonDown.on(function (s, e) { return _this.OnMouseLeftButtonDown(e); }, this);\n                view.MouseLeftButtonUp.on(function (s, e) { return _this.OnMouseLeftButtonUp(e); }, this);\n                this.$Proxy = new Fayde.Text.Proxy(eventsMask, MAX_UNDO_COUNT);\n                this._SyncFont();\n            }\n            TextBoxBase.prototype._SyncFont = function () {\n                var _this = this;\n                var view = this.$View;\n                var propds = [\n                    Controls.Control.ForegroundProperty,\n                    Controls.Control.FontFamilyProperty,\n                    Controls.Control.FontSizeProperty,\n                    Controls.Control.FontStretchProperty,\n                    Controls.Control.FontStyleProperty,\n                    Controls.Control.FontWeightProperty\n                ];\n                propds.forEach(function (propd) { return propd.Store.ListenToChanged(_this, propd, function (dobj, args) { return view.setFontProperty(propd, args.NewValue); }, _this); });\n            };\n            TextBoxBase.prototype.CreateView = function () {\n                return new Controls.Internal.TextBoxView();\n            };\n            Object.defineProperty(TextBoxBase.prototype, \"Cursor\", {\n                get: function () {\n                    var cursor = this.GetValue(Fayde.FrameworkElement.CursorProperty);\n                    if (cursor === Fayde.CursorType.Default)\n                        return Fayde.CursorType.IBeam;\n                    return cursor;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            TextBoxBase.prototype.selectBasedonSelectionMode = function () {\n                var proxy = this.$Proxy;\n                var anchor = proxy.selAnchor;\n                var cursor = proxy.selCursor;\n                switch (this.SelectionOnFocus) {\n                    case Controls.SelectionOnFocus.Unchanged:\n                        break;\n                    case Controls.SelectionOnFocus.SelectAll:\n                        proxy.selectAll();\n                        break;\n                    case Controls.SelectionOnFocus.CaretToBeginning:\n                        cursor = this.$Advancer.CursorLineBegin(cursor);\n                        proxy.setAnchorCursor(anchor, cursor);\n                        break;\n                    case Controls.SelectionOnFocus.CaretToEnd:\n                        cursor = this.$Advancer.CursorLineEnd(cursor);\n                        proxy.setAnchorCursor(anchor, cursor);\n                        break;\n                    case Controls.SelectionOnFocus.DefaultSelectAll:\n                        proxy.selectAll();\n                        break;\n                    default:\n                        break;\n                }\n            };\n            TextBoxBase.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                this.$ContentProxy.setElement(this.GetTemplateChild(\"ContentElement\", Fayde.FrameworkElement), this.$View);\n            };\n            TextBoxBase.prototype.OnLostFocus = function (e) {\n                _super.prototype.OnLostFocus.call(this, e);\n                this.$View.setIsFocused(false);\n            };\n            TextBoxBase.prototype.OnGotFocus = function (e) {\n                _super.prototype.OnGotFocus.call(this, e);\n                this.$View.setIsFocused(true);\n                this.selectBasedonSelectionMode();\n            };\n            TextBoxBase.prototype.OnMouseLeftButtonDown = function (e) {\n                if (e.Handled)\n                    return;\n                e.Handled = true;\n                this.Focus();\n                this._Captured = this.CaptureMouse();\n                this._Selecting = true;\n                var cursor = this.$View.GetCursorFromPoint(e.GetPosition(this.$View));\n                this.$Proxy.beginSelect(cursor);\n            };\n            TextBoxBase.prototype.OnMouseLeftButtonUp = function (e) {\n                if (e.Handled)\n                    return;\n                if (this._Captured)\n                    this.ReleaseMouseCapture();\n                e.Handled = true;\n                this._Selecting = false;\n                this._Captured = false;\n            };\n            TextBoxBase.prototype.OnMouseMove = function (e) {\n                if (!this._Selecting)\n                    return;\n                e.Handled = true;\n                var cursor = this.$View.GetCursorFromPoint(e.GetPosition(this.$View));\n                this.$Proxy.adjustSelection(cursor);\n            };\n            TextBoxBase.prototype.OnTouchDown = function (e) {\n                _super.prototype.OnTouchDown.call(this, e);\n                if (e.Handled)\n                    return;\n                e.Handled = true;\n                this.Focus();\n                e.Device.Capture(this);\n                this._Selecting = true;\n                var pos = e.Device.GetTouchPoint(this.$View).Position;\n                var cursor = this.$View.GetCursorFromPoint(pos);\n                this.$Proxy.beginSelect(cursor);\n            };\n            TextBoxBase.prototype.OnTouchUp = function (e) {\n                _super.prototype.OnTouchUp.call(this, e);\n                if (e.Handled)\n                    return;\n                if (e.Device.Captured === this)\n                    e.Device.ReleaseCapture(this);\n                e.Handled = true;\n                this._Selecting = false;\n            };\n            TextBoxBase.prototype.OnTouchMove = function (e) {\n                _super.prototype.OnTouchMove.call(this, e);\n                if (!this._Selecting)\n                    return;\n                e.Handled = true;\n                var pos = e.Device.GetTouchPoint(this.$View).Position;\n                var cursor = this.$View.GetCursorFromPoint(pos);\n                this.$Proxy.adjustSelection(cursor);\n            };\n            TextBoxBase.prototype.OnKeyDown = function (args) {\n                switch (args.Key) {\n                    case Key.Shift:\n                    case Key.Ctrl:\n                    case Key.Alt:\n                        return;\n                }\n                var isReadOnly = this.IsReadOnly;\n                var handled = false;\n                var proxy = this.$Proxy;\n                proxy.begin();\n                switch (args.Key) {\n                    case Key.Back:\n                        if (isReadOnly)\n                            break;\n                        handled = this._KeyDownBackSpace(args.Modifiers);\n                        break;\n                    case Key.Delete:\n                        if (isReadOnly)\n                            break;\n                        if (args.Modifiers.Shift) {\n                            handled = true;\n                        }\n                        else {\n                            handled = this._KeyDownDelete(args.Modifiers);\n                        }\n                        break;\n                    case Key.Insert:\n                        if (args.Modifiers.Shift) {\n                            handled = true;\n                        }\n                        else if (args.Modifiers.Ctrl) {\n                            handled = true;\n                        }\n                        break;\n                    case Key.PageDown:\n                        handled = this._KeyDownPageDown(args.Modifiers);\n                        break;\n                    case Key.PageUp:\n                        handled = this._KeyDownPageUp(args.Modifiers);\n                        break;\n                    case Key.Home:\n                        handled = this._KeyDownHome(args.Modifiers);\n                        break;\n                    case Key.End:\n                        handled = this._KeyDownEnd(args.Modifiers);\n                        break;\n                    case Key.Left:\n                        handled = this._KeyDownLeft(args.Modifiers);\n                        break;\n                    case Key.Right:\n                        handled = this._KeyDownRight(args.Modifiers);\n                        break;\n                    case Key.Down:\n                        handled = this._KeyDownDown(args.Modifiers);\n                        break;\n                    case Key.Up:\n                        handled = this._KeyDownUp(args.Modifiers);\n                        break;\n                    default:\n                        if (args.Modifiers.Ctrl) {\n                            switch (args.Key) {\n                                case Key.A:\n                                    handled = true;\n                                    proxy.selectAll();\n                                    break;\n                                case Key.C:\n                                    this.$Clipboard.CopyText(this.$Proxy.getSelectedText());\n                                    handled = true;\n                                    break;\n                                case Key.X:\n                                    if (isReadOnly)\n                                        break;\n                                    this.$Clipboard.CopyText(this.$Proxy.getSelectedText());\n                                    proxy.removeText(this.$Proxy.selAnchor, this.$Proxy.selCursor);\n                                    handled = true;\n                                    break;\n                                case Key.V:\n                                    if (isReadOnly)\n                                        break;\n                                    this.$Clipboard.GetTextContents(function (text) { return proxy.paste(text); });\n                                    handled = true;\n                                    break;\n                                case Key.Y:\n                                    if (!isReadOnly) {\n                                        handled = true;\n                                        proxy.redo();\n                                    }\n                                    break;\n                                case Key.Z:\n                                    if (!isReadOnly) {\n                                        handled = true;\n                                        proxy.undo();\n                                    }\n                                    break;\n                            }\n                        }\n                        break;\n                }\n                if (handled) {\n                    args.Handled = handled;\n                }\n                proxy.end();\n                if (!args.Handled && !isReadOnly)\n                    this.PostOnKeyDown(args);\n            };\n            TextBoxBase.prototype.PostOnKeyDown = function (args) {\n                if (args.Handled)\n                    return;\n                if (args.Modifiers.Alt || args.Modifiers.Ctrl)\n                    return;\n                var proxy = this.$Proxy;\n                proxy.begin();\n                if (args.Key === Key.Enter) {\n                    if (this.AcceptsReturn === true) {\n                        proxy.enterText('\\n');\n                        args.Handled = true;\n                    }\n                }\n                else if (args.Char != null && !args.Modifiers.Ctrl && !args.Modifiers.Alt) {\n                    proxy.enterText(args.Char);\n                    args.Handled = true;\n                }\n                proxy.end();\n            };\n            TextBoxBase.prototype._KeyDownBackSpace = function (modifiers) {\n                if (modifiers.Shift || modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var anchor = proxy.selAnchor;\n                var cursor = proxy.selCursor;\n                var start = 0;\n                var length = 0;\n                if (cursor !== anchor) {\n                    length = Math.abs(cursor - anchor);\n                    start = Math.min(anchor, cursor);\n                }\n                else if (modifiers.Ctrl) {\n                    start = this.$Advancer.CursorPrevWord(cursor);\n                    length = cursor - start;\n                }\n                else if (cursor > 0) {\n                    start = this.$Advancer.CursorPrevChar(cursor);\n                    length = cursor - start;\n                }\n                proxy.removeText(start, length);\n                return true;\n            };\n            TextBoxBase.prototype._KeyDownDelete = function (modifiers) {\n                if (modifiers.Shift || modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var anchor = proxy.selAnchor;\n                var cursor = proxy.selCursor;\n                var start = 0;\n                var length = 0;\n                if (cursor !== anchor) {\n                    length = Math.abs(cursor - anchor);\n                    start = Math.min(anchor, cursor);\n                }\n                else if (modifiers.Ctrl) {\n                    length = this.$Advancer.CursorNextWord(cursor) - cursor;\n                    start = cursor;\n                }\n                else {\n                    length = this.$Advancer.CursorNextChar(cursor) - cursor;\n                    start = cursor;\n                }\n                return proxy.removeText(start, length);\n            };\n            TextBoxBase.prototype._KeyDownPageDown = function (modifiers) {\n                if (modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var anchor = proxy.selAnchor;\n                var cursor = proxy.selCursor;\n                cursor = this.$Advancer.CursorDown(cursor, true);\n                if (!modifiers.Shift)\n                    anchor = cursor;\n                return proxy.setAnchorCursor(anchor, cursor);\n            };\n            TextBoxBase.prototype._KeyDownPageUp = function (modifiers) {\n                if (modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var anchor = proxy.selAnchor;\n                var cursor = proxy.selCursor;\n                cursor = this.$Advancer.CursorUp(cursor, true);\n                if (!modifiers.Shift)\n                    anchor = cursor;\n                return proxy.setAnchorCursor(anchor, cursor);\n            };\n            TextBoxBase.prototype._KeyDownHome = function (modifiers) {\n                if (modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var anchor = proxy.selAnchor;\n                var cursor = proxy.selCursor;\n                if (modifiers.Ctrl) {\n                    cursor = this.$Advancer.CursorBegin(cursor);\n                }\n                else {\n                    cursor = this.$Advancer.CursorLineBegin(cursor);\n                }\n                if (!modifiers.Shift)\n                    anchor = cursor;\n                return proxy.setAnchorCursor(anchor, cursor);\n            };\n            TextBoxBase.prototype._KeyDownEnd = function (modifiers) {\n                if (modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var anchor = proxy.selAnchor;\n                var cursor = proxy.selCursor;\n                if (modifiers.Ctrl) {\n                    cursor = this.$Advancer.CursorEnd(cursor);\n                }\n                else {\n                    cursor = this.$Advancer.CursorLineEnd(cursor);\n                }\n                if (!modifiers.Shift)\n                    anchor = cursor;\n                return proxy.setAnchorCursor(anchor, cursor);\n            };\n            TextBoxBase.prototype._KeyDownLeft = function (modifiers) {\n                if (modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var anchor = proxy.selAnchor;\n                var cursor = proxy.selCursor;\n                if (modifiers.Ctrl) {\n                    cursor = this.$Advancer.CursorPrevWord(cursor);\n                }\n                else if (!modifiers.Shift && anchor !== cursor) {\n                    cursor = Math.min(anchor, cursor);\n                }\n                else {\n                    cursor = this.$Advancer.CursorPrevChar(cursor);\n                }\n                if (!modifiers.Shift)\n                    anchor = cursor;\n                return proxy.setAnchorCursor(anchor, cursor);\n            };\n            TextBoxBase.prototype._KeyDownRight = function (modifiers) {\n                if (modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var anchor = proxy.selAnchor;\n                var cursor = proxy.selCursor;\n                if (modifiers.Ctrl) {\n                    cursor = this.$Advancer.CursorNextWord(cursor);\n                }\n                else if (!modifiers.Shift && anchor !== cursor) {\n                    cursor = Math.max(anchor, cursor);\n                }\n                else {\n                    cursor = this.$Advancer.CursorNextChar(cursor);\n                }\n                if (!modifiers.Shift)\n                    anchor = cursor;\n                return proxy.setAnchorCursor(anchor, cursor);\n            };\n            TextBoxBase.prototype._KeyDownDown = function (modifiers) {\n                if (modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var cursor = this.$Advancer.CursorDown(proxy.selCursor, false);\n                var anchor = proxy.selAnchor;\n                if (!modifiers.Shift)\n                    anchor = cursor;\n                return proxy.setAnchorCursor(anchor, cursor);\n            };\n            TextBoxBase.prototype._KeyDownUp = function (modifiers) {\n                if (modifiers.Alt)\n                    return false;\n                var proxy = this.$Proxy;\n                var cursor = this.$Advancer.CursorUp(proxy.selCursor, false);\n                var anchor = proxy.selAnchor;\n                if (!modifiers.Shift)\n                    anchor = cursor;\n                return proxy.setAnchorCursor(anchor, cursor);\n            };\n            TextBoxBase.CaretBrushProperty = DependencyProperty.RegisterCore(\"CaretBrush\", function () { return Fayde.Media.Brush; }, TextBoxBase);\n            TextBoxBase.SelectionForegroundProperty = DependencyProperty.RegisterCore(\"SelectionForeground\", function () { return Fayde.Media.Brush; }, TextBoxBase);\n            TextBoxBase.SelectionBackgroundProperty = DependencyProperty.RegisterCore(\"SelectionBackground\", function () { return Fayde.Media.Brush; }, TextBoxBase);\n            TextBoxBase.SelectionLengthProperty = DependencyProperty.RegisterFull(\"SelectionLength\", function () { return Number; }, TextBoxBase, 0, undefined, undefined, true, positiveIntValidator);\n            TextBoxBase.SelectionStartProperty = DependencyProperty.RegisterFull(\"SelectionStart\", function () { return Number; }, TextBoxBase, 0, undefined, undefined, true, positiveIntValidator);\n            TextBoxBase.BaselineOffsetProperty = DependencyProperty.Register(\"BaselineOffset\", function () { return Number; }, TextBoxBase);\n            TextBoxBase.MaxLengthProperty = DependencyProperty.RegisterFull(\"MaxLength\", function () { return Number; }, TextBoxBase, 0, undefined, undefined, undefined, positiveIntValidator);\n            TextBoxBase.SelectionOnFocusProperty = DependencyProperty.Register(\"SelectionOnFocus\", function () { return new Fayde.Enum(Controls.SelectionOnFocus); }, TextBoxBase, Controls.SelectionOnFocus.Default);\n            return TextBoxBase;\n        })(Controls.Control);\n        Controls.TextBoxBase = TextBoxBase;\n        Fayde.RegisterType(TextBoxBase, Fayde.XMLNSINTERNAL);\n        var reactions;\n        (function (reactions) {\n            Fayde.DPReaction(TextBoxBase.CaretBrushProperty, function (tbb, ov, nv) {\n                tbb.$View.setCaretBrush(nv);\n            });\n            Fayde.DPReaction(TextBoxBase.SelectionStartProperty, function (tbb, ov, nv) {\n                tbb.$Proxy.setSelectionStart(nv);\n                tbb.$View.setSelectionStart(nv);\n            }, false);\n            Fayde.DPReaction(TextBoxBase.SelectionLengthProperty, function (tbb, ov, nv) {\n                tbb.$Proxy.setSelectionLength(nv);\n                tbb.$View.setSelectionLength(nv);\n            }, false);\n            Fayde.DPReaction(TextBoxBase.SelectionBackgroundProperty, function (tbb, ov, nv) {\n                tbb.$View.setFontAttr(\"selectionBackground\", nv);\n                tbb.XamlNode.LayoutUpdater.invalidate();\n            });\n            Fayde.DPReaction(TextBoxBase.SelectionForegroundProperty, function (tbb, ov, nv) {\n                tbb.$View.setFontAttr(\"selectionForeground\", nv);\n                tbb.XamlNode.LayoutUpdater.invalidate();\n            });\n            Fayde.DPReaction(TextBoxBase.MaxLengthProperty, function (tbb, ov, nv) {\n                tbb.$Proxy.maxLength = nv;\n            }, false);\n        })(reactions || (reactions = {}));\n        function positiveIntValidator(dobj, propd, value) {\n            if (typeof value !== 'number')\n                return false;\n            return value >= 0;\n        }\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"TextBoxBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var PasswordBox = (function (_super) {\n            __extends(PasswordBox, _super);\n            function PasswordBox() {\n                var _this = this;\n                _super.call(this, Fayde.Text.EmitChangedType.TEXT);\n                this.DefaultStyleKey = PasswordBox;\n                var proxy = this.$Proxy;\n                proxy.SyncSelectionStart = function (value) { return _this.SetCurrentValue(PasswordBox.SelectionStartProperty, value); };\n                proxy.SyncSelectionLength = function (value) { return _this.SetCurrentValue(PasswordBox.SelectionLengthProperty, value); };\n                proxy.SyncText = function (value) { return _this.SetCurrentValue(PasswordBox.PasswordProperty, value); };\n                this.$Advancer = new Controls.Internal.PasswordBoxCursorAdvancer(this.$Proxy);\n            }\n            Object.defineProperty(PasswordBox.prototype, \"DisplayText\", {\n                get: function () {\n                    var result = \"\";\n                    var count = this.$Proxy.text.length;\n                    var pattern = this.PasswordChar;\n                    while (count > 0) {\n                        if (count & 1)\n                            result += pattern;\n                        count >>= 1, pattern += pattern;\n                    }\n                    return result;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            PasswordBox.PasswordCharProperty = DependencyProperty.Register(\"PasswordChar\", function () { return String; }, PasswordBox, String.fromCharCode(9679));\n            PasswordBox.PasswordProperty = DependencyProperty.Register(\"Password\", function () { return String; }, PasswordBox);\n            return PasswordBox;\n        })(Controls.TextBoxBase);\n        Controls.PasswordBox = PasswordBox;\n        Fayde.CoreLibrary.add(PasswordBox);\n        Controls.TemplateVisualStates(PasswordBox, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" }, { GroupName: \"ValidationStates\", Name: \"Valid\" }, { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" }, { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" });\n        var reactions;\n        (function (reactions) {\n            Fayde.DPReaction(PasswordBox.PasswordCharProperty, function (pb, ov, nv) {\n                pb.$View.setText(pb.DisplayText);\n            }, false);\n            Fayde.DPReaction(PasswordBox.PasswordProperty, function (pb, ov, nv) {\n                pb.$Proxy.setText(nv);\n                pb.$View.setText(pb.DisplayText);\n            }, false);\n        })(reactions || (reactions = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Primitives/RangeBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ProgressBar = (function (_super) {\n            __extends(ProgressBar, _super);\n            function ProgressBar() {\n                _super.call(this);\n                this.DefaultStyleKey = ProgressBar;\n            }\n            ProgressBar.prototype.OnIsIndeterminateChanged = function (args) {\n                this._UpdateIndicator();\n                this.UpdateVisualState();\n            };\n            ProgressBar.prototype.OnMinimumChanged = function (oldMinimum, newMinimum) {\n                _super.prototype.OnMinimumChanged.call(this, oldMinimum, newMinimum);\n                this._UpdateIndicator();\n            };\n            ProgressBar.prototype.OnMaximumChanged = function (oldMaximum, newMaximum) {\n                _super.prototype.OnMaximumChanged.call(this, oldMaximum, newMaximum);\n                this._UpdateIndicator();\n            };\n            ProgressBar.prototype.OnValueChanged = function (oldValue, newValue) {\n                _super.prototype.OnValueChanged.call(this, oldValue, newValue);\n                this._UpdateIndicator();\n            };\n            ProgressBar.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                var track = this._Track;\n                if (track)\n                    track.SizeChanged.off(this._OnTrackSizeChanged, this);\n                track = this._Track = this.GetTemplateChild(\"ProgressBarTrack\", Fayde.FrameworkElement);\n                this._Indicator = this.GetTemplateChild(\"ProgressBarIndicator\", Fayde.FrameworkElement);\n                if (track)\n                    track.SizeChanged.on(this._OnTrackSizeChanged, this);\n                this.UpdateVisualState(false);\n            };\n            ProgressBar.prototype.GoToStates = function (gotoFunc) {\n                if (this.IsIndeterminate)\n                    gotoFunc(\"Indeterminate\");\n                else\n                    gotoFunc(\"Determinate\");\n            };\n            ProgressBar.prototype._OnTrackSizeChanged = function (sender, e) {\n                this._UpdateIndicator();\n            };\n            ProgressBar.prototype._UpdateIndicator = function () {\n                var min = this.Minimum;\n                var max = this.Maximum;\n                var val = this.Value;\n                var indicator = this._Indicator;\n                if (!indicator)\n                    return;\n                var parent = Fayde.VisualTreeHelper.GetParent(indicator);\n                if (!parent)\n                    return;\n                var margin = indicator.Margin;\n                var outerWidth = (margin) ? margin.left + margin.right : 0.0;\n                var padding = null;\n                if (parent instanceof Controls.Border)\n                    padding = parent.Padding;\n                else if (parent instanceof Controls.Control)\n                    padding = parent.Padding;\n                if (padding) {\n                    outerWidth += padding.left;\n                    outerWidth += padding.right;\n                }\n                var progress = 1.0;\n                if (!this.IsIndeterminate && max !== min)\n                    progress = (val - min) / (max - min);\n                var fullWidth = Math.max(0, parent.ActualWidth - outerWidth);\n                indicator.Width = fullWidth * progress;\n            };\n            ProgressBar.IsIndeterminateProperty = DependencyProperty.Register(\"IsIndeterminate\", function () { return Boolean; }, ProgressBar, false, function (d, args) { return d.OnIsIndeterminateChanged(args); });\n            return ProgressBar;\n        })(Controls.Primitives.RangeBase);\n        Controls.ProgressBar = ProgressBar;\n        Fayde.CoreLibrary.add(ProgressBar);\n        Controls.TemplateVisualStates(ProgressBar, { GroupName: \"CommonStates\", Name: \"Indeterminate\" }, { GroupName: \"CommonStates\", Name: \"Determinate\" });\n        Controls.TemplateParts(ProgressBar, { Name: \"ProgressBarIndicator\", Type: Fayde.FrameworkElement }, { Name: \"ProgressBarTrack\", Type: Fayde.FrameworkElement });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Primitives/ToggleButton.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var RadioButton = (function (_super) {\n            __extends(RadioButton, _super);\n            function RadioButton() {\n                _super.call(this);\n                this.DefaultStyleKey = RadioButton;\n                register(\"\", this);\n            }\n            RadioButton.prototype.OnGroupNameChanged = function (args) {\n                unregister(args.OldValue, this);\n                register(args.NewValue, this);\n            };\n            RadioButton.prototype.OnIsCheckedChanged = function (e) {\n                if (e.NewValue === true)\n                    this.UpdateRadioButtonGroup();\n                _super.prototype.OnIsCheckedChanged.call(this, e);\n            };\n            RadioButton.prototype.OnToggle = function () {\n                this.IsChecked = true;\n            };\n            RadioButton.prototype.UpdateRadioButtonGroup = function () {\n                var groupName = this.GroupName || \"\";\n                var elements = groupNameToElements[groupName];\n                if (!elements)\n                    return;\n                var element = null;\n                if (groupName) {\n                    var rootNode = this.XamlNode.GetVisualRoot();\n                    for (var i = 0; i < elements.length; i++) {\n                        element = elements[i];\n                        if (element === this)\n                            continue;\n                        if (!element.IsChecked)\n                            continue;\n                        if (rootNode !== element.XamlNode.GetVisualRoot())\n                            continue;\n                        element.IsChecked = false;\n                    }\n                }\n                else {\n                    var vpNode = this.XamlNode.VisualParentNode;\n                    for (var i = 0; i < elements.length; i++) {\n                        element = elements[i];\n                        if (element === this)\n                            continue;\n                        if (!element.IsChecked)\n                            continue;\n                        if (vpNode !== element.XamlNode.VisualParentNode)\n                            continue;\n                        element.IsChecked = false;\n                    }\n                }\n            };\n            RadioButton.GroupNameProperty = DependencyProperty.Register(\"GroupName\", function () { return String; }, RadioButton, false, function (d, args) { return d.OnGroupNameChanged(args); });\n            return RadioButton;\n        })(Controls.Primitives.ToggleButton);\n        Controls.RadioButton = RadioButton;\n        Fayde.CoreLibrary.add(RadioButton);\n        Controls.TemplateVisualStates(RadioButton, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Pressed\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" }, { GroupName: \"CheckStates\", Name: \"Unchecked\" }, { GroupName: \"CheckStates\", Name: \"Checked\" }, { GroupName: \"CheckStates\", Name: \"Indeterminate\" }, { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" }, { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" }, { GroupName: \"ValidationStates\", Name: \"Valid\" });\n        var groupNameToElements = [];\n        function register(groupName, radioButton) {\n            if (!groupName)\n                groupName = \"\";\n            var list = groupNameToElements[groupName];\n            if (!list)\n                groupNameToElements[groupName] = list = [];\n            list.push(radioButton);\n        }\n        function unregister(groupName, radioButton) {\n            if (!groupName)\n                groupName = \"\";\n            var list = groupNameToElements[groupName];\n            if (list) {\n                var index = list.indexOf(radioButton);\n                if (index > -1)\n                    list.splice(index, 1);\n            }\n        }\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Control.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var _RichTextBoxView = (function () {\n            function _RichTextBoxView() {\n            }\n            return _RichTextBoxView;\n        })();\n        Controls._RichTextBoxView = _RichTextBoxView;\n        Fayde.RegisterType(_RichTextBoxView, Fayde.XMLNSINTERNAL);\n        var RichTextBox = (function (_super) {\n            __extends(RichTextBox, _super);\n            function RichTextBox() {\n                _super.call(this);\n                this.DefaultStyleKey = RichTextBox;\n            }\n            return RichTextBox;\n        })(Controls.Control);\n        Controls.RichTextBox = RichTextBox;\n        Fayde.CoreLibrary.add(RichTextBox);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var RowDefinition = (function (_super) {\n            __extends(RowDefinition, _super);\n            function RowDefinition() {\n                _super.apply(this, arguments);\n            }\n            RowDefinition.prototype.setActualHeight = function (value) {\n                this.SetCurrentValue(RowDefinition.ActualHeightProperty, value);\n            };\n            RowDefinition.HeightProperty = DependencyProperty.Register(\"Height\", function () { return Controls.GridLength; }, RowDefinition, undefined, Fayde.Incite);\n            RowDefinition.MaxHeightProperty = DependencyProperty.Register(\"MaxHeight\", function () { return Number; }, RowDefinition, Number.POSITIVE_INFINITY, Fayde.Incite);\n            RowDefinition.MinHeightProperty = DependencyProperty.Register(\"MinHeight\", function () { return Number; }, RowDefinition, 0.0, Fayde.Incite);\n            RowDefinition.ActualHeightProperty = DependencyProperty.RegisterReadOnly(\"ActualHeight\", function () { return Number; }, RowDefinition, 0.0);\n            return RowDefinition;\n        })(Fayde.DependencyObject);\n        Controls.RowDefinition = RowDefinition;\n        Fayde.CoreLibrary.add(RowDefinition);\n        var GridUnitType = minerva.controls.grid.GridUnitType;\n        function ConvertRowDefinition(o) {\n            if (!o || o instanceof RowDefinition)\n                return o;\n            var s = o.toString();\n            var rd = new RowDefinition();\n            if (s.toLowerCase() === \"auto\") {\n                rd.Height = new Controls.GridLength(0, GridUnitType.Auto);\n                return rd;\n            }\n            if (s === \"*\") {\n                rd.Height = new Controls.GridLength(1, GridUnitType.Star);\n                return rd;\n            }\n            var v = parseFloat(s);\n            if (isNaN(v))\n                throw new XamlParseException(\"Invalid RowDefinition: '\" + s + \"'.\");\n            rd.Height = new Controls.GridLength(v, s[s.length - 1] === \"*\" ? GridUnitType.Star : GridUnitType.Pixel);\n            return rd;\n        }\n        nullstone.registerTypeConverter(RowDefinition, ConvertRowDefinition);\n        var RowDefinitionCollection = (function (_super) {\n            __extends(RowDefinitionCollection, _super);\n            function RowDefinitionCollection() {\n                _super.apply(this, arguments);\n            }\n            RowDefinitionCollection.prototype._RaiseItemAdded = function (value, index) {\n                Fayde.Incite(this, {\n                    item: value,\n                    index: index,\n                    add: true\n                });\n            };\n            RowDefinitionCollection.prototype._RaiseItemRemoved = function (value, index) {\n                Fayde.Incite(this, {\n                    item: value,\n                    index: index,\n                    add: false\n                });\n            };\n            return RowDefinitionCollection;\n        })(Fayde.XamlObjectCollection);\n        Controls.RowDefinitionCollection = RowDefinitionCollection;\n        Fayde.CoreLibrary.add(RowDefinitionCollection);\n        function ConvertRowDefinitionCollection(o) {\n            if (!o || o instanceof RowDefinitionCollection)\n                return o;\n            if (typeof o === \"string\") {\n                var tokens = o.split(\" \");\n                var len = tokens.length;\n                var rdc = new RowDefinitionCollection();\n                var rd;\n                for (var i = 0; i < len; i++) {\n                    if (rd = ConvertRowDefinition(tokens[i]))\n                        rdc.Add(rd);\n                }\n                return rdc;\n            }\n            return undefined;\n        }\n        nullstone.registerTypeConverter(RowDefinitionCollection, ConvertRowDefinitionCollection);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Primitives/RangeBase.ts\" />\n/// <reference path=\"Primitives/RepeatButton.ts\" />\n/// <reference path=\"Primitives/Thumb.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var GridUnitType = minerva.controls.grid.GridUnitType;\n        var Slider = (function (_super) {\n            __extends(Slider, _super);\n            function Slider() {\n                _super.call(this);\n                this._DragValue = 0;\n                this.DefaultStyleKey = Slider;\n                this.SizeChanged.on(this._HandleSizeChanged, this);\n            }\n            Slider.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                this.$HorizontalTemplate = this.GetTemplateChild(\"HorizontalTemplate\", Fayde.FrameworkElement);\n                this.$HorizontalLargeIncrease = this.GetTemplateChild(\"HorizontalTrackLargeChangeIncreaseRepeatButton\", Controls.Primitives.RepeatButton);\n                this.$HorizontalLargeDecrease = this.GetTemplateChild(\"HorizontalTrackLargeChangeDecreaseRepeatButton\", Controls.Primitives.RepeatButton);\n                this.$HorizontalThumb = this.GetTemplateChild(\"HorizontalThumb\", Controls.Primitives.Thumb);\n                this.$VerticalTemplate = this.GetTemplateChild(\"VerticalTemplate\", Fayde.FrameworkElement);\n                this.$VerticalLargeIncrease = this.GetTemplateChild(\"VerticalTrackLargeChangeIncreaseRepeatButton\", Controls.Primitives.RepeatButton);\n                this.$VerticalLargeDecrease = this.GetTemplateChild(\"VerticalTrackLargeChangeDecreaseRepeatButton\", Controls.Primitives.RepeatButton);\n                this.$VerticalThumb = this.GetTemplateChild(\"VerticalThumb\", Controls.Primitives.Thumb);\n                if (this.$HorizontalThumb != null) {\n                    this.$HorizontalThumb.DragStarted.on(this._OnThumbDragStarted, this);\n                    this.$HorizontalThumb.DragDelta.on(this._OnThumbDragDelta, this);\n                }\n                if (this.$HorizontalLargeDecrease != null) {\n                    this.$HorizontalLargeDecrease.Click.on(function (sender, e) { this.Focus(); this.Value -= this.LargeChange; }, this);\n                }\n                if (this.$HorizontalLargeIncrease != null) {\n                    this.$HorizontalLargeIncrease.Click.on(function (sender, e) { this.Focus(); this.Value += this.LargeChange; }, this);\n                }\n                if (this.$VerticalThumb != null) {\n                    this.$VerticalThumb.DragStarted.on(this._OnThumbDragStarted, this);\n                    this.$VerticalThumb.DragDelta.on(this._OnThumbDragDelta, this);\n                }\n                if (this.$VerticalLargeDecrease != null) {\n                    this.$VerticalLargeDecrease.Click.on(function (sender, e) { this.Focus(); this.Value -= this.LargeChange; }, this);\n                }\n                if (this.$VerticalLargeIncrease != null) {\n                    this.$VerticalLargeIncrease.Click.on(function (sender, e) { this.Focus(); this.Value += this.LargeChange; }, this);\n                }\n                this._OnOrientationChanged();\n                this.UpdateVisualState(false);\n            };\n            Slider.prototype.OnIsEnabledChanged = function (e) {\n                _super.prototype.OnIsEnabledChanged.call(this, e);\n                this.UpdateVisualState();\n            };\n            Slider.prototype.OnMinimumChanged = function (oldMin, newMin) {\n                _super.prototype.OnMinimumChanged.call(this, oldMin, newMin);\n                this._UpdateTrackLayout();\n            };\n            Slider.prototype.OnMaximumChanged = function (oldMax, newMax) {\n                _super.prototype.OnMaximumChanged.call(this, oldMax, newMax);\n                this._UpdateTrackLayout();\n            };\n            Slider.prototype.OnValueChanged = function (oldValue, newValue) {\n                _super.prototype.OnValueChanged.call(this, oldValue, newValue);\n                this._UpdateTrackLayout();\n            };\n            Slider.prototype._HandleSizeChanged = function (sender, e) {\n                this._UpdateTrackLayout();\n            };\n            Slider.prototype._OnOrientationChanged = function () {\n                var isHorizontal = this.Orientation === Fayde.Orientation.Horizontal;\n                if (this.$HorizontalTemplate != null)\n                    this.$HorizontalTemplate.Visibility = isHorizontal ? Fayde.Visibility.Visible : Fayde.Visibility.Collapsed;\n                if (this.$VerticalTemplate != null)\n                    this.$VerticalTemplate.Visibility = !isHorizontal ? Fayde.Visibility.Visible : Fayde.Visibility.Collapsed;\n                this._UpdateTrackLayout();\n            };\n            Slider.prototype._UpdateTrackLayout = function () {\n                var max = this.Maximum;\n                var min = this.Minimum;\n                var val = this.Value;\n                var isHorizontal = this.Orientation === Fayde.Orientation.Horizontal;\n                var temp = isHorizontal ? this.$HorizontalTemplate : this.$VerticalTemplate;\n                if (!(temp instanceof Controls.Grid))\n                    return;\n                var templateGrid = temp;\n                var isReversed = this.IsDirectionReversed;\n                var largeDecrease;\n                var largeIncrease;\n                var thumb;\n                if (isHorizontal) {\n                    var coldefs = templateGrid.ColumnDefinitions;\n                    largeDecrease = this.$HorizontalLargeDecrease;\n                    largeIncrease = this.$HorizontalLargeIncrease;\n                    thumb = this.$HorizontalThumb;\n                    if (coldefs && coldefs.Count === 3) {\n                        coldefs.GetValueAt(0).Width = new Controls.GridLength(1, isReversed ? GridUnitType.Star : GridUnitType.Auto);\n                        coldefs.GetValueAt(2).Width = new Controls.GridLength(1, isReversed ? GridUnitType.Auto : GridUnitType.Star);\n                        if (largeDecrease != null)\n                            Controls.Grid.SetColumn(largeDecrease, isReversed ? 2 : 0);\n                        if (largeIncrease != null)\n                            Controls.Grid.SetColumn(largeIncrease, isReversed ? 0 : 2);\n                    }\n                }\n                else {\n                    var rowdefs = templateGrid.RowDefinitions;\n                    largeDecrease = this.$VerticalLargeDecrease;\n                    largeIncrease = this.$VerticalLargeIncrease;\n                    thumb = this.$VerticalThumb;\n                    if (rowdefs && rowdefs.Count === 3) {\n                        rowdefs.GetValueAt(0).Height = new Controls.GridLength(1, isReversed ? GridUnitType.Auto : GridUnitType.Star);\n                        rowdefs.GetValueAt(2).Height = new Controls.GridLength(1, isReversed ? GridUnitType.Star : GridUnitType.Auto);\n                        if (largeDecrease != null)\n                            Controls.Grid.SetRow(largeDecrease, isReversed ? 0 : 2);\n                        if (largeIncrease != null)\n                            Controls.Grid.SetRow(largeIncrease, isReversed ? 2 : 0);\n                    }\n                }\n                if (max === min)\n                    return;\n                var percent = val / (max - min);\n                if (largeDecrease != null && thumb != null) {\n                    if (isHorizontal)\n                        largeDecrease.Width = Math.max(0, percent * (this.ActualWidth - thumb.ActualWidth));\n                    else\n                        largeDecrease.Height = Math.max(0, percent * (this.ActualHeight - thumb.ActualHeight));\n                }\n            };\n            Slider.prototype._OnThumbDragStarted = function (sender, e) {\n                this.Focus();\n                this._DragValue = this.Value;\n            };\n            Slider.prototype._OnThumbDragDelta = function (sender, e) {\n                var offset = 0;\n                var isHorizontal = this.Orientation === Fayde.Orientation.Horizontal;\n                if (isHorizontal && this.$HorizontalThumb != null) {\n                    offset = e.HorizontalChange / (this.ActualWidth - this.$HorizontalThumb.ActualWidth) * (this.Maximum - this.Minimum);\n                }\n                else if (!isHorizontal && this.$VerticalThumb != null) {\n                    offset = -e.VerticalChange / (this.ActualHeight - this.$VerticalThumb.ActualHeight) * (this.Maximum - this.Minimum);\n                }\n                if (!isNaN(offset) && isFinite(offset)) {\n                    this._DragValue += this.IsDirectionReversed ? -offset : offset;\n                    var newValue = Math.min(this.Maximum, Math.max(this.Minimum, this._DragValue));\n                    if (newValue != this.Value)\n                        this.Value = newValue;\n                }\n            };\n            Slider.prototype.OnMouseEnter = function (e) {\n                _super.prototype.OnMouseEnter.call(this, e);\n                if ((this.Orientation === Fayde.Orientation.Horizontal && this.$HorizontalThumb != null && this.$HorizontalThumb.IsDragging) ||\n                    (this.Orientation === Fayde.Orientation.Vertical && this.$VerticalThumb != null && this.$VerticalThumb.IsDragging)) {\n                    this.UpdateVisualState();\n                }\n            };\n            Slider.prototype.OnMouseLeave = function (e) {\n                _super.prototype.OnMouseLeave.call(this, e);\n                if ((this.Orientation === Fayde.Orientation.Horizontal && this.$HorizontalThumb != null && this.$HorizontalThumb.IsDragging) ||\n                    (this.Orientation === Fayde.Orientation.Vertical && this.$VerticalThumb != null && this.$VerticalThumb.IsDragging)) {\n                    this.UpdateVisualState();\n                }\n            };\n            Slider.prototype.OnMouseLeftButtonDown = function (e) {\n                _super.prototype.OnMouseLeftButtonDown.call(this, e);\n                if (e.Handled)\n                    return;\n                e.Handled = true;\n                this.Focus();\n                this.CaptureMouse();\n            };\n            Slider.prototype.OnLostMouseCapture = function (e) {\n                _super.prototype.OnLostMouseCapture.call(this, e);\n                this.UpdateVisualState();\n            };\n            Slider.prototype.OnKeyDown = function (e) {\n                _super.prototype.OnKeyDown.call(this, e);\n                if (e.Handled)\n                    return;\n                if (!this.IsEnabled)\n                    return;\n                switch (e.Key) {\n                    case Fayde.Input.Key.Left:\n                    case Fayde.Input.Key.Down:\n                        this.Value += (this.IsDirectionReversed ? this.SmallChange : -this.SmallChange);\n                        break;\n                    case Fayde.Input.Key.Right:\n                    case Fayde.Input.Key.Up:\n                        this.Value += (this.IsDirectionReversed ? -this.SmallChange : this.SmallChange);\n                        break;\n                    case Fayde.Input.Key.Home:\n                        this.Value = this.Minimum;\n                        break;\n                    case Fayde.Input.Key.End:\n                        this.Value = this.Maximum;\n                        break;\n                }\n            };\n            Slider.prototype.OnGotFocus = function (e) {\n                _super.prototype.OnGotFocus.call(this, e);\n                this.SetValueInternal(Slider.IsFocusedProperty, true);\n            };\n            Slider.prototype.OnLostFocus = function (e) {\n                _super.prototype.OnLostFocus.call(this, e);\n                this.SetValueInternal(Slider.IsFocusedProperty, false);\n            };\n            Slider.IsDirectionReversedProperty = DependencyProperty.RegisterCore(\"IsDirectionReversed\", function () { return Boolean; }, Slider, false, function (d, args) { return d._UpdateTrackLayout(); });\n            Slider.IsFocusedProperty = DependencyProperty.RegisterReadOnlyCore(\"IsFocused\", function () { return Boolean; }, Slider, false, function (d, args) { return d.UpdateVisualState(); });\n            Slider.OrientationProperty = DependencyProperty.RegisterCore(\"Orientation\", function () { return new Fayde.Enum(Fayde.Orientation); }, Slider, Fayde.Orientation.Horizontal, function (d, args) { return d._OnOrientationChanged(); });\n            return Slider;\n        })(Controls.Primitives.RangeBase);\n        Controls.Slider = Slider;\n        Fayde.CoreLibrary.add(Slider);\n        Controls.TemplateVisualStates(Slider, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" });\n        Controls.TemplateParts(Slider, { Name: \"HorizontalTemplate\", Type: Fayde.FrameworkElement }, { Name: \"HorizontalThumb\", Type: Controls.Primitives.Thumb }, { Name: \"HorizontalTrackLargeChangeIncreaseRepeatButton\", Type: Controls.Primitives.RepeatButton }, { Name: \"HorizontalTrackLargeChangeDecreaseRepeatButton\", Type: Controls.Primitives.RepeatButton }, { Name: \"VerticalTemplate\", Type: Fayde.FrameworkElement }, { Name: \"VerticalThumb\", Type: Controls.Primitives.Thumb }, { Name: \"VerticalTrackLargeChangeIncreaseRepeatButton\", Type: Controls.Primitives.RepeatButton }, { Name: \"VerticalTrackLargeChangeDecreaseRepeatButton\", Type: Controls.Primitives.RepeatButton });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Panel.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var StackPanel = (function (_super) {\n            __extends(StackPanel, _super);\n            function StackPanel() {\n                _super.apply(this, arguments);\n            }\n            StackPanel.prototype.CreateLayoutUpdater = function () {\n                return new minerva.controls.stackpanel.StackPanelUpdater();\n            };\n            StackPanel.OrientationProperty = DependencyProperty.Register(\"Orientation\", function () { return new Fayde.Enum(Fayde.Orientation); }, StackPanel, Fayde.Orientation.Vertical);\n            return StackPanel;\n        })(Controls.Panel);\n        Controls.StackPanel = StackPanel;\n        Fayde.CoreLibrary.add(StackPanel);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(StackPanel.OrientationProperty, function (upd, ov, nv) {\n                upd.invalidateMeasure();\n                upd.invalidateArrange();\n            }, false);\n        })(reactions || (reactions = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Enums.ts\" />\n/// <reference path=\"../Core/FrameworkElement.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var TextBlockUpdater = minerva.controls.textblock.TextBlockUpdater;\n        var TextBlockNode = (function (_super) {\n            __extends(TextBlockNode, _super);\n            function TextBlockNode(xobj) {\n                _super.call(this, xobj);\n                this._IsDocAuto = false;\n                this._SettingText = false;\n                this._SettingInlines = false;\n                this._AutoRun = new Fayde.Documents.Run();\n            }\n            TextBlockNode.prototype.GetInheritedEnumerator = function () {\n                var xobj = this.XObject;\n                var inlines = xobj.Inlines;\n                if (inlines)\n                    return inlines.GetNodeEnumerator();\n            };\n            TextBlockNode.prototype.TextChanged = function (args) {\n                if (this._SettingInlines)\n                    return;\n                this._AutoRun.Text = args.NewValue;\n                if (!this._IsDocAuto) {\n                    this._IsDocAuto = true;\n                    this.LayoutUpdater.tree.clearText();\n                    this._SettingText = true;\n                    var inlines = this.XObject.Inlines;\n                    inlines.Clear();\n                    inlines.Add(this._AutoRun);\n                    this.LayoutUpdater.invalidateTextMetrics();\n                    this._SettingText = false;\n                }\n            };\n            TextBlockNode.prototype.InlinesChanged = function (inline, index, isAdd) {\n                var xobj = this.XObject;\n                if (isAdd)\n                    Fayde.Providers.InheritedStore.PropagateInheritedOnAdd(xobj, inline.XamlNode);\n                var updater = this.LayoutUpdater;\n                if (isAdd)\n                    updater.tree.onTextAttached(inline.TextUpdater, index);\n                else\n                    updater.tree.onTextDetached(inline.TextUpdater);\n                if (isAdd)\n                    Fayde.ReactTo(inline, this, this.InlineChanged);\n                else\n                    Fayde.UnreactTo(inline, this);\n                if (this._SettingText)\n                    return;\n                this._SettingInlines = true;\n                var inlines = xobj.Inlines;\n                var text = \"\";\n                for (var en = inlines.getEnumerator(); en.moveNext();) {\n                    text += en.current._SerializeText();\n                }\n                xobj.SetCurrentValue(TextBlock.TextProperty, text);\n                this._SettingInlines = false;\n                updater.invalidateTextMetrics();\n            };\n            TextBlockNode.prototype.InlineChanged = function (obj) {\n                switch (obj.type) {\n                    case 'font':\n                        this.LayoutUpdater.invalidateFont(obj.full);\n                        break;\n                    case 'text':\n                        this.LayoutUpdater.invalidateTextMetrics();\n                        break;\n                }\n            };\n            return TextBlockNode;\n        })(Fayde.FENode);\n        Controls.TextBlockNode = TextBlockNode;\n        var TextBlock = (function (_super) {\n            __extends(TextBlock, _super);\n            function TextBlock() {\n                var _this = this;\n                _super.call(this);\n                var inlines = TextBlock.InlinesProperty.Initialize(this);\n                inlines.AttachTo(this);\n                Fayde.ReactTo(inlines, this, function (change) { return _this.XamlNode.InlinesChanged(change.item, change.index, change.add); });\n                Fayde.UIReaction(TextBlock.ForegroundProperty, function (upd, ov, nv) { return upd.invalidate(); }, true, true, this);\n                Fayde.UIReaction(TextBlock.PaddingProperty, function (upd, ov, nv) { return upd.invalidateTextMetrics(); }, false, true, this);\n                Fayde.UIReaction(TextBlock.LineStackingStrategyProperty, function (upd, ov, nv) { return upd.invalidateTextMetrics(); }, false, true, this);\n                Fayde.UIReaction(TextBlock.LineHeightProperty, function (upd, ov, nv) { return upd.invalidateTextMetrics(); }, false, true, this);\n                Fayde.UIReaction(TextBlock.TextAlignmentProperty, function (upd, ov, nv) { return upd.invalidateTextMetrics(); }, false, true, this);\n                Fayde.UIReaction(TextBlock.TextTrimmingProperty, function (upd, ov, nv) { return upd.invalidateTextMetrics(); }, false, true, this);\n                Fayde.UIReaction(TextBlock.TextWrappingProperty, function (upd, ov, nv) { return upd.invalidateTextMetrics(); }, false, true, this);\n            }\n            TextBlock.prototype.CreateNode = function () {\n                return new TextBlockNode(this);\n            };\n            TextBlock.prototype.CreateLayoutUpdater = function () {\n                return new TextBlockUpdater();\n            };\n            TextBlock.prototype.IsInheritable = function (propd) {\n                if (TextBlockInheritedProps.indexOf(propd) > -1)\n                    return true;\n                return _super.prototype.IsInheritable.call(this, propd);\n            };\n            TextBlock.PaddingProperty = DependencyProperty.RegisterCore(\"Padding\", function () { return Thickness; }, TextBlock);\n            TextBlock.FontFamilyProperty = Fayde.InheritableOwner.FontFamilyProperty.ExtendTo(TextBlock);\n            TextBlock.FontSizeProperty = Fayde.InheritableOwner.FontSizeProperty.ExtendTo(TextBlock);\n            TextBlock.FontStretchProperty = Fayde.InheritableOwner.FontStretchProperty.ExtendTo(TextBlock);\n            TextBlock.FontStyleProperty = Fayde.InheritableOwner.FontStyleProperty.ExtendTo(TextBlock);\n            TextBlock.FontWeightProperty = Fayde.InheritableOwner.FontWeightProperty.ExtendTo(TextBlock);\n            TextBlock.ForegroundProperty = Fayde.InheritableOwner.ForegroundProperty.ExtendTo(TextBlock);\n            TextBlock.TextDecorationsProperty = Fayde.InheritableOwner.TextDecorationsProperty.ExtendTo(TextBlock);\n            TextBlock.TextProperty = DependencyProperty.Register(\"Text\", function () { return String; }, TextBlock, \"\", function (d, args) { return d.XamlNode.TextChanged(args); });\n            TextBlock.InlinesProperty = DependencyProperty.RegisterImmutable(\"Inlines\", function () { return Fayde.Documents.InlineCollection; }, TextBlock);\n            TextBlock.LineStackingStrategyProperty = DependencyProperty.RegisterCore(\"LineStackingStrategy\", function () { return new Fayde.Enum(Fayde.LineStackingStrategy); }, TextBlock, Fayde.LineStackingStrategy.MaxHeight);\n            TextBlock.LineHeightProperty = DependencyProperty.RegisterCore(\"LineHeight\", function () { return Number; }, TextBlock, NaN);\n            TextBlock.TextAlignmentProperty = DependencyProperty.RegisterCore(\"TextAlignment\", function () { return new Fayde.Enum(Fayde.TextAlignment); }, TextBlock, Fayde.TextAlignment.Left);\n            TextBlock.TextTrimmingProperty = DependencyProperty.RegisterCore(\"TextTrimming\", function () { return new Fayde.Enum(Controls.TextTrimming); }, TextBlock, Controls.TextTrimming.None);\n            TextBlock.TextWrappingProperty = DependencyProperty.RegisterCore(\"TextWrapping\", function () { return new Fayde.Enum(Controls.TextWrapping); }, TextBlock, Controls.TextWrapping.NoWrap);\n            return TextBlock;\n        })(Fayde.FrameworkElement);\n        Controls.TextBlock = TextBlock;\n        Fayde.CoreLibrary.add(TextBlock);\n        Fayde.Markup.Content(TextBlock, TextBlock.InlinesProperty);\n        Fayde.Markup.TextContent(TextBlock, TextBlock.TextProperty);\n        var TextBlockInheritedProps = [\n            TextBlock.FontFamilyProperty,\n            TextBlock.FontSizeProperty,\n            TextBlock.FontStretchProperty,\n            TextBlock.FontStyleProperty,\n            TextBlock.FontWeightProperty,\n            TextBlock.ForegroundProperty\n        ];\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"TextBoxBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var TextBox = (function (_super) {\n            __extends(TextBox, _super);\n            function TextBox() {\n                var _this = this;\n                _super.call(this, Fayde.Text.EmitChangedType.TEXT | Fayde.Text.EmitChangedType.SELECTION);\n                this.TextChanged = new Fayde.RoutedEvent();\n                this.DefaultStyleKey = TextBox;\n                var proxy = this.$Proxy;\n                proxy.SyncSelectionStart = function (value) { return _this.SetCurrentValue(TextBox.SelectionStartProperty, value); };\n                proxy.SyncSelectionLength = function (value) { return _this.SetCurrentValue(TextBox.SelectionLengthProperty, value); };\n                proxy.SyncText = function (value) {\n                    _this.SetCurrentValue(TextBox.TextProperty, value);\n                    var args = new Fayde.RoutedEventArgs();\n                    args.Source = _this;\n                    _this.TextChanged.raise(_this, args);\n                };\n                this.$Advancer = new Controls.Internal.TextBoxCursorAdvancer(this.$Proxy);\n            }\n            TextBox.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                var vis = (this.TextWrapping === Controls.TextWrapping.Wrap) ? Controls.ScrollBarVisibility.Disabled : this.HorizontalScrollBarVisibility;\n                this.$ContentProxy.setHorizontalScrollBar(vis);\n                this.$ContentProxy.setVerticalScrollBar(this.VerticalScrollBarVisibility);\n            };\n            Object.defineProperty(TextBox.prototype, \"DisplayText\", {\n                get: function () {\n                    return this.Text;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            TextBox.prototype.OnMouseEnter = function (e) {\n                _super.prototype.OnMouseEnter.call(this, e);\n                this.UpdateVisualState();\n            };\n            TextBox.prototype.OnMouseLeave = function (e) {\n                _super.prototype.OnMouseLeave.call(this, e);\n                this.UpdateVisualState();\n            };\n            TextBox.prototype.OnGotFocus = function (e) {\n                _super.prototype.OnGotFocus.call(this, e);\n                this.UpdateVisualState();\n            };\n            TextBox.prototype.OnLostFocus = function (e) {\n                _super.prototype.OnLostFocus.call(this, e);\n                this.UpdateVisualState();\n            };\n            TextBox.prototype.GoToStateCommon = function (gotoFunc) {\n                if (!this.IsEnabled)\n                    return gotoFunc(\"Disabled\");\n                if (this.IsReadOnly)\n                    return gotoFunc(\"ReadOnly\");\n                if (this.IsMouseOver)\n                    return gotoFunc(\"MouseOver\");\n                return gotoFunc(\"Normal\");\n            };\n            TextBox.prototype.SelectAll = function () {\n                this.$Proxy.selectAll();\n            };\n            TextBox.prototype.Select = function (start, length) {\n                this.$Proxy.select(start, length);\n            };\n            TextBox.AcceptsReturnProperty = DependencyProperty.Register(\"AcceptsReturn\", function () { return Boolean; }, TextBox, false);\n            TextBox.IsReadOnlyProperty = DependencyProperty.Register(\"IsReadOnly\", function () { return Boolean; }, TextBox, false);\n            TextBox.TextProperty = DependencyProperty.Register(\"Text\", function () { return String; }, TextBox);\n            TextBox.TextAlignmentProperty = DependencyProperty.Register(\"TextAlignment\", function () { return new Fayde.Enum(Fayde.TextAlignment); }, TextBox, Fayde.TextAlignment.Left);\n            TextBox.TextWrappingProperty = DependencyProperty.Register(\"TextWrapping\", function () { return new Fayde.Enum(Controls.TextWrapping); }, TextBox, Controls.TextWrapping.NoWrap);\n            TextBox.HorizontalScrollBarVisibilityProperty = DependencyProperty.Register(\"HorizontalScrollBarVisibility\", function () { return new Fayde.Enum(Controls.ScrollBarVisibility); }, TextBox, Controls.ScrollBarVisibility.Hidden);\n            TextBox.VerticalScrollBarVisibilityProperty = DependencyProperty.Register(\"VerticalScrollBarVisibility\", function () { return new Fayde.Enum(Controls.ScrollBarVisibility); }, TextBox, Controls.ScrollBarVisibility.Hidden);\n            return TextBox;\n        })(Controls.TextBoxBase);\n        Controls.TextBox = TextBox;\n        Fayde.CoreLibrary.add(TextBox);\n        Controls.TemplateVisualStates(TextBox, { GroupName: \"CommonStates\", Name: \"Normal\" }, { GroupName: \"CommonStates\", Name: \"MouseOver\" }, { GroupName: \"CommonStates\", Name: \"Disabled\" }, { GroupName: \"CommonStates\", Name: \"ReadOnly\" }, { GroupName: \"FocusStates\", Name: \"Unfocused\" }, { GroupName: \"FocusStates\", Name: \"Focused\" }, { GroupName: \"ValidationStates\", Name: \"Valid\" }, { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" }, { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" });\n        Controls.TemplateParts(TextBox, { Name: \"ContentElement\", Type: Fayde.FrameworkElement });\n        var reactions;\n        (function (reactions) {\n            Fayde.DPReaction(TextBox.AcceptsReturnProperty, function (tb, ov, nv) {\n                tb.$Proxy.acceptsReturn = nv === true;\n            }, false);\n            Fayde.DPReaction(TextBox.IsReadOnlyProperty, function (tb, ov, nv) {\n                tb.$View.setIsReadOnly(nv === true);\n            }, false);\n            Fayde.DPReaction(TextBox.TextAlignmentProperty, function (tb, ov, nv) { return tb.$View.setTextAlignment(nv); }, false);\n            Fayde.DPReaction(TextBox.TextWrappingProperty, function (tb, ov, nv) {\n                var vis = (nv === Controls.TextWrapping.Wrap) ? Controls.ScrollBarVisibility.Disabled : tb.HorizontalScrollBarVisibility;\n                tb.$ContentProxy.setHorizontalScrollBar(vis);\n                tb.$View.setTextWrapping(nv);\n            }, false);\n            Fayde.DPReaction(TextBox.HorizontalScrollBarVisibilityProperty, function (tb, ov, nv) {\n                var vis = (tb.TextWrapping === Controls.TextWrapping.Wrap) ? Controls.ScrollBarVisibility.Disabled : tb.HorizontalScrollBarVisibility;\n                tb.$ContentProxy.setHorizontalScrollBar(vis);\n            }, false);\n            Fayde.DPReaction(TextBox.VerticalScrollBarVisibilityProperty, function (tb, ov, nv) {\n                tb.$ContentProxy.setVerticalScrollBar(nv);\n            }, false);\n            Fayde.DPReaction(TextBox.TextProperty, function (tb, ov, nv) {\n                tb.$Proxy.setText(nv);\n                tb.$View.setText(tb.DisplayText);\n            }, false);\n        })(reactions || (reactions = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ContentControl.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var ToolTip = (function (_super) {\n            __extends(ToolTip, _super);\n            function ToolTip() {\n                _super.call(this);\n                this._TooltipParent = null;\n                this._TooltipParentDCListener = null;\n                this.PlacementOverride = null;\n                this.PlacementTargetOverride = null;\n                this.Opened = new Fayde.RoutedEvent();\n                this.Closed = new Fayde.RoutedEvent();\n                this._ParentPopup = null;\n                this.DefaultStyleKey = ToolTip;\n            }\n            Object.defineProperty(ToolTip.prototype, \"TooltipParent\", {\n                get: function () { return this._TooltipParent; },\n                set: function (value) {\n                    if (this._TooltipParentDCListener)\n                        this._TooltipParentDCListener.Detach();\n                    this._TooltipParent = value;\n                    if (this._TooltipParent)\n                        this._TooltipParentDCListener = Fayde.DependencyObject.DataContextProperty.Store.ListenToChanged(this._TooltipParent, Fayde.DependencyObject.DataContextProperty, this.OnTooltipParentDataContextChanged, this);\n                },\n                enumerable: true,\n                configurable: true\n            });\n            ToolTip.prototype.OnApplyTemplate = function () {\n                _super.prototype.OnApplyTemplate.call(this);\n                this.UpdateVisualState(false);\n            };\n            ToolTip.prototype.OnHorizontalOffsetChanged = function (args) {\n                if (args.NewValue !== args.OldValue)\n                    this.OnOffsetChanged(args.NewValue, 0);\n            };\n            ToolTip.prototype.OnVerticalOffsetChanged = function (args) {\n                if (args.NewValue !== args.OldValue)\n                    this.OnOffsetChanged(0, args.NewValue);\n            };\n            ToolTip.prototype.OnIsOpenChanged = function (args) {\n                if (args.NewValue) {\n                    if (!this._ParentPopup)\n                        this.HookupParentPopup();\n                    this._ParentPopup.IsOpen = true;\n                    this.PerformPlacement(this.HorizontalOffset, this.VerticalOffset);\n                }\n                else {\n                    this._ParentPopup.IsOpen = false;\n                }\n                this.UpdateVisualState();\n            };\n            ToolTip.prototype.OnOffsetChanged = function (horizontalOffset, verticalOffset) {\n                if (!this._ParentPopup || !this.IsOpen)\n                    return;\n                this.PerformPlacement(horizontalOffset, verticalOffset);\n            };\n            ToolTip.prototype.OnLayoutUpdated = function (sender, e) {\n                if (this._ParentPopup)\n                    this.PerformPlacement(this.HorizontalOffset, this.VerticalOffset);\n            };\n            ToolTip.prototype.OnTooltipParentDataContextChanged = function (sender, args) {\n                if (this._ParentPopup && this.TooltipParent)\n                    this._ParentPopup.DataContext = this.TooltipParent.DataContext;\n            };\n            ToolTip.prototype.HookupParentPopup = function () {\n                console.assert(!this._ParentPopup, \"this._parentPopup should be null, we want to set visual tree once\");\n                var pp = this._ParentPopup = new Controls.Primitives.Popup();\n                pp.DataContext = !this.TooltipParent ? null : this.TooltipParent.DataContext;\n                pp.Opened.on(this.OnPopupOpened, this);\n                pp.Closed.on(this.OnPopupClosed, this);\n                this.IsTabStop = false;\n                pp.XamlNode.RegisterInitiator(this._TooltipParent);\n                pp.Child = this;\n                pp.IsHitTestVisible = false;\n                this.IsHitTestVisible = false;\n            };\n            ToolTip.prototype.OnPopupOpened = function (sender, e) {\n                var args = new Fayde.RoutedEventArgs();\n                args.OriginalSource = this;\n                this.Opened.raise(this, args);\n                this.LayoutUpdated.on(this.OnLayoutUpdated, this);\n            };\n            ToolTip.prototype.OnPopupClosed = function (sender, e) {\n                var args = new Fayde.RoutedEventArgs();\n                args.OriginalSource = this;\n                this.Closed.raise(this, args);\n                this.LayoutUpdated.off(this.OnLayoutUpdated, this);\n            };\n            ToolTip.prototype.PerformPlacement = function (horizontalOffset, verticalOffset) {\n                if (!this.IsOpen)\n                    return;\n                var root = Fayde.Application.Current.RootVisual;\n                if (!root)\n                    return;\n                var mode = this.PlacementOverride != null ? this.PlacementOverride : this.Placement;\n                var target = (this.PlacementTargetOverride || this.PlacementTarget);\n                var targetBounds = new minerva.Rect();\n                var point = Controls.ToolTipService.MousePosition;\n                if (mode !== Controls.PlacementMode.Mouse) {\n                    point = new Point();\n                    try {\n                        if (target != null) {\n                            targetBounds = new minerva.Rect(0, 0, target.ActualWidth, target.ActualHeight);\n                            targetBounds = target.TransformToVisual(null).TransformBounds(targetBounds);\n                            point.x = targetBounds.x;\n                            point.y = targetBounds.y;\n                        }\n                    }\n                    catch (err) {\n                        console.warn(\"Could not transform the tooltip point.\");\n                        return;\n                    }\n                }\n                switch (mode) {\n                    case Controls.PlacementMode.Top:\n                        point.y = targetBounds.y - this.ActualHeight;\n                        break;\n                    case Controls.PlacementMode.Bottom:\n                        point.y = targetBounds.y + targetBounds.height;\n                        break;\n                    case Controls.PlacementMode.Left:\n                        point.x = targetBounds.x - this.ActualWidth;\n                        break;\n                    case Controls.PlacementMode.Right:\n                        point.x = targetBounds.x + targetBounds.width;\n                        break;\n                    case Controls.PlacementMode.Mouse:\n                        point.y += new Controls.TextBox().FontSize;\n                        break;\n                    default:\n                        throw new NotSupportedException(\"PlacementMode '\" + mode + \"' is not supported.\");\n                }\n                var rootWidth = root.ActualWidth;\n                if ((point.x + this.ActualWidth) > rootWidth) {\n                    if (mode === Controls.PlacementMode.Right)\n                        point.x = targetBounds.x - this.ActualWidth;\n                    else\n                        point.x = rootWidth - this.ActualWidth;\n                }\n                else if (point.x < 0) {\n                    if (mode === Controls.PlacementMode.Left)\n                        point.x = targetBounds.x + targetBounds.width;\n                    else\n                        point.x = 0;\n                }\n                var rootHeight = root.ActualHeight;\n                if ((point.y + this.ActualHeight) > rootHeight) {\n                    if (mode === Controls.PlacementMode.Bottom)\n                        point.y = targetBounds.y - this.ActualHeight;\n                    else\n                        point.y = rootHeight - this.ActualHeight;\n                }\n                else if (point.y < 0) {\n                    if (mode === Controls.PlacementMode.Top)\n                        point.y = targetBounds.y + targetBounds.height;\n                    else\n                        point.y = 0;\n                }\n                this._ParentPopup.VerticalOffset = point.y;\n                this._ParentPopup.HorizontalOffset = point.x;\n            };\n            ToolTip.prototype.GoToStates = function (gotoFunc) {\n                if (this.IsOpen)\n                    gotoFunc(\"Open\");\n                else\n                    gotoFunc(\"Closed\");\n            };\n            ToolTip.HorizontalOffsetProperty = DependencyProperty.Register(\"HorizontalOffset\", function () { return Number; }, ToolTip, 0, function (d, args) { return d.OnHorizontalOffsetChanged(args); });\n            ToolTip.VerticalOffsetProperty = DependencyProperty.Register(\"VerticalOffset\", function () { return Number; }, ToolTip, 0, function (d, args) { return d.OnVerticalOffsetChanged(args); });\n            ToolTip.IsOpenProperty = DependencyProperty.Register(\"IsOpen\", function () { return Boolean; }, ToolTip, false, function (d, args) { return d.OnIsOpenChanged(args); });\n            ToolTip.PlacementProperty = DependencyProperty.Register(\"Placement\", function () { return new Fayde.Enum(Controls.PlacementMode); }, ToolTip, Controls.PlacementMode.Mouse);\n            ToolTip.PlacementTargetProperty = DependencyProperty.Register(\"PlacementTarget\", function () { return Fayde.UIElement; }, ToolTip);\n            return ToolTip;\n        })(Controls.ContentControl);\n        Controls.ToolTip = ToolTip;\n        Fayde.CoreLibrary.add(ToolTip);\n        Controls.TemplateVisualStates(ToolTip, { GroupName: \"OpenStates\", Name: \"Closed\" }, { GroupName: \"OpenStates\", Name: \"Open\" });\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Point = (function (_super) {\n    __extends(Point, _super);\n    function Point() {\n        _super.apply(this, arguments);\n    }\n    Point.prototype.Clone = function () {\n        return new Point(this.x, this.y);\n    };\n    Point.LERP = function (start, end, p) {\n        var x = start.x + (end.x - start.x) * p;\n        var y = start.y + (end.y - start.y) * p;\n        return new Point(x, y);\n    };\n    return Point;\n})(minerva.Point);\nFayde.CoreLibrary.addPrimitive(Point);\nnullstone.registerTypeConverter(Point, function (val) {\n    if (!val)\n        return new Point();\n    if (val instanceof Point)\n        return val;\n    if (val instanceof minerva.Point)\n        return new Point(val.x, val.y);\n    var tokens = Fayde.splitCommaList(val.toString());\n    if (tokens.length === 2) {\n        var x = parseFloat(tokens[0]);\n        var y = parseFloat(tokens[1]);\n        return new Point(x, y);\n    }\n    throw new Exception(\"Cannot parse Point value '\" + val + \"'\");\n});\n/// <reference path=\"../Core/DependencyObject.ts\" />\n/// <reference path=\"../Primitives/Point.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var AssignedToolTipProperty = DependencyProperty.Register(\"AssignedToolTip\", function () { return Controls.ToolTip; }, Fayde.UIElement, null);\n        var betweenShowDelay = 100;\n        var initialShowDelay = 400;\n        var showDuration = 5000;\n        function toolTipChanged(dobj, args) {\n            var owner = dobj;\n            var tooltip = args.NewValue;\n            if (args.OldValue)\n                slave.UnregisterTooltip(owner);\n            if (!tooltip)\n                return;\n            slave.RegisterTooltip(owner, tooltip);\n            slave.SetRootVisual(owner);\n        }\n        var ToolTipService = (function () {\n            function ToolTipService() {\n            }\n            ToolTipService.GetToolTip = function (dobj) { return dobj.GetValue(ToolTipService.ToolTipProperty); };\n            ToolTipService.SetToolTip = function (dobj, value) { dobj.SetValue(ToolTipService.ToolTipProperty, value); };\n            ToolTipService.GetPlacement = function (dobj) { return dobj.GetValue(ToolTipService.PlacementProperty); };\n            ToolTipService.SetPlacement = function (dobj, value) { dobj.SetValue(ToolTipService.PlacementProperty, value); };\n            ToolTipService.GetPlacementTarget = function (dobj) { return dobj.GetValue(ToolTipService.PlacementTargetProperty); };\n            ToolTipService.SetPlacementTarget = function (dobj, value) { dobj.SetValue(ToolTipService.PlacementTargetProperty, value); };\n            Object.defineProperty(ToolTipService, \"MousePosition\", {\n                get: function () {\n                    return slave.MousePosition;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            ToolTipService.ToolTipProperty = DependencyProperty.RegisterAttached(\"ToolTip\", function () { return Fayde.DependencyObject; }, ToolTipService, undefined, toolTipChanged);\n            ToolTipService.PlacementProperty = DependencyProperty.RegisterAttached(\"Placement\", function () { return new Fayde.Enum(Controls.PlacementMode); }, ToolTipService);\n            ToolTipService.PlacementTargetProperty = DependencyProperty.RegisterAttached(\"PlacementTarget\", function () { return Fayde.UIElement; }, ToolTipService);\n            return ToolTipService;\n        })();\n        Controls.ToolTipService = ToolTipService;\n        Fayde.CoreLibrary.add(ToolTipService);\n        var ToolTipServiceSlave = (function () {\n            function ToolTipServiceSlave() {\n                this.MousePosition = new Point();\n                this._RootVisual = null;\n                this._CurrentTooltip = null;\n                this._LastEnterSource = null;\n                this._LastOpened = 0;\n                this._OpenInterval = null;\n                this._CloseInterval = null;\n            }\n            ToolTipServiceSlave.prototype.SetRootVisual = function (owner) {\n                if (this._RootVisual)\n                    return;\n                var updater = owner.XamlNode.LayoutUpdater;\n                var surface = updater.tree.surface;\n                if (!surface)\n                    return;\n                var rv = this._RootVisual = surface.App.RootVisual;\n                if (!rv)\n                    return;\n                rv.MouseMove.on(this.OnRootMouseMove, this);\n            };\n            ToolTipServiceSlave.prototype.OnRootMouseMove = function (sender, e) {\n                this.MousePosition = e.GetPosition(null);\n            };\n            ToolTipServiceSlave.prototype.RegisterTooltip = function (owner, tooltip) {\n                console.assert(owner != null, \"ToolTip must have an owner\");\n                console.assert(tooltip != null, \"ToolTip can not be null\");\n                owner.MouseEnter.on(this.OnOwnerMouseEnter, this);\n                owner.MouseLeave.on(this.OnOwnerMouseLeave, this);\n                owner.MouseLeftButtonDown.on(this.OnOwnerMouseLeftButtonDown, this);\n                owner.KeyDown.on(this.OnOwnerKeyDown, this);\n                var converted = this.ConvertToToolTip(tooltip);\n                owner.SetValue(AssignedToolTipProperty, converted);\n                if (owner instanceof Fayde.FrameworkElement)\n                    converted.TooltipParent = owner;\n            };\n            ToolTipServiceSlave.prototype.UnregisterTooltip = function (owner) {\n                console.assert(owner != null, \"owner element is required\");\n                var tooltip = owner.GetValue(AssignedToolTipProperty);\n                if (!tooltip || !(tooltip instanceof Controls.ToolTip))\n                    return;\n                owner.MouseEnter.off(this.OnOwnerMouseEnter, this);\n                owner.MouseLeave.off(this.OnOwnerMouseLeave, this);\n                owner.MouseLeftButtonDown.off(this.OnOwnerMouseLeftButtonDown, this);\n                owner.KeyDown.off(this.OnOwnerKeyDown, this);\n                tooltip.TooltipParent = null;\n                if (tooltip.IsOpen) {\n                    if (tooltip === this._CurrentTooltip) {\n                        window.clearInterval(this._CloseInterval);\n                        this._CurrentTooltip = null;\n                        this._Owner = null;\n                        this._LastEnterSource = null;\n                    }\n                    tooltip.IsOpen = false;\n                }\n                owner.ClearValue(AssignedToolTipProperty);\n            };\n            ToolTipServiceSlave.prototype.OnOwnerMouseEnter = function (sender, e) {\n                this.MousePosition = e.GetPosition(null);\n                this.OnOwnerMouseEnterInternal(sender, e.OriginalSource);\n            };\n            ToolTipServiceSlave.prototype.OnOwnerMouseLeave = function (sender, e) {\n                if (!this._CurrentTooltip) {\n                    window.clearInterval(this._OpenInterval);\n                    this._Owner = null;\n                    this._LastEnterSource = null;\n                    return;\n                }\n                this.CloseAutomaticToolTip();\n            };\n            ToolTipServiceSlave.prototype.OnOwnerMouseLeftButtonDown = function (sender, e) {\n                if (this._LastEnterSource && this._LastEnterSource === e.OriginalSource)\n                    return;\n                if (this._Owner !== sender)\n                    return;\n                if (!this._CurrentTooltip) {\n                    window.clearInterval(this._OpenInterval);\n                    this._Owner = null;\n                    this._LastEnterSource = null;\n                    return;\n                }\n                this.CloseAutomaticToolTip();\n            };\n            ToolTipServiceSlave.prototype.OnOwnerKeyDown = function (sender, e) {\n                if (this._LastEnterSource && this._LastEnterSource === e.OriginalSource)\n                    return;\n                if (this._Owner !== sender)\n                    return;\n                if (!this._CurrentTooltip) {\n                    window.clearInterval(this._OpenInterval);\n                    this._Owner = null;\n                    this._LastEnterSource = null;\n                    return;\n                }\n                if (isSpecialKey(e.Key))\n                    return;\n                this.CloseAutomaticToolTip();\n            };\n            ToolTipServiceSlave.prototype.OnOwnerMouseEnterInternal = function (sender, source) {\n                var _this = this;\n                if (this._LastEnterSource && this._LastEnterSource === source)\n                    return;\n                if (this._CurrentTooltip) {\n                    if (sender.GetValue(AssignedToolTipProperty) === this._CurrentTooltip)\n                        return;\n                    this.CloseAutomaticToolTip();\n                }\n                this._Owner = sender;\n                this._LastEnterSource = source;\n                console.assert(!this._CurrentTooltip);\n                this.SetRootVisual(sender);\n                var sinceLastOpen = new Date().getTime() - this._LastOpened;\n                if (sinceLastOpen <= betweenShowDelay) {\n                    this.OpenAutomaticToolTip();\n                }\n                else {\n                    this._OpenInterval = window.setInterval(function () { return _this.OpenAutomaticToolTip(); }, initialShowDelay);\n                }\n            };\n            ToolTipServiceSlave.prototype.ConvertToToolTip = function (o) {\n                if (o instanceof Controls.ToolTip)\n                    return o;\n                if (o instanceof Fayde.FrameworkElement) {\n                    var parent = o.Parent;\n                    if (parent instanceof Controls.ToolTip)\n                        return parent;\n                }\n                var tooltip = new Controls.ToolTip();\n                tooltip.Content = o;\n                return tooltip;\n            };\n            ToolTipServiceSlave.prototype.OpenAutomaticToolTip = function () {\n                var _this = this;\n                window.clearInterval(this._OpenInterval);\n                console.assert(this._Owner != null, \"ToolTip owner was not set prior to starting the open timer\");\n                var cur = this._CurrentTooltip = this._Owner.GetValue(AssignedToolTipProperty);\n                if (cur != null) {\n                    cur.PlacementOverride = ToolTipService.GetPlacement(this._Owner);\n                    cur.PlacementTargetOverride = ToolTipService.GetPlacementTarget(this._Owner) || this._Owner;\n                    cur.IsOpen = true;\n                    this._CloseInterval = window.setInterval(function () { return _this.CloseAutomaticToolTip(); }, showDuration);\n                }\n            };\n            ToolTipServiceSlave.prototype.CloseAutomaticToolTip = function () {\n                window.clearInterval(this._CloseInterval);\n                var cur = this._CurrentTooltip;\n                cur.PlacementOverride = null;\n                cur.PlacementTargetOverride = null;\n                cur.IsOpen = false;\n                this._CurrentTooltip = null;\n                this._Owner = null;\n                this._LastEnterSource = null;\n                this._LastOpened = new Date().getTime();\n            };\n            return ToolTipServiceSlave;\n        })();\n        var slave = new ToolTipServiceSlave();\n        var specialKeys = [\n            Fayde.Input.Key.Alt,\n            Fayde.Input.Key.Back,\n            Fayde.Input.Key.Delete,\n            Fayde.Input.Key.Down,\n            Fayde.Input.Key.End,\n            Fayde.Input.Key.Home,\n            Fayde.Input.Key.Insert,\n            Fayde.Input.Key.Left,\n            Fayde.Input.Key.PageDown,\n            Fayde.Input.Key.PageUp,\n            Fayde.Input.Key.Right,\n            Fayde.Input.Key.Space,\n            Fayde.Input.Key.Up\n        ];\n        function isSpecialKey(key) {\n            return specialKeys.indexOf(key) > -1;\n        }\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Panel.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        (function (VirtualizationMode) {\n            VirtualizationMode[VirtualizationMode[\"Standard\"] = 0] = \"Standard\";\n            VirtualizationMode[VirtualizationMode[\"Recycling\"] = 1] = \"Recycling\";\n        })(Controls.VirtualizationMode || (Controls.VirtualizationMode = {}));\n        var VirtualizationMode = Controls.VirtualizationMode;\n        Fayde.CoreLibrary.addEnum(VirtualizationMode, \"VirtualizationMode\");\n        var VirtualizingPanel = (function (_super) {\n            __extends(VirtualizingPanel, _super);\n            function VirtualizingPanel() {\n                _super.apply(this, arguments);\n            }\n            VirtualizingPanel.GetVirtualizationMode = function (d) { return d.GetValue(VirtualizingPanel.VirtualizationModeProperty); };\n            VirtualizingPanel.SetVirtualizationMode = function (d, value) { d.SetValue(VirtualizingPanel.VirtualizationModeProperty, value); };\n            VirtualizingPanel.GetIsVirtualizing = function (d) { return d.GetValue(VirtualizingPanel.IsVirtualizingProperty); };\n            VirtualizingPanel.SetIsVirtualizing = function (d, value) { d.SetValue(VirtualizingPanel.IsVirtualizingProperty, value); };\n            Object.defineProperty(VirtualizingPanel.prototype, \"ItemsControl\", {\n                get: function () {\n                    var presenter = Controls.ItemsPresenter.Get(this);\n                    return presenter ? presenter.ItemsControl : null;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            VirtualizingPanel.prototype.OnItemsAdded = function (index, newItems) {\n                this.XamlNode.LayoutUpdater.invalidateMeasure();\n            };\n            VirtualizingPanel.prototype.OnItemsRemoved = function (index, oldItems) {\n                this.XamlNode.LayoutUpdater.invalidateMeasure();\n            };\n            VirtualizingPanel.VirtualizationModeProperty = DependencyProperty.RegisterAttached(\"VirtualizationMode\", function () { return new Fayde.Enum(VirtualizationMode); }, VirtualizingPanel, VirtualizationMode.Recycling);\n            VirtualizingPanel.IsVirtualizingProperty = DependencyProperty.RegisterAttached(\"IsVirtualizing\", function () { return Boolean; }, VirtualizingPanel, false);\n            return VirtualizingPanel;\n        })(Controls.Panel);\n        Controls.VirtualizingPanel = VirtualizingPanel;\n        Fayde.CoreLibrary.add(VirtualizingPanel);\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"VirtualizingPanel.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var LineDelta = 14.7;\n        var Wheelitude = 3;\n        var VirtualizingStackPanelUpdater = minerva.controls.virtualizingstackpanel.VirtualizingStackPanelUpdater;\n        var VirtualizingStackPanel = (function (_super) {\n            __extends(VirtualizingStackPanel, _super);\n            function VirtualizingStackPanel() {\n                _super.apply(this, arguments);\n            }\n            VirtualizingStackPanel.prototype.CreateLayoutUpdater = function () {\n                var updater = new VirtualizingStackPanelUpdater();\n                updater.assets.scrollData = this._ScrollData = new Controls.Primitives.ScrollData();\n                updater.tree.containerOwner = new Controls.Internal.VirtualizingPanelContainerOwner(this);\n                return updater;\n            };\n            Object.defineProperty(VirtualizingStackPanel.prototype, \"ScrollOwner\", {\n                get: function () {\n                    return this._ScrollData.scrollOwner;\n                },\n                set: function (value) {\n                    this._ScrollData.scrollOwner = value;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(VirtualizingStackPanel.prototype, \"CanHorizontallyScroll\", {\n                get: function () {\n                    return this._ScrollData.canHorizontallyScroll;\n                    ;\n                },\n                set: function (value) {\n                    var sd = this._ScrollData;\n                    if (sd.canHorizontallyScroll !== value) {\n                        sd.canHorizontallyScroll = value;\n                        this.XamlNode.LayoutUpdater.invalidateMeasure();\n                    }\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(VirtualizingStackPanel.prototype, \"CanVerticallyScroll\", {\n                get: function () {\n                    return this._ScrollData.canVerticallyScroll;\n                },\n                set: function (value) {\n                    var sd = this._ScrollData;\n                    if (sd.canVerticallyScroll !== value) {\n                        sd.canVerticallyScroll = value;\n                        this.XamlNode.LayoutUpdater.invalidateMeasure();\n                    }\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(VirtualizingStackPanel.prototype, \"ExtentWidth\", {\n                get: function () {\n                    return this._ScrollData.extentWidth;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(VirtualizingStackPanel.prototype, \"ExtentHeight\", {\n                get: function () {\n                    return this._ScrollData.extentHeight;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(VirtualizingStackPanel.prototype, \"ViewportWidth\", {\n                get: function () {\n                    return this._ScrollData.viewportWidth;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(VirtualizingStackPanel.prototype, \"ViewportHeight\", {\n                get: function () {\n                    return this._ScrollData.viewportHeight;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(VirtualizingStackPanel.prototype, \"HorizontalOffset\", {\n                get: function () {\n                    return this._ScrollData.offsetX;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(VirtualizingStackPanel.prototype, \"VerticalOffset\", {\n                get: function () {\n                    return this._ScrollData.offsetY;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            VirtualizingStackPanel.prototype.LineUp = function () {\n                var sd = this._ScrollData;\n                if (this.Orientation === Fayde.Orientation.Horizontal)\n                    return this.SetVerticalOffset(sd.offsetY - LineDelta);\n                return this.SetVerticalOffset(sd.offsetY - 1);\n            };\n            VirtualizingStackPanel.prototype.LineDown = function () {\n                var sd = this._ScrollData;\n                if (this.Orientation === Fayde.Orientation.Horizontal)\n                    return this.SetVerticalOffset(sd.offsetY + LineDelta);\n                return this.SetVerticalOffset(sd.offsetY + 1);\n            };\n            VirtualizingStackPanel.prototype.LineLeft = function () {\n                var sd = this._ScrollData;\n                if (this.Orientation === Fayde.Orientation.Vertical)\n                    return this.SetHorizontalOffset(sd.offsetX - LineDelta);\n                return this.SetHorizontalOffset(sd.offsetX - 1);\n            };\n            VirtualizingStackPanel.prototype.LineRight = function () {\n                var sd = this._ScrollData;\n                if (this.Orientation === Fayde.Orientation.Vertical)\n                    return this.SetHorizontalOffset(sd.offsetX + LineDelta);\n                return this.SetHorizontalOffset(sd.offsetX + 1);\n            };\n            VirtualizingStackPanel.prototype.MouseWheelUp = function () {\n                var sd = this._ScrollData;\n                if (this.Orientation === Fayde.Orientation.Horizontal)\n                    return this.SetVerticalOffset(sd.offsetY - LineDelta * Wheelitude);\n                return this.SetVerticalOffset(sd.offsetY - Wheelitude);\n            };\n            VirtualizingStackPanel.prototype.MouseWheelDown = function () {\n                var sd = this._ScrollData;\n                if (this.Orientation === Fayde.Orientation.Horizontal)\n                    return this.SetVerticalOffset(sd.offsetY + LineDelta * Wheelitude);\n                return this.SetVerticalOffset(sd.offsetY + Wheelitude);\n            };\n            VirtualizingStackPanel.prototype.MouseWheelLeft = function () {\n                var sd = this._ScrollData;\n                if (this.Orientation === Fayde.Orientation.Vertical)\n                    return this.SetHorizontalOffset(sd.offsetX - LineDelta * Wheelitude);\n                return this.SetHorizontalOffset(sd.offsetX - Wheelitude);\n            };\n            VirtualizingStackPanel.prototype.MouseWheelRight = function () {\n                var sd = this._ScrollData;\n                if (this.Orientation === Fayde.Orientation.Vertical)\n                    return this.SetHorizontalOffset(sd.offsetX + LineDelta * Wheelitude);\n                return this.SetHorizontalOffset(sd.offsetX + Wheelitude);\n            };\n            VirtualizingStackPanel.prototype.PageUp = function () {\n                var sd = this._ScrollData;\n                return this.SetVerticalOffset(sd.offsetY - sd.viewportHeight);\n            };\n            VirtualizingStackPanel.prototype.PageDown = function () {\n                var sd = this._ScrollData;\n                return this.SetVerticalOffset(sd.offsetY + sd.viewportHeight);\n            };\n            VirtualizingStackPanel.prototype.PageLeft = function () {\n                var sd = this._ScrollData;\n                return this.SetHorizontalOffset(sd.offsetX - sd.viewportWidth);\n            };\n            VirtualizingStackPanel.prototype.PageRight = function () {\n                var sd = this._ScrollData;\n                return this.SetHorizontalOffset(sd.offsetX + sd.viewportWidth);\n            };\n            VirtualizingStackPanel.prototype.MakeVisible = function (uie, rectangle) {\n                var exposed = new minerva.Rect();\n                var sd = this._ScrollData;\n                var uin = uie.XamlNode;\n                var isVertical = this.Orientation === Fayde.Orientation.Vertical;\n                var enumerator = this.Children.getEnumerator();\n                while (enumerator.moveNext()) {\n                    var child = enumerator.current;\n                    var childNode = child.XamlNode;\n                    var childRenderSize = childNode.LayoutUpdater.assets.renderSize;\n                    if (uin === childNode) {\n                        if (isVertical) {\n                            if (rectangle.x !== sd.offsetX)\n                                this.SetHorizontalOffset(rectangle.x);\n                            exposed.width = Math.min(childRenderSize.width, sd.viewportWidth);\n                            exposed.height = childRenderSize.height;\n                            exposed.x = sd.offsetX;\n                        }\n                        else {\n                            if (rectangle.y !== sd.offsetY)\n                                this.SetVerticalOffset(rectangle.y);\n                            exposed.height = Math.min(childRenderSize.height, sd.viewportHeight);\n                            exposed.width = childRenderSize.width;\n                            exposed.y = sd.offsetY;\n                        }\n                        return exposed;\n                    }\n                    if (isVertical)\n                        exposed.y += childRenderSize.height;\n                    else\n                        exposed.x += childRenderSize.width;\n                }\n                throw new ArgumentException(\"Visual is not a child of this Panel\");\n            };\n            VirtualizingStackPanel.prototype.SetHorizontalOffset = function (offset) {\n                var sd = this._ScrollData;\n                if (offset < 0 || sd.viewportWidth >= sd.extentWidth)\n                    offset = 0;\n                else if ((offset + sd.viewportWidth) >= sd.extentWidth)\n                    offset = sd.extentWidth - sd.viewportWidth;\n                if (sd.offsetX === offset)\n                    return false;\n                sd.offsetX = offset;\n                if (this.Orientation === Fayde.Orientation.Horizontal)\n                    this.XamlNode.LayoutUpdater.invalidateMeasure();\n                else\n                    this.XamlNode.LayoutUpdater.invalidateArrange();\n                var scrollOwner = this.ScrollOwner;\n                if (scrollOwner)\n                    scrollOwner.InvalidateScrollInfo();\n                return true;\n            };\n            VirtualizingStackPanel.prototype.SetVerticalOffset = function (offset) {\n                var sd = this._ScrollData;\n                if (offset < 0 || sd.viewportHeight >= sd.extentHeight)\n                    offset = 0;\n                else if ((offset + sd.viewportHeight) >= sd.extentHeight)\n                    offset = sd.extentHeight - sd.viewportHeight;\n                if (sd.offsetY === offset)\n                    return false;\n                sd.offsetY = offset;\n                if (this.Orientation === Fayde.Orientation.Vertical)\n                    this.XamlNode.LayoutUpdater.invalidateMeasure();\n                else\n                    this.XamlNode.LayoutUpdater.invalidateArrange();\n                var scrollOwner = this.ScrollOwner;\n                if (scrollOwner)\n                    scrollOwner.InvalidateScrollInfo();\n                return true;\n            };\n            VirtualizingStackPanel.prototype.OnItemsAdded = function (index, newItems) {\n                _super.prototype.OnItemsAdded.call(this, index, newItems);\n                var isHorizontal = this.Orientation === Fayde.Orientation.Horizontal;\n                var offset = isHorizontal ? this.HorizontalOffset : this.VerticalOffset;\n                if (index <= offset)\n                    isHorizontal ? this.SetHorizontalOffset(offset + newItems.length) : this.SetVerticalOffset(offset + newItems.length);\n                var scrollOwner = this.ScrollOwner;\n                if (scrollOwner)\n                    scrollOwner.InvalidateScrollInfo();\n            };\n            VirtualizingStackPanel.prototype.OnItemsRemoved = function (index, oldItems) {\n                _super.prototype.OnItemsRemoved.call(this, index, oldItems);\n                var ic = this.ItemsControl;\n                if (ic) {\n                    var icm = ic.ItemContainersManager;\n                    var children = this.Children;\n                    for (var i = 0, len = oldItems.length; i < len; i++) {\n                        var oldItem = oldItems[i];\n                        var container = icm.ContainerFromItem(oldItem);\n                        if (container)\n                            children.Remove(container);\n                    }\n                }\n                var isHorizontal = this.Orientation === Fayde.Orientation.Horizontal;\n                var offset = isHorizontal ? this.HorizontalOffset : this.VerticalOffset;\n                var numBeforeOffset = Math.min(offset, index + oldItems.length) - index;\n                if (numBeforeOffset > 0)\n                    isHorizontal ? this.SetHorizontalOffset(numBeforeOffset) : this.SetVerticalOffset(numBeforeOffset);\n                var scrollOwner = this.ScrollOwner;\n                if (scrollOwner)\n                    scrollOwner.InvalidateScrollInfo();\n            };\n            VirtualizingStackPanel.OrientationProperty = DependencyProperty.Register(\"Orientation\", function () { return new Fayde.Enum(Fayde.Orientation); }, VirtualizingStackPanel, Fayde.Orientation.Vertical);\n            return VirtualizingStackPanel;\n        })(Controls.VirtualizingPanel);\n        Controls.VirtualizingStackPanel = VirtualizingStackPanel;\n        Fayde.CoreLibrary.add(VirtualizingStackPanel);\n        nullstone.addTypeInterfaces(VirtualizingStackPanel, Controls.Primitives.IScrollInfo_);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(VirtualizingStackPanel.OrientationProperty, function (upd, ov, nv) { return upd.invalidateMeasure(); }, false);\n        })(reactions || (reactions = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    function Clone(value) {\n        if (value === undefined)\n            return undefined;\n        if (value === null)\n            return null;\n        if (value instanceof Array)\n            return value.slice(0);\n        if (value !== Object(value))\n            return value;\n        if (value.Clone instanceof Function)\n            return value.Clone();\n        return extend(new value.constructor(), value);\n    }\n    Fayde.Clone = Clone;\n    function extend(obj) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        var s;\n        for (var i = 0, len = args.length; i < len; i++) {\n            if (s = args[i]) {\n                for (var prop in s) {\n                    obj[prop] = s[prop];\n                }\n            }\n        }\n        return obj;\n    }\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Markup/Loader\" />\nvar Fayde;\n(function (Fayde) {\n    var DataTemplate = (function (_super) {\n        __extends(DataTemplate, _super);\n        function DataTemplate() {\n            _super.apply(this, arguments);\n        }\n        DataTemplate.DataTypeProperty = DependencyProperty.Register(\"DataType\", function () { return Fayde.IType_; }, DataTemplate);\n        return DataTemplate;\n    })(Fayde.Markup.FrameworkTemplate);\n    Fayde.DataTemplate = DataTemplate;\n    Fayde.CoreLibrary.add(DataTemplate);\n})(Fayde || (Fayde = {}));\nvar DependencyPropertyChangedEventArgs = (function () {\n    function DependencyPropertyChangedEventArgs() {\n    }\n    return DependencyPropertyChangedEventArgs;\n})();\n/// <reference path=\"DataTemplate.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var HierarchicalDataTemplate = (function (_super) {\n        __extends(HierarchicalDataTemplate, _super);\n        function HierarchicalDataTemplate() {\n            _super.apply(this, arguments);\n        }\n        HierarchicalDataTemplate.ItemsSourceProperty = DependencyProperty.Register(\"ItemsSource\", function () { return nullstone.IEnumerable_; }, HierarchicalDataTemplate);\n        HierarchicalDataTemplate.ItemTemplateProperty = DependencyProperty.Register(\"ItemTemplate\", function () { return Fayde.DataTemplate; }, HierarchicalDataTemplate);\n        HierarchicalDataTemplate.ItemContainerStyleProperty = DependencyProperty.Register(\"ItemContainerStyle\", function () { return Fayde.Style; }, HierarchicalDataTemplate);\n        return HierarchicalDataTemplate;\n    })(Fayde.DataTemplate);\n    Fayde.HierarchicalDataTemplate = HierarchicalDataTemplate;\n    Fayde.CoreLibrary.add(HierarchicalDataTemplate);\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var LayoutInformation = (function () {\n        function LayoutInformation() {\n        }\n        LayoutInformation.GetLayoutClip = function (uie) {\n            var rect = new minerva.Rect();\n            minerva.Rect.copyTo(uie.XamlNode.LayoutUpdater.assets.layoutClip, rect);\n            var geom = new Fayde.Media.RectangleGeometry();\n            geom.Rect = rect;\n            return geom;\n        };\n        LayoutInformation.GetLayoutSlot = function (uie) {\n            var rect = new minerva.Rect();\n            minerva.Rect.copyTo(uie.XamlNode.LayoutUpdater.assets.layoutSlot, rect);\n            return rect;\n        };\n        return LayoutInformation;\n    })();\n    Fayde.LayoutInformation = LayoutInformation;\n    Fayde.CoreLibrary.add(LayoutInformation);\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var NameScope = (function () {\n        function NameScope(isRoot) {\n            this.IsRoot = false;\n            this.XNodes = {};\n            if (isRoot)\n                this.IsRoot = isRoot;\n        }\n        NameScope.prototype.FindName = function (name) {\n            return this.XNodes[name];\n        };\n        NameScope.prototype.RegisterName = function (name, xnode) {\n            var existing = this.XNodes[name];\n            if (existing && existing !== xnode)\n                throw new InvalidOperationException(\"Name is already registered.\");\n            this.XNodes[name] = xnode;\n        };\n        NameScope.prototype.UnregisterName = function (name) {\n            this.XNodes[name] = undefined;\n        };\n        NameScope.prototype.Absorb = function (otherNs) {\n            var on = otherNs.XNodes;\n            for (var name in on) {\n                this.RegisterName(name, on[name]);\n            }\n        };\n        return NameScope;\n    })();\n    Fayde.NameScope = NameScope;\n})(Fayde || (Fayde = {}));\n/// <reference path=\"DependencyObject.ts\" />\n/// <reference path=\"XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var ResourceDictionaryCollection = (function (_super) {\n        __extends(ResourceDictionaryCollection, _super);\n        function ResourceDictionaryCollection() {\n            _super.apply(this, arguments);\n        }\n        ResourceDictionaryCollection.prototype.Get = function (key) {\n            for (var en = this.getEnumerator(); en.moveNext();) {\n                var cur = en.current.Get(key);\n                if (cur !== undefined)\n                    return cur;\n            }\n            return undefined;\n        };\n        ResourceDictionaryCollection.prototype.AddingToCollection = function (value, error) {\n            if (!_super.prototype.AddingToCollection.call(this, value, error))\n                return false;\n            return this._AssertNoCycles(value, value.XamlNode.ParentNode, error);\n        };\n        ResourceDictionaryCollection.prototype._AssertNoCycles = function (subtreeRoot, firstAncestorNode, error) {\n            var curNode = firstAncestorNode;\n            while (curNode) {\n                var rd = curNode.XObject;\n                if (rd instanceof ResourceDictionary) {\n                    var cycleFound = false;\n                    if (rd === subtreeRoot)\n                        cycleFound = true;\n                    else if (rd.Source && nullstone.equals(rd.Source, subtreeRoot.Source))\n                        cycleFound = true;\n                    if (cycleFound) {\n                        error.Message = \"Cycle found in resource dictionaries.\";\n                        error.Number = BError.InvalidOperation;\n                        return false;\n                    }\n                }\n                curNode = curNode.ParentNode;\n            }\n            for (var en = subtreeRoot.MergedDictionaries.getEnumerator(); en.moveNext();) {\n                if (!this._AssertNoCycles(en.current, firstAncestorNode, error))\n                    return false;\n            }\n            return true;\n        };\n        return ResourceDictionaryCollection;\n    })(Fayde.XamlObjectCollection);\n    Fayde.ResourceDictionaryCollection = ResourceDictionaryCollection;\n    Fayde.CoreLibrary.add(ResourceDictionaryCollection);\n    var ResourceDictionary = (function (_super) {\n        __extends(ResourceDictionary, _super);\n        function ResourceDictionary() {\n            _super.apply(this, arguments);\n            this._Keys = [];\n            this._Values = [];\n            this._IsSourceLoaded = false;\n            this._SourceBacking = null;\n        }\n        Object.defineProperty(ResourceDictionary.prototype, \"MergedDictionaries\", {\n            get: function () {\n                var md = this._MergedDictionaries;\n                if (!md) {\n                    md = this._MergedDictionaries = new ResourceDictionaryCollection();\n                    md.AttachTo(this);\n                }\n                return md;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(ResourceDictionary.prototype, \"Count\", {\n            get: function () {\n                return this._Values.length;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        ResourceDictionary.prototype.AttachTo = function (xobj) {\n            var error = new BError();\n            if (!this.XamlNode.AttachTo(xobj.XamlNode, error))\n                error.ThrowException();\n        };\n        ResourceDictionary.prototype.Contains = function (key) {\n            return this._Keys.indexOf(key) > -1;\n        };\n        ResourceDictionary.prototype.Get = function (key) {\n            if (!!this.Source) {\n                return this._GetFromSource(key);\n            }\n            var index = this._Keys.indexOf(key);\n            if (index > -1)\n                return this._Values[index];\n            var md = this._MergedDictionaries;\n            if (md)\n                return md.Get(key);\n            return undefined;\n        };\n        ResourceDictionary.prototype.Set = function (key, value) {\n            if (key === undefined)\n                return false;\n            if (value === undefined)\n                return this.Remove(key);\n            var index = this._Keys.indexOf(key);\n            var error = new BError();\n            if (value instanceof Fayde.XamlObject && !value.XamlNode.AttachTo(this.XamlNode, error)) {\n                if (error.Message)\n                    throw new Exception(error.Message);\n                return false;\n            }\n            if (index < 0) {\n                this._Keys.push(key);\n                this._Values.push(value);\n            }\n            else {\n                var oldValue = this._Values[index];\n                this._Keys[index] = key;\n                this._Values[index] = value;\n                if (oldValue instanceof Fayde.XamlObject)\n                    oldValue.XamlNode.Detach();\n            }\n            return true;\n        };\n        ResourceDictionary.prototype.Remove = function (key) {\n            var index = this._Keys.indexOf(key);\n            if (index < 0)\n                return false;\n            this._Keys.splice(index, 1);\n            var oldvalue = this._Values.splice(index, 1)[0];\n            if (oldvalue instanceof Fayde.XamlObject)\n                oldvalue.XamlNode.Detach();\n        };\n        ResourceDictionary.prototype.getEnumerator = function (reverse) {\n            return nullstone.IEnumerator_.fromArray(this._Values, reverse);\n        };\n        ResourceDictionary.prototype.GetNodeEnumerator = function (reverse) {\n            var prev = this.getEnumerator(reverse);\n            return {\n                current: undefined,\n                moveNext: function () {\n                    if (prev.moveNext()) {\n                        this.current = undefined;\n                        return false;\n                    }\n                    var xobj = prev.current;\n                    this.current = xobj.XamlNode;\n                    return true;\n                }\n            };\n        };\n        ResourceDictionary.prototype._GetFromSource = function (key) {\n            if (!this._IsSourceLoaded) {\n                this._SourceBacking = Fayde.Markup.Load(this.App, nullstone.markup.xaml.XamlMarkup.create(this.Source));\n                this._IsSourceLoaded = true;\n            }\n            return this._SourceBacking.Get(key);\n        };\n        return ResourceDictionary;\n    })(Fayde.XamlObject);\n    Fayde.ResourceDictionary = ResourceDictionary;\n    Fayde.CoreLibrary.add(ResourceDictionary);\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var RoutedEvent = (function (_super) {\n        __extends(RoutedEvent, _super);\n        function RoutedEvent() {\n            _super.apply(this, arguments);\n        }\n        return RoutedEvent;\n    })(nullstone.Event);\n    Fayde.RoutedEvent = RoutedEvent;\n    Fayde.CoreLibrary.add(RoutedEvent);\n})(Fayde || (Fayde = {}));\n/// <reference path=\"RoutedEvent.ts\" />\n/// <reference path=\"RoutedEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var RoutedPropertyChangedEvent = (function (_super) {\n        __extends(RoutedPropertyChangedEvent, _super);\n        function RoutedPropertyChangedEvent() {\n            _super.apply(this, arguments);\n        }\n        return RoutedPropertyChangedEvent;\n    })(Fayde.RoutedEvent);\n    Fayde.RoutedPropertyChangedEvent = RoutedPropertyChangedEvent;\n    Fayde.CoreLibrary.add(RoutedPropertyChangedEvent);\n    var RoutedPropertyChangedEventArgs = (function (_super) {\n        __extends(RoutedPropertyChangedEventArgs, _super);\n        function RoutedPropertyChangedEventArgs(oldValue, newValue) {\n            _super.call(this);\n            Object.defineProperty(this, \"OldValue\", { value: oldValue, writable: false });\n            Object.defineProperty(this, \"NewValue\", { value: newValue, writable: false });\n        }\n        return RoutedPropertyChangedEventArgs;\n    })(Fayde.RoutedEventArgs);\n    Fayde.RoutedPropertyChangedEventArgs = RoutedPropertyChangedEventArgs;\n    Fayde.CoreLibrary.add(RoutedPropertyChangedEventArgs);\n})(Fayde || (Fayde = {}));\n/// <reference path=\"RoutedEvent.ts\" />\n/// <reference path=\"RoutedEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var RoutedPropertyChangingEvent = (function (_super) {\n        __extends(RoutedPropertyChangingEvent, _super);\n        function RoutedPropertyChangingEvent() {\n            _super.apply(this, arguments);\n        }\n        return RoutedPropertyChangingEvent;\n    })(Fayde.RoutedEvent);\n    Fayde.RoutedPropertyChangingEvent = RoutedPropertyChangingEvent;\n    Fayde.CoreLibrary.add(RoutedPropertyChangingEvent);\n    var RoutedPropertyChangingEventArgs = (function (_super) {\n        __extends(RoutedPropertyChangingEventArgs, _super);\n        function RoutedPropertyChangingEventArgs(propd, oldValue, newValue, isCancelable) {\n            _super.call(this);\n            this._Cancel = false;\n            this.InCoercion = false;\n            this.Property = propd;\n            this.OldValue = oldValue;\n            this.NewValue = newValue;\n            this._IsCancelable = isCancelable;\n        }\n        Object.defineProperty(RoutedPropertyChangingEventArgs.prototype, \"IsCancellable\", {\n            get: function () { return this._IsCancelable; },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(RoutedPropertyChangingEventArgs.prototype, \"Cancel\", {\n            get: function () { return this._Cancel; },\n            set: function (value) {\n                if (this._IsCancelable)\n                    this._Cancel = value;\n                else if (value)\n                    throw new InvalidOperationException(\"Not cancelable.\");\n            },\n            enumerable: true,\n            configurable: true\n        });\n        return RoutedPropertyChangingEventArgs;\n    })(Fayde.RoutedEventArgs);\n    Fayde.RoutedPropertyChangingEventArgs = RoutedPropertyChangingEventArgs;\n    Fayde.CoreLibrary.add(RoutedPropertyChangingEventArgs);\n})(Fayde || (Fayde = {}));\n/// <reference path=\"DependencyObject.ts\" />\n/// <reference path=\"XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var SetterCollection = (function (_super) {\n        __extends(SetterCollection, _super);\n        function SetterCollection() {\n            _super.apply(this, arguments);\n            this._IsSealed = false;\n        }\n        SetterCollection.prototype.Seal = function () {\n            if (this._IsSealed)\n                return;\n            for (var en = this.getEnumerator(); en.moveNext();) {\n                en.current.Seal();\n            }\n            this._IsSealed = true;\n        };\n        SetterCollection.prototype.AddingToCollection = function (value, error) {\n            if (!value || !this._ValidateSetter(value, error))\n                return false;\n            return _super.prototype.AddingToCollection.call(this, value, error);\n        };\n        SetterCollection.prototype._ValidateSetter = function (setter, error) {\n            if (!(setter.Property instanceof DependencyProperty)) {\n                error.Message = \"Setter.Property must be a DependencyProperty.\";\n                return false;\n            }\n            if (setter.Value === undefined) {\n                if (!setter._HasDeferredValueExpression(Setter.ValueProperty)) {\n                    error.Message = \"Setter must have a Value.\";\n                    return false;\n                }\n            }\n            if (this._IsSealed) {\n                error.Message = \"Setter is sealed.\";\n                return false;\n            }\n            return true;\n        };\n        return SetterCollection;\n    })(Fayde.XamlObjectCollection);\n    Fayde.SetterCollection = SetterCollection;\n    Fayde.CoreLibrary.add(SetterCollection);\n    var Setter = (function (_super) {\n        __extends(Setter, _super);\n        function Setter() {\n            _super.apply(this, arguments);\n            this._IsSealed = false;\n        }\n        Setter.prototype.Seal = function () {\n            var propd = this.Property;\n            var val = this.Value;\n            var propTargetType = propd.GetTargetType();\n            this.SetCurrentValue(Setter.ConvertedValueProperty, nullstone.convertAnyToType(val, propTargetType));\n            this._IsSealed = true;\n        };\n        Setter.Compare = function (setter1, setter2) {\n            var a = setter1.Property;\n            var b = setter2.Property;\n            return (a === b) ? 0 : ((a._ID > b._ID) ? 1 : -1);\n        };\n        Setter.PropertyProperty = DependencyProperty.Register(\"Property\", function () { return DependencyProperty; }, Setter);\n        Setter.ValueProperty = DependencyProperty.Register(\"Value\", function () { return Object; }, Setter);\n        Setter.ConvertedValueProperty = DependencyProperty.RegisterReadOnly(\"ConvertedValue\", function () { return Object; }, Setter);\n        return Setter;\n    })(Fayde.DependencyObject);\n    Fayde.Setter = Setter;\n    Fayde.CoreLibrary.add(Setter);\n})(Fayde || (Fayde = {}));\n/// <reference path=\"RoutedEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var SizeChangedEventArgs = (function (_super) {\n        __extends(SizeChangedEventArgs, _super);\n        function SizeChangedEventArgs(previousSize, newSize) {\n            _super.call(this);\n            Object.defineProperty(this, \"PreviousSize\", { value: new minerva.Size(), writable: false });\n            Object.defineProperty(this, \"NewSize\", { value: new minerva.Size(), writable: false });\n            minerva.Size.copyTo(previousSize, this.PreviousSize);\n            minerva.Size.copyTo(newSize, this.NewSize);\n        }\n        return SizeChangedEventArgs;\n    })(Fayde.RoutedEventArgs);\n    Fayde.SizeChangedEventArgs = SizeChangedEventArgs;\n    Fayde.CoreLibrary.add(SizeChangedEventArgs);\n})(Fayde || (Fayde = {}));\n/// <reference path=\"DependencyObject\" />\n/// <reference path=\"../Markup/ContentAnnotation\" />\nvar Fayde;\n(function (Fayde) {\n    var Style = (function (_super) {\n        __extends(Style, _super);\n        function Style() {\n            _super.call(this);\n            this._IsSealed = false;\n            var coll = Style.SettersProperty.Initialize(this);\n            coll.AttachTo(this);\n        }\n        Style.prototype.Seal = function () {\n            if (this._IsSealed)\n                return;\n            this.Setters.Seal();\n            this._IsSealed = true;\n            var base = this.BasedOn;\n            if (base)\n                base.Seal();\n        };\n        Style.prototype.Validate = function (instance, error) {\n            var targetType = this.TargetType;\n            var parentType = instance.constructor;\n            if (this._IsSealed) {\n                if (!(instance instanceof targetType)) {\n                    error.Number = BError.XamlParse;\n                    error.Message = \"Style.TargetType (\" + targetType.name + \") is not a subclass of (\" + parentType.name + \")\";\n                    return false;\n                }\n                return true;\n            }\n            var cycles = [];\n            var root = this;\n            while (root) {\n                if (cycles.indexOf(root) > -1) {\n                    error.Number = BError.InvalidOperation;\n                    error.Message = \"Circular reference in Style.BasedOn\";\n                    return false;\n                }\n                cycles.push(root);\n                root = root.BasedOn;\n            }\n            cycles = null;\n            root = this;\n            var targetType;\n            while (root) {\n                targetType = root.TargetType;\n                if (root === this) {\n                    if (!targetType) {\n                        error.Number = BError.InvalidOperation;\n                        error.Message = \"TargetType cannot be null\";\n                        return false;\n                    }\n                    else if (!nullstone.doesInheritFrom(parentType, targetType)) {\n                        error.Number = BError.XamlParse;\n                        error.Message = \"Style.TargetType (\" + targetType.name + \") is not a subclass of (\" + parentType.name + \")\";\n                        return false;\n                    }\n                }\n                else if (!targetType || !nullstone.doesInheritFrom(parentType, targetType)) {\n                    error.Number = BError.InvalidOperation;\n                    error.Message = \"Style.TargetType (\" + (targetType ? targetType.name : \"<Not Specified>\") + \") is not a subclass of (\" + parentType.name + \")\";\n                    return false;\n                }\n                parentType = targetType;\n                root = root.BasedOn;\n            }\n            this.Seal();\n            return true;\n        };\n        Style.SettersProperty = DependencyProperty.RegisterImmutable(\"Setters\", function () { return Fayde.SetterCollection; }, Style);\n        Style.BasedOnProperty = DependencyProperty.Register(\"BasedOn\", function () { return Style; }, Style);\n        Style.TargetTypeProperty = DependencyProperty.Register(\"TargetType\", function () { return Fayde.IType_; }, Style);\n        return Style;\n    })(Fayde.DependencyObject);\n    Fayde.Style = Style;\n    Fayde.CoreLibrary.add(Style);\n    Fayde.Markup.Content(Style, Style.SettersProperty);\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var TemplateBinding = (function () {\n        function TemplateBinding() {\n        }\n        TemplateBinding.prototype.init = function (val) {\n            this.SourceProperty = val;\n        };\n        TemplateBinding.prototype.transmute = function (os) {\n            return new Fayde.TemplateBindingExpression(this.SourceProperty);\n        };\n        return TemplateBinding;\n    })();\n    Fayde.TemplateBinding = TemplateBinding;\n    Fayde.CoreLibrary.add(TemplateBinding);\n})(Fayde || (Fayde = {}));\n/// <reference path=\"DependencyObject.ts\" />\n/// <reference path=\"XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var TriggerAction = (function (_super) {\n        __extends(TriggerAction, _super);\n        function TriggerAction() {\n            _super.apply(this, arguments);\n        }\n        TriggerAction.prototype.Fire = function () { };\n        return TriggerAction;\n    })(Fayde.DependencyObject);\n    Fayde.TriggerAction = TriggerAction;\n    Fayde.CoreLibrary.add(TriggerAction);\n    var TriggerActionCollection = (function (_super) {\n        __extends(TriggerActionCollection, _super);\n        function TriggerActionCollection() {\n            _super.apply(this, arguments);\n        }\n        TriggerActionCollection.prototype.Fire = function () {\n            var enumerator = this.getEnumerator();\n            while (enumerator.moveNext()) {\n                enumerator.current.Fire();\n            }\n        };\n        return TriggerActionCollection;\n    })(Fayde.XamlObjectCollection);\n    Fayde.TriggerActionCollection = TriggerActionCollection;\n    Fayde.CoreLibrary.add(TriggerActionCollection);\n    var TriggerBase = (function (_super) {\n        __extends(TriggerBase, _super);\n        function TriggerBase() {\n            _super.apply(this, arguments);\n        }\n        TriggerBase.prototype.Attach = function (target) { };\n        TriggerBase.prototype.Detach = function (target) { };\n        return TriggerBase;\n    })(Fayde.DependencyObject);\n    Fayde.TriggerBase = TriggerBase;\n    Fayde.CoreLibrary.add(TriggerBase);\n    var EventTrigger = (function (_super) {\n        __extends(EventTrigger, _super);\n        function EventTrigger() {\n            _super.call(this);\n            this._IsAttached = false;\n            var coll = EventTrigger.ActionsProperty.Initialize(this);\n            coll.AttachTo(this);\n        }\n        EventTrigger.prototype.Attach = function (target) {\n            if (this._IsAttached)\n                return;\n            var evt = this._ParseEventName(target);\n            if (evt) {\n                this._IsAttached = true;\n                evt.on(this._FireActions, this);\n                return;\n            }\n            console.warn(\"Could not attach to RoutedEvent: \" + this.RoutedEvent);\n        };\n        EventTrigger.prototype.Detach = function (target) {\n            var evt = this._ParseEventName(target);\n            if (evt)\n                evt.off(this._FireActions, this);\n            this._IsAttached = false;\n        };\n        EventTrigger.prototype._FireActions = function (sender, e) {\n            var actions = this.Actions;\n            if (actions)\n                actions.Fire();\n        };\n        EventTrigger.prototype._ParseEventName = function (target) {\n            var routedEventName = this.RoutedEvent;\n            var tokens = routedEventName.split(\".\");\n            if (tokens.length === 1)\n                routedEventName = tokens[0];\n            else if (tokens.length === 2)\n                routedEventName = tokens[1];\n            else\n                return undefined;\n            var evt = target[routedEventName];\n            if (evt instanceof Fayde.RoutedEvent)\n                return evt;\n            return undefined;\n        };\n        EventTrigger.ActionsProperty = DependencyProperty.RegisterImmutable(\"Actions\", function () { return TriggerActionCollection; }, EventTrigger);\n        EventTrigger.RoutedEventProperty = DependencyProperty.Register(\"RoutedEvent\", function () { return String; }, EventTrigger);\n        return EventTrigger;\n    })(TriggerBase);\n    Fayde.EventTrigger = EventTrigger;\n    Fayde.CoreLibrary.add(EventTrigger);\n    Fayde.Markup.Content(EventTrigger, EventTrigger.ActionsProperty);\n    var TriggerCollection = (function (_super) {\n        __extends(TriggerCollection, _super);\n        function TriggerCollection() {\n            _super.apply(this, arguments);\n        }\n        Object.defineProperty(TriggerCollection.prototype, \"ParentXamlObject\", {\n            get: function () {\n                var parentNode = this.XamlNode.ParentNode;\n                if (!parentNode)\n                    return undefined;\n                return parentNode.XObject;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        TriggerCollection.prototype.AddingToCollection = function (value, error) {\n            if (!_super.prototype.AddingToCollection.call(this, value, error))\n                return false;\n            var parent = this.ParentXamlObject;\n            if (parent)\n                value.Attach(parent);\n            return true;\n        };\n        TriggerCollection.prototype.RemovedFromCollection = function (value, isValueSafe) {\n            _super.prototype.RemovedFromCollection.call(this, value, isValueSafe);\n            var parent = this.ParentXamlObject;\n            if (parent)\n                value.Detach(parent);\n        };\n        TriggerCollection.prototype.AttachTarget = function (target) {\n            var enumerator = this.getEnumerator();\n            while (enumerator.moveNext()) {\n                enumerator.current.Attach(target);\n            }\n        };\n        TriggerCollection.prototype.DetachTarget = function (target) {\n            var enumerator = this.getEnumerator();\n            while (enumerator.moveNext()) {\n                enumerator.current.Detach(target);\n            }\n        };\n        return TriggerCollection;\n    })(Fayde.XamlObjectCollection);\n    Fayde.TriggerCollection = TriggerCollection;\n    Fayde.CoreLibrary.add(TriggerCollection);\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var VisualTreeEnum = (function () {\n        function VisualTreeEnum() {\n        }\n        VisualTreeEnum.GetAncestors = function (uie) {\n            return new AncestorsEnumerable(uie);\n        };\n        return VisualTreeEnum;\n    })();\n    Fayde.VisualTreeEnum = VisualTreeEnum;\n    var AncestorsEnumerable = (function () {\n        function AncestorsEnumerable(uie) {\n            this.uie = uie;\n        }\n        AncestorsEnumerable.prototype.getEnumerator = function () {\n            var curNode = this.uie ? this.uie.XamlNode : null;\n            var e = {\n                current: undefined,\n                moveNext: function () {\n                    curNode = curNode ? curNode.VisualParentNode : undefined;\n                    e.current = curNode ? curNode.XObject : undefined;\n                    return e.current !== undefined;\n                }\n            };\n            return e;\n        };\n        return AncestorsEnumerable;\n    })();\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var VisualTreeHelper = (function () {\n        function VisualTreeHelper() {\n        }\n        VisualTreeHelper.GetParent = function (d) {\n            if (!(d instanceof Fayde.FrameworkElement))\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\n            var parentNode = d.XamlNode.VisualParentNode;\n            if (parentNode)\n                return parentNode.XObject;\n        };\n        VisualTreeHelper.GetParentOfType = function (d, type) {\n            if (!(d instanceof Fayde.FrameworkElement))\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\n            var curNode = d.XamlNode;\n            while ((curNode = curNode.VisualParentNode)) {\n                if (curNode.XObject instanceof type)\n                    return curNode.XObject;\n            }\n            return undefined;\n        };\n        VisualTreeHelper.GetRoot = function (d) {\n            if (!(d instanceof Fayde.FrameworkElement))\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\n            var rootNode = d.XamlNode.GetVisualRoot();\n            if (rootNode)\n                return rootNode.XObject;\n        };\n        VisualTreeHelper.GetChild = function (d, childIndex) {\n            if (!(d instanceof Fayde.FrameworkElement))\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\n            var feNode = d.XamlNode;\n            var subtreeNode = feNode.SubtreeNode;\n            if (!subtreeNode)\n                throw new IndexOutOfRangeException(childIndex);\n            var subtree = subtreeNode.XObject;\n            if (subtree instanceof Fayde.XamlObjectCollection)\n                return subtree.GetValueAt(childIndex);\n            if ((subtree instanceof Fayde.UIElement) && childIndex === 0)\n                return subtree;\n            throw new IndexOutOfRangeException(childIndex);\n        };\n        VisualTreeHelper.GetChildrenCount = function (d) {\n            if (!(d instanceof Fayde.FrameworkElement))\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\n            var feNode = d.XamlNode;\n            var subtreeNode = feNode.SubtreeNode;\n            if (!subtreeNode)\n                return 0;\n            var subtree = subtreeNode.XObject;\n            if (subtreeNode.XObject instanceof Fayde.XamlObjectCollection)\n                return subtree.Count;\n            if (subtree instanceof Fayde.UIElement)\n                return 1;\n            return 0;\n        };\n        VisualTreeHelper.FindElementsInHostCoordinates = function (pos, uie) {\n            return minerva.findElementsInHostSpace(pos, uie.XamlNode.LayoutUpdater)\n                .map(function (upd) { return upd.getAttachedValue(\"$node\").XObject; });\n        };\n        VisualTreeHelper.__Debug = function (ui, func) {\n            var uin;\n            if (ui instanceof Fayde.UIElement) {\n                uin = ui.XamlNode;\n            }\n            else if (ui instanceof Fayde.UINode) {\n                uin = ui;\n            }\n            else if (ui instanceof minerva.core.Updater) {\n                uin = ui.getAttachedValue(\"$node\");\n            }\n            var topNode;\n            if (!uin) {\n                var rv = Fayde.Application.Current.RootVisual;\n                topNode = (rv) ? rv.XamlNode : null;\n            }\n            else {\n                topNode = uin.GetVisualRoot();\n            }\n            if (!topNode)\n                return \"[No top node.]\";\n            if (!func)\n                func = VisualTreeHelper.__DebugUIElement;\n            return VisualTreeHelper.__DebugTree(topNode, uin, 1, func);\n        };\n        VisualTreeHelper.__DebugTree = function (curNode, matchNode, tabIndex, func) {\n            var str = \"\";\n            if (curNode === matchNode) {\n                for (var i = 0; i < tabIndex; i++) {\n                    str += \">>>>>>>>\";\n                }\n            }\n            else {\n                for (var i = 0; i < tabIndex; i++) {\n                    str += \"\\t\";\n                }\n            }\n            var cur = curNode.XObject;\n            str += cur.constructor.name;\n            var id = cur._ID;\n            if (id)\n                str += \"[\" + id + \"]\";\n            var name = curNode.Name;\n            str += \" [\";\n            var ns = curNode.NameScope;\n            if (!ns)\n                str += \"^\";\n            else if (ns.IsRoot)\n                str += \"+\";\n            else\n                str += \"-\";\n            str += name + \"]\";\n            if (func)\n                str += func(curNode, tabIndex);\n            str += \"\\n\";\n            var enumerator = curNode.GetVisualTreeEnumerator();\n            if (!enumerator)\n                return str;\n            var childNode;\n            while (enumerator.moveNext()) {\n                childNode = enumerator.current;\n                str += VisualTreeHelper.__DebugTree(childNode, matchNode, tabIndex + 1, func);\n            }\n            return str;\n        };\n        VisualTreeHelper.__DebugUIElement = function (uin, tabIndex) {\n            if (!uin)\n                return \"\";\n            var uie = uin.XObject;\n            var str = \"(\";\n            if (uie.Visibility === Fayde.Visibility.Visible)\n                str += \"Visible\";\n            else\n                str += \"Collapsed\";\n            var lu = uin.LayoutUpdater;\n            if (lu) {\n                str += \" \";\n                var ls = lu.assets.layoutSlot;\n                str += \"(\" + ls.x + \",\" + ls.y + \")(\" + ls.width + \",\" + ls.height + \")\";\n            }\n            str += \")\";\n            var t = uie.TemplateOwner;\n            str += \"$TO=\" + (t ? t.constructor.name : \"(null)\");\n            var gridStr = VisualTreeHelper.__DebugGrid(uin, tabIndex);\n            if (gridStr)\n                str += \"\\n\" + gridStr;\n            return str;\n        };\n        VisualTreeHelper.__DebugGrid = function (uin, tabIndex) {\n            var grid;\n            if (uin.XObject instanceof Fayde.Controls.Grid)\n                grid = uin.XObject;\n            if (!grid)\n                return \"\";\n            var rds = grid.RowDefinitions;\n            var rcount = rds.Count;\n            var cds = grid.ColumnDefinitions;\n            var ccount = cds.Count;\n            var tabs = \"\";\n            for (var i = 0; i < tabIndex; i++) {\n                tabs += \"\\t\";\n            }\n            var str = \"\";\n            if (rcount > 0) {\n                str += tabs;\n                str += \"  Rows (\" + rcount + \"):\\n\";\n                var rowdef;\n                for (var en = rds.getEnumerator(), i = 0; en.moveNext(); i++) {\n                    rowdef = en.current;\n                    str += tabs;\n                    str += \"\\t[\" + i + \"] -> \" + rowdef.ActualHeight + \"\\n\";\n                }\n            }\n            var enumerator2;\n            if (ccount > 0) {\n                str += tabs;\n                str += \"  Columns (\" + ccount + \"):\\n\";\n                var coldef;\n                for (var en2 = cds.getEnumerator(), i = 0; en2.moveNext(); i++) {\n                    coldef = en2.current;\n                    str += tabs;\n                    str += \"\\t[\" + i + \"] -> \" + coldef.ActualWidth + \"\\n\";\n                }\n            }\n            return str;\n        };\n        VisualTreeHelper.__DebugUIElementLayout = function (uin, tabIndex) {\n            if (!uin)\n                return \"\";\n            return uin.LayoutUpdater._DebugLayout();\n        };\n        VisualTreeHelper.__DebugLayout = function (ui) {\n            return VisualTreeHelper.__Debug(ui, VisualTreeHelper.__DebugUIElementLayout);\n        };\n        VisualTreeHelper.__GetById = function (id) {\n            var rv = Fayde.Application.Current.RootVisual;\n            var topNode = (rv) ? rv.XamlNode : null;\n            if (!topNode)\n                return;\n            var walker = Fayde.DeepTreeWalker(topNode);\n            var curNode;\n            while (curNode = walker.Step()) {\n                if (curNode.XObject._ID === id)\n                    return curNode.XObject;\n            }\n        };\n        return VisualTreeHelper;\n    })();\n    Fayde.VisualTreeHelper = VisualTreeHelper;\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    (function (VisualTreeDirection) {\n        VisualTreeDirection[VisualTreeDirection[\"Logical\"] = 0] = \"Logical\";\n        VisualTreeDirection[VisualTreeDirection[\"Reverse\"] = 1] = \"Reverse\";\n        VisualTreeDirection[VisualTreeDirection[\"ZForward\"] = 2] = \"ZForward\";\n        VisualTreeDirection[VisualTreeDirection[\"ZReverse\"] = 3] = \"ZReverse\";\n    })(Fayde.VisualTreeDirection || (Fayde.VisualTreeDirection = {}));\n    var VisualTreeDirection = Fayde.VisualTreeDirection;\n    function mergeSetters(arr, dps, style) {\n        var enumerator = style.Setters.getEnumerator(true);\n        var setter;\n        while (enumerator.moveNext()) {\n            setter = enumerator.current;\n            if (!(setter instanceof Fayde.Setter))\n                continue;\n            var propd = setter.Property;\n            if (!propd)\n                continue;\n            if (dps[propd._ID])\n                continue;\n            dps[propd._ID] = setter;\n            arr.push(setter);\n        }\n    }\n    function SingleStyleWalker(style) {\n        var dps = [];\n        var flattenedSetters = [];\n        var cur = style;\n        while (cur) {\n            mergeSetters(flattenedSetters, dps, cur);\n            cur = cur.BasedOn;\n        }\n        flattenedSetters.sort(Fayde.Setter.Compare);\n        return {\n            Step: function () {\n                return flattenedSetters.shift();\n            }\n        };\n    }\n    Fayde.SingleStyleWalker = SingleStyleWalker;\n    function MultipleStylesWalker(styles) {\n        var flattenedSetters = [];\n        if (styles) {\n            var dps = [];\n            var stylesSeen = [];\n            var len = styles.length;\n            for (var i = 0; i < len; i++) {\n                var style = styles[i];\n                while (style) {\n                    if (stylesSeen.indexOf(style) > -1)\n                        continue;\n                    mergeSetters(flattenedSetters, dps, style);\n                    stylesSeen.push(style);\n                    style = style.BasedOn;\n                }\n            }\n            flattenedSetters.sort(Fayde.Setter.Compare);\n        }\n        return {\n            Step: function () {\n                return flattenedSetters.shift();\n            }\n        };\n    }\n    Fayde.MultipleStylesWalker = MultipleStylesWalker;\n    function DeepTreeWalker(topNode, direction) {\n        var last = undefined;\n        var dir = VisualTreeDirection.Logical;\n        var walkList = [topNode];\n        if (direction)\n            dir = direction;\n        return {\n            Step: function () {\n                if (last) {\n                    var enumerator = last.GetVisualTreeEnumerator();\n                    var insertIndex = 0;\n                    while (enumerator.moveNext()) {\n                        walkList.splice(insertIndex, 0, enumerator.current);\n                        insertIndex++;\n                    }\n                }\n                var next = walkList.shift();\n                if (!next) {\n                    last = undefined;\n                    return;\n                }\n                return (last = next);\n            },\n            SkipBranch: function () {\n                last = undefined;\n            }\n        };\n    }\n    Fayde.DeepTreeWalker = DeepTreeWalker;\n    function compare(left, right) {\n        if (!left)\n            return !right ? 0 : -1;\n        if (!right)\n            return 1;\n        var v1 = left.XObject.TabIndex;\n        var v2 = right.XObject.TabIndex;\n        if (v1 == null) {\n            return v2 != null ? -1 : 0;\n        }\n        else if (v2 == null) {\n            return 1;\n        }\n        if (v1 > v2)\n            return 1;\n        return v1 === v2 ? 0 : -1;\n    }\n    function getParentNavigationMode(uin) {\n        while (uin) {\n            if (uin instanceof Fayde.Controls.ControlNode)\n                return uin.XObject.TabNavigation;\n            return Fayde.Input.KeyboardNavigationMode.Local;\n        }\n        return Fayde.Input.KeyboardNavigationMode.Local;\n    }\n    function getActiveNavigationMode(uin) {\n        while (uin) {\n            if (uin instanceof Fayde.Controls.ControlNode)\n                return uin.XObject.TabNavigation;\n            uin = uin.VisualParentNode;\n        }\n        return Fayde.Input.KeyboardNavigationMode.Local;\n    }\n    function walkChildren(root, cur, forwards) {\n        var walker = new TabNavigationWalker(root, cur, forwards);\n        return walker.FocusChild();\n    }\n    var TabNavigationWalker = (function () {\n        function TabNavigationWalker(root, cur, forwards) {\n            this._Root = root;\n            this._Current = cur;\n            this._Forwards = forwards;\n            this._TabSorted = [];\n        }\n        TabNavigationWalker.prototype.FocusChild = function () {\n            var childNode;\n            var childIsControl;\n            var curIndex = -1;\n            var childWalker = DeepTreeWalker(this._Root);\n            while (childNode = childWalker.Step()) {\n                if (childNode === this._Root || !(childNode instanceof Fayde.Controls.ControlNode))\n                    continue;\n                this._TabSorted.push(childNode);\n                childWalker.SkipBranch();\n            }\n            if (this._TabSorted.length > 1) {\n                this._TabSorted.sort(compare);\n                if (!this._Forwards)\n                    this._TabSorted = this._TabSorted.reverse();\n            }\n            var len = this._TabSorted.length;\n            for (var i = 0; i < len; i++) {\n                if (this._TabSorted[i] === this._Current)\n                    curIndex = i;\n            }\n            if (curIndex !== -1 && getActiveNavigationMode(this._Root) === Fayde.Input.KeyboardNavigationMode.Once) {\n                if (!this._Forwards && this._Root instanceof Fayde.Controls.ControlNode)\n                    return this._Root.TabTo();\n                return false;\n            }\n            var len = this._TabSorted.length;\n            if (len > 0) {\n                for (var j = 0; j < len; j++) {\n                    if ((j + curIndex + 1) === len && getActiveNavigationMode(this._Root) !== Fayde.Input.KeyboardNavigationMode.Cycle)\n                        break;\n                    childNode = this._TabSorted[(j + curIndex + 1) % len];\n                    childIsControl = childNode instanceof Fayde.Controls.ControlNode;\n                    if (childIsControl && !childNode.XObject.IsEnabled)\n                        continue;\n                    if (!this._Forwards && walkChildren(childNode))\n                        return true;\n                    if (childIsControl && childNode.TabTo())\n                        return true;\n                    if (this._Forwards && walkChildren(childNode))\n                        return true;\n                }\n            }\n            if (curIndex !== -1 && !this._Forwards) {\n                if (this._Root instanceof Fayde.Controls.ControlNode)\n                    return this._Root.TabTo();\n            }\n            return false;\n        };\n        TabNavigationWalker.Focus = function (uin, forwards) {\n            var focused = false;\n            var cur = uin;\n            var root = uin;\n            if ((root.VisualParentNode && getParentNavigationMode(root.VisualParentNode) === Fayde.Input.KeyboardNavigationMode.Once)\n                || (!forwards && root && root.VisualParentNode)) {\n                while (root = root.VisualParentNode)\n                    if (root instanceof Fayde.Controls.ControlNode || !root.VisualParentNode)\n                        break;\n            }\n            do {\n                focused = focused || walkChildren(root, cur, forwards);\n                if (!focused && getActiveNavigationMode(root) === Fayde.Input.KeyboardNavigationMode.Cycle)\n                    return true;\n                cur = root;\n                root = root.VisualParentNode;\n                while (root && !(root instanceof Fayde.Controls.ControlNode) && root.VisualParentNode)\n                    root = root.VisualParentNode;\n            } while (!focused && root);\n            if (!focused)\n                focused = focused || walkChildren(cur, null, forwards);\n            return focused;\n        };\n        return TabNavigationWalker;\n    })();\n    Fayde.TabNavigationWalker = TabNavigationWalker;\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        var convert = nullstone.convertAnyToType;\n        Data.WarnBrokenPath = false;\n        var Binding = (function () {\n            function Binding(obj) {\n                this.BindsDirectlyToSource = false;\n                this.NotifyOnValidationError = false;\n                this.ValidatesOnExceptions = false;\n                this.ValidatesOnDataErrors = false;\n                this.ValidatesOnNotifyDataErrors = true;\n                if (obj instanceof Binding) {\n                    var binding = obj;\n                    this.StringFormat = binding.StringFormat;\n                    this.FallbackValue = binding.FallbackValue;\n                    this.TargetNullValue = binding.TargetNullValue;\n                    this.BindsDirectlyToSource = binding.BindsDirectlyToSource;\n                    this.Converter = binding.Converter;\n                    this.ConverterParameter = binding.ConverterParameter;\n                    this.ConverterCulture = binding.ConverterCulture;\n                    this.ElementName = binding.ElementName;\n                    this.Mode = binding.Mode;\n                    this.NotifyOnValidationError = binding.NotifyOnValidationError;\n                    this.RelativeSource = binding.RelativeSource ? binding.RelativeSource.Clone() : null;\n                    this.Path = binding.Path;\n                    this.Source = binding.Source;\n                    this.UpdateSourceTrigger = binding.UpdateSourceTrigger;\n                    this.ValidatesOnExceptions = binding.ValidatesOnExceptions;\n                    this.ValidatesOnDataErrors = binding.ValidatesOnDataErrors;\n                    this.ValidatesOnNotifyDataErrors = binding.ValidatesOnNotifyDataErrors;\n                }\n                else if (typeof obj === \"string\") {\n                    this.Path = new Data.PropertyPath(obj);\n                }\n                else if (obj instanceof Data.PropertyPath) {\n                    this.Path = obj;\n                }\n                else {\n                    this.Path = new Data.PropertyPath(\"\");\n                }\n            }\n            Binding.prototype.init = function (val) {\n                this.Path = new Data.PropertyPath(val);\n            };\n            Binding.prototype.transmute = function (os) {\n                this.$$coerce();\n                Object.freeze(this);\n                return new Data.BindingExpression(this);\n            };\n            Binding.prototype.$$coerce = function () {\n                this.StringFormat = this.StringFormat ? this.StringFormat.toString() : undefined;\n                this.BindsDirectlyToSource = convert(this.BindsDirectlyToSource, Boolean) || false;\n                this.Mode = Fayde.Enum.fromAny(Data.BindingMode, this.Mode);\n                this.NotifyOnValidationError = convert(this.NotifyOnValidationError, Boolean) || false;\n                this.Path = convert(this.Path, Data.PropertyPath);\n                this.UpdateSourceTrigger = Fayde.Enum.fromAny(Data.UpdateSourceTrigger, this.UpdateSourceTrigger);\n                this.ValidatesOnExceptions = convert(this.ValidatesOnExceptions, Boolean) || false;\n                this.ValidatesOnDataErrors = convert(this.ValidatesOnDataErrors, Boolean) || false;\n                this.ValidatesOnNotifyDataErrors = convert(this.ValidatesOnNotifyDataErrors, Boolean) !== false;\n            };\n            Binding.prototype.Clone = function () {\n                return new Binding(this);\n            };\n            Binding.fromData = function (data) {\n                var binding = new Binding(data.Path);\n                binding.StringFormat = data.StringFormat;\n                binding.FallbackValue = data.FallbackValue;\n                binding.TargetNullValue = data.TargetNullValue;\n                binding.BindsDirectlyToSource = data.BindsDirectlyToSource;\n                binding.Converter = data.Converter;\n                binding.ConverterParameter = data.ConverterParameter;\n                binding.ConverterCulture = data.ConverterCulture;\n                binding.ElementName = data.ElementName;\n                binding.Mode = data.Mode;\n                binding.NotifyOnValidationError = data.NotifyOnValidationError;\n                binding.RelativeSource = data.RelativeSource;\n                binding.Source = data.Source;\n                binding.UpdateSourceTrigger = data.UpdateSourceTrigger;\n                binding.ValidatesOnExceptions = data.ValidatesOnExceptions;\n                binding.ValidatesOnDataErrors = data.ValidatesOnDataErrors;\n                binding.ValidatesOnNotifyDataErrors = data.ValidatesOnNotifyDataErrors;\n                return binding;\n            };\n            return Binding;\n        })();\n        Data.Binding = Binding;\n        Fayde.CoreLibrary.add(Binding);\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        var CollectionViewSource = (function (_super) {\n            __extends(CollectionViewSource, _super);\n            function CollectionViewSource() {\n                _super.apply(this, arguments);\n            }\n            CollectionViewSource.SourceProperty = DependencyProperty.Register(\"Source\", function () { return Object; }, CollectionViewSource);\n            CollectionViewSource.ViewProperty = DependencyProperty.Register(\"View\", function () { return Data.ICollectionView_; }, CollectionViewSource);\n            return CollectionViewSource;\n        })(Fayde.DependencyObject);\n        Data.CollectionViewSource = CollectionViewSource;\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        var DataErrorsChangedEventArgs = (function () {\n            function DataErrorsChangedEventArgs(propertyName) {\n                this.PropertyName = propertyName;\n                Object.freeze(this);\n            }\n            return DataErrorsChangedEventArgs;\n        })();\n        Data.DataErrorsChangedEventArgs = DataErrorsChangedEventArgs;\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        (function (RelativeSourceMode) {\n            RelativeSourceMode[RelativeSourceMode[\"TemplatedParent\"] = 0] = \"TemplatedParent\";\n            RelativeSourceMode[RelativeSourceMode[\"Self\"] = 1] = \"Self\";\n            RelativeSourceMode[RelativeSourceMode[\"FindAncestor\"] = 2] = \"FindAncestor\";\n            RelativeSourceMode[RelativeSourceMode[\"ItemsControlParent\"] = 3] = \"ItemsControlParent\";\n        })(Data.RelativeSourceMode || (Data.RelativeSourceMode = {}));\n        var RelativeSourceMode = Data.RelativeSourceMode;\n        Fayde.CoreLibrary.addEnum(RelativeSourceMode, \"RelativeSourceMode\");\n        (function (BindingMode) {\n            BindingMode[BindingMode[\"OneWay\"] = 0] = \"OneWay\";\n            BindingMode[BindingMode[\"TwoWay\"] = 1] = \"TwoWay\";\n            BindingMode[BindingMode[\"OneTime\"] = 2] = \"OneTime\";\n            BindingMode[BindingMode[\"OneWayToSource\"] = 3] = \"OneWayToSource\";\n        })(Data.BindingMode || (Data.BindingMode = {}));\n        var BindingMode = Data.BindingMode;\n        Fayde.CoreLibrary.addEnum(BindingMode, \"BindingMode\");\n        (function (UpdateSourceTrigger) {\n            UpdateSourceTrigger[UpdateSourceTrigger[\"Default\"] = 0] = \"Default\";\n            UpdateSourceTrigger[UpdateSourceTrigger[\"PropertyChanged\"] = 1] = \"PropertyChanged\";\n            UpdateSourceTrigger[UpdateSourceTrigger[\"Explicit\"] = 3] = \"Explicit\";\n        })(Data.UpdateSourceTrigger || (Data.UpdateSourceTrigger = {}));\n        var UpdateSourceTrigger = Data.UpdateSourceTrigger;\n        Fayde.CoreLibrary.addEnum(UpdateSourceTrigger, \"UpdateSourceTrigger\");\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        Data.ICollectionView_ = new nullstone.Interface(\"ICollectionView\");\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        Data.IDataErrorInfo_ = new nullstone.Interface(\"IDataErrorInfo\");\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        Data.INotifyDataErrorInfo_ = new nullstone.Interface(\"INotifyDataErrorInfo\");\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        Data.IValueConverter_ = new nullstone.Interface(\"IValueConverter\");\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        var RelativeSource = (function () {\n            function RelativeSource(obj) {\n                this.AncestorType = null;\n                if (obj instanceof RelativeSource) {\n                    var rs = obj;\n                    this.Mode = rs.Mode;\n                    this.AncestorLevel = rs.AncestorLevel;\n                    this.AncestorType = rs.AncestorType;\n                }\n            }\n            RelativeSource.prototype.init = function (val) {\n                this.Mode = Data.RelativeSourceMode[val];\n            };\n            RelativeSource.prototype.resolveTypeFields = function (resolver) {\n                if (typeof this.AncestorType === \"string\")\n                    this.AncestorType = resolver(this.AncestorType);\n            };\n            RelativeSource.prototype.transmute = function (os) {\n                if (this.Mode == null && typeof this.AncestorType === \"function\") {\n                    this.Mode = Data.RelativeSourceMode.FindAncestor;\n                }\n                else {\n                    this.Mode = Fayde.Enum.fromAny(Data.RelativeSourceMode, this.Mode);\n                }\n                this.AncestorLevel = parseInt(this.AncestorLevel) || 1;\n                Object.freeze(this);\n                return this;\n            };\n            RelativeSource.prototype.Clone = function () {\n                return new RelativeSource(this);\n            };\n            RelativeSource.prototype.Find = function (target) {\n                switch (this.Mode) {\n                    case Data.RelativeSourceMode.Self:\n                        return target;\n                    case Data.RelativeSourceMode.TemplatedParent:\n                        return target.TemplateOwner;\n                    case Data.RelativeSourceMode.FindAncestor:\n                        return findAncestor(target, this);\n                    case Data.RelativeSourceMode.ItemsControlParent:\n                        return findItemsControlAncestor(target, this);\n                }\n            };\n            return RelativeSource;\n        })();\n        Data.RelativeSource = RelativeSource;\n        Fayde.CoreLibrary.add(RelativeSource);\n        function findAncestor(target, relSource) {\n            if (!(target instanceof Fayde.DependencyObject))\n                return;\n            var ancestorType = relSource.AncestorType;\n            if (typeof ancestorType !== \"function\") {\n                console.warn(\"RelativeSourceMode.FindAncestor with no AncestorType specified.\");\n                return;\n            }\n            var ancestorLevel = relSource.AncestorLevel;\n            if (isNaN(ancestorLevel)) {\n                console.warn(\"RelativeSourceMode.FindAncestor with no AncestorLevel specified.\");\n                return;\n            }\n            for (var parent = Fayde.VisualTreeHelper.GetParent(target); parent != null; parent = Fayde.VisualTreeHelper.GetParent(parent)) {\n                if (parent instanceof ancestorType && --ancestorLevel < 1)\n                    return parent;\n            }\n        }\n        function findItemsControlAncestor(target, relSource) {\n            if (!(target instanceof Fayde.DependencyObject))\n                return;\n            var ancestorLevel = relSource.AncestorLevel;\n            ancestorLevel = ancestorLevel || 1;\n            for (var parent = Fayde.VisualTreeHelper.GetParent(target); parent != null; parent = Fayde.VisualTreeHelper.GetParent(parent)) {\n                if (!!parent.IsItemsControl && --ancestorLevel < 1)\n                    return parent;\n            }\n        }\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        function TextReaction(propd, callback, listen, sync, instance) {\n            var changed;\n            if (sync === false) {\n                changed = (listen === false) ? reaction(callback) : lReaction(callback);\n            }\n            else {\n                var name = propd.Name;\n                name = name.charAt(0).toLowerCase() + name.substr(1);\n                if (typeof sync !== \"function\")\n                    changed = (listen === false) ? sReaction(callback, name) : slReaction(callback, name);\n                else\n                    changed = (listen === false) ? sReaction(callback, name, sync) : slReaction(callback, name, sync);\n            }\n            if (instance)\n                propd.Store.ListenToChanged(instance, propd, changed, instance);\n            else\n                propd.ChangedCallback = changed;\n        }\n        Documents.TextReaction = TextReaction;\n        function reaction(callback) {\n            return function (te, args) {\n                callback && callback(te.TextUpdater, args.OldValue, args.NewValue, te);\n            };\n        }\n        function sReaction(callback, name, syncer) {\n            return function (te, args) {\n                var ov = args.OldValue;\n                var nv = args.NewValue;\n                var upd = te.TextUpdater;\n                if (!syncer)\n                    upd.assets[name] = nv;\n                else\n                    syncer(nv, upd.assets[name]);\n                callback && callback(upd, ov, nv, te);\n            };\n        }\n        function lReaction(callback) {\n            return function (te, args) {\n                var ov = args.OldValue;\n                var nv = args.NewValue;\n                var upd = te.TextUpdater;\n                Fayde.UnreactTo(ov, te);\n                callback && callback(upd, ov, nv, te);\n                Fayde.ReactTo(nv, te, function () { return callback(upd, nv, nv, te); });\n            };\n        }\n        function slReaction(callback, name, syncer) {\n            return function (te, args) {\n                var ov = args.OldValue;\n                var nv = args.NewValue;\n                var upd = te.TextUpdater;\n                Fayde.UnreactTo(ov, te);\n                if (!syncer)\n                    upd.assets[name] = nv;\n                else\n                    syncer(nv, upd.assets[name]);\n                callback && callback(upd, ov, nv, te);\n                Fayde.ReactTo(nv, te, function () { return callback && callback(upd, nv, nv, te); });\n            };\n        }\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\"/>\n/// <reference path=\"../Core/InheritableOwner.ts\"/>\n/// <reference path=\"TextReaction.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var TextElementNode = (function (_super) {\n            __extends(TextElementNode, _super);\n            function TextElementNode(xobj, inheritedWalkProperty) {\n                _super.call(this, xobj);\n                this.InheritedWalkProperty = inheritedWalkProperty;\n            }\n            TextElementNode.prototype.GetInheritedEnumerator = function () {\n                if (!this.InheritedWalkProperty)\n                    return nullstone.IEnumerator_.empty;\n                var coll = this.XObject[this.InheritedWalkProperty];\n                if (coll)\n                    return coll.GetNodeEnumerator();\n            };\n            return TextElementNode;\n        })(Fayde.DONode);\n        Documents.TextElementNode = TextElementNode;\n        function invalidateFont(upd, ov, nv, te) {\n            Fayde.Incite(te, {\n                type: 'font',\n                full: upd.invalidateFont()\n            });\n        }\n        var TextElement = (function (_super) {\n            __extends(TextElement, _super);\n            function TextElement() {\n                _super.call(this);\n                this.TextUpdater = new minerva.text.TextUpdater();\n                Documents.TextReaction(TextElement.ForegroundProperty, function (upd, ov, nv, te) {\n                    Fayde.Incite(te, {\n                        type: 'font',\n                        full: upd.invalidateFont()\n                    });\n                }, true, true, this);\n                Documents.TextReaction(TextElement.FontFamilyProperty, invalidateFont, false, true, this);\n                Documents.TextReaction(TextElement.FontSizeProperty, invalidateFont, false, true, this);\n                Documents.TextReaction(TextElement.FontStretchProperty, invalidateFont, false, true, this);\n                Documents.TextReaction(TextElement.FontStyleProperty, invalidateFont, false, true, this);\n                Documents.TextReaction(TextElement.FontWeightProperty, invalidateFont, false, true, this);\n            }\n            TextElement.prototype.CreateNode = function () {\n                return new TextElementNode(this, null);\n            };\n            TextElement.prototype.IsInheritable = function (propd) {\n                return TextElementInheritedProps.indexOf(propd) > -1;\n            };\n            TextElement.prototype._SerializeText = function () {\n                return undefined;\n            };\n            TextElement.prototype.Equals = function (te) {\n                if (this.FontFamily !== te.FontFamily)\n                    return false;\n                if (this.FontSize !== te.FontSize)\n                    return false;\n                if (this.FontStyle !== te.FontStyle)\n                    return false;\n                if (this.FontWeight !== te.FontWeight)\n                    return false;\n                if (this.FontStretch !== te.FontStretch)\n                    return false;\n                if (!nullstone.equals(this.Foreground, te.Foreground))\n                    return false;\n                return true;\n            };\n            TextElement.FontFamilyProperty = Fayde.InheritableOwner.FontFamilyProperty.ExtendTo(TextElement);\n            TextElement.FontSizeProperty = Fayde.InheritableOwner.FontSizeProperty.ExtendTo(TextElement);\n            TextElement.FontStretchProperty = Fayde.InheritableOwner.FontStretchProperty.ExtendTo(TextElement);\n            TextElement.FontStyleProperty = Fayde.InheritableOwner.FontStyleProperty.ExtendTo(TextElement);\n            TextElement.FontWeightProperty = Fayde.InheritableOwner.FontWeightProperty.ExtendTo(TextElement);\n            TextElement.ForegroundProperty = Fayde.InheritableOwner.ForegroundProperty.ExtendTo(TextElement);\n            TextElement.LanguageProperty = Fayde.InheritableOwner.LanguageProperty.ExtendTo(TextElement);\n            return TextElement;\n        })(Fayde.DependencyObject);\n        Documents.TextElement = TextElement;\n        Fayde.CoreLibrary.add(TextElement);\n        var TextElementInheritedProps = [\n            TextElement.FontFamilyProperty,\n            TextElement.FontSizeProperty,\n            TextElement.FontStretchProperty,\n            TextElement.FontStyleProperty,\n            TextElement.FontWeightProperty,\n            TextElement.ForegroundProperty,\n            TextElement.LanguageProperty\n        ];\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"TextElement.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var Block = (function (_super) {\n            __extends(Block, _super);\n            function Block() {\n                _super.apply(this, arguments);\n            }\n            return Block;\n        })(Documents.TextElement);\n        Documents.Block = Block;\n        Fayde.CoreLibrary.add(Block);\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var BlockCollection = (function (_super) {\n            __extends(BlockCollection, _super);\n            function BlockCollection() {\n                _super.apply(this, arguments);\n            }\n            BlockCollection.prototype._RaiseItemAdded = function (value, index) {\n                Fayde.Incite(this, {\n                    item: value,\n                    index: index,\n                    add: true\n                });\n            };\n            BlockCollection.prototype._RaiseItemRemoved = function (value, index) {\n                Fayde.Incite(this, {\n                    item: value,\n                    index: index,\n                    add: false\n                });\n            };\n            return BlockCollection;\n        })(Fayde.XamlObjectCollection);\n        Documents.BlockCollection = BlockCollection;\n        Fayde.CoreLibrary.add(BlockCollection);\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"TextElement.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var Inline = (function (_super) {\n            __extends(Inline, _super);\n            function Inline() {\n                _super.call(this);\n                Documents.TextReaction(Inline.TextDecorationsProperty, function (upd, ov, nv, te) {\n                    Fayde.Incite(te, {\n                        type: 'font',\n                        full: upd.invalidateFont()\n                    });\n                }, false, true, this);\n            }\n            Inline.prototype.Equals = function (inline) {\n                if (this.TextDecorations !== inline.TextDecorations)\n                    return false;\n                return _super.prototype.Equals.call(this, inline);\n            };\n            Inline.prototype.IsInheritable = function (propd) {\n                if (propd === Inline.TextDecorationsProperty)\n                    return true;\n                return _super.prototype.IsInheritable.call(this, propd);\n            };\n            Inline.TextDecorationsProperty = Fayde.InheritableOwner.TextDecorationsProperty.ExtendTo(Inline);\n            return Inline;\n        })(Documents.TextElement);\n        Documents.Inline = Inline;\n        Fayde.CoreLibrary.add(Inline);\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var InlineCollection = (function (_super) {\n            __extends(InlineCollection, _super);\n            function InlineCollection() {\n                _super.apply(this, arguments);\n            }\n            InlineCollection.prototype._RaiseItemAdded = function (value, index) {\n                Fayde.Incite(this, {\n                    item: value,\n                    index: index,\n                    add: true\n                });\n            };\n            InlineCollection.prototype._RaiseItemRemoved = function (value, index) {\n                Fayde.Incite(this, {\n                    item: value,\n                    index: index,\n                    add: false\n                });\n            };\n            return InlineCollection;\n        })(Fayde.XamlObjectCollection);\n        Documents.InlineCollection = InlineCollection;\n        Fayde.CoreLibrary.add(InlineCollection);\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Inline.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var LineBreak = (function (_super) {\n            __extends(LineBreak, _super);\n            function LineBreak() {\n                _super.apply(this, arguments);\n            }\n            return LineBreak;\n        })(Documents.Inline);\n        Documents.LineBreak = LineBreak;\n        Fayde.CoreLibrary.add(LineBreak);\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Block.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var Paragraph = (function (_super) {\n            __extends(Paragraph, _super);\n            function Paragraph() {\n                var _this = this;\n                _super.call(this);\n                var coll = Paragraph.InlinesProperty.Initialize(this);\n                coll.AttachTo(this);\n                Fayde.ReactTo(coll, this, function (obj) { return _this.InlinesChanged(obj.item, obj.add); });\n            }\n            Paragraph.prototype.CreateNode = function () {\n                return new Documents.TextElementNode(this, \"Inlines\");\n            };\n            Paragraph.prototype.InlinesChanged = function (inline, isAdd) {\n                var _this = this;\n                if (isAdd)\n                    Fayde.Providers.InheritedStore.PropagateInheritedOnAdd(this, inline.XamlNode);\n                if (isAdd)\n                    Fayde.ReactTo(inline, this, function (obj) { return Fayde.Incite(_this, obj); });\n                else\n                    Fayde.UnreactTo(inline, this);\n                Fayde.Incite(this, {\n                    type: 'text',\n                    full: true\n                });\n            };\n            Paragraph.InlinesProperty = DependencyProperty.RegisterImmutable(\"Inlines\", function () { return Documents.InlineCollection; }, Paragraph);\n            return Paragraph;\n        })(Documents.Block);\n        Documents.Paragraph = Paragraph;\n        Fayde.CoreLibrary.add(Paragraph);\n        Fayde.Markup.Content(Paragraph, Paragraph.InlinesProperty);\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Inline.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var Run = (function (_super) {\n            __extends(Run, _super);\n            function Run() {\n                _super.apply(this, arguments);\n            }\n            Run.prototype._SerializeText = function () { return this.Text; };\n            Run.prototype.IsInheritable = function (propd) {\n                if (propd === Run.FlowDirectionProperty)\n                    return true;\n                return _super.prototype.IsInheritable.call(this, propd);\n            };\n            Run.FlowDirectionProperty = Fayde.InheritableOwner.FlowDirectionProperty.ExtendTo(Run);\n            Run.TextProperty = DependencyProperty.Register(\"Text\", function () { return String; }, Run);\n            return Run;\n        })(Documents.Inline);\n        Documents.Run = Run;\n        Fayde.CoreLibrary.add(Run);\n        var reactions;\n        (function (reactions) {\n            Documents.TextReaction(Run.TextProperty, function (upd, ov, nv, run) {\n                Fayde.Incite(run, {\n                    type: 'text',\n                    full: true\n                });\n            }, false);\n        })(reactions || (reactions = {}));\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"TextElement.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var Section = (function (_super) {\n            __extends(Section, _super);\n            function Section() {\n                var _this = this;\n                _super.call(this);\n                var coll = Section.BlocksProperty.Initialize(this);\n                coll.AttachTo(this);\n                Fayde.ReactTo(coll, this, function (obj) { return _this.BlocksChanged(obj.item, obj.add); });\n            }\n            Section.prototype.CreateNode = function () {\n                return new Documents.TextElementNode(this, \"Blocks\");\n            };\n            Section.prototype.BlocksChanged = function (block, isAdd) {\n                var _this = this;\n                if (isAdd)\n                    Fayde.Providers.InheritedStore.PropagateInheritedOnAdd(this, block.XamlNode);\n                if (isAdd)\n                    Fayde.ReactTo(block, this, function (obj) { return Fayde.Incite(_this, obj); });\n                else\n                    Fayde.UnreactTo(block, this);\n                Fayde.Incite(this, {\n                    type: 'text',\n                    full: true\n                });\n            };\n            Section.BlocksProperty = DependencyProperty.RegisterImmutable(\"Blocks\", function () { return Documents.BlockCollection; }, Section);\n            return Section;\n        })(Documents.TextElement);\n        Documents.Section = Section;\n        Fayde.CoreLibrary.add(Section);\n        Fayde.Markup.Content(Section, Section.BlocksProperty);\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Inline.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var Span = (function (_super) {\n            __extends(Span, _super);\n            function Span() {\n                var _this = this;\n                _super.call(this);\n                var coll = Span.InlinesProperty.Initialize(this);\n                coll.AttachTo(this);\n                Fayde.ReactTo(coll, this, function (obj) { return _this.InlinesChanged(obj.item, obj.add); });\n            }\n            Span.prototype.CreateNode = function () {\n                return new Documents.TextElementNode(this, \"Inlines\");\n            };\n            Span.prototype._SerializeText = function () {\n                var str = \"\";\n                var enumerator = this.Inlines.getEnumerator();\n                while (enumerator.moveNext()) {\n                    str += enumerator.current._SerializeText();\n                }\n                return str;\n            };\n            Span.prototype.InlinesChanged = function (inline, isAdd) {\n                var _this = this;\n                if (isAdd)\n                    Fayde.Providers.InheritedStore.PropagateInheritedOnAdd(this, inline.XamlNode);\n                if (isAdd)\n                    Fayde.ReactTo(inline, this, function (obj) { return Fayde.Incite(_this, obj); });\n                else\n                    Fayde.UnreactTo(inline, this);\n                Fayde.Incite(this, {\n                    type: 'text',\n                    full: true\n                });\n            };\n            Span.InlinesProperty = DependencyProperty.RegisterImmutable(\"Inlines\", function () { return Documents.InlineCollection; }, Span);\n            return Span;\n        })(Documents.Inline);\n        Documents.Span = Span;\n        Fayde.CoreLibrary.add(Span);\n        Fayde.Markup.Content(Span, Span.InlinesProperty);\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Span.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Documents;\n    (function (Documents) {\n        var Underline = (function (_super) {\n            __extends(Underline, _super);\n            function Underline() {\n                _super.apply(this, arguments);\n            }\n            return Underline;\n        })(Documents.Span);\n        Documents.Underline = Underline;\n        Fayde.CoreLibrary.add(Underline);\n    })(Documents = Fayde.Documents || (Fayde.Documents = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject\" />\nvar Fayde;\n(function (Fayde) {\n    var Application = (function (_super) {\n        __extends(Application, _super);\n        function Application() {\n            _super.call(this);\n            this.Loaded = new nullstone.Event();\n            this.Address = null;\n            this.AllowNavigation = true;\n            this._IsRunning = false;\n            this._IsLoaded = false;\n            this._Storyboards = [];\n            this._ClockTimer = new Fayde.ClockTimer();\n            this._RootVisual = null;\n            this.Resized = new Fayde.RoutedEvent();\n            this.XamlNode.NameScope = new Fayde.NameScope(true);\n            var rd = Application.ResourcesProperty.Initialize(this);\n            this.MainSurface = new Fayde.Surface(this);\n            this.Address = new Fayde.Uri(document.URL);\n        }\n        Application.prototype.OnThemeNameChanged = function (oldThemeName, newThemeName) {\n            var _this = this;\n            if (!this._IsLoaded)\n                return;\n            Fayde.ThemeManager.LoadAsync(newThemeName)\n                .then(function () { return _this._ApplyTheme(); }, function (err) { return console.error(\"Could not load theme.\", err); });\n        };\n        Application.prototype.OnZoomFactorChanged = function (oldZoom, newZoom) {\n        };\n        Application.prototype._ApplyTheme = function () {\n            for (var walker = this.MainSurface.walkLayers(); walker.step();) {\n                for (var subwalker = walker.current.walkDeep(); subwalker.step();) {\n                    var node = subwalker.current.getAttachedValue(\"$node\");\n                    Fayde.Providers.ImplicitStyleBroker.Set(node.XObject, Fayde.Providers.StyleMask.Theme);\n                }\n            }\n        };\n        Application.prototype.OnResized = function (oldSize, newSize) {\n            this.Resized.raise(this, new Fayde.SizeChangedEventArgs(oldSize, newSize));\n        };\n        Object.defineProperty(Application.prototype, \"RootVisual\", {\n            get: function () {\n                for (var walker = this.MainSurface.walkLayers(); walker.step();) {\n                    var node = walker.current.getAttachedValue(\"$node\");\n                    return node.XObject;\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Application.prototype.$$SetRootVisual = function (value) {\n            this._RootVisual = value;\n        };\n        Application.prototype.Attach = function (canvas) {\n            this.MainSurface.init(canvas);\n            this.MainSurface.Attach(this._RootVisual, true);\n        };\n        Application.prototype.Start = function () {\n            this.Update();\n            this.Render();\n            this._ClockTimer.RegisterTimer(this);\n            this._IsLoaded = true;\n            this.Loaded.raiseAsync(this, null);\n        };\n        Application.prototype.OnTicked = function (lastTime, nowTime) {\n            this.ProcessStoryboards(lastTime, nowTime);\n            this.Update();\n            this.Render();\n        };\n        Application.prototype.StopEngine = function () {\n            this._ClockTimer.UnregisterTimer(this);\n        };\n        Application.prototype.ProcessStoryboards = function (lastTime, nowTime) {\n            perfex.timer.start('StoryboardsProcess', this);\n            for (var i = 0, sbs = this._Storyboards; i < sbs.length; i++) {\n                sbs[i].Update(nowTime);\n            }\n            perfex.timer.stop();\n        };\n        Application.prototype.Update = function () {\n            if (this._IsRunning)\n                return;\n            this._IsRunning = true;\n            perfex.timer.start('UpdateLayout', this);\n            var updated = this.MainSurface.updateLayout();\n            perfex.timer.stop();\n            this._IsRunning = false;\n        };\n        Application.prototype.Render = function () {\n            perfex.timer.start('Render', this);\n            this.MainSurface.render();\n            perfex.timer.stop();\n        };\n        Application.prototype.RegisterStoryboard = function (storyboard) {\n            var sbs = this._Storyboards;\n            var index = sbs.indexOf(storyboard);\n            if (index === -1)\n                sbs.push(storyboard);\n        };\n        Application.prototype.UnregisterStoryboard = function (storyboard) {\n            var sbs = this._Storyboards;\n            var index = sbs.indexOf(storyboard);\n            if (index !== -1)\n                sbs.splice(index, 1);\n        };\n        Application.GetAsync = function (url) {\n            return Fayde.Markup.Resolve(url)\n                .then(function (appm) {\n                TimelineProfile.Parse(true, \"App\");\n                var app = Fayde.Markup.Load(null, appm);\n                TimelineProfile.Parse(false, \"App\");\n                if (!(app instanceof Application))\n                    throw new Error(\"Markup must be an Application.\");\n                return app;\n            });\n        };\n        Application.ResourcesProperty = DependencyProperty.RegisterImmutable(\"Resources\", function () { return Fayde.ResourceDictionary; }, Application);\n        Application.ThemeNameProperty = DependencyProperty.Register(\"ThemeName\", function () { return String; }, Application, \"Default\", function (d, args) { return d.OnThemeNameChanged(args.OldValue, args.NewValue); });\n        Application.ZoomFactorProperty = DependencyProperty.RegisterReadOnly(\"ZoomFactor\", function () { return Number; }, Application, 1.0, function (d, args) { return d.OnZoomFactorChanged(args.OldValue, args.NewValue); });\n        return Application;\n    })(Fayde.DependencyObject);\n    Fayde.Application = Application;\n    Fayde.CoreLibrary.add(Application);\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var requestAnimFrame = (function () {\n        return window.requestAnimationFrame ||\n            window.webkitRequestAnimationFrame ||\n            window.mozRequestAnimationFrame ||\n            window.oRequestAnimationFrame ||\n            window.msRequestAnimationFrame ||\n            function (callback) {\n                window.setTimeout(callback, 1000 / 200);\n            };\n    })();\n    var ClockTimer = (function () {\n        function ClockTimer() {\n            this._Listeners = [];\n            this._LastTime = 0;\n        }\n        ClockTimer.prototype.RegisterTimer = function (listener) {\n            var ls = this._Listeners;\n            var index = ls.indexOf(listener);\n            if (index > -1)\n                return;\n            ls.push(listener);\n            if (ls.length === 1)\n                this._RequestAnimationTick();\n        };\n        ClockTimer.prototype.UnregisterTimer = function (listener) {\n            var ls = this._Listeners;\n            var index = ls.indexOf(listener);\n            if (index > -1)\n                ls.splice(index, 1);\n        };\n        ClockTimer.prototype._DoTick = function () {\n            var nowTime = new Date().getTime();\n            var lastTime = this._LastTime;\n            this._LastTime = nowTime;\n            var ls = this._Listeners;\n            var len = ls.length;\n            if (len === 0)\n                return;\n            for (var i = 0; i < len; i++) {\n                ls[i].OnTicked(lastTime, nowTime);\n            }\n            this._RequestAnimationTick();\n        };\n        ClockTimer.prototype._RequestAnimationTick = function () {\n            var _this = this;\n            requestAnimFrame(function () { return _this._DoTick(); });\n        };\n        return ClockTimer;\n    })();\n    Fayde.ClockTimer = ClockTimer;\n})(Fayde || (Fayde = {}));\nvar Exception = (function () {\n    function Exception(message) {\n        this.Message = message;\n    }\n    Exception.prototype.toString = function () {\n        var typeName = this.constructor.name;\n        if (typeName)\n            return typeName + \": \" + this.Message;\n        return this.Message;\n    };\n    return Exception;\n})();\nvar ArgumentException = (function (_super) {\n    __extends(ArgumentException, _super);\n    function ArgumentException(message) {\n        _super.call(this, message);\n    }\n    return ArgumentException;\n})(Exception);\nvar ArgumentNullException = (function (_super) {\n    __extends(ArgumentNullException, _super);\n    function ArgumentNullException(message) {\n        _super.call(this, message);\n    }\n    return ArgumentNullException;\n})(Exception);\nvar InvalidOperationException = (function (_super) {\n    __extends(InvalidOperationException, _super);\n    function InvalidOperationException(message) {\n        _super.call(this, message);\n    }\n    return InvalidOperationException;\n})(Exception);\nvar XamlParseException = (function (_super) {\n    __extends(XamlParseException, _super);\n    function XamlParseException(message, data) {\n        _super.call(this, message);\n        if (data) {\n            Object.defineProperties(this, {\n                \"Data\": { value: data, writable: false }\n            });\n        }\n    }\n    return XamlParseException;\n})(Exception);\nvar XamlMarkupParseException = (function (_super) {\n    __extends(XamlMarkupParseException, _super);\n    function XamlMarkupParseException(message) {\n        _super.call(this, message);\n    }\n    return XamlMarkupParseException;\n})(Exception);\nvar NotSupportedException = (function (_super) {\n    __extends(NotSupportedException, _super);\n    function NotSupportedException(message) {\n        _super.call(this, message);\n    }\n    return NotSupportedException;\n})(Exception);\nvar IndexOutOfRangeException = (function (_super) {\n    __extends(IndexOutOfRangeException, _super);\n    function IndexOutOfRangeException(index) {\n        _super.call(this, index.toString());\n    }\n    return IndexOutOfRangeException;\n})(Exception);\nvar ArgumentOutOfRangeException = (function (_super) {\n    __extends(ArgumentOutOfRangeException, _super);\n    function ArgumentOutOfRangeException(msg) {\n        _super.call(this, msg);\n    }\n    return ArgumentOutOfRangeException;\n})(Exception);\nvar AttachException = (function (_super) {\n    __extends(AttachException, _super);\n    function AttachException(message, data) {\n        _super.call(this, message);\n        this.Data = data;\n    }\n    return AttachException;\n})(Exception);\nvar InvalidJsonException = (function (_super) {\n    __extends(InvalidJsonException, _super);\n    function InvalidJsonException(jsonText, innerException) {\n        _super.call(this, \"Invalid json.\");\n        this.JsonText = jsonText;\n        this.InnerException = innerException;\n    }\n    return InvalidJsonException;\n})(Exception);\nvar TargetInvocationException = (function (_super) {\n    __extends(TargetInvocationException, _super);\n    function TargetInvocationException(message, innerException) {\n        _super.call(this, message);\n        this.InnerException = innerException;\n    }\n    return TargetInvocationException;\n})(Exception);\nvar UnknownTypeException = (function (_super) {\n    __extends(UnknownTypeException, _super);\n    function UnknownTypeException(fullTypeName) {\n        _super.call(this, fullTypeName);\n        this.FullTypeName = fullTypeName;\n    }\n    return UnknownTypeException;\n})(Exception);\nvar FormatException = (function (_super) {\n    __extends(FormatException, _super);\n    function FormatException(message) {\n        _super.call(this, message);\n    }\n    return FormatException;\n})(Exception);\nvar Fayde;\n(function (Fayde) {\n    var Engine;\n    (function (Engine) {\n        var FocusManager = (function () {\n            function FocusManager(state) {\n                this._ChangedEvents = [];\n                this._State = state;\n            }\n            FocusManager.prototype.GetFocusToRoot = function () {\n                if (!this.Node)\n                    return null;\n                return elementPathToRoot(this.Node);\n            };\n            FocusManager.prototype.OnNodeDetached = function (node) {\n                var f = this.Node;\n                while (f) {\n                    if (f === node) {\n                        this._FocusNode();\n                        return;\n                    }\n                    f = f.VisualParentNode;\n                }\n            };\n            FocusManager.prototype.TabFocus = function (isShift) {\n                if (!this.Node)\n                    return false;\n                Fayde.TabNavigationWalker.Focus(this.Node, !isShift);\n                return true;\n            };\n            FocusManager.prototype.Focus = function (ctrlNode, recurse) {\n                recurse = recurse === undefined || recurse === true;\n                if (!ctrlNode.IsAttached)\n                    return false;\n                var walker = Fayde.DeepTreeWalker(ctrlNode);\n                var uin;\n                while (uin = walker.Step()) {\n                    if (uin.XObject.Visibility !== Fayde.Visibility.Visible) {\n                        walker.SkipBranch();\n                        continue;\n                    }\n                    if (!(uin instanceof Fayde.Controls.ControlNode))\n                        continue;\n                    var cn = uin;\n                    var c = cn.XObject;\n                    if (!c.IsEnabled) {\n                        if (!recurse)\n                            return false;\n                        walker.SkipBranch();\n                        continue;\n                    }\n                    var loaded = ctrlNode.IsLoaded;\n                    var check = ctrlNode;\n                    while (!loaded && (check = check.VisualParentNode)) {\n                        loaded = loaded || check.IsLoaded;\n                    }\n                    if (loaded && cn.LayoutUpdater.assets.totalIsRenderVisible && c.IsTabStop)\n                        return this._FocusNode(cn);\n                    if (!recurse)\n                        return false;\n                }\n                return false;\n            };\n            FocusManager.prototype._FocusNode = function (uin) {\n                if (uin === this.Node)\n                    return true;\n                var fn = this.Node;\n                if (fn) {\n                    this._ChangedEvents.push({\n                        LostFocus: elementPathToRoot(fn),\n                        GotFocus: null\n                    });\n                }\n                this.Node = uin;\n                if (uin) {\n                    this._ChangedEvents.push({\n                        LostFocus: null,\n                        GotFocus: elementPathToRoot(uin)\n                    });\n                }\n                if (this._State.IsFirstUserInitiated)\n                    this.EmitChangesAsync();\n                return true;\n            };\n            FocusManager.prototype.EmitChanges = function () {\n                var evts = this._ChangedEvents;\n                var cur;\n                while (cur = evts.shift()) {\n                    this._EmitFocusList(\"lost\", cur.LostFocus);\n                    this._EmitFocusList(\"got\", cur.GotFocus);\n                }\n            };\n            FocusManager.prototype.EmitChangesAsync = function () {\n                var _this = this;\n                setTimeout(function () { return _this.EmitChanges(); }, 1);\n            };\n            FocusManager.prototype._EmitFocusList = function (type, list) {\n                if (!list)\n                    return;\n                var cur;\n                while (cur = list.shift()) {\n                    cur._EmitFocusChange(type);\n                }\n            };\n            FocusManager.prototype.FocusAnyLayer = function (walker) {\n                if (!this.Node) {\n                    var top;\n                    for (var node; walker.step();) {\n                        node = walker.current.getAttachedValue(\"$node\");\n                        if (!top)\n                            top = node;\n                        if (Fayde.TabNavigationWalker.Focus(node))\n                            break;\n                    }\n                    if (!this.Node && top)\n                        this._FocusNode(top);\n                }\n                if (this._State.IsFirstUserInitiated)\n                    this.EmitChangesAsync();\n            };\n            return FocusManager;\n        })();\n        Engine.FocusManager = FocusManager;\n        function elementPathToRoot(source) {\n            var list = [];\n            while (source) {\n                list.push(source);\n                source = source.VisualParentNode;\n            }\n            return list;\n        }\n    })(Engine = Fayde.Engine || (Fayde.Engine = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Engine;\n    (function (Engine) {\n        var InputManager = (function () {\n            function InputManager(surface) {\n                this._Cursor = Fayde.CursorType.Default;\n                this.SetCursor = function (cursor) { };\n                this._CurrentPos = null;\n                this._EmittingMouseEvent = false;\n                this._InputList = [];\n                this._Captured = null;\n                this._PendingCapture = null;\n                this._PendingReleaseCapture = false;\n                this._CapturedInputList = [];\n                this._Surface = surface;\n                this._KeyInterop = Fayde.Input.CreateKeyInterop();\n                this._MouseInterop = Fayde.Input.CreateMouseInterop();\n                this._TouchInterop = Fayde.Input.CreateTouchInterop();\n                this._Focus = new Engine.FocusManager(this._State = {\n                    IsUserInitiated: false,\n                    IsFirstUserInitiated: false\n                });\n            }\n            Object.defineProperty(InputManager.prototype, \"FocusedNode\", {\n                get: function () { return this._Focus.Node; },\n                enumerable: true,\n                configurable: true\n            });\n            InputManager.prototype.Focus = function (node, recurse) { return this._Focus.Focus(node, recurse); };\n            InputManager.prototype.Register = function (canvas) {\n                var _this = this;\n                this.SetCursor = function (cursor) { return canvas.style.cursor = Fayde.CursorTypeMappings[Fayde.CursorType[_this._Cursor = cursor]]; };\n                this._KeyInterop.RegisterEvents(this);\n                this._MouseInterop.RegisterEvents(this, canvas);\n                this._TouchInterop.Register(this, canvas);\n            };\n            InputManager.prototype.OnNodeDetached = function (node) {\n                var il = this._InputList;\n                if (il[il.length - 1] === node)\n                    this._InputList = [];\n                this._Focus.OnNodeDetached(node);\n            };\n            InputManager.prototype.SetIsUserInitiatedEvent = function (value) {\n                this._Focus.EmitChanges();\n                this._State.IsFirstUserInitiated = this._State.IsFirstUserInitiated || value;\n                this._State.IsUserInitiated = value;\n            };\n            InputManager.prototype.HandleKeyDown = function (args) {\n                this.SetIsUserInitiatedEvent(true);\n                Fayde.Input.Keyboard.RefreshModifiers(args.Modifiers);\n                var focusToRoot = this._Focus.GetFocusToRoot();\n                if (focusToRoot)\n                    this._EmitKeyDown(focusToRoot, args);\n                if (!args.Handled && args.Key === Fayde.Input.Key.Tab) {\n                    if (!this._Focus.TabFocus(args.Modifiers.Shift))\n                        this._Focus.FocusAnyLayer(this._Surface.walkLayers(true));\n                    args.Handled = true;\n                }\n                this.SetIsUserInitiatedEvent(false);\n            };\n            InputManager.prototype._EmitKeyDown = function (list, args, endIndex) {\n                if (endIndex === 0)\n                    return;\n                if (!endIndex || endIndex === -1)\n                    endIndex = list.length;\n                var i = 0;\n                var cur = list.shift();\n                while (cur && i < endIndex) {\n                    cur._EmitKeyDown(args);\n                    cur = list.shift();\n                    i++;\n                }\n            };\n            InputManager.prototype.HandleMousePress = function (button, pos) {\n                this.SetIsUserInitiatedEvent(true);\n                var handled = this.HandleMouseEvent(Fayde.Input.MouseInputType.MouseDown, button, pos);\n                this.UpdateCursorFromInputList();\n                this.SetIsUserInitiatedEvent(false);\n                return handled;\n            };\n            InputManager.prototype.HandleMouseRelease = function (button, pos) {\n                this.SetIsUserInitiatedEvent(true);\n                this.HandleMouseEvent(Fayde.Input.MouseInputType.MouseUp, button, pos);\n                this.UpdateCursorFromInputList();\n                this.SetIsUserInitiatedEvent(false);\n                if (this._Captured)\n                    this._PerformReleaseCapture();\n            };\n            InputManager.prototype.HandleMouseEvent = function (type, button, pos, delta, emitLeave, emitEnter) {\n                this._CurrentPos = pos;\n                if (this._EmittingMouseEvent)\n                    return false;\n                var newInputList = this.HitTestPoint(pos);\n                if (!newInputList)\n                    return false;\n                this._EmittingMouseEvent = true;\n                var indices = { Index1: -1, Index2: -1 };\n                findFirstCommonElement(this._InputList, newInputList, indices);\n                if (emitLeave === undefined || emitLeave === true)\n                    this._EmitMouseList(Fayde.Input.MouseInputType.MouseLeave, button, pos, delta, this._InputList, indices.Index1);\n                if (emitEnter === undefined || emitEnter === true)\n                    this._EmitMouseList(Fayde.Input.MouseInputType.MouseEnter, button, pos, delta, newInputList, indices.Index2);\n                var handled = false;\n                if (type !== Fayde.Input.MouseInputType.NoOp)\n                    handled = this._EmitMouseList(type, button, pos, delta, this._Captured ? this._CapturedInputList : newInputList);\n                this._InputList = newInputList;\n                if (this._Surface.HitTestCallback)\n                    this._Surface.HitTestCallback(newInputList);\n                if (this._PendingCapture)\n                    this._PerformCapture(this._PendingCapture);\n                if (this._PendingReleaseCapture || (this._Captured && !this._Captured.CanCaptureMouse()))\n                    this._PerformReleaseCapture();\n                this._EmittingMouseEvent = false;\n                return handled;\n            };\n            InputManager.prototype._EmitMouseList = function (type, button, pos, delta, list, endIndex) {\n                var handled = false;\n                if (endIndex === 0)\n                    return handled;\n                if (!endIndex || endIndex === -1)\n                    endIndex = list.length;\n                var args = this._MouseInterop.CreateEventArgs(type, pos, delta);\n                var node = list[0];\n                if (node && args instanceof Fayde.RoutedEventArgs)\n                    args.Source = node.XObject;\n                var isL = this._MouseInterop.IsLeftButton(button);\n                var isR = this._MouseInterop.IsRightButton(button);\n                if (Fayde.Engine.Inspection.TryHandle(type, isL, isR, args, list))\n                    return true;\n                for (var i = 0; i < endIndex; i++) {\n                    node = list[i];\n                    if (type === Fayde.Input.MouseInputType.MouseLeave)\n                        args.Source = node.XObject;\n                    if (node._EmitMouseEvent(type, isL, isR, args))\n                        handled = true;\n                    if (type === Fayde.Input.MouseInputType.MouseLeave)\n                        args = this._MouseInterop.CreateEventArgs(type, pos, delta);\n                }\n                return handled;\n            };\n            InputManager.prototype.HitTestPoint = function (pos) {\n                return this._Surface.hitTest(pos).map(function (upd) { return upd.getAttachedValue(\"$node\"); });\n            };\n            InputManager.prototype.UpdateCursorFromInputList = function () {\n                var newCursor = Fayde.CursorType.Default;\n                var list = this._Captured ? this._CapturedInputList : this._InputList;\n                var len = list.length;\n                for (var i = 0; i < len; i++) {\n                    newCursor = list[i].XObject.Cursor;\n                    if (newCursor !== Fayde.CursorType.Default)\n                        break;\n                }\n                this.SetCursor(newCursor);\n            };\n            InputManager.prototype.SetMouseCapture = function (uin) {\n                if (this._Captured || this._PendingCapture)\n                    return uin === this._Captured || uin === this._PendingCapture;\n                if (!this._EmittingMouseEvent)\n                    return false;\n                this._PendingCapture = uin;\n                return true;\n            };\n            InputManager.prototype.ReleaseMouseCapture = function (uin) {\n                if (uin !== this._Captured && uin !== this._PendingCapture)\n                    return;\n                if (this._EmittingMouseEvent)\n                    this._PendingReleaseCapture = true;\n                else\n                    this._PerformReleaseCapture();\n            };\n            InputManager.prototype._PerformCapture = function (uin) {\n                this._Captured = uin;\n                var newInputList = [];\n                while (uin != null) {\n                    newInputList.push(uin);\n                    uin = uin.VisualParentNode;\n                }\n                this._CapturedInputList = newInputList;\n                this._PendingCapture = null;\n            };\n            InputManager.prototype._PerformReleaseCapture = function () {\n                var oldCaptured = this._Captured;\n                this._Captured = null;\n                this._PendingReleaseCapture = false;\n                oldCaptured._EmitLostMouseCapture(this._CurrentPos);\n                this.HandleMouseEvent(Fayde.Input.MouseInputType.NoOp, null, this._CurrentPos, undefined, false, true);\n            };\n            return InputManager;\n        })();\n        Engine.InputManager = InputManager;\n        function findFirstCommonElement(list1, list2, outObj) {\n            var i = list1.length - 1;\n            var j = list2.length - 1;\n            outObj.Index1 = -1;\n            outObj.Index2 = -1;\n            while (i >= 0 && j >= 0) {\n                if (list1[i] !== list2[j])\n                    return;\n                outObj.Index1 = i--;\n                outObj.Index2 = j--;\n            }\n        }\n    })(Engine = Fayde.Engine || (Fayde.Engine = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Engine;\n    (function (Engine) {\n        var Inspection = (function () {\n            function Inspection() {\n            }\n            Inspection.TryHandle = function (type, isLeftButton, isRightButton, args, htlist) {\n                if (!Fayde.IsInspectionOn)\n                    return false;\n                if (type !== Fayde.Input.MouseInputType.MouseDown)\n                    return false;\n                if (!isRightButton)\n                    return false;\n                if (!Fayde.Input.Keyboard.HasControl())\n                    return false;\n                var pos = args.AbsolutePos;\n                showMenu(pos, htlist);\n                return true;\n            };\n            Inspection.Kill = function () {\n                if (menu)\n                    menu.style.display = \"none\";\n            };\n            return Inspection;\n        })();\n        Engine.Inspection = Inspection;\n        var menu = null;\n        function showMenu(pos, htlist) {\n            menu = menu || createMenu();\n            fillMenu(htlist);\n            menu.style.left = pos.x.toString() + \"px\";\n            menu.style.top = pos.y.toString() + \"px\";\n            menu.style.display = \"\";\n        }\n        function createMenu() {\n            var m = document.createElement(\"div\");\n            m.style.position = \"absolute\";\n            m.style.display = \"none\";\n            m.style.backgroundColor = \"rgba(128,128,128,1.0)\";\n            m.style.padding = \"5px\";\n            m.style.fontFamily = \"Tahoma\";\n            m.oncontextmenu = function () { return false; };\n            document.body.appendChild(m);\n            return m;\n        }\n        function fillMenu(htlist) {\n            menu.innerHTML = \"\";\n            var len = htlist.length;\n            for (var i = 0; i < len; i++) {\n                menu.appendChild(createMenuItem(htlist[i]));\n            }\n        }\n        function createMenuItem(cur) {\n            var miDiv = document.createElement(\"div\");\n            miDiv.style.cursor = \"pointer\";\n            miDiv.innerHTML = serializeUINode(cur);\n            miDiv.onclick = function () { return handleMenuItemClick(cur); };\n            miDiv.onmouseenter = function () { return handleMenuItemEnter(miDiv); };\n            miDiv.onmouseleave = function () { return handleMenuItemLeave(miDiv); };\n            return miDiv;\n        }\n        function serializeUINode(uin) {\n            var cur = uin.XObject;\n            var str = \"\";\n            var id = cur._ID;\n            if (id)\n                str += \"[\" + id + \"] \";\n            str += cur.constructor.name;\n            var name = uin.Name;\n            if (name) {\n                str += \" [\";\n                var ns = uin.NameScope;\n                if (!ns)\n                    str += \"^\";\n                else if (ns.IsRoot)\n                    str += \"+\";\n                else\n                    str += \"-\";\n                str += name + \"]\";\n            }\n            return str;\n        }\n        function handleMenuItemClick(uin) {\n            menu.style.display = \"none\";\n        }\n        function handleMenuItemEnter(mi) {\n            mi.style.textDecoration = \"underline\";\n        }\n        function handleMenuItemLeave(mi) {\n            mi.style.textDecoration = \"none\";\n        }\n    })(Engine = Fayde.Engine || (Fayde.Engine = {}));\n})(Fayde || (Fayde = {}));\nvar resizeTimeout;\nvar Fayde;\n(function (Fayde) {\n    var Surface = (function (_super) {\n        __extends(Surface, _super);\n        function Surface(app) {\n            _super.call(this);\n            this.$$root = null;\n            this.$$zoom = 1;\n            Object.defineProperty(this, \"App\", { value: app, writable: false });\n            this.$$inputMgr = new Fayde.Engine.InputManager(this);\n        }\n        Surface.prototype.init = function (canvas) {\n            var _this = this;\n            _super.prototype.init.call(this, canvas);\n            if (!this.$$updateZoom())\n                this.$$setScrollbars(false);\n            this.$$stretchCanvas();\n            document.body.onresize = function (e) { return _this.$$handleResize(window.event ? window.event : e); };\n            window.onresize = function (e) { return _this.$$handleResize(window.event ? window.event : e); };\n            this.$$inputMgr.Register(canvas);\n        };\n        Surface.prototype.Attach = function (uie, root) {\n            if (root === true) {\n                if (!(uie instanceof Fayde.UIElement))\n                    throw new Exception(\"Unsupported top level element.\");\n                if (this.$$root)\n                    this.detachLayer(this.$$root.XamlNode.LayoutUpdater);\n                this.$$root = uie;\n            }\n            this.attachLayer(uie.XamlNode.LayoutUpdater, root);\n        };\n        Surface.prototype.attachLayer = function (layer, root) {\n            _super.prototype.attachLayer.call(this, layer, root);\n            var node = layer.getAttachedValue(\"$node\");\n            node.SetIsLoaded(true);\n            node.SetIsAttached(true);\n        };\n        Surface.prototype.Detach = function (uie) {\n            this.detachLayer(uie.XamlNode.LayoutUpdater);\n        };\n        Surface.prototype.detachLayer = function (layer) {\n            var node = layer.getAttachedValue(\"$node\");\n            node.SetIsLoaded(false);\n            node.SetIsAttached(false);\n            _super.prototype.detachLayer.call(this, layer);\n        };\n        Surface.prototype.updateLayout = function () {\n            var updated = _super.prototype.updateLayout.call(this);\n            if (updated)\n                this.$$onLayoutUpdated();\n            return updated;\n        };\n        Surface.prototype.$$onLayoutUpdated = function () {\n            for (var walker = this.walkLayers(); walker.step();) {\n                for (var subwalker = walker.current.walkDeep(); subwalker.step();) {\n                    var upd = subwalker.current;\n                    var node = upd.getAttachedValue(\"$node\");\n                    var xobj = node.XObject;\n                    xobj.LayoutUpdated.raise(xobj, null);\n                }\n            }\n        };\n        Surface.prototype.Focus = function (node, recurse) {\n            return this.$$inputMgr.Focus(node, recurse);\n        };\n        Surface.HasFocus = function (uie) {\n            var uin = uie.XamlNode;\n            var surface = uin.LayoutUpdater.tree.surface;\n            if (!surface)\n                return false;\n            var curNode = surface.$$inputMgr.FocusedNode;\n            while (curNode) {\n                if (curNode === uin)\n                    return true;\n                curNode = curNode.VisualParentNode;\n            }\n            return false;\n        };\n        Surface.Focus = function (uie, recurse) {\n            var uin = uie.XamlNode;\n            var surface = uin.LayoutUpdater.tree.surface;\n            if (!surface)\n                return false;\n            return surface.$$inputMgr.Focus(uin, recurse);\n        };\n        Surface.GetFocusedElement = function (uie) {\n            var uin = uie.XamlNode;\n            var surface = uin.LayoutUpdater.tree.surface;\n            if (!surface)\n                return null;\n            var curNode = surface.$$inputMgr.FocusedNode;\n            return curNode.XObject;\n        };\n        Surface.RemoveFocusFrom = function (uie) {\n            var node = uie.XamlNode;\n            var surface = node.LayoutUpdater.tree.surface;\n            if (!surface)\n                return false;\n            surface.$$inputMgr.OnNodeDetached(node);\n            return true;\n        };\n        Surface.SetMouseCapture = function (uin) {\n            var surface = uin.LayoutUpdater.tree.surface;\n            if (!surface)\n                return false;\n            return surface.$$inputMgr.SetMouseCapture(uin);\n        };\n        Surface.ReleaseMouseCapture = function (uin) {\n            var surface = uin.LayoutUpdater.tree.surface;\n            if (!surface)\n                return;\n            surface.$$inputMgr.ReleaseMouseCapture(uin);\n        };\n        Surface.prototype.$$handleResize = function (evt) {\n            var _this = this;\n            if (resizeTimeout)\n                clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function () {\n                _this.$$updateZoom();\n                _this.$$stretchCanvas();\n                resizeTimeout = null;\n            }, 15);\n        };\n        Surface.prototype.$$stretchCanvas = function () {\n            this.resize(Math.round(window.innerWidth * this.$$zoom), Math.round(window.innerHeight * this.$$zoom));\n        };\n        Surface.prototype.$$updateZoom = function () {\n            var oldZoom = this.$$zoom;\n            var newZoom = minerva.zoom.calc();\n            if (oldZoom === newZoom)\n                return false;\n            this.$$zoom = newZoom;\n            this.onZoomChanged(oldZoom, newZoom);\n            return true;\n        };\n        Surface.prototype.onZoomChanged = function (oldZoom, newZoom) {\n            this.App.SetCurrentValue(Fayde.Application.ZoomFactorProperty, newZoom);\n            this.$$setScrollbars(newZoom > 1);\n            this.updateDpiRatio();\n        };\n        Surface.prototype.$$setScrollbars = function (show) {\n            var style = document.body.style;\n            style.overflowY = style.overflowX = show === true ? \"\" : \"hidden\";\n        };\n        return Surface;\n    })(minerva.engine.Surface);\n    Fayde.Surface = Surface;\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Theme = (function () {\n        function Theme(name, libUri) {\n            this.Resources = null;\n            this.$$loaded = false;\n            this.$$retrieved = false;\n            this.Name = name;\n            this.LibraryUri = libUri;\n        }\n        Theme.prototype.RetrieveAsync = function () {\n            var _this = this;\n            var reqUri = Fayde.ThemeConfig.GetRequestUri(this.LibraryUri, this.Name);\n            if (!reqUri || this.$$retrieved)\n                return Promise.resolve(reqUri);\n            return Fayde.Markup.Retrieve(reqUri)\n                .then(function () {\n                _this.$$retrieved = true;\n                return reqUri;\n            });\n        };\n        Theme.prototype.LoadAsync = function () {\n            var _this = this;\n            if (this.$$loaded)\n                return Promise.resolve(this);\n            return new Promise(function (resolve, reject) {\n                _this.RetrieveAsync()\n                    .then(function (reqUri) { return Fayde.Markup.Resolve(reqUri, _this.LibraryUri); })\n                    .then(function (md) {\n                    _this.$$loaded = true;\n                    var rd = Fayde.Markup.Load(null, md);\n                    if (!(rd instanceof Fayde.ResourceDictionary))\n                        throw new Error(\"Theme root must be a ResourceDictionary.\");\n                    Object.defineProperty(_this, \"Resources\", { value: rd, writable: false });\n                    resolve(_this);\n                }, function (err) {\n                    if (Theme.WarnMissing)\n                        console.warn(\"Failed to load Theme. [\" + _this.LibraryUri + \"][\" + _this.Name + \"]\", err);\n                    resolve(_this);\n                });\n            });\n        };\n        Theme.prototype.GetImplicitStyle = function (type) {\n            var rd = this.Resources;\n            if (!rd)\n                return undefined;\n            var style = rd.Get(type);\n            if (style instanceof Fayde.Style)\n                return style;\n            return undefined;\n        };\n        Theme.WarnMissing = false;\n        return Theme;\n    })();\n    Fayde.Theme = Theme;\n    Fayde.CoreLibrary.add(Theme);\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var ThemeConfig;\n    (function (ThemeConfig) {\n        var configs = {};\n        var DEFAULT_TEMPLATE_URI = \"lib/<libname>/themes/<themename>.Theme.xml\";\n        function GetRequestUri(uri, name) {\n            if (Fayde.Uri.isNullOrEmpty(uri))\n                return null;\n            var config = configs[uri.toString()];\n            if (config && config.none)\n                return null;\n            var templateUri = ((config) ? config.requestTemplateUri : null) || DEFAULT_TEMPLATE_URI;\n            return processTemplate(uri, name, templateUri);\n        }\n        ThemeConfig.GetRequestUri = GetRequestUri;\n        function OverrideRequestUri(uri, templateUri) {\n            configs[uri.toString()] = {\n                requestTemplateUri: templateUri\n            };\n        }\n        ThemeConfig.OverrideRequestUri = OverrideRequestUri;\n        function Set(libName, path) {\n            if (!libName) {\n                console.warn(\"Could not configure theme. No library specified.\");\n                return;\n            }\n            var uri = new Fayde.Uri(libName);\n            if (uri.scheme !== \"http\")\n                uri = new Fayde.Uri(\"lib://\" + libName);\n            if (path === undefined)\n                configs[uri.toString()] = null;\n            else if (path === null)\n                configs[uri.toString()] = {\n                    none: true\n                };\n            else\n                configs[uri.toString()] = {\n                    requestTemplateUri: path\n                };\n        }\n        ThemeConfig.Set = Set;\n        function processTemplate(uri, name, template) {\n            var libName = uri.host;\n            var rv = template;\n            rv = rv.replace(\"<libname>\", libName);\n            rv = rv.replace(\"<themename>\", name);\n            return rv;\n        }\n        OverrideRequestUri(new Fayde.Uri(Fayde.XMLNS), \"lib/fayde/themes/<themename>.theme.xml\");\n        Set(Fayde.XMLNSX, \"none\");\n    })(ThemeConfig = Fayde.ThemeConfig || (Fayde.ThemeConfig = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    Fayde.DEFAULT_THEME_NAME = \"Metro\";\n    var ThemeManagerImpl = (function () {\n        function ThemeManagerImpl() {\n            this.$$libs = [];\n            this.$$activeThemeName = null;\n            Fayde.TypeManager.libResolver.libraryCreated.on(this.$$onLibraryCreated, this);\n            this.$$libs.push(Fayde.CoreLibrary);\n        }\n        ThemeManagerImpl.prototype.$$onLibraryCreated = function (sender, args) {\n            var tlib = args.library;\n            tlib.$$activeThemeName = this.$$activeThemeName;\n            this.$$libs.push(tlib);\n        };\n        ThemeManagerImpl.prototype.LoadAsync = function (themeName) {\n            if (!themeName)\n                themeName = this.$$activeThemeName;\n            this.$$activeThemeName = themeName;\n            this.$$libs.forEach(function (lib) { return lib.setThemeName(themeName); });\n            return Promise.all(this.$$libs\n                .filter(function (lib) { return lib.isLoaded; })\n                .map(function (lib) { return lib.loadActiveTheme(); }));\n        };\n        ThemeManagerImpl.prototype.FindStyle = function (defaultStyleKey) {\n            if (!defaultStyleKey)\n                return null;\n            var uri = defaultStyleKey.$$uri;\n            if (uri) {\n                var lib = this.$$findLib(uri);\n                if (lib && lib.activeTheme)\n                    return lib.activeTheme.GetImplicitStyle(defaultStyleKey);\n            }\n            return null;\n        };\n        ThemeManagerImpl.prototype.$$findLib = function (uri) {\n            for (var i = 0, libs = this.$$libs; i < libs.length; i++) {\n                var lib = libs[i];\n                if (lib.uri.toString() === uri)\n                    return lib;\n            }\n        };\n        return ThemeManagerImpl;\n    })();\n    Fayde.ThemeManager = new ThemeManagerImpl();\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Expression = (function () {\n        function Expression() {\n            this.IsUpdating = false;\n            this.IsAttached = false;\n        }\n        Expression.prototype.Seal = function (owner, prop) {\n        };\n        Expression.prototype.OnAttached = function (target) {\n            this.IsAttached = true;\n            this.OnDataContextChanged(target.XamlNode.DataContext);\n        };\n        Expression.prototype.OnDetached = function (target) {\n            this.IsAttached = false;\n            this.OnDataContextChanged(undefined);\n        };\n        Expression.prototype.GetValue = function (propd) {\n        };\n        Expression.prototype.OnDataContextChanged = function (newDataContext) {\n        };\n        return Expression;\n    })();\n    Fayde.Expression = Expression;\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Expression.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        var BindingExpressionBase = (function (_super) {\n            __extends(BindingExpressionBase, _super);\n            function BindingExpressionBase(binding) {\n                _super.call(this);\n                this._TwoWayLostFocusElement = null;\n                this._CurrentNotifyError = null;\n                this._CurrentError = null;\n                this._Cached = false;\n                this._CachedValue = undefined;\n                this._IsSealed = false;\n                if (!Object.isFrozen(binding))\n                    Object.freeze(binding);\n                Object.defineProperty(this, \"ParentBinding\", {\n                    value: binding,\n                    writable: false\n                });\n            }\n            Object.defineProperty(BindingExpressionBase.prototype, \"DataItem\", {\n                get: function () {\n                    return this.PropertyPathWalker.Source;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            BindingExpressionBase.prototype.Seal = function (owner, prop) {\n                if (this._IsSealed)\n                    return;\n                this._IsSealed = true;\n                Object.defineProperty(this, \"Target\", {\n                    value: owner,\n                    writable: false\n                });\n                var propd = prop;\n                Object.defineProperty(this, \"Property\", {\n                    value: propd,\n                    writable: false\n                });\n                var binding = this.ParentBinding;\n                var path = binding.Path.Path;\n                if ((!path || path === \".\") && binding.Mode === Data.BindingMode.TwoWay)\n                    throw new ArgumentException(\"TwoWay bindings require a non-empty Path.\");\n                if (binding.Mode === Data.BindingMode.TwoWay && (owner instanceof Fayde.Controls.TextBox || owner instanceof Fayde.Controls.PasswordBox))\n                    this._TwoWayLostFocusElement = owner;\n                this._IsDataContextBound = !binding.ElementName && !binding.Source && !binding.RelativeSource;\n                var bindsToView = propd === Fayde.DependencyObject.DataContextProperty || propd.GetTargetType() === nullstone.IEnumerable_ || propd.GetTargetType() === Data.ICollectionView_;\n                var walker = this.PropertyPathWalker = new Data.PropertyPathWalker(binding.Path.ParsePath, binding.BindsDirectlyToSource, bindsToView, this._IsDataContextBound);\n                if (binding.Mode !== Data.BindingMode.OneTime)\n                    walker.Listen(this);\n            };\n            BindingExpressionBase.prototype.OnAttached = function (element) {\n                var _this = this;\n                if (this.IsAttached)\n                    return;\n                if (this.Target && this.Target !== element)\n                    throw new Error(\"Cannot attach BindingExpression to another DependencyObject.\");\n                if (Fayde.Data.Debug && window.console)\n                    console.log(\"[BINDING] OnAttached: [\" + element.constructor.name + \"] {Path=\" + this.ParentBinding.Path.Path + \"}\");\n                _super.prototype.OnAttached.call(this, element);\n                this._SourceAvailableMonitor = this.Target.XamlNode.MonitorIsAttached(function (newIsAttached) { return _this._OnSourceAvailable(); });\n                var source = this._FindSource();\n                this.PropertyPathWalker.Update(source);\n                if (this._TwoWayLostFocusElement)\n                    this._TwoWayLostFocusElement.LostFocus.on(this._TargetLostFocus, this);\n                if (this.ParentBinding.Mode === Data.BindingMode.TwoWay && this.Property.IsCustom) {\n                    this._PropertyListener = this.Property.Store.ListenToChanged(this.Target, this.Property, this._UpdateSourceCallback, this);\n                }\n            };\n            BindingExpressionBase.prototype.GetValue = function (propd) {\n                if (this._Cached)\n                    return this._CachedValue;\n                if (this.PropertyPathWalker.IsPathBroken) {\n                    var target = this.Target;\n                    if (Data.WarnBrokenPath && target && target.XamlNode.IsAttached) {\n                        var fe = target instanceof Fayde.FrameworkElement ? target : null;\n                        if (!fe || fe.XamlNode.IsLoaded)\n                            console.warn(\"[BINDING] Path Broken --> Path='\" + this.PropertyPathWalker.Path + \"'\");\n                    }\n                    this._CachedValue = null;\n                }\n                else {\n                    this._CachedValue = this.PropertyPathWalker.ValueInternal;\n                }\n                this._CachedValue = this._ConvertToType(propd, this._CachedValue);\n                this._Cached = true;\n                return this._CachedValue;\n            };\n            BindingExpressionBase.prototype._OnSourceAvailable = function () {\n                this._SourceAvailableMonitor.Detach();\n                var source = this._FindSource();\n                if (source)\n                    this.PropertyPathWalker.Update(source);\n                this._Invalidate();\n                this.Target.SetValue(this.Property, this);\n            };\n            BindingExpressionBase.prototype._FindSource = function () {\n                if (this.ParentBinding.Source) {\n                    return this.ParentBinding.Source;\n                }\n                else if (this.ParentBinding.ElementName != null) {\n                    return this._FindSourceByElementName();\n                }\n                else if (this.ParentBinding.RelativeSource) {\n                    return this.ParentBinding.RelativeSource.Find(this.Target);\n                }\n                return this._DataContext;\n            };\n            BindingExpressionBase.prototype._FindSourceByElementName = function () {\n                var name = this.ParentBinding.ElementName;\n                var xobj = this.Target;\n                if (!xobj)\n                    return undefined;\n                var source = xobj.FindName(name, true);\n                if (source)\n                    return source;\n                return undefined;\n            };\n            BindingExpressionBase.prototype.OnDetached = function (element) {\n                if (!this.IsAttached)\n                    return;\n                if (Fayde.Data.Debug && window.console)\n                    console.log(\"[BINDING] OnDetached: [\" + element.constructor.name + \"] {Path=\" + this.ParentBinding.Path.Path + \"}\");\n                _super.prototype.OnDetached.call(this, element);\n                if (this._TwoWayLostFocusElement)\n                    this._TwoWayLostFocusElement.LostFocus.off(this._TargetLostFocus, this);\n                if (this._CurrentError != null) {\n                    var fe = getMentor(element);\n                    if (fe)\n                        Fayde.Validation.RemoveError(fe, this._CurrentError);\n                    this._CurrentError = null;\n                }\n                if (this._PropertyListener) {\n                    this._PropertyListener.Detach();\n                    this._PropertyListener = null;\n                }\n                this.PropertyPathWalker.Update(null);\n                this.Target = undefined;\n            };\n            BindingExpressionBase.prototype.IsBrokenChanged = function () {\n                this.Refresh();\n            };\n            BindingExpressionBase.prototype.ValueChanged = function () {\n                this.Refresh();\n            };\n            BindingExpressionBase.prototype.UpdateSource = function () {\n                return this._UpdateSourceObject();\n            };\n            BindingExpressionBase.prototype._TryUpdateSourceObject = function (value) {\n                if (this._ShouldUpdateSource())\n                    this._UpdateSourceObject(value);\n            };\n            BindingExpressionBase.prototype._UpdateSourceCallback = function (sender, args) {\n                try {\n                    if (this._ShouldUpdateSource())\n                        this._UpdateSourceObject(this.Target.GetValue(this.Property));\n                }\n                catch (err) {\n                    console.warn(\"[BINDING] UpdateSource: \" + err.toString());\n                }\n            };\n            BindingExpressionBase.prototype._TargetLostFocus = function (sender, e) {\n                if (this.ParentBinding.UpdateSourceTrigger === Data.UpdateSourceTrigger.Explicit)\n                    return;\n                this._UpdateSourceObject();\n            };\n            BindingExpressionBase.prototype._ShouldUpdateSource = function () {\n                if (this.IsUpdating)\n                    return false;\n                if (!this._TwoWayLostFocusElement)\n                    return this.ParentBinding.UpdateSourceTrigger !== Data.UpdateSourceTrigger.Explicit;\n                return this.ParentBinding.UpdateSourceTrigger === Data.UpdateSourceTrigger.PropertyChanged;\n            };\n            BindingExpressionBase.prototype._UpdateSourceObject = function (value) {\n                if (value === undefined)\n                    value = this.Target.GetValue(this.Property);\n                var binding = this.ParentBinding;\n                if (binding.Mode !== Data.BindingMode.TwoWay)\n                    return;\n                var dataError = null;\n                var exception;\n                var oldUpdating = this.IsUpdating;\n                var walker = this.PropertyPathWalker;\n                var node = this.PropertyPathWalker.FinalNode;\n                try {\n                    if (this.PropertyPathWalker.IsPathBroken)\n                        return;\n                    value = this._ConvertFromTargetToSource(binding, node, value);\n                    if (this._CachedValue === undefined && value === undefined)\n                        return;\n                    this.IsUpdating = true;\n                    node.SetValue(value);\n                    this._CachedValue = value;\n                }\n                catch (err) {\n                    if (binding.ValidatesOnExceptions) {\n                        if (err instanceof TargetInvocationException)\n                            exception = err.InnerException;\n                        exception = err;\n                    }\n                }\n                finally {\n                    this.IsUpdating = oldUpdating;\n                    if (binding.ValidatesOnDataErrors && !exception) {\n                        dataError = getDataError(walker);\n                    }\n                }\n                if (binding.ValidatesOnExceptions)\n                    this._MaybeEmitError(null, exception);\n                else if (binding.ValidatesOnDataErrors)\n                    this._MaybeEmitError(dataError, exception);\n            };\n            BindingExpressionBase.prototype.OnDataContextChanged = function (newDataContext) {\n                if (Fayde.Data.Debug && window.console)\n                    console.log(\"[BINDING] DataContextChanged: [\" + this.Target._ID + \":\" + this.Target.constructor.name + \"] {Path=\" + this.ParentBinding.Path.Path + \"}\");\n                if (this._DataContext === newDataContext)\n                    return;\n                this._DataContext = newDataContext;\n                if (!this._IsDataContextBound)\n                    return;\n                if (Fayde.Data.IsCounterEnabled)\n                    Fayde.Data.DataContextCounter++;\n                try {\n                    this.PropertyPathWalker.Update(newDataContext);\n                    if (this.ParentBinding.Mode === Data.BindingMode.OneTime)\n                        this.Refresh();\n                }\n                catch (err) {\n                    console.warn(\"[BINDING] DataContextChanged Error: \" + err.message);\n                }\n            };\n            BindingExpressionBase.prototype._Invalidate = function () {\n                this._Cached = false;\n                this._CachedValue = undefined;\n            };\n            BindingExpressionBase.prototype.Refresh = function () {\n                var dataError = null;\n                var exception;\n                if (!this.IsAttached)\n                    return;\n                var walker = this.PropertyPathWalker;\n                this._AttachToNotifyError(walker.FinalNode.GetSource());\n                var binding = this.ParentBinding;\n                if (!this.IsUpdating && binding.ValidatesOnDataErrors)\n                    dataError = getDataError(walker);\n                var oldUpdating = this.IsUpdating;\n                try {\n                    this.IsUpdating = true;\n                    this._Invalidate();\n                    this.Target.SetValue(this.Property, this);\n                }\n                catch (err) {\n                    if (binding.ValidatesOnExceptions) {\n                        exception = err;\n                        if (exception instanceof TargetInvocationException)\n                            exception = exception.InnerException;\n                    }\n                    else {\n                        console.warn(err);\n                    }\n                }\n                finally {\n                    this.IsUpdating = oldUpdating;\n                }\n                if (binding.ValidatesOnExceptions)\n                    this._MaybeEmitError(null, exception);\n                else if (binding.ValidatesOnDataErrors)\n                    this._MaybeEmitError(dataError, exception);\n            };\n            BindingExpressionBase.prototype._ConvertFromTargetToSource = function (binding, node, value) {\n                if (binding.TargetNullValue && binding.TargetNullValue === value)\n                    value = null;\n                var converter = binding.Converter;\n                if (converter) {\n                    value = converter.ConvertBack(value, node.ValueType, binding.ConverterParameter, binding.ConverterCulture);\n                }\n                return value;\n            };\n            BindingExpressionBase.prototype._ConvertToType = function (propd, value) {\n                var targetType = this.Property.GetTargetType();\n                try {\n                    var binding = this.ParentBinding;\n                    if (!this.PropertyPathWalker.IsPathBroken && binding.Converter) {\n                        value = binding.Converter.Convert(value, targetType, binding.ConverterParameter, binding.ConverterCulture);\n                    }\n                    if (value === DependencyProperty.UnsetValue || this.PropertyPathWalker.IsPathBroken) {\n                        value = binding.FallbackValue;\n                        if (value === undefined)\n                            value = propd.DefaultValue;\n                    }\n                    else if (value == null) {\n                        value = binding.TargetNullValue;\n                        if (value == null && this._IsDataContextBound && !binding.Path.Path)\n                            value = propd.DefaultValue;\n                    }\n                    else {\n                        var format = binding.StringFormat;\n                        if (format) {\n                            if (format.indexOf(\"{0\") < 0)\n                                format = \"{0:\" + format + \"}\";\n                            value = Fayde.Localization.Format(format, value);\n                        }\n                    }\n                }\n                catch (err) {\n                    console.warn(\"[BINDING]\" + err.toString());\n                    value = binding.FallbackValue;\n                }\n                return nullstone.convertAnyToType(value, targetType);\n            };\n            BindingExpressionBase.prototype._MaybeEmitError = function (message, exception) {\n                var fe = getMentor(this.Target);\n                if (!fe)\n                    return;\n                var error = (exception instanceof Exception || exception instanceof Error) ? exception : null;\n                if (message === \"\")\n                    message = null;\n                var oldError = this._CurrentError;\n                if (message != null)\n                    this._CurrentError = new Fayde.Validation.ValidationError(message, null, this.PropertyPathWalker.FinalPropertyName);\n                else if (error)\n                    this._CurrentError = new Fayde.Validation.ValidationError(null, error, this.PropertyPathWalker.FinalPropertyName);\n                else\n                    this._CurrentError = null;\n                Fayde.Validation.Emit(fe, this.ParentBinding, oldError, this._CurrentError);\n            };\n            BindingExpressionBase.prototype._AttachToNotifyError = function (element) {\n                if (!Data.INotifyDataErrorInfo_.is(element))\n                    return;\n                if (element === this._CurrentNotifyError || !this.ParentBinding.ValidatesOnNotifyDataErrors)\n                    return;\n                var property = this.PropertyPathWalker.FinalPropertyName;\n                if (this._CurrentNotifyError) {\n                    this._CurrentNotifyError.ErrorsChanged.off(this._NotifyErrorsChanged, this);\n                    this._MaybeEmitError(null, null);\n                }\n                this._CurrentNotifyError = element;\n                if (element) {\n                    element.ErrorsChanged.on(this._NotifyErrorsChanged, this);\n                    if (element.HasErrors) {\n                        var enu = element.GetErrors(property);\n                        if (enu) {\n                            for (var en = enu.getEnumerator(); en.moveNext();) {\n                                this._MaybeEmitError(en.current, en.current);\n                            }\n                        }\n                    }\n                    else {\n                        this._MaybeEmitError(null, null);\n                    }\n                }\n            };\n            BindingExpressionBase.prototype._NotifyErrorsChanged = function (sender, e) {\n                var property = this.PropertyPathWalker.FinalPropertyName;\n                if (e.PropertyName !== property)\n                    return;\n                var errors = this._CurrentNotifyError ? this._CurrentNotifyError.GetErrors(property) : null;\n                if (!errors) {\n                    this._MaybeEmitError(null, null);\n                    return;\n                }\n                var arr = nullstone.IEnumerable_.toArray(errors);\n                if (arr.length <= 0) {\n                    this._MaybeEmitError(null, null);\n                    return;\n                }\n                for (var i = 0; i < arr.length; i++) {\n                    var cur = arr[i];\n                    this._MaybeEmitError(cur, cur);\n                }\n            };\n            return BindingExpressionBase;\n        })(Fayde.Expression);\n        Data.BindingExpressionBase = BindingExpressionBase;\n        function getMentor(dobj) {\n            for (var cur = dobj; cur; cur = cur.Parent) {\n                if (cur instanceof Fayde.FrameworkElement)\n                    return cur;\n            }\n            return null;\n        }\n        function getDataError(walker) {\n            var info = Data.IDataErrorInfo_.as(walker.FinalNode.GetSource());\n            var name = walker.FinalPropertyName;\n            return (info && name) ? info.GetError(name) : null;\n        }\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"BindingExpressionBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        var BindingExpression = (function (_super) {\n            __extends(BindingExpression, _super);\n            function BindingExpression(binding) {\n                _super.call(this, binding);\n            }\n            return BindingExpression;\n        })(Data.BindingExpressionBase);\n        Data.BindingExpression = BindingExpression;\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Expression.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var DeferredValueExpression = (function (_super) {\n        __extends(DeferredValueExpression, _super);\n        function DeferredValueExpression() {\n            _super.apply(this, arguments);\n        }\n        DeferredValueExpression.prototype.GetValue = function (propd) {\n            return undefined;\n        };\n        DeferredValueExpression.prototype.toString = function () { return \"DeferredValueExpression\"; };\n        return DeferredValueExpression;\n    })(Fayde.Expression);\n    Fayde.DeferredValueExpression = DeferredValueExpression;\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Expression.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var EventBindingExpression = (function (_super) {\n        __extends(EventBindingExpression, _super);\n        function EventBindingExpression(eventBinding) {\n            _super.call(this);\n            this.IsUpdating = false;\n            this.IsAttached = false;\n            this._CommandWalker = null;\n            this._CommandParameterWalker = null;\n            this._Target = null;\n            this._Event = null;\n            this._EventName = null;\n            this._EventBinding = eventBinding;\n            var cb = this._EventBinding.CommandBinding;\n            if (cb)\n                this._CommandWalker = new Fayde.Data.PropertyPathWalker(cb.Path.ParsePath, cb.BindsDirectlyToSource, false, !cb.ElementName && !cb.Source && !cb.RelativeSource);\n            var cpb = this._EventBinding.CommandParameterBinding;\n            if (cpb)\n                this._CommandParameterWalker = new Fayde.Data.PropertyPathWalker(cpb.Path.ParsePath, cpb.BindsDirectlyToSource, false, !cpb.ElementName && !cpb.Source && !cpb.RelativeSource);\n        }\n        EventBindingExpression.prototype.Seal = function (owner, prop) {\n        };\n        EventBindingExpression.prototype.Init = function (eventName) {\n            this._EventName = eventName;\n        };\n        EventBindingExpression.prototype.GetValue = function (propd) {\n        };\n        EventBindingExpression.prototype.OnAttached = function (target) {\n            if (this.IsAttached)\n                return;\n            this.IsAttached = true;\n            this._Target = target;\n            this._Event = target[this._EventName];\n            if (this._Event)\n                this._Event.on(this._Callback, this);\n        };\n        EventBindingExpression.prototype.OnDetached = function (target) {\n            if (!this.IsAttached)\n                return;\n            if (this._Event)\n                this._Event.off(this._Callback, this);\n            this._Event = null;\n            this.IsAttached = false;\n        };\n        EventBindingExpression.prototype.OnDataContextChanged = function (newDataContext) {\n        };\n        EventBindingExpression.prototype._Callback = function (sender, e) {\n            var target = this._Target;\n            var csource = findSource(target, this._EventBinding.CommandBinding);\n            var context = csource;\n            var etarget = context;\n            var cw = this._CommandWalker;\n            if (cw) {\n                etarget = cw.GetValue(etarget);\n                context = cw.GetContext();\n                if (context == null)\n                    context = csource;\n            }\n            if (!etarget) {\n                console.warn(\"[EVENTBINDING]: Could not find command target for event '\" + this._EventName + \"'.\");\n                return;\n            }\n            var cargs = {\n                sender: sender,\n                args: e,\n                parameter: null\n            };\n            var cpb = this._EventBinding.CommandParameterBinding;\n            if (cpb) {\n                var cpw = this._CommandParameterWalker;\n                var cpsource = findSource(target, cpb);\n                cargs.parameter = cpw.GetValue(cpsource);\n            }\n            if (typeof etarget === \"function\") {\n                etarget.call(context, cargs);\n            }\n            else {\n                var ecmd = Fayde.Input.ICommand_.as(etarget);\n                if (!ecmd) {\n                    console.warn(\"[EVENTBINDING]: Could not find command target for event '\" + this._EventName + \"'.\");\n                    return;\n                }\n                ecmd = etarget;\n                if (ecmd.CanExecute.call(context, cargs))\n                    ecmd.Execute.call(context, cargs);\n            }\n        };\n        return EventBindingExpression;\n    })(Fayde.Expression);\n    Fayde.EventBindingExpression = EventBindingExpression;\n    function findSource(target, binding) {\n        if (binding) {\n            if (binding.Source)\n                return binding.Source;\n            if (binding.ElementName != null)\n                return findSourceByElementName(target, binding.ElementName);\n            if (binding.RelativeSource) {\n                return binding.RelativeSource.Find(target);\n            }\n        }\n        return target.XamlNode.DataContext;\n    }\n    function findSourceByElementName(target, name) {\n        var xobj = target;\n        if (!xobj)\n            return undefined;\n        var source = xobj.FindName(name, true);\n        if (source)\n            return source;\n        return undefined;\n    }\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Expression.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var TemplateBindingExpression = (function (_super) {\n        __extends(TemplateBindingExpression, _super);\n        function TemplateBindingExpression(sourceProperty) {\n            _super.call(this);\n            this._IsSealed = false;\n            this._SourcePropertyName = sourceProperty;\n        }\n        TemplateBindingExpression.prototype.Seal = function (owner, prop) {\n            if (this._IsSealed)\n                return;\n            this._IsSealed = true;\n            var to = owner.TemplateOwner;\n            if (!(to instanceof Fayde.DependencyObject))\n                throw new Error(\"TemplateBinding must be applied to a DependencyObject within a template.\");\n            this.SourceProperty = DependencyProperty.GetDependencyProperty(to.constructor, this._SourcePropertyName);\n            this.TargetProperty = prop;\n        };\n        TemplateBindingExpression.prototype.GetValue = function (propd) {\n            var target = this._Target;\n            var source = target.TemplateOwner;\n            var value;\n            if (source)\n                value = source.GetValue(this.SourceProperty);\n            value = nullstone.convertAnyToType(value, this.TargetProperty.GetTargetType());\n            return value;\n        };\n        TemplateBindingExpression.prototype.OnAttached = function (dobj) {\n            _super.prototype.OnAttached.call(this, dobj);\n            this._Target = dobj;\n            this._DetachListener();\n            var cc;\n            if (this._Target instanceof Fayde.Controls.ContentControl)\n                cc = this._Target;\n            this._AttachListener();\n        };\n        TemplateBindingExpression.prototype.OnDetached = function (dobj) {\n            _super.prototype.OnDetached.call(this, dobj);\n            var listener = this._Listener;\n            if (!listener)\n                return;\n            var cc;\n            if (this._Target instanceof Fayde.Controls.ContentControl)\n                cc = this._Target;\n            this._DetachListener();\n            this._Target = null;\n        };\n        TemplateBindingExpression.prototype.OnSourcePropertyChanged = function (sender, args) {\n            if (this.SourceProperty._ID !== args.Property._ID)\n                return;\n            try {\n                this.IsUpdating = true;\n                var targetProp = this.TargetProperty;\n                try {\n                    this._Target.SetCurrentValue(targetProp, this.GetValue(null));\n                }\n                catch (err2) {\n                    var val = targetProp.DefaultValue;\n                    this._Target.SetCurrentValue(targetProp, val);\n                }\n            }\n            catch (err) {\n            }\n            finally {\n                this.IsUpdating = false;\n            }\n        };\n        TemplateBindingExpression.prototype._AttachListener = function () {\n            var _this = this;\n            var source = this._Target.TemplateOwner;\n            if (!source)\n                return;\n            this._Listener = this.SourceProperty.Store.ListenToChanged(source, this.SourceProperty, function (sender, args) { return _this.OnSourcePropertyChanged(sender, args); }, this);\n        };\n        TemplateBindingExpression.prototype._DetachListener = function () {\n            var listener = this._Listener;\n            if (listener) {\n                this._Listener.Detach();\n                this._Listener = null;\n            }\n        };\n        return TemplateBindingExpression;\n    })(Fayde.Expression);\n    Fayde.TemplateBindingExpression = TemplateBindingExpression;\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        Input.ICommand_ = new nullstone.Interface(\"ICommand\");\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var InteractionHelper;\n        (function (InteractionHelper) {\n            function GetLogicalKey(flowDirection, key) {\n                if (flowDirection !== Fayde.FlowDirection.RightToLeft)\n                    return key;\n                switch (key) {\n                    case Input.Key.Left:\n                        return Input.Key.Right;\n                    case Input.Key.Right:\n                        return Input.Key.Left;\n                    default:\n                        return key;\n                }\n            }\n            InteractionHelper.GetLogicalKey = GetLogicalKey;\n        })(InteractionHelper = Input.InteractionHelper || (Input.InteractionHelper = {}));\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"KeyEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        function CreateKeyInterop() {\n            if (navigator.appName === \"Microsoft Internet Explorer\")\n                return new IEKeyInterop();\n            if (navigator.appName === \"Netscape\") {\n                if (!!navigator.userAgent.match(/Trident\\//))\n                    return new IEKeyInterop();\n                return new NetscapeKeyInterop();\n            }\n            return new KeyInterop();\n        }\n        Input.CreateKeyInterop = CreateKeyInterop;\n        var keyFromKeyCode = [];\n        keyFromKeyCode[8] = Input.Key.Back;\n        keyFromKeyCode[9] = Input.Key.Tab;\n        keyFromKeyCode[13] = Input.Key.Enter;\n        keyFromKeyCode[16] = Input.Key.Shift;\n        keyFromKeyCode[17] = Input.Key.Ctrl;\n        keyFromKeyCode[18] = Input.Key.Alt;\n        keyFromKeyCode[20] = Input.Key.CapsLock;\n        keyFromKeyCode[27] = Input.Key.Escape;\n        keyFromKeyCode[32] = Input.Key.Space;\n        keyFromKeyCode[33] = Input.Key.PageUp;\n        keyFromKeyCode[34] = Input.Key.PageDown;\n        keyFromKeyCode[35] = Input.Key.End;\n        keyFromKeyCode[36] = Input.Key.Home;\n        keyFromKeyCode[37] = Input.Key.Left;\n        keyFromKeyCode[38] = Input.Key.Up;\n        keyFromKeyCode[39] = Input.Key.Right;\n        keyFromKeyCode[40] = Input.Key.Down;\n        keyFromKeyCode[45] = Input.Key.Insert;\n        keyFromKeyCode[46] = Input.Key.Delete;\n        keyFromKeyCode[48] = Input.Key.D0;\n        keyFromKeyCode[49] = Input.Key.D1;\n        keyFromKeyCode[50] = Input.Key.D2;\n        keyFromKeyCode[51] = Input.Key.D3;\n        keyFromKeyCode[52] = Input.Key.D4;\n        keyFromKeyCode[53] = Input.Key.D5;\n        keyFromKeyCode[54] = Input.Key.D6;\n        keyFromKeyCode[55] = Input.Key.D7;\n        keyFromKeyCode[56] = Input.Key.D8;\n        keyFromKeyCode[57] = Input.Key.D9;\n        keyFromKeyCode[65] = Input.Key.A;\n        keyFromKeyCode[66] = Input.Key.B;\n        keyFromKeyCode[67] = Input.Key.C;\n        keyFromKeyCode[68] = Input.Key.D;\n        keyFromKeyCode[69] = Input.Key.E;\n        keyFromKeyCode[70] = Input.Key.F;\n        keyFromKeyCode[71] = Input.Key.G;\n        keyFromKeyCode[72] = Input.Key.H;\n        keyFromKeyCode[73] = Input.Key.I;\n        keyFromKeyCode[74] = Input.Key.J;\n        keyFromKeyCode[75] = Input.Key.K;\n        keyFromKeyCode[76] = Input.Key.L;\n        keyFromKeyCode[77] = Input.Key.M;\n        keyFromKeyCode[78] = Input.Key.N;\n        keyFromKeyCode[79] = Input.Key.O;\n        keyFromKeyCode[80] = Input.Key.P;\n        keyFromKeyCode[81] = Input.Key.Q;\n        keyFromKeyCode[82] = Input.Key.R;\n        keyFromKeyCode[83] = Input.Key.S;\n        keyFromKeyCode[84] = Input.Key.T;\n        keyFromKeyCode[85] = Input.Key.U;\n        keyFromKeyCode[86] = Input.Key.V;\n        keyFromKeyCode[87] = Input.Key.W;\n        keyFromKeyCode[88] = Input.Key.X;\n        keyFromKeyCode[89] = Input.Key.Y;\n        keyFromKeyCode[90] = Input.Key.Z;\n        keyFromKeyCode[96] = Input.Key.NumPad0;\n        keyFromKeyCode[97] = Input.Key.NumPad1;\n        keyFromKeyCode[98] = Input.Key.NumPad2;\n        keyFromKeyCode[99] = Input.Key.NumPad3;\n        keyFromKeyCode[100] = Input.Key.NumPad4;\n        keyFromKeyCode[101] = Input.Key.NumPad5;\n        keyFromKeyCode[102] = Input.Key.NumPad6;\n        keyFromKeyCode[103] = Input.Key.NumPad7;\n        keyFromKeyCode[104] = Input.Key.NumPad8;\n        keyFromKeyCode[105] = Input.Key.NumPad9;\n        keyFromKeyCode[106] = Input.Key.Multiply;\n        keyFromKeyCode[107] = Input.Key.Add;\n        keyFromKeyCode[109] = Input.Key.Subtract;\n        keyFromKeyCode[110] = Input.Key.Decimal;\n        keyFromKeyCode[111] = Input.Key.Divide;\n        keyFromKeyCode[112] = Input.Key.F1;\n        keyFromKeyCode[113] = Input.Key.F2;\n        keyFromKeyCode[114] = Input.Key.F3;\n        keyFromKeyCode[115] = Input.Key.F4;\n        keyFromKeyCode[116] = Input.Key.F5;\n        keyFromKeyCode[117] = Input.Key.F6;\n        keyFromKeyCode[118] = Input.Key.F7;\n        keyFromKeyCode[119] = Input.Key.F8;\n        keyFromKeyCode[120] = Input.Key.F9;\n        keyFromKeyCode[121] = Input.Key.F10;\n        keyFromKeyCode[122] = Input.Key.F11;\n        keyFromKeyCode[123] = Input.Key.F12;\n        var KeyInterop = (function () {\n            function KeyInterop() {\n            }\n            KeyInterop.prototype.RegisterEvents = function (input) {\n                var _this = this;\n                document.onkeypress = function (e) {\n                    var args = _this.CreateArgsPress(e);\n                    if (args) {\n                        input.HandleKeyDown(args);\n                        if (args.Handled) {\n                            e.preventDefault();\n                            return false;\n                        }\n                    }\n                };\n                document.onkeydown = function (e) {\n                    var args = _this.CreateArgsDown(e);\n                    if (args) {\n                        input.HandleKeyDown(args);\n                        if (args.Handled && _this.IsPreventable(args)) {\n                            e.preventDefault();\n                            return false;\n                        }\n                    }\n                };\n            };\n            KeyInterop.prototype.CreateArgsPress = function (e) {\n                return undefined;\n            };\n            KeyInterop.prototype.CreateArgsDown = function (e) {\n                return undefined;\n            };\n            KeyInterop.prototype.IsPreventable = function (args) {\n                return true;\n            };\n            return KeyInterop;\n        })();\n        var udkie = [];\n        udkie[41] = 48;\n        udkie[33] = 49;\n        udkie[64] = 50;\n        udkie[35] = 51;\n        udkie[36] = 52;\n        udkie[37] = 53;\n        udkie[94] = 54;\n        udkie[38] = 55;\n        udkie[42] = 56;\n        udkie[34] = Input.Key.Unknown;\n        var IEKeyInterop = (function (_super) {\n            __extends(IEKeyInterop, _super);\n            function IEKeyInterop() {\n                _super.apply(this, arguments);\n            }\n            IEKeyInterop.prototype.CreateArgsPress = function (e) {\n                if (!e[\"char\"])\n                    return;\n                var modifiers = {\n                    Shift: e.shiftKey,\n                    Ctrl: e.ctrlKey,\n                    Alt: e.altKey\n                };\n                var keyCode = e.keyCode;\n                var unshifted = udkie[keyCode];\n                if (unshifted)\n                    keyCode = unshifted;\n                var args = new Fayde.Input.KeyEventArgs(modifiers, keyCode, keyFromKeyCode[keyCode], e[\"char\"]);\n                if (args.Key === Input.Key.Unknown && e.key) {\n                    args.Char = e.key;\n                    var code = args.Char.toUpperCase().charCodeAt(0);\n                    args.Key = keyFromKeyCode[code];\n                    if (args.Key == null)\n                        args.Key = Input.Key.Unknown;\n                }\n                return args;\n            };\n            IEKeyInterop.prototype.CreateArgsDown = function (e) {\n                if (e[\"char\"] && e.keyCode !== 8 && e.keyCode !== 9 && !e.ctrlKey)\n                    return;\n                var modifiers = {\n                    Shift: e.shiftKey,\n                    Ctrl: e.ctrlKey,\n                    Alt: e.altKey\n                };\n                return new Fayde.Input.KeyEventArgs(modifiers, e.keyCode, keyFromKeyCode[e.keyCode]);\n            };\n            return IEKeyInterop;\n        })(KeyInterop);\n        var sknet = [];\n        sknet[8] = Input.Key.Back;\n        sknet[9] = Input.Key.Tab;\n        sknet[20] = Input.Key.CapsLock;\n        sknet[27] = Input.Key.Escape;\n        sknet[33] = Input.Key.PageUp;\n        sknet[34] = Input.Key.PageDown;\n        sknet[35] = Input.Key.End;\n        sknet[36] = Input.Key.Home;\n        sknet[37] = Input.Key.Left;\n        sknet[38] = Input.Key.Up;\n        sknet[39] = Input.Key.Right;\n        sknet[40] = Input.Key.Down;\n        sknet[45] = Input.Key.Insert;\n        sknet[46] = Input.Key.Delete;\n        var udknet = [];\n        udknet[41] = 48;\n        udknet[33] = 49;\n        udknet[64] = 50;\n        udknet[35] = 51;\n        udknet[36] = 52;\n        udknet[37] = 53;\n        udknet[94] = 54;\n        udknet[38] = 55;\n        udknet[42] = 56;\n        udknet[34] = Input.Key.Unknown;\n        var NetscapeKeyInterop = (function (_super) {\n            __extends(NetscapeKeyInterop, _super);\n            function NetscapeKeyInterop() {\n                _super.apply(this, arguments);\n            }\n            NetscapeKeyInterop.prototype.CreateArgsPress = function (e) {\n                var modifiers = {\n                    Shift: e.shiftKey,\n                    Ctrl: e.ctrlKey,\n                    Alt: e.altKey\n                };\n                var keyCode = e.keyCode;\n                var unshifted = udknet[keyCode];\n                if (unshifted)\n                    keyCode = unshifted;\n                var args = new Fayde.Input.KeyEventArgs(modifiers, keyCode, keyFromKeyCode[keyCode], String.fromCharCode(e.which || e.keyCode));\n                if (args.Char === \"'\")\n                    args.Key = Input.Key.Unknown;\n                return args;\n            };\n            NetscapeKeyInterop.prototype.CreateArgsDown = function (e) {\n                if (sknet[e.keyCode] === undefined && !e.ctrlKey)\n                    return null;\n                var modifiers = {\n                    Shift: e.shiftKey,\n                    Ctrl: e.ctrlKey,\n                    Alt: e.altKey\n                };\n                return new Fayde.Input.KeyEventArgs(modifiers, e.keyCode, keyFromKeyCode[e.keyCode]);\n            };\n            NetscapeKeyInterop.prototype.IsPreventable = function (args) {\n                if (args.Modifiers.Ctrl && args.Key === Input.Key.V) {\n                    return false;\n                }\n                return true;\n            };\n            return NetscapeKeyInterop;\n        })(KeyInterop);\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var KeyboardNavigation = (function () {\n            function KeyboardNavigation() {\n            }\n            KeyboardNavigation.GetAcceptsReturn = function (d) { return d.GetValue(KeyboardNavigation.AcceptsReturnProperty); };\n            KeyboardNavigation.SetAcceptsReturn = function (d, value) { d.SetValue(KeyboardNavigation.AcceptsReturnProperty, value); };\n            KeyboardNavigation.GetControlTabNavigation = function (d) { return d.GetValue(KeyboardNavigation.ControlTabNavigationProperty); };\n            KeyboardNavigation.SetControlTabNavigation = function (d, value) { d.SetValue(KeyboardNavigation.ControlTabNavigationProperty, value); };\n            KeyboardNavigation.GetDirectionalNavigation = function (d) { return d.GetValue(KeyboardNavigation.DirectionalNavigationProperty); };\n            KeyboardNavigation.SetDirectionalNavigation = function (d, value) { d.SetValue(KeyboardNavigation.DirectionalNavigationProperty, value); };\n            KeyboardNavigation.GetIsTabStop = function (d) { return d.GetValue(KeyboardNavigation.IsTabStopProperty); };\n            KeyboardNavigation.SetIsTabStop = function (d, value) { d.SetValue(KeyboardNavigation.IsTabStopProperty, value); };\n            KeyboardNavigation.GetTabIndex = function (d) { return d.GetValue(KeyboardNavigation.TabIndexProperty); };\n            KeyboardNavigation.SetTabIndex = function (d, value) { d.SetValue(KeyboardNavigation.TabIndexProperty, value); };\n            KeyboardNavigation.GetTabNavigation = function (d) { return d.GetValue(KeyboardNavigation.TabNavigationProperty); };\n            KeyboardNavigation.SetTabNavigation = function (d, value) { d.SetValue(KeyboardNavigation.TabNavigationProperty, value); };\n            KeyboardNavigation.AcceptsReturnProperty = DependencyProperty.RegisterAttached(\"AcceptsReturn\", function () { return Boolean; }, KeyboardNavigation);\n            KeyboardNavigation.ControlTabNavigationProperty = DependencyProperty.RegisterAttached(\"ControlTabNavigation\", function () { return new Fayde.Enum(Input.KeyboardNavigationMode); }, KeyboardNavigation);\n            KeyboardNavigation.DirectionalNavigationProperty = DependencyProperty.RegisterAttached(\"DirectionalNavigation\", function () { return new Fayde.Enum(Input.KeyboardNavigationMode); }, KeyboardNavigation);\n            KeyboardNavigation.IsTabStopProperty = DependencyProperty.RegisterAttached(\"IsTabStop\", function () { return Boolean; }, KeyboardNavigation);\n            KeyboardNavigation.TabIndexProperty = DependencyProperty.RegisterAttached(\"TabIndex\", function () { return Number; }, KeyboardNavigation);\n            KeyboardNavigation.TabNavigationProperty = DependencyProperty.RegisterAttached(\"TabNavigation\", function () { return new Fayde.Enum(Input.KeyboardNavigationMode); }, KeyboardNavigation);\n            return KeyboardNavigation;\n        })();\n        Input.KeyboardNavigation = KeyboardNavigation;\n        Fayde.CoreLibrary.add(KeyboardNavigation);\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/RoutedEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var MouseEventArgs = (function (_super) {\n            __extends(MouseEventArgs, _super);\n            function MouseEventArgs(absolutePos) {\n                _super.call(this);\n                Object.defineProperty(this, \"AbsolutePos\", { value: absolutePos, writable: false });\n            }\n            MouseEventArgs.prototype.GetPosition = function (relativeTo) {\n                var p = this.AbsolutePos.Clone();\n                if (!relativeTo)\n                    return p;\n                if (!(relativeTo instanceof Fayde.UIElement))\n                    throw new ArgumentException(\"Specified relative object must be a UIElement.\");\n                minerva.core.Updater.transformPoint(relativeTo.XamlNode.LayoutUpdater, p);\n                return p;\n            };\n            return MouseEventArgs;\n        })(Fayde.RoutedEventArgs);\n        Input.MouseEventArgs = MouseEventArgs;\n        Fayde.CoreLibrary.add(MouseEventArgs);\n        var MouseButtonEventArgs = (function (_super) {\n            __extends(MouseButtonEventArgs, _super);\n            function MouseButtonEventArgs(absolutePos) {\n                _super.call(this, absolutePos);\n            }\n            return MouseButtonEventArgs;\n        })(MouseEventArgs);\n        Input.MouseButtonEventArgs = MouseButtonEventArgs;\n        Fayde.CoreLibrary.add(MouseButtonEventArgs);\n        var MouseWheelEventArgs = (function (_super) {\n            __extends(MouseWheelEventArgs, _super);\n            function MouseWheelEventArgs(absolutePos, delta) {\n                _super.call(this, absolutePos);\n                Object.defineProperty(this, \"Delta\", { value: delta, writable: false });\n            }\n            return MouseWheelEventArgs;\n        })(MouseEventArgs);\n        Input.MouseWheelEventArgs = MouseWheelEventArgs;\n        Fayde.CoreLibrary.add(MouseWheelEventArgs);\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        (function (MouseInputType) {\n            MouseInputType[MouseInputType[\"NoOp\"] = 0] = \"NoOp\";\n            MouseInputType[MouseInputType[\"MouseUp\"] = 1] = \"MouseUp\";\n            MouseInputType[MouseInputType[\"MouseDown\"] = 2] = \"MouseDown\";\n            MouseInputType[MouseInputType[\"MouseLeave\"] = 3] = \"MouseLeave\";\n            MouseInputType[MouseInputType[\"MouseEnter\"] = 4] = \"MouseEnter\";\n            MouseInputType[MouseInputType[\"MouseMove\"] = 5] = \"MouseMove\";\n            MouseInputType[MouseInputType[\"MouseWheel\"] = 6] = \"MouseWheel\";\n        })(Input.MouseInputType || (Input.MouseInputType = {}));\n        var MouseInputType = Input.MouseInputType;\n        function CreateMouseInterop() {\n            if (navigator.appName === \"Microsoft Internet Explorer\")\n                return new IEMouseInterop();\n            if (navigator.appName === \"Netscape\") {\n                if (!!navigator.userAgent.match(/Trident\\//))\n                    return new IEMouseInterop();\n                return new NetscapeMouseInterop();\n            }\n            return new MouseInterop();\n        }\n        Input.CreateMouseInterop = CreateMouseInterop;\n        var MouseInterop = (function () {\n            function MouseInterop() {\n                this._CanvasOffset = null;\n                this._IsContextMenuDisabled = false;\n            }\n            MouseInterop.prototype.RegisterEvents = function (input, canvas) {\n                var _this = this;\n                this._Input = input;\n                this._CanvasOffset = this._CalcOffset(canvas);\n                canvas.addEventListener(\"contextmenu\", function (e) { return _this._HandleContextMenu(window.event ? window.event : e); });\n                canvas.addEventListener(\"mousedown\", function (e) { return _this._HandleButtonPress(window.event ? window.event : e); });\n                canvas.addEventListener(\"mouseup\", function (e) { return _this._HandleButtonRelease(window.event ? window.event : e); });\n                canvas.addEventListener(\"mouseout\", function (e) { return _this._HandleOut(window.event ? window.event : e); });\n                canvas.addEventListener(\"mousemove\", function (e) { return _this._HandleMove(window.event ? window.event : e); });\n                canvas.addEventListener(\"mousewheel\", function (e) { return _this._HandleWheel(window.event ? window.event : e); });\n                canvas.addEventListener(\"DOMMouseScroll\", function (e) { return _this._HandleWheel(window.event ? window.event : e); });\n            };\n            MouseInterop.prototype._CalcOffset = function (canvas) {\n                var left = 0;\n                var top = 0;\n                var cur = canvas;\n                if (cur.offsetParent) {\n                    do {\n                        left += cur.offsetLeft;\n                        top += cur.offsetTop;\n                    } while (cur = cur.offsetParent);\n                }\n                return { left: left, top: top };\n            };\n            MouseInterop.prototype._GetMousePosition = function (evt) {\n                return new Point(evt.clientX + window.pageXOffset + this._CanvasOffset.left, evt.clientY + window.pageYOffset + this._CanvasOffset.top);\n            };\n            MouseInterop.prototype.IsLeftButton = function (button) {\n                return button === 1;\n            };\n            MouseInterop.prototype.IsRightButton = function (button) {\n                return button === 2;\n            };\n            MouseInterop.prototype._HandleContextMenu = function (evt) {\n                if (!this._IsContextMenuDisabled)\n                    return;\n                this._IsContextMenuDisabled = false;\n                evt.stopPropagation && evt.stopPropagation();\n                evt.preventDefault && evt.preventDefault();\n                evt.cancelBubble = true;\n                return false;\n            };\n            MouseInterop.prototype._HandleButtonPress = function (evt) {\n                Fayde.Engine.Inspection.Kill();\n                Input.Keyboard.RefreshModifiers(createModifiers(evt));\n                var button = evt.which ? evt.which : evt.button;\n                var pos = this._GetMousePosition(evt);\n                if (this._Input.HandleMousePress(button, pos))\n                    this.DisableNextContextMenu();\n            };\n            MouseInterop.prototype._HandleButtonRelease = function (evt) {\n                Input.Keyboard.RefreshModifiers(createModifiers(evt));\n                var button = evt.which ? evt.which : evt.button;\n                var pos = this._GetMousePosition(evt);\n                this._Input.HandleMouseRelease(button, pos);\n            };\n            MouseInterop.prototype._HandleOut = function (evt) {\n                Input.Keyboard.RefreshModifiers(createModifiers(evt));\n                var pos = this._GetMousePosition(evt);\n                this._Input.HandleMouseEvent(MouseInputType.MouseLeave, null, pos);\n            };\n            MouseInterop.prototype._HandleMove = function (evt) {\n                Input.Keyboard.RefreshModifiers(createModifiers(evt));\n                var pos = this._GetMousePosition(evt);\n                this._Input.HandleMouseEvent(MouseInputType.MouseMove, null, pos);\n                this._Input.UpdateCursorFromInputList();\n            };\n            MouseInterop.prototype._HandleWheel = function (evt) {\n                Input.Keyboard.RefreshModifiers(createModifiers(evt));\n                var delta = 0;\n                if (evt.wheelDelta)\n                    delta = evt.wheelDelta / 120;\n                else if (evt.detail)\n                    delta = -evt.detail / 3;\n                if (evt.preventDefault)\n                    evt.preventDefault();\n                evt.returnValue = false;\n                this._Input.HandleMouseEvent(MouseInputType.MouseWheel, null, this._GetMousePosition(evt), delta);\n                this._Input.UpdateCursorFromInputList();\n            };\n            MouseInterop.prototype.CreateEventArgs = function (type, pos, delta) {\n                switch (type) {\n                    case MouseInputType.MouseUp:\n                        return new Fayde.Input.MouseButtonEventArgs(pos);\n                    case MouseInputType.MouseDown:\n                        return new Fayde.Input.MouseButtonEventArgs(pos);\n                    case MouseInputType.MouseLeave:\n                        return new Fayde.Input.MouseEventArgs(pos);\n                    case MouseInputType.MouseEnter:\n                        return new Fayde.Input.MouseEventArgs(pos);\n                    case MouseInputType.MouseMove:\n                        return new Fayde.Input.MouseEventArgs(pos);\n                    case MouseInputType.MouseWheel:\n                        return new Fayde.Input.MouseWheelEventArgs(pos, delta);\n                }\n            };\n            MouseInterop.prototype.DisableNextContextMenu = function () {\n                this._IsContextMenuDisabled = true;\n            };\n            return MouseInterop;\n        })();\n        var IEMouseInterop = (function (_super) {\n            __extends(IEMouseInterop, _super);\n            function IEMouseInterop() {\n                _super.apply(this, arguments);\n                this.StopIEContextMenu = false;\n            }\n            IEMouseInterop.prototype.DisableNextContextMenu = function () {\n                _super.prototype.DisableNextContextMenu.call(this);\n                this.StopIEContextMenu = true;\n            };\n            IEMouseInterop.prototype.RegisterEvents = function (input, canvas) {\n                var _this = this;\n                _super.prototype.RegisterEvents.call(this, input, canvas);\n                canvas.oncontextmenu = function (e) { return _this._HandleIEContextMenu(e); };\n            };\n            IEMouseInterop.prototype._HandleIEContextMenu = function (evt) {\n                if (this.StopIEContextMenu) {\n                    this.StopIEContextMenu = false;\n                    return false;\n                }\n                return true;\n            };\n            return IEMouseInterop;\n        })(MouseInterop);\n        var NetscapeMouseInterop = (function (_super) {\n            __extends(NetscapeMouseInterop, _super);\n            function NetscapeMouseInterop() {\n                _super.apply(this, arguments);\n            }\n            NetscapeMouseInterop.prototype.IsRightButton = function (button) {\n                return button === 3;\n            };\n            return NetscapeMouseInterop;\n        })(MouseInterop);\n        function createModifiers(e) {\n            return {\n                Shift: e.shiftKey,\n                Ctrl: e.ctrlKey,\n                Alt: e.altKey\n            };\n        }\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/RoutedEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var TouchEventArgs = (function (_super) {\n            __extends(TouchEventArgs, _super);\n            function TouchEventArgs(device) {\n                _super.call(this);\n                this.Device = device;\n            }\n            TouchEventArgs.prototype.GetTouchPoint = function (relativeTo) {\n                return this.Device.GetTouchPoint(relativeTo);\n            };\n            return TouchEventArgs;\n        })(Fayde.RoutedEventArgs);\n        Input.TouchEventArgs = TouchEventArgs;\n        Fayde.CoreLibrary.add(TouchEventArgs);\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        (function (TouchInputType) {\n            TouchInputType[TouchInputType[\"NoOp\"] = 0] = \"NoOp\";\n            TouchInputType[TouchInputType[\"TouchDown\"] = 1] = \"TouchDown\";\n            TouchInputType[TouchInputType[\"TouchUp\"] = 2] = \"TouchUp\";\n            TouchInputType[TouchInputType[\"TouchMove\"] = 3] = \"TouchMove\";\n            TouchInputType[TouchInputType[\"TouchEnter\"] = 4] = \"TouchEnter\";\n            TouchInputType[TouchInputType[\"TouchLeave\"] = 5] = \"TouchLeave\";\n        })(Input.TouchInputType || (Input.TouchInputType = {}));\n        var TouchInputType = Input.TouchInputType;\n        function CreateTouchInterop() {\n            if (navigator.msPointerEnabled || navigator.pointerEnabled)\n                return new Input.TouchInternal.PointerTouchInterop();\n            if (\"ontouchstart\" in window)\n                return new Input.TouchInternal.NonPointerTouchInterop();\n            return new DummyTouchInterop();\n        }\n        Input.CreateTouchInterop = CreateTouchInterop;\n        var DummyTouchInterop = (function () {\n            function DummyTouchInterop() {\n            }\n            DummyTouchInterop.prototype.Register = function (input, canvas) { };\n            return DummyTouchInterop;\n        })();\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var TouchPoint = (function () {\n            function TouchPoint(position, force) {\n                Object.defineProperty(this, \"Position\", { value: position, writable: false });\n                Object.defineProperty(this, \"Force\", { value: force, writable: false });\n            }\n            return TouchPoint;\n        })();\n        Input.TouchPoint = TouchPoint;\n        Fayde.CoreLibrary.add(TouchPoint);\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var keyboardInput;\n        var VirtualKeyboard = (function () {\n            function VirtualKeyboard() {\n            }\n            VirtualKeyboard.Init = function () {\n                keyboardInput = document.createElement('input');\n                keyboardInput.type = \"text\";\n                var style = keyboardInput.style;\n                style.opacity = \"0\";\n                style.cssFloat = \"left\";\n                style.width = \"0\";\n                style.height = \"0\";\n                style.borderWidth = \"0\";\n                document.body.insertBefore(keyboardInput, document.body.firstElementChild);\n            };\n            VirtualKeyboard.Launch = function () {\n                console.log(\"Launch\");\n                keyboardInput.focus();\n            };\n            return VirtualKeyboard;\n        })();\n        Input.VirtualKeyboard = VirtualKeyboard;\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\nvar TimeSpan = (function () {\n    function TimeSpan() {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i - 0] = arguments[_i];\n        }\n        this._Ticks = 0;\n        if (args.length === 0)\n            return;\n        if (args.length === 1) {\n            this._Ticks = args[0] || 0;\n            return;\n        }\n        var days = 0;\n        var hours = 0;\n        var minutes = 0;\n        var seconds = 0;\n        var milliseconds = 0;\n        if (args.length === 3) {\n            hours = args[0] || 0;\n            minutes = args[1] || 0;\n            seconds = args[2] || 0;\n        }\n        else {\n            days = args[0] || 0;\n            hours = args[1] || 0;\n            minutes = args[2] || 0;\n            seconds = args[3] || 0;\n            milliseconds = args[4] || 0;\n        }\n        this._Ticks = (days * TimeSpan._TicksPerDay) + (hours * TimeSpan._TicksPerHour) + (minutes * TimeSpan._TicksPerMinute)\n            + (seconds * TimeSpan._TicksPerSecond) + (milliseconds * TimeSpan._TicksPerMillisecond);\n    }\n    Object.defineProperty(TimeSpan, \"Zero\", {\n        get: function () { return new TimeSpan(); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan, \"MinValue\", {\n        get: function () { return new TimeSpan(Number.MIN_VALUE); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan, \"MaxValue\", {\n        get: function () { return new TimeSpan(Number.MAX_VALUE); },\n        enumerable: true,\n        configurable: true\n    });\n    TimeSpan.FromDays = function (value) {\n        return new TimeSpan(value * this._TicksPerDay);\n    };\n    TimeSpan.FromHours = function (value) {\n        return new TimeSpan(value * this._TicksPerHour);\n    };\n    TimeSpan.FromMinutes = function (value) {\n        return new TimeSpan(value * this._TicksPerMinute);\n    };\n    TimeSpan.FromSeconds = function (value) {\n        return new TimeSpan(value * this._TicksPerSecond);\n    };\n    TimeSpan.FromMilliseconds = function (value) {\n        return new TimeSpan(value * this._TicksPerMillisecond);\n    };\n    Object.defineProperty(TimeSpan.prototype, \"Days\", {\n        get: function () {\n            return this._Ticks > 0 ? Math.floor(this._Ticks / TimeSpan._TicksPerDay) : Math.ceil(this._Ticks / TimeSpan._TicksPerDay);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"Hours\", {\n        get: function () {\n            var remTicks = this._Ticks % TimeSpan._TicksPerDay;\n            return remTicks > 0 ? Math.floor(remTicks / TimeSpan._TicksPerHour) : Math.ceil(remTicks / TimeSpan._TicksPerHour);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"Minutes\", {\n        get: function () {\n            var remTicks = this._Ticks % TimeSpan._TicksPerDay;\n            remTicks = remTicks % TimeSpan._TicksPerHour;\n            return remTicks > 0 ? Math.floor(remTicks / TimeSpan._TicksPerMinute) : Math.ceil(remTicks / TimeSpan._TicksPerMinute);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"Seconds\", {\n        get: function () {\n            var remTicks = this._Ticks % TimeSpan._TicksPerDay;\n            remTicks = remTicks % TimeSpan._TicksPerHour;\n            remTicks = remTicks % TimeSpan._TicksPerMinute;\n            return remTicks > 0 ? Math.floor(remTicks / TimeSpan._TicksPerSecond) : Math.ceil(remTicks / TimeSpan._TicksPerSecond);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"Milliseconds\", {\n        get: function () {\n            var remTicks = this._Ticks % TimeSpan._TicksPerDay;\n            remTicks = remTicks % TimeSpan._TicksPerHour;\n            remTicks = remTicks % TimeSpan._TicksPerMinute;\n            remTicks = remTicks % TimeSpan._TicksPerSecond;\n            return remTicks > 0 ? Math.floor(remTicks / TimeSpan._TicksPerMillisecond) : Math.ceil(remTicks / TimeSpan._TicksPerMillisecond);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"Ticks\", {\n        get: function () { return this._Ticks; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"TotalDays\", {\n        get: function () { return this._Ticks / TimeSpan._TicksPerDay; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"TotalHours\", {\n        get: function () { return this._Ticks / TimeSpan._TicksPerHour; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"TotalMinutes\", {\n        get: function () { return this._Ticks / TimeSpan._TicksPerMinute; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"TotalSeconds\", {\n        get: function () { return this._Ticks / TimeSpan._TicksPerSecond; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSpan.prototype, \"TotalMilliseconds\", {\n        get: function () { return this._Ticks / TimeSpan._TicksPerMillisecond; },\n        enumerable: true,\n        configurable: true\n    });\n    TimeSpan.prototype.AddTicks = function (ticks) {\n        if (ticks == null)\n            return;\n        if (isNaN(ticks))\n            return;\n        this._Ticks += ticks;\n    };\n    TimeSpan.prototype.AddMilliseconds = function (milliseconds) {\n        this.AddTicks(milliseconds * TimeSpan._TicksPerMillisecond);\n    };\n    TimeSpan.prototype.Add = function (ts2) {\n        var ts = new TimeSpan();\n        ts._Ticks = this._Ticks + ts2._Ticks;\n        return ts;\n    };\n    TimeSpan.prototype.Subtract = function (ts2) {\n        var ts = new TimeSpan();\n        ts._Ticks = this._Ticks - ts2._Ticks;\n        return ts;\n    };\n    TimeSpan.prototype.Multiply = function (v) {\n        var ts = new TimeSpan();\n        ts._Ticks = Math.round(this._Ticks * v);\n        return ts;\n    };\n    TimeSpan.prototype.Divide = function (ts2) {\n        var ts = new TimeSpan();\n        ts._Ticks = this._Ticks / ts2._Ticks;\n        return ts;\n    };\n    TimeSpan.prototype.CompareTo = function (ts2) {\n        if (this._Ticks === ts2._Ticks)\n            return 0;\n        return (this._Ticks > ts2._Ticks) ? 1 : -1;\n    };\n    TimeSpan.prototype.IsZero = function () {\n        return this._Ticks === 0;\n    };\n    TimeSpan.prototype.GetJsDelay = function () {\n        return this._Ticks * TimeSpan._TicksPerMillisecond;\n    };\n    TimeSpan.prototype.toString = function (format) {\n        if (!format)\n            return Fayde.Localization.FormatSingle(this, \"c\");\n        return Fayde.Localization.FormatSingle(this, format);\n    };\n    TimeSpan.prototype.valueOf = function () {\n        return this.Ticks;\n    };\n    TimeSpan._TicksPerMillisecond = 1;\n    TimeSpan._TicksPerSecond = 1000;\n    TimeSpan._TicksPerMinute = TimeSpan._TicksPerSecond * 60;\n    TimeSpan._TicksPerHour = TimeSpan._TicksPerMinute * 60;\n    TimeSpan._TicksPerDay = TimeSpan._TicksPerHour * 24;\n    return TimeSpan;\n})();\nFayde.CoreLibrary.addPrimitive(TimeSpan);\nnullstone.registerTypeConverter(TimeSpan, function (val) {\n    if (val instanceof TimeSpan)\n        return val;\n    if (val instanceof Duration) {\n        var duration = val;\n        if (duration.HasTimeSpan)\n            return new TimeSpan(duration.TimeSpan.Ticks);\n        else\n            throw new Exception(\"Cannot convert \" + duration.IsForever ? \"Forever\" : \"Automatic\" +\n                +\" duration to TimeSpan\");\n    }\n    if (typeof val === \"number\")\n        return new TimeSpan(val);\n    val = val.toString();\n    var tokens = val.split(\":\");\n    if (tokens.length === 1) {\n        var ticks = parseFloat(val);\n        if (!isNaN(ticks))\n            return new TimeSpan(ticks);\n        throw new Exception(\"Invalid TimeSpan format '\" + val + \"'.\");\n    }\n    if (tokens.length !== 3)\n        throw new Exception(\"Invalid TimeSpan format '\" + val + \"'.\");\n    var days = 0;\n    var hours;\n    var minutes;\n    var seconds;\n    var milliseconds = 0;\n    var daysplit = tokens[0].split(\".\");\n    if (daysplit.length === 2) {\n        days = parseInt(daysplit[0]);\n        hours = parseInt(daysplit[1]);\n    }\n    else if (daysplit.length === 1) {\n        hours = parseInt(daysplit[0]);\n    }\n    minutes = parseInt(tokens[1]);\n    seconds = parseFloat(tokens[2]);\n    milliseconds = seconds % 1;\n    seconds = seconds - milliseconds;\n    milliseconds *= 1000.0;\n    return new TimeSpan(days, hours, minutes, seconds, milliseconds);\n});\n/// <reference path=\"TimeSpan.ts\" />\nvar DayOfWeek;\n(function (DayOfWeek) {\n    DayOfWeek[DayOfWeek[\"Sunday\"] = 0] = \"Sunday\";\n    DayOfWeek[DayOfWeek[\"Monday\"] = 1] = \"Monday\";\n    DayOfWeek[DayOfWeek[\"Tuesday\"] = 2] = \"Tuesday\";\n    DayOfWeek[DayOfWeek[\"Wednesday\"] = 3] = \"Wednesday\";\n    DayOfWeek[DayOfWeek[\"Thursday\"] = 4] = \"Thursday\";\n    DayOfWeek[DayOfWeek[\"Friday\"] = 5] = \"Friday\";\n    DayOfWeek[DayOfWeek[\"Saturday\"] = 6] = \"Saturday\";\n})(DayOfWeek || (DayOfWeek = {}));\nFayde.CoreLibrary.addEnum(DayOfWeek, \"DayOfWeek\");\nvar DateTimeKind;\n(function (DateTimeKind) {\n    DateTimeKind[DateTimeKind[\"Unspecified\"] = 0] = \"Unspecified\";\n    DateTimeKind[DateTimeKind[\"Local\"] = 1] = \"Local\";\n    DateTimeKind[DateTimeKind[\"Utc\"] = 2] = \"Utc\";\n})(DateTimeKind || (DateTimeKind = {}));\nFayde.CoreLibrary.addEnum(DateTimeKind, \"DateTimeKind\");\nvar DateTime = (function () {\n    function DateTime() {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i - 0] = arguments[_i];\n        }\n        this._InternalDate = null;\n        var ticks = null;\n        var kind = DateTimeKind.Unspecified;\n        var year = 0;\n        var month = 0;\n        var day = 0;\n        var hour = 0;\n        var minute = 0;\n        var second = 0;\n        var millisecond = 0;\n        if (args.length === 1) {\n            var arg0 = args[0];\n            if (arg0 instanceof Date) {\n                ticks = arg0.getTime();\n            }\n            else {\n                ticks = args[0];\n            }\n        }\n        else if (args.length === 2) {\n            var arg0 = args[0];\n            if (arg0 instanceof Date) {\n                ticks = arg0.getTime();\n            }\n            else {\n                ticks = args[0];\n            }\n            kind = args[1];\n        }\n        else if (args.length === 3) {\n            year = args[0];\n            month = args[1];\n            day = args[2];\n        }\n        else if (args.length === 6) {\n            year = args[0];\n            month = args[1];\n            day = args[2];\n            hour = args[3];\n            minute = args[4];\n            second = args[5];\n        }\n        else if (args.length === 7) {\n            year = args[0];\n            month = args[1];\n            day = args[2];\n            hour = args[3];\n            minute = args[4];\n            second = args[5];\n            millisecond = args[6];\n        }\n        else if (args.length === 8) {\n            year = args[0];\n            month = args[1];\n            day = args[2];\n            hour = args[3];\n            minute = args[4];\n            second = args[5];\n            millisecond = args[6];\n            kind = args[7];\n        }\n        else {\n            ticks = 0;\n        }\n        this._Kind = kind || DateTimeKind.Unspecified;\n        if (isNaN(ticks) || ticks < DateTime.MIN_TICKS || ticks > DateTime.MAX_TICKS) {\n            throw new Error(\"DateTime is out of range.\");\n        }\n        if (ticks != null) {\n            this._InternalDate = new Date(ticks);\n            return;\n        }\n        var id = this._InternalDate = new Date();\n        if (this._Kind === DateTimeKind.Utc) {\n            id.setUTCFullYear(year, month - 1, day);\n            id.setUTCHours(hour);\n            id.setUTCMinutes(minute);\n            id.setUTCSeconds(second);\n            id.setMilliseconds(millisecond);\n        }\n        else {\n            id.setFullYear(year, month - 1, day);\n            id.setHours(hour);\n            id.setMinutes(minute);\n            id.setSeconds(second);\n            id.setMilliseconds(millisecond);\n        }\n    }\n    Object.defineProperty(DateTime, \"MinValue\", {\n        get: function () { return new DateTime(DateTime.MIN_TICKS); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime, \"MaxValue\", {\n        get: function () { return new DateTime(DateTime.MAX_TICKS); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime, \"Now\", {\n        get: function () { return new DateTime(new Date().getTime(), DateTimeKind.Local); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime, \"Today\", {\n        get: function () { return DateTime.Now.Date; },\n        enumerable: true,\n        configurable: true\n    });\n    DateTime.Compare = function (dt1, dt2) {\n        var t1 = dt1._InternalDate.getTime();\n        var t2 = dt2._InternalDate.getTime();\n        if (t1 < t2)\n            return -1;\n        if (t1 > t2)\n            return 1;\n        return 0;\n    };\n    DateTime.DaysInMonth = function (year, month) {\n        var ticks = new Date(year, (month - 1) + 1, 1).getTime() - TimeSpan._TicksPerDay;\n        var dt = new DateTime(ticks);\n        return dt.Day;\n    };\n    Object.defineProperty(DateTime.prototype, \"Ticks\", {\n        get: function () { return this._InternalDate.getTime(); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"Kind\", {\n        get: function () { return this._Kind; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"Date\", {\n        get: function () {\n            var t = this._InternalDate.getTime();\n            var newid = new Date(t);\n            if (this._Kind === DateTimeKind.Utc) {\n                newid.setUTCHours(0);\n                newid.setUTCMinutes(0);\n                newid.setUTCSeconds(0);\n                newid.setUTCMilliseconds(0);\n            }\n            else {\n                newid.setHours(0);\n                newid.setMinutes(0);\n                newid.setSeconds(0);\n                newid.setMilliseconds(0);\n            }\n            return new DateTime(newid.getTime(), this._Kind);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"Day\", {\n        get: function () {\n            if (this._Kind === DateTimeKind.Utc)\n                return this._InternalDate.getUTCDate();\n            return this._InternalDate.getDate();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"DayOfWeek\", {\n        get: function () {\n            if (this._Kind === DateTimeKind.Utc)\n                return this._InternalDate.getUTCDay();\n            return this._InternalDate.getDay();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"DayOfYear\", {\n        get: function () {\n            var dt = this.Date;\n            var base = new DateTime(dt.Year, 1, 1, 0, 0, 0, 0, this.Kind);\n            var diff = new TimeSpan(dt.Ticks - base.Ticks);\n            return Math.floor(diff.TotalDays);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"Hour\", {\n        get: function () {\n            if (this._Kind === DateTimeKind.Utc)\n                return this._InternalDate.getUTCHours();\n            return this._InternalDate.getHours();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"Millisecond\", {\n        get: function () {\n            if (this._Kind === DateTimeKind.Utc)\n                return this._InternalDate.getUTCMilliseconds();\n            return this._InternalDate.getMilliseconds();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"Minute\", {\n        get: function () {\n            if (this._Kind === DateTimeKind.Utc)\n                return this._InternalDate.getUTCMinutes();\n            return this._InternalDate.getMinutes();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"Month\", {\n        get: function () {\n            if (this._Kind === DateTimeKind.Utc)\n                return this._InternalDate.getUTCMonth() + 1;\n            return this._InternalDate.getMonth() + 1;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"Second\", {\n        get: function () {\n            if (this._Kind === DateTimeKind.Utc)\n                return this._InternalDate.getUTCSeconds();\n            return this._InternalDate.getSeconds();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"TimeOfDay\", {\n        get: function () {\n            var id = this._InternalDate;\n            if (this._Kind === DateTimeKind.Utc)\n                return new TimeSpan(0, id.getUTCHours(), id.getUTCMinutes(), id.getUTCSeconds(), id.getUTCMilliseconds());\n            return new TimeSpan(0, id.getHours(), id.getMinutes(), id.getSeconds(), id.getMilliseconds());\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTime.prototype, \"Year\", {\n        get: function () {\n            if (this._Kind === DateTimeKind.Utc)\n                return this._InternalDate.getUTCFullYear();\n            return this._InternalDate.getFullYear();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    DateTime.prototype.AddYears = function (years) {\n        var newid = new Date(this._InternalDate.getTime());\n        var wyears = Math.floor(years);\n        if (isNaN(wyears)) {\n            throw new ArgumentOutOfRangeException(\"years\");\n        }\n        if (this.Kind === DateTimeKind.Utc) {\n            newid.setUTCFullYear(newid.getUTCFullYear() + wyears);\n        }\n        else {\n            newid.setFullYear(newid.getFullYear() + wyears);\n        }\n        return new DateTime(newid, this.Kind);\n    };\n    DateTime.prototype.AddMonths = function (months) {\n        var newid = new Date(this._InternalDate.getTime());\n        var wmonths = Math.floor(months);\n        if (isNaN(wmonths)) {\n            throw new ArgumentOutOfRangeException(\"months\");\n        }\n        if (this.Kind === DateTimeKind.Utc) {\n            newid.setUTCMonth(newid.getUTCMonth() + wmonths);\n        }\n        else {\n            newid.setMonth(newid.getMonth() + wmonths);\n        }\n        return new DateTime(newid, this.Kind);\n    };\n    DateTime.prototype.AddDays = function (value) {\n        return this.Add(TimeSpan.FromDays(value));\n    };\n    DateTime.prototype.AddHours = function (value) {\n        return this.Add(TimeSpan.FromHours(value));\n    };\n    DateTime.prototype.AddMinutes = function (value) {\n        return this.Add(TimeSpan.FromMinutes(value));\n    };\n    DateTime.prototype.AddSeconds = function (value) {\n        return this.Add(TimeSpan.FromSeconds(value));\n    };\n    DateTime.prototype.AddMilliseconds = function (value) {\n        return this.Add(TimeSpan.FromMilliseconds(value));\n    };\n    DateTime.prototype.Add = function (value) {\n        var newid = new Date(this._InternalDate.getTime());\n        if (this.Kind === DateTimeKind.Utc) {\n            newid.setUTCDate(newid.getUTCDate() + value.Days);\n            newid.setUTCHours(newid.getUTCHours() + value.Hours);\n            newid.setUTCMinutes(newid.getUTCMinutes() + value.Minutes);\n            newid.setUTCSeconds(newid.getUTCSeconds() + value.Seconds);\n            newid.setUTCMilliseconds(newid.getUTCMilliseconds() + value.Milliseconds);\n        }\n        else {\n            newid.setDate(newid.getDate() + value.Days);\n            newid.setHours(newid.getHours() + value.Hours);\n            newid.setMinutes(newid.getMinutes() + value.Minutes);\n            newid.setSeconds(newid.getSeconds() + value.Seconds);\n            newid.setMilliseconds(newid.getMilliseconds() + value.Milliseconds);\n        }\n        return new DateTime(newid, this.Kind);\n    };\n    DateTime.prototype.AddTicks = function (value) {\n        return new DateTime(this.Ticks + value, this.Kind);\n    };\n    DateTime.prototype.Subtract = function (value) {\n        if (value instanceof DateTime) {\n            return new TimeSpan(this.Ticks - value.Ticks);\n        }\n        else if (value instanceof TimeSpan) {\n            return new DateTime(this.Ticks - value.Ticks, this.Kind);\n        }\n        return new DateTime(this.Ticks, this.Kind);\n    };\n    DateTime.prototype.ToUniversalTime = function () {\n        if (this.Kind === DateTimeKind.Utc)\n            return new DateTime(this.Ticks, DateTimeKind.Utc);\n        var id = this._InternalDate;\n        return new DateTime(id.getUTCFullYear(), id.getUTCMonth() + 1, id.getUTCDate(), id.getUTCHours(), id.getUTCMinutes(), id.getUTCSeconds(), id.getUTCMilliseconds(), DateTimeKind.Utc);\n    };\n    DateTime.prototype.toString = function (format) {\n        if (!format)\n            return Fayde.Localization.FormatSingle(this, \"s\");\n        return Fayde.Localization.FormatSingle(this, format);\n    };\n    DateTime.prototype.valueOf = function () {\n        return this.Ticks;\n    };\n    DateTime.MAX_TICKS = 8640000000000000;\n    DateTime.MIN_TICKS = -8640000000000000;\n    return DateTime;\n})();\nFayde.CoreLibrary.addPrimitive(DateTime);\nnullstone.registerTypeConverter(DateTime, function (value) {\n    if (value instanceof DateTime)\n        return value;\n    if (value instanceof Date)\n        return new DateTime(value);\n    if (typeof value === \"string\")\n        return new DateTime(Date.parse(value));\n    if (typeof value === \"number\")\n        return new DateTime(value);\n    throw new Exception(\"Cannot parse DateTime value '\" + value + \"'\");\n});\n/// <reference path=\"../Primitives/DateTime.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Localization;\n    (function (Localization) {\n        var Calendar = (function () {\n            function Calendar() {\n                this.ID = 1;\n                this.Eras = [1];\n                this.EraNames = [\"A.D.\"];\n                this.CurrentEraValue = 1;\n                this.TwoDigitYearMax = 2029;\n                this.MaxSupportedDateTime = new DateTime(9999, 12, 31, 23, 59, 59, 999);\n                this.MinSupportedDateTime = new DateTime(1, 1, 1, 0, 0, 0, 0);\n            }\n            return Calendar;\n        })();\n        Localization.Calendar = Calendar;\n    })(Localization = Fayde.Localization || (Fayde.Localization = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Calendar.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Localization;\n    (function (Localization) {\n        (function (CalendarWeekRule) {\n            CalendarWeekRule[CalendarWeekRule[\"FirstDay\"] = 0] = \"FirstDay\";\n            CalendarWeekRule[CalendarWeekRule[\"FirstFullWeek\"] = 1] = \"FirstFullWeek\";\n            CalendarWeekRule[CalendarWeekRule[\"FirstFourDayWeek\"] = 2] = \"FirstFourDayWeek\";\n        })(Localization.CalendarWeekRule || (Localization.CalendarWeekRule = {}));\n        var CalendarWeekRule = Localization.CalendarWeekRule;\n        var DateTimeFormatInfo = (function () {\n            function DateTimeFormatInfo() {\n                this.AbbreviatedDayNames = [\n                    \"Sun\",\n                    \"Mon\",\n                    \"Tue\",\n                    \"Wed\",\n                    \"Thu\",\n                    \"Fri\",\n                    \"Sat\"\n                ];\n                this.AbbreviatedMonthGenitiveNames = [\n                    \"Jan\",\n                    \"Feb\",\n                    \"Mar\",\n                    \"Apr\",\n                    \"May\",\n                    \"Jun\",\n                    \"Jul\",\n                    \"Aug\",\n                    \"Sep\",\n                    \"Oct\",\n                    \"Nov\",\n                    \"Dec\",\n                    \"\"\n                ];\n                this.AbbreviatedMonthNames = [\n                    \"Jan\",\n                    \"Feb\",\n                    \"Mar\",\n                    \"Apr\",\n                    \"May\",\n                    \"Jun\",\n                    \"Jul\",\n                    \"Aug\",\n                    \"Sep\",\n                    \"Oct\",\n                    \"Nov\",\n                    \"Dec\"\n                ];\n                this.AMDesignator = \"AM\";\n                this.Calendar = new Localization.Calendar();\n                this.CalendarWeekRule = CalendarWeekRule.FirstDay;\n                this.DateSeparator = \"/\";\n                this.DayNames = [\n                    \"Sunday\",\n                    \"Monday\",\n                    \"Tuesday\",\n                    \"Wednesday\",\n                    \"Thursday\",\n                    \"Friday\",\n                    \"Saturday\"\n                ];\n                this.FirstDayOfWeek = DayOfWeek.Sunday;\n                this.FullDateTimePattern = \"dddd, MMMM dd, yyyy h:mm:ss tt\";\n                this.LongDatePattern = \"dddd, MMMM dd, yyyy\";\n                this.LongTimePattern = \"h:mm:ss tt\";\n                this.MonthDayPattern = \"MMMM dd\";\n                this.MonthGenitiveNames = [\n                    \"January\",\n                    \"February\",\n                    \"March\",\n                    \"April\",\n                    \"May\",\n                    \"June\",\n                    \"July\",\n                    \"August\",\n                    \"September\",\n                    \"October\",\n                    \"November\",\n                    \"December\",\n                    \"\"\n                ];\n                this.MonthNames = [\n                    \"January\",\n                    \"February\",\n                    \"March\",\n                    \"April\",\n                    \"May\",\n                    \"June\",\n                    \"July\",\n                    \"August\",\n                    \"September\",\n                    \"October\",\n                    \"November\",\n                    \"December\"\n                ];\n                this.PMDesignator = \"PM\";\n                this.RFC1123Pattern = \"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'\";\n                this.ShortDatePattern = \"M/d/yyyy\";\n                this.ShortestDayNames = [\n                    \"Su\",\n                    \"Mo\",\n                    \"Tu\",\n                    \"We\",\n                    \"Th\",\n                    \"Fr\",\n                    \"Sa\"\n                ];\n                this.ShortTimePattern = \"h:mm tt\";\n                this.SortableDateTimePattern = \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\";\n                this.TimeSeparator = \":\";\n                this.UniversalSortableDateTimePattern = \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\";\n                this.YearMonthPattern = \"MMMM, yyyy\";\n                this.HasForceTwoDigitYears = false;\n            }\n            DateTimeFormatInfo.prototype.GetEraName = function (era) {\n                if (era === 0)\n                    era = this.Calendar.CurrentEraValue;\n                if (era < 0)\n                    throw new ArgumentException(\"era\");\n                var eras = this.Calendar.EraNames;\n                if (era >= eras.length)\n                    throw new ArgumentException(\"era\");\n                return eras[era];\n            };\n            DateTimeFormatInfo.ParseRepeatPattern = function (format, pos, patternChar) {\n                var length = format.length;\n                var index = pos + 1;\n                var code = patternChar.charCodeAt(0);\n                while (index < length && format.charCodeAt(index) === code)\n                    ++index;\n                return index - pos;\n            };\n            DateTimeFormatInfo.ParseNextChar = function (format, pos) {\n                if (pos >= format.length - 1)\n                    return -1;\n                return format.charCodeAt(pos + 1);\n            };\n            DateTimeFormatInfo.ParseQuoteString = function (format, pos, result) {\n                var length = format.length;\n                var num = pos;\n                var ch1 = format[pos++];\n                var flag = false;\n                var special = String.fromCharCode(92);\n                while (pos < length) {\n                    var ch2 = format[pos++];\n                    if (ch2 === ch1) {\n                        flag = true;\n                        break;\n                    }\n                    else if (ch2 === special) {\n                        if (pos >= length)\n                            throw new FormatException(\"Invalid format string.\");\n                        result.push(format[pos++]);\n                    }\n                    else\n                        result.push(ch2);\n                }\n                if (flag)\n                    return pos - num;\n                throw new FormatException(\"Bad quote: \" + ch1);\n            };\n            DateTimeFormatInfo.FormatDigits = function (sb, value, len, overrideLenLimit) {\n                if (!overrideLenLimit && len > 2)\n                    len = 2;\n                var s = Math.floor(value).toString();\n                while (s.length < len)\n                    s = \"0\" + s;\n                sb.push(s);\n            };\n            DateTimeFormatInfo.FormatMonth = function (month, repeat, info) {\n                if (repeat === 3)\n                    return info.AbbreviatedMonthNames[month - 1];\n                return info.MonthNames[month - 1];\n            };\n            DateTimeFormatInfo.FormatDayOfWeek = function (dayOfWeek, repeat, info) {\n                if (repeat === 3)\n                    return info.AbbreviatedDayNames[dayOfWeek];\n                return info.DayNames[dayOfWeek];\n            };\n            DateTimeFormatInfo.HebrewFormatDigits = function (sb, digits) {\n                console.warn(\"Hebrew not implemented\");\n                return digits.toString();\n            };\n            DateTimeFormatInfo.FormatHebrewMonthName = function (obj, month, repeat, info) {\n                console.warn(\"Hebrew not implemented\");\n                return DateTimeFormatInfo.FormatMonth(month, repeat, info);\n                if (month >= 7)\n                    ++month;\n                if (repeat === 3)\n                    return info.AbbreviatedMonthNames[month - 1];\n                return info.MonthNames[month - 1];\n            };\n            DateTimeFormatInfo.Instance = new DateTimeFormatInfo();\n            return DateTimeFormatInfo;\n        })();\n        Localization.DateTimeFormatInfo = DateTimeFormatInfo;\n    })(Localization = Fayde.Localization || (Fayde.Localization = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Localization;\n    (function (Localization) {\n        function Format(format) {\n            var items = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                items[_i - 1] = arguments[_i];\n            }\n            var sb = [];\n            appendFormat(sb, format, items);\n            return sb.join(\"\");\n        }\n        Localization.Format = Format;\n        function FormatSingle(obj, format) {\n            return doFormattable(obj, format);\n        }\n        Localization.FormatSingle = FormatSingle;\n        function appendFormat(_this, format, args, provider) {\n            if (format == null || args == null)\n                throw new ArgumentNullException(format == null ? \"format\" : \"args\");\n            var index1 = 0;\n            var length = format.length;\n            var ch = 0;\n            while (true) {\n                var flag = false;\n                var repeatCount = 0;\n                var breakout = false;\n                do {\n                    if (index1 < length) {\n                        ch = format.charCodeAt(index1);\n                        ++index1;\n                        if (ch === 125) {\n                            if (index1 < length && format.charCodeAt(index1) === 125)\n                                ++index1;\n                            else\n                                throw formatError();\n                        }\n                        if (ch === 123) {\n                            if (index1 >= length || format.charCodeAt(index1) !== 123)\n                                --index1;\n                            else {\n                                breakout = true;\n                                ++index1;\n                                break;\n                            }\n                        }\n                        else {\n                            _this.push(String.fromCharCode(ch));\n                            breakout = true;\n                            break;\n                        }\n                    }\n                    if (index1 != length) {\n                        var index2 = index1 + 1;\n                        if (index2 === length || (ch = format.charCodeAt(index2)) < 48 || ch > 57)\n                            throw formatError();\n                        var index3 = 0;\n                        do {\n                            index3 = index3 * 10 + ch - 48;\n                            ++index2;\n                            if (index2 == length)\n                                throw formatError();\n                            ch = format.charCodeAt(index2);\n                        } while (ch >= 48 && ch <= 57 && index3 < 1000000);\n                        if (index3 >= args.length)\n                            throw new FormatException(\"Index out of range.\");\n                        while (index2 < length && (ch = format.charCodeAt(index2)) === 32)\n                            ++index2;\n                        flag = false;\n                        var num = 0;\n                        if (ch === 44) {\n                            ++index2;\n                            while (index2 < length && format.charCodeAt(index2) === 32)\n                                ++index2;\n                            if (index2 == length)\n                                throw formatError();\n                            ch = format.charCodeAt(index2);\n                            if (ch === 45) {\n                                flag = true;\n                                ++index2;\n                                if (index2 == length)\n                                    throw formatError();\n                                ch = format.charCodeAt(index2);\n                            }\n                            if (ch < 48 || ch > 57)\n                                throw formatError();\n                            do {\n                                num = num * 10 + ch - 48;\n                                ++index2;\n                                if (index2 == length)\n                                    throw formatError();\n                                ch = format.charCodeAt(index2);\n                            } while (ch >= 48 && ch <= 57 && num < 1000000);\n                        }\n                        while (index2 < length && (ch = format.charCodeAt(index2)) === 32)\n                            ++index2;\n                        var obj = args[index3];\n                        var stringBuilder = null;\n                        if (ch === 58) {\n                            var index4 = index2 + 1;\n                            while (true) {\n                                if (index4 === length)\n                                    throw formatError();\n                                ch = format.charCodeAt(index4);\n                                ++index4;\n                                if (ch === 123) {\n                                    if (index4 < length && format.charCodeAt(index4) === 123)\n                                        ++index4;\n                                    else\n                                        throw formatError();\n                                }\n                                else if (ch === 125) {\n                                    if (index4 < length && format.charCodeAt(index4) === 125)\n                                        ++index4;\n                                    else\n                                        break;\n                                }\n                                stringBuilder = stringBuilder || [];\n                                stringBuilder.push(String.fromCharCode(ch));\n                            }\n                            index2 = index4 - 1;\n                        }\n                        if (ch !== 125)\n                            throw formatError();\n                        index1 = index2 + 1;\n                        var str = formatItem(obj, stringBuilder, provider) || \"\";\n                        repeatCount = num - str.length;\n                        if (!flag && repeatCount > 0)\n                            pushMany(_this, ' ', repeatCount);\n                        _this.push(str);\n                    }\n                    else\n                        return;\n                } while (!flag || repeatCount <= 0);\n                if (!breakout)\n                    pushMany(_this, ' ', repeatCount);\n            }\n        }\n        function formatItem(obj, stringBuilder, provider) {\n            var format1 = null;\n            var str = null;\n            if (str == null) {\n                if (format1 == null && stringBuilder != null)\n                    format1 = stringBuilderToString(stringBuilder);\n                var formatted = format1 == null ? (obj == null ? \"\" : obj.toString()) : doFormattable(obj, format1, provider);\n                if (formatted !== undefined)\n                    str = formatted;\n            }\n            return str;\n        }\n        function pushMany(arr, s, count) {\n            for (var i = count - 1; i >= 0; i--) {\n                arr.push(s);\n            }\n        }\n        function formatError() {\n            return new FormatException(\"Invalid format string.\");\n        }\n        function stringBuilderToString(arr) {\n            return arr.join(\"\");\n        }\n        var formatters = [];\n        function RegisterFormattable(type, formatter) {\n            formatters[type] = formatter;\n        }\n        Localization.RegisterFormattable = RegisterFormattable;\n        function doFormattable(obj, format, provider) {\n            if (obj == null)\n                return undefined;\n            var type = obj.constructor;\n            var formatter = formatters[type];\n            if (!formatter)\n                return undefined;\n            return formatter(obj, format, provider);\n        }\n    })(Localization = Fayde.Localization || (Fayde.Localization = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Primitives/DateTime.ts\" />\n/// <reference path=\"Format.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Localization;\n    (function (Localization) {\n        Localization.RegisterFormattable(DateTime, function (obj, format, provider) {\n            if (!format)\n                return undefined;\n            if (obj == null)\n                return null;\n            if (obj.constructor !== DateTime)\n                return null;\n            var res = tryStandardFormat(obj, format);\n            if (res != undefined)\n                return res;\n            return tryCustomFormat(obj, format, TimeSpan.MinValue);\n        });\n        function tryStandardFormat(obj, format) {\n            if (format.length !== 1)\n                return undefined;\n            var ch = format[0];\n            if (!ch)\n                return undefined;\n            var f = standardFormatters[ch];\n            if (!f)\n                return undefined;\n            return f(obj);\n        }\n        var standardFormatters = [];\n        standardFormatters[\"d\"] = function (obj) {\n            return [\n                obj.Month.toString(),\n                obj.Day.toString(),\n                obj.Year.toString()\n            ].join(\"/\");\n        };\n        standardFormatters[\"D\"] = function (obj) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            return [\n                info.DayNames[obj.DayOfWeek],\n                \", \",\n                info.MonthNames[obj.Month - 1],\n                \" \",\n                obj.Day.toString(),\n                \", \",\n                obj.Year.toString()\n            ].join(\"\");\n        };\n        standardFormatters[\"f\"] = function (obj) {\n            return [\n                standardFormatters[\"D\"](obj),\n                standardFormatters[\"t\"](obj)\n            ].join(\" \");\n        };\n        standardFormatters[\"F\"] = function (obj) {\n            return [\n                standardFormatters[\"D\"](obj),\n                standardFormatters[\"T\"](obj)\n            ].join(\" \");\n        };\n        standardFormatters[\"g\"] = function (obj) {\n            return [\n                standardFormatters[\"d\"](obj),\n                standardFormatters[\"t\"](obj)\n            ].join(\" \");\n        };\n        standardFormatters[\"G\"] = function (obj) {\n            return [\n                standardFormatters[\"d\"](obj),\n                standardFormatters[\"T\"](obj)\n            ].join(\" \");\n        };\n        standardFormatters[\"m\"] = standardFormatters[\"M\"] = function (obj) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            return [\n                info.MonthNames[obj.Month - 1],\n                obj.Day\n            ].join(\" \");\n        };\n        standardFormatters[\"r\"] = standardFormatters[\"R\"] = function (obj) {\n            var utc = obj.ToUniversalTime();\n            var info = Localization.DateTimeFormatInfo.Instance;\n            return [\n                info.AbbreviatedDayNames[utc.DayOfWeek],\n                \", \",\n                utc.Day,\n                \" \",\n                info.AbbreviatedMonthNames[utc.Month - 1],\n                \" \",\n                utc.Year,\n                \" \",\n                utc.Hour,\n                \":\",\n                utc.Minute,\n                \":\",\n                utc.Second,\n                \" GMT\"\n            ].join(\"\");\n        };\n        standardFormatters[\"s\"] = function (obj) {\n            return [\n                obj.Year,\n                \"-\",\n                padded(obj.Month),\n                \"-\",\n                padded(obj.Day),\n                \"T\",\n                padded(obj.Hour),\n                \":\",\n                padded(obj.Minute),\n                \":\",\n                padded(obj.Second)\n            ].join(\"\");\n        };\n        standardFormatters[\"t\"] = function (obj) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            var hour = obj.Hour;\n            var desig = info.AMDesignator;\n            if (hour > 12) {\n                hour -= 12;\n                desig = info.PMDesignator;\n            }\n            return [\n                hour.toString(),\n                \":\",\n                obj.Minute.toString(),\n                \" \",\n                desig\n            ].join(\"\");\n        };\n        standardFormatters[\"T\"] = function (obj) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            var hour = obj.Hour;\n            var desig = info.AMDesignator;\n            if (hour > 12) {\n                hour -= 12;\n                desig = info.PMDesignator;\n            }\n            return [\n                hour.toString(),\n                \":\",\n                obj.Minute.toString(),\n                \":\",\n                obj.Second.toString(),\n                \" \",\n                desig\n            ].join(\"\");\n        };\n        standardFormatters[\"u\"] = function (obj) {\n            return [\n                obj.Year.toString(),\n                \"-\",\n                padded(obj.Month),\n                \"-\",\n                padded(obj.Day),\n                \" \",\n                padded(obj.Hour),\n                \":\",\n                padded(obj.Minute),\n                \":\",\n                padded(obj.Second),\n                \"Z\"\n            ].join(\"\");\n        };\n        standardFormatters[\"U\"] = function (obj) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            var hour = obj.Hour;\n            var desig = info.AMDesignator;\n            if (hour > 12) {\n                hour -= 12;\n                desig = info.PMDesignator;\n            }\n            return [\n                info.DayNames[obj.DayOfWeek],\n                \", \",\n                info.MonthNames[obj.Month - 1],\n                \" \",\n                obj.Day.toString(),\n                \", \",\n                obj.Year.toString(),\n                \" \",\n                hour.toString(),\n                \":\",\n                obj.Minute.toString(),\n                \":\",\n                obj.Second.toString(),\n                \" \",\n                desig\n            ].join(\"\");\n        };\n        standardFormatters[\"y\"] = standardFormatters[\"Y\"] = function (obj) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            return [\n                info.MonthNames[obj.Month - 1],\n                obj.Year\n            ].join(\", \");\n        };\n        function padded(num) {\n            return num < 10 ? \"0\" + num.toString() : num.toString();\n        }\n        function tryCustomFormat(obj, format, offset) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            var calendar = info.Calendar;\n            var stringBuilder = [];\n            var flag = calendar.ID === 8;\n            var timeOnly = true;\n            var index = 0;\n            var len;\n            while (index < format.length) {\n                var patternChar = format[index];\n                switch (patternChar) {\n                    case 'm':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, obj.Minute, len);\n                        break;\n                    case 's':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, obj.Second, len);\n                        break;\n                    case 't':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        if (len === 1) {\n                            if (obj.Hour < 12) {\n                                if (info.AMDesignator.length >= 1) {\n                                    stringBuilder.push(info.AMDesignator[0]);\n                                    break;\n                                }\n                                else\n                                    break;\n                            }\n                            else if (info.PMDesignator.length >= 1) {\n                                stringBuilder.push(info.PMDesignator[0]);\n                                break;\n                            }\n                            else\n                                break;\n                        }\n                        else {\n                            stringBuilder.push(obj.Hour < 12 ? info.AMDesignator : info.PMDesignator);\n                            break;\n                        }\n                    case 'y':\n                        var year = obj.Year;\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        if (info.HasForceTwoDigitYears)\n                            Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, year, len <= 2 ? len : 2);\n                        else if (calendar.ID === 8)\n                            Localization.DateTimeFormatInfo.HebrewFormatDigits(stringBuilder, year);\n                        else if (len <= 2) {\n                            Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, year % 100, len);\n                        }\n                        else {\n                            stringBuilder.push(Localization.FormatSingle(year, \"D\" + len.toString()));\n                        }\n                        timeOnly = false;\n                        break;\n                    case 'z':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        console.warn(\"DateTime 'z' not implemented\");\n                        break;\n                    case 'K':\n                        len = 1;\n                        console.warn(\"DateTime 'K' not implemented\");\n                        break;\n                    case 'M':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        var month = obj.Month;\n                        if (len <= 2) {\n                            if (flag)\n                                Localization.DateTimeFormatInfo.HebrewFormatDigits(stringBuilder, month);\n                            else\n                                Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, month, len);\n                        }\n                        else if (flag)\n                            stringBuilder.push(Localization.DateTimeFormatInfo.FormatHebrewMonthName(obj, month, len, info));\n                        else\n                            stringBuilder.push(Localization.DateTimeFormatInfo.FormatMonth(month, len, info));\n                        timeOnly = false;\n                        break;\n                    case '\\\\':\n                        var num2 = Localization.DateTimeFormatInfo.ParseNextChar(format, index);\n                        if (num2 < 0)\n                            throw formatError();\n                        stringBuilder.push(String.fromCharCode(num2));\n                        len = 2;\n                        break;\n                    case 'd':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        if (len <= 2) {\n                            var dayOfMonth = obj.Day;\n                            if (flag)\n                                Localization.DateTimeFormatInfo.HebrewFormatDigits(stringBuilder, dayOfMonth);\n                            else\n                                Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, dayOfMonth, len);\n                        }\n                        else {\n                            var dayOfWeek = obj.DayOfWeek;\n                            stringBuilder.push(Localization.DateTimeFormatInfo.FormatDayOfWeek(dayOfWeek, len, info));\n                        }\n                        timeOnly = false;\n                        break;\n                    case 'f':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        if (len > 7)\n                            throw formatError();\n                        stringBuilder.push(msf(obj.Millisecond, len));\n                        break;\n                    case 'F':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        if (len > 7)\n                            throw formatError();\n                        stringBuilder.push(msF(obj.Millisecond, len));\n                        break;\n                    case 'g':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        stringBuilder.push(info.GetEraName(1));\n                        break;\n                    case 'h':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        var num5 = obj.Hour % 12;\n                        if (num5 === 0)\n                            num5 = 12;\n                        Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, num5, len);\n                        break;\n                    case '/':\n                        stringBuilder.push(info.DateSeparator);\n                        len = 1;\n                        break;\n                    case ':':\n                        stringBuilder.push(info.TimeSeparator);\n                        len = 1;\n                        break;\n                    case 'H':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\n                        Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, obj.Hour, len);\n                        break;\n                    case '\"':\n                    case '\\'':\n                        len = Localization.DateTimeFormatInfo.ParseQuoteString(format, index, stringBuilder);\n                        break;\n                    case '%':\n                        var num6 = Localization.DateTimeFormatInfo.ParseNextChar(format, index);\n                        if (num6 < 0 || num6 === 37)\n                            throw formatError();\n                        stringBuilder.push(tryCustomFormat(obj, String.fromCharCode(num6), offset));\n                        len = 2;\n                        break;\n                    default:\n                        stringBuilder.push(patternChar);\n                        len = 1;\n                        break;\n                }\n                index += len;\n            }\n            return stringBuilder.join(\"\");\n        }\n        function msf(ms, len) {\n            var s = Math.abs(ms).toString();\n            while (s.length < 3)\n                s = \"0\" + s;\n            s += \"0000\";\n            return s.substr(0, len);\n        }\n        function msF(ms, len) {\n            var f = msf(ms, len);\n            var end = f.length - 1;\n            for (; end >= 0; end--) {\n                if (f[end] !== \"0\")\n                    break;\n            }\n            return f.slice(0, end + 1);\n        }\n        function formatError() {\n            return new FormatException(\"Invalid format string.\");\n        }\n    })(Localization = Fayde.Localization || (Fayde.Localization = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Localization;\n    (function (Localization) {\n        var NumberFormatInfo = (function () {\n            function NumberFormatInfo() {\n                this.CurrencyDecimalDigits = 2;\n                this.CurrencyDecimalSeparator = \".\";\n                this.CurrencyGroupSeparator = \",\";\n                this.CurrencyGroupSizes = [3];\n                this.CurrencyNegativePattern = 0;\n                this.CurrencyPositivePattern = 0;\n                this.CurrencySymbol = \"$\";\n                this.NaNSymbol = \"NaN\";\n                this.NegativeInfinitySymbol = \"-Infinity\";\n                this.PositiveInfinitySymbol = \"Infinity\";\n                this.NegativeSign = \"-\";\n                this.PositiveSign = \"+\";\n                this.NumberDecimalDigits = 2;\n                this.NumberDecimalSeparator = \".\";\n                this.NumberGroupSeparator = \",\";\n                this.NumberGroupSizes = [3];\n                this.NumberNegativePattern = 1;\n                this.PercentDecimalDigits = 2;\n                this.PercentDecimalSeparator = \".\";\n                this.PercentGroupSeparator = \",\";\n                this.PercentGroupSizes = [3];\n                this.PercentNegativePattern = 0;\n                this.PercentPositivePattern = 0;\n                this.PercentSymbol = \"%\";\n                this.PerMilleSymbol = \"‰\";\n            }\n            NumberFormatInfo.prototype.FormatCurrency = function (num, precision) {\n                if (precision == null)\n                    precision = this.CurrencyDecimalDigits;\n                var rawnum = this.FormatRawNumber(Math.abs(num), precision, this.CurrencyDecimalSeparator, this.CurrencyGroupSeparator, this.CurrencyGroupSizes);\n                if (num < 0) {\n                    switch (this.CurrencyNegativePattern) {\n                        case 0:\n                        default:\n                            return \"(\" + this.CurrencySymbol + rawnum + \")\";\n                        case 1:\n                            return [this.NegativeSign, this.CurrencySymbol, rawnum].join(\"\");\n                        case 2:\n                            return [this.CurrencySymbol, this.NegativeSign, rawnum].join(\"\");\n                        case 3:\n                            return [this.CurrencySymbol, rawnum, this.NegativeSign].join(\"\");\n                        case 4:\n                            return \"(\" + rawnum + this.CurrencySymbol + \")\";\n                        case 5:\n                            return [this.NegativeSign, rawnum, this.CurrencySymbol].join(\"\");\n                        case 6:\n                            return [rawnum, this.NegativeSign, this.CurrencySymbol].join(\"\");\n                        case 7:\n                            return [rawnum, this.CurrencySymbol, this.NegativeSign].join(\"\");\n                        case 8:\n                            return [this.NegativeSign, rawnum, \" \", this.CurrencySymbol].join(\"\");\n                        case 9:\n                            return [this.NegativeSign, this.CurrencySymbol, \" \", rawnum].join(\"\");\n                        case 10:\n                            return [rawnum, \" \", this.CurrencySymbol, this.NegativeSign].join(\"\");\n                        case 11:\n                            return [this.CurrencySymbol, \" \", rawnum, this.NegativeSign].join(\"\");\n                        case 12:\n                            return [this.CurrencySymbol, \" \", this.NegativeSign, rawnum].join(\"\");\n                        case 13:\n                            return [rawnum, this.NegativeSign, \" \", this.CurrencySymbol].join(\"\");\n                        case 14:\n                            return \"(\" + this.CurrencySymbol + \" \" + rawnum + \")\";\n                        case 15:\n                            return \"(\" + rawnum + \" \" + this.CurrencySymbol + \")\";\n                    }\n                }\n                else {\n                    switch (this.CurrencyPositivePattern) {\n                        case 0:\n                        default:\n                            return [this.CurrencySymbol, rawnum].join(\"\");\n                        case 1:\n                            return [rawnum, this.CurrencySymbol].join(\"\");\n                        case 2:\n                            return [this.CurrencySymbol, rawnum].join(\" \");\n                        case 3:\n                            return [rawnum, this.CurrencySymbol].join(\" \");\n                    }\n                }\n            };\n            NumberFormatInfo.prototype.FormatNumber = function (num, precision, ignoreGroupSep) {\n                if (precision == null)\n                    precision = this.NumberDecimalDigits;\n                var rawnum = this.FormatRawNumber(Math.abs(num), precision, this.NumberDecimalSeparator, ignoreGroupSep ? \"\" : this.NumberGroupSeparator, this.NumberGroupSizes);\n                if (num >= 0)\n                    return rawnum;\n                switch (this.NumberNegativePattern) {\n                    case 0:\n                        return \"(\" + rawnum + \")\";\n                    case 1:\n                    default:\n                        return [this.NegativeSign, rawnum].join(\"\");\n                    case 2:\n                        return [this.NegativeSign, rawnum].join(\" \");\n                    case 3:\n                        return [rawnum, this.NegativeSign].join(\"\");\n                    case 4:\n                        return [rawnum, this.NegativeSign].join(\" \");\n                }\n            };\n            NumberFormatInfo.prototype.FormatPercent = function (num, precision) {\n                if (precision == null)\n                    precision = this.PercentDecimalDigits;\n                var rawnum = this.FormatRawNumber(Math.abs(num * 100), precision, this.PercentDecimalSeparator, this.PercentGroupSeparator, this.PercentGroupSizes);\n                var sym = this.PercentSymbol;\n                if (num < 0) {\n                    var sign = this.NegativeSign;\n                    switch (this.PercentNegativePattern) {\n                        case 0:\n                        default:\n                            return [sign, rawnum, \" \", sym].join(\"\");\n                        case 1:\n                            return [sign, rawnum, sym].join(\"\");\n                        case 2:\n                            return [sign, sym, rawnum].join(\"\");\n                        case 3:\n                            return [sym, sign, rawnum].join(\"\");\n                        case 4:\n                            return [sym, rawnum, sign].join(\"\");\n                        case 5:\n                            return [rawnum, sign, sym].join(\"\");\n                        case 6:\n                            return [rawnum, sym, sign].join(\"\");\n                        case 7:\n                            return [sign, sym, \" \", rawnum].join(\"\");\n                        case 8:\n                            return [sign, sym, \" \", rawnum].join(\"\");\n                        case 9:\n                            return [sym, \" \", rawnum, sign].join(\"\");\n                        case 10:\n                            return [sym, \" \", sign, rawnum].join(\"\");\n                        case 11:\n                            return [rawnum, sign, \" \", sym].join(\"\");\n                    }\n                }\n                else {\n                    switch (this.PercentPositivePattern) {\n                        case 0:\n                        default:\n                            return [rawnum, this.PercentSymbol].join(\" \");\n                        case 1:\n                            return [rawnum, this.PercentSymbol].join(\"\");\n                        case 2:\n                            return [this.PercentSymbol, rawnum].join(\"\");\n                        case 3:\n                            return [this.PercentSymbol, rawnum].join(\" \");\n                    }\n                }\n            };\n            NumberFormatInfo.prototype.FormatGeneral = function (num, precision) {\n                if (precision == null)\n                    precision = 6;\n                var sig = sigDigits(Math.abs(num), precision);\n                var rawnum = sig.toString();\n                if (num >= 0)\n                    return rawnum;\n                return this.NegativeSign + rawnum;\n            };\n            NumberFormatInfo.prototype.FormatDecimal = function (num, precision) {\n                var rawnum = this.FormatRawNumber(Math.abs(num), 0, \"\", \"\", null);\n                var d = padded(rawnum, precision || 0, true);\n                if (num < 0)\n                    d = this.NegativeSign + d;\n                return d;\n            };\n            NumberFormatInfo.prototype.FormatExponential = function (num, precision) {\n                if (precision == null)\n                    precision = 6;\n                var e = num.toExponential(precision);\n                var tokens = e.split(\"e+\");\n                return tokens[0] + \"e\" + this.PositiveSign + padded(tokens[1], 3, true);\n            };\n            NumberFormatInfo.prototype.FormatHexadecimal = function (num, precision) {\n                if (precision == null)\n                    precision = 2;\n                num = parseInt(num);\n                if (num >= 0)\n                    return padded(num.toString(16), precision, true);\n                var us = (Math.pow(2, 32) + num).toString(16);\n                if (precision >= us.length)\n                    return padded(us, precision, true);\n                var start = 0;\n                while (us.length - start > precision && us[start] === \"f\") {\n                    start++;\n                }\n                return us.substr(start);\n            };\n            NumberFormatInfo.prototype.FormatRawNumber = function (num, precision, decSep, groupSep, groupSizes) {\n                var rounded = round(num, precision);\n                var ip = Math.floor(rounded).toString();\n                var fp = rounded.toString().split('.')[1];\n                var pfp = padded(fp, precision);\n                if (!pfp)\n                    return grouped(ip, groupSep);\n                return [\n                    grouped(ip, groupSep),\n                    pfp\n                ].join(decSep);\n            };\n            NumberFormatInfo.Instance = new NumberFormatInfo();\n            return NumberFormatInfo;\n        })();\n        Localization.NumberFormatInfo = NumberFormatInfo;\n        function grouped(s, sep) {\n            if (s.length < 4)\n                return s;\n            var offset = s.length % 3;\n            if (offset !== 0) {\n                offset = 3 - offset;\n                s = new Array(offset + 1).join(\"0\") + s;\n            }\n            return s.match(/\\d\\d\\d/g).join(sep).substr(offset);\n        }\n        function padded(s, precision, front) {\n            if (!s)\n                return new Array(precision + 1).join(\"0\");\n            if (s.length > precision)\n                return front ? s : s.substr(0, precision);\n            if (front)\n                return new Array(precision - s.length + 1).join(\"0\") + s;\n            return s + new Array(precision - s.length + 1).join(\"0\");\n        }\n        function round(num, places) {\n            var factor = Math.pow(10, places);\n            return Math.round(num * factor) / factor;\n        }\n        function sigDigits(num, digits) {\n            var n = num.toString();\n            var index = n.indexOf(\".\");\n            if (index > -1)\n                return round(num, digits - index);\n            return round(num, digits - n.length);\n        }\n    })(Localization = Fayde.Localization || (Fayde.Localization = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Format.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Localization;\n    (function (Localization) {\n        Localization.RegisterFormattable(Number, function (obj, format, provider) {\n            if (obj == null)\n                return null;\n            if (obj.constructor !== Number)\n                return null;\n            var res = tryStandardFormat(obj, format);\n            if (res != undefined)\n                return res;\n            return format;\n        });\n        function tryStandardFormat(obj, format) {\n            var ch = format[0];\n            if (!ch)\n                return undefined;\n            var lowerch = ch.toLowerCase();\n            if (lowerch < \"a\" || lowerch > \"z\")\n                return undefined;\n            var prec = null;\n            if (format.length > 1) {\n                var prec = parseInt(format.substr(1));\n                if (isNaN(prec))\n                    return undefined;\n            }\n            var f = standardFormatters[ch] || standardFormatters[lowerch];\n            if (!f)\n                return undefined;\n            return f(obj, prec);\n        }\n        var standardFormatters = [];\n        standardFormatters[\"c\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatCurrency(obj, precision);\n        };\n        standardFormatters[\"d\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatDecimal(obj, precision);\n        };\n        standardFormatters[\"E\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatExponential(obj, precision).toUpperCase();\n        };\n        standardFormatters[\"e\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatExponential(obj, precision);\n        };\n        standardFormatters[\"f\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatNumber(obj, precision, true);\n        };\n        standardFormatters[\"g\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatGeneral(obj, precision);\n        };\n        standardFormatters[\"n\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatNumber(obj, precision);\n        };\n        standardFormatters[\"p\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatPercent(obj, precision);\n        };\n        standardFormatters[\"X\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatHexadecimal(obj, precision).toUpperCase();\n        };\n        standardFormatters[\"x\"] = function (obj, precision) {\n            return Localization.NumberFormatInfo.Instance.FormatHexadecimal(obj, precision);\n        };\n    })(Localization = Fayde.Localization || (Fayde.Localization = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Primitives/TimeSpan.ts\" />\n/// <reference path=\"Format.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Localization;\n    (function (Localization) {\n        Localization.RegisterFormattable(TimeSpan, function (obj, format, provider) {\n            if (!format)\n                return undefined;\n            if (obj == null)\n                return null;\n            if (obj.constructor !== TimeSpan)\n                return null;\n            var res = tryStandardFormat(obj, format);\n            if (res != undefined)\n                return res;\n            return tryCustomFormat(obj, format);\n        });\n        function tryStandardFormat(obj, format) {\n            if (format.length !== 1)\n                return undefined;\n            var ch = format[0];\n            if (!ch)\n                return undefined;\n            var f = standardFormatters[ch];\n            if (!f)\n                return undefined;\n            return f(obj);\n        }\n        var standardFormatters = [];\n        standardFormatters[\"c\"] = standardFormatters[\"t\"] = standardFormatters[\"T\"] = function (obj) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            var s = [\n                padded(obj.Hours),\n                padded(obj.Minutes),\n                padded(obj.Seconds)\n            ].join(info.TimeSeparator);\n            var days = obj.Days;\n            if (days)\n                s = Math.abs(days) + \".\" + s;\n            var ms = obj.Milliseconds;\n            if (ms)\n                s += \".\" + msf(ms, 7);\n            if (obj.Ticks < 0)\n                s = \"-\" + s;\n            return s;\n        };\n        standardFormatters[\"g\"] = function (obj) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            var s = [\n                Math.abs(obj.Hours),\n                padded(obj.Minutes),\n                padded(obj.Seconds)\n            ].join(info.TimeSeparator);\n            var days = obj.Days;\n            if (days)\n                s = Math.abs(days) + \":\" + s;\n            var ms = obj.Milliseconds;\n            if (ms)\n                s += \".\" + msF(ms, 7);\n            if (obj.Ticks < 0)\n                s = \"-\" + s;\n            return s;\n        };\n        standardFormatters[\"G\"] = function (obj) {\n            var info = Localization.DateTimeFormatInfo.Instance;\n            var s = [\n                Math.abs(obj.Days),\n                padded(obj.Hours),\n                padded(obj.Minutes),\n                padded(obj.Seconds)\n            ].join(info.TimeSeparator);\n            var ms = obj.Milliseconds;\n            s += \".\" + msf(ms, 7);\n            if (obj.Ticks < 0)\n                s = \"-\" + s;\n            return s;\n        };\n        function tryCustomFormat(obj, format) {\n            var days = Math.abs(obj.Days);\n            var hours = Math.abs(obj.Hours);\n            var minutes = Math.abs(obj.Minutes);\n            var seconds = Math.abs(obj.Seconds);\n            var ms = Math.abs(obj.Milliseconds);\n            var len;\n            var pos = 0;\n            var stringBuilder = [];\n            while (pos < format.length) {\n                var patternChar = format[pos];\n                switch (patternChar) {\n                    case 'm':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\n                        if (len > 2)\n                            throw formatError();\n                        Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, minutes, len);\n                        break;\n                    case 's':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\n                        if (len > 2)\n                            throw formatError();\n                        Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, seconds, len);\n                        break;\n                    case '\\\\':\n                        var num7 = Localization.DateTimeFormatInfo.ParseNextChar(format, pos);\n                        if (num7 < 0)\n                            throw formatError();\n                        stringBuilder.push(String.fromCharCode(num7));\n                        len = 2;\n                        break;\n                    case 'd':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\n                        if (len > 8)\n                            throw formatError();\n                        Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, days, len, true);\n                        break;\n                    case 'f':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\n                        if (len > 7)\n                            throw formatError();\n                        stringBuilder.push(msf(ms, len));\n                        break;\n                    case 'F':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\n                        if (len > 7)\n                            throw formatError();\n                        stringBuilder.push(msF(ms, len));\n                        break;\n                    case 'h':\n                        len = Localization.DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\n                        if (len > 2)\n                            throw formatError();\n                        Localization.DateTimeFormatInfo.FormatDigits(stringBuilder, hours, len);\n                        break;\n                    case '\"':\n                    case '\\'':\n                        len = Localization.DateTimeFormatInfo.ParseQuoteString(format, pos, stringBuilder);\n                        break;\n                    case '%':\n                        var num9 = Localization.DateTimeFormatInfo.ParseNextChar(format, pos);\n                        if (num9 < 0 || num9 === 37)\n                            throw formatError();\n                        stringBuilder.push(tryCustomFormat(obj, String.fromCharCode(num9)));\n                        len = 2;\n                        break;\n                    default:\n                        throw formatError();\n                }\n                pos += len;\n            }\n            return stringBuilder.join(\"\");\n        }\n        function padded(num) {\n            var s = Math.abs(num).toString();\n            return (s.length === 1) ? \"0\" + s : s;\n        }\n        function msf(ms, len) {\n            var s = Math.abs(ms).toString();\n            while (s.length < 3)\n                s = \"0\" + s;\n            s += \"0000\";\n            return s.substr(0, len);\n        }\n        function msF(ms, len) {\n            var f = msf(ms, len);\n            var end = f.length - 1;\n            for (; end >= 0; end--) {\n                if (f[end] !== \"0\")\n                    break;\n            }\n            return f.slice(0, end + 1);\n        }\n        function formatError() {\n            return new FormatException(\"Invalid format string.\");\n        }\n    })(Localization = Fayde.Localization || (Fayde.Localization = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var MVVM;\n    (function (MVVM) {\n        function AutoModel(typeOrModel) {\n            var obj = getApplier(typeOrModel);\n            var props = [];\n            var validators = [];\n            var applier = {\n                Notify: function () {\n                    var properties = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        properties[_i - 0] = arguments[_i];\n                    }\n                    for (var i = 0; i < properties.length; i++) {\n                        var prop = properties[i];\n                        if (typeof prop === \"string\")\n                            props.push(prop);\n                        else if (Array.isArray(prop))\n                            props = props.concat(prop);\n                    }\n                    return applier;\n                },\n                Validate: function (propertyName) {\n                    var validations = [];\n                    for (var _i = 1; _i < arguments.length; _i++) {\n                        validations[_i - 1] = arguments[_i];\n                    }\n                    var cur = validators[propertyName];\n                    if (!cur)\n                        validators[propertyName] = validations;\n                    else\n                        validators[propertyName] = cur.concat(validations);\n                    return applier;\n                },\n                Finish: function () {\n                    for (var i = 0, uprops = unique(props), len = uprops.length; i < len; i++) {\n                        var prop = uprops[i];\n                        applyProperty(obj, prop, validators[prop]);\n                    }\n                    return obj;\n                }\n            };\n            return applier;\n        }\n        MVVM.AutoModel = AutoModel;\n        function getApplier(typeOrModel) {\n            if (typeof typeOrModel === \"function\")\n                return typeOrModel.prototype;\n            return typeOrModel;\n        }\n        function unique(arr) {\n            var re = [];\n            for (var i = 0; i < arr.length; i++) {\n                var cur = arr[i];\n                if (re.indexOf(cur) > -1)\n                    continue;\n                re.push(cur);\n            }\n            return re;\n        }\n        function applyProperty(obj, propertyName, validations) {\n            var initial = obj[propertyName];\n            var backingName = \"_$\" + propertyName + \"$_\";\n            obj[backingName] = initial;\n            if (validations && validations.length > 0) {\n                Object.defineProperty(obj, propertyName, {\n                    get: function () {\n                        return this[backingName];\n                    },\n                    set: function (value) {\n                        this[backingName] = value;\n                        doValidate(this, value, propertyName, validations);\n                        this.OnPropertyChanged(propertyName);\n                    }\n                });\n            }\n            else {\n                Object.defineProperty(obj, propertyName, {\n                    get: function () {\n                        return this[backingName];\n                    },\n                    set: function (value) {\n                        this[backingName] = value;\n                        this.OnPropertyChanged(propertyName);\n                    }\n                });\n            }\n        }\n        function doValidate(entity, value, propertyName, validations) {\n            var errs = validate(entity, value, propertyName, validations);\n            entity.ClearErrors && entity.ClearErrors(propertyName);\n            if (!entity.AddError)\n                return;\n            for (var i = 0; i < errs.length; i++) {\n                entity.AddError(propertyName, errs[i]);\n            }\n        }\n        function validate(entity, value, propertyName, validations) {\n            var all = [];\n            for (var i = 0; i < validations.length; i++) {\n                var func = validations[i];\n                var errors = func(value, propertyName, entity);\n                if (errors)\n                    all = all.concat(errors);\n            }\n            return all;\n        }\n    })(MVVM = Fayde.MVVM || (Fayde.MVVM = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/INotifyPropertyChanged.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var MVVM;\n    (function (MVVM) {\n        function NotifyProperties(type, propNames) {\n            var len = propNames.length;\n            for (var i = 0; i < len; i++) {\n                (function () {\n                    var propName = propNames[i];\n                    var backingName = \"$\" + propName + \"$\";\n                    Object.defineProperty(type.prototype, propName, {\n                        get: function () { return this[backingName]; },\n                        set: function (value) {\n                            this[backingName] = value;\n                            this.OnPropertyChanged(propName);\n                        }\n                    });\n                })();\n            }\n        }\n        MVVM.NotifyProperties = NotifyProperties;\n        var ObservableObject = (function () {\n            function ObservableObject() {\n                this.PropertyChanged = new nullstone.Event();\n            }\n            ObservableObject.prototype.OnPropertyChanged = function (propertyName) {\n                this.PropertyChanged.raise(this, new Fayde.PropertyChangedEventArgs(propertyName));\n            };\n            return ObservableObject;\n        })();\n        MVVM.ObservableObject = ObservableObject;\n        Fayde.CoreLibrary.add(ObservableObject);\n    })(MVVM = Fayde.MVVM || (Fayde.MVVM = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ObservableObject.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var MVVM;\n    (function (MVVM) {\n        var ViewModelBase = (function (_super) {\n            __extends(ViewModelBase, _super);\n            function ViewModelBase() {\n                _super.apply(this, arguments);\n            }\n            return ViewModelBase;\n        })(MVVM.ObservableObject);\n        MVVM.ViewModelBase = ViewModelBase;\n        Fayde.CoreLibrary.add(ViewModelBase);\n    })(MVVM = Fayde.MVVM || (Fayde.MVVM = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ViewModelBase\" />\nvar Fayde;\n(function (Fayde) {\n    var MVVM;\n    (function (MVVM) {\n        var DialogViewModel = (function (_super) {\n            __extends(DialogViewModel, _super);\n            function DialogViewModel(settings) {\n                var _this = this;\n                _super.call(this);\n                this.IsOpen = false;\n                this.OverlayDataContext = null;\n                this.RequestOpenCommand = new MVVM.RelayCommand(function (par) { return _this.RequestOpen_Execute(par); }, function (par) { return _this.RequestOpen_CanExecute(par); });\n                this.ClosedCommand = new MVVM.RelayCommand(function (par) { return _this.Closed_Execute(par); });\n                if (settings) {\n                    this.AcceptAction = settings.AcceptAction;\n                    this.CompleteAction = settings.CompleteAction;\n                    this.ViewModelBuilder = settings.ViewModelBuilder;\n                    this.CanOpen = settings.CanOpen;\n                }\n            }\n            DialogViewModel.prototype.Closed_Execute = function (parameter) {\n                if (parameter.Result === true) {\n                    this.AcceptAction && this.AcceptAction(parameter.Data || undefined);\n                }\n                this.CompleteAction && this.CompleteAction(parameter);\n            };\n            DialogViewModel.prototype.RequestOpen_Execute = function (parameter) {\n                if (this.ViewModelBuilder != null) {\n                    var vm = this.ViewModelBuilder(parameter);\n                    if (vm == null)\n                        return;\n                    this.OverlayDataContext = vm;\n                }\n                this.IsOpen = true;\n            };\n            DialogViewModel.prototype.RequestOpen_CanExecute = function (parameter) {\n                return !this.CanOpen || this.CanOpen(parameter);\n            };\n            return DialogViewModel;\n        })(MVVM.ViewModelBase);\n        MVVM.DialogViewModel = DialogViewModel;\n        MVVM.NotifyProperties(DialogViewModel, [\"IsOpen\", \"OverlayDataContext\", \"RequestOpenCommand\", \"ClosedCommand\"]);\n    })(MVVM = Fayde.MVVM || (Fayde.MVVM = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var MVVM;\n    (function (MVVM) {\n        var Entity = (function () {\n            function Entity() {\n                this.PropertyChanged = new nullstone.Event();\n                this._Errors = {};\n                this.ErrorsChanged = new nullstone.Event();\n            }\n            Entity.prototype.OnPropertyChanged = function (propertyName) {\n                this.PropertyChanged.raise(this, new Fayde.PropertyChangedEventArgs(propertyName));\n            };\n            Object.defineProperty(Entity.prototype, \"HasErrors\", {\n                get: function () {\n                    return Object.keys(this._Errors).length > 0;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Entity.prototype.AddError = function (propertyName, errorMessage) {\n                var errs = this._Errors[propertyName];\n                if (!errs) {\n                    this._Errors[propertyName] = [errorMessage];\n                }\n                else {\n                    errs.push(errorMessage);\n                }\n                this.ErrorsChanged.raise(this, new Fayde.Data.DataErrorsChangedEventArgs(propertyName));\n            };\n            Entity.prototype.RemoveError = function (propertyName, errorMessage) {\n                var errs = this._Errors[propertyName];\n                if (!errs)\n                    return;\n                var index = errs.indexOf(errorMessage);\n                if (index >= 0)\n                    errs.splice(index, 1);\n                if (errs.length < 1)\n                    delete this._Errors[propertyName];\n                this.ErrorsChanged.raise(this, new Fayde.Data.DataErrorsChangedEventArgs(propertyName));\n            };\n            Entity.prototype.ClearErrors = function (propertyName) {\n                var errs = this._Errors[propertyName];\n                if (!errs)\n                    return;\n                delete this._Errors[propertyName];\n                this.ErrorsChanged.raise(this, new Fayde.Data.DataErrorsChangedEventArgs(propertyName));\n            };\n            Entity.prototype.GetErrors = function (propertyName) {\n                var errs = this._Errors[propertyName];\n                if (!errs)\n                    return null;\n                return nullstone.IEnumerable_.fromArray(errs);\n            };\n            Entity.ApplyTo = function (model) {\n                var out = model;\n                var proto = Entity.prototype;\n                Object.defineProperties(out, {\n                    \"_Errors\": { value: {} },\n                    \"HasErrors\": {\n                        get: function () {\n                            return Object.keys(this._Errors).length > 0;\n                        }\n                    }\n                });\n                out.PropertyChanged = new nullstone.Event();\n                out.OnPropertyChanged = proto.OnPropertyChanged.bind(out);\n                out.ErrorsChanged = new nullstone.Event();\n                out.AddError = proto.AddError.bind(out);\n                out.RemoveError = proto.RemoveError.bind(out);\n                out.ClearErrors = proto.ClearErrors.bind(out);\n                out.GetErrors = proto.GetErrors.bind(out);\n                Fayde.Data.INotifyDataErrorInfo_.mark(out);\n                return out;\n            };\n            return Entity;\n        })();\n        MVVM.Entity = Entity;\n        Fayde.Data.INotifyDataErrorInfo_.mark(Entity);\n    })(MVVM = Fayde.MVVM || (Fayde.MVVM = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Navigation;\n    (function (Navigation) {\n        var Route = (function () {\n            function Route(view, hashParams, dataContext) {\n                this.View = view;\n                this.HashParams = hashParams;\n                this.DataContext = dataContext;\n            }\n            return Route;\n        })();\n        Navigation.Route = Route;\n        Fayde.CoreLibrary.add(Route);\n    })(Navigation = Fayde.Navigation || (Fayde.Navigation = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Navigation/Route.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var MVVM;\n    (function (MVVM) {\n        MVVM.IViewModelProvider_ = new nullstone.Interface(\"IViewModelProvider\");\n        MVVM.IViewModelProvider_.is = function (o) {\n            return o && typeof o.ResolveViewModel === \"function\";\n        };\n    })(MVVM = Fayde.MVVM || (Fayde.MVVM = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Input/ICommand.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var MVVM;\n    (function (MVVM) {\n        var RelayCommand = (function () {\n            function RelayCommand(execute, canExecute) {\n                this.CanExecuteChanged = new nullstone.Event();\n                if (execute)\n                    this.Execute = execute;\n                if (canExecute)\n                    this.CanExecute = canExecute;\n            }\n            RelayCommand.prototype.Execute = function (parameter) { };\n            RelayCommand.prototype.CanExecute = function (parameter) { return true; };\n            RelayCommand.prototype.ForceCanExecuteChanged = function () {\n                this.CanExecuteChanged.raise(this, null);\n            };\n            return RelayCommand;\n        })();\n        MVVM.RelayCommand = RelayCommand;\n        Fayde.CoreLibrary.add(RelayCommand);\n        nullstone.addTypeInterfaces(RelayCommand, Fayde.Input.ICommand_);\n    })(MVVM = Fayde.MVVM || (Fayde.MVVM = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        Markup.IEventFilter_ = new nullstone.Interface(\"IEventFilter\");\n        var EventBinding = (function () {\n            function EventBinding() {\n                this.CommandPath = null;\n                this.Command = null;\n                this.CommandParameter = null;\n                this.CommandBinding = null;\n                this.CommandParameterBinding = null;\n                this.Filter = null;\n            }\n            EventBinding.prototype.init = function (val) {\n                this.CommandPath = val;\n            };\n            EventBinding.prototype.transmute = function (os) {\n                this.$$coerce();\n                Object.freeze(this);\n                return new Fayde.EventBindingExpression(this);\n            };\n            EventBinding.prototype.$$coerce = function () {\n                if (this.Command) {\n                    this.CommandBinding = this.Command.ParentBinding.Clone();\n                    this.Command = null;\n                }\n                if (this.CommandPath) {\n                    this.CommandBinding = new Fayde.Data.Binding(this.CommandPath);\n                }\n                if (this.CommandParameter) {\n                    this.CommandParameterBinding = this.CommandParameter.ParentBinding.Clone();\n                    this.CommandParameter = null;\n                }\n            };\n            return EventBinding;\n        })();\n        Markup.EventBinding = EventBinding;\n        Fayde.CoreLibrary.add(EventBinding);\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        function Resolve(uri, excludeUri) {\n            return Markup.Retrieve(uri)\n                .tap(function (xm) {\n                var co = collector.create(excludeUri);\n                return Promise.all([\n                    xm.resolve(Fayde.TypeManager, co.collect, co.exclude),\n                    co.resolve()\n                ]);\n            });\n        }\n        Markup.Resolve = Resolve;\n        var collector;\n        (function (collector) {\n            function create(excludeUri) {\n                var rduris = [];\n                var coll = {\n                    collect: function (ownerUri, ownerName, propName, val) {\n                        if (ownerUri === Fayde.XMLNS && ownerName === \"ResourceDictionary\" && propName === \"Source\")\n                            rduris.push(val);\n                    },\n                    exclude: function (uri, name) {\n                        return false;\n                    },\n                    resolve: function () {\n                        return Promise.all(rduris.map(Resolve));\n                    }\n                };\n                if (!!excludeUri)\n                    coll.exclude = function (uri, name) { return excludeUri.toString() === uri; };\n                return coll;\n            }\n            collector.create = create;\n        })(collector || (collector = {}));\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        var XamlMarkup = nullstone.markup.xaml.XamlMarkup;\n        function Retrieve(uri) {\n            var xm = XamlMarkup.create(uri);\n            if (xm.isLoaded)\n                return Promise.resolve(xm);\n            return xm.loadAsync();\n        }\n        Markup.Retrieve = Retrieve;\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        var StaticResource = (function () {\n            function StaticResource() {\n            }\n            StaticResource.prototype.init = function (val) {\n                this.ResourceKey = val;\n            };\n            StaticResource.prototype.transmute = function (os) {\n                var res = this.$$resources;\n                this.$$resources = undefined;\n                var key = this.ResourceKey;\n                var rd;\n                for (var i = os.length - 1; i >= 0; i--) {\n                    var cur = os[i];\n                    if (cur instanceof Fayde.FrameworkElement) {\n                        rd = cur.ReadLocalValue(Fayde.FrameworkElement.ResourcesProperty);\n                        if (rd === DependencyProperty.UnsetValue)\n                            rd = undefined;\n                    }\n                    else if (cur instanceof Fayde.Application) {\n                        rd = cur.Resources;\n                    }\n                    else if (cur instanceof Fayde.ResourceDictionary) {\n                        rd = cur;\n                    }\n                    var o = rd ? rd.Get(key) : undefined;\n                    if (o !== undefined)\n                        return o;\n                }\n                for (var i = res ? (res.length - 1) : -1; i >= 0; i--) {\n                    var o = res[i].Get(key);\n                    if (o !== undefined)\n                        return o;\n                }\n                if (this.$$app) {\n                    var rd = this.$$app.Resources;\n                    if (rd) {\n                        var o = rd.Get(key);\n                        if (o !== undefined)\n                            return o;\n                    }\n                }\n                throw new Error(\"Could not resolve StaticResource: '\" + key + \"'.\");\n            };\n            StaticResource.prototype.setContext = function (app, resources) {\n                this.$$app = app;\n                this.$$resources = resources;\n            };\n            return StaticResource;\n        })();\n        Markup.StaticResource = StaticResource;\n        Fayde.CoreLibrary.add(StaticResource);\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Brush = (function (_super) {\n            __extends(Brush, _super);\n            function Brush() {\n                _super.call(this);\n                this._CachedBounds = null;\n                this._CachedBrush = null;\n                Fayde.XamlNode.SetShareable(this.XamlNode);\n            }\n            Brush.prototype.isTransparent = function () {\n                return false;\n            };\n            Brush.prototype.setupBrush = function (ctx, bounds) {\n                if (this._CachedBrush && this._CachedBounds && minerva.Rect.isEqual(this._CachedBounds, bounds))\n                    return;\n                this._CachedBounds = new minerva.Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n                var transform = this.Transform;\n                if (transform) {\n                    var transformedBounds = transform.TransformBounds(bounds);\n                    var raw = transform.Value._Raw;\n                    var tmpBrush = this.CreateBrush(ctx, bounds);\n                    var fillExtents = new minerva.Rect();\n                    minerva.Rect.copyTo(bounds, fillExtents);\n                    minerva.Rect.grow(fillExtents, raw[4], raw[5], 0, 0);\n                    var tmpCanvas = document.createElement(\"canvas\");\n                    tmpCanvas.width = Math.max(transformedBounds.width, bounds.width);\n                    tmpCanvas.height = Math.max(transformedBounds.height, bounds.height);\n                    var tmpCtx = tmpCanvas.getContext(\"2d\");\n                    tmpCtx.setTransform(raw[0], raw[1], raw[2], raw[3], raw[4], raw[5]);\n                    tmpCtx.fillStyle = tmpBrush;\n                    tmpCtx.fillRect(fillExtents.x, fillExtents.y, fillExtents.width, fillExtents.height);\n                    this._CachedBrush = ctx.createPattern(tmpCanvas, \"no-repeat\");\n                }\n                else {\n                    this._CachedBrush = this.CreateBrush(ctx, bounds);\n                }\n            };\n            Brush.prototype.toHtml5Object = function () {\n                return this._CachedBrush;\n            };\n            Brush.prototype.CreateBrush = function (ctx, bounds) {\n                return undefined;\n            };\n            Brush.prototype.InvalidateBrush = function () {\n                this._CachedBrush = null;\n                this._CachedBounds = null;\n                Fayde.Incite(this);\n            };\n            Brush.TransformProperty = DependencyProperty.RegisterCore(\"Transform\", function () { return Media.Transform; }, Brush);\n            return Brush;\n        })(Fayde.DependencyObject);\n        Media.Brush = Brush;\n        Fayde.CoreLibrary.add(Brush);\n        var reactions;\n        (function (reactions) {\n            Fayde.DPReaction(Brush.TransformProperty, function (brush, ov, nv) { return brush.InvalidateBrush(); });\n        })(reactions || (reactions = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Geometry = (function (_super) {\n            __extends(Geometry, _super);\n            function Geometry() {\n                _super.call(this);\n                this._Path = null;\n                this._LocalBounds = new minerva.Rect();\n                this._LocalBounds.width = Number.NEGATIVE_INFINITY;\n                this._LocalBounds.height = Number.NEGATIVE_INFINITY;\n            }\n            Geometry.prototype.GetBounds = function (pars) {\n                var compute = minerva.Rect.isEmpty(this._LocalBounds);\n                if (!this._Path) {\n                    this._Path = this._Build();\n                    compute = true;\n                }\n                if (compute)\n                    minerva.Rect.copyTo(this.ComputePathBounds(pars), this._LocalBounds);\n                var bounds = new minerva.Rect();\n                minerva.Rect.copyTo(this._LocalBounds, bounds);\n                var transform = this.Transform;\n                if (transform != null)\n                    bounds = transform.TransformBounds(bounds);\n                return bounds;\n            };\n            Geometry.prototype.Draw = function (ctx) {\n                if (!this._Path)\n                    return;\n                var raw = ctx.raw;\n                var transform = this.Transform;\n                if (transform != null) {\n                    raw.save();\n                    ctx.apply(transform.Value._Raw);\n                }\n                this._Path.draw(raw);\n                if (transform != null)\n                    raw.restore();\n            };\n            Geometry.prototype.ComputePathBounds = function (pars) {\n                if (!this._Path)\n                    this._Path = this._Build();\n                if (!this._Path)\n                    return new minerva.Rect();\n                return this._Path.calcBounds(pars);\n            };\n            Geometry.prototype.InvalidateGeometry = function () {\n                this._Path = null;\n                var lb = this._LocalBounds;\n                lb.x = lb.y = 0;\n                lb.width = lb.height = Number.NEGATIVE_INFINITY;\n                Fayde.Incite(this);\n            };\n            Geometry.prototype._Build = function () {\n                return undefined;\n            };\n            Geometry.prototype.Serialize = function () {\n                var path = this._Path;\n                if (!path)\n                    return;\n                return path.Serialize();\n            };\n            Geometry.TransformProperty = DependencyProperty.Register(\"Transform\", function () { return Media.Transform; }, Geometry);\n            return Geometry;\n        })(Fayde.DependencyObject);\n        Media.Geometry = Geometry;\n        Fayde.CoreLibrary.add(Geometry);\n        var reactions;\n        (function (reactions) {\n            Fayde.DPReaction(Geometry.TransformProperty, function (geom, ov, nv) { return geom.InvalidateGeometry(); });\n        })(reactions || (reactions = {}));\n        var GeometryCollection = (function (_super) {\n            __extends(GeometryCollection, _super);\n            function GeometryCollection() {\n                _super.apply(this, arguments);\n            }\n            GeometryCollection.prototype.AddingToCollection = function (value, error) {\n                var _this = this;\n                if (!_super.prototype.AddingToCollection.call(this, value, error))\n                    return false;\n                Fayde.ReactTo(value, this, function () { return Fayde.Incite(_this); });\n                Fayde.Incite(this);\n                return true;\n            };\n            GeometryCollection.prototype.RemovedFromCollection = function (value, isValueSafe) {\n                _super.prototype.RemovedFromCollection.call(this, value, isValueSafe);\n                Fayde.UnreactTo(value, this);\n                Fayde.Incite(this);\n            };\n            return GeometryCollection;\n        })(Fayde.XamlObjectCollection);\n        Media.GeometryCollection = GeometryCollection;\n        Fayde.CoreLibrary.add(GeometryCollection);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Geometry.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var EllipseGeometry = (function (_super) {\n            __extends(EllipseGeometry, _super);\n            function EllipseGeometry() {\n                _super.apply(this, arguments);\n            }\n            EllipseGeometry.prototype._Build = function () {\n                var rx = this.RadiusX;\n                var ry = this.RadiusY;\n                var center = this.Center;\n                var x = center ? center.x : 0.0;\n                var y = center ? center.y : 0.0;\n                var p = new minerva.path.Path();\n                p.ellipse(x - rx, y - ry, rx * 2.0, ry * 2.0);\n                return p;\n            };\n            EllipseGeometry.CenterProperty = DependencyProperty.Register(\"Center\", function () { return Point; }, EllipseGeometry, undefined, function (d, args) { return d.InvalidateGeometry(); });\n            EllipseGeometry.RadiusXProperty = DependencyProperty.Register(\"RadiusX\", function () { return Number; }, EllipseGeometry, 0.0, function (d, args) { return d.InvalidateGeometry(); });\n            EllipseGeometry.RadiusYProperty = DependencyProperty.Register(\"RadiusY\", function () { return Number; }, EllipseGeometry, 0.0, function (d, args) { return d.InvalidateGeometry(); });\n            return EllipseGeometry;\n        })(Media.Geometry);\n        Media.EllipseGeometry = EllipseGeometry;\n        Fayde.CoreLibrary.add(EllipseGeometry);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var GeneralTransform = (function (_super) {\n            __extends(GeneralTransform, _super);\n            function GeneralTransform() {\n                _super.apply(this, arguments);\n            }\n            GeneralTransform.prototype.Transform = function (p) {\n                return new Point(p.x, p.y);\n            };\n            GeneralTransform.prototype.TransformBounds = function (r) {\n                return r;\n            };\n            GeneralTransform.prototype.TryTransform = function (inPoint, outPoint) {\n                return false;\n            };\n            return GeneralTransform;\n        })(Fayde.DependencyObject);\n        Media.GeneralTransform = GeneralTransform;\n        Fayde.CoreLibrary.add(GeneralTransform);\n        var InternalTransform = (function (_super) {\n            __extends(InternalTransform, _super);\n            function InternalTransform(raw) {\n                _super.call(this);\n                this._Raw = raw;\n            }\n            Object.defineProperty(InternalTransform.prototype, \"Inverse\", {\n                get: function () {\n                    return new InternalTransform(mat4.inverse(this._Raw, mat4.create()));\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(InternalTransform.prototype, \"Value\", {\n                get: function () {\n                    return Media.Matrix3D.FromRaw(this._Raw);\n                },\n                enumerable: true,\n                configurable: true\n            });\n            InternalTransform.prototype.getRaw = function () {\n                return this._Raw;\n            };\n            InternalTransform.prototype.Transform = function (p) {\n                var pi = vec4.create(p.x, p.y, 0.0, 1.0);\n                var po = vec4.create(0, 0, 0, 0);\n                mat4.transformVec4(this._Raw, pi, po);\n                if (po[3] !== 0.0) {\n                    var w = 1.0 / po[3];\n                    return new Point(po[0] * w, po[1] * w);\n                }\n                return new Point(NaN, NaN);\n            };\n            InternalTransform.prototype.TransformBounds = function (r) {\n                if (!r)\n                    return undefined;\n                var copy = new minerva.Rect();\n                minerva.Rect.copyTo(r, copy);\n                minerva.Rect.transform4(copy, this._Raw);\n                return copy;\n            };\n            InternalTransform.prototype.CreateMatrix3DProjection = function () {\n                var projection = new Media.Matrix3DProjection();\n                projection.ProjectionMatrix = this.Inverse.Value;\n                return projection;\n            };\n            return InternalTransform;\n        })(GeneralTransform);\n        Media.InternalTransform = InternalTransform;\n        Fayde.CoreLibrary.add(InternalTransform);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        (function (ShapeFlags) {\n            ShapeFlags[ShapeFlags[\"None\"] = 0] = \"None\";\n            ShapeFlags[ShapeFlags[\"Empty\"] = 1] = \"Empty\";\n            ShapeFlags[ShapeFlags[\"Normal\"] = 2] = \"Normal\";\n            ShapeFlags[ShapeFlags[\"Degenerate\"] = 4] = \"Degenerate\";\n            ShapeFlags[ShapeFlags[\"Radii\"] = 8] = \"Radii\";\n        })(Shapes.ShapeFlags || (Shapes.ShapeFlags = {}));\n        var ShapeFlags = Shapes.ShapeFlags;\n        (function (PenLineCap) {\n            PenLineCap[PenLineCap[\"Flat\"] = 0] = \"Flat\";\n            PenLineCap[PenLineCap[\"Square\"] = 1] = \"Square\";\n            PenLineCap[PenLineCap[\"Round\"] = 2] = \"Round\";\n            PenLineCap[PenLineCap[\"Triangle\"] = 3] = \"Triangle\";\n        })(Shapes.PenLineCap || (Shapes.PenLineCap = {}));\n        var PenLineCap = Shapes.PenLineCap;\n        Fayde.CoreLibrary.addEnum(PenLineCap, \"PenLineCap\");\n        (function (PenLineJoin) {\n            PenLineJoin[PenLineJoin[\"Miter\"] = 0] = \"Miter\";\n            PenLineJoin[PenLineJoin[\"Bevel\"] = 1] = \"Bevel\";\n            PenLineJoin[PenLineJoin[\"Round\"] = 2] = \"Round\";\n        })(Shapes.PenLineJoin || (Shapes.PenLineJoin = {}));\n        var PenLineJoin = Shapes.PenLineJoin;\n        Fayde.CoreLibrary.addEnum(PenLineJoin, \"PenLineJoin\");\n        (function (FillRule) {\n            FillRule[FillRule[\"EvenOdd\"] = 0] = \"EvenOdd\";\n            FillRule[FillRule[\"NonZero\"] = 1] = \"NonZero\";\n        })(Shapes.FillRule || (Shapes.FillRule = {}));\n        var FillRule = Shapes.FillRule;\n        Fayde.CoreLibrary.addEnum(FillRule, \"FillRule\");\n        (function (SweepDirection) {\n            SweepDirection[SweepDirection[\"Counterclockwise\"] = 0] = \"Counterclockwise\";\n            SweepDirection[SweepDirection[\"Clockwise\"] = 1] = \"Clockwise\";\n        })(Shapes.SweepDirection || (Shapes.SweepDirection = {}));\n        var SweepDirection = Shapes.SweepDirection;\n        Fayde.CoreLibrary.addEnum(SweepDirection, \"SweepDirection\");\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Geometry.ts\" />\n/// <reference path=\"../Shapes/Enums.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var GeometryGroup = (function (_super) {\n            __extends(GeometryGroup, _super);\n            function GeometryGroup() {\n                var _this = this;\n                _super.call(this);\n                var coll = GeometryGroup.ChildrenProperty.Initialize(this);\n                coll.AttachTo(this);\n                Fayde.ReactTo(coll, this, function () { return _this.InvalidateGeometry(); });\n            }\n            GeometryGroup.prototype.ComputePathBounds = function (pars) {\n                var bounds = new minerva.Rect();\n                var cbounds;\n                for (var enumerator = this.Children.getEnumerator(); enumerator.moveNext();) {\n                    cbounds = enumerator.current.GetBounds(pars);\n                    if (cbounds.width <= 0 && cbounds.height <= 0)\n                        continue;\n                    if (bounds.width <= 0 && bounds.height <= 0)\n                        minerva.Rect.copyTo(cbounds, bounds);\n                    else\n                        minerva.Rect.union(bounds, cbounds);\n                }\n                return bounds;\n            };\n            GeometryGroup.prototype.Draw = function (ctx) {\n                var transform = this.Transform;\n                if (transform != null) {\n                    ctx.save();\n                    ctx.apply(transform.Value._Raw);\n                }\n                var enumerator = this.Children.getEnumerator();\n                while (enumerator.moveNext()) {\n                    enumerator.current.Draw(ctx);\n                }\n                if (transform != null)\n                    ctx.restore();\n            };\n            GeometryGroup.FillRulleProperty = DependencyProperty.Register(\"FillRule\", function () { return new Fayde.Enum(Fayde.Shapes.FillRule); }, GeometryGroup, Fayde.Shapes.FillRule.EvenOdd);\n            GeometryGroup.ChildrenProperty = DependencyProperty.RegisterImmutable(\"Children\", function () { return Media.GeometryCollection; }, GeometryGroup);\n            return GeometryGroup;\n        })(Media.Geometry);\n        Media.GeometryGroup = GeometryGroup;\n        Fayde.CoreLibrary.add(GeometryGroup);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Color = (function () {\n    function Color() {\n        this.R = 0;\n        this.G = 0;\n        this.B = 0;\n        this.A = 1.0;\n    }\n    Color.prototype.Add = function (color2) {\n        var c = new Color();\n        c.R = this.R + color2.R;\n        c.G = this.G + color2.G;\n        c.B = this.B + color2.B;\n        c.A = this.A + color2.A;\n        return c;\n    };\n    Color.prototype.Subtract = function (color2) {\n        var c = new Color();\n        c.R = this.R - color2.R;\n        c.G = this.G - color2.G;\n        c.B = this.B - color2.B;\n        c.A = this.A - color2.A;\n        return c;\n    };\n    Color.prototype.Multiply = function (factor) {\n        var c = new Color();\n        c.R = this.R * factor;\n        c.G = this.G * factor;\n        c.B = this.B * factor;\n        c.A = this.A * factor;\n        return c;\n    };\n    Color.prototype.Equals = function (other) {\n        return this.R === other.R\n            && this.G === other.G\n            && this.B === other.B\n            && this.A === other.A;\n    };\n    Color.prototype.toString = function () {\n        var r = Math.round(this.R) || 0;\n        var g = Math.round(this.G) || 0;\n        var b = Math.round(this.B) || 0;\n        var a = this.A || 0;\n        return \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + a + \")\";\n    };\n    Color.prototype.ToHexStringNoAlpha = function () {\n        return \"#\" + this.R.toString(16) + this.G.toString(16) + this.B.toString(16);\n    };\n    Color.prototype.Clone = function () {\n        return Color.FromRgba(this.R, this.G, this.B, this.A);\n    };\n    Color.LERP = function (start, end, p) {\n        var c = new Color();\n        c.R = start.R + (end.R - start.R) * p;\n        c.G = start.G + (end.G - start.G) * p;\n        c.B = start.B + (end.B - start.B) * p;\n        c.A = start.A + (end.A - start.A) * p;\n        return c;\n    };\n    Color.FromRgba = function (r, g, b, a) {\n        var c = new Color();\n        c.R = r;\n        c.G = g;\n        c.B = b;\n        c.A = a;\n        return c;\n    };\n    Color.FromHex = function (hex) {\n        var match;\n        var c = new Color();\n        if ((match = Color.__AlphaRegex.exec(hex)) != null) {\n            c.A = parseInt(match[1], 16) / 255.0;\n            c.R = parseInt(match[2], 16);\n            c.G = parseInt(match[3], 16);\n            c.B = parseInt(match[4], 16);\n        }\n        else if ((match = Color.__NoAlphaRegex.exec(hex)) != null) {\n            c.A = 1.0;\n            c.R = parseInt(match[1], 16);\n            c.G = parseInt(match[2], 16);\n            c.B = parseInt(match[3], 16);\n        }\n        return c;\n    };\n    Color.__NoAlphaRegex = /#([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}/;\n    Color.__AlphaRegex = /#([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}/;\n    Color.KnownColors = {\n        AliceBlue: Color.FromHex(\"#FFF0F8FF\"),\n        AntiqueWhite: Color.FromHex(\"#FFFAEBD7\"),\n        Aqua: Color.FromHex(\"#FF00FFFF\"),\n        Aquamarine: Color.FromHex(\"#FF7FFFD4\"),\n        Azure: Color.FromHex(\"#FFF0FFFF\"),\n        Beige: Color.FromHex(\"#FFF5F5DC\"),\n        Bisque: Color.FromHex(\"#FFFFE4C4\"),\n        Black: Color.FromHex(\"#FF000000\"),\n        BlanchedAlmond: Color.FromHex(\"#FFFFEBCD\"),\n        Blue: Color.FromHex(\"#FF0000FF\"),\n        BlueViolet: Color.FromHex(\"#FF8A2BE2\"),\n        Brown: Color.FromHex(\"#FFA52A2A\"),\n        BurlyWood: Color.FromHex(\"#FFDEB887\"),\n        CadetBlue: Color.FromHex(\"#FF5F9EA0\"),\n        Chartreuse: Color.FromHex(\"#FF7FFF00\"),\n        Chocolate: Color.FromHex(\"#FFD2691E\"),\n        Coral: Color.FromHex(\"#FFFF7F50\"),\n        CornflowerBlue: Color.FromHex(\"#FF6495ED\"),\n        Cornsilk: Color.FromHex(\"#FFFFF8DC\"),\n        Crimson: Color.FromHex(\"#FFDC143C\"),\n        Cyan: Color.FromHex(\"#FF00FFFF\"),\n        DarkBlue: Color.FromHex(\"#FF00008B\"),\n        DarkCyan: Color.FromHex(\"#FF008B8B\"),\n        DarkGoldenrod: Color.FromHex(\"#FFB8860B\"),\n        DarkGray: Color.FromHex(\"#FFA9A9A9\"),\n        DarkGreen: Color.FromHex(\"#FF006400\"),\n        DarkKhaki: Color.FromHex(\"#FFBDB76B\"),\n        DarkMagenta: Color.FromHex(\"#FF8B008B\"),\n        DarkOliveGreen: Color.FromHex(\"#FF556B2F\"),\n        DarkOrange: Color.FromHex(\"#FFFF8C00\"),\n        DarkOrchid: Color.FromHex(\"#FF9932CC\"),\n        DarkRed: Color.FromHex(\"#FF8B0000\"),\n        DarkSalmon: Color.FromHex(\"#FFE9967A\"),\n        DarkSeaGreen: Color.FromHex(\"#FF8FBC8F\"),\n        DarkSlateBlue: Color.FromHex(\"#FF483D8B\"),\n        DarkSlateGray: Color.FromHex(\"#FF2F4F4F\"),\n        DarkTurquoise: Color.FromHex(\"#FF00CED1\"),\n        DarkViolet: Color.FromHex(\"#FF9400D3\"),\n        DeepPink: Color.FromHex(\"#FFFF1493\"),\n        DeepSkyBlue: Color.FromHex(\"#FF00BFFF\"),\n        DimGray: Color.FromHex(\"#FF696969\"),\n        DodgerBlue: Color.FromHex(\"#FF1E90FF\"),\n        Firebrick: Color.FromHex(\"#FFB22222\"),\n        FloralWhite: Color.FromHex(\"#FFFFFAF0\"),\n        ForestGreen: Color.FromHex(\"#FF228B22\"),\n        Fuchsia: Color.FromHex(\"#FFFF00FF\"),\n        Gainsboro: Color.FromHex(\"#FFDCDCDC\"),\n        GhostWhite: Color.FromHex(\"#FFF8F8FF\"),\n        Gold: Color.FromHex(\"#FFFFD700\"),\n        Goldenrod: Color.FromHex(\"#FFDAA520\"),\n        Gray: Color.FromHex(\"#FF808080\"),\n        Green: Color.FromHex(\"#FF008000\"),\n        GreenYellow: Color.FromHex(\"#FFADFF2F\"),\n        Honeydew: Color.FromHex(\"#FFF0FFF0\"),\n        HotPink: Color.FromHex(\"#FFFF69B4\"),\n        IndianRed: Color.FromHex(\"#FFCD5C5C\"),\n        Indigo: Color.FromHex(\"#FF4B0082\"),\n        Ivory: Color.FromHex(\"#FFFFFFF0\"),\n        Khaki: Color.FromHex(\"#FFF0E68C\"),\n        Lavender: Color.FromHex(\"#FFE6E6FA\"),\n        LavenderBlush: Color.FromHex(\"#FFFFF0F5\"),\n        LawnGreen: Color.FromHex(\"#FF7CFC00\"),\n        LemonChiffon: Color.FromHex(\"#FFFFFACD\"),\n        LightBlue: Color.FromHex(\"#FFADD8E6\"),\n        LightCoral: Color.FromHex(\"#FFF08080\"),\n        LightCyan: Color.FromHex(\"#FFE0FFFF\"),\n        LightGoldenrodYellow: Color.FromHex(\"#FFFAFAD2\"),\n        LightGray: Color.FromHex(\"#FFD3D3D3\"),\n        LightGreen: Color.FromHex(\"#FF90EE90\"),\n        LightPink: Color.FromHex(\"#FFFFB6C1\"),\n        LightSalmon: Color.FromHex(\"#FFFFA07A\"),\n        LightSeaGreen: Color.FromHex(\"#FF20B2AA\"),\n        LightSkyBlue: Color.FromHex(\"#FF87CEFA\"),\n        LightSlateGray: Color.FromHex(\"#FF778899\"),\n        LightSteelBlue: Color.FromHex(\"#FFB0C4DE\"),\n        LightYellow: Color.FromHex(\"#FFFFFFE0\"),\n        Lime: Color.FromHex(\"#FF00FF00\"),\n        LimeGreen: Color.FromHex(\"#FF32CD32\"),\n        Linen: Color.FromHex(\"#FFFAF0E6\"),\n        Magenta: Color.FromHex(\"#FFFF00FF\"),\n        Maroon: Color.FromHex(\"#FF800000\"),\n        MediumAquamarine: Color.FromHex(\"#FF66CDAA\"),\n        MediumBlue: Color.FromHex(\"#FF0000CD\"),\n        MediumOrchid: Color.FromHex(\"#FFBA55D3\"),\n        MediumPurple: Color.FromHex(\"#FF9370DB\"),\n        MediumSeaGreen: Color.FromHex(\"#FF3CB371\"),\n        MediumSlateBlue: Color.FromHex(\"#FF7B68EE\"),\n        MediumSpringGreen: Color.FromHex(\"#FF00FA9A\"),\n        MediumTurquoise: Color.FromHex(\"#FF48D1CC\"),\n        MediumVioletRed: Color.FromHex(\"#FFC71585\"),\n        MidnightBlue: Color.FromHex(\"#FF191970\"),\n        MintCream: Color.FromHex(\"#FFF5FFFA\"),\n        MistyRose: Color.FromHex(\"#FFFFE4E1\"),\n        Moccasin: Color.FromHex(\"#FFFFE4B5\"),\n        NavajoWhite: Color.FromHex(\"#FFFFDEAD\"),\n        Navy: Color.FromHex(\"#FF000080\"),\n        OldLace: Color.FromHex(\"#FFFDF5E6\"),\n        Olive: Color.FromHex(\"#FF808000\"),\n        OliveDrab: Color.FromHex(\"#FF6B8E23\"),\n        Orange: Color.FromHex(\"#FFFFA500\"),\n        OrangeRed: Color.FromHex(\"#FFFF4500\"),\n        Orchid: Color.FromHex(\"#FFDA70D6\"),\n        PaleGoldenrod: Color.FromHex(\"#FFEEE8AA\"),\n        PaleGreen: Color.FromHex(\"#FF98FB98\"),\n        PaleTurquoise: Color.FromHex(\"#FFAFEEEE\"),\n        PaleVioletRed: Color.FromHex(\"#FFDB7093\"),\n        PapayaWhip: Color.FromHex(\"#FFFFEFD5\"),\n        PeachPuff: Color.FromHex(\"#FFFFDAB9\"),\n        Peru: Color.FromHex(\"#FFCD853F\"),\n        Pink: Color.FromHex(\"#FFFFC0CB\"),\n        Plum: Color.FromHex(\"#FFDDA0DD\"),\n        PowderBlue: Color.FromHex(\"#FFB0E0E6\"),\n        Purple: Color.FromHex(\"#FF800080\"),\n        Red: Color.FromHex(\"#FFFF0000\"),\n        RosyBrown: Color.FromHex(\"#FFBC8F8F\"),\n        RoyalBlue: Color.FromHex(\"#FF4169E1\"),\n        SaddleBrown: Color.FromHex(\"#FF8B4513\"),\n        Salmon: Color.FromHex(\"#FFFA8072\"),\n        SandyBrown: Color.FromHex(\"#FFF4A460\"),\n        SeaGreen: Color.FromHex(\"#FF2E8B57\"),\n        SeaShell: Color.FromHex(\"#FFFFF5EE\"),\n        Sienna: Color.FromHex(\"#FFA0522D\"),\n        Silver: Color.FromHex(\"#FFC0C0C0\"),\n        SkyBlue: Color.FromHex(\"#FF87CEEB\"),\n        SlateBlue: Color.FromHex(\"#FF6A5ACD\"),\n        SlateGray: Color.FromHex(\"#FF708090\"),\n        Snow: Color.FromHex(\"#FFFFFAFA\"),\n        SpringGreen: Color.FromHex(\"#FF00FF7F\"),\n        SteelBlue: Color.FromHex(\"#FF4682B4\"),\n        Tan: Color.FromHex(\"#FFD2B48C\"),\n        Teal: Color.FromHex(\"#FF008080\"),\n        Thistle: Color.FromHex(\"#FFD8BFD8\"),\n        Tomato: Color.FromHex(\"#FFFF6347\"),\n        Transparent: Color.FromHex(\"#00FFFFFF\"),\n        Turquoise: Color.FromHex(\"#FF40E0D0\"),\n        Violet: Color.FromHex(\"#FFEE82EE\"),\n        Wheat: Color.FromHex(\"#FFF5DEB3\"),\n        White: Color.FromHex(\"#FFFFFFFF\"),\n        WhiteSmoke: Color.FromHex(\"#FFF5F5F5\"),\n        Yellow: Color.FromHex(\"#FFFFFF00\"),\n        YellowGreen: Color.FromHex(\"#FF9ACD32\")\n    };\n    return Color;\n})();\nFayde.CoreLibrary.addPrimitive(Color);\nnullstone.registerTypeConverter(Color, function (val) {\n    if (!val || val instanceof Color)\n        return val;\n    if (val instanceof Fayde.Media.SolidColorBrush)\n        return val.Color;\n    val = val.toString();\n    if (val[0] !== \"#\") {\n        var color = Color.KnownColors[val];\n        if (!color)\n            throw new NotSupportedException(\"Unknown Color: \" + val);\n        return color;\n    }\n    return Color.FromHex(val);\n});\n/// <reference path=\"Brush\" />\n/// <reference path=\"Enums\" />\n/// <reference path=\"../Primitives/Color\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var fallbackColorStop = Color.FromHex(\"#FF000000\");\n        var GradientBrush = (function (_super) {\n            __extends(GradientBrush, _super);\n            function GradientBrush() {\n                var _this = this;\n                _super.call(this);\n                var coll = GradientBrush.GradientStopsProperty.Initialize(this);\n                coll.AttachTo(this);\n                Fayde.ReactTo(coll, this, function () { return _this.InvalidateBrush(); });\n            }\n            GradientBrush.prototype.CreateBrush = function (ctx, bounds) {\n                var spread = this.SpreadMethod;\n                switch (spread) {\n                    case Media.GradientSpreadMethod.Pad:\n                    default:\n                        return this.CreatePad(ctx, bounds);\n                    case Media.GradientSpreadMethod.Repeat:\n                        return this.CreateRepeat(ctx, bounds);\n                    case Media.GradientSpreadMethod.Reflect:\n                        return this.CreateReflect(ctx, bounds);\n                }\n            };\n            GradientBrush.prototype.CreatePad = function (ctx, bounds) { };\n            GradientBrush.prototype.CreateRepeat = function (ctx, bounds) { };\n            GradientBrush.prototype.CreateReflect = function (ctx, bounds) { };\n            GradientBrush.prototype.AddColorStop = function (grd, offset, color) {\n                if (offset < 0.0)\n                    offset = 0.0;\n                if (offset > 1.0)\n                    offset = 1.0;\n                grd.addColorStop(offset, (color || fallbackColorStop).toString());\n            };\n            GradientBrush.GradientStopsProperty = DependencyProperty.RegisterImmutable(\"GradientStops\", function () { return Media.GradientStopCollection; }, GradientBrush);\n            GradientBrush.MappingModeProperty = DependencyProperty.Register(\"MappingMode\", function () { return new Fayde.Enum(Media.BrushMappingMode); }, GradientBrush, Media.BrushMappingMode.RelativeToBoundingBox, function (d, args) { return d.InvalidateBrush(); });\n            GradientBrush.SpreadMethodProperty = DependencyProperty.Register(\"SpreadMethod\", function () { return new Fayde.Enum(Media.GradientSpreadMethod); }, GradientBrush, Media.GradientSpreadMethod.Pad, function (d, args) { return d.InvalidateBrush(); });\n            return GradientBrush;\n        })(Media.Brush);\n        Media.GradientBrush = GradientBrush;\n        Fayde.CoreLibrary.add(GradientBrush);\n        Fayde.Markup.Content(GradientBrush, GradientBrush.GradientStopsProperty);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var GradientStop = (function (_super) {\n            __extends(GradientStop, _super);\n            function GradientStop() {\n                _super.apply(this, arguments);\n            }\n            GradientStop.prototype.toString = function () {\n                return this.Color.toString() + \" @ \" + this.Offset.toString();\n            };\n            GradientStop.ColorProperty = DependencyProperty.Register(\"Color\", function () { return Color; }, GradientStop, undefined, Fayde.Incite);\n            GradientStop.OffsetProperty = DependencyProperty.Register(\"Offset\", function () { return Number; }, GradientStop, 0.0, Fayde.Incite);\n            return GradientStop;\n        })(Fayde.DependencyObject);\n        Media.GradientStop = GradientStop;\n        Fayde.CoreLibrary.add(GradientStop);\n        var GradientStopCollection = (function (_super) {\n            __extends(GradientStopCollection, _super);\n            function GradientStopCollection() {\n                _super.apply(this, arguments);\n            }\n            GradientStopCollection.prototype.AddingToCollection = function (value, error) {\n                var _this = this;\n                if (!_super.prototype.AddingToCollection.call(this, value, error))\n                    return false;\n                Fayde.ReactTo(value, this, function () { return Fayde.Incite(_this); });\n                Fayde.Incite(this);\n                return true;\n            };\n            GradientStopCollection.prototype.RemovedFromCollection = function (value, isValueSafe) {\n                if (!_super.prototype.RemovedFromCollection.call(this, value, isValueSafe))\n                    return false;\n                Fayde.UnreactTo(value, this);\n                Fayde.Incite(this);\n            };\n            GradientStopCollection.prototype.getPaddedEnumerable = function () {\n                var minOffset = Number.MAX_VALUE;\n                var min = null;\n                var maxOffset = Number.MIN_VALUE;\n                var max = null;\n                for (var en = this.getEnumerator(); en.moveNext();) {\n                    if (en.current.Offset < minOffset) {\n                        min = en.current;\n                        minOffset = en.current.Offset;\n                    }\n                    if (en.current.Offset > maxOffset) {\n                        max = en.current;\n                        maxOffset = en.current.Offset;\n                    }\n                }\n                var arr = this._ht.slice(0);\n                if (!!min)\n                    arr.unshift({ Offset: 0, Color: min.Color });\n                if (!!max)\n                    arr.push({ Offset: 1, Color: max.Color });\n                return nullstone.IEnumerable_.fromArray(arr);\n            };\n            return GradientStopCollection;\n        })(Fayde.XamlObjectCollection);\n        Media.GradientStopCollection = GradientStopCollection;\n        Fayde.CoreLibrary.add(GradientStopCollection);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Geometry.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var LineGeometry = (function (_super) {\n            __extends(LineGeometry, _super);\n            function LineGeometry() {\n                _super.apply(this, arguments);\n            }\n            LineGeometry.prototype._Build = function () {\n                var p1 = this.StartPoint;\n                var p2 = this.EndPoint;\n                var p = new minerva.path.Path();\n                p.move(p1.x, p1.y);\n                p.line(p2.x, p2.y);\n                return p;\n            };\n            LineGeometry.StartPointProperty = DependencyProperty.Register(\"StartPoint\", function () { return Point; }, LineGeometry, undefined, function (d, args) { return d.InvalidateGeometry(); });\n            LineGeometry.EndPointProperty = DependencyProperty.Register(\"EndPoint\", function () { return Point; }, LineGeometry, undefined, function (d, args) { return d.InvalidateGeometry(); });\n            return LineGeometry;\n        })(Media.Geometry);\n        Media.LineGeometry = LineGeometry;\n        Fayde.CoreLibrary.add(LineGeometry);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"GradientBrush.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var LinearGradientBrush = (function (_super) {\n            __extends(LinearGradientBrush, _super);\n            function LinearGradientBrush() {\n                _super.apply(this, arguments);\n            }\n            LinearGradientBrush.prototype.CreatePad = function (ctx, bounds) {\n                var data = this._GetPointData(bounds);\n                var grd = ctx.createLinearGradient(data.start.x, data.start.y, data.end.x, data.end.y);\n                for (var en = this.GradientStops.getEnumerator(); en.moveNext();) {\n                    var stop = en.current;\n                    this.AddColorStop(grd, stop.Offset, stop.Color);\n                }\n                return grd;\n            };\n            LinearGradientBrush.prototype.CreateRepeat = function (ctx, bounds) {\n                var data = this._GetPointData(bounds);\n                return this.CreateInterpolated(ctx, Media.LinearGradient.createRepeatInterpolator(data.start, data.end, bounds));\n            };\n            LinearGradientBrush.prototype.CreateReflect = function (ctx, bounds) {\n                var data = this._GetPointData(bounds);\n                return this.CreateInterpolated(ctx, Media.LinearGradient.createReflectInterpolator(data.start, data.end, bounds));\n            };\n            LinearGradientBrush.prototype.CreateInterpolated = function (ctx, interpolator) {\n                var grd = ctx.createLinearGradient(interpolator.x0, interpolator.y0, interpolator.x1, interpolator.y1);\n                var allStops = this.GradientStops.getPaddedEnumerable();\n                for (; interpolator.step();) {\n                    for (var en = allStops.getEnumerator(); en.moveNext();) {\n                        var stop = en.current;\n                        var offset = interpolator.interpolate(stop.Offset);\n                        if (offset >= 0 && offset <= 1)\n                            this.AddColorStop(grd, offset, stop.Color);\n                    }\n                }\n                return grd;\n            };\n            LinearGradientBrush.prototype._GetPointData = function (bounds) {\n                var start = this.StartPoint;\n                start = !start ? new Point(0.0, 0.0) : start.Clone();\n                var end = this.EndPoint;\n                end = !end ? new Point(1.0, 1.0) : end.Clone();\n                if (this.MappingMode !== Media.BrushMappingMode.Absolute) {\n                    start.x *= bounds.width;\n                    start.y *= bounds.height;\n                    end.x *= bounds.width;\n                    end.y *= bounds.height;\n                }\n                start.x += bounds.x;\n                start.y += bounds.y;\n                end.x += bounds.x;\n                end.y += bounds.y;\n                return {\n                    start: start,\n                    end: end\n                };\n            };\n            LinearGradientBrush.prototype.toString = function () {\n                var ser = [];\n                for (var en = this.GradientStops.getEnumerator(); en.moveNext();) {\n                    ser.push(en.current.toString());\n                }\n                return \"LinearGradientBrush(\" + this.StartPoint.toString() + \" --> \" + this.EndPoint.toString() + \" [\" + ser.toString() + \"])\";\n            };\n            LinearGradientBrush.StartPointProperty = DependencyProperty.RegisterCore(\"StartPoint\", function () { return Point; }, LinearGradientBrush, undefined, function (d, args) { return d.InvalidateBrush(); });\n            LinearGradientBrush.EndPointProperty = DependencyProperty.RegisterCore(\"EndPoint\", function () { return Point; }, LinearGradientBrush, undefined, function (d, args) { return d.InvalidateBrush(); });\n            return LinearGradientBrush;\n        })(Media.GradientBrush);\n        Media.LinearGradientBrush = LinearGradientBrush;\n        Fayde.CoreLibrary.add(LinearGradientBrush);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Matrix = (function () {\n            function Matrix(raw) {\n                this._Inverse = null;\n                this._Raw = raw || mat3.identity();\n            }\n            Object.defineProperty(Matrix, \"Identity\", {\n                get: function () {\n                    return new Matrix(mat3.identity());\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix.prototype, \"M11\", {\n                get: function () { return this._Raw[0]; },\n                set: function (val) { this._Raw[0] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix.prototype, \"M12\", {\n                get: function () { return this._Raw[1]; },\n                set: function (val) { this._Raw[1] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix.prototype, \"M21\", {\n                get: function () { return this._Raw[2]; },\n                set: function (val) { this._Raw[2] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix.prototype, \"M22\", {\n                get: function () { return this._Raw[3]; },\n                set: function (val) { this._Raw[3] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix.prototype, \"OffsetX\", {\n                get: function () { return this._Raw[4]; },\n                set: function (val) { this._Raw[4] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix.prototype, \"OffsetY\", {\n                get: function () { return this._Raw[5]; },\n                set: function (val) { this._Raw[5] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix.prototype, \"Inverse\", {\n                get: function () {\n                    var inverse = this._Inverse;\n                    if (!inverse) {\n                        inverse = new Matrix();\n                        inverse._Raw = mat3.inverse(this._Raw, mat3.identity());\n                        if (!inverse._Raw)\n                            return undefined;\n                        this._Inverse = inverse;\n                    }\n                    return inverse;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Matrix.prototype._OnChanged = function () {\n                this._Inverse = null;\n                Fayde.Incite(this);\n            };\n            Matrix.prototype.Clone = function () {\n                if (!this._Raw)\n                    return new Matrix();\n                return new Matrix(mat3.create(this._Raw));\n            };\n            return Matrix;\n        })();\n        Media.Matrix = Matrix;\n        Fayde.CoreLibrary.add(Matrix);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Matrix3D = (function () {\n            function Matrix3D() {\n                this._Inverse = null;\n                this._Listeners = [];\n            }\n            Matrix3D.FromRaw = function (raw) {\n                var r = new Matrix3D();\n                r._Raw = raw;\n                return r;\n            };\n            Object.defineProperty(Matrix3D.prototype, \"M11\", {\n                get: function () { return this._Raw[0]; },\n                set: function (val) { this._Raw[0] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M12\", {\n                get: function () { return this._Raw[1]; },\n                set: function (val) { this._Raw[1] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M13\", {\n                get: function () { return this._Raw[2]; },\n                set: function (val) { this._Raw[2] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M14\", {\n                get: function () { return this._Raw[3]; },\n                set: function (val) { this._Raw[3] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M21\", {\n                get: function () { return this._Raw[4]; },\n                set: function (val) { this._Raw[4] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M22\", {\n                get: function () { return this._Raw[5]; },\n                set: function (val) { this._Raw[5] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M23\", {\n                get: function () { return this._Raw[6]; },\n                set: function (val) { this._Raw[6] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M24\", {\n                get: function () { return this._Raw[7]; },\n                set: function (val) { this._Raw[7] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M31\", {\n                get: function () { return this._Raw[8]; },\n                set: function (val) { this._Raw[8] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M32\", {\n                get: function () { return this._Raw[9]; },\n                set: function (val) { this._Raw[9] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M33\", {\n                get: function () { return this._Raw[10]; },\n                set: function (val) { this._Raw[10] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M34\", {\n                get: function () { return this._Raw[11]; },\n                set: function (val) { this._Raw[11] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"OffsetX\", {\n                get: function () { return this._Raw[12]; },\n                set: function (val) { this._Raw[12] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"OffsetY\", {\n                get: function () { return this._Raw[13]; },\n                set: function (val) { this._Raw[13] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"OffsetZ\", {\n                get: function () { return this._Raw[14]; },\n                set: function (val) { this._Raw[14] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"M44\", {\n                get: function () { return this._Raw[15]; },\n                set: function (val) { this._Raw[15] = val; this._OnChanged(); },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Matrix3D.prototype, \"Inverse\", {\n                get: function () {\n                    var inverse = this._Inverse;\n                    if (!inverse) {\n                        inverse = new Matrix3D();\n                        inverse._Raw = mat4.inverse(this._Raw, mat4.identity());\n                        if (!inverse._Raw)\n                            return undefined;\n                        this._Inverse = inverse;\n                    }\n                    return inverse;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Matrix3D.prototype.Listen = function (func) {\n                var listeners = this._Listeners;\n                var listener = {\n                    Callback: func,\n                    Detach: function () {\n                        var index = listeners.indexOf(listener);\n                        if (index > -1)\n                            listeners.splice(index, 1);\n                    }\n                };\n                listeners.push(listener);\n                return listener;\n            };\n            Matrix3D.prototype._OnChanged = function () {\n                this._Inverse = null;\n                var listeners = this._Listeners;\n                var len = listeners.length;\n                for (var i = 0; i < len; i++) {\n                    listeners[i].Callback(this);\n                }\n            };\n            return Matrix3D;\n        })();\n        Media.Matrix3D = Matrix3D;\n        Fayde.CoreLibrary.add(Matrix3D);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Projection = (function (_super) {\n            __extends(Projection, _super);\n            function Projection() {\n                _super.apply(this, arguments);\n                this._ProjectionMatrix = null;\n                this._ObjectWidth = 0;\n                this._ObjectHeight = 0;\n            }\n            Object.defineProperty(Projection.prototype, \"ObjectWidth\", {\n                get: function () {\n                    return this._ObjectWidth;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(Projection.prototype, \"ObjectHeight\", {\n                get: function () {\n                    return this._ObjectHeight;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Projection.prototype.setObjectSize = function (objectWidth, objectHeight) {\n                var w = Math.max(objectWidth, 1.0);\n                var h = Math.max(objectHeight, 1.0);\n                if (w !== this._ObjectWidth && h !== this._ObjectHeight) {\n                    this._ObjectWidth = w;\n                    this._ObjectHeight = h;\n                    this._ProjectionMatrix = null;\n                }\n            };\n            Projection.prototype.getDistanceFromXYPlane = function () {\n                return NaN;\n            };\n            Projection.prototype.getTransform = function () {\n                var m3 = this._ProjectionMatrix;\n                if (!m3)\n                    m3 = this._ProjectionMatrix = this.CreateProjectionMatrix();\n                if (m3)\n                    return mat4.create(m3._Raw);\n                return mat4.identity();\n            };\n            Projection.prototype.CreateProjectionMatrix = function () {\n                return null;\n            };\n            Projection.prototype.InvalidateProjection = function () {\n                this._ProjectionMatrix = null;\n                Fayde.Incite(this);\n            };\n            return Projection;\n        })(Fayde.DependencyObject);\n        Media.Projection = Projection;\n        Fayde.CoreLibrary.add(Projection);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Projection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Matrix3DProjection = (function (_super) {\n            __extends(Matrix3DProjection, _super);\n            function Matrix3DProjection() {\n                _super.apply(this, arguments);\n            }\n            Matrix3DProjection.prototype.CreateProjectionMatrix = function () { return this.ProjectionMatrix; };\n            Matrix3DProjection.ProjectionMatrixProperty = DependencyProperty.Register(\"ProjectionMatrix\", function () { return Media.Matrix3D; }, Matrix3DProjection, undefined, function (d, args) { return d.InvalidateProjection(); });\n            return Matrix3DProjection;\n        })(Media.Projection);\n        Media.Matrix3DProjection = Matrix3DProjection;\n        Fayde.CoreLibrary.add(Matrix3DProjection);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Geometry.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        function ParseGeometry(val) {\n            return (new MediaParser(val)).ParseGeometryImpl();\n        }\n        Media.ParseGeometry = ParseGeometry;\n        function ParseShapePoints(val) {\n            return (new MediaParser(val)).ParseShapePoints();\n        }\n        Media.ParseShapePoints = ParseShapePoints;\n        var MediaParser = (function () {\n            function MediaParser(str) {\n                this.index = 0;\n                this.str = str;\n                this.len = str.length;\n            }\n            MediaParser.prototype.ParseGeometryImpl = function () {\n                var cp = new Point();\n                var cp1, cp2, cp3;\n                var start = new Point();\n                var fillRule = Fayde.Shapes.FillRule.EvenOdd;\n                var cbz = false;\n                var qbz = false;\n                var cbzp = new Point();\n                var qbzp = new Point();\n                var path = new minerva.path.Path();\n                while (this.index < this.len) {\n                    var c;\n                    while (this.index < this.len && (c = this.str.charAt(this.index)) === ' ') {\n                        this.index++;\n                    }\n                    this.index++;\n                    var relative = false;\n                    switch (c) {\n                        case 'f':\n                        case 'F':\n                            c = this.str.charAt(this.index);\n                            if (c === '0')\n                                fillRule = Fayde.Shapes.FillRule.EvenOdd;\n                            else if (c === '1')\n                                fillRule = Fayde.Shapes.FillRule.NonZero;\n                            else\n                                return null;\n                            this.index++;\n                            c = this.str.charAt(this.index);\n                            break;\n                        case 'm':\n                            relative = true;\n                        case 'M':\n                            cp1 = this.ParsePoint();\n                            if (cp1 == null)\n                                break;\n                            if (relative) {\n                                cp1.x += cp.x;\n                                cp1.y += cp.y;\n                            }\n                            path.move(cp1.x, cp1.y);\n                            start.x = cp.x = cp1.x;\n                            start.y = cp.y = cp1.y;\n                            this.Advance();\n                            while (this.MorePointsAvailable()) {\n                                if ((cp1 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp1.x += cp.x;\n                                    cp1.y += cp.y;\n                                }\n                                path.line(cp1.x, cp1.y);\n                            }\n                            cp.x = cp1.x;\n                            cp.y = cp1.y;\n                            cbz = qbz = false;\n                            break;\n                        case 'l':\n                            relative = true;\n                        case 'L':\n                            while (this.MorePointsAvailable()) {\n                                if ((cp1 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp1.x += cp.x;\n                                    cp1.y += cp.y;\n                                }\n                                path.line(cp1.x, cp1.y);\n                                cp.x = cp1.x;\n                                cp.y = cp1.y;\n                                this.Advance();\n                            }\n                            cbz = qbz = false;\n                            break;\n                        case 'h':\n                            relative = true;\n                        case 'H':\n                            var x = this.ParseDouble();\n                            if (x == null)\n                                break;\n                            if (relative)\n                                x += cp.x;\n                            cp = new Point(x, cp.y);\n                            path.line(cp.x, cp.y);\n                            cbz = qbz = false;\n                            break;\n                        case 'v':\n                            relative = true;\n                        case 'V':\n                            var y = this.ParseDouble();\n                            if (y == null)\n                                break;\n                            if (relative)\n                                y += cp.y;\n                            cp = new Point(cp.x, y);\n                            path.line(cp.x, cp.y);\n                            cbz = qbz = false;\n                            break;\n                        case 'c':\n                            relative = true;\n                        case 'C':\n                            while (this.MorePointsAvailable()) {\n                                if ((cp1 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp1.x += cp.x;\n                                    cp1.y += cp.y;\n                                }\n                                this.Advance();\n                                if ((cp2 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp2.x += cp.x;\n                                    cp2.y += cp.y;\n                                }\n                                this.Advance();\n                                if ((cp3 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp3.x += cp.x;\n                                    cp3.y += cp.y;\n                                }\n                                this.Advance();\n                                path.cubicBezier(cp1.x, cp1.y, cp2.x, cp2.y, cp3.x, cp3.y);\n                                cp1.x = cp3.x;\n                                cp1.y = cp3.y;\n                            }\n                            cp.x = cp3.x;\n                            cp.y = cp3.y;\n                            cbz = true;\n                            cbzp.x = cp2.x;\n                            cbzp.y = cp2.y;\n                            qbz = false;\n                            break;\n                        case 's':\n                            relative = true;\n                        case 'S':\n                            while (this.MorePointsAvailable()) {\n                                if ((cp2 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp2.x += cp.x;\n                                    cp2.y += cp.y;\n                                }\n                                this.Advance();\n                                if ((cp3 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp3.x += cp.x;\n                                    cp3.y += cp.y;\n                                }\n                                if (cbz) {\n                                    cp1.x = 2 * cp.x - cbzp.x;\n                                    cp1.y = 2 * cp.y - cbzp.y;\n                                }\n                                else\n                                    cp1 = cp;\n                                path.cubicBezier(cp1.x, cp1.y, cp2.x, cp2.y, cp3.x, cp3.y);\n                                cbz = true;\n                                cbzp.x = cp2.x;\n                                cbzp.y = cp2.y;\n                                cp.x = cp3.x;\n                                cp.y = cp3.y;\n                                this.Advance();\n                            }\n                            qbz = false;\n                            break;\n                        case 'q':\n                            relative = true;\n                        case 'Q':\n                            while (this.MorePointsAvailable()) {\n                                if ((cp1 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp1.x += cp.x;\n                                    cp1.y += cp.y;\n                                }\n                                this.Advance();\n                                if ((cp2 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp2.x += cp.x;\n                                    cp2.y += cp.y;\n                                }\n                                this.Advance();\n                                path.quadraticBezier(cp1.x, cp1.y, cp2.x, cp2.y);\n                                cp.x = cp2.x;\n                                cp.y = cp2.y;\n                            }\n                            qbz = true;\n                            qbzp.x = cp1.x;\n                            qbzp.y = cp1.y;\n                            cbz = false;\n                            break;\n                        case 't':\n                            relative = true;\n                        case 'T':\n                            while (this.MorePointsAvailable()) {\n                                if ((cp2 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp2.x += cp.x;\n                                    cp2.y += cp.y;\n                                }\n                                if (qbz) {\n                                    cp1.x = 2 * cp.x - qbzp.x;\n                                    cp1.y = 2 * cp.y - qbzp.y;\n                                }\n                                else\n                                    cp1 = cp;\n                                path.quadraticBezier(cp1.x, cp1.y, cp2.x, cp2.y);\n                                qbz = true;\n                                qbzp.x = cp1.x;\n                                qbzp.y = cp1.y;\n                                cp.x = cp2.x;\n                                cp.y = cp2.y;\n                                this.Advance();\n                            }\n                            cbz = false;\n                            break;\n                        case 'a':\n                            relative = true;\n                        case 'A':\n                            while (this.MorePointsAvailable()) {\n                                if ((cp1 = this.ParsePoint()) == null)\n                                    break;\n                                var angle = this.ParseDouble();\n                                var is_large = this.ParseDouble() !== 0;\n                                var sweep = minerva.SweepDirection.Counterclockwise;\n                                if (this.ParseDouble() !== 0)\n                                    sweep = minerva.SweepDirection.Clockwise;\n                                if ((cp2 = this.ParsePoint()) == null)\n                                    break;\n                                if (relative) {\n                                    cp2.x += cp.x;\n                                    cp2.y += cp.y;\n                                }\n                                path.ellipticalArc(cp1.x, cp1.y, angle, is_large, sweep, cp2.x, cp2.y);\n                                cp.x = cp2.x;\n                                cp.y = cp2.y;\n                                this.Advance();\n                            }\n                            cbz = qbz = false;\n                            break;\n                        case 'z':\n                        case 'Z':\n                            path.close();\n                            cp.x = start.x;\n                            cp.y = start.y;\n                            cbz = qbz = false;\n                            break;\n                        default:\n                            break;\n                    }\n                }\n                var pg = new Media.PathGeometry();\n                pg.OverridePath(path);\n                pg.FillRule = fillRule;\n                return pg;\n            };\n            MediaParser.prototype.ParseShapePoints = function () {\n                var points = [];\n                var p;\n                while (this.MorePointsAvailable() && (p = this.ParsePoint()) != null) {\n                    points.push(p);\n                }\n                return points;\n            };\n            MediaParser.prototype.ParsePoint = function () {\n                var x = this.ParseDouble();\n                if (x == null)\n                    return null;\n                var c;\n                while (this.index < this.len && ((c = this.str.charAt(this.index)) === ' ' || c === ',')) {\n                    this.index++;\n                }\n                if (this.index >= this.len)\n                    return null;\n                var y = this.ParseDouble();\n                if (y == null)\n                    return null;\n                return new Point(x, y);\n            };\n            MediaParser.prototype.ParseDouble = function () {\n                this.Advance();\n                var isNegative = false;\n                if (this.Match('-')) {\n                    isNegative = true;\n                    this.index++;\n                }\n                else if (this.Match('+')) {\n                    this.index++;\n                }\n                if (this.Match('Infinity')) {\n                    this.index += 8;\n                    return isNegative ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;\n                }\n                if (this.Match('NaN'))\n                    return NaN;\n                var temp = '';\n                while (this.index < this.len) {\n                    var code = this.str.charCodeAt(this.index);\n                    var c = this.str[this.index];\n                    if (code >= 48 && code <= 57)\n                        temp += c;\n                    else if (code === 46)\n                        temp += c;\n                    else if (c === 'E' || c === 'e') {\n                        temp += c;\n                        if (this.str[this.index + 1] === '-') {\n                            temp += '-';\n                            this.index++;\n                        }\n                    }\n                    else\n                        break;\n                    this.index++;\n                }\n                if (temp.length === 0)\n                    return null;\n                var f = parseFloat(temp);\n                return isNegative ? -f : f;\n            };\n            MediaParser.prototype.Match = function (matchStr) {\n                var c1;\n                var c2;\n                for (var i = 0; i < matchStr.length && (this.index + i) < this.len; i++) {\n                    c1 = matchStr.charAt(i);\n                    c2 = this.str.charAt(this.index + i);\n                    if (c1 !== c2)\n                        return false;\n                }\n                return true;\n            };\n            MediaParser.prototype.Advance = function () {\n                var code;\n                var c;\n                while (this.index < this.len) {\n                    code = this.str.charCodeAt(this.index);\n                    if ((code >= 65 && code <= 90) || (code >= 97 && code <= 122) || (code >= 48 && code <= 57))\n                        break;\n                    c = String.fromCharCode(code);\n                    if (c === '.')\n                        break;\n                    if (c === '-')\n                        break;\n                    if (c === '+')\n                        break;\n                    this.index++;\n                }\n            };\n            MediaParser.prototype.MorePointsAvailable = function () {\n                var c;\n                while (this.index < this.len && ((c = this.str.charAt(this.index)) === ',' || c === ' ')) {\n                    this.index++;\n                }\n                if (this.index >= this.len)\n                    return false;\n                if (c === '.' || c === '-' || c === '+')\n                    return true;\n                var code = this.str.charCodeAt(this.index);\n                return code >= 48 && code <= 57;\n            };\n            return MediaParser;\n        })();\n        nullstone.registerTypeConverter(Media.Geometry, function (val) {\n            if (val instanceof Media.Geometry)\n                return val;\n            if (typeof val === \"string\")\n                return ParseGeometry(val);\n            return val;\n        });\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var PathFigure = (function (_super) {\n            __extends(PathFigure, _super);\n            function PathFigure() {\n                var _this = this;\n                _super.call(this);\n                this._Path = null;\n                var coll = PathFigure.SegmentsProperty.Initialize(this);\n                coll.AttachTo(this);\n                Fayde.ReactTo(coll, this, function () { return _this.InvalidatePathFigure(); });\n            }\n            PathFigure.prototype._OnSegmentsSourceChanged = function (args) {\n                this.Segments.SetSource(args.NewValue);\n            };\n            PathFigure.prototype._Build = function () {\n                var p = new minerva.path.Path();\n                var start = this.StartPoint;\n                p.move(start.x, start.y);\n                var enumerator = this.Segments.getEnumerator();\n                while (enumerator.moveNext()) {\n                    enumerator.current._Append(p);\n                }\n                if (this.IsClosed)\n                    p.close();\n                return p;\n            };\n            PathFigure.prototype.InvalidatePathFigure = function () {\n                this._Path = null;\n                Fayde.Incite(this);\n            };\n            PathFigure.prototype.MergeInto = function (rp) {\n                if (!this._Path)\n                    this._Path = this._Build();\n                minerva.path.Path.Merge(rp, this._Path);\n            };\n            PathFigure.IsClosedProperty = DependencyProperty.RegisterCore(\"IsClosed\", function () { return Boolean; }, PathFigure, false, function (d, args) { return d.InvalidatePathFigure(); });\n            PathFigure.StartPointProperty = DependencyProperty.RegisterCore(\"StartPoint\", function () { return Point; }, PathFigure, undefined, function (d, args) { return d.InvalidatePathFigure(); });\n            PathFigure.IsFilledProperty = DependencyProperty.RegisterCore(\"IsFilled\", function () { return Boolean; }, PathFigure, true, function (d, args) { return d.InvalidatePathFigure(); });\n            PathFigure.SegmentsProperty = DependencyProperty.RegisterImmutable(\"Segments\", function () { return Media.PathSegmentCollection; }, PathFigure);\n            PathFigure.SegmentsSourceProperty = DependencyProperty.Register(\"SegmentsSource\", function () { return nullstone.IEnumerable_; }, PathFigure, undefined, function (d, args) { return d._OnSegmentsSourceChanged(args); });\n            return PathFigure;\n        })(Fayde.DependencyObject);\n        Media.PathFigure = PathFigure;\n        Fayde.CoreLibrary.add(PathFigure);\n        Fayde.Markup.Content(PathFigure, PathFigure.SegmentsProperty);\n        var PathFigureCollection = (function (_super) {\n            __extends(PathFigureCollection, _super);\n            function PathFigureCollection() {\n                _super.apply(this, arguments);\n            }\n            PathFigureCollection.prototype.AddingToCollection = function (value, error) {\n                var _this = this;\n                if (!_super.prototype.AddingToCollection.call(this, value, error))\n                    return false;\n                Fayde.ReactTo(value, this, function () { return Fayde.Incite(_this); });\n                Fayde.Incite(this);\n                return true;\n            };\n            PathFigureCollection.prototype.RemovedFromCollection = function (value, isValueSafe) {\n                _super.prototype.RemovedFromCollection.call(this, value, isValueSafe);\n                Fayde.UnreactTo(value, this);\n                Fayde.Incite(this);\n            };\n            return PathFigureCollection;\n        })(Fayde.XamlObjectCollection);\n        Media.PathFigureCollection = PathFigureCollection;\n        Fayde.CoreLibrary.add(PathFigureCollection);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Geometry.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var PathGeometry = (function (_super) {\n            __extends(PathGeometry, _super);\n            function PathGeometry() {\n                var _this = this;\n                _super.call(this);\n                this._OverridePath = null;\n                var coll = PathGeometry.FiguresProperty.Initialize(this);\n                coll.AttachTo(this);\n                Fayde.ReactTo(coll, this, function () { return _this.InvalidateFigures(); });\n            }\n            Object.defineProperty(PathGeometry.prototype, \"fillRule\", {\n                get: function () {\n                    return this.FillRule;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            PathGeometry.prototype.OverridePath = function (path) {\n                this._OverridePath = path;\n            };\n            PathGeometry.prototype._Build = function () {\n                if (this._OverridePath)\n                    return this._OverridePath;\n                var p = new minerva.path.Path();\n                var figures = this.Figures;\n                if (!figures)\n                    return;\n                var enumerator = figures.getEnumerator();\n                while (enumerator.moveNext()) {\n                    enumerator.current.MergeInto(p);\n                }\n                return p;\n            };\n            PathGeometry.prototype.InvalidateFigures = function () {\n                this._OverridePath = null;\n                this.InvalidateGeometry();\n            };\n            PathGeometry.FillRuleProperty = DependencyProperty.Register(\"FillRule\", function () { return new Fayde.Enum(Fayde.Shapes.FillRule); }, PathGeometry, Fayde.Shapes.FillRule.EvenOdd, function (d, args) { return d.InvalidateGeometry(); });\n            PathGeometry.FiguresProperty = DependencyProperty.RegisterImmutable(\"Figures\", function () { return Media.PathFigureCollection; }, PathGeometry);\n            return PathGeometry;\n        })(Media.Geometry);\n        Media.PathGeometry = PathGeometry;\n        Fayde.CoreLibrary.add(PathGeometry);\n        Fayde.Markup.Content(PathGeometry, PathGeometry.FiguresProperty);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var PathSegment = (function (_super) {\n            __extends(PathSegment, _super);\n            function PathSegment() {\n                _super.apply(this, arguments);\n            }\n            PathSegment.prototype._Append = function (path) {\n            };\n            return PathSegment;\n        })(Fayde.DependencyObject);\n        Media.PathSegment = PathSegment;\n        Fayde.CoreLibrary.add(PathSegment);\n        var PathSegmentCollection = (function (_super) {\n            __extends(PathSegmentCollection, _super);\n            function PathSegmentCollection() {\n                _super.apply(this, arguments);\n                this._Modifying = false;\n                this._Source = null;\n            }\n            PathSegmentCollection.prototype.AddingToCollection = function (value, error) {\n                var _this = this;\n                if (!this._Modifying && this._Source != null) {\n                    console.warn(\"Cannot modify Path Segments Collection when bound to SegmentsSource.\");\n                    return false;\n                }\n                if (!_super.prototype.AddingToCollection.call(this, value, error))\n                    return false;\n                Fayde.ReactTo(value, this, function () { return Fayde.Incite(_this); });\n                Fayde.Incite(this);\n                return true;\n            };\n            PathSegmentCollection.prototype.RemovedFromCollection = function (value, isValueSafe) {\n                _super.prototype.RemovedFromCollection.call(this, value, isValueSafe);\n                Fayde.UnreactTo(value, this);\n                Fayde.Incite(this);\n            };\n            PathSegmentCollection.prototype.SetSource = function (source) {\n                var onc = Fayde.Collections.INotifyCollectionChanged_.as(this._Source);\n                if (onc)\n                    onc.CollectionChanged.off(this._OnSegmentsCollectionChanged, this);\n                var oen = nullstone.IEnumerable_.as(this._Source);\n                if (oen) {\n                    this.Clear();\n                }\n                this._Source = source;\n                var nen = nullstone.IEnumerable_.as(this._Source);\n                if (nen) {\n                    this._Modifying = true;\n                    try {\n                        for (var en = nen.getEnumerator(); en.moveNext();) {\n                            this.Add(en.current);\n                        }\n                    }\n                    finally {\n                        this._Modifying = false;\n                    }\n                }\n                var nnc = Fayde.Collections.INotifyCollectionChanged_.as(this._Source);\n                if (nnc)\n                    nnc.CollectionChanged.on(this._OnSegmentsCollectionChanged, this);\n            };\n            PathSegmentCollection.prototype._OnSegmentsCollectionChanged = function (sender, args) {\n                this._Modifying = true;\n                try {\n                    for (var i = 0, items = args.OldItems, len = items ? items.length : 0; i < len; i++) {\n                        this.RemoveAt(i);\n                    }\n                    for (var i = 0, items = args.NewItems, len = items ? items.length : 0; i < len; i++) {\n                        this.Insert(args.NewStartingIndex + i, items[i]);\n                    }\n                }\n                finally {\n                    this._Modifying = false;\n                }\n            };\n            return PathSegmentCollection;\n        })(Fayde.XamlObjectCollection);\n        Media.PathSegmentCollection = PathSegmentCollection;\n        Fayde.CoreLibrary.add(PathSegmentCollection);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"PathSegment.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var ArcSegment = (function (_super) {\n            __extends(ArcSegment, _super);\n            function ArcSegment() {\n                _super.apply(this, arguments);\n            }\n            ArcSegment.prototype._Append = function (path) {\n                var size = this.Size;\n                var width = size ? size.width : 0.0;\n                var height = size ? size.height : 0.0;\n                var endpt = this.Point;\n                var ex = endpt ? endpt.x : 0.0;\n                var ey = endpt ? endpt.y : 0.0;\n                path.ellipticalArc(width, height, this.RotationAngle, this.IsLargeArc, this.SweepDirection, ex, ey);\n            };\n            ArcSegment.IsLargeArcProperty = DependencyProperty.RegisterCore(\"IsLargeArc\", function () { return Boolean; }, ArcSegment, false, function (d, args) { return Fayde.Incite(d); });\n            ArcSegment.PointProperty = DependencyProperty.Register(\"Point\", function () { return Point; }, ArcSegment, undefined, function (d, args) { return Fayde.Incite(d); });\n            ArcSegment.RotationAngleProperty = DependencyProperty.Register(\"RotationAngle\", function () { return Number; }, ArcSegment, 0.0, function (d, args) { return Fayde.Incite(d); });\n            ArcSegment.SizeProperty = DependencyProperty.Register(\"Size\", function () { return minerva.Size; }, ArcSegment, undefined, function (d, args) { return Fayde.Incite(d); });\n            ArcSegment.SweepDirectionProperty = DependencyProperty.Register(\"SweepDirection\", function () { return new Fayde.Enum(Fayde.Shapes.SweepDirection); }, ArcSegment, Fayde.Shapes.SweepDirection.Counterclockwise, function (d, args) { return Fayde.Incite(d); });\n            return ArcSegment;\n        })(Media.PathSegment);\n        Media.ArcSegment = ArcSegment;\n        Fayde.CoreLibrary.add(ArcSegment);\n        var BezierSegment = (function (_super) {\n            __extends(BezierSegment, _super);\n            function BezierSegment() {\n                _super.apply(this, arguments);\n            }\n            BezierSegment.prototype._Append = function (path) {\n                var p1 = this.Point1;\n                var p2 = this.Point2;\n                var p3 = this.Point3;\n                var x1 = p1 ? p1.x : 0.0;\n                var y1 = p1 ? p1.y : 0.0;\n                var x2 = p2 ? p2.x : 0.0;\n                var y2 = p2 ? p2.y : 0.0;\n                var x3 = p3 ? p3.x : 0.0;\n                var y3 = p3 ? p3.y : 0.0;\n                path.cubicBezier(x1, y1, x2, y2, x3, y3);\n            };\n            BezierSegment.Point1Property = DependencyProperty.Register(\"Point1\", function () { return Point; }, BezierSegment);\n            BezierSegment.Point2Property = DependencyProperty.Register(\"Point2\", function () { return Point; }, BezierSegment);\n            BezierSegment.Point3Property = DependencyProperty.Register(\"Point3\", function () { return Point; }, BezierSegment);\n            return BezierSegment;\n        })(Media.PathSegment);\n        Media.BezierSegment = BezierSegment;\n        Fayde.CoreLibrary.add(BezierSegment);\n        var LineSegment = (function (_super) {\n            __extends(LineSegment, _super);\n            function LineSegment() {\n                _super.apply(this, arguments);\n            }\n            LineSegment.prototype._Append = function (path) {\n                var p = this.Point;\n                var x = p ? p.x : 0.0;\n                var y = p ? p.y : 0.0;\n                path.line(x, y);\n            };\n            LineSegment.PointProperty = DependencyProperty.Register(\"Point\", function () { return Point; }, LineSegment);\n            return LineSegment;\n        })(Media.PathSegment);\n        Media.LineSegment = LineSegment;\n        Fayde.CoreLibrary.add(LineSegment);\n        var PolyBezierSegment = (function (_super) {\n            __extends(PolyBezierSegment, _super);\n            function PolyBezierSegment() {\n                _super.call(this);\n                PolyBezierSegment.PointsProperty.Initialize(this);\n            }\n            PolyBezierSegment.prototype._Append = function (path) {\n                var points = this.Points;\n                if (!points || (points.Count % 3) !== 0)\n                    return;\n                var p1;\n                var p2;\n                var p3;\n                var enumerator = points.getEnumerator();\n                while (enumerator.moveNext()) {\n                    p1 = enumerator.current;\n                    enumerator.moveNext();\n                    p2 = enumerator.current;\n                    enumerator.moveNext();\n                    p3 = enumerator.current;\n                    path.cubicBezier(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y);\n                }\n            };\n            PolyBezierSegment.PointsProperty = DependencyProperty.RegisterImmutable(\"Points\", function () { return Fayde.Shapes.PointCollection; }, PolyBezierSegment);\n            return PolyBezierSegment;\n        })(Media.PathSegment);\n        Media.PolyBezierSegment = PolyBezierSegment;\n        Fayde.CoreLibrary.add(PolyBezierSegment);\n        Fayde.Markup.Content(PolyBezierSegment, PolyBezierSegment.PointsProperty);\n        var PolyLineSegment = (function (_super) {\n            __extends(PolyLineSegment, _super);\n            function PolyLineSegment() {\n                _super.call(this);\n                PolyLineSegment.PointsProperty.Initialize(this);\n            }\n            PolyLineSegment.prototype._Append = function (path) {\n                var p;\n                var enumerator = this.Points.getEnumerator();\n                while (enumerator.moveNext()) {\n                    p = enumerator.current;\n                    path.line(p.x, p.y);\n                }\n                console.warn(\"PolyLineSegment._Append\");\n            };\n            PolyLineSegment.PointsProperty = DependencyProperty.RegisterImmutable(\"Points\", function () { return Fayde.Shapes.PointCollection; }, PolyLineSegment);\n            return PolyLineSegment;\n        })(Media.PathSegment);\n        Media.PolyLineSegment = PolyLineSegment;\n        Fayde.CoreLibrary.add(PolyLineSegment);\n        Fayde.Markup.Content(PolyLineSegment, PolyLineSegment.PointsProperty);\n        var PolyQuadraticBezierSegment = (function (_super) {\n            __extends(PolyQuadraticBezierSegment, _super);\n            function PolyQuadraticBezierSegment() {\n                _super.call(this);\n                PolyQuadraticBezierSegment.PointsProperty.Initialize(this);\n            }\n            PolyQuadraticBezierSegment.prototype._Append = function (path) {\n                var points = this.Points;\n                if (!points || (points.Count % 2) !== 0)\n                    return;\n                var x0 = path.endX;\n                var y0 = path.endY;\n                var x1;\n                var y1;\n                var x2;\n                var y2;\n                var x3;\n                var y3;\n                var enumerator = points.getEnumerator();\n                while (enumerator.moveNext()) {\n                    x1 = enumerator.current.x;\n                    y1 = enumerator.current.y;\n                    enumerator.moveNext();\n                    x2 = enumerator.current.x;\n                    y2 = enumerator.current.y;\n                    x3 = x2;\n                    y3 = y2;\n                    x2 = x1 + (x2 - x1) / 3;\n                    y2 = y1 + (y2 - y1) / 3;\n                    x1 = x0 + 2 * (x1 - x0) / 3;\n                    y1 = y0 + 2 * (y1 - y0) / 3;\n                    path.cubicBezier(x1, y1, x2, y2, x3, y3);\n                    x0 = x3;\n                    y0 = y3;\n                }\n            };\n            PolyQuadraticBezierSegment.PointsProperty = DependencyProperty.RegisterImmutable(\"Points\", function () { return Fayde.Shapes.PointCollection; }, PolyQuadraticBezierSegment);\n            return PolyQuadraticBezierSegment;\n        })(Media.PathSegment);\n        Media.PolyQuadraticBezierSegment = PolyQuadraticBezierSegment;\n        Fayde.CoreLibrary.add(PolyQuadraticBezierSegment);\n        Fayde.Markup.Content(PolyQuadraticBezierSegment, PolyQuadraticBezierSegment.PointsProperty);\n        var QuadraticBezierSegment = (function (_super) {\n            __extends(QuadraticBezierSegment, _super);\n            function QuadraticBezierSegment() {\n                _super.apply(this, arguments);\n            }\n            QuadraticBezierSegment.prototype._Append = function (path) {\n                var p1 = this.Point1;\n                var p2 = this.Point2;\n                var x1 = p1 ? p1.x : 0.0;\n                var y1 = p1 ? p1.y : 0.0;\n                var x2 = p2 ? p2.x : 0.0;\n                var y2 = p2 ? p2.y : 0.0;\n                path.quadraticBezier(x1, y1, x2, y2);\n            };\n            QuadraticBezierSegment.Point1Property = DependencyProperty.Register(\"Point1\", function () { return Point; }, QuadraticBezierSegment);\n            QuadraticBezierSegment.Point2Property = DependencyProperty.Register(\"Point2\", function () { return Point; }, QuadraticBezierSegment);\n            return QuadraticBezierSegment;\n        })(Media.PathSegment);\n        Media.QuadraticBezierSegment = QuadraticBezierSegment;\n        Fayde.CoreLibrary.add(QuadraticBezierSegment);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Projection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var FIELD_OF_VIEW = 57.0 / 180 * Math.PI;\n        var CAMERA_DIST = 999.0;\n        var NEAR_VAL = 1.0;\n        var FAR_VAL = 65536.0;\n        var XY_PLANE_Z = (NEAR_VAL * FAR_VAL / (NEAR_VAL - FAR_VAL) * (1.0 - CAMERA_DIST)) / CAMERA_DIST;\n        var PI_OVER_180 = Math.PI / 180.0;\n        var PlaneProjection = (function (_super) {\n            __extends(PlaneProjection, _super);\n            function PlaneProjection() {\n                _super.apply(this, arguments);\n            }\n            PlaneProjection.prototype.getDistanceFromXYPlane = function () {\n                var w = Math.max(this.ObjectWidth, 1.0);\n                var h = Math.max(this.ObjectHeight, 1.0);\n                var p = [w / 2.0, h / 2.0, 0.0, 1.0];\n                var m = this.getTransform();\n                mat4.transformVec4(m, p, p);\n                if (p[3] === 0.0)\n                    return NaN;\n                return XY_PLANE_Z - (p[2] / p[3]);\n            };\n            PlaneProjection.prototype.CreateProjectionMatrix3D = function () {\n                var rotationX = this.RotationX;\n                var rotationY = this.RotationY;\n                var rotationZ = this.RotationZ;\n                var radiansX = (rotationX || 0.0) * PI_OVER_180;\n                var radiansY = (rotationY || 0.0) * PI_OVER_180;\n                var radiansZ = (rotationZ || 0.0) * PI_OVER_180;\n                var globalOffsetX = this.GlobalOffsetX;\n                var globalOffsetY = this.GlobalOffsetY;\n                var globalOffsetZ = this.GlobalOffsetZ;\n                var globalX = globalOffsetX || 0.0;\n                var globalY = globalOffsetY || 0.0;\n                var globalZ = globalOffsetZ || 0.0;\n                var localOffsetX = this.LocalOffsetX;\n                var localOffsetY = this.LocalOffsetY;\n                var localOffsetZ = this.LocalOffsetZ;\n                var localX = localOffsetX || 0.0;\n                var localY = localOffsetY || 0.0;\n                var localZ = localOffsetZ || 0.0;\n                var ow = this.ObjectWidth;\n                var oh = this.ObjectHeight;\n                var height = 2.0 * CAMERA_DIST * Math.tan(FIELD_OF_VIEW / 2.0);\n                var scale = height / oh;\n                var toCenter = mat4.createTranslate(-ow * this.CenterOfRotationX, -oh * this.CenterOfRotationY, -this.CenterOfRotationZ);\n                var invertY = mat4.createScale(1.0, -1.0, 1.0);\n                var localOffset = mat4.createTranslate(localX, -localY, localZ);\n                var rotateX = mat4.createRotateX(radiansX);\n                var rotateY = mat4.createRotateX(radiansY);\n                var rotateZ = mat4.createRotateX(radiansZ);\n                var toCamera = mat4.createTranslate(ow * (this.CenterOfRotationX - 0.5) + globalX, -oh * (this.CenterOfRotationY - 0.5) - globalY, this.CenterOfRotationZ - CAMERA_DIST + globalZ);\n                var perspective = mat4.createPerspective(FIELD_OF_VIEW, ow / oh, NEAR_VAL, FAR_VAL);\n                var zoom = mat4.createScale(scale, scale, 1.0);\n                var viewport = mat4.createViewport(ow, oh);\n                var m = mat4.multiply(toCenter, invertY);\n                mat4.multiply(m, localOffset, m);\n                mat4.multiply(m, rotateX, m);\n                mat4.multiply(m, rotateY, m);\n                mat4.multiply(m, rotateZ, m);\n                mat4.multiply(m, toCamera, m);\n                mat4.multiply(m, perspective, m);\n                mat4.multiply(m, zoom, m);\n                mat4.multiply(m, viewport, m);\n                var r = new Media.Matrix3D();\n                r._Raw = m;\n                return r;\n            };\n            PlaneProjection.CenterOfRotationXProperty = DependencyProperty.Register(\"CenterOfRotationX\", function () { return Number; }, PlaneProjection, 0.5, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.CenterOfRotationYProperty = DependencyProperty.Register(\"CenterOfRotationY\", function () { return Number; }, PlaneProjection, 0.5, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.CenterOfRotationZProperty = DependencyProperty.Register(\"CenterOfRotationZ\", function () { return Number; }, PlaneProjection, 0.5, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.GlobalOffsetXProperty = DependencyProperty.Register(\"GlobalOffsetX\", function () { return Number; }, PlaneProjection, 0.0, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.GlobalOffsetYProperty = DependencyProperty.Register(\"GlobalOffsetY\", function () { return Number; }, PlaneProjection, 0.0, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.GlobalOffsetZProperty = DependencyProperty.Register(\"GlobalOffsetZ\", function () { return Number; }, PlaneProjection, 0.0, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.LocalOffsetXProperty = DependencyProperty.Register(\"LocalOffsetX\", function () { return Number; }, PlaneProjection, 0.0, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.LocalOffsetYProperty = DependencyProperty.Register(\"LocalOffsetY\", function () { return Number; }, PlaneProjection, 0.0, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.LocalOffsetZProperty = DependencyProperty.Register(\"LocalOffsetZ\", function () { return Number; }, PlaneProjection, 0.0, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.RotationXProperty = DependencyProperty.Register(\"RotationX\", function () { return Number; }, PlaneProjection, 0.0, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.RotationYProperty = DependencyProperty.Register(\"RotationY\", function () { return Number; }, PlaneProjection, 0.0, function (d, args) { return d.InvalidateProjection(); });\n            PlaneProjection.RotationZProperty = DependencyProperty.Register(\"RotationZ\", function () { return Number; }, PlaneProjection, 0.0, function (d, args) { return d.InvalidateProjection(); });\n            return PlaneProjection;\n        })(Media.Projection);\n        Media.PlaneProjection = PlaneProjection;\n        Fayde.CoreLibrary.add(PlaneProjection);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"GradientBrush.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var tmpCanvas = document.createElement('canvas');\n        var tmpCtx = tmpCanvas.getContext('2d');\n        var epsilon = 1E-10;\n        var RadialGradientBrush = (function (_super) {\n            __extends(RadialGradientBrush, _super);\n            function RadialGradientBrush() {\n                _super.apply(this, arguments);\n            }\n            RadialGradientBrush.prototype.CreatePad = function (ctx, bounds) {\n                var data = this._GetPointData(bounds);\n                var grd = (!data.balanced ? tmpCtx : ctx).createRadialGradient(data.x0, data.y0, 0, data.x1, data.y1, data.r1);\n                for (var en = this.GradientStops.getEnumerator(); en.moveNext();) {\n                    var stop = en.current;\n                    this.AddColorStop(grd, stop.Offset, stop.Color);\n                }\n                return this.FitPattern(ctx, grd, data, bounds);\n            };\n            RadialGradientBrush.prototype.CreateRepeat = function (ctx, bounds) {\n                var data = this._GetPointData(bounds);\n                return this.CreateInterpolated(data, bounds, false);\n            };\n            RadialGradientBrush.prototype.CreateReflect = function (ctx, bounds) {\n                var data = this._GetPointData(bounds);\n                return this.CreateInterpolated(data, bounds, true);\n            };\n            RadialGradientBrush.prototype.CreateInterpolated = function (data, bounds, reflect) {\n                tmpCanvas.width = bounds.width;\n                tmpCanvas.height = bounds.height;\n                tmpCtx.save();\n                if (!data.balanced)\n                    tmpCtx.scale(data.sx, data.sy);\n                tmpCtx.globalCompositeOperation = \"destination-over\";\n                var inverted = false;\n                var allStops = this.GradientStops.getPaddedEnumerable();\n                for (var extender = Media.RadialGradient.createExtender(data, bounds); extender.step(); inverted = !inverted) {\n                    var grd = extender.createGradient(tmpCtx);\n                    for (var en = allStops.getEnumerator(); en.moveNext();) {\n                        var offset = en.current.Offset;\n                        if (reflect && inverted)\n                            offset = 1 - offset;\n                        this.AddColorStop(grd, offset, en.current.Color);\n                    }\n                    tmpCtx.fillStyle = grd;\n                    tmpCtx.beginPath();\n                    tmpCtx.arc(extender.x1, extender.y1, extender.r1, 0, 2 * Math.PI, false);\n                    tmpCtx.closePath();\n                    tmpCtx.fill();\n                }\n                var pattern = tmpCtx.createPattern(tmpCanvas, \"no-repeat\");\n                tmpCtx.restore();\n                return pattern;\n            };\n            RadialGradientBrush.prototype.FitPattern = function (ctx, fill, data, bounds) {\n                if (data.balanced)\n                    return fill;\n                tmpCanvas.width = bounds.width;\n                tmpCanvas.height = bounds.height;\n                tmpCtx.save();\n                tmpCtx.scale(data.sx, data.sy);\n                tmpCtx.fillStyle = fill;\n                tmpCtx.fillRect(0, 0, data.side, data.side);\n                var pattern = ctx.createPattern(tmpCanvas, \"no-repeat\");\n                tmpCtx.restore();\n                return pattern;\n            };\n            RadialGradientBrush.prototype._GetPointData = function (bounds) {\n                var center = this.Center;\n                center = !center ? new Point(0.5, 0.5) : center.Clone();\n                var origin = this.GradientOrigin;\n                origin = !origin ? new Point(0.5, 0.5) : origin.Clone();\n                var rx = this.RadiusX;\n                if (rx == null)\n                    rx = 0.5;\n                var ry = this.RadiusY;\n                if (ry == null)\n                    ry = 0.5;\n                if (this.MappingMode !== Media.BrushMappingMode.Absolute) {\n                    center.x *= bounds.width;\n                    center.y *= bounds.height;\n                    origin.x *= bounds.width;\n                    origin.y *= bounds.height;\n                    rx *= bounds.width;\n                    ry *= bounds.height;\n                }\n                center.x += bounds.x;\n                center.y += bounds.y;\n                origin.x += bounds.x;\n                origin.y += bounds.y;\n                var rad = Math.max(rx, ry);\n                var side = Math.max(bounds.width, bounds.height), sx = bounds.width / side, sy = bounds.height / side;\n                return {\n                    x0: origin.x / sx,\n                    y0: origin.y / sy,\n                    x1: center.x / sx,\n                    y1: center.y / sy,\n                    r1: rad,\n                    side: side,\n                    sx: bounds.width / side,\n                    sy: bounds.height / side,\n                    balanced: Math.abs(rx - ry) < epsilon\n                };\n            };\n            RadialGradientBrush.CenterProperty = DependencyProperty.RegisterCore(\"Center\", function () { return Point; }, RadialGradientBrush, undefined, function (d, args) { return d.InvalidateBrush(); });\n            RadialGradientBrush.GradientOriginProperty = DependencyProperty.RegisterCore(\"GradientOrigin\", function () { return Point; }, RadialGradientBrush, undefined, function (d, args) { return d.InvalidateBrush(); });\n            RadialGradientBrush.RadiusXProperty = DependencyProperty.RegisterCore(\"RadiusX\", function () { return Number; }, RadialGradientBrush, 0.5, function (d, args) { return d.InvalidateBrush(); });\n            RadialGradientBrush.RadiusYProperty = DependencyProperty.RegisterCore(\"RadiusY\", function () { return Number; }, RadialGradientBrush, 0.5, function (d, args) { return d.InvalidateBrush(); });\n            return RadialGradientBrush;\n        })(Media.GradientBrush);\n        Media.RadialGradientBrush = RadialGradientBrush;\n        Fayde.CoreLibrary.add(RadialGradientBrush);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Geometry.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var RectangleGeometry = (function (_super) {\n            __extends(RectangleGeometry, _super);\n            function RectangleGeometry() {\n                _super.apply(this, arguments);\n            }\n            RectangleGeometry.prototype._Build = function () {\n                var irect = this.Rect;\n                if (!irect)\n                    return null;\n                var radiusX = this.RadiusX;\n                var radiusY = this.RadiusY;\n                var p = new minerva.path.Path();\n                p.roundedRect(irect.x, irect.y, irect.width, irect.height, radiusX, radiusY);\n                return p;\n            };\n            RectangleGeometry.RectProperty = DependencyProperty.RegisterCore(\"Rect\", function () { return Rect; }, RectangleGeometry, undefined, function (d, args) { return d.InvalidateGeometry(); });\n            RectangleGeometry.RadiusXProperty = DependencyProperty.RegisterCore(\"RadiusX\", function () { return Number; }, RectangleGeometry, 0, function (d, args) { return d.InvalidateGeometry(); });\n            RectangleGeometry.RadiusYProperty = DependencyProperty.RegisterCore(\"RadiusY\", function () { return Number; }, RectangleGeometry, 0, function (d, args) { return d.InvalidateGeometry(); });\n            return RectangleGeometry;\n        })(Media.Geometry);\n        Media.RectangleGeometry = RectangleGeometry;\n        Fayde.CoreLibrary.add(RectangleGeometry);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Brush.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var SolidColorBrush = (function (_super) {\n            __extends(SolidColorBrush, _super);\n            function SolidColorBrush() {\n                var args = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    args[_i - 0] = arguments[_i];\n                }\n                _super.call(this);\n                if (args && args.length === 1 && args[0] instanceof Color)\n                    this.Color = args[0];\n            }\n            SolidColorBrush.prototype.isTransparent = function () {\n                var color = this.Color;\n                return !color || (color.A <= 0);\n            };\n            SolidColorBrush.FromColor = function (color) {\n                var scb = new SolidColorBrush();\n                scb.Color = color;\n                return scb;\n            };\n            SolidColorBrush.prototype.setupBrush = function (ctx, bounds) {\n                if (this._CachedBrush)\n                    return;\n                this._CachedBrush = this.CreateBrush(ctx, bounds);\n            };\n            SolidColorBrush.prototype.CreateBrush = function (ctx, bounds) {\n                var color = this.Color;\n                if (!color)\n                    return \"#000000\";\n                return color.toString();\n            };\n            SolidColorBrush.ColorProperty = DependencyProperty.Register(\"Color\", function () { return Color; }, SolidColorBrush, undefined, function (d, args) { return d.InvalidateBrush(); });\n            return SolidColorBrush;\n        })(Media.Brush);\n        Media.SolidColorBrush = SolidColorBrush;\n        Fayde.CoreLibrary.add(SolidColorBrush);\n        function brushConverter(val) {\n            if (!val || val instanceof Media.Brush)\n                return val;\n            var scb = new SolidColorBrush();\n            scb.Color = nullstone.convertAnyToType(val, Color);\n            return scb;\n        }\n        nullstone.registerTypeConverter(Media.Brush, brushConverter);\n        nullstone.registerTypeConverter(SolidColorBrush, brushConverter);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var TextOptions = (function () {\n            function TextOptions() {\n            }\n            TextOptions.GetTextHintingMode = function (d) { return d.GetValue(TextOptions.TextHintingModeProperty); };\n            TextOptions.SetTextHintingMode = function (d, value) { d.SetValue(TextOptions.TextHintingModeProperty, value); };\n            TextOptions.TextHintingModeProperty = DependencyProperty.RegisterAttached(\"TextHintingMode\", function () { return new Fayde.Enum(Media.TextHintingMode); }, TextOptions);\n            return TextOptions;\n        })();\n        Media.TextOptions = TextOptions;\n        Fayde.CoreLibrary.add(TextOptions);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Brush.ts\" />\n/// <reference path=\"Enums.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        function computeImageMatrix(width, height, sw, sh, stretch, alignX, alignY) {\n            var sx = width / sw;\n            var sy = height / sh;\n            if (width === 0)\n                sx = 1.0;\n            if (height === 0)\n                sy = 1.0;\n            if (stretch === Media.Stretch.Fill) {\n                return mat3.createScale(sx, sy);\n            }\n            var scale = 1.0;\n            var dx = 0.0;\n            var dy = 0.0;\n            switch (stretch) {\n                case Media.Stretch.Uniform:\n                    scale = sx < sy ? sx : sy;\n                    break;\n                case Media.Stretch.UniformToFill:\n                    scale = sx < sy ? sy : sx;\n                    break;\n                case Media.Stretch.None:\n                    break;\n            }\n            switch (alignX) {\n                case Media.AlignmentX.Left:\n                    dx = 0.0;\n                    break;\n                case Media.AlignmentX.Center:\n                    dx = (width - (scale * sw)) / 2;\n                    break;\n                case Media.AlignmentX.Right:\n                default:\n                    dx = width - (scale * sw);\n                    break;\n            }\n            switch (alignY) {\n                case Media.AlignmentY.Top:\n                    dy = 0.0;\n                    break;\n                case Media.AlignmentY.Center:\n                    dy = (height - (scale * sh)) / 2;\n                    break;\n                case Media.AlignmentY.Bottom:\n                default:\n                    dy = height - (scale * sh);\n                    break;\n            }\n            var m = mat3.createScale(scale, scale);\n            mat3.translate(m, dx, dy);\n            return m;\n        }\n        var TileBrush = (function (_super) {\n            __extends(TileBrush, _super);\n            function TileBrush() {\n                _super.apply(this, arguments);\n            }\n            TileBrush.prototype.CreateBrush = function (ctx, bounds) {\n                var imgExtents = this.GetTileExtents();\n                var tmpCanvas = document.createElement(\"canvas\");\n                tmpCanvas.width = bounds.width;\n                tmpCanvas.height = bounds.height;\n                var tmpCtx = tmpCanvas.getContext(\"2d\");\n                var mat = computeImageMatrix(bounds.width, bounds.height, imgExtents.width, imgExtents.height, this.Stretch, this.AlignmentX, this.AlignmentY);\n                tmpCtx.setTransform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]);\n                this.DrawTile(tmpCtx, bounds);\n                return ctx.createPattern(tmpCanvas, \"no-repeat\");\n            };\n            TileBrush.prototype.GetTileExtents = function () { return undefined; };\n            TileBrush.prototype.DrawTile = function (canvasCtx, bounds) { };\n            TileBrush.AlignmentXProperty = DependencyProperty.RegisterCore(\"AlignmentX\", function () { return new Fayde.Enum(Media.AlignmentX); }, TileBrush, Media.AlignmentX.Center, function (d, args) { return d.InvalidateBrush(); });\n            TileBrush.AlignmentYProperty = DependencyProperty.RegisterCore(\"AlignmentY\", function () { return new Fayde.Enum(Media.AlignmentY); }, TileBrush, Media.AlignmentY.Center, function (d, args) { return d.InvalidateBrush(); });\n            TileBrush.StretchProperty = DependencyProperty.RegisterCore(\"Stretch\", function () { return new Fayde.Enum(Media.Stretch); }, TileBrush, Media.Stretch.Fill, function (d, args) { return d.InvalidateBrush(); });\n            return TileBrush;\n        })(Media.Brush);\n        Media.TileBrush = TileBrush;\n        Fayde.CoreLibrary.add(TileBrush);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"GeneralTransform.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Transform = (function (_super) {\n            __extends(Transform, _super);\n            function Transform() {\n                _super.call(this);\n                Fayde.XamlNode.SetShareable(this.XamlNode);\n            }\n            Object.defineProperty(Transform.prototype, \"Value\", {\n                get: function () {\n                    var val = this._Value;\n                    if (!val) {\n                        this._Value = val = new Media.Matrix();\n                        val._Raw = this._BuildValue();\n                    }\n                    return val;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Transform.prototype.getRaw = function () {\n                return this.Value._Raw;\n            };\n            Object.defineProperty(Transform.prototype, \"Inverse\", {\n                get: function () {\n                    var inverse = this.Value.Inverse;\n                    if (!inverse)\n                        return null;\n                    var mt = new MatrixTransform();\n                    mt.Matrix = inverse;\n                    return mt;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Transform.prototype.Transform = function (p) {\n                var val = this.Value;\n                var v;\n                if (!val || !(v = val._Raw))\n                    return new Point(p.x, p.y);\n                v = mat3.transformVec2(v, vec2.create(p.x, p.y));\n                return new Point(v[0], v[1]);\n            };\n            Transform.prototype.TransformBounds = function (r) {\n                if (!r)\n                    return undefined;\n                var v = this.Value;\n                var copy = new minerva.Rect();\n                minerva.Rect.copyTo(r, copy);\n                if (!v || !v._Raw)\n                    return copy;\n                return minerva.Rect.transform(copy, v._Raw);\n            };\n            Transform.prototype.TryTransform = function (inPoint, outPoint) {\n                return false;\n            };\n            Transform.prototype.InvalidateValue = function () {\n                if (this._Value !== undefined)\n                    this._Value = undefined;\n                Fayde.Incite(this);\n            };\n            Transform.prototype._BuildValue = function () {\n                return undefined;\n            };\n            Transform.copyMatTo = function (t, mat) {\n                mat3.copyTo(t.Value._Raw, mat);\n            };\n            return Transform;\n        })(Media.GeneralTransform);\n        Media.Transform = Transform;\n        Fayde.CoreLibrary.add(Transform);\n        var MatrixTransform = (function (_super) {\n            __extends(MatrixTransform, _super);\n            function MatrixTransform() {\n                _super.apply(this, arguments);\n            }\n            MatrixTransform.prototype._BuildValue = function () {\n                var m = this.Matrix;\n                if (m)\n                    return m._Raw;\n                return mat3.identity();\n            };\n            MatrixTransform.prototype.Clone = function () {\n                var xform = new MatrixTransform();\n                xform.Matrix = this.Matrix.Clone();\n                return xform;\n            };\n            MatrixTransform.MatrixProperty = DependencyProperty.RegisterFull(\"Matrix\", function () { return Media.Matrix; }, MatrixTransform);\n            return MatrixTransform;\n        })(Transform);\n        Media.MatrixTransform = MatrixTransform;\n        Fayde.CoreLibrary.add(MatrixTransform);\n        var reactions;\n        (function (reactions) {\n            Fayde.DPReaction(MatrixTransform.MatrixProperty, function (mt, ov, nv) { return mt.InvalidateValue(); });\n        })(reactions || (reactions = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Transform.ts\" />\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var RotateTransform = (function (_super) {\n            __extends(RotateTransform, _super);\n            function RotateTransform() {\n                _super.apply(this, arguments);\n            }\n            RotateTransform.prototype._BuildValue = function () {\n                var cx = this.CenterX;\n                var cy = this.CenterY;\n                var angle = this.Angle;\n                var angleRad = Math.PI / 180 * angle;\n                var m = mat3.createRotate(angleRad);\n                if (cx === 0 && cy === 0)\n                    return m;\n                mat3.multiply(mat3.createTranslate(-cx, -cy), m, m);\n                mat3.translate(m, cx, cy);\n                return m;\n            };\n            RotateTransform.AngleProperty = DependencyProperty.Register(\"Angle\", function () { return Number; }, RotateTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            RotateTransform.CenterXProperty = DependencyProperty.Register(\"CenterX\", function () { return Number; }, RotateTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            RotateTransform.CenterYProperty = DependencyProperty.Register(\"CenterY\", function () { return Number; }, RotateTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            return RotateTransform;\n        })(Media.Transform);\n        Media.RotateTransform = RotateTransform;\n        Fayde.CoreLibrary.add(RotateTransform);\n        var ScaleTransform = (function (_super) {\n            __extends(ScaleTransform, _super);\n            function ScaleTransform() {\n                _super.apply(this, arguments);\n            }\n            ScaleTransform.prototype._BuildValue = function () {\n                var cx = this.CenterX;\n                var cy = this.CenterY;\n                var m = mat3.createScale(this.ScaleX, this.ScaleY);\n                if (cx === 0 && cy === 0)\n                    return m;\n                mat3.multiply(mat3.createTranslate(-cx, -cy), m, m);\n                mat3.translate(m, cx, cy);\n                return m;\n            };\n            ScaleTransform.CenterXProperty = DependencyProperty.Register(\"CenterX\", function () { return Number; }, ScaleTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            ScaleTransform.CenterYProperty = DependencyProperty.Register(\"CenterY\", function () { return Number; }, ScaleTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            ScaleTransform.ScaleXProperty = DependencyProperty.Register(\"ScaleX\", function () { return Number; }, ScaleTransform, 1.0, function (d, args) { return d.InvalidateValue(); });\n            ScaleTransform.ScaleYProperty = DependencyProperty.Register(\"ScaleY\", function () { return Number; }, ScaleTransform, 1.0, function (d, args) { return d.InvalidateValue(); });\n            return ScaleTransform;\n        })(Media.Transform);\n        Media.ScaleTransform = ScaleTransform;\n        Fayde.CoreLibrary.add(ScaleTransform);\n        var SkewTransform = (function (_super) {\n            __extends(SkewTransform, _super);\n            function SkewTransform() {\n                _super.apply(this, arguments);\n            }\n            SkewTransform.prototype._BuildValue = function () {\n                var cx = this.CenterX;\n                var cy = this.CenterY;\n                var angleXRad = Math.PI / 180 * this.AngleX;\n                var angleYRad = Math.PI / 180 * this.AngleY;\n                var m = mat3.createSkew(angleXRad, angleYRad);\n                if (cx === 0 && cy === 0)\n                    return m;\n                mat3.multiply(mat3.createTranslate(-cx, -cy), m, m);\n                mat3.translate(m, cx, cy);\n                return m;\n            };\n            SkewTransform.AngleXProperty = DependencyProperty.Register(\"AngleX\", function () { return Number; }, SkewTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            SkewTransform.AngleYProperty = DependencyProperty.Register(\"AngleY\", function () { return Number; }, SkewTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            SkewTransform.CenterXProperty = DependencyProperty.Register(\"CenterX\", function () { return Number; }, SkewTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            SkewTransform.CenterYProperty = DependencyProperty.Register(\"CenterY\", function () { return Number; }, SkewTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            return SkewTransform;\n        })(Media.Transform);\n        Media.SkewTransform = SkewTransform;\n        Fayde.CoreLibrary.add(SkewTransform);\n        var TranslateTransform = (function (_super) {\n            __extends(TranslateTransform, _super);\n            function TranslateTransform() {\n                _super.apply(this, arguments);\n            }\n            TranslateTransform.prototype._BuildValue = function () {\n                return mat3.createTranslate(this.X, this.Y);\n            };\n            TranslateTransform.XProperty = DependencyProperty.Register(\"X\", function () { return Number; }, TranslateTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            TranslateTransform.YProperty = DependencyProperty.Register(\"Y\", function () { return Number; }, TranslateTransform, 0, function (d, args) { return d.InvalidateValue(); });\n            return TranslateTransform;\n        })(Media.Transform);\n        Media.TranslateTransform = TranslateTransform;\n        Fayde.CoreLibrary.add(TranslateTransform);\n        var TransformCollection = (function (_super) {\n            __extends(TransformCollection, _super);\n            function TransformCollection() {\n                _super.apply(this, arguments);\n            }\n            TransformCollection.prototype.AddingToCollection = function (value, error) {\n                var _this = this;\n                if (!_super.prototype.AddingToCollection.call(this, value, error))\n                    return false;\n                Fayde.ReactTo(value, this, function () { return Fayde.Incite(_this); });\n                Fayde.Incite(this);\n                return true;\n            };\n            TransformCollection.prototype.RemovedFromCollection = function (value, isValueSafe) {\n                if (!_super.prototype.RemovedFromCollection.call(this, value, isValueSafe))\n                    return false;\n                Fayde.UnreactTo(value, this);\n                Fayde.Incite(this);\n            };\n            return TransformCollection;\n        })(Fayde.XamlObjectCollection);\n        Media.TransformCollection = TransformCollection;\n        Fayde.CoreLibrary.add(TransformCollection);\n        var TransformGroup = (function (_super) {\n            __extends(TransformGroup, _super);\n            function TransformGroup() {\n                var _this = this;\n                _super.call(this);\n                var coll = TransformGroup.ChildrenProperty.Initialize(this);\n                coll.AttachTo(this);\n                Fayde.ReactTo(coll, this, function () { return _this.InvalidateValue(); });\n            }\n            TransformGroup.prototype._BuildValue = function () {\n                var enumerator = this.Children.getEnumerator();\n                var cur = mat3.identity();\n                while (enumerator.moveNext()) {\n                    if (cur && enumerator.current.Value._Raw)\n                        mat3.multiply(cur, enumerator.current.Value._Raw, cur);\n                }\n                return cur;\n            };\n            TransformGroup.ChildrenProperty = DependencyProperty.RegisterImmutable(\"Children\", function () { return TransformCollection; }, TransformGroup);\n            return TransformGroup;\n        })(Media.Transform);\n        Media.TransformGroup = TransformGroup;\n        Fayde.CoreLibrary.add(TransformGroup);\n        Fayde.Markup.Content(TransformGroup, TransformGroup.ChildrenProperty);\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Navigation;\n    (function (Navigation) {\n        function Navigate(source, targetName, navigateUri) {\n            if (!isExternalTarget(targetName)) {\n                if (tryInternalNavigate(source, navigateUri, targetName))\n                    return;\n                if (!isUriValidForExternalNav(navigateUri))\n                    throw new NotSupportedException(\"Navigation Failed\");\n            }\n            var app = source.App;\n            if (!app || !app.AllowNavigation)\n                throw new InvalidOperationException(\"Navigation is now allowed.\");\n            var absoluteUri = getAbsoluteUri(navigateUri, app);\n            if (!absoluteUri.isAbsoluteUri)\n                throw new InvalidOperationException(\"Navigation Failed [\" + absoluteUri.toString() + \"]\");\n            launchDummyLink(targetName || \"_self\", absoluteUri.originalString);\n        }\n        Navigation.Navigate = Navigate;\n        function isExternalTarget(targetName) {\n            if (!targetName)\n                return false;\n            switch (targetName.toLowerCase()) {\n                case \"_blank\":\n                case \"_media\":\n                case \"_search\":\n                case \"_parent\":\n                case \"_self\":\n                case \"_top\":\n                    return true;\n                default:\n                    return false;\n            }\n        }\n        function tryInternalNavigate(source, navigateUri, targetName) {\n            var lastSubtree = source;\n            for (var en = walkUp(source); en.moveNext();) {\n                var cur = en.current;\n                if (cur && (Navigation.INavigate_.is(cur) || !Fayde.VisualTreeHelper.GetParent(cur))) {\n                    var navigator = findNavigator(cur, lastSubtree, targetName);\n                    if (navigator)\n                        return navigator.Navigate(navigateUri);\n                    lastSubtree = cur;\n                }\n            }\n            return false;\n        }\n        function findNavigator(root, lastSubtree, targetName) {\n            if (!root || root === lastSubtree)\n                return null;\n            var nav = Navigation.INavigate_.as(root);\n            if (nav && (!targetName || targetName === root.Name))\n                return nav;\n            if (root instanceof Fayde.Controls.Primitives.Popup) {\n                return findNavigator(root.Child, lastSubtree, targetName);\n            }\n            else {\n                for (var i = 0, len = Fayde.VisualTreeHelper.GetChildrenCount(root); i < len; i++) {\n                    var navigator = findNavigator(Fayde.VisualTreeHelper.GetChild(root, i), lastSubtree, targetName);\n                    if (navigator)\n                        return navigator;\n                }\n            }\n            return null;\n        }\n        function walkUp(xobj) {\n            var e = {\n                current: xobj,\n                moveNext: function () {\n                    if (!e.current)\n                        return false;\n                    e.current = e.current.VisualParent || e.current.Parent;\n                    return !!e.current;\n                }\n            };\n            return e;\n        }\n        function isUriValidForExternalNav(navigateUri) {\n            if (!navigateUri.isAbsoluteUri) {\n                if (!!navigateUri.originalString && navigateUri.originalString[0] !== \"/\")\n                    return false;\n            }\n            return true;\n        }\n        function getAbsoluteUri(navigateUri, app) {\n            var relativeUri = navigateUri;\n            if (!relativeUri.isAbsoluteUri) {\n                if (!!relativeUri.originalString && relativeUri.originalString[0] !== \"/\")\n                    throw new NotSupportedException(\"HyperlinkButton_GetAbsoluteUri_PageRelativeUri\");\n                if (!app)\n                    throw new NotSupportedException(\"HyperlinkButton_GetAbsoluteUri_NoApplication\");\n                relativeUri = new Fayde.Uri(app.Address, relativeUri);\n            }\n            return relativeUri;\n        }\n        var dummyLink;\n        function launchDummyLink(target, navigateUri) {\n            dummyLink = dummyLink || document.createElement('a');\n            dummyLink.href = navigateUri;\n            dummyLink.target = target;\n            dummyLink.click();\n        }\n    })(Navigation = Fayde.Navigation || (Fayde.Navigation = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Navigation;\n    (function (Navigation) {\n        var NavigationService = (function () {\n            function NavigationService() {\n                var _this = this;\n                this.LocationChanged = new nullstone.Event();\n                this.Href = window.location.href;\n                this.Hash = window.location.hash;\n                if (this.Href[this.Href.length - 1] === '#')\n                    this.Hash = \"#\";\n                if (this.Hash) {\n                    this.Hash = this.Hash.substr(1);\n                    this.Href = this.Href.substring(0, this.Href.indexOf('#'));\n                }\n                window.onhashchange = function () { return _this._HandleFragmentChange(); };\n            }\n            Object.defineProperty(NavigationService.prototype, \"CurrentUri\", {\n                get: function () {\n                    return new Fayde.Uri(this.Href + \"#\" + this.Hash);\n                },\n                enumerable: true,\n                configurable: true\n            });\n            NavigationService.prototype.Navigate = function (uri) {\n                window.location.hash = uri.toString();\n                return true;\n            };\n            NavigationService.prototype._HandleFragmentChange = function () {\n                this.Hash = window.location.hash;\n                if (this.Hash) {\n                    this.Hash = this.Hash.substr(1);\n                }\n                this.LocationChanged.raise(this, null);\n            };\n            return NavigationService;\n        })();\n        Navigation.NavigationService = NavigationService;\n        Fayde.CoreLibrary.add(NavigationService);\n    })(Navigation = Fayde.Navigation || (Fayde.Navigation = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Navigation;\n    (function (Navigation) {\n        var RedirectRoute = (function (_super) {\n            __extends(RedirectRoute, _super);\n            function RedirectRoute(route, newUri) {\n                _super.call(this, route.View, route.HashParams, route.DataContext);\n                this.NewUri = new Fayde.Uri(newUri);\n            }\n            return RedirectRoute;\n        })(Navigation.Route);\n        Navigation.RedirectRoute = RedirectRoute;\n    })(Navigation = Fayde.Navigation || (Fayde.Navigation = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Navigation;\n    (function (Navigation) {\n        var RouteMapper = (function (_super) {\n            __extends(RouteMapper, _super);\n            function RouteMapper() {\n                _super.call(this);\n                RouteMapper.RouteMappingsProperty.Initialize(this);\n            }\n            RouteMapper.prototype.MapUri = function (uri) {\n                var redirect = {\n                    uri: null,\n                    do: function (newUri) {\n                        redirect.uri = newUri;\n                    }\n                };\n                var mapped;\n                for (var en = this.RouteMappings.getEnumerator(); en.moveNext();) {\n                    mapped = en.current.MapUri(uri);\n                    if (mapped) {\n                        var vm = this.ViewModelProvider ? this.ViewModelProvider.ResolveViewModel(mapped, redirect.do) : null;\n                        if (redirect.uri)\n                            return new Navigation.RedirectRoute(mapped, redirect.uri);\n                        mapped.DataContext = vm;\n                        return mapped;\n                    }\n                }\n                return undefined;\n            };\n            RouteMapper.RouteMappingsProperty = DependencyProperty.RegisterImmutable(\"RouteMappings\", function () { return Fayde.XamlObjectCollection; }, RouteMapper);\n            RouteMapper.ViewModelProviderProperty = DependencyProperty.Register(\"ViewModelProvider\", function () { return Fayde.MVVM.IViewModelProvider_; }, RouteMapper);\n            return RouteMapper;\n        })(Fayde.DependencyObject);\n        Navigation.RouteMapper = RouteMapper;\n        Fayde.CoreLibrary.add(RouteMapper);\n        Fayde.Markup.Content(RouteMapper, RouteMapper.RouteMappingsProperty);\n    })(Navigation = Fayde.Navigation || (Fayde.Navigation = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Navigation;\n    (function (Navigation) {\n        var RouteMapping = (function (_super) {\n            __extends(RouteMapping, _super);\n            function RouteMapping() {\n                _super.apply(this, arguments);\n            }\n            RouteMapping.prototype.MapUri = function (uri) {\n                var matcher = createUriMatcher(this.Uri.toString(), uri.toString());\n                var result = matcher.Match();\n                if (!result)\n                    return undefined;\n                if (!this.View)\n                    throw new InvalidOperationException(\"RouteMapping must have a view. (\" + this.Uri.toString() + \")\");\n                var hashParams = {};\n                for (var i = 0; i < result.length; i++) {\n                    var key = result[i].Identifier;\n                    var value = result[i].Value;\n                    hashParams[key] = value;\n                }\n                return new Navigation.Route(this.View, hashParams, null);\n            };\n            RouteMapping.ViewProperty = DependencyProperty.Register(\"View\", function () { return Fayde.Uri; }, RouteMapping);\n            RouteMapping.UriProperty = DependencyProperty.Register(\"Uri\", function () { return Fayde.Uri; }, RouteMapping);\n            return RouteMapping;\n        })(Fayde.DependencyObject);\n        Navigation.RouteMapping = RouteMapping;\n        Fayde.CoreLibrary.add(RouteMapping);\n        function createUriMatcher(matchTemplate, actual) {\n            var i = 0;\n            var j = 0;\n            function collectTokenInfo() {\n                var tokenInfo = {\n                    Identifier: null,\n                    Terminator: null,\n                    Value: null\n                };\n                var index = matchTemplate.indexOf('}', i);\n                if (index < 0)\n                    throw new InvalidOperationException(\"Invalid Uri format. '{' needs a closing '}'.\");\n                var len = index - i + 1;\n                tokenInfo.Identifier = matchTemplate.substr(i + 1, len - 2);\n                if (!tokenInfo.Identifier)\n                    throw new InvalidOperationException(\"Invalid Uri format. '{}' must contain an identifier.\");\n                i += len;\n                tokenInfo.Terminator = (i + 1) < matchTemplate.length ? matchTemplate[i] : '\\0';\n                return tokenInfo;\n            }\n            function findTokenValue(tokenInfo) {\n                if (tokenInfo.Terminator === '\\0') {\n                    tokenInfo.Value = actual.substr(j);\n                    if (tokenInfo.Value)\n                        j += tokenInfo.Value.length;\n                    return tokenInfo;\n                }\n                tokenInfo.Value = \"\";\n                while (j < actual.length) {\n                    if (actual[j] == tokenInfo.Terminator)\n                        return;\n                    tokenInfo.Value += actual[j];\n                    j++;\n                }\n            }\n            return {\n                Match: function () {\n                    var tokens = [];\n                    if (matchTemplate.length === 0) {\n                        if (actual.length === 0)\n                            return tokens;\n                        return null;\n                    }\n                    while (i < matchTemplate.length && j < actual.length) {\n                        if (matchTemplate[i] === \"{\") {\n                            tokens.push(findTokenValue(collectTokenInfo()));\n                            continue;\n                        }\n                        if (matchTemplate[i] !== actual[i])\n                            return null;\n                        i++;\n                        j++;\n                    }\n                    return tokens;\n                }\n            };\n        }\n    })(Navigation = Fayde.Navigation || (Fayde.Navigation = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Navigation;\n    (function (Navigation) {\n        var UriMapper = (function (_super) {\n            __extends(UriMapper, _super);\n            function UriMapper() {\n                _super.call(this);\n                UriMapper.UriMappingsProperty.Initialize(this);\n            }\n            UriMapper.prototype.MapUri = function (uri) {\n                var enumerator = this.UriMappings.getEnumerator();\n                var mapped;\n                while (enumerator.moveNext()) {\n                    mapped = enumerator.current.MapUri(uri);\n                    if (mapped)\n                        return mapped;\n                }\n                return uri;\n            };\n            UriMapper.UriMappingsProperty = DependencyProperty.RegisterImmutable(\"UriMappings\", function () { return Fayde.XamlObjectCollection; }, UriMapper);\n            return UriMapper;\n        })(Fayde.DependencyObject);\n        Navigation.UriMapper = UriMapper;\n        Fayde.CoreLibrary.add(UriMapper);\n        Fayde.Markup.Content(UriMapper, UriMapper.UriMappingsProperty);\n    })(Navigation = Fayde.Navigation || (Fayde.Navigation = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Navigation;\n    (function (Navigation) {\n        var UriMapping = (function (_super) {\n            __extends(UriMapping, _super);\n            function UriMapping() {\n                _super.apply(this, arguments);\n            }\n            UriMapping.prototype.MapUri = function (uri) {\n                var matcher = createUriMatcher(this.Uri.toString(), this.MappedUri.toString(), uri.toString());\n                var result = matcher.Match();\n                if (!result)\n                    return undefined;\n                return new Fayde.Uri(result);\n            };\n            UriMapping.MappedUriProperty = DependencyProperty.Register(\"MappedUri\", function () { return Fayde.Uri; }, UriMapping);\n            UriMapping.UriProperty = DependencyProperty.Register(\"Uri\", function () { return Fayde.Uri; }, UriMapping);\n            return UriMapping;\n        })(Fayde.DependencyObject);\n        Navigation.UriMapping = UriMapping;\n        Fayde.CoreLibrary.add(UriMapping);\n        function createUriMatcher(matchTemplate, outputTemplate, actual) {\n            var i = 0;\n            var j = 0;\n            function collectTokenInfo() {\n                var tokenInfo = {\n                    Identifier: null,\n                    Terminator: null,\n                    Value: null\n                };\n                var index = matchTemplate.indexOf('}', i);\n                if (index < 0)\n                    throw new InvalidOperationException(\"Invalid Uri format. '{' needs a closing '}'.\");\n                var len = index - i + 1;\n                tokenInfo.Identifier = matchTemplate.substr(i + 1, len - 2);\n                if (!tokenInfo.Identifier)\n                    throw new InvalidOperationException(\"Invalid Uri format. '{}' must contain an identifier.\");\n                i += len;\n                tokenInfo.Terminator = (i + 1) < matchTemplate.length ? matchTemplate[i] : '\\0';\n                return tokenInfo;\n            }\n            function findTokenValue(tokenInfo) {\n                if (tokenInfo.Terminator === '\\0') {\n                    tokenInfo.Value = actual.substr(j);\n                    if (tokenInfo.Value)\n                        j += tokenInfo.Value.length;\n                    return tokenInfo;\n                }\n                tokenInfo.Value = \"\";\n                while (j < actual.length) {\n                    if (actual[j] == tokenInfo.Terminator)\n                        return;\n                    tokenInfo.Value += actual[j];\n                    j++;\n                }\n            }\n            function buildMappedUri(tokens) {\n                var cur = outputTemplate;\n                var len = tokens.length;\n                var token;\n                for (var a = 0; a < len; a++) {\n                    token = tokens[a];\n                    cur = cur.replace(\"{\" + token.Identifier + \"}\", token.Value);\n                }\n                return cur;\n            }\n            return {\n                Match: function () {\n                    var tokens = [];\n                    if (matchTemplate.length === 0) {\n                        if (actual.length === 0)\n                            return buildMappedUri(tokens);\n                        return null;\n                    }\n                    while (i < matchTemplate.length && j < actual.length) {\n                        if (matchTemplate[i] === \"{\") {\n                            tokens.push(findTokenValue(collectTokenInfo()));\n                            continue;\n                        }\n                        if (matchTemplate[i] !== actual[i])\n                            return null;\n                        i++;\n                        j++;\n                    }\n                    return buildMappedUri(tokens);\n                }\n            };\n        }\n    })(Navigation = Fayde.Navigation || (Fayde.Navigation = {}));\n})(Fayde || (Fayde = {}));\nvar CornerRadius = (function (_super) {\n    __extends(CornerRadius, _super);\n    function CornerRadius() {\n        _super.apply(this, arguments);\n    }\n    CornerRadius.prototype.Clone = function () {\n        return new CornerRadius(this.topLeft, this.topRight, this.bottomRight, this.bottomLeft);\n    };\n    return CornerRadius;\n})(minerva.CornerRadius);\nFayde.CoreLibrary.addPrimitive(CornerRadius);\nnullstone.registerTypeConverter(CornerRadius, function (val) {\n    if (!val)\n        return new CornerRadius();\n    if (val instanceof CornerRadius)\n        return val;\n    if (typeof val === \"number\")\n        return new CornerRadius(val, val, val, val);\n    var tokens = Fayde.splitCommaList(val.toString());\n    var topLeft, topRight, bottomRight, bottomLeft;\n    if (tokens.length === 1) {\n        topLeft = topRight = bottomRight = bottomLeft = parseFloat(tokens[0]);\n    }\n    else if (tokens.length === 4) {\n        topLeft = parseFloat(tokens[0]);\n        topRight = parseFloat(tokens[1]);\n        bottomRight = parseFloat(tokens[2]);\n        bottomLeft = parseFloat(tokens[3]);\n    }\n    else {\n        throw new Exception(\"Cannot parse CornerRadius value '\" + val + \"'\");\n    }\n    return new CornerRadius(topLeft, topRight, bottomRight, bottomLeft);\n});\nvar DurationType;\n(function (DurationType) {\n    DurationType[DurationType[\"Automatic\"] = 0] = \"Automatic\";\n    DurationType[DurationType[\"Forever\"] = 1] = \"Forever\";\n    DurationType[DurationType[\"TimeSpan\"] = 2] = \"TimeSpan\";\n})(DurationType || (DurationType = {}));\nvar Duration = (function () {\n    function Duration(ts) {\n        this._Type = DurationType.TimeSpan;\n        this._TimeSpan = ts;\n    }\n    Duration.prototype.Clone = function () {\n        var dur = new Duration();\n        dur._Type = this._Type;\n        dur._TimeSpan = this._TimeSpan;\n        return dur;\n    };\n    Object.defineProperty(Duration.prototype, \"Type\", {\n        get: function () { return this._Type; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Duration.prototype, \"TimeSpan\", {\n        get: function () {\n            if (this._Type === DurationType.TimeSpan)\n                return this._TimeSpan;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Duration.prototype, \"HasTimeSpan\", {\n        get: function () { return this._Type === DurationType.TimeSpan; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Duration.prototype, \"IsForever\", {\n        get: function () { return this._Type === DurationType.Forever; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Duration.prototype, \"IsAutomatic\", {\n        get: function () { return this._Type === DurationType.Automatic; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Duration.prototype, \"IsZero\", {\n        get: function () { return this._Type === DurationType.TimeSpan && this._TimeSpan.Ticks === 0; },\n        enumerable: true,\n        configurable: true\n    });\n    Duration.Automatic = (function () { var d = new Duration(); d._Type = DurationType.Automatic; return d; })();\n    Duration.Forever = (function () { var d = new Duration(); d._Type = DurationType.Forever; return d; })();\n    return Duration;\n})();\nFayde.CoreLibrary.addPrimitive(Duration);\nnullstone.registerTypeConverter(Duration, function (val) {\n    if (val instanceof Duration)\n        return val;\n    if (!val || val.toString().toLowerCase() === \"automatic\")\n        return Duration.Automatic;\n    if (val.toString().toLowerCase() === \"forever\")\n        return Duration.Forever;\n    var ts = nullstone.convertAnyToType(val, TimeSpan);\n    return new Duration(ts);\n});\nvar FontFamily = (function () {\n    function FontFamily(FamilyNames) {\n        this.FamilyNames = FamilyNames;\n    }\n    FontFamily.prototype.toString = function () {\n        return this.FamilyNames;\n    };\n    FontFamily.prototype.Clone = function () {\n        return new FontFamily(this.FamilyNames);\n    };\n    return FontFamily;\n})();\nFayde.CoreLibrary.addPrimitive(FontFamily);\nnullstone.registerTypeConverter(FontFamily, function (val) {\n    if (!val)\n        return new FontFamily(minerva.Font.DEFAULT_FAMILY);\n    return new FontFamily(val.toString());\n});\nvar KeyTime = (function () {\n    function KeyTime() {\n        this._IsPaced = false;\n        this._IsUniform = false;\n        this._TimeSpan = null;\n        this._Percent = null;\n        this.IsValid = true;\n    }\n    KeyTime.CreateUniform = function () {\n        var kt = new KeyTime();\n        kt._IsUniform = true;\n        return kt;\n    };\n    KeyTime.CreateTimeSpan = function (ts) {\n        var kt = new KeyTime();\n        kt._TimeSpan = ts;\n        return kt;\n    };\n    KeyTime.prototype.Clone = function () {\n        var kt = new KeyTime();\n        kt._TimeSpan = this._TimeSpan;\n        kt._IsPaced = this._IsPaced;\n        kt._IsUniform = this._IsUniform;\n        kt._Percent = this._Percent;\n        return kt;\n    };\n    Object.defineProperty(KeyTime.prototype, \"IsPaced\", {\n        get: function () { return this._IsPaced; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(KeyTime.prototype, \"IsUniform\", {\n        get: function () { return this._IsUniform; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(KeyTime.prototype, \"HasTimeSpan\", {\n        get: function () { return this._TimeSpan != null; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(KeyTime.prototype, \"TimeSpan\", {\n        get: function () { return this._TimeSpan; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(KeyTime.prototype, \"HasPercent\", {\n        get: function () { return this._Percent != null; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(KeyTime.prototype, \"Percent\", {\n        get: function () { return this._Percent; },\n        enumerable: true,\n        configurable: true\n    });\n    return KeyTime;\n})();\nFayde.CoreLibrary.addPrimitive(KeyTime);\nnullstone.registerTypeConverter(KeyTime, function (val) {\n    if (!val || val.toString().toLowerCase() === \"uniform\")\n        return KeyTime.CreateUniform();\n    var ts = nullstone.convertAnyToType(val, TimeSpan);\n    return KeyTime.CreateTimeSpan(ts);\n});\nvar Length = (function () {\n    function Length() {\n    }\n    return Length;\n})();\nFayde.CoreLibrary.addPrimitive(Length);\nnullstone.registerTypeConverter(Length, function (val) {\n    if (!val || val.toString().toLowerCase() === \"auto\")\n        return Number.NaN;\n    if (typeof val === \"number\")\n        return val;\n    return parseFloat(val.toString());\n});\nvar Rect = (function (_super) {\n    __extends(Rect, _super);\n    function Rect() {\n        _super.apply(this, arguments);\n    }\n    Rect.prototype.Clone = function () {\n        return new Rect(this.x, this.y, this.width, this.height);\n    };\n    return Rect;\n})(minerva.Rect);\nFayde.CoreLibrary.addPrimitive(Rect);\nnullstone.registerTypeConverter(Rect, function (val) {\n    if (!val)\n        return new Rect();\n    if (val instanceof Rect)\n        return val;\n    var tokens = Fayde.splitCommaList(val.toString());\n    if (tokens.length === 4) {\n        return new Rect(parseFloat(tokens[0]), parseFloat(tokens[1]), parseFloat(tokens[2]), parseFloat(tokens[3]));\n    }\n    throw new Error(\"Cannot parse Rect value '\" + val + \"'\");\n});\nvar Size = (function (_super) {\n    __extends(Size, _super);\n    function Size() {\n        _super.apply(this, arguments);\n    }\n    Size.prototype.Clone = function () {\n        return new Size(this.width, this.height);\n    };\n    return Size;\n})(minerva.Size);\nFayde.CoreLibrary.addPrimitive(Size);\nnullstone.registerTypeConverter(Size, function (val) {\n    if (!val)\n        return new Size();\n    if (val instanceof Size)\n        return val;\n    if (val instanceof minerva.Size)\n        return new Size(val.width, val.height);\n    var tokens = Fayde.splitCommaList(val.toString());\n    if (tokens.length === 2) {\n        var w = parseFloat(tokens[0]);\n        var h = parseFloat(tokens[1]);\n        return new Size(w, h);\n    }\n    throw new Exception(\"Cannot parse Size value '\" + val + \"'\");\n});\nvar Thickness = (function (_super) {\n    __extends(Thickness, _super);\n    function Thickness() {\n        _super.apply(this, arguments);\n    }\n    Thickness.prototype.Clone = function () {\n        return new Thickness(this.left, this.top, this.right, this.bottom);\n    };\n    Thickness.prototype.toString = function () {\n        var l = this.left || 0;\n        var t = this.top || 0;\n        var r = this.right || 0;\n        var b = this.bottom || 0;\n        return [l, t, r, b].join(',');\n    };\n    return Thickness;\n})(minerva.Thickness);\nFayde.CoreLibrary.addPrimitive(Thickness);\nnullstone.registerTypeConverter(Thickness, function (val) {\n    if (!val)\n        return new Thickness();\n    if (typeof val === \"number\")\n        return new Thickness(val, val, val, val);\n    if (val instanceof Thickness) {\n        var t = val;\n        return new Thickness(t.left, t.top, t.right, t.bottom);\n    }\n    var tokens = Fayde.splitCommaList(val.toString());\n    var left, top, right, bottom;\n    if (tokens.length === 1) {\n        left = top = right = bottom = parseFloat(tokens[0]);\n    }\n    else if (tokens.length === 2) {\n        left = right = parseFloat(tokens[0]);\n        top = bottom = parseFloat(tokens[1]);\n    }\n    else if (tokens.length === 4) {\n        left = parseFloat(tokens[0]);\n        top = parseFloat(tokens[1]);\n        right = parseFloat(tokens[2]);\n        bottom = parseFloat(tokens[3]);\n    }\n    else {\n        throw new Exception(\"Cannot parse Thickness value '\" + val + \"'\");\n    }\n    return new Thickness(left, top, right, bottom);\n});\nvar Fayde;\n(function (Fayde) {\n    function splitCommaList(str) {\n        var tokens = [];\n        for (var i = 0, arr = str.split(' ').join(',').split(','); i < arr.length; i++) {\n            var cur = arr[i];\n            if (cur)\n                tokens.push(cur);\n        }\n        return tokens;\n    }\n    Fayde.splitCommaList = splitCommaList;\n})(Fayde || (Fayde = {}));\nvar BError = (function () {\n    function BError() {\n    }\n    BError.prototype.ThrowException = function () {\n        var ex;\n        switch (this.Number) {\n            case BError.Attach:\n                ex = new AttachException(this.Message, this.Data);\n                break;\n            case BError.Argument:\n                ex = new ArgumentException(this.Message);\n                break;\n            case BError.InvalidOperation:\n                ex = new InvalidOperationException(this.Message);\n                break;\n            case BError.XamlParse:\n                ex = new XamlParseException(this.Message);\n                break;\n            default:\n                ex = new Exception(this.Message);\n                break;\n        }\n        throw ex;\n    };\n    BError.Argument = 2;\n    BError.InvalidOperation = 3;\n    BError.XamlParse = 5;\n    BError.Attach = 6;\n    return BError;\n})();\nvar Fayde;\n(function (Fayde) {\n    function Bootstrap(onLoaded) {\n        var url = document.body.getAttribute(\"fayde-app\");\n        if (!url) {\n            console.warn(\"No application specified.\");\n            return;\n        }\n        var canvas = document.getElementsByTagName(\"canvas\")[0];\n        if (!canvas)\n            document.body.appendChild(canvas = document.createElement(\"canvas\"));\n        bootstrap(url, canvas, onLoaded);\n    }\n    Fayde.Bootstrap = Bootstrap;\n    function bootstrap(url, canvas, onLoaded) {\n        var app;\n        function resolveConfig() {\n            perfex.phases.start('ResolveConfig');\n            return new Promise(function (resolve, reject) {\n                Fayde.LoadConfigJson(function (config, err) {\n                    if (err)\n                        console.warn('Could not load fayde configuration file.', err);\n                    resolve();\n                });\n            });\n        }\n        function getApp() {\n            perfex.phases.start('RetrieveApp');\n            return Fayde.Markup.Retrieve(url);\n        }\n        function resolveTheme(markup) {\n            perfex.phases.start('ResolveTheme');\n            var root = markup.root;\n            var themeName = root.getAttribute(\"ThemeName\") || Fayde.DEFAULT_THEME_NAME;\n            return Fayde.ThemeManager.LoadAsync(themeName);\n        }\n        function resolveApp() {\n            perfex.phases.start('ResolveApp');\n            return Fayde.Application.GetAsync(url)\n                .then(function (result) { return Fayde.Application.Current = app = result; });\n        }\n        function finishError(err) {\n            console.error(\"An error occurred retrieving the application.\", err);\n        }\n        function startApp() {\n            perfex.phases.start('StartApp');\n            app.Attach(canvas);\n            app.Start();\n            loaded();\n        }\n        function loaded() {\n            onLoaded && onLoaded(app);\n            perfex.phases.start('Running');\n        }\n        resolveConfig()\n            .then(getApp, finishError)\n            .then(resolveTheme, finishError)\n            .then(resolveApp, finishError)\n            .then(startApp, finishError);\n    }\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var jsonFile = 'fayde.json';\n    function LoadConfigJson(onComplete) {\n        require(['text!' + jsonFile], function (jsontext) { return configure(jsontext, onComplete); }, function (err) { return onComplete(err); });\n    }\n    Fayde.LoadConfigJson = LoadConfigJson;\n    function configure(jsontext, onComplete) {\n        var json;\n        try {\n            json = JSON.parse(jsontext);\n        }\n        catch (err) {\n            return onComplete(null, err);\n        }\n        if (json) {\n            libs.configure(json.libs || {});\n            themes.configure(json.themes || {});\n            debug.configure(json.debug || {});\n        }\n        onComplete(json);\n    }\n    var libs;\n    (function (libs_1) {\n        function configure(json) {\n            var libs = [];\n            for (var libName in json) {\n                libs.push(getLibConfig(libName, json[libName]));\n            }\n            for (var i = 0; i < libs.length; i++) {\n                setupLibraryConfig(libs[i]);\n            }\n        }\n        libs_1.configure = configure;\n        function getLibConfig(libName, libJson) {\n            return {\n                name: libName,\n                path: libJson.path,\n                base: libJson.base,\n                deps: libJson.deps,\n                exports: libJson.exports,\n                useMin: libJson.useMin\n            };\n        }\n        function setupLibraryConfig(lib) {\n            var uri = new Fayde.Uri(lib.name);\n            if (uri.scheme !== \"http\")\n                uri = new Fayde.Uri(\"lib://\" + lib.name);\n            var library = Fayde.TypeManager.resolveLibrary(uri.toString());\n            if (!!lib.path)\n                library.sourcePath = lib.path;\n            if (!!lib.base)\n                library.basePath = lib.base;\n            if (!!lib.exports)\n                library.exports = lib.exports;\n            if (!!lib.deps)\n                library.deps = lib.deps;\n            library.useMin = (lib.useMin === true);\n            library.$configModule();\n        }\n    })(libs || (libs = {}));\n    var themes;\n    (function (themes) {\n        function configure(json) {\n            for (var libName in json) {\n                var co = json[libName];\n                var path = co === \"none\" ? null : (co.path ? co.path : undefined);\n                Fayde.ThemeConfig.Set(libName, path);\n            }\n        }\n        themes.configure = configure;\n    })(themes || (themes = {}));\n    var debug;\n    (function (debug) {\n        function configure(json) {\n            if (toBoolean(json.warnMissingThemes))\n                Fayde.Theme.WarnMissing = true;\n            if (toBoolean(json.warnBrokenPath))\n                Fayde.Data.WarnBrokenPath = true;\n        }\n        debug.configure = configure;\n        function toBoolean(val) {\n            return val === \"true\"\n                || val === true;\n        }\n    })(debug || (debug = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Render;\n    (function (Render) {\n        Render.Debug = false;\n        Render.DebugIndent = 0;\n    })(Render = Fayde.Render || (Fayde.Render = {}));\n    var Layout;\n    (function (Layout) {\n        Layout.Debug = false;\n        Layout.DebugIndent = 0;\n    })(Layout = Fayde.Layout || (Fayde.Layout = {}));\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            Animation.Log = false;\n            Animation.LogApply = false;\n        })(Animation = Media.Animation || (Media.Animation = {}));\n        var VSM;\n        (function (VSM) {\n            VSM.Debug = false;\n        })(VSM = Media.VSM || (Media.VSM = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n    var Data;\n    (function (Data) {\n        Data.Debug = false;\n        Data.IsCounterEnabled = false;\n        Data.DataContextCounter = 0;\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n    Fayde.IsInspectionOn = false;\n})(Fayde || (Fayde = {}));\nvar NumberEx;\n(function (NumberEx) {\n    var epsilon = 1.192093E-07;\n    var adjustment = 10;\n    function AreClose(val1, val2) {\n        if (val1 === val2)\n            return true;\n        var softdiff = (Math.abs(val1) + Math.abs(val2) + adjustment) * epsilon;\n        var diff = val1 - val2;\n        return -softdiff < diff && diff < softdiff;\n    }\n    NumberEx.AreClose = AreClose;\n    function IsLessThanClose(val1, val2) {\n        return val1 > val2 || !AreClose(val1, val2);\n    }\n    NumberEx.IsLessThanClose = IsLessThanClose;\n    function IsGreaterThanClose(val1, val2) {\n        return val1 > val2 || !AreClose(val1, val2);\n    }\n    NumberEx.IsGreaterThanClose = IsGreaterThanClose;\n})(NumberEx || (NumberEx = {}));\nvar StringEx;\n(function (StringEx) {\n    function Format(format) {\n        var items = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            items[_i - 1] = arguments[_i];\n        }\n        var args = arguments;\n        return format.replace(/{(\\d+)}/g, function (match) {\n            var matches = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                matches[_i - 1] = arguments[_i];\n            }\n            var i = parseInt(matches[0]);\n            return typeof items[i] != 'undefined'\n                ? items[i]\n                : match;\n        });\n    }\n    StringEx.Format = Format;\n})(StringEx || (StringEx = {}));\nvar TimelineProfile = (function () {\n    function TimelineProfile() {\n    }\n    TimelineProfile.Parse = function (isStart, name) {\n        if (!isStart)\n            return TimelineProfile._FinishEvent(\"Parse\", name);\n        TimelineProfile._Events.push({\n            Type: \"Parse\",\n            Name: name,\n            Time: new Date().valueOf()\n        });\n    };\n    TimelineProfile.Navigate = function (isStart, name) {\n        if (!isStart)\n            return TimelineProfile._FinishEvent(\"Navigate\", name);\n        TimelineProfile._Events.push({\n            Type: \"Navigate\",\n            Name: name,\n            Time: new Date().valueOf(),\n        });\n    };\n    TimelineProfile.LayoutPass = function (isStart) {\n        if (!TimelineProfile.IsNextLayoutPassProfiled)\n            return;\n        if (!isStart) {\n            TimelineProfile.IsNextLayoutPassProfiled = false;\n            return TimelineProfile._FinishEvent(\"LayoutPass\");\n        }\n        TimelineProfile._Events.push({\n            Type: \"LayoutPass\",\n            Name: \"\",\n            Time: new Date().valueOf(),\n        });\n    };\n    TimelineProfile._FinishEvent = function (type, name) {\n        var evts = TimelineProfile._Events;\n        var len = evts.length;\n        var evt;\n        for (var i = len - 1; i >= 0; i--) {\n            evt = evts[i];\n            if (evt.Type === type && (!name || evt.Name === name)) {\n                evts.splice(i, 1);\n                break;\n            }\n            evt = null;\n        }\n        if (!evt)\n            return;\n        TimelineProfile.Groups.push({\n            Type: evt.Type,\n            Data: evt.Name,\n            Start: evt.Time - TimelineProfile.TimelineStart,\n            Length: new Date().valueOf() - evt.Time\n        });\n    };\n    TimelineProfile._Events = [];\n    TimelineProfile.Groups = [];\n    TimelineProfile.TimelineStart = 0;\n    TimelineProfile.IsNextLayoutPassProfiled = true;\n    return TimelineProfile;\n})();\nTimelineProfile.TimelineStart = new Date().valueOf();\nvar Fayde;\n(function (Fayde) {\n    var Text;\n    (function (Text) {\n        var Buffer;\n        (function (Buffer) {\n            function cut(text, start, len) {\n                if (!text)\n                    return \"\";\n                return text.slice(0, start) + text.slice(start + len);\n            }\n            Buffer.cut = cut;\n            function insert(text, index, str) {\n                if (!text)\n                    return str;\n                return [text.slice(0, index), str, text.slice(index)].join('');\n            }\n            Buffer.insert = insert;\n            function replace(text, start, len, str) {\n                if (!text)\n                    return str;\n                return [text.slice(0, start), str, text.slice(start + len)].join('');\n            }\n            Buffer.replace = replace;\n        })(Buffer = Text.Buffer || (Text.Buffer = {}));\n    })(Text = Fayde.Text || (Fayde.Text = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Text;\n    (function (Text) {\n        (function (EmitChangedType) {\n            EmitChangedType[EmitChangedType[\"NOTHING\"] = 0] = \"NOTHING\";\n            EmitChangedType[EmitChangedType[\"SELECTION\"] = 1] = \"SELECTION\";\n            EmitChangedType[EmitChangedType[\"TEXT\"] = 2] = \"TEXT\";\n        })(Text.EmitChangedType || (Text.EmitChangedType = {}));\n        var EmitChangedType = Text.EmitChangedType;\n        var Proxy = (function () {\n            function Proxy(eventsMask, maxUndoCount) {\n                this.selAnchor = 0;\n                this.selCursor = 0;\n                this.selText = \"\";\n                this.text = \"\";\n                this.maxLength = 0;\n                this.acceptsReturn = false;\n                this.$$batch = 0;\n                this.$$emit = EmitChangedType.NOTHING;\n                this.$$syncing = false;\n                this.$$eventsMask = eventsMask;\n                this.$$history = new Text.History.Tracker(maxUndoCount);\n                this.SyncSelectionStart = function (value) {\n                };\n                this.SyncSelectionLength = function (value) {\n                };\n                this.SyncText = function (value) {\n                };\n            }\n            Proxy.prototype.setAnchorCursor = function (anchor, cursor) {\n                if (this.selAnchor === anchor && this.selCursor === cursor)\n                    return false;\n                this.SyncSelectionStart(Math.min(anchor, cursor));\n                this.SyncSelectionLength(Math.abs(cursor - anchor));\n                this.selAnchor = anchor;\n                this.selCursor = cursor;\n                this.$$emit |= EmitChangedType.SELECTION;\n                return true;\n            };\n            Proxy.prototype.enterText = function (newText, isPaste) {\n                var anchor = this.selAnchor;\n                var cursor = this.selCursor;\n                var length = Math.abs(cursor - anchor);\n                var start = Math.min(anchor, cursor);\n                if ((this.maxLength > 0 && this.text.length >= this.maxLength) || (newText === '\\r') && !this.acceptsReturn)\n                    return false;\n                if (length > 0) {\n                    this.$$history.replace(anchor, cursor, this.text, start, length, newText);\n                    this.text = Text.Buffer.replace(this.text, start, length, newText);\n                }\n                else {\n                    if (!isPaste)\n                        this.$$history.enter(anchor, cursor, start, newText);\n                    else\n                        this.$$history.insert(anchor, cursor, start, newText);\n                    this.text = Text.Buffer.insert(this.text, start, newText);\n                }\n                this.$$emit |= EmitChangedType.TEXT;\n                cursor = start + newText.length;\n                anchor = cursor;\n                return this.setAnchorCursor(anchor, cursor);\n            };\n            Proxy.prototype.removeText = function (start, length) {\n                if (length <= 0)\n                    return false;\n                this.$$history.delete(this.selAnchor, this.selCursor, this.text, start, length);\n                this.text = Text.Buffer.cut(this.text, start, length);\n                this.$$emit |= EmitChangedType.TEXT;\n                return this.setAnchorCursor(start, start);\n            };\n            Proxy.prototype.paste = function (text) {\n                return this.enterText(text, true);\n            };\n            Proxy.prototype.undo = function () {\n                var action = this.$$history.undo(this);\n                if (!action)\n                    return;\n                var anchor = action.SelectionAnchor;\n                var cursor = action.SelectionCursor;\n                this.$$batch++;\n                this.SyncSelectionStart(Math.min(anchor, cursor));\n                this.SyncSelectionLength(Math.abs(cursor - anchor));\n                this.$$emit = EmitChangedType.TEXT | EmitChangedType.SELECTION;\n                this.selAnchor = anchor;\n                this.selCursor = cursor;\n                this.$$batch--;\n                this.$syncEmit();\n            };\n            Proxy.prototype.redo = function () {\n                var anchor = this.$$history.redo(this);\n                if (anchor == null)\n                    return;\n                var cursor = anchor;\n                this.$$batch++;\n                this.SyncSelectionStart(Math.min(anchor, cursor));\n                this.SyncSelectionLength(Math.abs(cursor - anchor));\n                this.$$emit = EmitChangedType.TEXT | EmitChangedType.SELECTION;\n                this.selAnchor = anchor;\n                this.selCursor = cursor;\n                this.$$batch--;\n                this.$syncEmit();\n            };\n            Proxy.prototype.begin = function () {\n                this.$$emit = EmitChangedType.NOTHING;\n                this.$$batch++;\n            };\n            Proxy.prototype.end = function () {\n                this.$$batch--;\n                this.$syncEmit();\n            };\n            Proxy.prototype.beginSelect = function (cursor) {\n                this.$$batch++;\n                this.$$emit = EmitChangedType.NOTHING;\n                this.SyncSelectionStart(cursor);\n                this.SyncSelectionLength(0);\n                this.$$batch--;\n                this.$syncEmit();\n            };\n            Proxy.prototype.adjustSelection = function (cursor) {\n                var anchor = this.selAnchor;\n                this.$$batch++;\n                this.$$emit = EmitChangedType.NOTHING;\n                this.SyncSelectionStart(Math.min(anchor, cursor));\n                this.SyncSelectionLength(Math.abs(cursor - anchor));\n                this.selAnchor = anchor;\n                this.selCursor = cursor;\n                this.$$batch--;\n                this.$syncEmit();\n            };\n            Proxy.prototype.selectAll = function () {\n                this.select(0, this.text.length);\n            };\n            Proxy.prototype.clearSelection = function (start) {\n                this.$$batch++;\n                this.SyncSelectionStart(start);\n                this.SyncSelectionLength(0);\n                this.$$batch--;\n            };\n            Proxy.prototype.select = function (start, length) {\n                start = Math.min(Math.max(0, start), this.text.length);\n                length = Math.min(Math.max(0, length), this.text.length - start);\n                this.$$batch++;\n                this.SyncSelectionStart(start);\n                this.SyncSelectionLength(length);\n                this.$$batch--;\n                this.$syncEmit();\n                return true;\n            };\n            Proxy.prototype.setSelectionStart = function (value) {\n                var length = Math.abs(this.selCursor - this.selAnchor);\n                var start = value;\n                if (start > this.text.length) {\n                    this.SyncSelectionStart(this.text.length);\n                    return;\n                }\n                if (start + length > this.text.length) {\n                    this.$$batch++;\n                    length = this.text.length - start;\n                    this.SyncSelectionLength(length);\n                    this.$$batch--;\n                }\n                var changed = (this.selAnchor !== start);\n                this.selCursor = start + length;\n                this.selAnchor = start;\n                this.$$emit |= EmitChangedType.SELECTION;\n                this.$syncEmit();\n            };\n            Proxy.prototype.setSelectionLength = function (value) {\n                var start = Math.min(this.selAnchor, this.selCursor);\n                var length = value;\n                if (start + length > this.text.length) {\n                    length = this.text.length - start;\n                    this.SyncSelectionLength(length);\n                    return;\n                }\n                var changed = (this.selCursor !== (start + length));\n                this.selCursor = start + length;\n                this.selAnchor = start;\n                this.$$emit |= EmitChangedType.SELECTION;\n                this.$syncEmit();\n            };\n            Proxy.prototype.setText = function (value) {\n                var text = value || \"\";\n                if (!this.$$syncing) {\n                    if (this.text.length > 0) {\n                        this.$$history.replace(this.selAnchor, this.selCursor, this.text, 0, this.text.length, text);\n                        this.text = Text.Buffer.replace(this.text, 0, this.text.length, text);\n                    }\n                    else {\n                        this.$$history.insert(this.selAnchor, this.selCursor, 0, text);\n                        this.text = text + this.text;\n                    }\n                    this.$$emit |= EmitChangedType.TEXT;\n                    this.clearSelection(0);\n                    this.$syncEmit(false);\n                }\n            };\n            Proxy.prototype.getSelectedText = function () {\n                var start = Math.min(this.selAnchor, this.selCursor);\n                var len = (Math.max(this.selAnchor, this.selCursor) - start);\n                if (len <= 0)\n                    return \"\";\n                return this.text.substr(start, len);\n            };\n            Proxy.prototype.$syncEmit = function (syncText) {\n                syncText = syncText !== false;\n                if (this.$$batch !== 0 || this.$$emit === EmitChangedType.NOTHING)\n                    return;\n                if (syncText && (this.$$emit & EmitChangedType.TEXT))\n                    this.$syncText();\n                this.$$emit = EmitChangedType.NOTHING;\n            };\n            Proxy.prototype.$syncText = function () {\n                this.$$syncing = true;\n                this.SyncText(this.text);\n                this.$$syncing = false;\n            };\n            return Proxy;\n        })();\n        Text.Proxy = Proxy;\n    })(Text = Fayde.Text || (Fayde.Text = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        var DoubleCollection = (function (_super) {\n            __extends(DoubleCollection, _super);\n            function DoubleCollection() {\n                _super.apply(this, arguments);\n            }\n            return DoubleCollection;\n        })(Fayde.XamlObjectCollection);\n        Shapes.DoubleCollection = DoubleCollection;\n        Fayde.CoreLibrary.add(DoubleCollection);\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/FrameworkElement.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        var ShapeUpdater = minerva.shapes.shape.ShapeUpdater;\n        var Shape = (function (_super) {\n            __extends(Shape, _super);\n            function Shape() {\n                _super.call(this);\n                Fayde.FrameworkElement.WidthProperty.Store.ListenToChanged(this, Fayde.FrameworkElement.WidthProperty, onSizeChanged, this);\n                Fayde.FrameworkElement.HeightProperty.Store.ListenToChanged(this, Fayde.FrameworkElement.HeightProperty, onSizeChanged, this);\n            }\n            Shape.prototype.CreateLayoutUpdater = function () {\n                return new ShapeUpdater();\n            };\n            Shape.FillProperty = DependencyProperty.Register(\"Fill\", function () { return Fayde.Media.Brush; }, Shape);\n            Shape.StretchProperty = DependencyProperty.Register(\"Stretch\", function () { return new Fayde.Enum(Fayde.Media.Stretch); }, Shape, Fayde.Media.Stretch.None);\n            Shape.StrokeProperty = DependencyProperty.Register(\"Stroke\", function () { return Fayde.Media.Brush; }, Shape);\n            Shape.StrokeThicknessProperty = DependencyProperty.RegisterFull(\"StrokeThickness\", function () { return Number; }, Shape, 1.0, undefined, strokeThicknessCoercer);\n            Shape.StrokeDashArrayProperty = DependencyProperty.Register(\"StrokeDashArray\", function () { return Shapes.DoubleCollection; }, Shape);\n            Shape.StrokeDashCapProperty = DependencyProperty.Register(\"StrokeDashCap\", function () { return new Fayde.Enum(Shapes.PenLineCap); }, Shape, Shapes.PenLineCap.Flat);\n            Shape.StrokeDashOffsetProperty = DependencyProperty.Register(\"StrokeDashOffset\", function () { return Number; }, Shape, 0.0);\n            Shape.StrokeEndLineCapProperty = DependencyProperty.Register(\"StrokeEndLineCap\", function () { return new Fayde.Enum(Shapes.PenLineCap); }, Shape, Shapes.PenLineCap.Flat);\n            Shape.StrokeLineJoinProperty = DependencyProperty.Register(\"StrokeLineJoin\", function () { return new Fayde.Enum(Shapes.PenLineJoin); }, Shape, Shapes.PenLineJoin.Miter);\n            Shape.StrokeMiterLimitProperty = DependencyProperty.Register(\"StrokeMiterLimit\", function () { return Number; }, Shape, 10.0);\n            Shape.StrokeStartLineCapProperty = DependencyProperty.Register(\"StrokeStartLineCap\", function () { return new Fayde.Enum(Shapes.PenLineCap); }, Shape, Shapes.PenLineCap.Flat);\n            return Shape;\n        })(Fayde.FrameworkElement);\n        Shapes.Shape = Shape;\n        Fayde.CoreLibrary.add(Shape);\n        function onSizeChanged(shape, args) {\n            var updater = shape.XamlNode.LayoutUpdater;\n            updater.invalidateMeasure();\n        }\n        function strokeThicknessCoercer(dobj, propd, value) {\n            if (value instanceof Thickness)\n                return value.left;\n            return value;\n        }\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(Shape.StretchProperty, function (upd, ov, nv) { return upd.invalidateMeasure(); }, false);\n            Fayde.UIReaction(Shape.FillProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); });\n            Fayde.UIReaction(Shape.StrokeProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); });\n            Fayde.UIReaction(Shape.StrokeThicknessProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); }, false);\n            Fayde.UIReaction(Shape.StrokeDashArrayProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); });\n            Fayde.UIReaction(Shape.StrokeDashCapProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); }, false);\n            Fayde.UIReaction(Shape.StrokeDashOffsetProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); }, false);\n            Fayde.UIReaction(Shape.StrokeEndLineCapProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); }, false);\n            Fayde.UIReaction(Shape.StrokeLineJoinProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); }, false);\n            Fayde.UIReaction(Shape.StrokeMiterLimitProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); }, false);\n            Fayde.UIReaction(Shape.StrokeStartLineCapProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); }, false);\n        })(reactions || (reactions = {}));\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Shape.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        var EllipseUpdater = minerva.shapes.ellipse.EllipseUpdater;\n        var Ellipse = (function (_super) {\n            __extends(Ellipse, _super);\n            function Ellipse() {\n                _super.call(this);\n                this.Stretch = Fayde.Media.Stretch.Fill;\n            }\n            Ellipse.prototype.CreateLayoutUpdater = function () {\n                return new EllipseUpdater();\n            };\n            return Ellipse;\n        })(Shapes.Shape);\n        Shapes.Ellipse = Ellipse;\n        Fayde.CoreLibrary.add(Ellipse);\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Shape.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        var LineUpdater = minerva.shapes.line.LineUpdater;\n        var Line = (function (_super) {\n            __extends(Line, _super);\n            function Line() {\n                _super.apply(this, arguments);\n            }\n            Line.prototype.CreateLayoutUpdater = function () {\n                return new LineUpdater();\n            };\n            Line.X1Property = DependencyProperty.Register(\"X1\", function () { return Number; }, Line, 0.0);\n            Line.Y1Property = DependencyProperty.Register(\"Y1\", function () { return Number; }, Line, 0.0);\n            Line.X2Property = DependencyProperty.Register(\"X2\", function () { return Number; }, Line, 0.0);\n            Line.Y2Property = DependencyProperty.Register(\"Y2\", function () { return Number; }, Line, 0.0);\n            return Line;\n        })(Shapes.Shape);\n        Shapes.Line = Line;\n        Fayde.CoreLibrary.add(Line);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(Line.X1Property, function (upd, ov, nv) { return upd.invalidatePath(); }, false);\n            Fayde.UIReaction(Line.Y1Property, function (upd, ov, nv) { return upd.invalidatePath(); }, false);\n            Fayde.UIReaction(Line.X2Property, function (upd, ov, nv) { return upd.invalidatePath(); }, false);\n            Fayde.UIReaction(Line.Y2Property, function (upd, ov, nv) { return upd.invalidatePath(); }, false);\n        })(reactions || (reactions = {}));\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Shape.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        var PathUpdater = minerva.shapes.path.PathUpdater;\n        var Path = (function (_super) {\n            __extends(Path, _super);\n            function Path() {\n                _super.apply(this, arguments);\n            }\n            Path.prototype.CreateLayoutUpdater = function () { return new PathUpdater(); };\n            Path._DataCoercer = function (dobj, propd, value) {\n                if (typeof value === \"string\")\n                    return Fayde.Media.ParseGeometry(value);\n                return value;\n            };\n            Path.DataProperty = DependencyProperty.RegisterFull(\"Data\", function () { return Fayde.Media.Geometry; }, Path, undefined, undefined, Path._DataCoercer, undefined, undefined, false);\n            return Path;\n        })(Shapes.Shape);\n        Shapes.Path = Path;\n        Fayde.CoreLibrary.add(Path);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(Path.DataProperty, function (upd, ov, nv) { return upd.invalidateNaturalBounds(); });\n        })(reactions || (reactions = {}));\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        var PointCollection = (function () {\n            function PointCollection() {\n                this._ht = [];\n            }\n            Object.defineProperty(PointCollection.prototype, \"Count\", {\n                get: function () {\n                    return this._ht.length;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            PointCollection.FromData = function (data) {\n                var pc = new PointCollection();\n                pc._ht = pc._ht.concat(Fayde.Media.ParseShapePoints(data));\n                return pc;\n            };\n            PointCollection.FromArray = function (data) {\n                var pc = new PointCollection();\n                pc._ht = pc._ht.concat(data);\n                return pc;\n            };\n            PointCollection.prototype.GetValueAt = function (index) {\n                return this._ht[index];\n            };\n            PointCollection.prototype.SetValueAt = function (index, value) {\n                if (index < 0 || index >= this._ht.length)\n                    return false;\n                var removed = this._ht[index];\n                var added = value;\n                this._ht[index] = added;\n                Fayde.Incite(this);\n            };\n            PointCollection.prototype.Add = function (value) {\n                this._ht.push(value);\n                Fayde.Incite(this);\n            };\n            PointCollection.prototype.AddRange = function (points) {\n                this._ht.push.apply(this._ht, points);\n                Fayde.Incite(this);\n            };\n            PointCollection.prototype.Insert = function (index, value) {\n                if (index < 0)\n                    return;\n                var len = this._ht.length;\n                if (index > len)\n                    index = len;\n                this._ht.splice(index, 0, value);\n                Fayde.Incite(this);\n            };\n            PointCollection.prototype.Remove = function (value) {\n                var index = this.IndexOf(value);\n                if (index === -1)\n                    return false;\n                this.RemoveAt(index);\n                Fayde.Incite(this);\n                return true;\n            };\n            PointCollection.prototype.RemoveAt = function (index) {\n                if (index < 0 || index >= this._ht.length)\n                    return;\n                var value = this._ht.splice(index, 1)[0];\n                Fayde.Incite(this);\n            };\n            PointCollection.prototype.Clear = function () {\n                this._ht = [];\n                Fayde.Incite(this);\n            };\n            PointCollection.prototype.IndexOf = function (value) {\n                var count = this._ht.length;\n                for (var i = 0; i < count; i++) {\n                    if (nullstone.equals(value, this._ht[i]))\n                        return i;\n                }\n                return -1;\n            };\n            PointCollection.prototype.Contains = function (value) {\n                return this.IndexOf(value) > -1;\n            };\n            PointCollection.prototype.getEnumerator = function (reverse) {\n                return nullstone.IEnumerator_.fromArray(this._ht, reverse);\n            };\n            return PointCollection;\n        })();\n        Shapes.PointCollection = PointCollection;\n        Fayde.CoreLibrary.add(PointCollection);\n        nullstone.ICollection_.mark(PointCollection);\n        nullstone.registerTypeConverter(PointCollection, function (val) {\n            var pc = new PointCollection();\n            pc.AddRange(Fayde.Media.ParseShapePoints(val));\n            return pc;\n        });\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Shape.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        var PolygonUpdater = minerva.shapes.polygon.PolygonUpdater;\n        var Polygon = (function (_super) {\n            __extends(Polygon, _super);\n            function Polygon() {\n                _super.call(this);\n                this.Points = new Shapes.PointCollection();\n            }\n            Polygon.prototype.CreateLayoutUpdater = function () {\n                return new PolygonUpdater();\n            };\n            Polygon._PointsCoercer = function (dobj, propd, value) {\n                if (typeof value === \"string\")\n                    value = Shapes.PointCollection.FromData(value);\n                if (value instanceof Array)\n                    value = Shapes.PointCollection.FromArray(value);\n                return value;\n            };\n            Polygon.FillRuleProperty = DependencyProperty.RegisterCore(\"FillRule\", function () { return new Fayde.Enum(Shapes.FillRule); }, Polygon, Shapes.FillRule.EvenOdd);\n            Polygon.PointsProperty = DependencyProperty.RegisterFull(\"Points\", function () { return Shapes.PointCollection; }, Polygon, undefined, undefined, Polygon._PointsCoercer);\n            return Polygon;\n        })(Shapes.Shape);\n        Shapes.Polygon = Polygon;\n        Fayde.CoreLibrary.add(Polygon);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(Polygon.FillRuleProperty, function (upd, ov, nv) { return upd.invalidateFillRule(); }, false);\n            Fayde.UIReaction(Polygon.PointsProperty, function (upd, ov, nv) {\n                upd.assets.points = nv._ht;\n                upd.invalidatePath();\n            }, true, false);\n        })(reactions || (reactions = {}));\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Shape.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        var PolylineUpdater = minerva.shapes.polyline.PolylineUpdater;\n        var Polyline = (function (_super) {\n            __extends(Polyline, _super);\n            function Polyline() {\n                _super.call(this);\n                this.Points = new Shapes.PointCollection();\n            }\n            Polyline.prototype.CreateLayoutUpdater = function () {\n                return new PolylineUpdater();\n            };\n            Polyline._PointsCoercer = function (d, propd, value) {\n                if (typeof value === \"string\")\n                    value = Shapes.PointCollection.FromData(value);\n                if (value instanceof Array)\n                    value = Shapes.PointCollection.FromArray(value);\n                return value;\n            };\n            Polyline.FillRuleProperty = DependencyProperty.RegisterCore(\"FillRule\", function () { return new Fayde.Enum(Shapes.FillRule); }, Polyline, Shapes.FillRule.EvenOdd);\n            Polyline.PointsProperty = DependencyProperty.RegisterFull(\"Points\", function () { return Shapes.PointCollection; }, Polyline, undefined, undefined, Polyline._PointsCoercer);\n            return Polyline;\n        })(Shapes.Shape);\n        Shapes.Polyline = Polyline;\n        Fayde.CoreLibrary.add(Polyline);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(Polyline.FillRuleProperty, function (upd, ov, nv) { return upd.invalidateFillRule(); }, false);\n            Fayde.UIReaction(Polyline.PointsProperty, function (upd, ov, nv) {\n                upd.assets.points = nv._ht;\n                upd.invalidatePath();\n            }, true, false);\n        })(reactions || (reactions = {}));\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Shape.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Shapes;\n    (function (Shapes) {\n        var RectangleUpdater = minerva.shapes.rectangle.RectangleUpdater;\n        var Rectangle = (function (_super) {\n            __extends(Rectangle, _super);\n            function Rectangle() {\n                _super.call(this);\n                this.Stretch = Fayde.Media.Stretch.Fill;\n            }\n            Rectangle.prototype.CreateLayoutUpdater = function () {\n                return new RectangleUpdater();\n            };\n            Rectangle.RadiusXProperty = DependencyProperty.Register(\"RadiusX\", function () { return Number; }, Rectangle, 0.0);\n            Rectangle.RadiusYProperty = DependencyProperty.Register(\"RadiusY\", function () { return Number; }, Rectangle, 0.0);\n            return Rectangle;\n        })(Shapes.Shape);\n        Shapes.Rectangle = Rectangle;\n        Fayde.CoreLibrary.add(Rectangle);\n        var reactions;\n        (function (reactions) {\n            Fayde.UIReaction(Rectangle.RadiusXProperty, function (upd, ov, nv) { return upd.invalidate(); }, false);\n            Fayde.UIReaction(Rectangle.RadiusYProperty, function (upd, ov, nv) { return upd.invalidate(); }, false);\n        })(reactions || (reactions = {}));\n    })(Shapes = Fayde.Shapes || (Fayde.Shapes = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Validation;\n    (function (Validation) {\n        function Emit(fe, binding, oldError, error) {\n            if (oldError && error) {\n                Validation.AddError(fe, error);\n                Validation.RemoveError(fe, oldError);\n                if (binding.NotifyOnValidationError) {\n                    raiseBindingValidationError(fe, new Validation.ValidationErrorEventArgs(Validation.ValidationErrorEventAction.Removed, oldError));\n                    raiseBindingValidationError(fe, new Validation.ValidationErrorEventArgs(Validation.ValidationErrorEventAction.Added, error));\n                }\n            }\n            else if (oldError) {\n                Validation.RemoveError(fe, oldError);\n                if (binding.NotifyOnValidationError)\n                    raiseBindingValidationError(fe, new Validation.ValidationErrorEventArgs(Validation.ValidationErrorEventAction.Removed, oldError));\n            }\n            else if (error) {\n                Validation.AddError(fe, error);\n                if (binding.NotifyOnValidationError)\n                    raiseBindingValidationError(fe, new Validation.ValidationErrorEventArgs(Validation.ValidationErrorEventAction.Added, error));\n            }\n        }\n        Validation.Emit = Emit;\n        function raiseBindingValidationError(fe, args) {\n            args.OriginalSource = fe;\n            for (var cur = fe; cur && !args.Handled; cur = Fayde.VisualTreeHelper.GetParent(cur)) {\n                if (cur instanceof Fayde.FrameworkElement)\n                    cur.OnBindingValidationError(args);\n            }\n        }\n    })(Validation = Fayde.Validation || (Fayde.Validation = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Collections/ObservableCollection\" />\n/// <reference path=\"../Collections/ReadOnlyObservableCollection\" />\nvar Fayde;\n(function (Fayde) {\n    var Validation;\n    (function (Validation_1) {\n        var ObservableCollection = Fayde.Collections.ObservableCollection;\n        var ReadOnlyObservableCollection = Fayde.Collections.ReadOnlyObservableCollection;\n        var Validation = (function (_super) {\n            __extends(Validation, _super);\n            function Validation() {\n                _super.apply(this, arguments);\n            }\n            return Validation;\n        })(Fayde.DependencyObject);\n        Fayde.CoreLibrary.add(Validation, \"Validation\");\n        Validation_1.HasErrorProperty = DependencyProperty.RegisterAttached(\"HasError\", function () { return Boolean; }, Validation);\n        Validation_1.ErrorsProperty = DependencyProperty.RegisterAttached(\"Errors\", function () { return ReadOnlyObservableCollection; }, Validation);\n        var ErrorsCoreProperty = DependencyProperty.RegisterAttached(\"ErrorsCore\", function () { return ObservableCollection; }, Validation);\n        function GetErrorsCore(dobj) {\n            if (!dobj)\n                throw new ArgumentNullException(\"element\");\n            var result = dobj.GetValue(ErrorsCoreProperty);\n            if (result == null) {\n                result = new ObservableCollection();\n                dobj.SetValue(ErrorsCoreProperty, result);\n            }\n            return result;\n        }\n        function GetErrors(dobj) {\n            if (!dobj)\n                throw new ArgumentNullException(\"element\");\n            var result = dobj.GetValue(Validation_1.ErrorsProperty);\n            if (result == null) {\n                result = new ReadOnlyObservableCollection(GetErrorsCore(dobj));\n                dobj.SetValue(Validation_1.ErrorsProperty, result);\n            }\n            return result;\n        }\n        Validation_1.GetErrors = GetErrors;\n        function GetHasError(dobj) {\n            if (dobj == null)\n                throw new ArgumentNullException(\"element\");\n            return dobj.GetValue(Validation_1.HasErrorProperty) === true;\n        }\n        Validation_1.GetHasError = GetHasError;\n        function SetHasError(dobj, value) {\n            dobj.SetValue(Validation_1.HasErrorProperty, value === true);\n        }\n        function AddError(element, error) {\n            var errors = GetErrorsCore(element);\n            GetErrors(element);\n            errors.Add(error);\n            if (errors.Count === 1)\n                SetHasError(element, true);\n            if (element instanceof Fayde.Controls.Control)\n                element.UpdateValidationState(false);\n        }\n        Validation_1.AddError = AddError;\n        function RemoveError(element, error) {\n            var errors = GetErrorsCore(element);\n            GetErrors(element);\n            if (errors.Remove(error)) {\n                if (errors.Count === 0) {\n                    SetHasError(element, false);\n                    if (element instanceof Fayde.Controls.Control)\n                        element.UpdateValidationState(true);\n                }\n            }\n        }\n        Validation_1.RemoveError = RemoveError;\n    })(Validation = Fayde.Validation || (Fayde.Validation = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Validation;\n    (function (Validation) {\n        var ValidationError = (function () {\n            function ValidationError(content, exception, propertyName) {\n                this.ErrorContent = content;\n                this.Exception = exception;\n                this.PropertyName = propertyName;\n                if (this.Exception instanceof Exception)\n                    this.ErrorContent = this.ErrorContent || exception.Message;\n                if (this.Exception instanceof Error)\n                    this.ErrorContent = this.ErrorContent || exception.message;\n                Object.freeze(this);\n            }\n            return ValidationError;\n        })();\n        Validation.ValidationError = ValidationError;\n    })(Validation = Fayde.Validation || (Fayde.Validation = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Validation;\n    (function (Validation) {\n        (function (ValidationErrorEventAction) {\n            ValidationErrorEventAction[ValidationErrorEventAction[\"Added\"] = 0] = \"Added\";\n            ValidationErrorEventAction[ValidationErrorEventAction[\"Removed\"] = 1] = \"Removed\";\n        })(Validation.ValidationErrorEventAction || (Validation.ValidationErrorEventAction = {}));\n        var ValidationErrorEventAction = Validation.ValidationErrorEventAction;\n    })(Validation = Fayde.Validation || (Fayde.Validation = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Validation;\n    (function (Validation) {\n        var ValidationErrorEventArgs = (function (_super) {\n            __extends(ValidationErrorEventArgs, _super);\n            function ValidationErrorEventArgs(action, error) {\n                _super.call(this);\n                Object.defineProperties(this, {\n                    \"Action\": {\n                        value: action,\n                        writable: false\n                    },\n                    \"Error\": {\n                        value: error,\n                        writable: false\n                    }\n                });\n            }\n            return ValidationErrorEventArgs;\n        })(Fayde.RoutedEventArgs);\n        Validation.ValidationErrorEventArgs = ValidationErrorEventArgs;\n    })(Validation = Fayde.Validation || (Fayde.Validation = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Internal;\n        (function (Internal) {\n            var TextBoxCursorAdvancer = (function () {\n                function TextBoxCursorAdvancer($textOwner) {\n                    this.$textOwner = $textOwner;\n                }\n                TextBoxCursorAdvancer.prototype.CursorDown = function (cursor, isPage) {\n                    return cursor;\n                };\n                TextBoxCursorAdvancer.prototype.CursorUp = function (cursor, isPage) {\n                    return cursor;\n                };\n                TextBoxCursorAdvancer.prototype.CursorNextWord = function (cursor) {\n                    return cursor;\n                };\n                TextBoxCursorAdvancer.prototype.CursorPrevWord = function (cursor) {\n                    return cursor;\n                };\n                TextBoxCursorAdvancer.prototype.CursorNextChar = function (cursor) {\n                    var text = this.$textOwner.text;\n                    if (text && text.charAt(cursor) === '\\r' && text.charAt(cursor + 1) === '\\n')\n                        return cursor + 2;\n                    return Math.min(text.length, cursor + 1);\n                };\n                TextBoxCursorAdvancer.prototype.CursorPrevChar = function (cursor) {\n                    var text = this.$textOwner.text;\n                    if (cursor >= 2 && text && text.charAt(cursor - 2) === '\\r' && text.charAt(cursor - 1) === '\\n')\n                        return cursor - 2;\n                    return Math.max(0, cursor - 1);\n                };\n                TextBoxCursorAdvancer.prototype.CursorLineBegin = function (cursor) {\n                    var text = this.$textOwner.text;\n                    var r = text.lastIndexOf(\"\\r\", cursor);\n                    var n = text.lastIndexOf(\"\\n\", cursor);\n                    return Math.max(r, n, 0);\n                };\n                TextBoxCursorAdvancer.prototype.CursorLineEnd = function (cursor) {\n                    var text = this.$textOwner.text;\n                    var len = text.length;\n                    var r = text.indexOf(\"\\r\", cursor);\n                    if (r < 0)\n                        r = len;\n                    var n = text.indexOf(\"\\n\", cursor);\n                    if (n < 0)\n                        n = len;\n                    return Math.min(r, n);\n                };\n                TextBoxCursorAdvancer.prototype.CursorBegin = function (cursor) {\n                    return 0;\n                };\n                TextBoxCursorAdvancer.prototype.CursorEnd = function (cursor) {\n                    return this.$textOwner.text.length;\n                };\n                return TextBoxCursorAdvancer;\n            })();\n            Internal.TextBoxCursorAdvancer = TextBoxCursorAdvancer;\n            var PasswordBoxCursorAdvancer = (function () {\n                function PasswordBoxCursorAdvancer($textOwner) {\n                    this.$textOwner = $textOwner;\n                }\n                PasswordBoxCursorAdvancer.prototype.CursorDown = function (cursor, isPage) {\n                    return this.CursorEnd(cursor);\n                };\n                PasswordBoxCursorAdvancer.prototype.CursorUp = function (cursor, isPage) {\n                    return this.CursorBegin(cursor);\n                };\n                PasswordBoxCursorAdvancer.prototype.CursorNextWord = function (cursor) {\n                    return this.CursorEnd(cursor);\n                };\n                PasswordBoxCursorAdvancer.prototype.CursorPrevWord = function (cursor) {\n                    return this.CursorBegin(cursor);\n                };\n                PasswordBoxCursorAdvancer.prototype.CursorNextChar = function (cursor) {\n                    var text = this.$textOwner.text;\n                    if (text && text.charAt(cursor) === '\\r' && text.charAt(cursor + 1) === '\\n')\n                        return cursor + 2;\n                    return Math.min(text.length - 1, cursor + 1);\n                };\n                PasswordBoxCursorAdvancer.prototype.CursorPrevChar = function (cursor) {\n                    var text = this.$textOwner.text;\n                    if (cursor >= 2 && text && text.charAt(cursor - 2) === '\\r' && text.charAt(cursor - 1) === '\\n')\n                        return cursor - 2;\n                    return Math.max(0, cursor - 1);\n                };\n                PasswordBoxCursorAdvancer.prototype.CursorLineBegin = function (cursor) {\n                    return this.CursorBegin(cursor);\n                };\n                PasswordBoxCursorAdvancer.prototype.CursorLineEnd = function (cursor) {\n                    return this.CursorEnd(cursor);\n                };\n                PasswordBoxCursorAdvancer.prototype.CursorBegin = function (cursor) {\n                    return this.$textOwner.text.length;\n                };\n                PasswordBoxCursorAdvancer.prototype.CursorEnd = function (cursor) {\n                    return 0;\n                };\n                return PasswordBoxCursorAdvancer;\n            })();\n            Internal.PasswordBoxCursorAdvancer = PasswordBoxCursorAdvancer;\n        })(Internal = Controls.Internal || (Controls.Internal = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Internal;\n        (function (Internal) {\n            var ItemContainersManager = (function () {\n                function ItemContainersManager(Owner) {\n                    this.Owner = Owner;\n                    this._Items = [];\n                    this._Containers = [];\n                    this._Cache = [];\n                }\n                Object.defineProperty(ItemContainersManager.prototype, \"IsRecycling\", {\n                    get: function () {\n                        var dobj = this.Owner;\n                        if (dobj instanceof Fayde.DependencyObject)\n                            return Controls.VirtualizingPanel.GetVirtualizationMode(dobj) === Controls.VirtualizationMode.Recycling;\n                        return false;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                ItemContainersManager.prototype.IndexFromContainer = function (container) { return this._Containers.indexOf(container); };\n                ItemContainersManager.prototype.ContainerFromIndex = function (index) { return this._Containers[index]; };\n                ItemContainersManager.prototype.ItemFromContainer = function (container) {\n                    var index = this._Containers.indexOf(container);\n                    if (index < 0)\n                        return null;\n                    return this._Items[index];\n                };\n                ItemContainersManager.prototype.ContainerFromItem = function (item) {\n                    if (item == null)\n                        return null;\n                    var index = this._Items.indexOf(item);\n                    if (index < 0)\n                        return null;\n                    return this._Containers[index];\n                };\n                ItemContainersManager.prototype.OnItemsAdded = function (index, newItems) {\n                    var items = this._Items;\n                    var containers = this._Containers;\n                    for (var i = 0, len = newItems.length; i < len; i++) {\n                        items.splice(index + i, 0, newItems[i]);\n                        containers.splice(index + i, 0, null);\n                    }\n                };\n                ItemContainersManager.prototype.OnItemsRemoved = function (index, oldItems) {\n                    this.DisposeContainers(index, oldItems.length);\n                    this._Items.splice(index, oldItems.length);\n                    this._Containers.splice(index, oldItems.length);\n                };\n                ItemContainersManager.prototype.DisposeContainers = function (index, count) {\n                    var containers = this._Containers;\n                    var items = this._Items;\n                    if (index == null)\n                        index = 0;\n                    if (count == null)\n                        count = containers.length;\n                    if (this.IsRecycling) {\n                        for (var i = 0, cache = this._Cache, recycling = containers.slice(index, index + count), len = recycling.length; i < len; i++) {\n                            var container = recycling[i];\n                            if (container)\n                                cache.push(container);\n                        }\n                    }\n                    var disposed = [];\n                    var ic = this.Owner;\n                    for (var i = index; i < index + count; i++) {\n                        var container = containers[i];\n                        if (!container)\n                            continue;\n                        disposed.push(container);\n                        var item = items[i];\n                        ic.ClearContainerForItem(container, item);\n                        containers[i] = null;\n                    }\n                    return disposed;\n                };\n                ItemContainersManager.prototype.CreateGenerator = function (index, count) {\n                    var generator = {\n                        IsCurrentNew: false,\n                        Current: undefined,\n                        CurrentItem: undefined,\n                        CurrentIndex: index - 1,\n                        GenerateIndex: -1,\n                        Generate: function () { return false; }\n                    };\n                    var ic = this.Owner;\n                    var icm = this;\n                    var containers = this._Containers;\n                    var items = this._Items;\n                    var cache = this._Cache;\n                    generator.Generate = function () {\n                        generator.GenerateIndex++;\n                        generator.CurrentIndex++;\n                        generator.IsCurrentNew = false;\n                        if (generator.CurrentIndex < 0 || generator.GenerateIndex >= count || generator.CurrentIndex >= containers.length) {\n                            generator.Current = undefined;\n                            generator.CurrentItem = undefined;\n                            return false;\n                        }\n                        generator.CurrentItem = items[generator.CurrentIndex];\n                        if ((generator.Current = containers[generator.CurrentIndex]) == null) {\n                            if (ic.IsItemItsOwnContainer(generator.CurrentItem)) {\n                                if (generator.CurrentItem instanceof Fayde.UIElement)\n                                    generator.Current = generator.CurrentItem;\n                                generator.IsCurrentNew = true;\n                            }\n                            else if (cache.length > 0) {\n                                generator.Current = cache.pop();\n                                generator.IsCurrentNew = true;\n                            }\n                            else {\n                                generator.Current = ic.GetContainerForItem();\n                                generator.IsCurrentNew = true;\n                            }\n                            containers[generator.CurrentIndex] = generator.Current;\n                        }\n                        return true;\n                    };\n                    return generator;\n                };\n                ItemContainersManager.prototype.GetEnumerator = function (start, count) {\n                    var carr = this._Containers;\n                    var iarr = this._Items;\n                    var index = (start || 0) - 1;\n                    var len = count == null ? carr.length : count;\n                    var i = 0;\n                    var e = { moveNext: undefined, current: undefined, CurrentItem: undefined, CurrentIndex: -1 };\n                    e.moveNext = function () {\n                        i++;\n                        index++;\n                        e.CurrentIndex = index;\n                        if (i > len || index >= carr.length) {\n                            e.current = undefined;\n                            e.CurrentItem = undefined;\n                            return false;\n                        }\n                        e.current = carr[index];\n                        e.CurrentItem = iarr[index];\n                        return true;\n                    };\n                    return e;\n                };\n                return ItemContainersManager;\n            })();\n            Internal.ItemContainersManager = ItemContainersManager;\n        })(Internal = Controls.Internal || (Controls.Internal = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Internal;\n        (function (Internal) {\n            var RangeCoercer = (function () {\n                function RangeCoercer(Range, OnCoerceMaximum, OnCoerceValue) {\n                    this.Range = Range;\n                    this.OnCoerceMaximum = OnCoerceMaximum;\n                    this.OnCoerceValue = OnCoerceValue;\n                    this.InitialMax = 1;\n                    this.InitialVal = 0;\n                    this.RequestedMax = 1;\n                    this.RequestedVal = 0;\n                    this.PreCoercedMax = 1;\n                    this.PreCoercedVal = 0;\n                    this.CoerceDepth = 0;\n                    this.PreCoercedMax = this.RequestedMax = this.InitialMax = Range.Maximum;\n                    this.PreCoercedVal = this.RequestedVal = this.InitialVal = Range.Value;\n                }\n                Object.defineProperty(RangeCoercer.prototype, \"Minimum\", {\n                    get: function () { return this.Range.Minimum; },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(RangeCoercer.prototype, \"Maximum\", {\n                    get: function () { return this.Range.Maximum; },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(RangeCoercer.prototype, \"Value\", {\n                    get: function () { return this.Range.Value; },\n                    enumerable: true,\n                    configurable: true\n                });\n                RangeCoercer.prototype.OnMinimumChanged = function (oldMinimum, newMinimum) {\n                    if (this.CoerceDepth === 0) {\n                        this.InitialMax = this.Maximum;\n                        this.InitialVal = this.Value;\n                    }\n                    this.CoerceDepth++;\n                    this.CoerceMaximum();\n                    this.CoerceValue();\n                    this.CoerceDepth--;\n                    if (this.CoerceDepth > 0)\n                        return;\n                    this.Range.OnMinimumChanged(oldMinimum, newMinimum);\n                    var max = this.Maximum;\n                    if (!NumberEx.AreClose(this.InitialMax, max))\n                        this.Range.OnMaximumChanged(this.InitialMax, max);\n                    var val = this.Value;\n                    if (!NumberEx.AreClose(this.InitialVal, val))\n                        this.Range.OnValueChanged(this.InitialVal, val);\n                };\n                RangeCoercer.prototype.OnMaximumChanged = function (oldMaximum, newMaximum) {\n                    if (this.CoerceDepth === 0) {\n                        this.RequestedMax = newMaximum;\n                        this.InitialMax = oldMaximum;\n                        this.InitialVal = this.Value;\n                    }\n                    this.CoerceDepth++;\n                    this.CoerceMaximum();\n                    this.CoerceValue();\n                    this.CoerceDepth--;\n                    if (this.CoerceDepth !== 0)\n                        return;\n                    this.PreCoercedMax = newMaximum;\n                    var max = this.Maximum;\n                    if (!NumberEx.AreClose(this.InitialMax, max))\n                        this.Range.OnMaximumChanged(this.InitialMax, max);\n                    var val = this.Value;\n                    if (!NumberEx.AreClose(this.InitialVal, val))\n                        this.Range.OnValueChanged(this.InitialVal, val);\n                };\n                RangeCoercer.prototype.OnValueChanged = function (oldValue, newValue) {\n                    if (this.CoerceDepth === 0) {\n                        this.RequestedVal = newValue;\n                        this.InitialVal = oldValue;\n                    }\n                    this.CoerceDepth++;\n                    this.CoerceValue();\n                    this.CoerceDepth--;\n                    if (this.CoerceDepth !== 0)\n                        return;\n                    this.PreCoercedVal = newValue;\n                    var val = this.Value;\n                    if (!NumberEx.AreClose(this.InitialVal, val))\n                        this.Range.OnValueChanged(this.InitialVal, val);\n                };\n                RangeCoercer.prototype.CoerceMaximum = function () {\n                    var min = this.Minimum;\n                    var max = this.Maximum;\n                    if (!NumberEx.AreClose(this.RequestedMax, max) && this.RequestedMax >= min)\n                        this.OnCoerceMaximum(this.RequestedMax);\n                    else if (max < min)\n                        this.OnCoerceMaximum(min);\n                };\n                RangeCoercer.prototype.CoerceValue = function () {\n                    var min = this.Minimum;\n                    var max = this.Maximum;\n                    var val = this.Value;\n                    if (!NumberEx.AreClose(this.RequestedVal, val) && this.RequestedVal >= min && this.RequestedVal <= max)\n                        this.OnCoerceValue(this.RequestedVal);\n                    else if (val < min)\n                        this.OnCoerceValue(min);\n                    else if (val > max)\n                        this.OnCoerceValue(max);\n                };\n                return RangeCoercer;\n            })();\n            Internal.RangeCoercer = RangeCoercer;\n        })(Internal = Controls.Internal || (Controls.Internal = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Internal;\n        (function (Internal) {\n            var TextBoxContentProxy = (function () {\n                function TextBoxContentProxy() {\n                    this.$$element = null;\n                }\n                TextBoxContentProxy.prototype.setElement = function (fe, view) {\n                    this.$$element = fe;\n                    if (!fe)\n                        return;\n                    if (fe instanceof Controls.ContentPresenter) {\n                        fe.SetValue(Controls.ContentPresenter.ContentProperty, view);\n                    }\n                    else if (fe instanceof Controls.ContentControl) {\n                        fe.SetValue(Controls.ContentControl.ContentProperty, view);\n                    }\n                    else if (fe instanceof Controls.Border) {\n                        fe.SetValue(Controls.Border.ChildProperty, view);\n                    }\n                    else if (fe instanceof Controls.Panel) {\n                        fe.Children.Add(view);\n                    }\n                    else {\n                        console.warn(\"TextBox does not have a valid content element.\");\n                    }\n                };\n                TextBoxContentProxy.prototype.setHorizontalScrollBar = function (sbvis) {\n                    var ce = this.$$element;\n                    if (!ce)\n                        return;\n                    var ceType = ce.constructor;\n                    var propd = DependencyProperty.GetDependencyProperty(ceType, \"HorizontalScrollBarVisibility\", true);\n                    if (!propd)\n                        return;\n                    ce.SetValueInternal(propd, sbvis);\n                };\n                TextBoxContentProxy.prototype.setVerticalScrollBar = function (sbvis) {\n                    var ce = this.$$element;\n                    if (!ce)\n                        return;\n                    var ceType = ce.constructor;\n                    var propd = DependencyProperty.GetDependencyProperty(ceType, \"VerticalScrollBarVisibility\", true);\n                    if (!propd)\n                        return;\n                    ce.SetValueInternal(propd, sbvis);\n                };\n                return TextBoxContentProxy;\n            })();\n            Internal.TextBoxContentProxy = TextBoxContentProxy;\n        })(Internal = Controls.Internal || (Controls.Internal = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/FrameworkElement.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Internal;\n        (function (Internal) {\n            var TextBoxViewUpdater = minerva.controls.textboxview.TextBoxViewUpdater;\n            var TextBoxViewNode = (function (_super) {\n                __extends(TextBoxViewNode, _super);\n                function TextBoxViewNode() {\n                    _super.apply(this, arguments);\n                }\n                return TextBoxViewNode;\n            })(Fayde.FENode);\n            Internal.TextBoxViewNode = TextBoxViewNode;\n            var TextBoxView = (function (_super) {\n                __extends(TextBoxView, _super);\n                function TextBoxView() {\n                    _super.call(this);\n                    this._AutoRun = new Fayde.Documents.Run();\n                    this.XamlNode.LayoutUpdater.tree.onTextAttached(this._AutoRun.TextUpdater);\n                    Fayde.ReactTo(this._AutoRun, this, this._InlineChanged);\n                }\n                TextBoxView.prototype.CreateLayoutUpdater = function () {\n                    return new TextBoxViewUpdater();\n                };\n                TextBoxView.prototype._InlineChanged = function (obj) {\n                    var updater = this.XamlNode.LayoutUpdater;\n                    switch (obj.type) {\n                        case 'font':\n                            updater.invalidateFont(obj.full);\n                            break;\n                        case 'text':\n                            updater.invalidateTextMetrics();\n                            break;\n                    }\n                };\n                TextBoxView.prototype.setFontProperty = function (propd, value) {\n                    this._AutoRun.SetValue(propd, value);\n                };\n                TextBoxView.prototype.setFontAttr = function (attrName, value) {\n                    var runUpdater = this._AutoRun;\n                    var tu = runUpdater.TextUpdater;\n                    tu.assets[attrName] = value;\n                };\n                TextBoxView.prototype.setCaretBrush = function (value) {\n                    var updater = this.XamlNode.LayoutUpdater;\n                    updater.assets.caretBrush = value;\n                    updater.invalidateCaret();\n                };\n                TextBoxView.prototype.setIsFocused = function (isFocused) {\n                    var updater = this.XamlNode.LayoutUpdater;\n                    if (updater.assets.isFocused === isFocused)\n                        return;\n                    updater.assets.isFocused = isFocused;\n                    updater.resetCaretBlinker(false);\n                };\n                TextBoxView.prototype.setIsReadOnly = function (isReadOnly) {\n                    var updater = this.XamlNode.LayoutUpdater;\n                    if (updater.assets.isReadOnly === isReadOnly)\n                        return;\n                    updater.assets.isReadOnly = isReadOnly;\n                    updater.resetCaretBlinker(false);\n                };\n                TextBoxView.prototype.setTextAlignment = function (textAlignment) {\n                    var lu = this.XamlNode.LayoutUpdater;\n                    if (lu.assets.textAlignment === textAlignment)\n                        return;\n                    lu.assets.textAlignment = textAlignment;\n                    lu.invalidateMeasure();\n                    lu.updateBounds(true);\n                    lu.invalidate();\n                };\n                TextBoxView.prototype.setTextWrapping = function (textWrapping) {\n                    var lu = this.XamlNode.LayoutUpdater;\n                    if (lu.assets.textWrapping === textWrapping)\n                        return;\n                    lu.assets.textWrapping = textWrapping;\n                    lu.invalidateMeasure();\n                    lu.updateBounds(true);\n                    lu.invalidate();\n                };\n                TextBoxView.prototype.setSelectionStart = function (selectionStart) {\n                    var lu = this.XamlNode.LayoutUpdater;\n                    if (lu.assets.selectionStart === selectionStart)\n                        return;\n                    lu.assets.selectionStart = selectionStart;\n                    lu.invalidateSelectionStart();\n                };\n                TextBoxView.prototype.setSelectionLength = function (selectionLength) {\n                    var lu = this.XamlNode.LayoutUpdater;\n                    if (lu.assets.selectionLength === selectionLength)\n                        return;\n                    var switching = (lu.assets.selectionLength === 0) !== (selectionLength === 0);\n                    lu.assets.selectionLength = selectionLength;\n                    lu.invalidateSelectionLength(switching);\n                };\n                TextBoxView.prototype.setText = function (text) {\n                    this._AutoRun.Text = text || \"\";\n                };\n                TextBoxView.prototype.GetCursorFromPoint = function (point) {\n                    return this.XamlNode.LayoutUpdater.getCursorFromPoint(point);\n                };\n                return TextBoxView;\n            })(Fayde.FrameworkElement);\n            Internal.TextBoxView = TextBoxView;\n            Fayde.RegisterType(TextBoxView, Fayde.XMLNSINTERNAL);\n        })(Internal = Controls.Internal || (Controls.Internal = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Internal;\n        (function (Internal) {\n            var NO_GENERATOR = {\n                current: undefined,\n                generate: function () {\n                    return false;\n                }\n            };\n            var VirtualizingPanelContainerOwner = (function () {\n                function VirtualizingPanelContainerOwner($$panel) {\n                    this.$$panel = $$panel;\n                }\n                Object.defineProperty(VirtualizingPanelContainerOwner.prototype, \"itemCount\", {\n                    get: function () {\n                        var panel = this.$$panel;\n                        var ic = panel ? panel.ItemsControl : null;\n                        return ic ? ic.Items.Count : 0;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                VirtualizingPanelContainerOwner.prototype.createGenerator = function (index, count) {\n                    var panel = this.$$panel;\n                    var ic = panel ? panel.ItemsControl : null;\n                    var icm = ic ? ic.ItemContainersManager : null;\n                    if (!icm)\n                        return NO_GENERATOR;\n                    var icgen = icm.CreateGenerator(index, count);\n                    var children = panel.Children;\n                    return {\n                        current: undefined,\n                        generate: function () {\n                            this.current = undefined;\n                            if (!icgen.Generate())\n                                return false;\n                            var child = icgen.Current;\n                            if (icgen.IsCurrentNew) {\n                                children.Insert(icgen.GenerateIndex, child);\n                                ic.PrepareContainerForItem(child, icgen.CurrentItem);\n                            }\n                            this.current = child.XamlNode.LayoutUpdater;\n                            return true;\n                        }\n                    };\n                };\n                VirtualizingPanelContainerOwner.prototype.remove = function (index, count) {\n                    var panel = this.$$panel;\n                    var ic = panel ? panel.ItemsControl : null;\n                    var icm = ic ? ic.ItemContainersManager : null;\n                    if (!icm)\n                        return;\n                    var old = icm.DisposeContainers(index, count);\n                    var children = panel.Children;\n                    for (var i = 0, len = old.length; i < len; i++) {\n                        children.Remove(old[i]);\n                    }\n                };\n                return VirtualizingPanelContainerOwner;\n            })();\n            Internal.VirtualizingPanelContainerOwner = VirtualizingPanelContainerOwner;\n        })(Internal = Controls.Internal || (Controls.Internal = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/RoutedEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var DragCompletedEventArgs = (function (_super) {\n                __extends(DragCompletedEventArgs, _super);\n                function DragCompletedEventArgs(horizontal, vertical, canceled) {\n                    _super.call(this);\n                    Object.defineProperty(this, \"HorizontalChange\", { value: horizontal, writable: false });\n                    Object.defineProperty(this, \"VerticalChange\", { value: vertical, writable: false });\n                    Object.defineProperty(this, \"Canceled\", { value: canceled, writable: false });\n                }\n                return DragCompletedEventArgs;\n            })(Fayde.RoutedEventArgs);\n            Primitives.DragCompletedEventArgs = DragCompletedEventArgs;\n            Fayde.CoreLibrary.add(DragCompletedEventArgs);\n            var DragDeltaEventArgs = (function (_super) {\n                __extends(DragDeltaEventArgs, _super);\n                function DragDeltaEventArgs(horizontal, vertical) {\n                    _super.call(this);\n                    Object.defineProperty(this, \"HorizontalChange\", { value: horizontal, writable: false });\n                    Object.defineProperty(this, \"VerticalChange\", { value: vertical, writable: false });\n                }\n                return DragDeltaEventArgs;\n            })(Fayde.RoutedEventArgs);\n            Primitives.DragDeltaEventArgs = DragDeltaEventArgs;\n            Fayde.CoreLibrary.add(DragDeltaEventArgs);\n            var DragStartedEventArgs = (function (_super) {\n                __extends(DragStartedEventArgs, _super);\n                function DragStartedEventArgs(horizontal, vertical) {\n                    _super.call(this);\n                    Object.defineProperty(this, \"HorizontalOffset\", { value: horizontal, writable: false });\n                    Object.defineProperty(this, \"VerticalOffset\", { value: vertical, writable: false });\n                }\n                return DragStartedEventArgs;\n            })(Fayde.RoutedEventArgs);\n            Primitives.DragStartedEventArgs = DragStartedEventArgs;\n            Fayde.CoreLibrary.add(DragStartedEventArgs);\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/FrameworkElement\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var OverlayUpdater = minerva.controls.overlay.OverlayUpdater;\n            var DEFAULT_MASK_BRUSH = \"#33000000\";\n            var OverlayNode = (function (_super) {\n                __extends(OverlayNode, _super);\n                function OverlayNode() {\n                    _super.apply(this, arguments);\n                    this._Layer = null;\n                    this._Mask = null;\n                }\n                OverlayNode.prototype.EnsureLayer = function () {\n                    if (!this._Layer) {\n                        this._Layer = new Controls.Panel();\n                        this.LayoutUpdater.setLayer(this._Layer.XamlNode.LayoutUpdater);\n                    }\n                    return this._Layer;\n                };\n                OverlayNode.prototype.EnsureMask = function () {\n                    if (!this._Mask) {\n                        this._Mask = new Controls.Border();\n                        this._Mask.MouseLeftButtonDown.on(this._OnMaskMouseDown, this);\n                        this.UpdateMask();\n                    }\n                    return this._Mask;\n                };\n                OverlayNode.prototype._OnMaskMouseDown = function (sender, args) {\n                    this.XObject.SetCurrentValue(Overlay.IsOpenProperty, false);\n                };\n                OverlayNode.prototype.UpdateMask = function () {\n                    var mask = this._Mask;\n                    if (mask) {\n                        var mb = this.XObject.MaskBrush;\n                        if (mb === undefined)\n                            mb = nullstone.convertAnyToType(DEFAULT_MASK_BRUSH, Fayde.Media.Brush);\n                        this._Mask.Background = mb;\n                    }\n                };\n                OverlayNode.prototype.OnIsAttachedChanged = function (newIsAttached) {\n                    _super.prototype.OnIsAttachedChanged.call(this, newIsAttached);\n                    this.RegisterInitiator(this.VisualParentNode.XObject);\n                    if (newIsAttached) {\n                        this.EnsureLayer().Children.Insert(0, this.EnsureMask());\n                    }\n                    if (!newIsAttached && this.XObject.IsOpen)\n                        this.XObject.IsOpen = false;\n                };\n                OverlayNode.prototype.RegisterInitiator = function (initiator) {\n                    if (!(initiator instanceof Fayde.UIElement))\n                        return;\n                    this.LayoutUpdater.setInitiator(initiator.XamlNode.LayoutUpdater);\n                };\n                return OverlayNode;\n            })(Fayde.FENode);\n            Primitives.OverlayNode = OverlayNode;\n            var Overlay = (function (_super) {\n                __extends(Overlay, _super);\n                function Overlay() {\n                    _super.call(this);\n                    this.Opened = new nullstone.Event();\n                    this.Closed = new nullstone.Event();\n                    this._ContentControlForUri = null;\n                    this._IgnoreClose = false;\n                    this.DefaultStyleKey = Overlay;\n                    this.InitBindings();\n                }\n                Overlay.prototype.CreateNode = function () {\n                    return new OverlayNode(this);\n                };\n                Overlay.prototype.CreateLayoutUpdater = function () {\n                    return new OverlayUpdater();\n                };\n                Overlay.prototype.InitBindings = function () {\n                    this.SetBinding(Overlay.VisualViewModelProperty, new Fayde.Data.Binding(\"OverlayDataContext\"));\n                    var binding = new Fayde.Data.Binding(\"IsOpen\");\n                    binding.Mode = Fayde.Data.BindingMode.TwoWay;\n                    this.SetBinding(Overlay.IsOpenProperty, binding);\n                    this.SetBinding(Overlay.ClosedCommandProperty, new Fayde.Data.Binding(\"ClosedCommand\"));\n                };\n                Overlay.prototype._OnVisualChanged = function (args) {\n                    if (this.VisualUri != null)\n                        throw new Error(\"Cannot set Visual if VisualUri is set.\");\n                    var layer = this.XamlNode.EnsureLayer();\n                    if (args.OldValue)\n                        layer.Children.Remove(args.OldValue);\n                    if (args.NewValue)\n                        layer.Children.Add(args.NewValue);\n                };\n                Overlay.prototype._OnVisualUriChanged = function (args) {\n                    if (this.Visual != null)\n                        throw new Error(\"Cannot set VisualUri if Visual is set.\");\n                    if (args.NewValue)\n                        this._SetVisualUri(args.NewValue);\n                    else\n                        this._ClearVisualUri();\n                };\n                Overlay.prototype._OnVisualViewModelChanged = function (args) {\n                    var cc;\n                    var visual;\n                    if (!!(cc = this._ContentControlForUri))\n                        cc.DataContext = args.NewValue;\n                    else if (!!(visual = this.Visual))\n                        visual.DataContext = args.NewValue;\n                };\n                Overlay.prototype._SetVisualUri = function (uri) {\n                    var cc = this._ContentControlForUri;\n                    if (!cc) {\n                        var layer = this.XamlNode.EnsureLayer();\n                        cc = this._ContentControlForUri = new Controls.ContentControl();\n                        cc.SetValue(OverlayOwnerProperty, this);\n                        layer.Children.Add(cc);\n                    }\n                    cc.ContentUri = uri;\n                    var vm = this.VisualViewModel;\n                    if (vm !== undefined)\n                        cc.DataContext = vm;\n                };\n                Overlay.prototype._ClearVisualUri = function () {\n                    var cc = this._ContentControlForUri;\n                    if (!cc)\n                        return;\n                    var layer = this.XamlNode.EnsureLayer();\n                    layer.Children.Remove(cc);\n                    cc.ContentUri = null;\n                    cc.DataContext = undefined;\n                };\n                Overlay.prototype._OnIsOpenChanged = function (args) {\n                    var ov = args.OldValue || false;\n                    var nv = args.NewValue || false;\n                    if (ov === nv)\n                        return;\n                    if (nv === true) {\n                        this._DoOpen();\n                    }\n                    else {\n                        this._DoClose();\n                    }\n                };\n                Overlay.prototype._DoOpen = function () {\n                    var upd = this.XamlNode.LayoutUpdater;\n                    minerva.controls.overlay.reactTo.isOpen(upd, false, true);\n                    this.Opened.raise(this, null);\n                };\n                Overlay.prototype._DoClose = function (result) {\n                    if (this._IgnoreClose)\n                        return;\n                    var upd = this.XamlNode.LayoutUpdater;\n                    minerva.controls.overlay.reactTo.isOpen(upd, true, false);\n                    if (result === undefined)\n                        result = this._GetDialogResult();\n                    var parameter = {\n                        Result: result,\n                        Data: this.VisualViewModel\n                    };\n                    var cmd = this.ClosedCommand;\n                    if (cmd && (!cmd.CanExecute || cmd.CanExecute(parameter)))\n                        cmd.Execute(parameter);\n                    this.Closed.raise(this, new Primitives.OverlayClosedEventArgs(parameter.Result, parameter.Data));\n                };\n                Overlay.prototype.Open = function () {\n                    this.IsOpen = true;\n                };\n                Overlay.prototype.Close = function (result) {\n                    if (this.IsOpen !== true)\n                        return;\n                    this._IgnoreClose = true;\n                    try {\n                        this.SetCurrentValue(Overlay.IsOpenProperty, false);\n                    }\n                    finally {\n                        this._IgnoreClose = false;\n                    }\n                    this._DoClose(result);\n                };\n                Overlay.prototype._GetDialogResult = function () {\n                    var visual = this.Visual || this._ContentControlForUri;\n                    if (!visual)\n                        return undefined;\n                    var dialog = Fayde.VisualTreeHelper.GetChildrenCount(visual) > 0 ? Fayde.VisualTreeHelper.GetChild(visual, 0) : null;\n                    return (dialog instanceof Controls.Dialog) ? dialog.DialogResult : null;\n                };\n                Overlay.FindOverlay = function (visual) {\n                    for (var en = Fayde.VisualTreeEnum.GetAncestors(visual).getEnumerator(); en.moveNext();) {\n                        var owner = en.current.GetValue(OverlayOwnerProperty);\n                        if (owner instanceof Overlay)\n                            return owner;\n                    }\n                    return undefined;\n                };\n                Overlay.VisualProperty = DependencyProperty.Register(\"Visual\", function () { return Fayde.UIElement; }, Overlay, undefined, function (d, args) { return d._OnVisualChanged(args); });\n                Overlay.VisualUriProperty = DependencyProperty.Register(\"VisualUri\", function () { return Fayde.Uri; }, Overlay, undefined, function (d, args) { return d._OnVisualUriChanged(args); });\n                Overlay.VisualViewModelProperty = DependencyProperty.Register(\"VisualViewModel\", function () { return Object; }, Overlay, undefined, function (d, args) { return d._OnVisualViewModelChanged(args); });\n                Overlay.IsOpenProperty = DependencyProperty.Register(\"IsOpen\", function () { return Boolean; }, Overlay, undefined, function (d, args) { return d._OnIsOpenChanged(args); });\n                Overlay.MaskBrushProperty = DependencyProperty.Register(\"MaskBrush\", function () { return Fayde.Media.Brush; }, Overlay);\n                Overlay.ClosedCommandProperty = DependencyProperty.Register(\"ClosedCommand\", function () { return Fayde.Input.ICommand_; }, Overlay);\n                return Overlay;\n            })(Fayde.FrameworkElement);\n            Primitives.Overlay = Overlay;\n            Fayde.CoreLibrary.add(Overlay);\n            Fayde.Markup.Content(Overlay, Overlay.VisualProperty);\n            var reactions;\n            (function (reactions) {\n                Fayde.DPReaction(Overlay.MaskBrushProperty, function (overlay, ov, nv) {\n                    overlay.XamlNode.UpdateMask();\n                });\n            })(reactions || (reactions = {}));\n            var OverlayOwnerProperty = DependencyProperty.RegisterAttached(\"OverlayOwner\", function () { return Overlay; }, Overlay);\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var OverlayClosedEventArgs = (function () {\n                function OverlayClosedEventArgs(result, data) {\n                    Object.defineProperties(this, {\n                        \"Result\": {\n                            value: result,\n                            writable: false\n                        },\n                        \"Data\": {\n                            value: data,\n                            writable: false\n                        }\n                    });\n                }\n                return OverlayClosedEventArgs;\n            })();\n            Primitives.OverlayClosedEventArgs = OverlayClosedEventArgs;\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var ScrollData = (function () {\n                function ScrollData() {\n                    this.canHorizontallyScroll = false;\n                    this.canVerticallyScroll = false;\n                    this.offsetX = 0;\n                    this.offsetY = 0;\n                    this.cachedOffsetX = 0;\n                    this.cachedOffsetY = 0;\n                    this.viewportWidth = 0;\n                    this.viewportHeight = 0;\n                    this.extentWidth = 0;\n                    this.extentHeight = 0;\n                    this.maxDesiredWidth = 0;\n                    this.maxDesiredHeight = 0;\n                    this.scrollOwner = null;\n                }\n                ScrollData.prototype.invalidate = function () {\n                    if (this.scrollOwner)\n                        this.scrollOwner.InvalidateScrollInfo();\n                };\n                return ScrollData;\n            })();\n            Primitives.ScrollData = ScrollData;\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/RoutedEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            (function (ScrollEventType) {\n                ScrollEventType[ScrollEventType[\"SmallDecrement\"] = 0] = \"SmallDecrement\";\n                ScrollEventType[ScrollEventType[\"SmallIncrement\"] = 1] = \"SmallIncrement\";\n                ScrollEventType[ScrollEventType[\"LargeDecrement\"] = 2] = \"LargeDecrement\";\n                ScrollEventType[ScrollEventType[\"LargeIncrement\"] = 3] = \"LargeIncrement\";\n                ScrollEventType[ScrollEventType[\"ThumbPosition\"] = 4] = \"ThumbPosition\";\n                ScrollEventType[ScrollEventType[\"ThumbTrack\"] = 5] = \"ThumbTrack\";\n                ScrollEventType[ScrollEventType[\"First\"] = 6] = \"First\";\n                ScrollEventType[ScrollEventType[\"Last\"] = 7] = \"Last\";\n                ScrollEventType[ScrollEventType[\"EndScroll\"] = 8] = \"EndScroll\";\n            })(Primitives.ScrollEventType || (Primitives.ScrollEventType = {}));\n            var ScrollEventType = Primitives.ScrollEventType;\n            Fayde.CoreLibrary.addEnum(ScrollEventType, \"ScrollEventType\");\n            var ScrollEventArgs = (function (_super) {\n                __extends(ScrollEventArgs, _super);\n                function ScrollEventArgs(scrollEventType, value) {\n                    _super.call(this);\n                    Object.defineProperty(this, \"ScrollEventType\", { value: scrollEventType, writable: false });\n                    Object.defineProperty(this, \"Value\", { value: value, writable: false });\n                }\n                return ScrollEventArgs;\n            })(Fayde.RoutedEventArgs);\n            Primitives.ScrollEventArgs = ScrollEventArgs;\n            Fayde.CoreLibrary.add(ScrollEventArgs);\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/RoutedEventArgs.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var SelectionChangedEventArgs = (function (_super) {\n                __extends(SelectionChangedEventArgs, _super);\n                function SelectionChangedEventArgs(oldValues, newValues) {\n                    _super.call(this);\n                    Object.defineProperty(this, \"OldValues\", { value: oldValues.slice(0), writable: false });\n                    Object.defineProperty(this, \"NewValues\", { value: newValues.slice(0), writable: false });\n                }\n                return SelectionChangedEventArgs;\n            })(Fayde.RoutedEventArgs);\n            Primitives.SelectionChangedEventArgs = SelectionChangedEventArgs;\n            Fayde.CoreLibrary.add(SelectionChangedEventArgs);\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Controls;\n    (function (Controls) {\n        var Primitives;\n        (function (Primitives) {\n            var SelectorSelection = (function () {\n                function SelectorSelection(owner) {\n                    this._SelectedItems = [];\n                    this._SelectedItem = null;\n                    this._IsUpdating = false;\n                    this._AnchorIndex = -1;\n                    this.Mode = Controls.SelectionMode.Single;\n                    this._Owner = owner;\n                    this._Owner.SelectedItems.CollectionChanged.on(this._HandleOwnerSelectionChanged, this);\n                }\n                Object.defineProperty(SelectorSelection.prototype, \"IsUpdating\", {\n                    get: function () { return this._IsUpdating; },\n                    enumerable: true,\n                    configurable: true\n                });\n                SelectorSelection.prototype._HandleOwnerSelectionChanged = function (sender, e) {\n                    if (this._IsUpdating)\n                        return;\n                    if (this.Mode === Controls.SelectionMode.Single)\n                        throw new InvalidOperationException(\"SelectedItems cannot be modified directly when in Single select mode\");\n                    try {\n                        var items = this._SelectedItems;\n                        this._IsUpdating = true;\n                        switch (e.Action) {\n                            case Fayde.Collections.CollectionChangedAction.Add:\n                                if (items.indexOf(e.NewItems[0]) < 0)\n                                    this.AddToSelected(e.NewItems[0]);\n                                break;\n                            case Fayde.Collections.CollectionChangedAction.Remove:\n                                if (items.indexOf(e.OldItems[0]) > -1)\n                                    this.RemoveFromSelected(e.OldItems[0]);\n                                break;\n                            case Fayde.Collections.CollectionChangedAction.Replace:\n                                if (items.indexOf(e.OldItems[0]) > -1)\n                                    this.RemoveFromSelected(e.OldItems[0]);\n                                if (items.indexOf(e.NewItems[0]) < 0)\n                                    this.AddToSelected(e.NewItems[0]);\n                                break;\n                            case Fayde.Collections.CollectionChangedAction.Reset:\n                                var ownerItems = this._Owner.SelectedItems;\n                                var item;\n                                var enumerator = ownerItems.getEnumerator();\n                                while (enumerator.moveNext()) {\n                                    item = enumerator.current;\n                                    if (ownerItems.Contains(item))\n                                        continue;\n                                    if (items.indexOf(item) > -1)\n                                        this.RemoveFromSelected(item);\n                                }\n                                enumerator = ownerItems.getEnumerator();\n                                while (enumerator.moveNext()) {\n                                    item = enumerator.current;\n                                    if (items.indexOf(item) < 0)\n                                        this.AddToSelected(item);\n                                }\n                                break;\n                        }\n                        this._Owner._SelectedItemsIsInvalid = true;\n                    }\n                    finally {\n                        this._IsUpdating = false;\n                    }\n                };\n                SelectorSelection.prototype.RepopulateSelectedItems = function () {\n                    if (!this._IsUpdating) {\n                        try {\n                            this._IsUpdating = true;\n                            var si = this._Owner.SelectedItems;\n                            si.Clear();\n                            si.AddRange(this._SelectedItems);\n                        }\n                        finally {\n                            this._IsUpdating = false;\n                        }\n                    }\n                };\n                SelectorSelection.prototype.ClearSelection = function (ignoreSelectedValue) {\n                    if (ignoreSelectedValue === undefined)\n                        ignoreSelectedValue = false;\n                    if (this._SelectedItems.length === 0) {\n                        this.UpdateSelectorProperties(null, -1, ignoreSelectedValue ? this._Owner.SelectedValue : null);\n                        return;\n                    }\n                    try {\n                        this._IsUpdating = true;\n                        var oldSelection = this._SelectedItems.slice(0);\n                        this._SelectedItems = [];\n                        this._SelectedItem = null;\n                        this.UpdateSelectorProperties(null, -1, ignoreSelectedValue ? this._Owner.SelectedValue : null);\n                        this._Owner._SelectedItemsIsInvalid = true;\n                        this._Owner._RaiseSelectionChanged(oldSelection, []);\n                    }\n                    finally {\n                        this._IsUpdating = false;\n                    }\n                };\n                SelectorSelection.prototype.Select = function (item) {\n                    if (!this._Owner.Items.Contains(item))\n                        return;\n                    var selIndex = this._SelectedItems.indexOf(item);\n                    try {\n                        this._IsUpdating = true;\n                        switch (this.Mode) {\n                            case Controls.SelectionMode.Single:\n                                return this._SelectSingle(item, selIndex);\n                            case Controls.SelectionMode.Extended:\n                                return this._SelectExtended(item, selIndex);\n                            case Controls.SelectionMode.Multiple:\n                                return this._SelectMultiple(item, selIndex);\n                            default:\n                                throw new NotSupportedException(\"SelectionMode \" + this.Mode + \" is not supported.\");\n                        }\n                    }\n                    finally {\n                        this._IsUpdating = false;\n                    }\n                };\n                SelectorSelection.prototype._SelectSingle = function (item, selIndex) {\n                    if (selIndex === -1)\n                        return this.ReplaceSelection(item);\n                };\n                SelectorSelection.prototype._SelectExtended = function (item, selIndex) {\n                    var itemsIndex = this._Owner.Items.IndexOf(item);\n                    if (Fayde.Input.Keyboard.HasShift()) {\n                        var items = this._Owner.Items;\n                        var aIndex = this._AnchorIndex;\n                        if (aIndex === -1)\n                            aIndex = items.IndexOf(this._SelectedItem);\n                        aIndex = Math.max(aIndex, 0);\n                        var oIndex = items.IndexOf(item);\n                        return this.SelectRange(Math.min(aIndex, oIndex), Math.max(aIndex, oIndex));\n                    }\n                    this._AnchorIndex = selIndex;\n                    if (Fayde.Input.Keyboard.HasControl()) {\n                        if (selIndex > -1)\n                            return this.RemoveFromSelected(item);\n                        return this.AddToSelected(item);\n                    }\n                    return this.ReplaceSelection(item);\n                };\n                SelectorSelection.prototype._SelectMultiple = function (item, selIndex) {\n                    return (selIndex > -1) ? this.RemoveFromSelected(item) : this.AddToSelected(item);\n                };\n                SelectorSelection.prototype.SelectRange = function (startIndex, endIndex) {\n                    var ownerItems = this._Owner.Items;\n                    var oldSelectedItems = this._SelectedItems;\n                    this._SelectedItems = ownerItems.GetRange(startIndex, endIndex);\n                    var toUnselect = except(oldSelectedItems, this._SelectedItems);\n                    var toSelect = except(this._SelectedItems, oldSelectedItems);\n                    if (this._SelectedItems.indexOf(this._SelectedItem) === -1) {\n                        this._SelectedItem = this._SelectedItems[0];\n                        this.UpdateSelectorProperties(this._SelectedItem, this._SelectedItem == null ? -1 : ownerItems.IndexOf(this._SelectedItem), this._Owner._GetValueFromItem(this._SelectedItem));\n                    }\n                    this._Owner._SelectedItemsIsInvalid = true;\n                    this._Owner._RaiseSelectionChanged(toUnselect, toSelect);\n                };\n                SelectorSelection.prototype.SelectAll = function (items) {\n                    try {\n                        this._IsUpdating = true;\n                        if (this.Mode === Controls.SelectionMode.Single)\n                            throw new NotSupportedException(\"Cannot call SelectAll when in Single select mode\");\n                        var selectedItems = this._SelectedItems;\n                        var select = except(items, selectedItems);\n                        if (select.length === 0)\n                            return;\n                        var owner = this._Owner;\n                        selectedItems.push(select);\n                        if (this._SelectedItem == null) {\n                            this._SelectedItem = select[0];\n                            this.UpdateSelectorProperties(this._SelectedItem, owner.Items.IndexOf(this._SelectedItem), owner._GetValueFromItem(this._SelectedItem));\n                        }\n                        owner._SelectedItemsIsInvalid = true;\n                        owner._RaiseSelectionChanged([], select);\n                    }\n                    finally {\n                        this._IsUpdating = false;\n                    }\n                };\n                SelectorSelection.prototype.SelectOnly = function (item) {\n                    if (this._SelectedItem === item && this._SelectedItems.length === 1)\n                        return;\n                    try {\n                        this._IsUpdating = true;\n                        this.ReplaceSelection(item);\n                    }\n                    finally {\n                        this._IsUpdating = false;\n                    }\n                };\n                SelectorSelection.prototype.Unselect = function (item) {\n                    if (this._SelectedItems.indexOf(item) < 0)\n                        return;\n                    try {\n                        this._IsUpdating = true;\n                        this.RemoveFromSelected(item);\n                    }\n                    finally {\n                        this._IsUpdating = false;\n                    }\n                };\n                SelectorSelection.prototype.AddToSelected = function (item) {\n                    this._SelectedItems.push(item);\n                    var owner = this._Owner;\n                    if (this._SelectedItems.length === 1) {\n                        this._SelectedItem = item;\n                        this.UpdateSelectorProperties(item, owner.Items.IndexOf(item), owner._GetValueFromItem(item));\n                    }\n                    owner._SelectedItemsIsInvalid = true;\n                    owner._RaiseSelectionChanged([], [item]);\n                };\n                SelectorSelection.prototype.RemoveFromSelected = function (item) {\n                    var selectedItems = this._SelectedItems;\n                    var index = selectedItems.indexOf(item);\n                    if (index > -1)\n                        selectedItems.splice(index, 1);\n                    var owner = this._Owner;\n                    if (this._SelectedItem === item) {\n                        var newItem = selectedItems[0];\n                        this._SelectedItem = newItem;\n                        this.UpdateSelectorProperties(newItem, newItem == null ? -1 : owner.Items.IndexOf(newItem), owner._GetValueFromItem(item));\n                    }\n                    owner._SelectedItemsIsInvalid = true;\n                    owner._RaiseSelectionChanged([item], []);\n                };\n                SelectorSelection.prototype.ReplaceSelection = function (item) {\n                    var owner = this._Owner;\n                    if (!this.UpdateCollectionView(item)) {\n                        this.UpdateSelectorProperties(this._SelectedItem, owner.Items.IndexOf(this._SelectedItem), owner._GetValueFromItem(this._SelectedItem));\n                        return;\n                    }\n                    var oldItems = this._SelectedItems.slice(0);\n                    var newItems = [];\n                    var itemIndex = oldItems.indexOf(item);\n                    if (itemIndex > -1) {\n                        oldItems.splice(itemIndex, 1);\n                    }\n                    else {\n                        newItems.push(item);\n                    }\n                    this._SelectedItems = [item];\n                    this._SelectedItem = item;\n                    this.UpdateSelectorProperties(item, owner.Items.IndexOf(item), owner._GetValueFromItem(item));\n                    if (newItems.length !== 0 || oldItems.length !== 0) {\n                        owner._SelectedItemsIsInvalid = true;\n                        owner._RaiseSelectionChanged(oldItems, newItems);\n                    }\n                };\n                SelectorSelection.prototype.UpdateSelectorProperties = function (item, index, value) {\n                    var owner = this._Owner;\n                    if (owner.SelectedItem !== item)\n                        owner.SelectedItem = item;\n                    if (owner.SelectedIndex !== index)\n                        owner.SelectedIndex = index;\n                    if (owner.SelectedValue !== value)\n                        owner.SelectedValue = value;\n                    this.UpdateCollectionView(item);\n                };\n                SelectorSelection.prototype.UpdateCollectionView = function (item) {\n                    var icv = Fayde.Data.ICollectionView_.as(this._Owner.ItemsSource);\n                    if (icv) {\n                        icv.MoveCurrentTo(item);\n                        return item === icv.CurrentItem;\n                    }\n                    return true;\n                };\n                return SelectorSelection;\n            })();\n            Primitives.SelectorSelection = SelectorSelection;\n            Fayde.CoreLibrary.add(SelectorSelection);\n            function except(arr1, arr2) {\n                var r = [];\n                var c;\n                for (var i = 0, len = arr1.length; i < len; i++) {\n                    c = arr1[i];\n                    if (arr2.indexOf(c) < 0)\n                        r.push(c);\n                }\n                return r;\n            }\n        })(Primitives = Controls.Primitives || (Controls.Primitives = {}));\n    })(Controls = Fayde.Controls || (Fayde.Controls = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        (function (StyleIndex) {\n            StyleIndex[StyleIndex[\"VisualTree\"] = 0] = \"VisualTree\";\n            StyleIndex[StyleIndex[\"ApplicationResources\"] = 1] = \"ApplicationResources\";\n            StyleIndex[StyleIndex[\"Theme\"] = 2] = \"Theme\";\n            StyleIndex[StyleIndex[\"Count\"] = 3] = \"Count\";\n        })(Providers.StyleIndex || (Providers.StyleIndex = {}));\n        var StyleIndex = Providers.StyleIndex;\n        (function (StyleMask) {\n            StyleMask[StyleMask[\"None\"] = 0] = \"None\";\n            StyleMask[StyleMask[\"VisualTree\"] = 1] = \"VisualTree\";\n            StyleMask[StyleMask[\"ApplicationResources\"] = 2] = \"ApplicationResources\";\n            StyleMask[StyleMask[\"Theme\"] = 4] = \"Theme\";\n            StyleMask[StyleMask[\"All\"] = 7] = \"All\";\n        })(Providers.StyleMask || (Providers.StyleMask = {}));\n        var StyleMask = Providers.StyleMask;\n        var ImplicitStyleBroker = (function () {\n            function ImplicitStyleBroker() {\n            }\n            ImplicitStyleBroker.Set = function (fe, mask, styles) {\n                if (!styles)\n                    styles = getImplicitStyles(fe, mask);\n                if (styles) {\n                    var error = new BError();\n                    var len = StyleIndex.Count;\n                    for (var i = 0; i < len; i++) {\n                        var style = styles[i];\n                        if (!style)\n                            continue;\n                        if (!style.Validate(fe, error)) {\n                            error.ThrowException();\n                            return;\n                        }\n                    }\n                }\n                ImplicitStyleBroker.SetImpl(fe, mask, styles);\n            };\n            ImplicitStyleBroker.SetImpl = function (fe, mask, styles) {\n                if (!styles)\n                    return;\n                var oldStyles = fe.XamlNode._ImplicitStyles;\n                var newStyles = [null, null, null];\n                if (oldStyles) {\n                    newStyles[StyleIndex.Theme] = oldStyles[StyleIndex.Theme];\n                    newStyles[StyleIndex.ApplicationResources] = oldStyles[StyleIndex.ApplicationResources];\n                    newStyles[StyleIndex.VisualTree] = oldStyles[StyleIndex.VisualTree];\n                }\n                if (mask & StyleMask.Theme)\n                    newStyles[StyleIndex.Theme] = styles[StyleIndex.Theme];\n                if (mask & StyleMask.ApplicationResources)\n                    newStyles[StyleIndex.ApplicationResources] = styles[StyleIndex.ApplicationResources];\n                if (mask & StyleMask.VisualTree)\n                    newStyles[StyleIndex.VisualTree] = styles[StyleIndex.VisualTree];\n                ImplicitStyleBroker.ApplyStyles(fe, mask, styles);\n            };\n            ImplicitStyleBroker.Clear = function (fe, mask) {\n                var holder = fe.XamlNode;\n                var oldStyles = holder._ImplicitStyles;\n                if (!oldStyles)\n                    return;\n                var newStyles = oldStyles.slice(0);\n                if (mask & StyleMask.Theme)\n                    newStyles[StyleIndex.Theme] = null;\n                if (mask & StyleMask.ApplicationResources)\n                    newStyles[StyleIndex.ApplicationResources] = null;\n                if (mask & StyleMask.VisualTree)\n                    newStyles[StyleIndex.VisualTree] = null;\n                ImplicitStyleBroker.ApplyStyles(fe, holder._StyleMask & ~mask, newStyles);\n            };\n            ImplicitStyleBroker.ApplyStyles = function (fe, mask, styles) {\n                var holder = fe.XamlNode;\n                var oldStyles = holder._ImplicitStyles;\n                var isChanged = !oldStyles || mask !== holder._StyleMask;\n                if (!isChanged) {\n                    for (var i = 0; i < StyleIndex.Count; i++) {\n                        if (styles[i] !== oldStyles[i]) {\n                            isChanged = true;\n                            break;\n                        }\n                    }\n                }\n                if (!isChanged)\n                    return;\n                Providers.SwapStyles(fe, Fayde.MultipleStylesWalker(oldStyles), Fayde.MultipleStylesWalker(styles), true);\n                holder._ImplicitStyles = styles;\n                holder._StyleMask = mask;\n            };\n            return ImplicitStyleBroker;\n        })();\n        Providers.ImplicitStyleBroker = ImplicitStyleBroker;\n        function getImplicitStyles(fe, mask) {\n            var styles = [];\n            if ((mask & StyleMask.Theme) != 0) {\n                styles[StyleIndex.Theme] = getThemeStyle(fe);\n            }\n            if ((mask & StyleMask.ApplicationResources) != 0) {\n                var app = Fayde.Application.Current;\n                if (app)\n                    styles[StyleIndex.ApplicationResources] = getAppResourcesStyle(app, fe);\n            }\n            if ((mask & StyleMask.VisualTree) != 0)\n                styles[StyleIndex.VisualTree] = getVisualTreeStyle(fe);\n            return styles;\n        }\n        function getThemeStyle(fe) {\n            if (fe instanceof Fayde.Controls.Control) {\n                var style = fe.GetDefaultStyle();\n                if (style)\n                    return style;\n            }\n            return Fayde.ThemeManager.FindStyle(fe.DefaultStyleKey);\n        }\n        function getAppResourcesStyle(app, fe) {\n            return app.Resources.Get(fe.DefaultStyleKey);\n        }\n        function getVisualTreeStyle(fe) {\n            var key = fe.DefaultStyleKey;\n            var cur = fe;\n            var isControl = cur instanceof Fayde.Controls.Control;\n            var curNode = fe.XamlNode;\n            var rd;\n            while (curNode) {\n                cur = curNode.XObject;\n                if (cur.TemplateOwner && !fe.TemplateOwner) {\n                    cur = cur.TemplateOwner;\n                    curNode = cur.XamlNode;\n                    continue;\n                }\n                if (!isControl && cur === fe.TemplateOwner)\n                    break;\n                rd = cur.Resources;\n                if (rd) {\n                    var style = rd.Get(key);\n                    if (style)\n                        return style;\n                }\n                curNode = curNode.VisualParentNode;\n            }\n            return undefined;\n        }\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        var LocalStyleBroker = (function () {\n            function LocalStyleBroker() {\n            }\n            LocalStyleBroker.Set = function (fe, newStyle) {\n                var holder = fe.XamlNode;\n                if (newStyle)\n                    newStyle.Seal();\n                Providers.SwapStyles(fe, Fayde.SingleStyleWalker(holder._LocalStyle), Fayde.SingleStyleWalker(newStyle), false);\n                holder._LocalStyle = newStyle;\n            };\n            return LocalStyleBroker;\n        })();\n        Providers.LocalStyleBroker = LocalStyleBroker;\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Providers;\n    (function (Providers) {\n        function SwapStyles(fe, oldWalker, newWalker, isImplicit) {\n            var arr = fe._PropertyStorage;\n            var oldSetter = oldWalker.Step();\n            var newSetter = newWalker.Step();\n            var storage;\n            var value;\n            var propd;\n            while (oldSetter || newSetter) {\n                if (oldSetter && newSetter) {\n                    switch (Fayde.Setter.Compare(oldSetter, newSetter)) {\n                        case 0:\n                            value = newSetter.ConvertedValue;\n                            propd = newSetter.Property;\n                            oldSetter = oldWalker.Step();\n                            newSetter = newWalker.Step();\n                            break;\n                        case -1:\n                            value = undefined;\n                            propd = oldSetter.Property;\n                            oldSetter = oldWalker.Step();\n                            break;\n                        case 1:\n                            value = newSetter.ConvertedValue;\n                            propd = newSetter.Property;\n                            newSetter = newWalker.Step();\n                            break;\n                    }\n                }\n                else if (newSetter) {\n                    value = newSetter.ConvertedValue;\n                    propd = newSetter.Property;\n                    newSetter = newWalker.Step();\n                }\n                else {\n                    value = undefined;\n                    propd = oldSetter.Property;\n                    oldSetter = oldWalker.Step();\n                }\n                storage = arr[propd._ID];\n                if (!storage)\n                    storage = arr[propd._ID] = propd.Store.CreateStorage(fe, propd);\n                if (isImplicit)\n                    propd.Store.SetImplicitStyle(storage, value);\n                else\n                    propd.Store.SetLocalStyleValue(storage, value);\n            }\n        }\n        Providers.SwapStyles = SwapStyles;\n    })(Providers = Fayde.Providers || (Fayde.Providers = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        var lookupNamespaces;\n        function lookupType(name) {\n            if (!lookupNamespaces) {\n                lookupNamespaces = [\n                    Fayde,\n                    Fayde.Controls,\n                    Fayde.Media,\n                    Fayde.Controls.Primitives,\n                    Fayde.Shapes,\n                    window];\n            }\n            var len = lookupNamespaces.length;\n            for (var i = 0; i < len; i++) {\n                var potentialType = lookupNamespaces[i][name];\n                if (typeof potentialType === \"function\")\n                    return potentialType;\n            }\n            return eval(name);\n        }\n        function handlePeriod(data) {\n            if (data.tickOpen)\n                return true;\n            if (data.res != null) {\n                var value = null;\n                if ((value = data.lu.GetValue(data.res)) == null)\n                    return false;\n                if (!(value instanceof Fayde.DependencyObject))\n                    return false;\n                var newLu = value;\n                if (data.promotedValues && data.promotedValues[value._ID] == null && !(value instanceof Fayde.UIElement)) {\n                    var clonedValue = Fayde.Clone(value);\n                    if (clonedValue instanceof Fayde.DependencyObject) {\n                        newLu = clonedValue;\n                        data.lu.SetCurrentValue(data.res, clonedValue);\n                        clonedValue = data.lu.GetValue(data.res);\n                        data.promotedValues[clonedValue._ID] = clonedValue;\n                    }\n                }\n                data.lu = newLu;\n            }\n            data.expressionFound = false;\n            data.prop = data.path.substr(data.index);\n            return true;\n        }\n        function handleLeftBracket(data) {\n            if (data.index >= data.end)\n                return;\n            var hasLeadingZeroes = false;\n            while (data.path.charAt(data.index) === '0') {\n                hasLeadingZeroes = true;\n                data.index++;\n            }\n            data.i = parseInt(data.path.substr(data.index), 10);\n            if (!isNaN(data.i))\n                data.index += data.i.toString().length;\n            if (isNaN(data.i) && hasLeadingZeroes)\n                data.i = 0;\n            if (data.path.charAt(data.index) !== ']' || data.path.charAt(data.index + 1) !== '.')\n                return true;\n            data.prop = data.path = data.path.substr(data.index + 2);\n            data.index = 0;\n            data.end = data.path.length;\n            var value = null;\n            if (data.expressionFound) {\n                data.expressionFound = false;\n                if ((value = data.lu.GetValue(data.res)) == null)\n                    return false;\n            }\n            if (value instanceof Fayde.XamlObjectCollection) {\n                data.collection = value;\n            }\n            else {\n                data.collection = null;\n                return false;\n            }\n            if ((value = data.collection.GetValueAt(data.i)) == null)\n                return false;\n            if (value instanceof Fayde.DependencyObject) {\n                data.lu = value;\n            }\n            else {\n                data.lu = null;\n                return false;\n            }\n            return true;\n        }\n        function handleDefault(data) {\n            var explicitType = false;\n            data.expressionFound = true;\n            var start = data.index - 1;\n            var c;\n            while (data.index < data.end) {\n                c = data.path.charAt(data.index);\n                if (!((c !== '.' || data.tickOpen) && (!data.parenOpen || c !== ')') && c !== '['))\n                    break;\n                data.index++;\n                if (c === '\\'') {\n                    data.tickOpen = !data.tickOpen;\n                    if (!data.tickOpen)\n                        break;\n                }\n            }\n            if (data.index === data.end) {\n                data.type = data.lu.constructor;\n            }\n            else {\n                c = data.path.charAt(data.index);\n                if (c === '.') {\n                    if ((data.index - start) === 11 && data.path.substr(start, 11).toLowerCase() === \"textelement\") {\n                        data.type = Fayde.Controls.TextBlock;\n                        data.explicitType = true;\n                    }\n                    else {\n                        var s = data.index;\n                        if (data.path.charAt(data.index - 1) === '\\'' && !data.tickOpen) {\n                            s = data.index - 1;\n                        }\n                        var name = data.path.slice(start, s);\n                        data.type = lookupType(name);\n                        data.explicitType = true;\n                        if (!data.type)\n                            data.type = data.lu.constructor;\n                    }\n                    data.index++;\n                    start = data.index;\n                    while (data.index < data.end) {\n                        c = data.path.charAt(data.index);\n                        if (!((!data.parenOpen || c !== ')') && (c !== '.' || data.tickOpen)))\n                            break;\n                        data.index++;\n                        if (c === '\\'') {\n                            data.tickOpen = !data.tickOpen;\n                            if (!data.tickOpen)\n                                break;\n                        }\n                    }\n                    if (data.index === start)\n                        return false;\n                }\n                else {\n                    data.type = data.lu.constructor;\n                    data.explicitType = false;\n                }\n                c = data.path.charAt(data.index);\n                if ((c !== ')' && data.parenOpen) || data.type == null)\n                    return false;\n            }\n            name = data.path.slice(start, data.index);\n            if ((data.res = DependencyProperty.GetDependencyProperty(data.type, name)) == null && data.lu)\n                data.res = DependencyProperty.GetDependencyProperty(data.lu.constructor, name);\n            if (data.res == null)\n                return false;\n            if (!data.res.IsAttached && !(data.lu instanceof data.type)) {\n                if ((data.res = DependencyProperty.GetDependencyProperty(data.lu.constructor, name)) == null)\n                    return false;\n            }\n            if (data.res.IsAttached && data.explicitType && !data.parenOpen)\n                return false;\n            return true;\n        }\n        var PropertyPath = (function () {\n            function PropertyPath(path, expandedPath) {\n                this._Propd = null;\n                this._Path = path;\n                this._ExpandedPath = expandedPath;\n            }\n            PropertyPath.CreateFromParameter = function (parameter) {\n                var p = new PropertyPath();\n                if (parameter instanceof DependencyProperty)\n                    p._Propd = parameter;\n                p._Path = null;\n                if (parameter instanceof String)\n                    p._Path = parameter;\n                return p;\n            };\n            PropertyPath.prototype.TryResolveDependencyProperty = function (refobj, promotedValues) {\n                if (this._Propd)\n                    return this._Propd;\n                var ov = refobj.Value;\n                var propd = PropertyPath.ResolvePropertyPath(refobj, this, promotedValues);\n                if (ov === refobj.Value)\n                    this._Propd = propd;\n                return propd;\n            };\n            Object.defineProperty(PropertyPath.prototype, \"Path\", {\n                get: function () { return this._Path; },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(PropertyPath.prototype, \"ExpandedPath\", {\n                get: function () { return this._ExpandedPath; },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(PropertyPath.prototype, \"ParsePath\", {\n                get: function () {\n                    if (this._Propd)\n                        return \"(0)\";\n                    if (this._ExpandedPath)\n                        return this._ExpandedPath;\n                    return this._Path;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(PropertyPath.prototype, \"HasDependencyProperty\", {\n                get: function () { return this._Propd != null; },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(PropertyPath.prototype, \"DependencyProperty\", {\n                get: function () { return this._Propd; },\n                enumerable: true,\n                configurable: true\n            });\n            PropertyPath.ResolvePropertyPath = function (refobj, propertyPath, promotedValues) {\n                var path = propertyPath.Path;\n                var expanded = propertyPath.ExpandedPath;\n                if (expanded != null)\n                    path = expanded;\n                var data = {\n                    index: 0,\n                    i: 0,\n                    end: path.length,\n                    path: path,\n                    parenOpen: false,\n                    tickOpen: false,\n                    prop: path,\n                    res: null,\n                    cloned: false,\n                    expressionFound: false,\n                    lu: refobj.Value,\n                    collection: null,\n                    promotedValues: promotedValues,\n                    explicitType: false,\n                    type: null,\n                };\n                var success;\n                while (data.index < data.end) {\n                    success = true;\n                    var c = data.path.charAt(data.index);\n                    data.index++;\n                    if (c === '(') {\n                        data.parenOpen = true;\n                    }\n                    else if (c === ')') {\n                        data.parenOpen = false;\n                    }\n                    else if (c === '\\'') {\n                        if (!propertyPath.ExpandedPath)\n                            console.warn(\"The ' character is not legal in property paths.\");\n                        else\n                            data.tickOpen = !data.tickOpen;\n                    }\n                    else if (c === '.') {\n                        success = handlePeriod(data);\n                    }\n                    else if (c === '[') {\n                        success = handleLeftBracket(data);\n                    }\n                    else {\n                        success = handleDefault(data);\n                    }\n                    if (!success) {\n                        refobj.Value = null;\n                        return null;\n                    }\n                }\n                refobj.Value = data.lu;\n                return data.res;\n            };\n            PropertyPath.prototype.Clone = function () {\n                return new PropertyPath(this._Path, this._ExpandedPath);\n            };\n            return PropertyPath;\n        })();\n        Data.PropertyPath = PropertyPath;\n        Fayde.CoreLibrary.add(PropertyPath);\n        nullstone.registerTypeConverter(PropertyPath, function (val) {\n            if (!val)\n                return new PropertyPath();\n            if (val instanceof PropertyPath)\n                return val;\n            return new PropertyPath(val.toString());\n        });\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        (function (PropertyNodeType) {\n            PropertyNodeType[PropertyNodeType[\"None\"] = 0] = \"None\";\n            PropertyNodeType[PropertyNodeType[\"AttachedProperty\"] = 1] = \"AttachedProperty\";\n            PropertyNodeType[PropertyNodeType[\"Indexed\"] = 2] = \"Indexed\";\n            PropertyNodeType[PropertyNodeType[\"Property\"] = 3] = \"Property\";\n        })(Data.PropertyNodeType || (Data.PropertyNodeType = {}));\n        var PropertyNodeType = Data.PropertyNodeType;\n        var PropertyPathParser = (function () {\n            function PropertyPathParser(path) {\n                this.Path = path;\n            }\n            PropertyPathParser.prototype.Step = function (data) {\n                var type = PropertyNodeType.None;\n                var path = this.Path;\n                if (path.length === 0) {\n                    data.typeName = null;\n                    data.propertyName = null;\n                    data.index = null;\n                    return type;\n                }\n                var end = 0;\n                if (path.charAt(0) === '(') {\n                    type = PropertyNodeType.AttachedProperty;\n                    end = path.indexOf(')');\n                    if (end === -1)\n                        throw new ArgumentException(\"Invalid property path. Attached property is missing the closing bracket\");\n                    var tickOpen = path.indexOf('\\'');\n                    var tickClose = 0;\n                    var typeOpen;\n                    var typeClose;\n                    var propOpen;\n                    var propClose;\n                    typeOpen = path.indexOf('\\'');\n                    if (typeOpen > 0) {\n                        typeOpen++;\n                        typeClose = path.indexOf('\\'', typeOpen + 1);\n                        if (typeClose < 0)\n                            throw new Exception(\"Invalid property path, Unclosed type name '\" + path + \"'.\");\n                        propOpen = path.indexOf('.', typeClose);\n                        if (propOpen < 0)\n                            throw new Exception(\"Invalid properth path, No property indexer found '\" + path + \"'.\");\n                        propOpen++;\n                    }\n                    else {\n                        typeOpen = 1;\n                        typeClose = path.indexOf('.', typeOpen);\n                        if (typeClose < 0)\n                            throw new Exception(\"Invalid property path, No property indexer found on '\" + path + \"'.\");\n                        propOpen = typeClose + 1;\n                    }\n                    propClose = end;\n                    data.typeName = path.slice(typeOpen, typeClose);\n                    data.propertyName = path.slice(propOpen, propClose);\n                    data.index = null;\n                    if (path.length > (end + 1) && path.charAt(end + 1) === '.')\n                        end++;\n                    path = path.substr(end + 1);\n                }\n                else if (path.charAt(0) === '[') {\n                    type = PropertyNodeType.Indexed;\n                    end = path.indexOf(']');\n                    data.typeName = null;\n                    data.propertyName = null;\n                    data.index = parseInt(path.substr(1, end - 1));\n                    path = path.substr(end + 1);\n                    if (path.charAt(0) === '.')\n                        path = path.substr(1);\n                }\n                else {\n                    type = PropertyNodeType.Property;\n                    end = indexOfAny(path, ['.', '[']);\n                    if (end === -1) {\n                        data.propertyName = path;\n                        path = \"\";\n                    }\n                    else {\n                        data.propertyName = path.substr(0, end);\n                        if (path.charAt(end) === '.')\n                            path = path.substr(end + 1);\n                        else\n                            path = path.substr(end);\n                    }\n                    data.typeName = null;\n                    data.index = null;\n                }\n                this.Path = path;\n                return type;\n            };\n            return PropertyPathParser;\n        })();\n        Data.PropertyPathParser = PropertyPathParser;\n        function indexOfAny(str, carr, start) {\n            if (!carr)\n                return -1;\n            if (!start)\n                start = 0;\n            for (var cur = start; cur < str.length; cur++) {\n                var c = str.charAt(cur);\n                for (var i = 0; i < carr.length; i++) {\n                    if (c === carr[i])\n                        return cur;\n                }\n            }\n            return -1;\n        }\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Data;\n    (function (Data) {\n        var PropertyPathWalker = (function () {\n            function PropertyPathWalker(path, bindDirectlyToSource, bindsToView, isDataContextBound) {\n                bindDirectlyToSource = bindDirectlyToSource !== false;\n                bindsToView = bindsToView === true;\n                this.IsDataContextBound = isDataContextBound === true;\n                this.Path = path;\n                this.IsDataContextBound = isDataContextBound;\n                var lastCVNode = null;\n                if (!path || path === \".\") {\n                    lastCVNode = new CollectionViewNode(bindDirectlyToSource, bindsToView);\n                    this.Node = lastCVNode;\n                    this.FinalNode = lastCVNode;\n                }\n                else {\n                    var data = {\n                        typeName: undefined,\n                        propertyName: undefined,\n                        index: undefined\n                    };\n                    var type;\n                    var parser = new Data.PropertyPathParser(path);\n                    while ((type = parser.Step(data)) !== Data.PropertyNodeType.None) {\n                        var isViewProperty = false;\n                        var node = lastCVNode = new CollectionViewNode(bindDirectlyToSource, isViewProperty);\n                        switch (type) {\n                            case Data.PropertyNodeType.AttachedProperty:\n                            case Data.PropertyNodeType.Property:\n                                node.Next = new StandardPropertyPathNode(data.typeName, data.propertyName);\n                                break;\n                            case Data.PropertyNodeType.Indexed:\n                                node.Next = new IndexedPropertyPathNode(data.index);\n                                break;\n                            default:\n                                break;\n                        }\n                        if (this.FinalNode)\n                            this.FinalNode.Next = node;\n                        else\n                            this.Node = node;\n                        this.FinalNode = node.Next;\n                    }\n                }\n                lastCVNode.BindToView = lastCVNode.BindToView || bindsToView;\n                this.FinalNode.Listen(this);\n            }\n            Object.defineProperty(PropertyPathWalker.prototype, \"IsPathBroken\", {\n                get: function () {\n                    var path = this.Path;\n                    if (this.IsDataContextBound && (!path || path.length < 1))\n                        return false;\n                    var node = this.Node;\n                    while (node) {\n                        if (node.IsBroken)\n                            return true;\n                        node = node.Next;\n                    }\n                    return false;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(PropertyPathWalker.prototype, \"FinalPropertyName\", {\n                get: function () {\n                    var final = this.FinalNode;\n                    if (final instanceof StandardPropertyPathNode)\n                        return final.PropertyInfo ? final.PropertyInfo.name : \"\";\n                    var lastName = \"\";\n                    for (var cur = this.Node; cur; cur = cur.Next) {\n                        if (cur instanceof StandardPropertyPathNode)\n                            lastName = cur.PropertyInfo ? cur.PropertyInfo.name : \"\";\n                    }\n                    return lastName;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            PropertyPathWalker.prototype.GetValue = function (item) {\n                this.Update(item);\n                var o = this.FinalNode.Value;\n                return o;\n            };\n            PropertyPathWalker.prototype.Update = function (source) {\n                this.Source = source;\n                this.Node.SetSource(source);\n            };\n            PropertyPathWalker.prototype.Listen = function (listener) {\n                this._Listener = listener;\n            };\n            PropertyPathWalker.prototype.Unlisten = function (listener) {\n                if (this._Listener === listener)\n                    this._Listener = null;\n            };\n            PropertyPathWalker.prototype.IsBrokenChanged = function (node) {\n                this.ValueInternal = node.Value;\n                var listener = this._Listener;\n                if (listener)\n                    listener.IsBrokenChanged();\n            };\n            PropertyPathWalker.prototype.ValueChanged = function (node) {\n                this.ValueInternal = node.Value;\n                var listener = this._Listener;\n                if (listener)\n                    listener.ValueChanged();\n            };\n            PropertyPathWalker.prototype.GetContext = function () {\n                var context = null;\n                var cur = this.Node;\n                var final = this.FinalNode;\n                while (cur && cur !== final) {\n                    context = cur;\n                    cur = cur.Next;\n                }\n                if (!context)\n                    return undefined;\n                return context.Value;\n            };\n            return PropertyPathWalker;\n        })();\n        Data.PropertyPathWalker = PropertyPathWalker;\n        var PropertyPathNode = (function () {\n            function PropertyPathNode() {\n            }\n            Object.defineProperty(PropertyPathNode.prototype, \"IsBroken\", {\n                get: function () {\n                    return this._IsBroken;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(PropertyPathNode.prototype, \"Source\", {\n                get: function () {\n                    return this._Source;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            Object.defineProperty(PropertyPathNode.prototype, \"Value\", {\n                get: function () {\n                    return this._Value;\n                },\n                enumerable: true,\n                configurable: true\n            });\n            PropertyPathNode.prototype.Listen = function (listener) {\n                this._NodeListener = listener;\n            };\n            PropertyPathNode.prototype.Unlisten = function (listener) {\n                if (this._NodeListener === listener)\n                    this._NodeListener = null;\n            };\n            PropertyPathNode.prototype.OnSourceChanged = function (oldSource, newSource) {\n            };\n            PropertyPathNode.prototype.OnSourcePropertyChanged = function (o, e) {\n            };\n            PropertyPathNode.prototype.UpdateValue = function () {\n                throw new Exception(\"No override for abstract method: PropertyPathNode.UpdateValue\");\n            };\n            PropertyPathNode.prototype.SetValue = function (value) {\n                throw new Exception(\"No override for abstract method: PropertyPathNode.SetValue\");\n            };\n            PropertyPathNode.prototype.GetSource = function () {\n                return this._Source;\n            };\n            PropertyPathNode.prototype.SetSource = function (value) {\n                if (value == null || value !== this._Source) {\n                    var oldSource = this._Source;\n                    var npc = Fayde.INotifyPropertyChanged_.as(oldSource);\n                    if (npc)\n                        npc.PropertyChanged.off(this.OnSourcePropertyChanged, this);\n                    this._Source = value;\n                    npc = Fayde.INotifyPropertyChanged_.as(this._Source);\n                    if (npc)\n                        npc.PropertyChanged.on(this.OnSourcePropertyChanged, this);\n                    this.OnSourceChanged(oldSource, this._Source);\n                    this.UpdateValue();\n                    if (this.Next)\n                        this.Next.SetSource(this._Value);\n                }\n            };\n            PropertyPathNode.prototype.UpdateValueAndIsBroken = function (newValue, isBroken) {\n                var emitBrokenChanged = this._IsBroken !== isBroken;\n                var emitValueChanged = !nullstone.equals(this.Value, newValue);\n                this._IsBroken = isBroken;\n                this._Value = newValue;\n                if (emitValueChanged) {\n                    var listener = this._NodeListener;\n                    if (listener)\n                        listener.ValueChanged(this);\n                }\n                else if (emitBrokenChanged) {\n                    var listener = this._NodeListener;\n                    if (listener)\n                        listener.IsBrokenChanged(this);\n                }\n            };\n            PropertyPathNode.prototype._CheckIsBroken = function () {\n                return !this.Source || (!this.PropertyInfo && !this.DependencyProperty);\n            };\n            return PropertyPathNode;\n        })();\n        var StandardPropertyPathNode = (function (_super) {\n            __extends(StandardPropertyPathNode, _super);\n            function StandardPropertyPathNode(typeName, propertyName) {\n                _super.call(this);\n                this._STypeName = typeName;\n                this._PropertyName = propertyName;\n            }\n            StandardPropertyPathNode.prototype.SetValue = function (value) {\n                if (this.DependencyProperty)\n                    this.Source.SetValue(this.DependencyProperty, value);\n                else if (this.PropertyInfo)\n                    this.PropertyInfo.setValue(this.Source, value);\n            };\n            StandardPropertyPathNode.prototype.UpdateValue = function () {\n                if (this.DependencyProperty) {\n                    this.ValueType = this.DependencyProperty.GetTargetType();\n                    this.UpdateValueAndIsBroken(this.Source.GetValue(this.DependencyProperty), this._CheckIsBroken());\n                }\n                else if (this.PropertyInfo) {\n                    this.ValueType = null;\n                    try {\n                        this.UpdateValueAndIsBroken(this.PropertyInfo.getValue(this.Source), this._CheckIsBroken());\n                    }\n                    catch (err) {\n                        this.UpdateValueAndIsBroken(null, this._CheckIsBroken());\n                    }\n                }\n                else {\n                    this.ValueType = null;\n                    this.UpdateValueAndIsBroken(null, this._CheckIsBroken());\n                }\n            };\n            StandardPropertyPathNode.prototype.OnSourceChanged = function (oldSource, newSource) {\n                _super.prototype.OnSourceChanged.call(this, oldSource, newSource);\n                var oldDO;\n                var newDO;\n                if (oldSource instanceof Fayde.DependencyObject)\n                    oldDO = oldSource;\n                if (newSource instanceof Fayde.DependencyObject)\n                    newDO = newSource;\n                var listener = this._DPListener;\n                if (listener) {\n                    listener.Detach();\n                    this._DPListener = listener = null;\n                }\n                this.DependencyProperty = null;\n                this.PropertyInfo = null;\n                if (!this.Source)\n                    return;\n                var type = this.Source.constructor;\n                var typeName = this._STypeName;\n                if (typeName) {\n                    if (typeName.indexOf(\":\") > -1)\n                        console.warn(\"[Not supported] Cannot resolve type name outside of default namespace.\", typeName);\n                    var oresolve = { type: undefined, isPrimitive: false };\n                    if (Fayde.CoreLibrary.resolveType(null, typeName, oresolve))\n                        type = oresolve.type;\n                }\n                if (newDO) {\n                    var propd = DependencyProperty.GetDependencyProperty(type, this._PropertyName, true);\n                    if (propd) {\n                        this.DependencyProperty = propd;\n                        this._DPListener = listener = propd.Store.ListenToChanged(newDO, propd, this.OnPropertyChanged, this);\n                    }\n                }\n                if (!this.DependencyProperty || !this.DependencyProperty.IsAttached) {\n                    this.PropertyInfo = nullstone.PropertyInfo.find(this.Source, this._PropertyName);\n                }\n            };\n            StandardPropertyPathNode.prototype.OnPropertyChanged = function (sender, args) {\n                try {\n                    this.UpdateValue();\n                    if (this.Next)\n                        this.Next.SetSource(this.Value);\n                }\n                catch (err) {\n                }\n            };\n            StandardPropertyPathNode.prototype.OnSourcePropertyChanged = function (sender, e) {\n                if (e.PropertyName === this._PropertyName && this.PropertyInfo) {\n                    this.UpdateValue();\n                    var next = this.Next;\n                    if (next)\n                        next.SetSource(this.Value);\n                }\n            };\n            return StandardPropertyPathNode;\n        })(PropertyPathNode);\n        var CollectionViewNode = (function (_super) {\n            __extends(CollectionViewNode, _super);\n            function CollectionViewNode(bindsDirectlyToSource, bindToView) {\n                _super.call(this);\n                this.BindsDirectlyToSource = bindsDirectlyToSource === true;\n                this.BindToView = bindToView === true;\n            }\n            CollectionViewNode.prototype.OnSourceChanged = function (oldSource, newSource) {\n                _super.prototype.OnSourceChanged.call(this, oldSource, newSource);\n                this.DisconnectViewHandlers();\n                this.ConnectViewHandlers(newSource, newSource);\n            };\n            CollectionViewNode.prototype.ViewChanged = function (sender, e) {\n                this.DisconnectViewHandlers(true);\n                this.ConnectViewHandlers(null, e.NewValue);\n                this.ViewCurrentChanged(this, null);\n            };\n            CollectionViewNode.prototype.ViewCurrentChanged = function (sender, e) {\n                this.UpdateValue();\n                if (this.Next)\n                    this.Next.SetSource(this.Value);\n            };\n            CollectionViewNode.prototype.SetValue = function () {\n                throw new NotSupportedException(\"SetValue\");\n            };\n            CollectionViewNode.prototype.UpdateValue = function () {\n                var src = this.Source;\n                if (!this.BindsDirectlyToSource) {\n                    var view;\n                    if (src instanceof Data.CollectionViewSource)\n                        src = view = src.View;\n                    else\n                        view = Data.ICollectionView_.as(src);\n                    if (view && !this.BindToView)\n                        src = view.CurrentItem;\n                }\n                this.ValueType = src == null ? null : src.constructor;\n                this.UpdateValueAndIsBroken(src, this._CheckIsBroken());\n            };\n            CollectionViewNode.prototype._CheckIsBroken = function () {\n                return this.Source == null;\n            };\n            CollectionViewNode.prototype.ConnectViewHandlers = function (source, view) {\n                if (source instanceof Data.CollectionViewSource) {\n                    this._ViewPropertyListener = Data.CollectionViewSource.ViewProperty.Store.ListenToChanged(source, Data.CollectionViewSource.ViewProperty, this.ViewChanged, this);\n                    view = source.View;\n                }\n                this._View = Data.ICollectionView_.as(view);\n                if (this._View)\n                    this._View.CurrentChanged.on(this.ViewCurrentChanged, this);\n            };\n            CollectionViewNode.prototype.DisconnectViewHandlers = function (onlyView) {\n                if (!onlyView)\n                    onlyView = false;\n                if (this._ViewPropertyListener && !onlyView) {\n                    this._ViewPropertyListener.Detach();\n                    this._ViewPropertyListener = null;\n                }\n                if (this._View) {\n                    this._View.CurrentChanged.off(this.ViewCurrentChanged, this);\n                }\n            };\n            return CollectionViewNode;\n        })(PropertyPathNode);\n        var IndexedPropertyPathNode = (function (_super) {\n            __extends(IndexedPropertyPathNode, _super);\n            function IndexedPropertyPathNode(index) {\n                _super.call(this);\n                this._IsBroken = false;\n                var val = parseInt(index, 10);\n                if (!isNaN(val))\n                    index = val;\n                Object.defineProperty(this, \"Index\", { value: index, writable: false });\n            }\n            IndexedPropertyPathNode.prototype.UpdateValue = function () {\n                if (this.PropertyInfo == null) {\n                    this._IsBroken = true;\n                    this.ValueType = null;\n                    this.UpdateValueAndIsBroken(null, this._IsBroken);\n                    return;\n                }\n                try {\n                    var newVal = this.PropertyInfo.getValue(this.Source, this.Index);\n                    this._IsBroken = false;\n                    this.ValueType = this.PropertyInfo.propertyType;\n                    this.UpdateValueAndIsBroken(newVal, this._IsBroken);\n                }\n                catch (err) {\n                    this._IsBroken = true;\n                    this.ValueType = null;\n                    this.UpdateValueAndIsBroken(null, this._IsBroken);\n                }\n            };\n            IndexedPropertyPathNode.prototype.SetValue = function (value) {\n                if (this.PropertyInfo)\n                    this.PropertyInfo.setValue(this.Source, this.Index, value);\n            };\n            IndexedPropertyPathNode.prototype._CheckIsBroken = function () {\n                return this._IsBroken || _super.prototype._CheckIsBroken.call(this);\n            };\n            IndexedPropertyPathNode.prototype.OnSourcePropertyChanged = function (o, e) {\n                this.UpdateValue();\n                if (this.Next != null)\n                    this.Next.SetSource(this.Value);\n            };\n            IndexedPropertyPathNode.prototype.OnSourceChanged = function (oldSource, newSource) {\n                _super.prototype.OnSourceChanged.call(this, oldSource, newSource);\n                var cc = Fayde.Collections.INotifyCollectionChanged_.as(oldSource);\n                if (cc)\n                    cc.CollectionChanged.off(this.CollectionChanged, this);\n                cc = Fayde.Collections.INotifyCollectionChanged_.as(newSource);\n                if (cc)\n                    cc.CollectionChanged.on(this.CollectionChanged, this);\n                this._GetIndexer();\n            };\n            IndexedPropertyPathNode.prototype._GetIndexer = function () {\n                this.PropertyInfo = null;\n                if (this._Source != null) {\n                    this.PropertyInfo = nullstone.IndexedPropertyInfo.find(this._Source);\n                }\n            };\n            IndexedPropertyPathNode.prototype.CollectionChanged = function (o, e) {\n                this.UpdateValue();\n                if (this.Next)\n                    this.Next.SetSource(this.Value);\n            };\n            return IndexedPropertyPathNode;\n        })(PropertyPathNode);\n    })(Data = Fayde.Data || (Fayde.Data = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var TouchInternal;\n        (function (TouchInternal) {\n            var ActiveTouchBase = (function () {\n                function ActiveTouchBase(touchHandler) {\n                    var _this = this;\n                    this.InputList = [];\n                    this._IsEmitting = false;\n                    this._PendingCapture = null;\n                    this._PendingReleaseCapture = false;\n                    this._Captured = null;\n                    this._CapturedInputList = null;\n                    Object.defineProperty(this, \"Device\", { value: this.CreateTouchDevice(), writable: false });\n                    this._FinishReleaseCaptureFunc = function () { return touchHandler.HandleTouches(Input.TouchInputType.NoOp, [_this], false, true); };\n                }\n                ActiveTouchBase.prototype.Capture = function (uie) {\n                    var uin = uie.XamlNode;\n                    if (this._Captured === uin || this._PendingCapture === uin)\n                        return true;\n                    if (!this._IsEmitting)\n                        return false;\n                    this._PendingCapture = uin;\n                    return true;\n                };\n                ActiveTouchBase.prototype.ReleaseCapture = function (uie) {\n                    var uin = uie.XamlNode;\n                    if (this._Captured !== uin && this._PendingCapture !== uin)\n                        return;\n                    if (this._IsEmitting)\n                        this._PendingReleaseCapture = true;\n                    else\n                        this._PerformReleaseCapture();\n                };\n                ActiveTouchBase.prototype._PerformCapture = function (uin) {\n                    this._Captured = uin;\n                    var newInputList = [];\n                    while (uin != null) {\n                        newInputList.push(uin);\n                        uin = uin.VisualParentNode;\n                    }\n                    this._CapturedInputList = newInputList;\n                    this._PendingCapture = null;\n                };\n                ActiveTouchBase.prototype._PerformReleaseCapture = function () {\n                    var oldCaptured = this._Captured;\n                    this._Captured = null;\n                    this._PendingReleaseCapture = false;\n                    oldCaptured._EmitLostTouchCapture(new Input.TouchEventArgs(this.Device));\n                    this._FinishReleaseCaptureFunc();\n                };\n                ActiveTouchBase.prototype.Emit = function (type, newInputList, emitLeave, emitEnter) {\n                    if (this._IsEmitting)\n                        return;\n                    this._IsEmitting = true;\n                    var handled = false;\n                    var indices = { Index1: -1, Index2: -1 };\n                    findFirstCommonElement(this.InputList, newInputList, indices);\n                    if (emitLeave !== false)\n                        this._EmitList(Input.TouchInputType.TouchLeave, this.InputList, indices.Index1);\n                    if (emitEnter !== false)\n                        this._EmitList(Input.TouchInputType.TouchEnter, newInputList, indices.Index2);\n                    var handled = false;\n                    if (type !== Input.TouchInputType.NoOp)\n                        handled = this._EmitList(type, this._Captured ? this._CapturedInputList : newInputList);\n                    this.InputList = newInputList;\n                    if (this._PendingCapture)\n                        this._PerformCapture(this._PendingCapture);\n                    if (this._PendingReleaseCapture)\n                        this._PerformReleaseCapture();\n                    this._IsEmitting = false;\n                    return handled;\n                };\n                ActiveTouchBase.prototype._EmitList = function (type, list, endIndex) {\n                    var handled = false;\n                    if (endIndex === 0)\n                        return handled;\n                    if (!endIndex || endIndex === -1)\n                        endIndex = list.length;\n                    var args = new Input.TouchEventArgs(this.Device);\n                    var node = list[0];\n                    if (node && args instanceof Fayde.RoutedEventArgs)\n                        args.Source = node.XObject;\n                    for (var i = 0; i < endIndex; i++) {\n                        node = list[i];\n                        if (type === Input.TouchInputType.TouchLeave)\n                            args.Source = node.XObject;\n                        if (node._EmitTouchEvent(type, args))\n                            handled = true;\n                        if (type === Input.TouchInputType.TouchLeave)\n                            args = new Input.TouchEventArgs(this.Device);\n                    }\n                    return handled;\n                };\n                ActiveTouchBase.prototype.GetTouchPoint = function (relativeTo) {\n                    if (!relativeTo)\n                        return this.CreateTouchPoint(this.Position.Clone());\n                    if (!(relativeTo instanceof Fayde.UIElement))\n                        throw new ArgumentException(\"Specified relative object must be a UIElement.\");\n                    var p = this.Position.Clone();\n                    minerva.core.Updater.transformPoint(relativeTo.XamlNode.LayoutUpdater, p);\n                    return this.CreateTouchPoint(p);\n                };\n                ActiveTouchBase.prototype.CreateTouchPoint = function (p) {\n                    return new Input.TouchPoint(p, 0);\n                };\n                ActiveTouchBase.prototype.CreateTouchDevice = function () {\n                    var _this = this;\n                    var d = {\n                        Identifier: null,\n                        Captured: null,\n                        Capture: function (uie) { return _this.Capture(uie); },\n                        ReleaseCapture: function (uie) { return _this.ReleaseCapture(uie); },\n                        GetTouchPoint: function (relativeTo) { return _this.GetTouchPoint(relativeTo); }\n                    };\n                    Object.defineProperty(d, \"Identifier\", { get: function () { return _this.Identifier; } });\n                    Object.defineProperty(d, \"Captured\", { get: function () { return _this._Captured ? _this._Captured.XObject : null; } });\n                    return d;\n                };\n                return ActiveTouchBase;\n            })();\n            TouchInternal.ActiveTouchBase = ActiveTouchBase;\n            function findFirstCommonElement(list1, list2, outObj) {\n                var i = list1.length - 1;\n                var j = list2.length - 1;\n                outObj.Index1 = -1;\n                outObj.Index2 = -1;\n                while (i >= 0 && j >= 0) {\n                    if (list1[i] !== list2[j])\n                        return;\n                    outObj.Index1 = i--;\n                    outObj.Index2 = j--;\n                }\n            }\n        })(TouchInternal = Input.TouchInternal || (Input.TouchInternal = {}));\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var TouchInternal;\n        (function (TouchInternal) {\n            var TouchInteropBase = (function () {\n                function TouchInteropBase() {\n                    this.CanvasOffset = null;\n                    this.ActiveTouches = [];\n                }\n                Object.defineProperty(TouchInteropBase.prototype, \"CoordinateOffset\", {\n                    get: function () {\n                        return {\n                            left: window.pageXOffset + this.CanvasOffset.left,\n                            top: window.pageYOffset + this.CanvasOffset.top\n                        };\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                TouchInteropBase.prototype.Register = function (input, canvas) {\n                    this.Input = input;\n                    this.CanvasOffset = this._CalcOffset(canvas);\n                };\n                TouchInteropBase.prototype._CalcOffset = function (canvas) {\n                    var left = 0;\n                    var top = 0;\n                    var cur = canvas;\n                    if (cur.offsetParent) {\n                        do {\n                            left += cur.offsetLeft;\n                            top += cur.offsetTop;\n                        } while (cur = cur.offsetParent);\n                    }\n                    return { left: left, top: top };\n                };\n                TouchInteropBase.prototype.HandleTouches = function (type, touches, emitLeave, emitEnter) {\n                    var touch;\n                    var handled = false;\n                    while (touch = touches.shift()) {\n                        var inputList = this.Input.HitTestPoint(touch.Position);\n                        if (inputList)\n                            handled = handled || touch.Emit(type, inputList, emitLeave, emitEnter);\n                    }\n                    return handled;\n                };\n                return TouchInteropBase;\n            })();\n            TouchInternal.TouchInteropBase = TouchInteropBase;\n        })(TouchInternal = Input.TouchInternal || (Input.TouchInternal = {}));\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ActiveTouchBase.ts\" />\n/// <reference path=\"TouchInteropBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var TouchInternal;\n        (function (TouchInternal) {\n            var NonPointerActiveTouch = (function (_super) {\n                __extends(NonPointerActiveTouch, _super);\n                function NonPointerActiveTouch() {\n                    _super.apply(this, arguments);\n                }\n                NonPointerActiveTouch.prototype.Init = function (t, offset) {\n                    this.TouchObject = t;\n                    this.Identifier = t.identifier;\n                    this.Position = new Point(t.clientX + offset.left, t.clientY + offset.top);\n                };\n                NonPointerActiveTouch.prototype.CreateTouchPoint = function (p) {\n                    var to = this.TouchObject;\n                    return new Input.TouchPoint(p, to.force);\n                };\n                return NonPointerActiveTouch;\n            })(TouchInternal.ActiveTouchBase);\n            var NonPointerTouchInterop = (function (_super) {\n                __extends(NonPointerTouchInterop, _super);\n                function NonPointerTouchInterop() {\n                    _super.apply(this, arguments);\n                }\n                NonPointerTouchInterop.prototype.Register = function (input, canvas) {\n                    var _this = this;\n                    _super.prototype.Register.call(this, input, canvas);\n                    canvas.addEventListener(\"touchstart\", function (e) { return _this._HandleTouchStart(window.event ? window.event : e); });\n                    canvas.addEventListener(\"touchend\", function (e) { return _this._HandleTouchEnd(window.event ? window.event : e); });\n                    canvas.addEventListener(\"touchmove\", function (e) { return _this._HandleTouchMove(window.event ? window.event : e); });\n                    canvas.addEventListener(\"touchenter\", function (e) { return _this._HandleTouchEnter(window.event ? window.event : e); });\n                    canvas.addEventListener(\"touchleave\", function (e) { return _this._HandleTouchLeave(window.event ? window.event : e); });\n                };\n                NonPointerTouchInterop.prototype._HandleTouchStart = function (e) {\n                    e.preventDefault();\n                    Fayde.Engine.Inspection.Kill();\n                    var newTouches = this.TouchArrayFromList(e.changedTouches);\n                    this.ActiveTouches = this.ActiveTouches.concat(newTouches);\n                    this.Input.SetIsUserInitiatedEvent(true);\n                    this.HandleTouches(Input.TouchInputType.TouchDown, newTouches);\n                    this.Input.SetIsUserInitiatedEvent(false);\n                };\n                NonPointerTouchInterop.prototype._HandleTouchEnd = function (e) {\n                    var oldTouches = this.TouchArrayFromList(e.changedTouches);\n                    this.Input.SetIsUserInitiatedEvent(true);\n                    this.HandleTouches(Input.TouchInputType.TouchUp, oldTouches);\n                    this.Input.SetIsUserInitiatedEvent(false);\n                    removeFromArray(this.ActiveTouches, oldTouches);\n                };\n                NonPointerTouchInterop.prototype._HandleTouchMove = function (e) {\n                    var touches = this.TouchArrayFromList(e.changedTouches);\n                    this.HandleTouches(Input.TouchInputType.TouchMove, touches);\n                };\n                NonPointerTouchInterop.prototype._HandleTouchEnter = function (e) {\n                    var touches = this.TouchArrayFromList(e.changedTouches);\n                    this.HandleTouches(Input.TouchInputType.TouchEnter, touches);\n                };\n                NonPointerTouchInterop.prototype._HandleTouchLeave = function (e) {\n                    var touches = this.TouchArrayFromList(e.changedTouches);\n                    this.HandleTouches(Input.TouchInputType.TouchLeave, touches);\n                };\n                NonPointerTouchInterop.prototype.TouchArrayFromList = function (list) {\n                    var len = list.length;\n                    var touches = [];\n                    var curto;\n                    var cur;\n                    for (var i = 0; i < len; i++) {\n                        var curto = list.item(i);\n                        cur = this.FindTouchInList(curto.identifier) || new NonPointerActiveTouch(this);\n                        cur.Init(curto, this.CoordinateOffset);\n                        touches.push(cur);\n                    }\n                    return touches;\n                };\n                NonPointerTouchInterop.prototype.FindTouchInList = function (identifier) {\n                    var at = this.ActiveTouches;\n                    var len = at.length;\n                    for (var i = 0; i < len; i++) {\n                        if (at[i].Identifier === identifier)\n                            return at[i];\n                    }\n                    return null;\n                };\n                return NonPointerTouchInterop;\n            })(TouchInternal.TouchInteropBase);\n            TouchInternal.NonPointerTouchInterop = NonPointerTouchInterop;\n            function removeFromArray(arr, toRemove) {\n                var len = toRemove.length;\n                for (var i = 0; i < len; i++) {\n                    var index = arr.indexOf(toRemove[i]);\n                    if (index > -1)\n                        arr.splice(index, 1);\n                }\n            }\n        })(TouchInternal = Input.TouchInternal || (Input.TouchInternal = {}));\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ActiveTouchBase.ts\" />\n/// <reference path=\"TouchInteropBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Input;\n    (function (Input) {\n        var TouchInternal;\n        (function (TouchInternal) {\n            var PointerActiveTouch = (function (_super) {\n                __extends(PointerActiveTouch, _super);\n                function PointerActiveTouch() {\n                    _super.apply(this, arguments);\n                }\n                PointerActiveTouch.prototype.Init = function (t, offset) {\n                    this.TouchObject = t;\n                    this.Identifier = t.pointerId;\n                    this.Position = new Point(t.clientX + offset.left, t.clientY + offset.top);\n                };\n                PointerActiveTouch.prototype.CreateTouchPoint = function (p) {\n                    var to = this.TouchObject;\n                    return new Input.TouchPoint(p, to.pressure);\n                };\n                return PointerActiveTouch;\n            })(TouchInternal.ActiveTouchBase);\n            var PointerTouchInterop = (function (_super) {\n                __extends(PointerTouchInterop, _super);\n                function PointerTouchInterop() {\n                    _super.apply(this, arguments);\n                }\n                PointerTouchInterop.prototype.Register = function (input, canvas) {\n                    var _this = this;\n                    _super.prototype.Register.call(this, input, canvas);\n                    canvas.style.msTouchAction = \"none\";\n                    canvas.style.touchAction = \"none\";\n                    canvas.addEventListener(\"selectstart\", function (e) { e.preventDefault(); });\n                    if (navigator.msPointerEnabled) {\n                        canvas.addEventListener(\"MSPointerDown\", function (e) { return _this._HandlePointerDown(window.event ? window.event : e); });\n                        canvas.addEventListener(\"MSPointerUp\", function (e) { return _this._HandlePointerUp(window.event ? window.event : e); });\n                        canvas.addEventListener(\"MSPointerMove\", function (e) { return _this._HandlePointerMove(window.event ? window.event : e); });\n                        canvas.addEventListener(\"MSPointerEnter\", function (e) { return _this._HandlePointerEnter(window.event ? window.event : e); });\n                        canvas.addEventListener(\"MSPointerLeave\", function (e) { return _this._HandlePointerLeave(window.event ? window.event : e); });\n                    }\n                    else {\n                        canvas.addEventListener(\"pointerdown\", function (e) { return _this._HandlePointerDown(window.event ? window.event : e); });\n                        canvas.addEventListener(\"pointerup\", function (e) { return _this._HandlePointerUp(window.event ? window.event : e); });\n                        canvas.addEventListener(\"pointermove\", function (e) { return _this._HandlePointerMove(window.event ? window.event : e); });\n                        canvas.addEventListener(\"pointerenter\", function (e) { return _this._HandlePointerEnter(window.event ? window.event : e); });\n                        canvas.addEventListener(\"pointerleave\", function (e) { return _this._HandlePointerLeave(window.event ? window.event : e); });\n                    }\n                };\n                PointerTouchInterop.prototype._HandlePointerDown = function (e) {\n                    if (e.pointerType !== \"touch\")\n                        return;\n                    e.preventDefault();\n                    Fayde.Engine.Inspection.Kill();\n                    var cur = this.GetActiveTouch(e);\n                    this.Input.SetIsUserInitiatedEvent(true);\n                    this.HandleTouches(Input.TouchInputType.TouchDown, [cur]);\n                    this.Input.SetIsUserInitiatedEvent(false);\n                };\n                PointerTouchInterop.prototype._HandlePointerUp = function (e) {\n                    if (e.pointerType !== \"touch\")\n                        return;\n                    var cur = this.GetActiveTouch(e);\n                    this.Input.SetIsUserInitiatedEvent(true);\n                    this.HandleTouches(Input.TouchInputType.TouchUp, [cur]);\n                    this.Input.SetIsUserInitiatedEvent(false);\n                    var index = this.ActiveTouches.indexOf(cur);\n                    if (index > -1)\n                        this.ActiveTouches.splice(index, 1);\n                };\n                PointerTouchInterop.prototype._HandlePointerMove = function (e) {\n                    if (e.pointerType !== \"touch\")\n                        return;\n                    var cur = this.GetActiveTouch(e);\n                    this.HandleTouches(Input.TouchInputType.TouchMove, [cur]);\n                };\n                PointerTouchInterop.prototype._HandlePointerEnter = function (e) {\n                    if (e.pointerType !== \"touch\")\n                        return;\n                    var cur = this.GetActiveTouch(e);\n                    this.HandleTouches(Input.TouchInputType.TouchEnter, [cur]);\n                };\n                PointerTouchInterop.prototype._HandlePointerLeave = function (e) {\n                    if (e.pointerType !== \"touch\")\n                        return;\n                    var cur = this.GetActiveTouch(e);\n                    this.HandleTouches(Input.TouchInputType.TouchLeave, [cur]);\n                };\n                PointerTouchInterop.prototype.GetActiveTouch = function (e) {\n                    var existing = this.FindTouchInList(e.pointerId);\n                    var cur = existing || new PointerActiveTouch(this);\n                    if (!existing)\n                        this.ActiveTouches.push(cur);\n                    cur.Init(e, this.CoordinateOffset);\n                    return cur;\n                };\n                PointerTouchInterop.prototype.FindTouchInList = function (identifier) {\n                    var at = this.ActiveTouches;\n                    var len = at.length;\n                    for (var i = 0; i < len; i++) {\n                        if (at[i].Identifier === identifier)\n                            return at[i];\n                    }\n                    return null;\n                };\n                return PointerTouchInterop;\n            })(TouchInternal.TouchInteropBase);\n            TouchInternal.PointerTouchInterop = PointerTouchInterop;\n        })(TouchInternal = Input.TouchInternal || (Input.TouchInternal = {}));\n    })(Input = Fayde.Input || (Fayde.Input = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        var Internal;\n        (function (Internal) {\n            function createActiveObject(app, namescope, bindingSource) {\n                return {\n                    obj: null,\n                    xo: null,\n                    dobj: null,\n                    rd: null,\n                    coll: null,\n                    arr: null,\n                    type: null,\n                    set: function (obj) {\n                        this.obj = obj;\n                        this.type = obj ? obj.constructor : null;\n                        this.rd = (obj instanceof Fayde.ResourceDictionary) ? obj : null;\n                        if (this.rd) {\n                            this.rd.App = app;\n                        }\n                        this.dobj = (obj instanceof Fayde.DependencyObject) ? obj : null;\n                        var xo = this.xo = (obj instanceof Fayde.XamlObject) ? obj : null;\n                        if (xo) {\n                            xo.XamlNode.DocNameScope = namescope;\n                            xo.TemplateOwner = bindingSource;\n                            xo.App = app;\n                        }\n                        if (obj instanceof Fayde.Application) {\n                            app = obj;\n                        }\n                        this.coll = nullstone.ICollection_.as(obj);\n                        this.arr = (typeof obj === \"array\") ? obj : null;\n                    },\n                    setName: function (name) {\n                        if (this.xo) {\n                            var xnode = this.xo.XamlNode;\n                            namescope.RegisterName(name, xnode);\n                            xnode.Name = name;\n                        }\n                    },\n                    getApp: function () {\n                        return app;\n                    }\n                };\n            }\n            Internal.createActiveObject = createActiveObject;\n        })(Internal = Markup.Internal || (Markup.Internal = {}));\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        var Internal;\n        (function (Internal) {\n            function createObjectActor(pactor) {\n                var arr = [];\n                return {\n                    start: function () {\n                        var nstate = {};\n                        pactor.init(nstate);\n                        arr.push(nstate);\n                    },\n                    end: function () {\n                        arr.pop();\n                        pactor.init(arr[arr.length - 1]);\n                    }\n                };\n            }\n            Internal.createObjectActor = createObjectActor;\n        })(Internal = Markup.Internal || (Markup.Internal = {}));\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        var Internal;\n        (function (Internal) {\n            function createPropertyActor(cur, extractType, extractDP) {\n                var state = {\n                    visited: undefined,\n                    coll: undefined,\n                    arr: undefined,\n                    propd: undefined,\n                    prop: undefined,\n                    eprop: undefined,\n                    incontent: undefined,\n                    content: {\n                        count: 0,\n                        coll: undefined,\n                        arr: undefined,\n                        rd: undefined,\n                        propd: undefined,\n                        app: undefined\n                    }\n                };\n                function verify(ownerType, name) {\n                    var otype = ownerType || cur.type;\n                    state.visited = state.visited || [];\n                    var tvisited = state.visited[otype];\n                    if (!tvisited) {\n                        tvisited = state.visited[otype] = [];\n                    }\n                    else {\n                        if (tvisited.indexOf(name) > -1)\n                            throw new XamlParseException(\"Cannot set [\" + otype.name + \"][\" + name + \"] more than once.\");\n                    }\n                    tvisited.push(name);\n                }\n                function verifyContent() {\n                    verify(cur.type, state.propd.Name);\n                }\n                function prepare(ownerType, name) {\n                    if (state.coll || state.arr || state.propd || state.prop || state.eprop)\n                        return true;\n                    if (cur.dobj) {\n                        var otype = ownerType || cur.type;\n                        state.propd = DependencyProperty.GetDependencyProperty(otype, name, true);\n                        if (!state.propd) {\n                            var ev = cur.dobj[name];\n                            if (ev instanceof nullstone.Event)\n                                state.eprop = name;\n                            else\n                                state.prop = name;\n                            return true;\n                        }\n                        if (state.propd.IsImmutable) {\n                            var co = cur.dobj.GetValue(state.propd);\n                            state.coll = nullstone.ICollection_.as(co);\n                            state.arr = (typeof co === \"array\") ? co : null;\n                        }\n                        else {\n                            var tt = state.propd.GetTargetType();\n                            if (nullstone.ICollection_.is(tt.prototype))\n                                cur.dobj.SetValue(state.propd, state.coll = new tt());\n                            else if (tt === Array)\n                                cur.dobj.SetValue(state.propd, state.arr = []);\n                        }\n                        return true;\n                    }\n                    else if (cur.rd && name === \"MergedDictionaries\") {\n                        state.coll = cur.rd.MergedDictionaries;\n                        return true;\n                    }\n                    else if (cur.obj) {\n                        if (ownerType && cur.type !== ownerType)\n                            throw new XamlParseException(\"Cannot set Attached Property on object that is not a DependencyObject.\");\n                        state.prop = name;\n                        return true;\n                    }\n                    return false;\n                }\n                function prepareContent() {\n                    var content = state.content = state.content || {};\n                    if (content.coll || content.arr || content.rd || content.propd)\n                        return true;\n                    var propd = content.propd = Markup.Content.Get(cur.type);\n                    if (!propd) {\n                        content.coll = nullstone.ICollection_.as(cur.obj);\n                        content.arr = (typeof cur.obj === \"array\") ? cur.obj : null;\n                        content.rd = cur.rd;\n                        content.app = (cur.obj instanceof Fayde.Application) ? cur.obj : null;\n                        if (content.coll || content.arr || content.rd || content.app)\n                            return true;\n                        throw new XamlParseException(\"Cannot set content for object of type '\" + cur.type.name + \"'.\");\n                    }\n                    if (!propd.IsImmutable)\n                        return true;\n                    var co = cur.dobj.GetValue(propd);\n                    if (!co)\n                        return false;\n                    content.coll = nullstone.ICollection_.as(co);\n                    content.arr = (typeof co === \"array\") ? co : null;\n                    return true;\n                }\n                function addContentObject(obj, key) {\n                    if (cur.rd) {\n                        key = key || getFallbackKey(obj);\n                        if (!key)\n                            throw new XamlParseException(\"Items in a ResourceDictionary must have a x:Key.\");\n                        cur.rd.Set(key, obj);\n                    }\n                    else if (cur.coll) {\n                        cur.coll.Add(obj);\n                    }\n                    else if (cur.arr) {\n                        cur.arr.push(obj);\n                    }\n                    else if (cur.dobj) {\n                        if (state.content.coll) {\n                            state.content.coll.Add(obj);\n                        }\n                        else if (state.content.arr) {\n                            state.content.arr.push(obj);\n                        }\n                        else if (state.content.rd) {\n                            key = key || getFallbackKey(obj);\n                            if (!key)\n                                throw new XamlParseException(\"Items in a ResourceDictionary must have a x:Key.\");\n                            state.content.rd.Set(obj, key);\n                        }\n                        else if (state.content.app) {\n                            state.content.app.$$SetRootVisual(obj);\n                        }\n                        else {\n                            if (state.content.count > 0)\n                                throw new XamlParseException(\"Cannot set content more than once.\");\n                            cur.dobj.SetValue(state.content.propd, obj);\n                        }\n                    }\n                    state.content.count++;\n                }\n                function addObject(obj, key) {\n                    if (state.coll) {\n                        state.coll.Add(obj);\n                    }\n                    else if (state.arr) {\n                        state.arr.push(obj);\n                    }\n                    else if (state.propd) {\n                        cur.dobj.SetValue(state.propd, convert(state.propd, obj));\n                    }\n                    else if (state.prop) {\n                        cur.obj[state.prop] = obj;\n                    }\n                    else if (state.eprop) {\n                        subscribeEvent(state.eprop, obj);\n                    }\n                }\n                function setAttrObject(ownerType, name, obj) {\n                    if (cur.dobj) {\n                        var otype = ownerType || cur.type;\n                        var propd = DependencyProperty.GetDependencyProperty(otype, name, true);\n                        if (!propd) {\n                            var ev = cur.dobj[name];\n                            if (ev instanceof nullstone.Event) {\n                                subscribeEvent(name, obj);\n                            }\n                            else {\n                                cur.dobj[name] = obj;\n                            }\n                            return true;\n                        }\n                        if (propd.IsImmutable) {\n                            return merge(convert(propd, obj), cur.dobj.GetValue(propd));\n                        }\n                        else {\n                            cur.dobj.SetValue(propd, convert(propd, obj));\n                            return true;\n                        }\n                    }\n                    else if (cur.obj) {\n                        var ev = cur.obj[name];\n                        if (ev instanceof nullstone.Event) {\n                            subscribeEvent(name, obj);\n                        }\n                        else {\n                            cur.obj[name] = obj;\n                        }\n                        return true;\n                    }\n                    return false;\n                }\n                function merge(src, target) {\n                    var sarr;\n                    var scoll = nullstone.ICollection_.as(src);\n                    if (scoll) {\n                        sarr = nullstone.IEnumerable_.toArray(scoll);\n                        scoll.Clear();\n                    }\n                    else if (typeof src === \"array\") {\n                        sarr = src.slice(0);\n                        src.length = 0;\n                    }\n                    else {\n                        return false;\n                    }\n                    var sen = nullstone.IEnumerator_.fromArray(sarr);\n                    var tcoll = nullstone.ICollection_.as(target);\n                    var tarr = typeof target === \"array\" ? target : null;\n                    if (tcoll) {\n                        while (sen.moveNext()) {\n                            tcoll.Add(sen.current);\n                        }\n                    }\n                    else if (tarr) {\n                        while (sen.moveNext()) {\n                            tarr.push(sen.current);\n                        }\n                    }\n                    else {\n                        return false;\n                    }\n                    return true;\n                }\n                function getFallbackKey(obj) {\n                    if (obj instanceof Fayde.XamlObject) {\n                        var name = obj.XamlNode.Name;\n                        if (name)\n                            return name;\n                    }\n                    return getImplicitKey(obj);\n                }\n                function getImplicitKey(obj) {\n                    if (obj instanceof Fayde.DataTemplate) {\n                        var dt = obj.DataType;\n                        if (!dt)\n                            throw new XamlParseException(\"A DataTemplate in a ResourceDictionary must have x:Key or DataType.\");\n                        return dt;\n                    }\n                    else if (obj instanceof Fayde.Style) {\n                        var tt = obj.TargetType;\n                        if (!tt)\n                            throw new XamlParseException(\"A Style in a ResourceDictionary must have x:Key or TargetType.\");\n                        return tt;\n                    }\n                }\n                function convert(propd, obj) {\n                    var tt = propd.GetTargetType();\n                    var val = obj;\n                    if (typeof val === \"string\") {\n                        if (tt === Fayde.IType_)\n                            return extractType(val);\n                        else if (propd === Fayde.Setter.PropertyProperty)\n                            return extractDP(val);\n                    }\n                    else if (val instanceof Fayde.Expression) {\n                        return val;\n                    }\n                    return nullstone.convertAnyToType(val, tt);\n                }\n                function subscribeEvent(name, ebe) {\n                    if (!(ebe instanceof Fayde.EventBindingExpression))\n                        throw new XamlParseException(\"Cannot subscribe to event '\" + name + \"' without {EventBinding}.\");\n                    ebe.Init(name);\n                    ebe.OnAttached(cur.dobj);\n                }\n                return {\n                    init: function (nstate) {\n                        state = nstate;\n                    },\n                    start: function (ownerType, name) {\n                        verify(ownerType, name);\n                        prepare(ownerType, name);\n                    },\n                    startContent: function () {\n                        if (prepareContent()) {\n                            if (state.content.count === 0)\n                                verifyContent();\n                            state.incontent = true;\n                        }\n                    },\n                    end: function () {\n                        state.incontent = false;\n                        state.coll = state.arr = state.propd = state.prop = state.eprop = undefined;\n                    },\n                    addObject: function (obj, key) {\n                        if (state.incontent) {\n                            addContentObject(obj, key);\n                            state.content.count++;\n                        }\n                        else {\n                            addObject(obj, key);\n                        }\n                    },\n                    setContentText: function (text) {\n                        if (!cur.dobj)\n                            return;\n                        var tcprop = Markup.TextContent.Get(cur.type);\n                        if (tcprop) {\n                            verify(cur.type, tcprop.Name);\n                            cur.dobj.SetValue(tcprop, text);\n                            return;\n                        }\n                        var cprop = Markup.Content.Get(cur.type);\n                        if (cprop) {\n                            verify(cur.type, cprop.Name);\n                            cur.dobj.SetValue(cprop, convert(cprop, text));\n                        }\n                    },\n                    setObject: function (ownerType, name, obj) {\n                        verify(ownerType, name);\n                        setAttrObject(ownerType, name, obj);\n                    },\n                    isNewResources: function () {\n                        if (state.coll instanceof Fayde.ResourceDictionaryCollection)\n                            return true;\n                        return !cur.rd;\n                    }\n                };\n            }\n            Internal.createPropertyActor = createPropertyActor;\n        })(Internal = Markup.Internal || (Markup.Internal = {}));\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Markup;\n    (function (Markup) {\n        var Internal;\n        (function (Internal) {\n            function createResourcesActor(cur, resources) {\n                var stack = [];\n                return {\n                    start: function () {\n                        if (cur.rd)\n                            stack.push(cur.rd);\n                    },\n                    end: function () {\n                        if (cur.rd)\n                            stack.pop();\n                    },\n                    get: function () {\n                        var res = (resources) ? resources.concat(stack) : stack.slice(0);\n                        if (cur.dobj instanceof Fayde.FrameworkElement) {\n                            var crd = cur.dobj.ReadLocalValue(Fayde.FrameworkElement.ResourcesProperty);\n                            if (crd !== DependencyProperty.UnsetValue)\n                                res.push(crd);\n                        }\n                        return res;\n                    }\n                };\n            }\n            Internal.createResourcesActor = createResourcesActor;\n        })(Internal = Markup.Internal || (Markup.Internal = {}));\n    })(Markup = Fayde.Markup || (Fayde.Markup = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            (function (EasingMode) {\n                EasingMode[EasingMode[\"EaseOut\"] = 0] = \"EaseOut\";\n                EasingMode[EasingMode[\"EaseIn\"] = 1] = \"EaseIn\";\n                EasingMode[EasingMode[\"EaseInOut\"] = 2] = \"EaseInOut\";\n            })(Animation.EasingMode || (Animation.EasingMode = {}));\n            var EasingMode = Animation.EasingMode;\n            Fayde.CoreLibrary.addEnum(EasingMode, \"EasingMode\");\n            (function (FillBehavior) {\n                FillBehavior[FillBehavior[\"HoldEnd\"] = 0] = \"HoldEnd\";\n                FillBehavior[FillBehavior[\"Stop\"] = 1] = \"Stop\";\n            })(Animation.FillBehavior || (Animation.FillBehavior = {}));\n            var FillBehavior = Animation.FillBehavior;\n            Fayde.CoreLibrary.addEnum(FillBehavior, \"FillBehavior\");\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var RepeatBehavior = (function () {\n                function RepeatBehavior() {\n                    this._Duration = null;\n                    this._Count = null;\n                    this.IsForever = false;\n                }\n                RepeatBehavior.FromRepeatDuration = function (duration) {\n                    var rb = new RepeatBehavior();\n                    rb._Duration = duration;\n                    return rb;\n                };\n                RepeatBehavior.FromIterationCount = function (count) {\n                    var rb = new RepeatBehavior();\n                    rb._Count = count;\n                    return rb;\n                };\n                Object.defineProperty(RepeatBehavior.prototype, \"HasCount\", {\n                    get: function () { return this._Count != null; },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(RepeatBehavior.prototype, \"Count\", {\n                    get: function () { return this._Count; },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(RepeatBehavior.prototype, \"HasDuration\", {\n                    get: function () { return this._Duration != null; },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(RepeatBehavior.prototype, \"Duration\", {\n                    get: function () { return this._Duration; },\n                    enumerable: true,\n                    configurable: true\n                });\n                RepeatBehavior.prototype.Clone = function () {\n                    var rb = new RepeatBehavior();\n                    rb._Duration = this._Duration;\n                    rb._Count = this._Count;\n                    rb.IsForever = this.IsForever;\n                    return rb;\n                };\n                RepeatBehavior.Forever = (function () { var rb = new RepeatBehavior(); rb.IsForever = true; return rb; })();\n                return RepeatBehavior;\n            })();\n            Animation.RepeatBehavior = RepeatBehavior;\n            Fayde.CoreLibrary.add(RepeatBehavior);\n            nullstone.registerTypeConverter(RepeatBehavior, function (val) {\n                if (!val || val.toLowerCase() === \"forever\")\n                    return RepeatBehavior.Forever;\n                if (val[val.length - 1] === \"x\") {\n                    var d = parseInt(val.substr(0, val.length - 1));\n                    return RepeatBehavior.FromIterationCount(d);\n                }\n                var duration = new Duration(nullstone.convertAnyToType(val, TimeSpan));\n                return RepeatBehavior.FromRepeatDuration(duration);\n            });\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\" />\n/// <reference path=\"../../Core/XamlObjectCollection.ts\" />\n/// <reference path=\"Enums.ts\" />\n/// <reference path=\"RepeatBehavior.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var Timeline = (function (_super) {\n                __extends(Timeline, _super);\n                function Timeline() {\n                    _super.apply(this, arguments);\n                    this.Completed = new nullstone.Event();\n                    this._IsPaused = false;\n                    this._BeginPauseTime = 0;\n                    this._TicksPaused = 0;\n                    this._IsFirstUpdate = true;\n                    this._HasBegun = false;\n                    this._BeginTicks = undefined;\n                    this._InitialStep = undefined;\n                    this._HasCompleted = false;\n                    this.ManualTarget = undefined;\n                }\n                Object.defineProperty(Timeline.prototype, \"HasManualTarget\", {\n                    get: function () {\n                        return this.ManualTarget !== undefined;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                Timeline.prototype.Reset = function () {\n                    this._TicksPaused = 0;\n                    this._IsFirstUpdate = true;\n                    this._BeginTicks = undefined;\n                    this._HasBegun = false;\n                    this._HasCompleted = false;\n                };\n                Timeline.prototype.Pause = function () {\n                    if (this._IsPaused)\n                        return;\n                    this._BeginPauseTime = new Date().getTime();\n                    this._IsPaused = true;\n                };\n                Timeline.prototype.Resume = function () {\n                    if (!this._IsPaused)\n                        return;\n                    this._IsPaused = false;\n                    var nowTime = new Date().getTime();\n                    this._TicksPaused = nowTime - this._BeginPauseTime;\n                };\n                Timeline.prototype.Stop = function () {\n                    this.Reset();\n                };\n                Timeline.prototype.OnCompleted = function () {\n                    this._HasCompleted = true;\n                    var fill = this.FillBehavior;\n                    switch (fill) {\n                        case Animation.FillBehavior.HoldEnd:\n                            this.HoldEnd();\n                            break;\n                        case Animation.FillBehavior.Stop:\n                            this.Stop();\n                            break;\n                    }\n                    this.Completed.raise(this, null);\n                };\n                Timeline.prototype.Update = function (nowTime) {\n                    var clockData = this.CreateClockData(nowTime);\n                    if (!clockData || this._IsPaused || this._HasCompleted)\n                        return;\n                    this.UpdateInternal(clockData);\n                    if (clockData.Completed)\n                        this.OnCompleted();\n                };\n                Timeline.prototype.UpdateInternal = function (clockData) {\n                };\n                Timeline.prototype.HoldEnd = function () {\n                };\n                Timeline.prototype.CreateClockData = function (nowTime) {\n                    if (this._IsFirstUpdate) {\n                        this._InitialStep = nowTime;\n                        this._HasBegun = false;\n                        this._IsFirstUpdate = false;\n                    }\n                    if (!this._HasBegun) {\n                        if (!this.IsAfterBeginTime(nowTime))\n                            return null;\n                        this._BeginTicks = nowTime;\n                        this._HasBegun = true;\n                    }\n                    var elapsedTicks = nowTime - this._BeginTicks - this._TicksPaused;\n                    var currentTimeTicks = elapsedTicks;\n                    var progress = 0.0;\n                    var completed = false;\n                    var duration = this.GetNaturalDuration();\n                    if (duration.IsAutomatic) {\n                        progress = 1.0;\n                        completed = true;\n                    }\n                    else if (duration.HasTimeSpan) {\n                        var d = duration.TimeSpan.Ticks;\n                        if (d === 0) {\n                            progress = 1.0;\n                        }\n                        else if (this.AutoReverse === true) {\n                            d = d / 2;\n                            progress = 1 - (Math.abs((elapsedTicks % (d + d)) - d) / d);\n                        }\n                        else {\n                            progress = (elapsedTicks / d) - Math.floor(elapsedTicks / d);\n                        }\n                        var repeat = this.RepeatBehavior || Timeline.DEFAULT_REPEAT_BEHAVIOR;\n                        if (repeat.IsForever) {\n                        }\n                        else if (repeat.HasCount) {\n                            if ((d === 0) || (Math.floor(elapsedTicks / d) >= repeat.Count)) {\n                                progress = 1.0;\n                                completed = true;\n                            }\n                        }\n                        else if (repeat.HasDuration) {\n                            if (elapsedTicks >= repeat.Duration.TimeSpan.Ticks) {\n                                progress = 1.0;\n                                completed = true;\n                            }\n                        }\n                        if (d !== 0)\n                            currentTimeTicks = progress * d;\n                    }\n                    return {\n                        CurrentTime: new TimeSpan(currentTimeTicks),\n                        Progress: progress,\n                        Completed: completed\n                    };\n                };\n                Timeline.prototype.IsAfterBeginTime = function (nowTime) {\n                    var beginTime = this.BeginTime;\n                    if (beginTime == null)\n                        return true;\n                    var beginTicks = beginTime.Ticks;\n                    if (beginTicks <= 0)\n                        return true;\n                    var elapsedTicks = nowTime - this._InitialStep;\n                    if (elapsedTicks < beginTicks)\n                        return false;\n                    return true;\n                };\n                Timeline.prototype.GetNaturalDuration = function () {\n                    var d = this.Duration;\n                    if (!d || d.IsAutomatic)\n                        return this.GetNaturalDurationCore();\n                    return d;\n                };\n                Timeline.prototype.GetNaturalDurationCore = function () {\n                    return Duration.Automatic;\n                };\n                Timeline.prototype.GenerateFrom = function () {\n                    return undefined;\n                };\n                Timeline.prototype.GenerateTo = function (isEntering) {\n                    return undefined;\n                };\n                Timeline.DEFAULT_REPEAT_BEHAVIOR = Animation.RepeatBehavior.FromIterationCount(1);\n                Timeline.AutoReverseProperty = DependencyProperty.Register(\"AutoReverse\", function () { return Boolean; }, Timeline, false);\n                Timeline.BeginTimeProperty = DependencyProperty.Register(\"BeginTime\", function () { return TimeSpan; }, Timeline);\n                Timeline.DurationProperty = DependencyProperty.Register(\"Duration\", function () { return Duration; }, Timeline);\n                Timeline.RepeatBehaviorProperty = DependencyProperty.Register(\"RepeatBehavior\", function () { return Animation.RepeatBehavior; }, Timeline);\n                Timeline.SpeedRatioProperty = DependencyProperty.Register(\"SpeedRatio\", function () { return Number; }, Timeline, 1.0);\n                Timeline.FillBehaviorProperty = DependencyProperty.Register(\"FillBehavior\", function () { return new Fayde.Enum(Animation.FillBehavior); }, Timeline, Animation.FillBehavior.HoldEnd);\n                return Timeline;\n            })(Fayde.DependencyObject);\n            Animation.Timeline = Timeline;\n            Fayde.CoreLibrary.add(Timeline);\n            var TimelineCollection = (function (_super) {\n                __extends(TimelineCollection, _super);\n                function TimelineCollection() {\n                    _super.apply(this, arguments);\n                }\n                return TimelineCollection;\n            })(Fayde.XamlObjectCollection);\n            Animation.TimelineCollection = TimelineCollection;\n            Fayde.CoreLibrary.add(TimelineCollection);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Timeline.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var AnimationBase = (function (_super) {\n                __extends(AnimationBase, _super);\n                function AnimationBase() {\n                    _super.call(this);\n                    this._IsHolding = false;\n                }\n                AnimationBase.prototype.Resolve = function (target, propd) { return true; };\n                AnimationBase.prototype.HoldEnd = function () { this._IsHolding = true; };\n                AnimationBase.prototype.Stop = function () {\n                    var animStorage = this._AnimStorage;\n                    if (!animStorage)\n                        return;\n                    if (Animation.AnimationStore.Detach(animStorage) || animStorage.IsDisabled)\n                        return;\n                    Animation.AnimationStore.ApplyStop(animStorage);\n                };\n                AnimationBase.prototype.UpdateInternal = function (clockData) {\n                    if (this._IsHolding)\n                        return;\n                    var animStorage = this._AnimStorage;\n                    if (!animStorage || animStorage.IsDisabled)\n                        return;\n                    var oldValue = animStorage.CurrentValue;\n                    animStorage.CurrentValue = this.GetCurrentValue(animStorage.BaseValue, animStorage.StopValue !== undefined ? animStorage.StopValue : animStorage.BaseValue, clockData);\n                    if (Animation.Log)\n                        console.log(getLogMessage(\"AnimationBase.UpdateInternal\", this, oldValue, animStorage.CurrentValue));\n                    if (oldValue === animStorage.CurrentValue || animStorage.CurrentValue === undefined)\n                        return;\n                    Animation.AnimationStore.ApplyCurrent(animStorage);\n                };\n                AnimationBase.prototype.GetNaturalDurationCore = function () { return Duration.Automatic; };\n                AnimationBase.prototype.GetCurrentValue = function (defaultOriginalValue, defaultDestinationValue, clockData) { return undefined; };\n                AnimationBase.prototype._Hookup = function (promotedValues, error) {\n                    this._IsHolding = false;\n                    this.Reset();\n                    var resolution = Animation.Storyboard.ResolveTarget(this);\n                    if (!resolution.Target) {\n                        console.warn(\"Could not resolve storyboard target.\", Animation.Storyboard.GetTargetName(this));\n                    }\n                    var refobj = { Value: resolution.Target };\n                    var targetProperty = resolution.Property.TryResolveDependencyProperty(refobj, promotedValues);\n                    resolution.Target = refobj.Value;\n                    if (!targetProperty) {\n                        error.Number = BError.XamlParse;\n                        var name = Animation.Storyboard.GetTargetName(this);\n                        error.Message = \"Could not resolve property for storyboard. (\" + name + \")->[\" + resolution.Property.Path.toString() + \"]\";\n                        return false;\n                    }\n                    if (!this.Resolve(resolution.Target, targetProperty)) {\n                        error.Number = BError.InvalidOperation;\n                        error.Message = \"Storyboard value could not be converted to the correct type\";\n                        return false;\n                    }\n                    this._AnimStorage = Animation.AnimationStore.Create(resolution.Target, targetProperty);\n                    this._AnimStorage.Animation = this;\n                    Animation.AnimationStore.Attach(this._AnimStorage);\n                    return true;\n                };\n                return AnimationBase;\n            })(Animation.Timeline);\n            Animation.AnimationBase = AnimationBase;\n            Fayde.CoreLibrary.add(AnimationBase);\n            function getLogMessage(action, anim, oldValue, newValue) {\n                var msg = \"ANIMATION:\" + action + \":\" + anim._ID + \"[\" + anim.constructor.name + \"]\";\n                msg += \";\" + (oldValue === undefined ? \"(undefined)\" : (oldValue === null ? \"(null)\" : oldValue.toString()));\n                msg += \"->\" + (newValue === undefined ? \"(undefined)\" : (newValue === null ? \"(null)\" : newValue.toString()));\n                return msg;\n            }\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var AnimationStore = (function () {\n                function AnimationStore() {\n                }\n                AnimationStore.Create = function (target, propd) {\n                    var baseValue = target.GetValue(propd);\n                    if (baseValue === undefined) {\n                        var targetType = propd.GetTargetType();\n                        if (targetType === Number)\n                            baseValue = 0;\n                        else if (targetType === String)\n                            baseValue = \"\";\n                        else\n                            baseValue = new targetType();\n                    }\n                    return {\n                        ID: createId(),\n                        Animation: undefined,\n                        PropStorage: Fayde.Providers.GetStorage(target, propd),\n                        IsDisabled: false,\n                        BaseValue: baseValue,\n                        CurrentValue: undefined,\n                        StopValue: undefined,\n                    };\n                };\n                AnimationStore.Attach = function (animStorage) {\n                    var storage = animStorage.PropStorage;\n                    var list = storage.Animations;\n                    if (!list)\n                        storage.Animations = list = [];\n                    var prevStorage = list[list.length - 1];\n                    list.push(animStorage);\n                    if (prevStorage) {\n                        animStorage.StopValue = prevStorage.StopValue;\n                        prevStorage.IsDisabled = true;\n                    }\n                    else {\n                        animStorage.StopValue = storage.Local;\n                    }\n                };\n                AnimationStore.Detach = function (animStorage) {\n                    var storage = animStorage.PropStorage;\n                    var list = storage.Animations;\n                    if (!list)\n                        return false;\n                    var len = list.length;\n                    if (len < 1)\n                        return false;\n                    var i = list.lastIndexOf(animStorage);\n                    if (i < 0)\n                        return false;\n                    if (i === (len - 1)) {\n                        list.pop();\n                        if (len > 1) {\n                            var last = list[len - 2];\n                            if (last.IsDisabled) {\n                                last.IsDisabled = false;\n                                AnimationStore.ApplyCurrent(last);\n                                return true;\n                            }\n                        }\n                    }\n                    else {\n                        list.splice(i, 1);\n                        list[i].StopValue = animStorage.StopValue;\n                    }\n                    return false;\n                };\n                AnimationStore.ApplyCurrent = function (animStorage) {\n                    var val = animStorage.CurrentValue;\n                    if (val === undefined)\n                        return;\n                    if (Animation.LogApply)\n                        console.log(getLogMessage(\"ApplyCurrent\", animStorage, val));\n                    var storage = animStorage.PropStorage;\n                    storage.Property.Store.SetLocalValue(storage, animStorage.CurrentValue);\n                };\n                AnimationStore.ApplyStop = function (animStorage) {\n                    var val = animStorage.StopValue;\n                    if (Animation.LogApply)\n                        console.log(getLogMessage(\"ApplyStop\", animStorage, val));\n                    var storage = animStorage.PropStorage;\n                    storage.Property.Store.SetLocalValue(storage, val);\n                };\n                return AnimationStore;\n            })();\n            Animation.AnimationStore = AnimationStore;\n            function getLogMessage(action, animStorage, val) {\n                var anim = animStorage.Animation;\n                var name = Animation.Storyboard.GetTargetName(animStorage.Animation);\n                if (anim.HasManualTarget)\n                    name = anim.ManualTarget.Name;\n                var prop = Animation.Storyboard.GetTargetProperty(anim);\n                var msg = \"ANIMATION:\" + action + \":\" + animStorage.ID + \"[\" + name + \"](\" + prop.Path + \")->\";\n                msg += val === undefined ? \"(undefined)\" : (val === null ? \"(null)\" : val.toString());\n                return msg;\n            }\n            var lastId = 0;\n            function createId() {\n                return lastId++;\n            }\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"AnimationBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var AnimationUsingKeyFrames = (function (_super) {\n                __extends(AnimationUsingKeyFrames, _super);\n                function AnimationUsingKeyFrames() {\n                    _super.call(this);\n                    var coll = AnimationUsingKeyFrames.KeyFramesProperty.Initialize(this);\n                    coll.AttachTo(this);\n                }\n                AnimationUsingKeyFrames.prototype.Resolve = function (target, propd) {\n                    var keyFrames = this.KeyFrames;\n                    var sortedList = Animation.KeyFrameCollection.ResolveKeyFrames(this, keyFrames);\n                    var count = sortedList.length;\n                    for (var j = 0; j < count; j++) {\n                        if (!sortedList[j].KeyTime.IsValid)\n                            return false;\n                    }\n                    return true;\n                };\n                AnimationUsingKeyFrames.prototype.GetCurrentValue = function (defaultOriginValue, defaultDestinationValue, clockData) {\n                    var keyFrames = this.KeyFrames;\n                    var prevFrameRef = { Value: null };\n                    var currentKeyFrame = keyFrames.GetKeyFrameForTime(clockData.CurrentTime, prevFrameRef);\n                    var prevFrame = prevFrameRef.Value;\n                    if (!currentKeyFrame)\n                        return null;\n                    var baseValue;\n                    var keyStartTime;\n                    var keyEndTime = currentKeyFrame._ResolvedKeyTime;\n                    if (!prevFrame) {\n                        baseValue = defaultOriginValue;\n                        keyStartTime = new TimeSpan();\n                    }\n                    else {\n                        if (prevFrame instanceof Animation.ObjectKeyFrame) {\n                            baseValue = prevFrame.ConvertedValue;\n                        }\n                        else {\n                            baseValue = prevFrame.Value;\n                        }\n                        keyStartTime = prevFrame._ResolvedKeyTime;\n                    }\n                    var progress;\n                    if (clockData.CurrentTime.CompareTo(keyEndTime) >= 0) {\n                        progress = 1.0;\n                    }\n                    else {\n                        var keyDuration = keyEndTime.Ticks - keyStartTime.Ticks;\n                        if (keyDuration <= 0)\n                            progress = 1.0;\n                        else\n                            progress = (clockData.CurrentTime.Ticks - keyStartTime.Ticks) / keyDuration;\n                    }\n                    return currentKeyFrame.InterpolateValue(baseValue, progress);\n                };\n                AnimationUsingKeyFrames.prototype.GetNaturalDurationCore = function () {\n                    var keyFrames = this.KeyFrames;\n                    var sortedList = Animation.KeyFrameCollection.ResolveKeyFrames(this, keyFrames);\n                    var len = sortedList.length;\n                    var ts;\n                    if (len > 0)\n                        ts = sortedList[len - 1]._ResolvedKeyTime;\n                    else\n                        ts = new TimeSpan();\n                    return new Duration(ts);\n                };\n                AnimationUsingKeyFrames.prototype.AddKeyFrame = function (kf) { this.KeyFrames.Add(kf); };\n                AnimationUsingKeyFrames.prototype.RemoveKeyFrame = function (kf) { this.KeyFrames.Remove(kf); };\n                AnimationUsingKeyFrames.KeyFramesProperty = DependencyProperty.RegisterImmutable(\"KeyFrames\", function () { return Animation.KeyFrameCollection; }, AnimationUsingKeyFrames);\n                return AnimationUsingKeyFrames;\n            })(Animation.AnimationBase);\n            Animation.AnimationUsingKeyFrames = AnimationUsingKeyFrames;\n            Fayde.CoreLibrary.add(AnimationUsingKeyFrames);\n            Fayde.Markup.Content(AnimationUsingKeyFrames, AnimationUsingKeyFrames.KeyFramesProperty);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/Triggers.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var BeginStoryboard = (function (_super) {\n                __extends(BeginStoryboard, _super);\n                function BeginStoryboard() {\n                    _super.apply(this, arguments);\n                }\n                BeginStoryboard.prototype.Fire = function () {\n                    var sb = this.Storyboard;\n                    if (sb)\n                        sb.Begin();\n                };\n                BeginStoryboard.StoryboardProperty = DependencyProperty.RegisterCore(\"Storyboard\", function () { return Animation.Storyboard; }, BeginStoryboard);\n                return BeginStoryboard;\n            })(Fayde.TriggerAction);\n            Animation.BeginStoryboard = BeginStoryboard;\n            Fayde.CoreLibrary.add(BeginStoryboard);\n            Fayde.Markup.Content(BeginStoryboard, BeginStoryboard.StoryboardProperty);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"AnimationBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var ColorAnimation = (function (_super) {\n                __extends(ColorAnimation, _super);\n                function ColorAnimation() {\n                    _super.call(this);\n                    this._FromCached = null;\n                    this._ToCached = null;\n                    this._ByCached = null;\n                    this._EasingCached = undefined;\n                }\n                ColorAnimation.prototype.GetCurrentValue = function (defaultOriginalValue, defaultDestinationValue, clockData) {\n                    var start = new Color();\n                    if (this._FromCached)\n                        start = this._FromCached;\n                    else if (defaultOriginalValue instanceof Color)\n                        start = defaultOriginalValue;\n                    var end = start;\n                    if (this._ToCached)\n                        end = this._ToCached;\n                    else if (this._ByCached)\n                        end = start.Add(this._ByCached);\n                    else if (defaultDestinationValue instanceof Color)\n                        end = defaultDestinationValue;\n                    var easingFunc = this._EasingCached;\n                    if (easingFunc)\n                        clockData.Progress = easingFunc.Ease(clockData.Progress);\n                    return Color.LERP(start, end, clockData.Progress);\n                };\n                ColorAnimation.prototype._FromChanged = function (args) {\n                    this._FromCached = args.NewValue;\n                };\n                ColorAnimation.prototype._ToChanged = function (args) {\n                    this._ToCached = args.NewValue;\n                };\n                ColorAnimation.prototype._ByChanged = function (args) {\n                    this._ByCached = args.NewValue;\n                };\n                ColorAnimation.prototype._EasingChanged = function (args) {\n                    this._EasingCached = args.NewValue;\n                };\n                ColorAnimation.prototype.GenerateFrom = function () {\n                    return new ColorAnimation();\n                };\n                ColorAnimation.prototype.GenerateTo = function (isEntering) {\n                    var val = this.From != null ? this.From : this.To;\n                    if (val == null)\n                        return null;\n                    var ca = new ColorAnimation();\n                    ca.To = val;\n                    return ca;\n                };\n                ColorAnimation.ByProperty = DependencyProperty.Register(\"By\", function () { return Color; }, ColorAnimation, null, function (d, args) { return d._ByChanged(args); });\n                ColorAnimation.EasingFunctionProperty = DependencyProperty.Register(\"EasingFunction\", function () { return Animation.EasingFunctionBase; }, ColorAnimation, undefined, function (d, args) { return d._EasingChanged(args); });\n                ColorAnimation.FromProperty = DependencyProperty.Register(\"From\", function () { return Color; }, ColorAnimation, null, function (d, args) { return d._FromChanged(args); });\n                ColorAnimation.ToProperty = DependencyProperty.Register(\"To\", function () { return Color; }, ColorAnimation, null, function (d, args) { return d._ToChanged(args); });\n                return ColorAnimation;\n            })(Animation.AnimationBase);\n            Animation.ColorAnimation = ColorAnimation;\n            Fayde.CoreLibrary.add(ColorAnimation);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"AnimationUsingKeyFrames.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var ColorAnimationUsingKeyFrames = (function (_super) {\n                __extends(ColorAnimationUsingKeyFrames, _super);\n                function ColorAnimationUsingKeyFrames() {\n                    _super.apply(this, arguments);\n                }\n                ColorAnimationUsingKeyFrames.prototype.GenerateFrom = function () {\n                    return new Animation.ColorAnimation();\n                };\n                ColorAnimationUsingKeyFrames.prototype.GenerateTo = function (isEntering) {\n                    var kfs = this.KeyFrames;\n                    if (kfs.Count === 0)\n                        return null;\n                    var val = (kfs.GetValueAt(isEntering ? 0 : kfs.Count - 1)).Value;\n                    if (val == null)\n                        return null;\n                    var ca = new Animation.ColorAnimation();\n                    ca.To = val;\n                    return ca;\n                };\n                return ColorAnimationUsingKeyFrames;\n            })(Animation.AnimationUsingKeyFrames);\n            Animation.ColorAnimationUsingKeyFrames = ColorAnimationUsingKeyFrames;\n            Fayde.CoreLibrary.add(ColorAnimationUsingKeyFrames);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\" />\n/// <reference path=\"../../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var KeyFrame = (function (_super) {\n                __extends(KeyFrame, _super);\n                function KeyFrame() {\n                    _super.apply(this, arguments);\n                    this._ResolvedKeyTime = null;\n                    this._Resolved = false;\n                }\n                KeyFrame.prototype.CoerceKeyTime = function (dobj, propd, value, coerced, error) {\n                    if (!value)\n                        coerced.Value = this.KeyTime;\n                    else\n                        coerced.Value = value;\n                    return true;\n                };\n                KeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    return undefined;\n                };\n                KeyFrame.prototype.CompareToTimeSpan = function (otherTs) {\n                    return this._ResolvedKeyTime.CompareTo(otherTs);\n                };\n                KeyFrame.prototype.Listen = function (listener) { this._Listener = listener; };\n                KeyFrame.prototype.Unlisten = function (listener) { if (this._Listener === listener)\n                    this._Listener = null; };\n                KeyFrame.prototype.InvalidateKeyFrame = function () {\n                    var listener = this._Listener;\n                    if (listener)\n                        listener.KeyFrameChanged(this);\n                };\n                KeyFrame.Comparer = function (kf1, kf2) {\n                    var ts1 = kf1._ResolvedKeyTime;\n                    var ts2 = kf2._ResolvedKeyTime;\n                    return ts1.CompareTo(ts2);\n                };\n                KeyFrame.ResolveKeyFrames = function (animation, arr) {\n                    var totalInterpolationTime;\n                    var hasTimeSpanKeyFrame = false;\n                    var highestKeyTimeTimeSpan = new TimeSpan();\n                    var keyFrame;\n                    var len = arr.length;\n                    var i;\n                    for (i = 0; i < len; i++) {\n                        keyFrame = arr[i];\n                        keyFrame._ResolvedKeyTime = new TimeSpan();\n                        keyFrame._Resolved = false;\n                    }\n                    var keyTime;\n                    for (i = 0; i < len; i++) {\n                        keyFrame = arr[i];\n                        keyTime = keyFrame.KeyTime;\n                        if (keyTime.HasTimeSpan) {\n                            hasTimeSpanKeyFrame = true;\n                            var ts = keyTime.TimeSpan;\n                            if (ts.CompareTo(highestKeyTimeTimeSpan) > 0)\n                                highestKeyTimeTimeSpan = ts;\n                            keyFrame._ResolvedKeyTime = ts;\n                            keyFrame._Resolved = true;\n                        }\n                    }\n                    var dur = animation.Duration;\n                    if (dur && dur.HasTimeSpan) {\n                        totalInterpolationTime = dur.TimeSpan;\n                    }\n                    else if (hasTimeSpanKeyFrame) {\n                        totalInterpolationTime = highestKeyTimeTimeSpan;\n                    }\n                    else {\n                        totalInterpolationTime = new TimeSpan(TimeSpan._TicksPerSecond);\n                    }\n                    for (i = 0; i < len; i++) {\n                        keyFrame = arr[i];\n                        keyTime = keyFrame.KeyTime;\n                        if (keyTime.HasPercent) {\n                            keyFrame._ResolvedKeyTime = totalInterpolationTime.Multiply(keyTime.Percent);\n                            keyFrame._Resolved = true;\n                        }\n                    }\n                    if (len > 0) {\n                        keyFrame = arr[len - 1];\n                        keyTime = keyFrame.KeyTime;\n                        if (keyTime.IsPaced || keyTime.IsUniform) {\n                            keyFrame._ResolvedKeyTime = totalInterpolationTime;\n                            keyFrame._Resolved = true;\n                        }\n                    }\n                    if (len > 0) {\n                        keyFrame = arr[len - 1];\n                        keyTime = keyFrame.KeyTime;\n                        if (!keyFrame._Resolved && keyTime.IsPaced) {\n                            keyFrame._ResolvedKeyTime = new TimeSpan();\n                            keyFrame._Resolved = true;\n                        }\n                    }\n                    return arr;\n                };\n                KeyFrame.KeyTimeProperty = DependencyProperty.Register(\"KeyTime\", function () { return KeyTime; }, KeyFrame, undefined, function (d, args) { return d.InvalidateKeyFrame(); });\n                return KeyFrame;\n            })(Fayde.DependencyObject);\n            Animation.KeyFrame = KeyFrame;\n            Fayde.CoreLibrary.add(KeyFrame);\n            var KeyFrameCollection = (function (_super) {\n                __extends(KeyFrameCollection, _super);\n                function KeyFrameCollection() {\n                    _super.apply(this, arguments);\n                    this._Resolved = false;\n                    this._SortedList = [];\n                }\n                KeyFrameCollection.prototype.GetKeyFrameForTime = function (t, prevFrameRef) {\n                    var currentKeyFrame = null;\n                    var previousKeyFrame = null;\n                    var i;\n                    var sortedList = this._SortedList;\n                    if (sortedList.length == 0) {\n                        prevFrameRef.Value = null;\n                        return null;\n                    }\n                    var keyFrame;\n                    var valuePropd;\n                    for (i = 0; i < sortedList.length; i++) {\n                        keyFrame = sortedList[i];\n                        if (keyFrame.CompareToTimeSpan(t) >= 0 || (i + 1) >= sortedList.length)\n                            break;\n                    }\n                    for (; i >= 0; i--) {\n                        keyFrame = sortedList[i];\n                        valuePropd = DependencyProperty.GetDependencyProperty(keyFrame.constructor, \"Value\");\n                        if (keyFrame.GetValue(valuePropd) !== undefined) {\n                            currentKeyFrame = keyFrame;\n                            break;\n                        }\n                    }\n                    for (i--; i >= 0; i--) {\n                        keyFrame = sortedList[i];\n                        valuePropd = DependencyProperty.GetDependencyProperty(keyFrame.constructor, \"Value\");\n                        if (keyFrame.GetValue(valuePropd) !== undefined) {\n                            previousKeyFrame = keyFrame;\n                            break;\n                        }\n                    }\n                    prevFrameRef.Value = previousKeyFrame;\n                    return currentKeyFrame;\n                };\n                KeyFrameCollection.prototype.Clear = function () {\n                    this._Resolved = false;\n                    this._SortedList = [];\n                    return _super.prototype.Clear.call(this);\n                };\n                KeyFrameCollection.prototype.AddingToCollection = function (value, error) {\n                    if (!_super.prototype.AddingToCollection.call(this, value, error))\n                        return false;\n                    this._Resolved = false;\n                    value.Listen(this);\n                    return true;\n                };\n                KeyFrameCollection.prototype.RemovedFromCollection = function (value, isValueSafe) {\n                    _super.prototype.RemovedFromCollection.call(this, value, isValueSafe);\n                    this._Resolved = false;\n                    value.Unlisten(this);\n                };\n                KeyFrameCollection.prototype.KeyFrameChanged = function (source) {\n                    this._Resolved = false;\n                };\n                KeyFrameCollection.ResolveKeyFrames = function (animation, coll) {\n                    if (coll._Resolved)\n                        return coll._SortedList;\n                    coll._SortedList = KeyFrame.ResolveKeyFrames(animation, coll._ht).slice(0);\n                    coll._SortedList.sort(KeyFrame.Comparer);\n                    coll._Resolved = true;\n                    return coll._SortedList;\n                };\n                return KeyFrameCollection;\n            })(Fayde.XamlObjectCollection);\n            Animation.KeyFrameCollection = KeyFrameCollection;\n            Fayde.CoreLibrary.add(KeyFrameCollection);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"KeyFrame.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var ColorKeyFrame = (function (_super) {\n                __extends(ColorKeyFrame, _super);\n                function ColorKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                ColorKeyFrame.ValueProperty = DependencyProperty.Register(\"Value\", function () { return Color; }, ColorKeyFrame);\n                return ColorKeyFrame;\n            })(Animation.KeyFrame);\n            Animation.ColorKeyFrame = ColorKeyFrame;\n            Fayde.CoreLibrary.add(ColorKeyFrame);\n            var DiscreteColorKeyFrame = (function (_super) {\n                __extends(DiscreteColorKeyFrame, _super);\n                function DiscreteColorKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                DiscreteColorKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.Value;\n                    return baseValue;\n                };\n                return DiscreteColorKeyFrame;\n            })(ColorKeyFrame);\n            Animation.DiscreteColorKeyFrame = DiscreteColorKeyFrame;\n            Fayde.CoreLibrary.add(DiscreteColorKeyFrame);\n            var EasingColorKeyFrame = (function (_super) {\n                __extends(EasingColorKeyFrame, _super);\n                function EasingColorKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                EasingColorKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.Value;\n                    var start = baseValue;\n                    var end = this.Value;\n                    var easingFunction = this.EasingFunction;\n                    if (easingFunction)\n                        keyFrameProgress = easingFunction.Ease(keyFrameProgress);\n                    return Color.LERP(start, end, keyFrameProgress);\n                };\n                EasingColorKeyFrame.EasingFunctionProperty = DependencyProperty.Register(\"EasingFunction\", function () { return Animation.EasingFunctionBase; }, EasingColorKeyFrame);\n                return EasingColorKeyFrame;\n            })(ColorKeyFrame);\n            Animation.EasingColorKeyFrame = EasingColorKeyFrame;\n            Fayde.CoreLibrary.add(EasingColorKeyFrame);\n            var LinearColorKeyFrame = (function (_super) {\n                __extends(LinearColorKeyFrame, _super);\n                function LinearColorKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                LinearColorKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    return Color.LERP(baseValue, this.Value, keyFrameProgress);\n                };\n                return LinearColorKeyFrame;\n            })(ColorKeyFrame);\n            Animation.LinearColorKeyFrame = LinearColorKeyFrame;\n            Fayde.CoreLibrary.add(LinearColorKeyFrame);\n            var SplineColorKeyFrame = (function (_super) {\n                __extends(SplineColorKeyFrame, _super);\n                function SplineColorKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                SplineColorKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.Value;\n                    var start = baseValue;\n                    var end = this.Value;\n                    var splineProgress = keyFrameProgress;\n                    var keySpline = this.KeySpline;\n                    if (keySpline)\n                        splineProgress = keySpline.GetSplineProgress(keyFrameProgress);\n                    return Color.LERP(start, end, splineProgress);\n                };\n                SplineColorKeyFrame.KeySplineProperty = DependencyProperty.Register(\"KeySpline\", function () { return Animation.KeySpline; }, SplineColorKeyFrame);\n                return SplineColorKeyFrame;\n            })(ColorKeyFrame);\n            Animation.SplineColorKeyFrame = SplineColorKeyFrame;\n            Fayde.CoreLibrary.add(SplineColorKeyFrame);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var Curves = (function () {\n                function Curves() {\n                }\n                Curves.QuadraticArrayYForX = function (arr, x, count) {\n                    for (var i = 0; i < count; i++) {\n                        if (x < arr[i].c2.x)\n                            return Curves.QuadraticYForX(x, arr[i]);\n                    }\n                    return 0.0;\n                };\n                Curves.QuadraticYForX = function (x, src) {\n                    var l = src.c2.x - src.c0.x;\n                    if (l <= 0)\n                        return 0.0;\n                    x = (x - src.c0.x) / l;\n                    return ((1 - x) * (1 - x)) * src.c0.y + ((2 * x) * (1 - x) * src.c1.y) + ((x * x) * src.c2.y);\n                };\n                Curves.SubdivideCubicAtLevel = function (b, lvl, src) {\n                    Curves.RecursiveSubdivide(b, lvl, 1, 0, src);\n                };\n                Curves.RecursiveSubdivide = function (b, lvl, currentlvl, pos, src) {\n                    var data = { b1: null, b2: null };\n                    Curves.SubdivideCubic(data, src);\n                    var b1 = data.b1;\n                    var b2 = data.b2;\n                    if (currentlvl === lvl) {\n                        b[pos] = b1;\n                        b[pos + 1] = b2;\n                        return pos + 2;\n                    }\n                    pos = Curves.RecursiveSubdivide(b, lvl, currentlvl + 1, pos, b1);\n                    pos = Curves.RecursiveSubdivide(b, lvl, currentlvl + 1, pos, b2);\n                    return pos;\n                };\n                Curves.SubdivideCubic = function (data, src) {\n                    var p01 = { x: 0, y: 0 }, p012 = { x: 0, y: 0 }, p0123 = { x: 0, y: 0 };\n                    var p12 = { x: 0, y: 0 }, p123 = { x: 0, y: 0 };\n                    var p23 = { x: 0, y: 0 };\n                    Curves.HalfLerpPoint(p01, src.c0, src.c1);\n                    Curves.HalfLerpPoint(p12, src.c1, src.c2);\n                    Curves.HalfLerpPoint(p23, src.c2, src.c3);\n                    Curves.HalfLerpPoint(p012, p01, p12);\n                    Curves.HalfLerpPoint(p123, p12, p23);\n                    Curves.HalfLerpPoint(p0123, p012, p123);\n                    data.b1 = {\n                        c0: src.c0,\n                        c1: p01,\n                        c2: p012,\n                        c3: p0123\n                    };\n                    data.b2 = {\n                        c0: p0123,\n                        c1: p123,\n                        c2: p23,\n                        c3: src.c3\n                    };\n                };\n                Curves.HalfLerpPoint = function (p, p1, p2) {\n                    p.x = p1.x + (p2.x - p1.x) * 0.5;\n                    p.y = p1.y + (p2.y - p1.y) * 0.5;\n                };\n                Curves.ConvertCubicsToQuadratics = function (srcArray, count) {\n                    var destArray = [];\n                    for (var i = 0; i < count; i++) {\n                        destArray.push(Curves.QuadraticFromCubic(srcArray[i]));\n                    }\n                    return destArray;\n                };\n                Curves.QuadraticFromCubic = function (src) {\n                    return {\n                        c0: {\n                            x: src.c0.x,\n                            y: src.c0.y\n                        },\n                        c1: {\n                            x: (src.c1.x + src.c2.x) / 2.0,\n                            y: (src.c1.y + src.c2.y) / 2.0\n                        },\n                        c2: {\n                            x: src.c3.x,\n                            y: src.c3.y\n                        }\n                    };\n                };\n                return Curves;\n            })();\n            Animation.Curves = Curves;\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"AnimationBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var DoubleAnimation = (function (_super) {\n                __extends(DoubleAnimation, _super);\n                function DoubleAnimation() {\n                    _super.call(this);\n                    this._FromCached = null;\n                    this._ToCached = null;\n                    this._ByCached = null;\n                    this._EasingCached = undefined;\n                }\n                DoubleAnimation.prototype.GetCurrentValue = function (defaultOriginalValue, defaultDestinationValue, clockData) {\n                    var start = 0.0;\n                    if (this._FromCached != null)\n                        start = this._FromCached;\n                    else if (defaultOriginalValue != null && typeof defaultOriginalValue === \"number\")\n                        start = defaultOriginalValue;\n                    var end = start;\n                    if (this._ToCached != null)\n                        end = this._ToCached;\n                    else if (this._ByCached != null)\n                        end = start + this._ByCached;\n                    else if (defaultDestinationValue != null && typeof defaultDestinationValue === \"number\")\n                        end = defaultDestinationValue;\n                    var easingFunc = this._EasingCached;\n                    if (easingFunc != null)\n                        clockData.Progress = easingFunc.Ease(clockData.Progress);\n                    return start + ((end - start) * clockData.Progress);\n                };\n                DoubleAnimation.prototype._FromChanged = function (args) {\n                    this._FromCached = args.NewValue;\n                };\n                DoubleAnimation.prototype._ToChanged = function (args) {\n                    this._ToCached = args.NewValue;\n                };\n                DoubleAnimation.prototype._ByChanged = function (args) {\n                    this._ByCached = args.NewValue;\n                };\n                DoubleAnimation.prototype._EasingChanged = function (args) {\n                    this._EasingCached = args.NewValue;\n                };\n                DoubleAnimation.prototype.GenerateFrom = function () {\n                    return new DoubleAnimation();\n                };\n                DoubleAnimation.prototype.GenerateTo = function (isEntering) {\n                    var val = (this.From != null) ? this.From : this.To;\n                    if (val == null)\n                        return null;\n                    var da = new DoubleAnimation();\n                    da.To = val;\n                    return da;\n                };\n                DoubleAnimation.ByProperty = DependencyProperty.Register(\"By\", function () { return Number; }, DoubleAnimation, null, function (d, args) { return d._ByChanged(args); });\n                DoubleAnimation.EasingFunctionProperty = DependencyProperty.Register(\"EasingFunction\", function () { return Animation.EasingFunctionBase; }, DoubleAnimation, undefined, function (d, args) { return d._EasingChanged(args); });\n                DoubleAnimation.FromProperty = DependencyProperty.Register(\"From\", function () { return Number; }, DoubleAnimation, null, function (d, args) { return d._FromChanged(args); });\n                DoubleAnimation.ToProperty = DependencyProperty.Register(\"To\", function () { return Number; }, DoubleAnimation, null, function (d, args) { return d._ToChanged(args); });\n                return DoubleAnimation;\n            })(Animation.AnimationBase);\n            Animation.DoubleAnimation = DoubleAnimation;\n            Fayde.CoreLibrary.add(DoubleAnimation);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"AnimationUsingKeyFrames.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var DoubleAnimationUsingKeyFrames = (function (_super) {\n                __extends(DoubleAnimationUsingKeyFrames, _super);\n                function DoubleAnimationUsingKeyFrames() {\n                    _super.apply(this, arguments);\n                }\n                DoubleAnimationUsingKeyFrames.prototype.GenerateFrom = function () {\n                    return new Animation.DoubleAnimation();\n                };\n                DoubleAnimationUsingKeyFrames.prototype.GenerateTo = function (isEntering) {\n                    var kfs = this.KeyFrames;\n                    if (kfs.Count === 0)\n                        return null;\n                    var val = (kfs.GetValueAt(isEntering ? 0 : kfs.Count - 1)).Value;\n                    if (val == null)\n                        return null;\n                    var da = new Animation.DoubleAnimation();\n                    da.To = val;\n                    return da;\n                };\n                return DoubleAnimationUsingKeyFrames;\n            })(Animation.AnimationUsingKeyFrames);\n            Animation.DoubleAnimationUsingKeyFrames = DoubleAnimationUsingKeyFrames;\n            Fayde.CoreLibrary.add(DoubleAnimationUsingKeyFrames);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"KeyFrame.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var DoubleKeyFrame = (function (_super) {\n                __extends(DoubleKeyFrame, _super);\n                function DoubleKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                DoubleKeyFrame.ValueProperty = DependencyProperty.Register(\"Value\", function () { return Number; }, DoubleKeyFrame);\n                return DoubleKeyFrame;\n            })(Animation.KeyFrame);\n            Animation.DoubleKeyFrame = DoubleKeyFrame;\n            Fayde.CoreLibrary.add(DoubleKeyFrame);\n            var DiscreteDoubleKeyFrame = (function (_super) {\n                __extends(DiscreteDoubleKeyFrame, _super);\n                function DiscreteDoubleKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                DiscreteDoubleKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.Value;\n                    return baseValue;\n                };\n                return DiscreteDoubleKeyFrame;\n            })(DoubleKeyFrame);\n            Animation.DiscreteDoubleKeyFrame = DiscreteDoubleKeyFrame;\n            Fayde.CoreLibrary.add(DiscreteDoubleKeyFrame);\n            var EasingDoubleKeyFrame = (function (_super) {\n                __extends(EasingDoubleKeyFrame, _super);\n                function EasingDoubleKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                EasingDoubleKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.Value;\n                    var start = baseValue;\n                    var end = this.Value;\n                    var easingFunction = this.EasingFunction;\n                    if (easingFunction)\n                        keyFrameProgress = easingFunction.Ease(keyFrameProgress);\n                    if (isNaN(start))\n                        start = 0;\n                    if (isNaN(end))\n                        end = 0;\n                    return start + (end - start) * keyFrameProgress;\n                };\n                EasingDoubleKeyFrame.EasingFunctionProperty = DependencyProperty.Register(\"EasingFunction\", function () { return Animation.EasingFunctionBase; }, EasingDoubleKeyFrame);\n                return EasingDoubleKeyFrame;\n            })(DoubleKeyFrame);\n            Animation.EasingDoubleKeyFrame = EasingDoubleKeyFrame;\n            Fayde.CoreLibrary.add(EasingDoubleKeyFrame);\n            var LinearDoubleKeyFrame = (function (_super) {\n                __extends(LinearDoubleKeyFrame, _super);\n                function LinearDoubleKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                LinearDoubleKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    var start = baseValue;\n                    var end = this.Value;\n                    if (isNaN(start))\n                        start = 0;\n                    if (isNaN(end))\n                        end = 0;\n                    return start + (end - start) * keyFrameProgress;\n                };\n                return LinearDoubleKeyFrame;\n            })(DoubleKeyFrame);\n            Animation.LinearDoubleKeyFrame = LinearDoubleKeyFrame;\n            Fayde.CoreLibrary.add(LinearDoubleKeyFrame);\n            var SplineDoubleKeyFrame = (function (_super) {\n                __extends(SplineDoubleKeyFrame, _super);\n                function SplineDoubleKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                SplineDoubleKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.Value;\n                    var start = baseValue;\n                    var end = this.Value;\n                    var splineProgress = keyFrameProgress;\n                    var keySpline = this.KeySpline;\n                    if (keySpline)\n                        splineProgress = keySpline.GetSplineProgress(keyFrameProgress);\n                    if (isNaN(start))\n                        start = 0;\n                    if (isNaN(end))\n                        end = 0;\n                    return start + (end - start) * splineProgress;\n                };\n                SplineDoubleKeyFrame.KeySplineProperty = DependencyProperty.Register(\"KeySpline\", function () { return Animation.KeySpline; }, SplineDoubleKeyFrame);\n                return SplineDoubleKeyFrame;\n            })(DoubleKeyFrame);\n            Animation.SplineDoubleKeyFrame = SplineDoubleKeyFrame;\n            Fayde.CoreLibrary.add(SplineDoubleKeyFrame);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var EasingFunctionBase = (function (_super) {\n                __extends(EasingFunctionBase, _super);\n                function EasingFunctionBase() {\n                    _super.apply(this, arguments);\n                }\n                EasingFunctionBase.prototype.Ease = function (normalizedTime) {\n                    var easingMode = this.EasingMode;\n                    switch (easingMode) {\n                        case Animation.EasingMode.EaseIn:\n                            return this.EaseInCore(normalizedTime);\n                        case Animation.EasingMode.EaseOut:\n                            return this.EaseInCore(1.0 - normalizedTime);\n                        case Animation.EasingMode.EaseInOut:\n                            return normalizedTime <= 0.5 ?\n                                this.EaseInCore(normalizedTime * 2) * 0.5 :\n                                1.0 - this.EaseInCore(((1.0 - normalizedTime) * 2) * 0.5);\n                        default:\n                            return 0.0;\n                    }\n                };\n                EasingFunctionBase.prototype.EaseInCore = function (t) {\n                    return t;\n                };\n                EasingFunctionBase.EasingModeProperty = DependencyProperty.Register(\"EasingMode\", function () { return new Fayde.Enum(Animation.EasingMode); }, EasingFunctionBase);\n                return EasingFunctionBase;\n            })(Fayde.DependencyObject);\n            Animation.EasingFunctionBase = EasingFunctionBase;\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"EasingFunctionBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var BackEase = (function (_super) {\n                __extends(BackEase, _super);\n                function BackEase() {\n                    _super.apply(this, arguments);\n                }\n                BackEase.prototype.EaseInCore = function (t) {\n                    var a = this.Amplitude;\n                    return (t * t * t) - (t * a * Math.sin(t * Math.PI));\n                };\n                BackEase.AmplitudeProperty = DependencyProperty.Register(\"Amplitude\", function () { return Number; }, BackEase);\n                return BackEase;\n            })(Animation.EasingFunctionBase);\n            Animation.BackEase = BackEase;\n            Fayde.CoreLibrary.add(BackEase);\n            var BounceEase = (function (_super) {\n                __extends(BounceEase, _super);\n                function BounceEase() {\n                    _super.apply(this, arguments);\n                }\n                BounceEase.prototype.EaseInCore = function (t) {\n                    t = 1 - t;\n                    var bounces = this.Bounces;\n                    var bounciness = this.Bounciness;\n                    var r = -1;\n                    var period = 2;\n                    for (var i = 0; i <= bounces; i++) {\n                        r += (period * Math.pow(1 + (bounciness / 2), -i));\n                    }\n                    var x1 = -1.0;\n                    var x2 = 0;\n                    var r_sq = r * r;\n                    var val = 100;\n                    var p = 0;\n                    while (val > 0.0) {\n                        x2 = x1 + period * Math.pow(1 + (bounciness / 2), -p++);\n                        val = r_sq * (t - x1 / r) * (t - x2 / r);\n                        x1 = x2;\n                    }\n                    return -val;\n                };\n                BounceEase.BouncesProperty = DependencyProperty.Register(\"Bounces\", function () { return Number; }, BounceEase, 3);\n                BounceEase.BouncinessProperty = DependencyProperty.Register(\"Bounciness\", function () { return Number; }, BounceEase, 2);\n                return BounceEase;\n            })(Animation.EasingFunctionBase);\n            Animation.BounceEase = BounceEase;\n            Fayde.CoreLibrary.add(BounceEase);\n            var CircleEase = (function (_super) {\n                __extends(CircleEase, _super);\n                function CircleEase() {\n                    _super.apply(this, arguments);\n                }\n                CircleEase.prototype.EaseInCore = function (t) {\n                    return 1 - Math.sqrt(1 - (t * t));\n                };\n                return CircleEase;\n            })(Animation.EasingFunctionBase);\n            Animation.CircleEase = CircleEase;\n            Fayde.CoreLibrary.add(CircleEase);\n            var CubicEase = (function (_super) {\n                __extends(CubicEase, _super);\n                function CubicEase() {\n                    _super.apply(this, arguments);\n                }\n                CubicEase.prototype.EaseInCore = function (t) {\n                    return t * t * t;\n                };\n                return CubicEase;\n            })(Animation.EasingFunctionBase);\n            Animation.CubicEase = CubicEase;\n            Fayde.CoreLibrary.add(CubicEase);\n            var ElasticEase = (function (_super) {\n                __extends(ElasticEase, _super);\n                function ElasticEase() {\n                    _super.apply(this, arguments);\n                }\n                ElasticEase.prototype.EaseInCore = function (t) {\n                    var period = 1.0 / (this.Oscillations + .25);\n                    var offset = period / 4;\n                    t = t - 1;\n                    return t * -Math.pow(2.0, this.Springiness * t) * Math.sin(((t - offset) * Math.PI * 2) / period);\n                };\n                ElasticEase.OscillationsProperty = DependencyProperty.Register(\"Oscillations\", function () { return Number; }, ElasticEase);\n                ElasticEase.SpringinessProperty = DependencyProperty.Register(\"Springiness\", function () { return Number; }, ElasticEase);\n                return ElasticEase;\n            })(Animation.EasingFunctionBase);\n            Animation.ElasticEase = ElasticEase;\n            Fayde.CoreLibrary.add(ElasticEase);\n            var ExponentialEase = (function (_super) {\n                __extends(ExponentialEase, _super);\n                function ExponentialEase() {\n                    _super.apply(this, arguments);\n                }\n                ExponentialEase.prototype.EaseInCore = function (t) {\n                    var e = this.Exponent;\n                    return (Math.exp(e * t) - 1) / (Math.exp(e) - 1);\n                };\n                ExponentialEase.ExponentProperty = DependencyProperty.Register(\"Exponent\", function () { return Number; }, ExponentialEase);\n                return ExponentialEase;\n            })(Animation.EasingFunctionBase);\n            Animation.ExponentialEase = ExponentialEase;\n            Fayde.CoreLibrary.add(ExponentialEase);\n            var PowerEase = (function (_super) {\n                __extends(PowerEase, _super);\n                function PowerEase() {\n                    _super.apply(this, arguments);\n                }\n                PowerEase.prototype.EaseInCore = function (t) {\n                    return Math.pow(t, this.Power);\n                };\n                PowerEase.PowerProperty = DependencyProperty.Register(\"Power\", function () { return Number; }, PowerEase);\n                return PowerEase;\n            })(Animation.EasingFunctionBase);\n            Animation.PowerEase = PowerEase;\n            Fayde.CoreLibrary.add(PowerEase);\n            var QuadraticEase = (function (_super) {\n                __extends(QuadraticEase, _super);\n                function QuadraticEase() {\n                    _super.apply(this, arguments);\n                }\n                QuadraticEase.prototype.EaseInCore = function (t) {\n                    return t * t;\n                };\n                return QuadraticEase;\n            })(Animation.EasingFunctionBase);\n            Animation.QuadraticEase = QuadraticEase;\n            Fayde.CoreLibrary.add(QuadraticEase);\n            var QuarticEase = (function (_super) {\n                __extends(QuarticEase, _super);\n                function QuarticEase() {\n                    _super.apply(this, arguments);\n                }\n                QuarticEase.prototype.EaseInCore = function (t) {\n                    return t * t * t * t;\n                };\n                return QuarticEase;\n            })(Animation.EasingFunctionBase);\n            Animation.QuarticEase = QuarticEase;\n            Fayde.CoreLibrary.add(QuarticEase);\n            var QuinticEase = (function (_super) {\n                __extends(QuinticEase, _super);\n                function QuinticEase() {\n                    _super.apply(this, arguments);\n                }\n                QuinticEase.prototype.EaseInCore = function (t) {\n                    return t * t * t * t * t;\n                };\n                return QuinticEase;\n            })(Animation.EasingFunctionBase);\n            Animation.QuinticEase = QuinticEase;\n            Fayde.CoreLibrary.add(QuinticEase);\n            var SineEase = (function (_super) {\n                __extends(SineEase, _super);\n                function SineEase() {\n                    _super.apply(this, arguments);\n                }\n                SineEase.prototype.EaseInCore = function (t) {\n                    return 1 - (Math.sin(1 - t) * (Math.PI / 2));\n                };\n                return SineEase;\n            })(Animation.EasingFunctionBase);\n            Animation.SineEase = SineEase;\n            Fayde.CoreLibrary.add(SineEase);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var KeySpline = (function (_super) {\n                __extends(KeySpline, _super);\n                function KeySpline() {\n                    _super.apply(this, arguments);\n                    this._QuadraticsArray = null;\n                }\n                KeySpline.prototype.GetSplineProgress = function (linearProgress) {\n                    if (linearProgress >= 1.0)\n                        return 1.0;\n                    if (linearProgress <= 0.0)\n                        return 0.0;\n                    if (!this._QuadraticsArray)\n                        this._RegenerateQuadratics();\n                    return Animation.Curves.QuadraticArrayYForX(this._QuadraticsArray, linearProgress, KeySpline.TOTAL_COUNT);\n                };\n                KeySpline.prototype.InvalidateControlPoints = function () {\n                    this._QuadraticsArray = null;\n                };\n                KeySpline.prototype._RegenerateQuadratics = function () {\n                    var c1 = this.ControlPoint1 || new Point(0, 0);\n                    var c2 = this.ControlPoint2 || new Point(1.0, 1.0);\n                    var src = {\n                        c0: { x: 0.0, y: 0.0 },\n                        c1: { x: c1.x, y: c1.y },\n                        c2: { x: c2.x, y: c2.y },\n                        c3: { x: 1.0, y: 1.0 }\n                    };\n                    var carr = [];\n                    Animation.Curves.SubdivideCubicAtLevel(carr, KeySpline.PRECISION_LEVEL, src);\n                    this._QuadraticsArray = Animation.Curves.ConvertCubicsToQuadratics(carr, KeySpline.TOTAL_COUNT);\n                };\n                KeySpline.PRECISION_LEVEL = 4;\n                KeySpline.TOTAL_COUNT = Math.pow(2, KeySpline.PRECISION_LEVEL);\n                KeySpline.ControlPoint1Property = DependencyProperty.RegisterCore(\"ControlPoint1\", function () { return Point; }, KeySpline, undefined, function (d, args) { return d.InvalidateControlPoints(); });\n                KeySpline.ControlPoint2Property = DependencyProperty.RegisterCore(\"ControlPoint2\", function () { return Point; }, KeySpline, undefined, function (d, args) { return d.InvalidateControlPoints(); });\n                return KeySpline;\n            })(Fayde.DependencyObject);\n            Animation.KeySpline = KeySpline;\n            Fayde.CoreLibrary.add(KeySpline);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"AnimationUsingKeyFrames.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var ObjectAnimationUsingKeyFrames = (function (_super) {\n                __extends(ObjectAnimationUsingKeyFrames, _super);\n                function ObjectAnimationUsingKeyFrames() {\n                    _super.apply(this, arguments);\n                }\n                ObjectAnimationUsingKeyFrames.prototype.Resolve = function (target, propd) {\n                    for (var en = this.KeyFrames.getEnumerator(); en.moveNext();) {\n                        var keyFrame = en.current;\n                        var value = keyFrame.Value;\n                        if (value == null) {\n                            keyFrame.ConvertedValue = undefined;\n                        }\n                        else {\n                            var cv = convertKeyFrame(propd, value);\n                            if (cv === BAD_CONVERSION)\n                                return false;\n                            keyFrame.ConvertedValue = cv;\n                        }\n                    }\n                    return _super.prototype.Resolve.call(this, target, propd);\n                };\n                return ObjectAnimationUsingKeyFrames;\n            })(Animation.AnimationUsingKeyFrames);\n            Animation.ObjectAnimationUsingKeyFrames = ObjectAnimationUsingKeyFrames;\n            Fayde.CoreLibrary.add(ObjectAnimationUsingKeyFrames);\n            var BAD_CONVERSION = {};\n            function convertKeyFrame(propd, value) {\n                try {\n                    return nullstone.convertAnyToType(value, propd.GetTargetType());\n                }\n                catch (err) {\n                    console.warn(\"Error resolving ObjectAnimation Value.\");\n                    return BAD_CONVERSION;\n                }\n            }\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"KeyFrame.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var ObjectKeyFrame = (function (_super) {\n                __extends(ObjectKeyFrame, _super);\n                function ObjectKeyFrame() {\n                    _super.apply(this, arguments);\n                    this.ConvertedValue = undefined;\n                }\n                ObjectKeyFrame.ValueProperty = DependencyProperty.Register(\"Value\", function () { return Object; }, ObjectKeyFrame);\n                return ObjectKeyFrame;\n            })(Animation.KeyFrame);\n            Animation.ObjectKeyFrame = ObjectKeyFrame;\n            Fayde.CoreLibrary.add(ObjectKeyFrame);\n            var DiscreteObjectKeyFrame = (function (_super) {\n                __extends(DiscreteObjectKeyFrame, _super);\n                function DiscreteObjectKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                DiscreteObjectKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.ConvertedValue;\n                    return baseValue;\n                };\n                return DiscreteObjectKeyFrame;\n            })(ObjectKeyFrame);\n            Animation.DiscreteObjectKeyFrame = DiscreteObjectKeyFrame;\n            Fayde.CoreLibrary.add(DiscreteObjectKeyFrame);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"AnimationBase.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var PointAnimation = (function (_super) {\n                __extends(PointAnimation, _super);\n                function PointAnimation() {\n                    _super.call(this);\n                    this._FromCached = null;\n                    this._ToCached = null;\n                    this._ByCached = null;\n                    this._EasingCached = undefined;\n                }\n                PointAnimation.prototype.GetCurrentValue = function (defaultOriginalValue, defaultDestinationValue, clockData) {\n                    var start = new Point();\n                    if (this._FromCached != null)\n                        start = this._FromCached;\n                    else if (defaultOriginalValue instanceof Point)\n                        start = defaultOriginalValue;\n                    var end = start;\n                    if (this._ToCached != null)\n                        end = this._ToCached;\n                    else if (this._ByCached != null)\n                        end = new Point(start.x + this._ByCached.x, start.y + this._ByCached.y);\n                    else if (defaultDestinationValue instanceof Point)\n                        end = defaultDestinationValue;\n                    var easingFunc = this._EasingCached;\n                    if (easingFunc != null)\n                        clockData.Progress = easingFunc.Ease(clockData.Progress);\n                    return Point.LERP(start, end, clockData.Progress);\n                };\n                PointAnimation.prototype._FromChanged = function (args) {\n                    this._FromCached = args.NewValue;\n                };\n                PointAnimation.prototype._ToChanged = function (args) {\n                    this._ToCached = args.NewValue;\n                };\n                PointAnimation.prototype._ByChanged = function (args) {\n                    this._ByCached = args.NewValue;\n                };\n                PointAnimation.prototype._EasingChanged = function (args) {\n                    this._EasingCached = args.NewValue;\n                };\n                PointAnimation.prototype.GenerateFrom = function () {\n                    return new PointAnimation();\n                };\n                PointAnimation.prototype.GenerateTo = function (isEntering) {\n                    var val = (this.From != null) ? this.From : this.To;\n                    if (val == null)\n                        return null;\n                    var pa = new PointAnimation();\n                    pa.To = val;\n                    return pa;\n                };\n                PointAnimation.ByProperty = DependencyProperty.Register(\"By\", function () { return Point; }, PointAnimation, null, function (d, args) { return d._ByChanged(args); });\n                PointAnimation.EasingFunctionProperty = DependencyProperty.Register(\"EasingFunction\", function () { return Animation.EasingFunctionBase; }, PointAnimation, undefined, function (d, args) { return d._EasingChanged(args); });\n                PointAnimation.FromProperty = DependencyProperty.Register(\"From\", function () { return Point; }, PointAnimation, null, function (d, args) { return d._FromChanged(args); });\n                PointAnimation.ToProperty = DependencyProperty.Register(\"To\", function () { return Point; }, PointAnimation, null, function (d, args) { return d._ToChanged(args); });\n                return PointAnimation;\n            })(Animation.AnimationBase);\n            Animation.PointAnimation = PointAnimation;\n            Fayde.CoreLibrary.add(PointAnimation);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"AnimationUsingKeyFrames.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var PointAnimationUsingKeyFrames = (function (_super) {\n                __extends(PointAnimationUsingKeyFrames, _super);\n                function PointAnimationUsingKeyFrames() {\n                    _super.apply(this, arguments);\n                }\n                PointAnimationUsingKeyFrames.prototype.GenerateFrom = function () {\n                    return new Animation.PointAnimation();\n                };\n                PointAnimationUsingKeyFrames.prototype.GenerateTo = function (isEntering) {\n                    var kfs = this.KeyFrames;\n                    if (kfs.Count === 0)\n                        return null;\n                    var val = (kfs.GetValueAt(isEntering ? 0 : kfs.Count - 1)).Value;\n                    if (val == null)\n                        return null;\n                    var pa = new Animation.PointAnimation();\n                    pa.To = val;\n                    return pa;\n                };\n                return PointAnimationUsingKeyFrames;\n            })(Animation.AnimationUsingKeyFrames);\n            Animation.PointAnimationUsingKeyFrames = PointAnimationUsingKeyFrames;\n            Fayde.CoreLibrary.add(PointAnimationUsingKeyFrames);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"KeyFrame.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var PointKeyFrame = (function (_super) {\n                __extends(PointKeyFrame, _super);\n                function PointKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                PointKeyFrame.ValueProperty = DependencyProperty.Register(\"Value\", function () { return Point; }, PointKeyFrame);\n                return PointKeyFrame;\n            })(Animation.KeyFrame);\n            Animation.PointKeyFrame = PointKeyFrame;\n            Fayde.CoreLibrary.add(PointKeyFrame);\n            var DiscretePointKeyFrame = (function (_super) {\n                __extends(DiscretePointKeyFrame, _super);\n                function DiscretePointKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                DiscretePointKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.Value;\n                    return baseValue;\n                };\n                return DiscretePointKeyFrame;\n            })(PointKeyFrame);\n            Animation.DiscretePointKeyFrame = DiscretePointKeyFrame;\n            Fayde.CoreLibrary.add(DiscretePointKeyFrame);\n            var EasingPointKeyFrame = (function (_super) {\n                __extends(EasingPointKeyFrame, _super);\n                function EasingPointKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                EasingPointKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.Value;\n                    var start = baseValue;\n                    var end = this.Value;\n                    var easingFunction = this.EasingFunction;\n                    if (easingFunction)\n                        keyFrameProgress = easingFunction.Ease(keyFrameProgress);\n                    return Point.LERP(start, end, keyFrameProgress);\n                };\n                EasingPointKeyFrame.EasingFunctionProperty = DependencyProperty.Register(\"EasingFunction\", function () { return Animation.EasingFunctionBase; }, EasingPointKeyFrame);\n                return EasingPointKeyFrame;\n            })(PointKeyFrame);\n            Animation.EasingPointKeyFrame = EasingPointKeyFrame;\n            Fayde.CoreLibrary.add(EasingPointKeyFrame);\n            var LinearPointKeyFrame = (function (_super) {\n                __extends(LinearPointKeyFrame, _super);\n                function LinearPointKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                LinearPointKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    return Point.LERP(baseValue, this.Value, keyFrameProgress);\n                };\n                return LinearPointKeyFrame;\n            })(PointKeyFrame);\n            Animation.LinearPointKeyFrame = LinearPointKeyFrame;\n            Fayde.CoreLibrary.add(LinearPointKeyFrame);\n            var SplinePointKeyFrame = (function (_super) {\n                __extends(SplinePointKeyFrame, _super);\n                function SplinePointKeyFrame() {\n                    _super.apply(this, arguments);\n                }\n                SplinePointKeyFrame.prototype.InterpolateValue = function (baseValue, keyFrameProgress) {\n                    if (keyFrameProgress >= 1.0)\n                        return this.Value;\n                    var start = baseValue;\n                    var end = this.Value;\n                    var splineProgress = keyFrameProgress;\n                    var keySpline = this.KeySpline;\n                    if (keySpline)\n                        splineProgress = keySpline.GetSplineProgress(keyFrameProgress);\n                    if (isNaN(start.x))\n                        start.x = 0;\n                    if (isNaN(start.y))\n                        start.y = 0;\n                    if (isNaN(end.x))\n                        end.x = 0;\n                    if (isNaN(end.y))\n                        end.y = 0;\n                    return Point.LERP(start, end, splineProgress);\n                };\n                SplinePointKeyFrame.KeySplineProperty = DependencyProperty.Register(\"KeySpline\", function () { return Animation.KeySpline; }, SplinePointKeyFrame);\n                return SplinePointKeyFrame;\n            })(PointKeyFrame);\n            Animation.SplinePointKeyFrame = SplinePointKeyFrame;\n            Fayde.CoreLibrary.add(SplinePointKeyFrame);\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Timeline.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Animation;\n        (function (Animation) {\n            var Storyboard = (function (_super) {\n                __extends(Storyboard, _super);\n                function Storyboard() {\n                    _super.call(this);\n                    var coll = Storyboard.ChildrenProperty.Initialize(this);\n                    coll.AttachTo(this);\n                }\n                Storyboard.GetTargetName = function (d) {\n                    return d.GetValue(Storyboard.TargetNameProperty);\n                };\n                Storyboard.SetTargetName = function (d, value) {\n                    return d.SetValue(Storyboard.TargetNameProperty, value);\n                };\n                Storyboard.GetTargetProperty = function (d) {\n                    return d.GetValue(Storyboard.TargetPropertyProperty);\n                };\n                Storyboard.SetTargetProperty = function (d, value) {\n                    return d.SetValue(Storyboard.TargetPropertyProperty, value);\n                };\n                Storyboard.ResolveTarget = function (timeline) {\n                    var res = {\n                        Target: undefined,\n                        Property: undefined\n                    };\n                    if (timeline.HasManualTarget) {\n                        res.Target = timeline.ManualTarget;\n                    }\n                    else {\n                        var targetName = Storyboard.GetTargetName(timeline);\n                        if (targetName)\n                            res.Target = timeline.FindName(targetName, true);\n                    }\n                    res.Property = Storyboard.GetTargetProperty(timeline);\n                    return res;\n                };\n                Storyboard.SetTarget = function (timeline, target) {\n                    timeline.ManualTarget = target;\n                };\n                Storyboard.prototype.Begin = function () {\n                    if (Animation.Log)\n                        console.log(getLogMessage(\"Storyboard.Begin\", this, true));\n                    this.Reset();\n                    var error = new BError();\n                    var promotedValues = [];\n                    var enumerator = this.Children.getEnumerator();\n                    while (enumerator.moveNext()) {\n                        var animation = enumerator.current;\n                        if (!animation._Hookup(promotedValues, error))\n                            error.ThrowException();\n                    }\n                    Fayde.Application.Current.RegisterStoryboard(this);\n                };\n                Storyboard.prototype.Pause = function () {\n                    _super.prototype.Pause.call(this);\n                    for (var en = this.Children.getEnumerator(); en.moveNext();) {\n                        en.current.Pause();\n                    }\n                };\n                Storyboard.prototype.Resume = function () {\n                    _super.prototype.Resume.call(this);\n                    for (var en = this.Children.getEnumerator(); en.moveNext();) {\n                        en.current.Resume();\n                    }\n                };\n                Storyboard.prototype.Stop = function () {\n                    if (Animation.Log)\n                        console.log(getLogMessage(\"Storyboard.Stop\", this, false));\n                    _super.prototype.Stop.call(this);\n                    Fayde.Application.Current.UnregisterStoryboard(this);\n                    for (var en = this.Children.getEnumerator(); en.moveNext();) {\n                        en.current.Stop();\n                    }\n                };\n                Storyboard.prototype.UpdateInternal = function (clockData) {\n                    if (Animation.Log)\n                        console.log(getLogMessage(\"Storyboard.UpdateInternal\", this, false, clockData));\n                    for (var en = this.Children.getEnumerator(); en.moveNext();) {\n                        en.current.Update(clockData.CurrentTime.Ticks);\n                    }\n                };\n                Storyboard.prototype.GetNaturalDurationCore = function () {\n                    var fullTicks = 0;\n                    for (var en = this.Children.getEnumerator(); en.moveNext();) {\n                        var timeline = en.current;\n                        var dur = timeline.GetNaturalDuration();\n                        if (dur.IsAutomatic)\n                            continue;\n                        if (dur.IsForever)\n                            return Duration.Forever;\n                        var spanTicks = dur.TimeSpan.Ticks;\n                        var repeat = timeline.RepeatBehavior || Animation.Timeline.DEFAULT_REPEAT_BEHAVIOR;\n                        if (repeat.IsForever)\n                            return Duration.Forever;\n                        if (repeat.HasCount)\n                            spanTicks = spanTicks * repeat.Count;\n                        if (timeline.AutoReverse)\n                            spanTicks *= 2;\n                        if (repeat.HasDuration)\n                            spanTicks = repeat.Duration.TimeSpan.Ticks;\n                        if (spanTicks !== 0)\n                            spanTicks = spanTicks / timeline.SpeedRatio;\n                        var bt = timeline.BeginTime;\n                        if (bt)\n                            spanTicks += bt.Ticks;\n                        if (fullTicks === 0 || fullTicks <= spanTicks)\n                            fullTicks = spanTicks;\n                    }\n                    if (!fullTicks)\n                        return Duration.Automatic;\n                    return new Duration(new TimeSpan(fullTicks));\n                };\n                Storyboard.TargetNameProperty = DependencyProperty.RegisterAttached(\"TargetName\", function () { return String; }, Storyboard);\n                Storyboard.TargetPropertyProperty = DependencyProperty.RegisterAttached(\"TargetProperty\", function () { return Fayde.Data.PropertyPath; }, Storyboard);\n                Storyboard.ChildrenProperty = DependencyProperty.RegisterImmutable(\"Children\", function () { return Animation.TimelineCollection; }, Storyboard);\n                return Storyboard;\n            })(Animation.Timeline);\n            Animation.Storyboard = Storyboard;\n            Fayde.CoreLibrary.add(Storyboard);\n            Fayde.Markup.Content(Storyboard, Storyboard.ChildrenProperty);\n            function getLogMessage(action, storyboard, full, clockData) {\n                var anims = [];\n                var cur = \"\";\n                var enumerator = storyboard.Children.getEnumerator();\n                var animation;\n                while (enumerator.moveNext()) {\n                    animation = enumerator.current;\n                    cur = \"\";\n                    cur += \"(\";\n                    cur += animation.constructor.name;\n                    cur += \":\";\n                    cur += Storyboard.GetTargetName(animation);\n                    cur += \":\";\n                    var path = Storyboard.GetTargetProperty(animation);\n                    cur += path ? path.Path : \"\";\n                    cur += \")\";\n                    anims.push(cur);\n                }\n                var msg = \"ANIMATION:\" + action + \":\" + storyboard._ID;\n                if (clockData)\n                    msg += \"(\" + (clockData.Progress * 100).toFixed(0) + \"%)\";\n                if (full)\n                    msg += \"->[\" + anims.join(\",\") + \"]\";\n                return msg;\n            }\n        })(Animation = Media.Animation || (Media.Animation = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\" />\n/// <reference path=\"../GeneralTransform.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Effects;\n        (function (Effects) {\n            var Effect = (function (_super) {\n                __extends(Effect, _super);\n                function Effect() {\n                    _super.apply(this, arguments);\n                }\n                Effect.prototype.PreRender = function (ctx) {\n                };\n                Effect.prototype.PostRender = function (ctx) {\n                };\n                Effect.prototype.GetPadding = function (thickness) {\n                    return false;\n                };\n                Effect.EffectMappingProperty = DependencyProperty.Register(\"EffectMapping\", function () { return Media.GeneralTransform; }, Effect);\n                return Effect;\n            })(Fayde.DependencyObject);\n            Effects.Effect = Effect;\n            Fayde.CoreLibrary.add(Effect);\n            var reactions;\n            (function (reactions) {\n                Fayde.DPReaction(Effect.EffectMappingProperty, function (dobj, ov, nv) { return Fayde.Incite(dobj); });\n            })(reactions || (reactions = {}));\n        })(Effects = Media.Effects || (Media.Effects = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Effect.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Effects;\n        (function (Effects) {\n            var BlurEffect = (function (_super) {\n                __extends(BlurEffect, _super);\n                function BlurEffect() {\n                    _super.apply(this, arguments);\n                }\n                BlurEffect.RadiusProperty = DependencyProperty.Register(\"Radius\", function () { return Number; }, BlurEffect, undefined, Fayde.Incite);\n                return BlurEffect;\n            })(Effects.Effect);\n            Effects.BlurEffect = BlurEffect;\n            Fayde.CoreLibrary.add(BlurEffect);\n        })(Effects = Media.Effects || (Media.Effects = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"Effect.ts\" />\n/// <reference path=\"../../Primitives/Color.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Effects;\n        (function (Effects) {\n            var DropShadowEffect = (function (_super) {\n                __extends(DropShadowEffect, _super);\n                function DropShadowEffect() {\n                    _super.apply(this, arguments);\n                }\n                DropShadowEffect.prototype.GetPadding = function (thickness) {\n                    var radius = Math.min(this.BlurRadius, DropShadowEffect.MAX_BLUR_RADIUS);\n                    var depth = Math.min(Math.max(0, this.ShadowDepth), DropShadowEffect.MAX_SHADOW_DEPTH);\n                    var direction = this.Direction * Math.PI / 180.0;\n                    var width = Math.ceil(radius);\n                    var offsetX = Math.cos(direction) * depth;\n                    var offsetY = Math.sin(direction) * depth;\n                    var left = -offsetX + width;\n                    var top = offsetY + width;\n                    var right = offsetX + width;\n                    var bottom = -offsetY + width;\n                    var l = left < 1.0 ? 1.0 : Math.ceil(left);\n                    var t = top < 1.0 ? 1.0 : Math.ceil(top);\n                    var r = right < 1.0 ? 1.0 : Math.ceil(right);\n                    var b = bottom < 1.0 ? 1.0 : Math.ceil(bottom);\n                    var changed = thickness.left !== l\n                        || thickness.top !== t\n                        || thickness.right !== r\n                        || thickness.bottom !== b;\n                    thickness.left = l;\n                    thickness.top = t;\n                    thickness.right = r;\n                    thickness.bottom = b;\n                    return changed;\n                };\n                DropShadowEffect.prototype.PreRender = function (ctx) {\n                    var color = this.Color;\n                    var opacity = color.A * this.Opacity;\n                    var radius = Math.min(this.BlurRadius, DropShadowEffect.MAX_BLUR_RADIUS);\n                    var depth = Math.min(Math.max(0, this.ShadowDepth), DropShadowEffect.MAX_SHADOW_DEPTH);\n                    var direction = this.Direction * Math.PI / 180.0;\n                    var offsetX = Math.cos(direction) * depth;\n                    var offsetY = -Math.sin(direction) * depth;\n                    var raw = ctx.raw;\n                    raw.shadowColor = \"rgba(\" + color.R + \",\" + color.G + \",\" + color.B + \",\" + opacity + \")\";\n                    raw.shadowBlur = radius;\n                    raw.shadowOffsetX = offsetX;\n                    raw.shadowOffsetY = offsetY;\n                };\n                DropShadowEffect.MAX_BLUR_RADIUS = 20;\n                DropShadowEffect.MAX_SHADOW_DEPTH = 300;\n                DropShadowEffect.BlurRadiusProperty = DependencyProperty.Register(\"BlurRadius\", function () { return Number; }, DropShadowEffect, 5.0, Fayde.Incite);\n                DropShadowEffect.ColorProperty = DependencyProperty.Register(\"Color\", function () { return Color; }, DropShadowEffect, Color.KnownColors.Black, Fayde.Incite);\n                DropShadowEffect.DirectionProperty = DependencyProperty.Register(\"Direction\", function () { return Number; }, DropShadowEffect, 315.0, Fayde.Incite);\n                DropShadowEffect.OpacityProperty = DependencyProperty.Register(\"Opacity\", function () { return Number; }, DropShadowEffect, 1.0, Fayde.Incite);\n                DropShadowEffect.ShadowDepthProperty = DependencyProperty.Register(\"ShadowDepth\", function () { return Number; }, DropShadowEffect, 5.0, Fayde.Incite);\n                return DropShadowEffect;\n            })(Effects.Effect);\n            Effects.DropShadowEffect = DropShadowEffect;\n            Fayde.CoreLibrary.add(DropShadowEffect);\n        })(Effects = Media.Effects || (Media.Effects = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Imaging;\n        (function (Imaging) {\n            var ImageSource = (function (_super) {\n                __extends(ImageSource, _super);\n                function ImageSource() {\n                    _super.call(this);\n                    this.$element = null;\n                }\n                Object.defineProperty(ImageSource.prototype, \"pixelWidth\", {\n                    get: function () {\n                        return this.GetValue(ImageSource.PixelWidthProperty);\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(ImageSource.prototype, \"pixelHeight\", {\n                    get: function () {\n                        return this.GetValue(ImageSource.PixelHeightProperty);\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(ImageSource.prototype, \"isEmpty\", {\n                    get: function () {\n                        return !this.$element;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                ImageSource.prototype.draw = function (ctx) {\n                    ctx.drawImage(this.$element, 0, 0);\n                };\n                ImageSource.prototype.createPattern = function (ctx) {\n                    ctx.rect(0, 0, this.pixelWidth, this.pixelHeight);\n                    return ctx.createPattern(this.$element, \"no-repeat\");\n                };\n                ImageSource.prototype.reset = function () {\n                    this.$element = this.createElement();\n                    this.setMetrics(0, 0);\n                };\n                ImageSource.prototype.createElement = function () {\n                    return undefined;\n                };\n                ImageSource.prototype.setMetrics = function (pixelWidth, pixelHeight) {\n                    this.SetCurrentValue(ImageSource.PixelWidthProperty, pixelWidth);\n                    this.SetCurrentValue(ImageSource.PixelHeightProperty, pixelHeight);\n                };\n                ImageSource.PixelWidthProperty = DependencyProperty.RegisterReadOnly(\"PixelWidth\", function () { return Number; }, ImageSource, 0);\n                ImageSource.PixelHeightProperty = DependencyProperty.RegisterReadOnly(\"PixelHeight\", function () { return Number; }, ImageSource, 0);\n                return ImageSource;\n            })(Fayde.DependencyObject);\n            Imaging.ImageSource = ImageSource;\n            Fayde.CoreLibrary.add(ImageSource);\n        })(Imaging = Media.Imaging || (Media.Imaging = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"ImageSource.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Imaging;\n        (function (Imaging) {\n            var BitmapSource = (function (_super) {\n                __extends(BitmapSource, _super);\n                function BitmapSource() {\n                    _super.apply(this, arguments);\n                    this.$watchers = [];\n                }\n                BitmapSource.prototype.createElement = function () {\n                    return new Image();\n                };\n                BitmapSource.prototype.reset = function () {\n                    var _this = this;\n                    _super.prototype.reset.call(this);\n                    this.$element.onerror = function (e) { return _this.onImageErrored(e); };\n                    this.$element.onload = function (e) {\n                        _this.onImageLoaded();\n                        _this.onImageChanged();\n                    };\n                    this.onImageChanged();\n                };\n                BitmapSource.prototype.watch = function (watcher) {\n                    var watchers = this.$watchers;\n                    watchers.push(watcher);\n                    return {\n                        dispose: function () {\n                            var index = watchers.indexOf(watcher);\n                            if (index > -1)\n                                watchers.splice(index, 1);\n                        }\n                    };\n                };\n                BitmapSource.prototype.onImageLoaded = function () {\n                    this.setMetrics(this.$element.naturalWidth, this.$element.naturalHeight);\n                    for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\n                        watchers[i].onLoaded(this);\n                    }\n                };\n                BitmapSource.prototype.onImageErrored = function (e) {\n                    console.warn(\"Failed to load: \" + this.$element.src.toString());\n                    for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\n                        watchers[i].onErrored(this, e.error);\n                    }\n                };\n                BitmapSource.prototype.onImageChanged = function () {\n                    for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\n                        watchers[i].onChanged(this);\n                    }\n                };\n                return BitmapSource;\n            })(Imaging.ImageSource);\n            Imaging.BitmapSource = BitmapSource;\n            Fayde.CoreLibrary.add(BitmapSource);\n        })(Imaging = Media.Imaging || (Media.Imaging = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"BitmapSource.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Imaging;\n        (function (Imaging) {\n            var BitmapImage = (function (_super) {\n                __extends(BitmapImage, _super);\n                function BitmapImage(uri) {\n                    _super.call(this);\n                    this.ImageFailed = new nullstone.Event();\n                    this.ImageOpened = new nullstone.Event();\n                    this._BackingBuffer = null;\n                    if (uri)\n                        this.UriSource = uri;\n                }\n                BitmapImage.prototype.OnUriSourceChanged = function (oldValue, newValue) {\n                    if (Fayde.Uri.isNullOrEmpty(newValue)) {\n                        this.reset();\n                    }\n                    else {\n                        if (!this.$element || !newValue)\n                            this.reset();\n                        this.$element.src = Fayde.TypeManager.resolveResource(newValue);\n                        this.onImageChanged();\n                    }\n                };\n                BitmapImage.prototype.onImageErrored = function (e) {\n                    _super.prototype.onImageErrored.call(this, e);\n                    this.ImageFailed.raise(this, null);\n                };\n                BitmapImage.prototype.onImageLoaded = function () {\n                    _super.prototype.onImageLoaded.call(this);\n                    this.ImageOpened.raise(this, null);\n                };\n                BitmapImage.prototype.SetSource = function (buffer) {\n                    this._BackingBuffer = buffer;\n                    this.UriSource = Imaging.encodeImage(buffer);\n                };\n                BitmapImage.UriSourceProperty = DependencyProperty.RegisterFull(\"UriSource\", function () { return Fayde.Uri; }, BitmapImage, undefined, function (bi, args) { return bi.OnUriSourceChanged(args.OldValue, args.NewValue); }, undefined, true);\n                return BitmapImage;\n            })(Imaging.BitmapSource);\n            Imaging.BitmapImage = BitmapImage;\n            Fayde.CoreLibrary.add(BitmapImage);\n            nullstone.registerTypeConverter(Imaging.ImageSource, function (val) {\n                if (!val)\n                    return null;\n                if (val instanceof Imaging.ImageSource)\n                    return val;\n                if (val instanceof ArrayBuffer) {\n                    var bi = new BitmapImage();\n                    bi.SetSource(val);\n                    return bi;\n                }\n                var bi = new BitmapImage();\n                bi.UriSource = nullstone.convertAnyToType(val, Fayde.Uri);\n                return bi;\n            });\n        })(Imaging = Media.Imaging || (Media.Imaging = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../TileBrush.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Imaging;\n        (function (Imaging) {\n            var ImageBrush = (function (_super) {\n                __extends(ImageBrush, _super);\n                function ImageBrush() {\n                    _super.apply(this, arguments);\n                    this.ImageFailed = new nullstone.Event();\n                    this.ImageOpened = new nullstone.Event();\n                    this.$watcher = null;\n                }\n                ImageBrush._SourceCoercer = function (d, propd, value) {\n                    if (typeof value === \"string\")\n                        return new Media.Imaging.BitmapImage(new Fayde.Uri(value));\n                    if (value instanceof Fayde.Uri)\n                        return new Media.Imaging.BitmapImage(value);\n                    return value;\n                };\n                ImageBrush.prototype.setupBrush = function (ctx, bounds) {\n                    var source = this.ImageSource;\n                    if (source && !source.isEmpty)\n                        _super.prototype.setupBrush.call(this, ctx, bounds);\n                };\n                ImageBrush.prototype.GetTileExtents = function () {\n                    var source = this.ImageSource;\n                    return new minerva.Rect(0, 0, source.pixelWidth, source.pixelHeight);\n                };\n                ImageBrush.prototype.DrawTile = function (canvasCtx, bounds) {\n                    var source = this.ImageSource;\n                    canvasCtx.fillStyle = source.createPattern(canvasCtx);\n                    canvasCtx.fill();\n                };\n                ImageBrush.prototype._ImageSourceChanged = function (args) {\n                    var _this = this;\n                    if (this.$watcher) {\n                        this.$watcher.dispose();\n                        this.$watcher = null;\n                    }\n                    if (args.NewValue instanceof Imaging.BitmapSource) {\n                        this.$watcher = args.NewValue.watch({\n                            onErrored: function (source, error) { return _this.OnImageErrored(source, error); },\n                            onLoaded: function (source) { return _this.OnImageLoaded(source); },\n                            onChanged: function (source) { return _this.OnImageChanged(source); }\n                        });\n                    }\n                    this.InvalidateBrush();\n                };\n                ImageBrush.prototype.OnImageErrored = function (source, error) {\n                    this.ImageFailed.raise(this, null);\n                };\n                ImageBrush.prototype.OnImageLoaded = function (source) {\n                    this.ImageOpened.raise(this, null);\n                };\n                ImageBrush.prototype.OnImageChanged = function (source) {\n                    this.InvalidateBrush();\n                };\n                ImageBrush.ImageSourceProperty = DependencyProperty.RegisterFull(\"ImageSource\", function () { return Imaging.ImageSource; }, ImageBrush, undefined, function (d, args) { return d._ImageSourceChanged(args); }, ImageBrush._SourceCoercer);\n                return ImageBrush;\n            })(Media.TileBrush);\n            Imaging.ImageBrush = ImageBrush;\n            Fayde.CoreLibrary.add(ImageBrush);\n        })(Imaging = Media.Imaging || (Media.Imaging = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Imaging;\n        (function (Imaging) {\n            function encodeImage(buffer) {\n                var bytes = new Uint8Array(buffer);\n                var data = convertToBase64(bytes);\n                var type = getImageType(bytes);\n                return new Fayde.Uri(\"data:\" + type + \";base64,\" + data);\n            }\n            Imaging.encodeImage = encodeImage;\n            function getImageType(bytes) {\n                if (isJpg(bytes))\n                    return \"image/jpeg\";\n                if (isPng(bytes))\n                    return \"image/png\";\n                return \"image/jpeg\";\n            }\n            function convertToBase64(bytes) {\n                var arr = [];\n                for (var i = 0; i < bytes.byteLength; i++) {\n                    arr.push(String.fromCharCode(bytes[i]));\n                }\n                return window.btoa(arr.join(''));\n            }\n            function isJpg(bytes) {\n                return bytes[0] === 0xFF\n                    && bytes[1] === 0xD8\n                    && bytes[bytes.length - 2] === 0xFF\n                    && bytes[bytes.length - 1] === 0xD9;\n            }\n            function isPng(bytes) {\n                return bytes[0] === 0x89\n                    && bytes[1] === 0x50\n                    && bytes[2] === 0x4E\n                    && bytes[3] === 0x47\n                    && bytes[4] === 0x0D\n                    && bytes[5] === 0x0A\n                    && bytes[6] === 0x1A\n                    && bytes[7] === 0x0A;\n            }\n        })(Imaging = Media.Imaging || (Media.Imaging = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var LinearGradient;\n        (function (LinearGradient) {\n            function createRepeatInterpolator(start, end, bounds) {\n                var first = { x: start.x, y: start.y };\n                var last = { x: end.x, y: end.y };\n                var dir = { x: end.x - start.x, y: end.y - start.y };\n                LinearGradient.calcMetrics(dir, first, last, bounds);\n                var numSteps = (last.x - first.x) / dir.x;\n                var stepSize = 1.0 / numSteps;\n                var cur = -stepSize;\n                return {\n                    x0: first.x,\n                    y0: first.y,\n                    x1: last.x,\n                    y1: last.y,\n                    step: function () {\n                        cur += stepSize;\n                        return cur < 1;\n                    },\n                    interpolate: function (offset) {\n                        return cur + (offset / numSteps);\n                    }\n                };\n            }\n            LinearGradient.createRepeatInterpolator = createRepeatInterpolator;\n            function createReflectInterpolator(start, end, bounds) {\n                var first = { x: start.x, y: start.y };\n                var last = { x: end.x, y: end.y };\n                var dir = { x: end.x - start.x, y: end.y - start.y };\n                LinearGradient.calcMetrics(dir, first, last, bounds);\n                var numSteps = (last.x - first.x) / dir.x;\n                var stepSize = 1.0 / numSteps;\n                var cur = -stepSize;\n                var inverted = Math.round((start.x - first.x) / dir.x) % 2 === 0;\n                return {\n                    x0: first.x,\n                    y0: first.y,\n                    x1: last.x,\n                    y1: last.y,\n                    step: function () {\n                        inverted = !inverted;\n                        cur += stepSize;\n                        return cur < 1;\n                    },\n                    interpolate: function (offset) {\n                        var norm = offset / numSteps;\n                        return !inverted ? cur + norm : cur + (stepSize - norm);\n                    }\n                };\n            }\n            LinearGradient.createReflectInterpolator = createReflectInterpolator;\n        })(LinearGradient = Media.LinearGradient || (Media.LinearGradient = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var LinearGradient;\n        (function (LinearGradient) {\n            function calcMetrics(dir, first, last, bounds) {\n                if (dir.y === 0) {\n                    if (dir.x < 0)\n                        W(dir, first, last, bounds);\n                    else if (dir.x !== 0)\n                        E(dir, first, last, bounds);\n                }\n                else if (dir.x === 0) {\n                    if (dir.y < 0)\n                        N(dir, first, last, bounds);\n                    else if (dir.y !== 0)\n                        S(dir, first, last, bounds);\n                }\n                else if (dir.x < 0 && dir.y < 0) {\n                    NW(dir, first, last, bounds);\n                }\n                else if (dir.x < 0 && dir.y > 0) {\n                    SW(dir, first, last, bounds);\n                }\n                else if (dir.x > 0 && dir.y < 0) {\n                    NE(dir, first, last, bounds);\n                }\n                else if (dir.x > 0 && dir.y > 0) {\n                    SE(dir, first, last, bounds);\n                }\n            }\n            LinearGradient.calcMetrics = calcMetrics;\n            function E(dir, first, last, bounds) {\n                var maxX = bounds.x + bounds.width;\n                while (first.x >= bounds.x)\n                    first.x -= dir.x;\n                while (last.x <= maxX)\n                    last.x += dir.x;\n            }\n            function W(dir, first, last, bounds) {\n                var maxX = bounds.x + bounds.width;\n                while (first.x <= maxX)\n                    first.x -= dir.x;\n                while (last.x >= bounds.x)\n                    last.x += dir.x;\n            }\n            function S(dir, first, last, bounds) {\n                var maxY = bounds.y + bounds.height;\n                while (first.y >= bounds.y)\n                    first.y -= dir.y;\n                while (last.y <= maxY)\n                    last.y += dir.y;\n            }\n            function N(dir, first, last, bounds) {\n                var maxY = bounds.y + bounds.height;\n                while (first.y <= maxY)\n                    first.y -= dir.y;\n                while (last.y >= bounds.y)\n                    last.y += dir.y;\n            }\n            function NW(dir, first, last, bounds) {\n                var maxX = bounds.x + bounds.width;\n                var maxY = bounds.y + bounds.height;\n                while (first.x <= maxX && first.y <= maxY) {\n                    first.x -= dir.x;\n                    first.y -= dir.y;\n                }\n                while (last.x >= bounds.x && last.y >= bounds.y) {\n                    last.x += dir.x;\n                    last.y += dir.y;\n                }\n            }\n            function SW(dir, first, last, bounds) {\n                var maxX = bounds.x + bounds.width;\n                var maxY = bounds.y + bounds.height;\n                while (first.x <= maxX && first.y >= bounds.y) {\n                    first.x -= dir.x;\n                    first.y -= dir.y;\n                }\n                while (last.x >= bounds.x && last.y <= maxY) {\n                    last.x += dir.x;\n                    last.y += dir.y;\n                }\n            }\n            function NE(dir, first, last, bounds) {\n                var maxX = bounds.x + bounds.width;\n                var maxY = bounds.y + bounds.height;\n                while (first.x >= bounds.x && first.y <= maxY) {\n                    first.x -= dir.x;\n                    first.y -= dir.y;\n                }\n                while (last.x <= maxX && last.y >= bounds.y) {\n                    last.x += dir.x;\n                    last.y += dir.y;\n                }\n            }\n            function SE(dir, first, last, bounds) {\n                var maxX = bounds.x + bounds.width;\n                var maxY = bounds.y + bounds.height;\n                while (first.x >= bounds.x && first.y >= bounds.y) {\n                    first.x -= dir.x;\n                    first.y -= dir.y;\n                }\n                while (last.x <= maxX && last.y <= maxY) {\n                    last.x += dir.x;\n                    last.y += dir.y;\n                }\n            }\n        })(LinearGradient = Media.LinearGradient || (Media.LinearGradient = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var RadialGradient;\n        (function (RadialGradient) {\n            function createExtender(data, bounds) {\n                var started = false;\n                var dx = data.x1 - data.x0;\n                var dy = data.y1 - data.y0;\n                var rstep = data.r1;\n                var reached = false;\n                var ext = {\n                    x0: data.x0,\n                    y0: data.y0,\n                    r0: 0,\n                    x1: data.x1,\n                    y1: data.y1,\n                    r1: data.r1,\n                    step: function () {\n                        if (!started) {\n                            started = true;\n                            return true;\n                        }\n                        ext.x0 = ext.x1;\n                        ext.y0 = ext.y1;\n                        ext.r0 += rstep;\n                        ext.r1 += rstep;\n                        ext.x1 += dx;\n                        ext.y1 += dy;\n                        if (reached)\n                            return false;\n                        reached = exceedBounds(ext.x1, ext.y1, ext.r1, bounds);\n                        return true;\n                    },\n                    createGradient: function (ctx) {\n                        return ctx.createRadialGradient(ext.x0, ext.y0, ext.r0, ext.x1, ext.y1, ext.r1);\n                    }\n                };\n                return ext;\n            }\n            RadialGradient.createExtender = createExtender;\n            function exceedBounds(cx, cy, radius, bounds) {\n                var ne = len(cx, cy, bounds.x, bounds.y);\n                var nw = len(cx, cy, bounds.x + bounds.width, bounds.y);\n                var sw = len(cx, cy, bounds.x + bounds.width, bounds.y + bounds.height);\n                var se = len(cx, cy, bounds.x, bounds.y + bounds.height);\n                return Math.max(ne, nw, sw, se) < radius;\n            }\n            function len(x1, y1, x2, y2) {\n                var dx = x2 - x1;\n                var dy = y2 - y1;\n                return Math.sqrt((dx * dx) + (dy * dy));\n            }\n        })(RadialGradient = Media.RadialGradient || (Media.RadialGradient = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\" />\n/// <reference path=\"../../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var VSM;\n        (function (VSM) {\n            var VisualState = (function (_super) {\n                __extends(VisualState, _super);\n                function VisualState() {\n                    _super.apply(this, arguments);\n                }\n                VisualState.StoryboardProperty = DependencyProperty.Register(\"Storyboard\", function () { return Media.Animation.Storyboard; }, VisualState);\n                return VisualState;\n            })(Fayde.DependencyObject);\n            VSM.VisualState = VisualState;\n            Fayde.CoreLibrary.add(VisualState);\n            Fayde.Markup.Content(VisualState, VisualState.StoryboardProperty);\n            var VisualStateCollection = (function (_super) {\n                __extends(VisualStateCollection, _super);\n                function VisualStateCollection() {\n                    _super.apply(this, arguments);\n                }\n                return VisualStateCollection;\n            })(Fayde.XamlObjectCollection);\n            VSM.VisualStateCollection = VisualStateCollection;\n            Fayde.CoreLibrary.add(VisualStateCollection);\n        })(VSM = Media.VSM || (Media.VSM = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\" />\n/// <reference path=\"../../Core/XamlObjectCollection.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var VSM;\n        (function (VSM) {\n            var VisualStateChangedEventArgs = (function () {\n                function VisualStateChangedEventArgs(oldState, newState, control) {\n                    Object.defineProperty(this, \"OldState\", { value: oldState, writable: false });\n                    Object.defineProperty(this, \"NewState\", { value: newState, writable: false });\n                    Object.defineProperty(this, \"Control\", { value: control, writable: false });\n                }\n                return VisualStateChangedEventArgs;\n            })();\n            VSM.VisualStateChangedEventArgs = VisualStateChangedEventArgs;\n            var VisualStateGroup = (function (_super) {\n                __extends(VisualStateGroup, _super);\n                function VisualStateGroup() {\n                    _super.call(this);\n                    this._CurrentStoryboards = [];\n                    this.CurrentStateChanging = new nullstone.Event();\n                    this.CurrentStateChanged = new nullstone.Event();\n                    this.CurrentState = null;\n                    VisualStateGroup.StatesProperty.Initialize(this);\n                    VisualStateGroup.TransitionsProperty.Initialize(this);\n                }\n                Object.defineProperty(VisualStateGroup.prototype, \"CurrentStoryboards\", {\n                    get: function () {\n                        return this._CurrentStoryboards.slice(0);\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                VisualStateGroup.prototype.GetState = function (stateName) {\n                    var enumerator = this.States.getEnumerator();\n                    var state;\n                    while (enumerator.moveNext()) {\n                        state = enumerator.current;\n                        if (state.Name === stateName)\n                            return state;\n                    }\n                    return null;\n                };\n                VisualStateGroup.prototype.StartNewThenStopOld = function (element, newStoryboards) {\n                    var i;\n                    var storyboard;\n                    var res = element.Resources;\n                    for (i = 0; i < newStoryboards.length; i++) {\n                        storyboard = newStoryboards[i];\n                        if (storyboard == null)\n                            continue;\n                        res.Set(storyboard._ID, storyboard);\n                        try {\n                            storyboard.Begin();\n                        }\n                        catch (err) {\n                            for (var j = 0; j <= i; j++) {\n                                if (newStoryboards[j] != null)\n                                    res.Set(newStoryboards[j]._ID, undefined);\n                            }\n                            console.warn(err);\n                        }\n                    }\n                    this.StopCurrentStoryboards(element);\n                    var curStoryboards = this._CurrentStoryboards;\n                    for (i = 0; i < newStoryboards.length; i++) {\n                        if (newStoryboards[i] == null)\n                            continue;\n                        curStoryboards.push(newStoryboards[i]);\n                    }\n                };\n                VisualStateGroup.prototype.StopCurrentStoryboards = function (element) {\n                    var curStoryboards = this._CurrentStoryboards;\n                    var storyboard;\n                    for (var en = nullstone.IEnumerator_.fromArray(curStoryboards); en.moveNext();) {\n                        storyboard = en.current;\n                        if (!storyboard)\n                            continue;\n                        element.Resources.Set(storyboard._ID, undefined);\n                        storyboard.Stop();\n                    }\n                    this._CurrentStoryboards = [];\n                };\n                VisualStateGroup.prototype.Deactivate = function () {\n                    for (var en = nullstone.IEnumerator_.fromArray(this._CurrentStoryboards); en.moveNext();) {\n                        en.current && en.current.Pause();\n                    }\n                };\n                VisualStateGroup.prototype.Activate = function () {\n                    for (var en = nullstone.IEnumerator_.fromArray(this._CurrentStoryboards); en.moveNext();) {\n                        en.current && en.current.Resume();\n                    }\n                };\n                VisualStateGroup.prototype.RaiseCurrentStateChanging = function (element, oldState, newState, control) {\n                    this.CurrentStateChanging.raise(this, new VisualStateChangedEventArgs(oldState, newState, control));\n                };\n                VisualStateGroup.prototype.RaiseCurrentStateChanged = function (element, oldState, newState, control) {\n                    this.CurrentStateChanged.raise(this, new VisualStateChangedEventArgs(oldState, newState, control));\n                };\n                VisualStateGroup.StatesProperty = DependencyProperty.RegisterImmutable(\"States\", function () { return VSM.VisualStateCollection; }, VisualStateGroup);\n                VisualStateGroup.TransitionsProperty = DependencyProperty.RegisterImmutable(\"Transitions\", function () { return Fayde.XamlObjectCollection; }, VisualStateGroup);\n                return VisualStateGroup;\n            })(Fayde.DependencyObject);\n            VSM.VisualStateGroup = VisualStateGroup;\n            Fayde.CoreLibrary.add(VisualStateGroup);\n            Fayde.Markup.Content(VisualStateGroup, VisualStateGroup.StatesProperty);\n            var VisualStateGroupCollection = (function (_super) {\n                __extends(VisualStateGroupCollection, _super);\n                function VisualStateGroupCollection() {\n                    _super.apply(this, arguments);\n                }\n                return VisualStateGroupCollection;\n            })(Fayde.XamlObjectCollection);\n            VSM.VisualStateGroupCollection = VisualStateGroupCollection;\n            Fayde.CoreLibrary.add(VisualStateGroupCollection);\n        })(VSM = Media.VSM || (Media.VSM = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var VSM;\n        (function (VSM) {\n            var VisualStateManager = (function (_super) {\n                __extends(VisualStateManager, _super);\n                function VisualStateManager() {\n                    _super.apply(this, arguments);\n                }\n                VisualStateManager.GetVisualStateGroups = function (d) { return d.GetValue(VisualStateManager.VisualStateGroupsProperty); };\n                VisualStateManager.SetVisualStateGroups = function (d, value) { d.SetValue(VisualStateManager.VisualStateGroupsProperty, value); };\n                VisualStateManager.GetCustomVisualStateManager = function (d) { return d.GetValue(VisualStateManager.CustomVisualStateManagerProperty); };\n                VisualStateManager.SetCustomVisualStateManager = function (d, value) { d.SetValue(VisualStateManager.CustomVisualStateManagerProperty, value); };\n                VisualStateManager.GoToState = function (control, stateName, useTransitions) {\n                    if (!control)\n                        throw new ArgumentException(\"control\");\n                    if (!stateName)\n                        throw new ArgumentException(\"stateName\");\n                    var root = VisualStateManager._GetTemplateRoot(control);\n                    if (!root)\n                        return false;\n                    var groups = VisualStateManager.GetVisualStateGroups(root);\n                    if (!groups)\n                        return false;\n                    var data = { group: null, state: null };\n                    if (!VisualStateManager._TryGetState(groups, stateName, data))\n                        return false;\n                    var customVsm = VisualStateManager.GetCustomVisualStateManager(root);\n                    if (customVsm) {\n                        return customVsm.GoToStateCore(control, root, stateName, data.group, data.state, useTransitions);\n                    }\n                    else if (data.state != null) {\n                        return VisualStateManager.GoToStateInternal(control, root, data.group, data.state, useTransitions);\n                    }\n                    return false;\n                };\n                VisualStateManager.prototype.GoToStateCore = function (control, element, stateName, group, state, useTransitions) {\n                    return VisualStateManager.GoToStateInternal(control, element, group, state, useTransitions);\n                };\n                VisualStateManager.GoToStateInternal = function (control, element, group, state, useTransitions) {\n                    var lastState = group.CurrentState;\n                    if (lastState === state)\n                        return true;\n                    if (VSM.Debug && window.console) {\n                        console.log(\"VSM:GoToState:[\" + control._ID + \"]\" + (lastState ? lastState.Name : \"()\") + \"-->\" + state.Name);\n                    }\n                    var transition = useTransitions ? VisualStateManager._GetTransition(element, group, lastState, state) : null;\n                    var storyboard;\n                    if (transition == null || (transition.GeneratedDuration.IsZero && ((storyboard = transition.Storyboard) == null || storyboard.Duration.IsZero))) {\n                        if (transition != null && storyboard != null) {\n                            group.StartNewThenStopOld(element, [storyboard, state.Storyboard]);\n                        }\n                        else {\n                            group.StartNewThenStopOld(element, [state.Storyboard]);\n                        }\n                        group.RaiseCurrentStateChanging(element, lastState, state, control);\n                        group.RaiseCurrentStateChanged(element, lastState, state, control);\n                    }\n                    else {\n                        var dynamicTransition = genDynamicTransAnimations(element, group, state, transition);\n                        transition.DynamicStoryboardCompleted = false;\n                        var dynamicCompleted = function (sender, e) {\n                            if (transition.Storyboard == null || transition.ExplicitStoryboardCompleted === true) {\n                                group.StartNewThenStopOld(element, [state.Storyboard]);\n                                group.RaiseCurrentStateChanged(element, lastState, state, control);\n                            }\n                            transition.DynamicStoryboardCompleted = true;\n                        };\n                        var eventClosure = {};\n                        dynamicTransition.Completed.on(dynamicCompleted, eventClosure);\n                        if (transition.Storyboard != null && transition.ExplicitStoryboardCompleted === true) {\n                            var transitionCompleted = function (sender, e) {\n                                if (transition.DynamicStoryboardCompleted === true) {\n                                    group.StartNewThenStopOld(element, [state.Storyboard]);\n                                    group.RaiseCurrentStateChanged(element, lastState, state, control);\n                                }\n                                transition.Storyboard.Completed.off(transitionCompleted, eventClosure);\n                                transition.ExplicitStoryboardCompleted = true;\n                            };\n                            transition.ExplicitStoryboardCompleted = false;\n                            transition.Storyboard.Completed.on(transitionCompleted, eventClosure);\n                        }\n                        group.StartNewThenStopOld(element, [transition.Storyboard, dynamicTransition]);\n                        group.RaiseCurrentStateChanging(element, lastState, state, control);\n                    }\n                    group.CurrentState = state;\n                    return true;\n                };\n                VisualStateManager.DestroyStoryboards = function (control, root) {\n                    if (!root)\n                        return false;\n                    var groups = VisualStateManager.GetVisualStateGroups(root);\n                    if (!groups)\n                        return false;\n                    var enumerator = groups.getEnumerator();\n                    while (enumerator.moveNext()) {\n                        enumerator.current.StopCurrentStoryboards(root);\n                    }\n                };\n                VisualStateManager.Deactivate = function (control, root) {\n                    if (!root)\n                        return false;\n                    var groups = VisualStateManager.GetVisualStateGroups(root);\n                    if (!groups)\n                        return false;\n                    for (var en = groups.getEnumerator(); en.moveNext();) {\n                        en.current.Deactivate();\n                    }\n                };\n                VisualStateManager.Activate = function (control, root) {\n                    if (!root)\n                        return false;\n                    var groups = VisualStateManager.GetVisualStateGroups(root);\n                    if (!groups)\n                        return false;\n                    for (var en = groups.getEnumerator(); en.moveNext();) {\n                        en.current.Activate();\n                    }\n                };\n                VisualStateManager._GetTemplateRoot = function (control) {\n                    if (control instanceof Fayde.Controls.UserControl)\n                        return control.XamlNode.TemplateRoot;\n                    var enumerator = control.XamlNode.GetVisualTreeEnumerator();\n                    var node = null;\n                    if (enumerator.moveNext()) {\n                        node = enumerator.current;\n                        if (!(node instanceof Fayde.FENode))\n                            node = null;\n                    }\n                    return (node) ? node.XObject : null;\n                };\n                VisualStateManager.GetGroup = function (control, name) {\n                    var root = VisualStateManager._GetTemplateRoot(control);\n                    if (!root)\n                        return null;\n                    var groups = VisualStateManager.GetVisualStateGroups(root);\n                    if (!groups)\n                        return null;\n                    var enumerator = groups.getEnumerator();\n                    while (enumerator.moveNext()) {\n                        if (enumerator.current.Name === name)\n                            return enumerator.current;\n                    }\n                    return null;\n                };\n                VisualStateManager._TryGetState = function (groups, stateName, data) {\n                    var enumerator = groups.getEnumerator();\n                    while (enumerator.moveNext()) {\n                        data.group = enumerator.current;\n                        data.state = data.group.GetState(stateName);\n                        if (data.state)\n                            return true;\n                    }\n                    data.group = null;\n                    data.state = null;\n                    return false;\n                };\n                VisualStateManager._GetTransition = function (element, group, from, to) {\n                    if (!element)\n                        throw new ArgumentException(\"element\");\n                    if (!group)\n                        throw new ArgumentException(\"group\");\n                    if (!to)\n                        throw new ArgumentException(\"to\");\n                    var best = null;\n                    var defaultTransition = null;\n                    var bestScore = -1;\n                    var enumerator = group.Transitions.getEnumerator();\n                    var transition;\n                    while (enumerator.moveNext()) {\n                        transition = enumerator.current;\n                        if (!defaultTransition && transition.IsDefault) {\n                            defaultTransition = transition;\n                            continue;\n                        }\n                        var score = -1;\n                        var transFromState = group.GetState(transition.From);\n                        var transToState = group.GetState(transition.To);\n                        if (from === transFromState)\n                            score += 1;\n                        else if (transFromState != null)\n                            continue;\n                        if (to === transToState)\n                            score += 2;\n                        else if (transToState != null)\n                            continue;\n                        if (score > bestScore) {\n                            bestScore = score;\n                            best = transition;\n                        }\n                    }\n                    if (best != null)\n                        return best;\n                    return defaultTransition;\n                };\n                VisualStateManager.VisualStateGroupsProperty = DependencyProperty.RegisterAttachedCore(\"VisualStateGroups\", function () { return VSM.VisualStateGroupCollection; }, VisualStateManager);\n                VisualStateManager.CustomVisualStateManagerProperty = DependencyProperty.RegisterAttachedCore(\"CustomVisualStateManager\", function () { return VisualStateManager; }, VisualStateManager);\n                return VisualStateManager;\n            })(Fayde.DependencyObject);\n            VSM.VisualStateManager = VisualStateManager;\n            Fayde.CoreLibrary.add(VisualStateManager);\n            var Storyboard = Media.Animation.Storyboard;\n            function genDynamicTransAnimations(root, group, state, transition) {\n                var dynamic = new Media.Animation.Storyboard();\n                if (transition != null) {\n                    dynamic.Duration = transition.GeneratedDuration;\n                }\n                else {\n                    dynamic.Duration = new Duration(new TimeSpan());\n                }\n                var currentAnimations = flattenTimelines(group.CurrentStoryboards);\n                var transitionAnimations = flattenTimelines([transition != null ? transition.Storyboard : null]);\n                var newStateAnimations = flattenTimelines([state.Storyboard]);\n                for (var i = 0, len = transitionAnimations.length; i < len; i++) {\n                    removeTuple(transitionAnimations[i], currentAnimations);\n                    removeTuple(transitionAnimations[i], newStateAnimations);\n                }\n                var tuple;\n                for (var i = 0, len = newStateAnimations.length; i < len; i++) {\n                    tuple = newStateAnimations[i];\n                    var toAnimation = genToAnimation(root, tuple.timeline, true);\n                    if (toAnimation != null) {\n                        ensureTarget(root, tuple.timeline, toAnimation);\n                        toAnimation.Duration = dynamic.Duration;\n                        dynamic.Children.Add(toAnimation);\n                    }\n                    removeTuple(tuple, currentAnimations);\n                }\n                for (var i = 0, len = currentAnimations.length; i < len; i++) {\n                    tuple = currentAnimations[i];\n                    var fromAnimation = tuple.timeline.GenerateFrom();\n                    if (fromAnimation != null) {\n                        ensureTarget(root, tuple.timeline, fromAnimation);\n                        fromAnimation.Duration = dynamic.Duration;\n                        var propertyName = Media.Animation.Storyboard.GetTargetProperty(tuple.timeline);\n                        Media.Animation.Storyboard.SetTargetProperty(fromAnimation, propertyName);\n                        dynamic.Children.Add(fromAnimation);\n                    }\n                }\n                return dynamic;\n            }\n            function ensureTarget(root, source, dest) {\n                if (source.ManualTarget != null) {\n                    Storyboard.SetTarget(dest, source.ManualTarget);\n                }\n                else {\n                    var targetName = Storyboard.GetTargetName(source);\n                    if (targetName)\n                        Storyboard.SetTargetName(dest, targetName);\n                }\n            }\n            function genToAnimation(root, timeline, isEntering) {\n                var result = timeline.GenerateTo(isEntering);\n                if (!result)\n                    return null;\n                var targetName = Storyboard.GetTargetName(timeline);\n                Storyboard.SetTargetName(result, targetName);\n                if (targetName) {\n                    var target = root.FindName(targetName);\n                    if (target instanceof Fayde.DependencyObject)\n                        Storyboard.SetTarget(result, target);\n                }\n                Storyboard.SetTargetProperty(result, Storyboard.GetTargetProperty(timeline));\n                return result;\n            }\n            function flattenTimelines(storyboards) {\n                var tuples = [];\n                for (var i = 0, len = storyboards.length; i < len; i++) {\n                    flattenTimeline(function (tp) { return tuples.push(tp); }, storyboards[i], null, null);\n                }\n                return tuples;\n            }\n            function flattenTimeline(callback, timeline, targetObject, targetPropertyPath) {\n                if (!timeline)\n                    return;\n                var resolution = Storyboard.ResolveTarget(timeline);\n                if (resolution.Target)\n                    targetObject = resolution.Target;\n                if (resolution.Property)\n                    targetPropertyPath = resolution.Property;\n                if (timeline instanceof Storyboard) {\n                    for (var i = 0, children = timeline.Children, len = children.Count; i < len; i++) {\n                        flattenTimeline(callback, children.GetValueAt(i), targetObject, targetPropertyPath);\n                    }\n                }\n                else {\n                    if (targetPropertyPath && targetObject) {\n                        var oto = { Value: targetObject };\n                        var propd = Fayde.Data.PropertyPath.ResolvePropertyPath(oto, targetPropertyPath, []);\n                        if (propd && oto.Value)\n                            callback({ dobj: oto.Value, propd: propd, timeline: timeline });\n                    }\n                }\n            }\n            function removeTuple(tuple, list) {\n                for (var i = 0, len = list.length; i < len; i++) {\n                    var l = list[i];\n                    if (l.dobj === tuple.dobj && l.propd === tuple.propd)\n                        return list.splice(i, 1);\n                }\n            }\n        })(VSM = Media.VSM || (Media.VSM = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../../Core/DependencyObject.ts\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var VSM;\n        (function (VSM) {\n            var VisualTransition = (function (_super) {\n                __extends(VisualTransition, _super);\n                function VisualTransition() {\n                    _super.apply(this, arguments);\n                    this.From = null;\n                    this.To = null;\n                    this._GeneratedDuration = null;\n                    this.DynamicStoryboardCompleted = true;\n                    this.ExplicitStoryboardCompleted = true;\n                }\n                Object.defineProperty(VisualTransition.prototype, \"GeneratedDuration\", {\n                    get: function () { return this._GeneratedDuration; },\n                    set: function (value) { this._GeneratedDuration = nullstone.convertAnyToType(value, Duration); },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(VisualTransition.prototype, \"IsDefault\", {\n                    get: function () { return this.From == null && this.To == null; },\n                    enumerable: true,\n                    configurable: true\n                });\n                VisualTransition.StoryboardProperty = DependencyProperty.Register(\"Storyboard\", function () { return Media.Animation.Storyboard; }, VisualTransition);\n                return VisualTransition;\n            })(Fayde.DependencyObject);\n            VSM.VisualTransition = VisualTransition;\n            Fayde.Markup.Content(VisualTransition, VisualTransition.StoryboardProperty);\n            Fayde.CoreLibrary.add(VisualTransition);\n        })(VSM = Media.VSM || (Media.VSM = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"../Imaging/ImageSource\" />\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Videos;\n        (function (Videos) {\n            var VideoSourceBase = (function (_super) {\n                __extends(VideoSourceBase, _super);\n                function VideoSourceBase() {\n                    _super.apply(this, arguments);\n                    this.$watchers = [];\n                    this.$autoplay = true;\n                }\n                VideoSourceBase.prototype.createElement = function () {\n                    return document.createElement(\"video\");\n                };\n                VideoSourceBase.prototype.reset = function () {\n                    var _this = this;\n                    _super.prototype.reset.call(this);\n                    this.setAutoPlay(this.$autoplay);\n                    this.$element.onerror = function (e) { return _this.onVideoErrored(e); };\n                    this.$element.oncanplay = function (e) { return _this.onVideoCanPlay(); };\n                    this.onVideoChanged();\n                };\n                VideoSourceBase.prototype.watch = function (watcher) {\n                    var watchers = this.$watchers;\n                    watchers.push(watcher);\n                    return {\n                        dispose: function () {\n                            var index = watchers.indexOf(watcher);\n                            if (index > -1)\n                                watchers.splice(index, 1);\n                        }\n                    };\n                };\n                VideoSourceBase.prototype.setAutoPlay = function (value) {\n                    this.$autoplay = value;\n                    if (!value)\n                        this.$element.removeAttribute(\"autoplay\");\n                    else\n                        this.$element.setAttribute(\"autoplay\", \"autoplay\");\n                };\n                VideoSourceBase.prototype.getIsPlaying = function () {\n                    var video = this.$element;\n                    return !!video && !video.paused && !video.ended;\n                };\n                VideoSourceBase.prototype.Play = function () {\n                    this.$element.play();\n                };\n                VideoSourceBase.prototype.Pause = function () {\n                    this.$element.pause();\n                };\n                VideoSourceBase.prototype.onVideoErrored = function (e) {\n                    console.info(\"Failed to load: \" + this.$element.src.toString());\n                    for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\n                        watchers[i].onErrored(this, e.error);\n                    }\n                };\n                VideoSourceBase.prototype.onVideoCanPlay = function () {\n                    this.setMetrics(this.$element.videoWidth, this.$element.videoHeight);\n                    for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\n                        watchers[i].onCanPlay(this);\n                    }\n                };\n                VideoSourceBase.prototype.onVideoChanged = function () {\n                    for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\n                        watchers[i].onChanged(this);\n                    }\n                };\n                return VideoSourceBase;\n            })(Media.Imaging.ImageSource);\n            Videos.VideoSourceBase = VideoSourceBase;\n            Fayde.CoreLibrary.add(VideoSourceBase);\n        })(Videos = Media.Videos || (Media.Videos = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\n/// <reference path=\"VideoSourceBase.ts\"/>\nvar Fayde;\n(function (Fayde) {\n    var Media;\n    (function (Media) {\n        var Videos;\n        (function (Videos) {\n            var VideoSource = (function (_super) {\n                __extends(VideoSource, _super);\n                function VideoSource(uri) {\n                    _super.call(this);\n                    this.VideoFailed = new nullstone.Event();\n                    this.VideoOpened = new nullstone.Event();\n                    if (uri)\n                        this.UriSource = uri;\n                }\n                VideoSource.prototype._UriSourceChanged = function (args) {\n                    var uri = args.NewValue;\n                    if (Fayde.Uri.isNullOrEmpty(uri))\n                        this.reset();\n                    else\n                        this.OnUriSourceChanged(args.OldValue, uri);\n                };\n                VideoSource.prototype.OnUriSourceChanged = function (oldValue, newValue) {\n                    if (!this.$element || !newValue)\n                        this.reset();\n                    this.$element.src = Fayde.TypeManager.resolveResource(newValue);\n                    this.$element.load();\n                    this.onVideoChanged();\n                };\n                VideoSource.prototype.onVideoErrored = function (e) {\n                    _super.prototype.onVideoErrored.call(this, e);\n                    this.VideoFailed.raise(this, null);\n                };\n                VideoSource.UriSourceProperty = DependencyProperty.RegisterFull(\"UriSource\", function () { return Fayde.Uri; }, VideoSource, undefined, function (bi, args) { return bi._UriSourceChanged(args); }, undefined, true);\n                return VideoSource;\n            })(Videos.VideoSourceBase);\n            Videos.VideoSource = VideoSource;\n            Fayde.CoreLibrary.add(VideoSource);\n        })(Videos = Media.Videos || (Media.Videos = {}));\n    })(Media = Fayde.Media || (Fayde.Media = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Text;\n    (function (Text) {\n        var History;\n        (function (History) {\n            var DeleteAction = (function () {\n                function DeleteAction(selectionAnchor, selectionCursor, buffer, start, length) {\n                    this.SelectionAnchor = selectionAnchor;\n                    this.SelectionCursor = selectionCursor;\n                    this.Start = start;\n                    this.Text = buffer.substr(start, length);\n                }\n                DeleteAction.prototype.Undo = function (bo) {\n                    bo.text = Text.Buffer.insert(bo.text, this.Start, this.Text);\n                };\n                DeleteAction.prototype.Redo = function (bo) {\n                    bo.text = Text.Buffer.cut(bo.text, this.Start, this.Text.length);\n                    return this.Start;\n                };\n                return DeleteAction;\n            })();\n            History.DeleteAction = DeleteAction;\n        })(History = Text.History || (Text.History = {}));\n    })(Text = Fayde.Text || (Fayde.Text = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Text;\n    (function (Text) {\n        var History;\n        (function (History) {\n            var InsertAction = (function () {\n                function InsertAction(selectionAnchor, selectionCursor, start, inserted, isAtomic) {\n                    this.SelectionAnchor = selectionAnchor;\n                    this.SelectionCursor = selectionCursor;\n                    this.Start = start;\n                    this.Text = inserted;\n                    this.IsGrowable = isAtomic !== true;\n                }\n                InsertAction.prototype.Undo = function (bo) {\n                    bo.text = Text.Buffer.cut(bo.text, this.Start, this.Text.length);\n                };\n                InsertAction.prototype.Redo = function (bo) {\n                    bo.text = Text.Buffer.insert(bo.text, this.Start, this.Text);\n                    return this.Start + this.Text.length;\n                };\n                InsertAction.prototype.Insert = function (start, text) {\n                    if (!this.IsGrowable || start !== (this.Start + this.Text.length))\n                        return false;\n                    this.Text += text;\n                    return true;\n                };\n                return InsertAction;\n            })();\n            History.InsertAction = InsertAction;\n        })(History = Text.History || (Text.History = {}));\n    })(Text = Fayde.Text || (Fayde.Text = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Text;\n    (function (Text) {\n        var History;\n        (function (History) {\n            var ReplaceAction = (function () {\n                function ReplaceAction(selectionAnchor, selectionCursor, buffer, start, length, inserted) {\n                    this.SelectionAnchor = selectionAnchor;\n                    this.SelectionCursor = selectionCursor;\n                    this.Start = start;\n                    this.Length = length;\n                    this.Deleted = buffer.substr(start, length);\n                    this.Inserted = inserted;\n                }\n                ReplaceAction.prototype.Undo = function (bo) {\n                    bo.text = Text.Buffer.cut(bo.text, this.Start, this.Inserted.length);\n                    bo.text = Text.Buffer.insert(bo.text, this.Start, this.Deleted);\n                };\n                ReplaceAction.prototype.Redo = function (bo) {\n                    bo.text = Text.Buffer.cut(bo.text, this.Start, this.Length);\n                    bo.text = Text.Buffer.insert(bo.text, this.Start, this.Inserted);\n                    return this.Start + this.Inserted.length;\n                };\n                return ReplaceAction;\n            })();\n            History.ReplaceAction = ReplaceAction;\n        })(History = Text.History || (Text.History = {}));\n    })(Text = Fayde.Text || (Fayde.Text = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    var Text;\n    (function (Text) {\n        var History;\n        (function (History) {\n            var Tracker = (function () {\n                function Tracker(maxUndoCount) {\n                    this.$$undo = [];\n                    this.$$redo = [];\n                    this.$$maxUndoCount = maxUndoCount;\n                }\n                Object.defineProperty(Tracker.prototype, \"canUndo\", {\n                    get: function () {\n                        return this.$$undo.length > 0;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                Object.defineProperty(Tracker.prototype, \"canRedo\", {\n                    get: function () {\n                        return this.$$redo.length > 0;\n                    },\n                    enumerable: true,\n                    configurable: true\n                });\n                Tracker.prototype.undo = function (bufferholder) {\n                    if (this.$$undo.length < 1)\n                        return null;\n                    var action = this.$$undo.pop();\n                    if (this.$$redo.push(action) > this.$$maxUndoCount)\n                        this.$$redo.shift();\n                    action.Undo(bufferholder);\n                    return action;\n                };\n                Tracker.prototype.redo = function (bufferholder) {\n                    if (this.$$redo.length < 1)\n                        return;\n                    var action = this.$$redo.pop();\n                    if (this.$$undo.push(action) > this.$$maxUndoCount)\n                        this.$$undo.shift();\n                    return action.Redo(bufferholder);\n                };\n                Tracker.prototype.enter = function (anchor, cursor, start, newText) {\n                    var action = this.$$undo[this.$$undo.length - 1];\n                    if (!(action instanceof History.InsertAction) || !action.Insert(start, newText))\n                        return this.insert(anchor, cursor, start, newText);\n                    if (this.$$redo.length > 0)\n                        this.$$redo = [];\n                };\n                Tracker.prototype.insert = function (anchor, cursor, start, newText) {\n                    this.$doAction(new History.InsertAction(anchor, cursor, start, newText));\n                };\n                Tracker.prototype.replace = function (anchor, cursor, text, start, length, newText) {\n                    this.$doAction(new History.ReplaceAction(anchor, cursor, text, start, length, newText));\n                };\n                Tracker.prototype.delete = function (anchor, cursor, text, start, length) {\n                    this.$doAction(new Text.History.DeleteAction(anchor, cursor, text, start, length));\n                };\n                Tracker.prototype.$doAction = function (action) {\n                    this.$$undo.push(action);\n                    if (this.$$undo.length > this.$$maxUndoCount)\n                        this.$$undo.shift();\n                    this.$$redo = [];\n                };\n                return Tracker;\n            })();\n            History.Tracker = Tracker;\n        })(History = Text.History || (Text.History = {}));\n    })(Text = Fayde.Text || (Fayde.Text = {}));\n})(Fayde || (Fayde = {}));\nvar Fayde;\n(function (Fayde) {\n    function debugLayers() {\n        var arr = [];\n        var app = Fayde.Application.Current;\n        for (var walker = app.MainSurface.walkLayers(); walker.step();) {\n            arr.push(sexify(walker.current));\n        }\n        return arr;\n    }\n    Fayde.debugLayers = debugLayers;\n    function sexify(updater) {\n        var node = updater.getAttachedValue(\"$node\");\n        var xobj = node.XObject;\n        var ctor = new Function(\"return function \" + xobj.constructor.name + \"() { }\")();\n        var obj = new ctor();\n        obj.assets = updater.assets;\n        obj.dirtyFlags = sexyflags(updater.assets.dirtyFlags);\n        obj.uiFlags = sexyuiflags(updater.assets.uiFlags);\n        obj.children = [];\n        obj.id = xobj._ID;\n        obj.node = node;\n        for (var walker = updater.tree.walk(); walker.step();) {\n            obj.children.push(sexify(walker.current));\n        }\n        return obj;\n    }\n    Fayde.sexify = sexify;\n    function sexyflags(flags) {\n        var all = Object.keys(minerva.DirtyFlags)\n            .map(function (i) { return parseInt(i); })\n            .filter(function (key) { return !isNaN(key); })\n            .filter(isPowerOf2)\n            .sort(function (a, b) { return (a === b) ? 0 : (a < b ? -1 : 1); })\n            .reverse();\n        var remaining = flags;\n        return all\n            .filter(function (cur) {\n            if ((remaining & cur) === 0)\n                return false;\n            remaining &= ~cur;\n            return true;\n        })\n            .map(function (cur) { return minerva.DirtyFlags[cur]; })\n            .join(\"|\");\n    }\n    function sexyuiflags(flags) {\n        var all = Object.keys(minerva.UIFlags)\n            .map(function (i) { return parseInt(i); })\n            .filter(function (key) { return !isNaN(key); })\n            .filter(isPowerOf2)\n            .sort(function (a, b) { return (a === b) ? 0 : (a < b ? -1 : 1); })\n            .reverse();\n        var remaining = flags;\n        return all\n            .filter(function (cur) {\n            if ((remaining & cur) === 0)\n                return false;\n            remaining &= ~cur;\n            return true;\n        })\n            .map(function (cur) { return minerva.UIFlags[cur]; })\n            .join(\"|\");\n    }\n    function isPowerOf2(num) {\n        var y = Math.log2(num);\n        return Math.abs(Math.round(y) - y) < 0.000001;\n    }\n    function debugLayersRaw() {\n        var app = Fayde.Application.Current;\n        var output = \"\";\n        for (var walker = app.MainSurface.walkLayers(); walker.step();) {\n            output += stringify(walker.current);\n        }\n        return output;\n    }\n    Fayde.debugLayersRaw = debugLayersRaw;\n    function stringify(updater, level) {\n        if (level === void 0) { level = 0; }\n        var node = updater.getAttachedValue(\"$node\");\n        var xobj = node.XObject;\n        var output = \"\";\n        for (var i = 0; i < level; i++) {\n            output += \"\\t\";\n        }\n        output += xobj.constructor.name;\n        output += \"[\" + xobj._ID + \"]\";\n        var ns = node.NameScope;\n        var nsr = !ns ? \"^\" : (ns.IsRoot ? \"+\" : \"-\");\n        output += \" [\" + nsr + node.Name + \"]\";\n        output += \"\\n\";\n        for (var walker = updater.tree.walk(); walker.step();) {\n            output += stringify(walker.current, level + 1);\n        }\n        return output;\n    }\n    function getById(id) {\n        var app = Fayde.Application.Current;\n        for (var walker = app.MainSurface.walkLayers(); walker.step();) {\n            for (var subwalker = walker.current.walkDeep(); subwalker.step();) {\n                var upd = subwalker.current;\n                var node = upd.getAttachedValue(\"$node\");\n                var xobj = node.XObject;\n                if (xobj._ID === id) {\n                    return {\n                        obj: xobj,\n                        node: node,\n                        updater: upd,\n                        flags: sexyflags(upd.assets.dirtyFlags),\n                        uiflags: sexyuiflags(upd.assets.uiFlags)\n                    };\n                }\n            }\n        }\n    }\n    Fayde.getById = getById;\n    function debugLayersFlatten() {\n        var arr = [];\n        var app = Fayde.Application.Current;\n        for (var walker = app.MainSurface.walkLayers(); walker.step();) {\n            for (var subwalker = walker.current.walkDeep(); subwalker.step();) {\n                arr.push(subwalker.current);\n            }\n        }\n        return arr;\n    }\n    Fayde.debugLayersFlatten = debugLayersFlatten;\n})(Fayde || (Fayde = {}));\n\n//# sourceMappingURL=fayde.js.map"
  },
  {
    "path": "gulp/bump.js",
    "content": "var gulp = require('gulp'),\r\n    bump = require('gulp-bump'),\r\n    versionts = require('version-ts');\r\n\r\nmodule.exports = function (meta) {\r\n    gulp.task('version', function () {\r\n        return versionts.apply();\r\n    });\r\n\r\n    gulp.task('bump', function () {\r\n        return gulp.src(['./bower.json', './package.json'])\r\n            .pipe(bump())\r\n            .pipe(gulp.dest('./'))\r\n            .on('end', function () {\r\n                versionts.apply();\r\n            });\r\n    });\r\n\r\n    gulp.task('bump-minor', function () {\r\n        return gulp.src(['./bower.json', './package.json'])\r\n            .pipe(bump({type: 'minor'}))\r\n            .pipe(gulp.dest('./'))\r\n            .on('end', function () {\r\n                versionts.apply();\r\n            });\r\n    });\r\n\r\n    gulp.task('bump-major', function () {\r\n        return gulp.src(['./bower.json', './package.json'])\r\n            .pipe(bump({type: 'major'}))\r\n            .pipe(gulp.dest('./'))\r\n            .on('end', function () {\r\n                versionts.apply();\r\n            });\r\n    });\r\n};"
  },
  {
    "path": "gulp/default.js",
    "content": "var gulp = require('gulp'),\r\n    ts = require('gulp-typescript'),\r\n    sourcemaps = require('gulp-sourcemaps'),\r\n    merge = require('merge2');\r\n\r\nmodule.exports = function (meta) {\r\n    gulp.task('default', function () {\r\n        var tsResult = gulp.src(meta.getSrc())\r\n            .pipe(sourcemaps.init())\r\n            .pipe(ts({\r\n                target: 'ES5',\r\n                out: meta.name + '.js',\r\n                declaration: true,\r\n                removeComments: true\r\n            }));\r\n\r\n        return merge([\r\n            tsResult.dts.pipe(gulp.dest('./dist')),\r\n            tsResult.js\r\n                .pipe(sourcemaps.write('./', {sourceRoot: './src', debug: true}))\r\n                .pipe(gulp.dest('./dist'))\r\n        ]);\r\n    });\r\n};"
  },
  {
    "path": "gulp/dist.js",
    "content": "var gulp = require('gulp'),\r\n    ts = require('gulp-typescript'),\r\n    sourcemaps = require('gulp-sourcemaps'),\r\n    uglify = require('gulp-uglify'),\r\n    rename = require('gulp-rename'),\r\n    runSequence = require('run-sequence'),\r\n    merge = require('merge2');\r\n\r\nmodule.exports = function (meta) {\r\n    gulp.task('dist-build', function () {\r\n        var tsResult = gulp.src(meta.getSrc())\r\n            .pipe(sourcemaps.init())\r\n            .pipe(ts({\r\n                target: 'ES5',\r\n                out: meta.name + '.js',\r\n                declaration: true,\r\n                removeComments: true\r\n            }));\r\n\r\n        return merge([\r\n            tsResult.dts.pipe(gulp.dest('./dist')),\r\n            tsResult.js\r\n                .pipe(uglify())\r\n                .pipe(rename(meta.name + '.min.js'))\r\n                .pipe(sourcemaps.write('./', {sourceRoot: './src', debug: true}))\r\n                .pipe(gulp.dest('dist'))\r\n        ]);\r\n    });\r\n\r\n    gulp.task('dist', function (callback) {\r\n        runSequence('bump', ['default', 'dist-build'], callback);\r\n    });\r\n    gulp.task('dist-minor', function (callback) {\r\n        runSequence('bump-minor', ['default', 'dist-build'], callback);\r\n    });\r\n    gulp.task('dist-major', function (callback) {\r\n        runSequence('bump-major', ['default', 'dist-build'], callback);\r\n    });\r\n};"
  },
  {
    "path": "gulp/reset.js",
    "content": "var gulp = require('gulp'),\r\n    del = require('del'),\r\n    vfs = require('vinyl-fs'),\r\n    runSequence = require('run-sequence').use(gulp),\r\n    bower = require('gulp-bower'),\r\n    path = require('path'),\r\n    glob = require('glob');\r\n\r\nmodule.exports = function (meta) {\r\n    gulp.task('clean', function (cb) {\r\n        var dirs = ['./lib'].concat(meta.scaffolds.map(sc => `./${sc.name}/lib`));\r\n        del(dirs, cb);\r\n    });\r\n\r\n    gulp.task('update-libs', function () {\r\n        return bower()\r\n            .pipe(gulp.dest('lib'));\r\n    });\r\n\r\n    function createSymlinkTask(scaffold) {\r\n        gulp.task(`symlink-${scaffold.name}-libs`, () => {\r\n            var libs = glob.sync(\"lib/*\", !scaffold.ignore ? undefined : {ignore: scaffold.ignore});\r\n            var dest = path.resolve(path.join(scaffold.name, 'lib'));\r\n            return vfs.src(libs).pipe(vfs.symlink(dest));\r\n        });\r\n        gulp.task(`symlink-${scaffold.name}-local`, () => {\r\n            var dirs = scaffold.symdirs || [];\r\n            var dest = path.resolve(path.join(scaffold.name, 'lib', meta.name));\r\n            return vfs.src(dirs).pipe(vfs.symlink(dest));\r\n        });\r\n\r\n        gulp.task(`symlink-${scaffold.name}`, () => {\r\n            return runSequence(`symlink-${scaffold.name}-libs`, `symlink-${scaffold.name}-local`);\r\n        });\r\n    }\r\n\r\n    meta.scaffolds.forEach(createSymlinkTask);\r\n    gulp.task('reset', function () {\r\n        return runSequence('clean', 'update-libs', meta.scaffolds.map(function (scaffold) {\r\n            return `symlink-${scaffold.name}`;\r\n        }));\r\n    });\r\n};"
  },
  {
    "path": "gulp/stress.js",
    "content": "var gulp = require('gulp'),\n    ts = require('gulp-typescript'),\n    sourcemaps = require('gulp-sourcemaps'),\n    connect = require('gulp-connect'),\n    open = require('gulp-open');\n\nmodule.exports = function (meta) {\n    var scaffold = meta.getScaffold('stress');\n    if (!scaffold)\n        return;\n\n    gulp.task('stress-build', function () {\n        return gulp.src(scaffold.getSrc())\n            .pipe(sourcemaps.init())\n            .pipe(ts({\n                target: 'ES5',\n                module: 'amd',\n                outDir: 'stress/.build/',\n                pathFilter: {'stress': ''}\n            }))\n            .pipe(sourcemaps.write('./', {sourceRoot: '/', debug: true}))\n            .pipe(gulp.dest('stress/.build'))\n            .pipe(connect.reload());\n    });\n\n    gulp.task('stress', ['default', 'stress-build'], function () {\n        var options = {\n            url: `http://localhost:${scaffold.port}`\n        };\n        gulp.src('stress/index.html')\n            .pipe(open('', options));\n\n        connect.server({\n            livereload: true,\n            root: ['stress', 'stress/.build'],\n            port: scaffold.port\n        });\n\n        gulp.watch('stress/**/*.ts', ['stress-build']);\n        gulp.watch('stress/.build/**/*', connect.reload);\n    });\n};"
  },
  {
    "path": "gulp/test.js",
    "content": "var gulp = require('gulp'),\n    ts = require('gulp-typescript'),\n    sourcemaps = require('gulp-sourcemaps'),\n    qunit = require('gulp-qunit'),\n    runSequence = require('run-sequence').use(gulp);\n\nmodule.exports = function (meta) {\n    var scaffold = meta.getScaffold('test');\n    if (!scaffold)\n        return;\n\n    gulp.task('test-build', function () {\n        return gulp.src(scaffold.getSrc())\n            .pipe(sourcemaps.init())\n            .pipe(ts({\n                module: 'amd',\n                target: 'ES5',\n                declaration: true,\n                pathFilter: {'test': ''}\n            }))\n            .pipe(sourcemaps.write('./', {sourceRoot: '/', debug: true}))\n            .pipe(gulp.dest('test/.build'));\n    });\n\n    gulp.task('test-run', function () {\n        return gulp.src('test/tests.html')\n            .pipe(qunit());\n    });\n\n    gulp.task('test-watch', ['test'], function () {\n        gulp.watch(['test/**/*.ts', '!test/lib/**/*.ts'], ['test-build']);\n        gulp.watch(['dist/*', 'test/.build/**/*.js'], ['test-run']);\n    });\n\n    gulp.task('test', function () {\n        return runSequence('test-build', 'test-run');\n    });\n};"
  },
  {
    "path": "gulp/testsite.js",
    "content": "var gulp = require('gulp'),\n    ts = require('gulp-typescript'),\n    sourcemaps = require('gulp-sourcemaps'),\n    connect = require('gulp-connect'),\n    open = require('gulp-open');\n\nmodule.exports = function (meta) {\n    var scaffold = meta.getScaffold('testsite');\n    if (!scaffold)\n        return;\n\n    gulp.task('testsite-build', function () {\n        return gulp.src(scaffold.getSrc())\n            .pipe(sourcemaps.init())\n            .pipe(ts({\n                module: 'amd',\n                target: 'ES5',\n                pathFilter: {'testsite': ''}\n            }))\n            .pipe(sourcemaps.write('./', {sourceRoot: '/', debug: true}))\n            .pipe(gulp.dest('testsite/.build'))\n            .pipe(connect.reload());\n    });\n\n    gulp.task('testsite-reload', function () {\n        gulp.src('testsite/*.html')\n            .pipe(connect.reload());\n    });\n\n    gulp.task('testsite', ['default', 'testsite-build'], function () {\n        var options = {\n            url: `http://localhost:${scaffold.port}`\n        };\n        gulp.src('testsite/index.html')\n            .pipe(open('', options));\n\n        connect.server({\n            livereload: true,\n            root: ['testsite', 'testsite/.build'],\n            port: scaffold.port\n        });\n\n        gulp.watch('testsite/!(lib)/**/*.ts', ['testsite-build']);\n        gulp.watch('testsite/.build/**/*', ['testsite-reload']);\n        gulp.watch('dist/*.js', ['testsite-reload']);\n    });\n};"
  },
  {
    "path": "gulp/watch.js",
    "content": "var gulp = require('gulp');\r\n\r\nmodule.exports = function (meta) {\r\n    gulp.task('watch', ['default'], function () {\r\n        gulp.watch('src/**/*.ts', ['default']);\r\n    });\r\n};"
  },
  {
    "path": "gulpfile.js",
    "content": "var gulp = require('gulp'),\r\n    taskListing = require('gulp-task-listing'),\r\n    fs = require('fs'),\r\n    typings = require('bower-typings'),\r\n    name = 'fayde',\r\n    meta = {\r\n        name: name,\r\n        getSrc: () => {\r\n            return [\r\n                'typings/*.d.ts',\r\n                'src/_Version.ts',\r\n                'src/perf/**/*.ts',\r\n                'src/polyfill/**/*.ts',\r\n                'src/_Types.ts',\r\n                'src/**/*.ts'\r\n            ].concat(typings({includeSelf: false}))\r\n        },\r\n        getScaffold: (name) => {\r\n            return meta.scaffolds.filter(function (scaffold) {\r\n                return scaffold.name === name;\r\n            })[0];\r\n        },\r\n        scaffolds: [\r\n            {\r\n                name: 'test',\r\n                symdirs: ['dist', 'src', 'themes'],\r\n                getSrc: () => {\r\n                    return [\r\n                        'typings/*.d.ts',\r\n                        'test/**/*.ts',\r\n                        '!test/lib/**/*.ts',\r\n                        `dist/${name}.d.ts`\r\n                    ].concat(typings());\r\n                }\r\n            },\r\n            {\r\n                name: 'testsite',\r\n                ignore: 'lib/qunit',\r\n                port: 7001,\r\n                symdirs: ['dist', 'src', 'themes'],\r\n                getSrc: () => {\r\n                    return [\r\n                        'typings/*.d.ts',\r\n                        'testsite/**/*.ts',\r\n                        '!testsite/lib/**/*.ts',\r\n                        `dist/${name}.d.ts`\r\n                    ].concat(typings());\r\n                }\r\n            },\r\n            {\r\n                name: 'stress',\r\n                ignore: 'lib/qunit',\r\n                port: 7002,\r\n                symdirs: ['dist', 'src', 'themes'],\r\n                getSrc: () => {\r\n                    return [\r\n                        'typings/*.d.ts',\r\n                        'stress/**/*.ts',\r\n                        '!stress/lib/**/*.ts',\r\n                        `dist/${name}.d.ts`\r\n                    ].concat(typings());\r\n                }\r\n            }\r\n        ]\r\n    };\r\n\r\ngulp.task('help', taskListing);\r\n\r\nfs.readdirSync('./gulp')\r\n    .forEach(function (file) {\r\n        require('./gulp/' + file)(meta);\r\n    });"
  },
  {
    "path": "litmus/LitmusTests/App.xaml",
    "content": "﻿<Application xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \r\n             x:Class=\"LitmusTests.App\"\r\n             >\r\n    <Application.Resources>\r\n        \r\n    </Application.Resources>\r\n</Application>\r\n"
  },
  {
    "path": "litmus/LitmusTests/App.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests\r\n{\r\n    public partial class App : Application\r\n    {\r\n\r\n        public App()\r\n        {\r\n            this.Startup += this.Application_Startup;\r\n            this.Exit += this.Application_Exit;\r\n            this.UnhandledException += this.Application_UnhandledException;\r\n\r\n            InitializeComponent();\r\n        }\r\n\r\n        private void Application_Startup(object sender, StartupEventArgs e)\r\n        {\r\n            this.RootVisual = new MainPage();\r\n        }\r\n\r\n        private void Application_Exit(object sender, EventArgs e)\r\n        {\r\n\r\n        }\r\n\r\n        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)\r\n        {\r\n            // If the app is running outside of the debugger then report the exception using\r\n            // the browser's exception mechanism. On IE this will display it a yellow alert \r\n            // icon in the status bar and Firefox will display a script error.\r\n            if (!System.Diagnostics.Debugger.IsAttached)\r\n            {\r\n\r\n                // NOTE: This will allow the application to continue running after an exception has been thrown\r\n                // but not handled. \r\n                // For production applications this error handling should be replaced with something that will \r\n                // report the error to the website and stop the application.\r\n                e.Handled = true;\r\n                Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });\r\n            }\r\n        }\r\n\r\n        private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)\r\n        {\r\n            try\r\n            {\r\n                string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;\r\n                errorMsg = errorMsg.Replace('\"', '\\'').Replace(\"\\r\\n\", @\"\\n\");\r\n\r\n                System.Windows.Browser.HtmlPage.Window.Eval(\"throw new Error(\\\"Unhandled Error in Silverlight Application \" + errorMsg + \"\\\");\");\r\n            }\r\n            catch (Exception)\r\n            {\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Controls/ListBoxMonitor.cs",
    "content": "﻿using System;\r\nusing System.Diagnostics;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Ink;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Controls\r\n{\r\n    public class ListBoxMonitor : ListBox\r\n    {\r\n        protected override Size MeasureOverride(Size availableSize)\r\n        {\r\n            Debug.WriteLine(\"MeasureOverride (ListBox): \" + availableSize.ToString());\r\n            return base.MeasureOverride(availableSize);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "litmus/LitmusTests/Controls/PanelMonitor.cs",
    "content": "﻿using System;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Ink;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Controls\r\n{\r\n    public class PanelMonitor : Panel\r\n    {\r\n        protected override Size MeasureOverride(Size availableSize)\r\n        {\r\n            return new Size();\r\n        }\r\n        protected override Size ArrangeOverride(Size finalSize)\r\n        {\r\n            return finalSize;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Controls/TestClass.cs",
    "content": "﻿using System;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Ink;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Controls\r\n{\r\n    public class TestClass\r\n    {\r\n        public string Name { get; set; }\r\n        public int Age { get; set; }\r\n        public TestClass()\r\n        {\r\n            Name = \"Brad\";\r\n            Age = 28;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Controls/VirtualizingStackPanelMonitor.cs",
    "content": "﻿using System;\r\nusing System.Diagnostics;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Ink;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Controls\r\n{\r\n    public class VirtualizingStackPanelMonitor : VirtualizingStackPanel\r\n    {\r\n        protected override Size MeasureOverride(Size constraint)\r\n        {\r\n            Debug.WriteLine(\"MeasureOverride (VirtualizingStackPanel): \" + constraint.ToString());\r\n            return base.MeasureOverride(constraint);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/LitmusTests.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProductVersion>8.0.50727</ProductVersion>\r\n    <SchemaVersion>2.0</SchemaVersion>\r\n    <ProjectGuid>{C66B3310-4ACF-4CFF-B533-14B254F8B649}</ProjectGuid>\r\n    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>\r\n    <OutputType>Library</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>LitmusTests</RootNamespace>\r\n    <AssemblyName>LitmusTests</AssemblyName>\r\n    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>\r\n    <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>\r\n    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>\r\n    <SilverlightApplication>true</SilverlightApplication>\r\n    <SupportedCultures>\r\n    </SupportedCultures>\r\n    <XapOutputs>true</XapOutputs>\r\n    <GenerateSilverlightManifest>true</GenerateSilverlightManifest>\r\n    <XapFilename>LitmusTests.xap</XapFilename>\r\n    <SilverlightManifestTemplate>Properties\\AppManifest.xml</SilverlightManifestTemplate>\r\n    <SilverlightAppEntry>LitmusTests.App</SilverlightAppEntry>\r\n    <TestPageFileName>LitmusTestsTestPage.html</TestPageFileName>\r\n    <CreateTestPage>true</CreateTestPage>\r\n    <ValidateXaml>true</ValidateXaml>\r\n    <EnableOutOfBrowser>false</EnableOutOfBrowser>\r\n    <OutOfBrowserSettingsFile>Properties\\OutOfBrowserSettings.xml</OutOfBrowserSettingsFile>\r\n    <UsePlatformExtensions>false</UsePlatformExtensions>\r\n    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>\r\n    <LinkedServerProject>\r\n    </LinkedServerProject>\r\n  </PropertyGroup>\r\n  <!-- This property group is only here to support building this project using the \r\n       MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs \r\n       to set the TargetFrameworkVersion to v3.5 -->\r\n  <PropertyGroup Condition=\"'$(MSBuildToolsVersion)' == '3.5'\">\r\n    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>Bin\\Debug</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE;SILVERLIGHT</DefineConstants>\r\n    <NoStdLib>true</NoStdLib>\r\n    <NoConfig>true</NoConfig>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <DebugType>pdbonly</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>Bin\\Release</OutputPath>\r\n    <DefineConstants>TRACE;SILVERLIGHT</DefineConstants>\r\n    <NoStdLib>true</NoStdLib>\r\n    <NoConfig>true</NoConfig>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"mscorlib\" />\r\n    <Reference Include=\"System.Windows\" />\r\n    <Reference Include=\"system\" />\r\n    <Reference Include=\"System.Core\">\r\n      <HintPath>$(TargetFrameworkDirectory)System.Core.dll</HintPath>\r\n    </Reference>\r\n    <Reference Include=\"System.Net\" />\r\n    <Reference Include=\"System.Windows.Controls, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Windows.Controls.Data, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Windows.Controls.Data.DataForm.Toolkit, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Windows.Controls.Data.Input, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Windows.Controls.DataVisualization.Toolkit, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Windows.Controls.Input.Toolkit, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Windows.Controls.Layout.Toolkit, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Windows.Controls.Navigation, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\" />\r\n    <Reference Include=\"System.Xml\" />\r\n    <Reference Include=\"System.Windows.Browser\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"App.xaml.cs\">\r\n      <DependentUpon>App.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Controls\\PanelMonitor.cs\" />\r\n    <Compile Include=\"Controls\\ListBoxMonitor.cs\" />\r\n    <Compile Include=\"Controls\\VirtualizingStackPanelMonitor.cs\" />\r\n    <Compile Include=\"MainPage.xaml.cs\">\r\n      <DependentUpon>MainPage.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"MainViewModel.cs\" />\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n    <Compile Include=\"ScrollTestOverride.cs\" />\r\n    <Compile Include=\"Controls\\TestClass.cs\" />\r\n    <Compile Include=\"Tests\\ArcSegmentTest.xaml.cs\">\r\n      <DependentUpon>ArcSegmentTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ArcViewModel.cs\" />\r\n    <Compile Include=\"Tests\\BorderTest.xaml.cs\">\r\n      <DependentUpon>BorderTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\BrushTest.xaml.cs\">\r\n      <DependentUpon>BrushTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ContentControlTest.xaml.cs\">\r\n      <DependentUpon>ContentControlTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ContentPresenterTest.xaml.cs\">\r\n      <DependentUpon>ContentPresenterTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\DoubleListBox.xaml.cs\">\r\n      <DependentUpon>DoubleListBox.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\GridSplitterTest.xaml.cs\">\r\n      <DependentUpon>GridSplitterTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ImageBrushTest.xaml.cs\">\r\n      <DependentUpon>ImageBrushTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ImageTest.xaml.cs\">\r\n      <DependentUpon>ImageTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ItemsControl.xaml.cs\">\r\n      <DependentUpon>ItemsControl.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\Layout.xaml.cs\">\r\n      <DependentUpon>Layout.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ListBoxSelectionTest.xaml.cs\">\r\n      <DependentUpon>ListBoxSelectionTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ListBoxTest.xaml.cs\">\r\n      <DependentUpon>ListBoxTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\MapTest.xaml.cs\">\r\n      <DependentUpon>MapTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\nfldraft.xaml.cs\">\r\n      <DependentUpon>nfldraft.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\PathTest.xaml.cs\">\r\n      <DependentUpon>PathTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\RectangleTest.xaml.cs\">\r\n      <DependentUpon>RectangleTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ResourceTest.xaml.cs\">\r\n      <DependentUpon>ResourceTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ScrollBarTest.xaml.cs\">\r\n      <DependentUpon>ScrollBarTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ScrollViewerTest.xaml.cs\">\r\n      <DependentUpon>ScrollViewerTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\ShapeStretch.xaml.cs\">\r\n      <DependentUpon>ShapeStretch.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\TextBoxTest.xaml.cs\">\r\n      <DependentUpon>TextBoxTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\TooltipTest.xaml.cs\">\r\n      <DependentUpon>TooltipTest.xaml</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Tests\\TransformTest.xaml.cs\">\r\n      <DependentUpon>TransformTest.xaml</DependentUpon>\r\n    </Compile>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <ApplicationDefinition Include=\"App.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </ApplicationDefinition>\r\n    <Page Include=\"MainPage.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Tests\\ArcSegmentTest.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Tests\\BorderTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\BrushTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ContentControlTest.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Tests\\ContentPresenterTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\DoubleListBox.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\GridSplitterTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ImageBrushTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ImageTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ItemsControl.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\Layout.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ListBoxSelectionTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ListBoxTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\MapTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\nfldraft.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\PathTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\RectangleTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ResourceTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ScrollBarTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ScrollViewerTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\ShapeStretch.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\TextBoxTest.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Tests\\TooltipTest.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Tests\\TransformTest.xaml\">\r\n      <SubType>Designer</SubType>\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </Page>\r\n    <Page Include=\"Themes\\Cosmopolitan\\Brushes.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Themes\\Cosmopolitan\\CoreStyles.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Themes\\Cosmopolitan\\Fonts.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Themes\\Cosmopolitan\\SDKStyles.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Themes\\Cosmopolitan\\Styles.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Themes\\Cosmopolitan\\ToolkitStyles.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Page Include=\"Themes\\generic.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\"Properties\\AppManifest.xml\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Resource Include=\"testing.jpg\" />\r\n    <Resource Include=\"tile-test.png\" />\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\Silverlight\\$(SilverlightVersion)\\Microsoft.Silverlight.CSharp.targets\" />\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r\n       Other similar extension points exist, see Microsoft.Common.targets.\r\n  <Target Name=\"BeforeBuild\">\r\n  </Target>\r\n  <Target Name=\"AfterBuild\">\r\n  </Target>\r\n  -->\r\n  <ProjectExtensions>\r\n    <VisualStudio>\r\n      <FlavorProperties GUID=\"{A1591282-1198-4647-A2B1-27E5FF5F6F3B}\">\r\n        <SilverlightProjectProperties />\r\n      </FlavorProperties>\r\n    </VisualStudio>\r\n  </ProjectExtensions>\r\n</Project>"
  },
  {
    "path": "litmus/LitmusTests/LitmusTests.sln",
    "content": "﻿\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 2012\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"LitmusTests\", \"LitmusTests.csproj\", \"{C66B3310-4ACF-4CFF-B533-14B254F8B649}\"\r\nEndProject\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"LitmusTests.Web\", \"..\\LitmusTests.Web\\LitmusTests.Web.csproj\", \"{5F2E26A9-232C-4F1B-A87F-DF4D60D947D3}\"\r\nEndProject\r\nGlobal\r\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n\t\tDebug|Any CPU = Debug|Any CPU\r\n\t\tRelease|Any CPU = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n\t\t{C66B3310-4ACF-4CFF-B533-14B254F8B649}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{C66B3310-4ACF-4CFF-B533-14B254F8B649}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{C66B3310-4ACF-4CFF-B533-14B254F8B649}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{C66B3310-4ACF-4CFF-B533-14B254F8B649}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{5F2E26A9-232C-4F1B-A87F-DF4D60D947D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{5F2E26A9-232C-4F1B-A87F-DF4D60D947D3}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{5F2E26A9-232C-4F1B-A87F-DF4D60D947D3}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{5F2E26A9-232C-4F1B-A87F-DF4D60D947D3}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(SolutionProperties) = preSolution\r\n\t\tHideSolutionNode = FALSE\r\n\tEndGlobalSection\r\nEndGlobal\r\n"
  },
  {
    "path": "litmus/LitmusTests/MainPage.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.MainPage\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:local=\"clr-namespace:LitmusTests\"\r\n    xmlns:tests=\"clr-namespace:LitmusTests.Tests\">\r\n    <UserControl.Resources>\r\n        <ResourceDictionary>\r\n            <ResourceDictionary.MergedDictionaries>\r\n                <ResourceDictionary Source=\"Themes/Cosmopolitan/CoreStyles.xaml\" />\r\n            </ResourceDictionary.MergedDictionaries>\r\n        </ResourceDictionary>\r\n    </UserControl.Resources>\r\n    <!--<tests:MapTest />-->\r\n    <!--<tests:ResourceTest />-->\r\n    <!--<tests:ImageTest />-->\r\n    <!--<tests:ScrollBarTest />-->\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <local:MainViewModel />\r\n        </Grid.DataContext>\r\n        <!--\r\n        <Grid x:Name=\"TestGrid\" Width=\"201\" Height=\"100\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition Width=\"*\" />\r\n                <ColumnDefinition Width=\"*\" />\r\n                <ColumnDefinition Width=\"*\" />\r\n                <ColumnDefinition Width=\"*\" />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Background=\"Orange\"></Border>\r\n            <Border Grid.Column=\"1\" Background=\"OrangeRed\"></Border>\r\n            <Border Grid.Column=\"2\" Background=\"Red\"></Border>\r\n            <Border Grid.Column=\"3\"  Background=\"OliveDrab\"></Border>\r\n        </Grid>-->\r\n        <!--<tests:TextBoxTest />-->\r\n        <!--<tests:UpDownTest />-->\r\n        <!--<tests:ListBoxTest />-->\r\n        <!--<tests:GridSplitterTest />-->\r\n        <!--<tests:ListBoxSelectionTest />-->\r\n        <!--<tests:BorderTest />-->\r\n        <!--<tests:nfldraft />-->\r\n        <!--<tests:DoubleListBox />-->\r\n        <!--<tests:PathTest />-->\r\n        <!--\r\n        <Grid Width=\"100\" Height=\"100\">\r\n            <Rectangle Stretch=\"Uniform\" Width=\"150\" Height=\"50\" Fill=\"Yellow\" Stroke=\"Black\" RadiusX=\"5\" RadiusY=\"5\" StrokeThickness=\"5\"></Rectangle>\r\n        </Grid>\r\n        -->\r\n        <!--<tests:ScrollViewerTest />-->\r\n        <!--<tests:ContentControlTest />-->\r\n        <tests:ArcSegmentTest />\r\n    </Grid>\r\n</UserControl>"
  },
  {
    "path": "litmus/LitmusTests/MainPage.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Controls.Primitives;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests\r\n{\r\n    public partial class MainPage : UserControl\r\n    {\r\n        public MainPage()\r\n        {\r\n            InitializeComponent();\r\n            Loaded += MainPage_Loaded;\r\n            LayoutUpdated += MainPage_LayoutUpdated;\r\n        }\r\n\r\n        void MainPage_LayoutUpdated(object sender, EventArgs e)\r\n        {\r\n            var node = new FENode(this);\r\n            FindElsWithLayoutClip();\r\n        }\r\n\r\n        private void MainPage_Loaded(object sender, RoutedEventArgs e)\r\n        {\r\n\r\n        }\r\n\r\n        public void FindElsWithLayoutClip()\r\n        {\r\n            foreach (var fe in FENode.Flatten(new FENode(this)))\r\n            {\r\n                var lc = LayoutInformation.GetLayoutClip(fe);\r\n                var ls = LayoutInformation.GetLayoutSlot(fe);\r\n            }\r\n        }\r\n    }\r\n\r\n    public class FENode\r\n    {\r\n        public FrameworkElement _Element { get; set; }\r\n\r\n        public FENode(FrameworkElement element)\r\n        {\r\n            _Element = element;\r\n        }\r\n\r\n        public List<FENode> Children\r\n        {\r\n            get\r\n            {\r\n                var list = new List<FENode>();\r\n                for (var i = 0; i < VisualTreeHelper.GetChildrenCount(this._Element); i++)\r\n                {\r\n                    var child = (FrameworkElement)VisualTreeHelper.GetChild(this._Element, i);\r\n                    list.Add(new FENode(child));\r\n                }\r\n                return list;\r\n            }\r\n        }\r\n\r\n        public static IEnumerable<FrameworkElement> Flatten(FENode node)\r\n        {\r\n            yield return node._Element;\r\n            foreach (var child in node.Children)\r\n            {\r\n                foreach (var granchild in Flatten(child))\r\n                {\r\n                    yield return granchild;\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "litmus/LitmusTests/MainViewModel.cs",
    "content": "﻿using System;\r\nusing System.ComponentModel;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Ink;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests\r\n{\r\n    public class MainViewModel : INotifyPropertyChanged\r\n    {\r\n        private string _SomeText;\r\n        public string SomeText\r\n        {\r\n            get { return this._SomeText; }\r\n            set\r\n            {\r\n                this._SomeText = value;\r\n                this.PropertyChanged(this, new PropertyChangedEventArgs(\"SomeText\"));\r\n            }\r\n        }\r\n\r\n        public event PropertyChangedEventHandler PropertyChanged;\r\n    }\r\n}"
  },
  {
    "path": "litmus/LitmusTests/Properties/AppManifest.xml",
    "content": "﻿<Deployment xmlns=\"http://schemas.microsoft.com/client/2007/deployment\"\r\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n>\r\n    <Deployment.Parts>\r\n    </Deployment.Parts>\r\n</Deployment>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"LitmusTests\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"LitmusTests\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// The following GUID is for the ID of the typelib if this project is exposed to COM\r\n[assembly: Guid(\"c66b3310-4acf-4cff-b533-14b254f8b649\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Revision and Build Numbers \r\n// by using the '*' as shown below:\r\n[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\r\n"
  },
  {
    "path": "litmus/LitmusTests/ScrollTestOverride.cs",
    "content": "﻿using System;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Ink;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\nusing System.Windows.Controls.Primitives;\r\n\r\nnamespace LitmusTests\r\n{\r\n    public class ScrollTestOverride : Control\r\n    {\r\n        public ScrollTestOverride()\r\n        {\r\n            DefaultStyleKey = typeof(ScrollTestOverride);\r\n        }\r\n\r\n        public override void OnApplyTemplate()\r\n        {\r\n            base.OnApplyTemplate();\r\n            var rb = GetTemplateChild(\"RawrButton\") as Button;\r\n            var h = rb.ActualHeight;\r\n            var w = rb.ActualWidth;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "litmus/LitmusTests/Tests/ArcSegmentTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ArcSegmentTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    xmlns:tests=\"clr-namespace:LitmusTests.Tests\"\r\n    xmlns:itoolkit=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    \r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"200\" />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.DataContext>\r\n            <tests:ArcViewModel />\r\n        </Grid.DataContext>\r\n        <StackPanel>\r\n            <TextBlock Text=\"Start Point\" Margin=\"0,20,0,0\" />\r\n            <itoolkit:NumericUpDown Minimum=\"0\" Increment=\"1\" Maximum=\"500\" Value=\"{Binding SPointX, Mode=TwoWay}\"></itoolkit:NumericUpDown>\r\n            <itoolkit:NumericUpDown Minimum=\"0\" Increment=\"1\" Maximum=\"500\" Value=\"{Binding SPointY, Mode=TwoWay}\"></itoolkit:NumericUpDown>\r\n            <TextBlock Text=\"Point\" Margin=\"0,20,0,0\" />\r\n            <itoolkit:NumericUpDown Minimum=\"0\" Increment=\"1\" Maximum=\"500\" Value=\"{Binding PointX, Mode=TwoWay}\"></itoolkit:NumericUpDown>\r\n            <itoolkit:NumericUpDown Minimum=\"0\" Increment=\"1\" Maximum=\"500\" Value=\"{Binding PointY, Mode=TwoWay}\"></itoolkit:NumericUpDown>\r\n            <TextBlock Text=\"Size\" Margin=\"0,20,0,0\" />\r\n            <itoolkit:NumericUpDown Minimum=\"0\" Increment=\"1\" Maximum=\"500\" Value=\"{Binding SizeX, Mode=TwoWay}\"></itoolkit:NumericUpDown>\r\n            <itoolkit:NumericUpDown Minimum=\"0\" Increment=\"1\" Maximum=\"500\" Value=\"{Binding SizeY, Mode=TwoWay}\"></itoolkit:NumericUpDown>\r\n            <TextBlock Text=\"IsLargeArc\" Margin=\"0,20,0,0\" />\r\n            <ToggleButton IsChecked=\"{Binding IsLargeArc, Mode=TwoWay}\" Content=\"{Binding IsLargeArc}\" />\r\n            <TextBlock Text=\"Sweep Direction\" Margin=\"0,20,0,0\" />\r\n            <ToggleButton IsChecked=\"{Binding IsClockwise, Mode=TwoWay}\" Content=\"{Binding SweepDirection}\" />\r\n            <TextBlock Text=\"Rotation Angle\" Margin=\"0,20,0,0\" />\r\n            <itoolkit:NumericUpDown Minimum=\"0\" Maximum=\"360\" Increment=\"1\" Value=\"{Binding RotationAngle, Mode=TwoWay}\"></itoolkit:NumericUpDown>\r\n        </StackPanel>\r\n        <Path Stroke=\"Black\" StrokeThickness=\"2\" Grid.Column=\"1\">\r\n            <Path.Data>\r\n                <PathGeometry>\r\n                    <PathFigure StartPoint=\"{Binding SPoint}\">\r\n                        <ArcSegment x:Name=\"arc\"\r\n                                    IsLargeArc=\"{Binding IsLargeArc}\"\r\n                                    Size=\"{Binding Size}\"\r\n                                    Point=\"{Binding Point}\"\r\n                                    SweepDirection=\"{Binding SweepDirection}\" \r\n                                    RotationAngle=\"{Binding RotationAngle}\"\r\n                                    />\r\n                    </PathFigure>\r\n                </PathGeometry>\r\n            </Path.Data>\r\n        </Path>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ArcSegmentTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ArcSegmentTest : UserControl\r\n    {\r\n        public ArcSegmentTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ArcViewModel.cs",
    "content": "﻿using System.ComponentModel;\r\nusing System.Windows;\r\nusing System.Windows.Media;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public class ArcViewModel : INotifyPropertyChanged\r\n    {\r\n        public SweepDirection SweepDirection { get { return IsClockwise ? SweepDirection.Clockwise : SweepDirection.Counterclockwise; } }\r\n        public Point SPoint { get { return new Point(SPointX, SPointY); } }\r\n        public Point Point { get { return new Point(PointX, PointY); } }\r\n        public Size Size { get { return new Size(SizeX, SizeY); } }\r\n\r\n        private bool _IsLargeArc = true;\r\n        public bool IsLargeArc\r\n        {\r\n            get { return _IsLargeArc; }\r\n            set\r\n            {\r\n                _IsLargeArc = value;\r\n                OnPropertyChanged(\"IsLargeArc\");\r\n            }\r\n        }\r\n\r\n        private bool _IsClockwise = true;\r\n        public bool IsClockwise\r\n        {\r\n            get { return _IsClockwise; }\r\n            set\r\n            {\r\n                _IsClockwise = value;\r\n                OnPropertyChanged(\"IsClockwise\");\r\n                OnPropertyChanged(\"SweepDirection\");\r\n            }\r\n        }\r\n\r\n        private double _SPointX = 100.0;\r\n        public double SPointX\r\n        {\r\n            get { return _SPointX; }\r\n            set\r\n            {\r\n                _SPointX = value;\r\n                OnPropertyChanged(\"SPointX\");\r\n                OnPropertyChanged(\"SPoint\");\r\n            }\r\n        }\r\n\r\n        private double _SPointY = 100.0;\r\n        public double SPointY\r\n        {\r\n            get { return _SPointY; }\r\n            set\r\n            {\r\n                _SPointY = value;\r\n                OnPropertyChanged(\"SPointY\");\r\n                OnPropertyChanged(\"SPoint\");\r\n            }\r\n        }\r\n\r\n        private double _PointX = 200.0;\r\n        public double PointX\r\n        {\r\n            get { return _PointX; }\r\n            set\r\n            {\r\n                _PointX = value;\r\n                OnPropertyChanged(\"PointX\");\r\n                OnPropertyChanged(\"Point\");\r\n            }\r\n        }\r\n\r\n        private double _PointY = 200.0;\r\n        public double PointY\r\n        {\r\n            get { return _PointY; }\r\n            set\r\n            {\r\n                _PointY = value;\r\n                OnPropertyChanged(\"PointY\");\r\n                OnPropertyChanged(\"Point\");\r\n            }\r\n        }\r\n\r\n        private double _SizeX = 5.0;\r\n        public double SizeX\r\n        {\r\n            get { return _SizeX; }\r\n            set\r\n            {\r\n                _SizeX = value;\r\n                OnPropertyChanged(\"SizeX\");\r\n                OnPropertyChanged(\"Size\");\r\n            }\r\n        }\r\n\r\n        private double _SizeY = 5.0;\r\n        public double SizeY\r\n        {\r\n            get { return _SizeY; }\r\n            set\r\n            {\r\n                _SizeY = value;\r\n                OnPropertyChanged(\"SizeY\");\r\n                OnPropertyChanged(\"Size\");\r\n            }\r\n        }\r\n\r\n        private double _RotationAngle = 0.0;\r\n        public double RotationAngle\r\n        {\r\n            get { return _RotationAngle; }\r\n            set\r\n            {\r\n                _RotationAngle = value;\r\n                OnPropertyChanged(\"RotationAngle\");\r\n            }\r\n        }\r\n\r\n        public event PropertyChangedEventHandler PropertyChanged;\r\n        protected void OnPropertyChanged(string propertyName)\r\n        {\r\n            var obj = PropertyChanged;\r\n            if (obj != null)\r\n                obj(this, new PropertyChangedEventArgs(propertyName));\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "litmus/LitmusTests/Tests/BorderTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.BorderTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\" Background=\"Navy\" FontFamily=\"Verdana\" FontSize=\"16\">\r\n    <Grid>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition />\r\n            <RowDefinition />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Border Background=\"Green\" Margin=\"5\">\r\n        </Border>\r\n        <Border Grid.Column=\"1\" BorderBrush=\"CadetBlue\" BorderThickness=\"10\" Background=\"Bisque\" Margin=\"5\">\r\n        </Border>\r\n        <Border Grid.Row=\"1\" BorderBrush=\"Black\" BorderThickness=\"10,20,30,40\" CornerRadius=\"10,15,20,25\" Margin=\"5\" Background=\"Yellow\">\r\n        </Border>\r\n        <Border Grid.Row=\"1\" Grid.Column=\"1\" BorderBrush=\"OrangeRed\" BorderThickness=\"10\" CornerRadius=\"10\" Margin=\"5\" Background=\"SteelBlue\">\r\n        </Border>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/BorderTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class BorderTest : UserControl\r\n    {\r\n        public BorderTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/BrushTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.BrushTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n    <Grid Margin=\"5\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"400\" />\r\n            <ColumnDefinition Width=\"400\" />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid>\r\n            <Grid.Background>\r\n                <LinearGradientBrush StartPoint=\"0,0\" EndPoint=\"1,1\">\r\n                    \r\n                </LinearGradientBrush>\r\n            </Grid.Background>\r\n        </Grid>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/BrushTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class BrushTest : UserControl\r\n    {\r\n        public BrushTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ContentControlTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ContentControlTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\"\r\n    xmlns:controls=\"clr-namespace:LitmusTests.Controls\">\r\n    <UserControl.Resources>\r\n        <DataTemplate DataType=\"controls:TestClass\">\r\n            <StackPanel>\r\n                <TextBlock Text=\"Name:\" />\r\n                <TextBlock Text=\"{Binding Name}\" />\r\n                <TextBlock Text=\"Age:\" />\r\n                <TextBlock Text=\"{Binding Age}\" />\r\n            </StackPanel>\r\n        </DataTemplate>\r\n    </UserControl.Resources>\r\n    <Grid>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <ContentControl x:Name=\"First\">\r\n        </ContentControl>\r\n        <ContentControl x:Name=\"Second\" Grid.Column=\"1\">\r\n            <Border BorderThickness=\"5\" CornerRadius=\"5\" BorderBrush=\"Red\">\r\n                <TextBlock Text=\"{Binding Name}\">\r\n                </TextBlock>\r\n            </Border>\r\n        </ContentControl>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ContentControlTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ContentControlTest : UserControl\r\n    {\r\n        public ContentControlTest()\r\n        {\r\n            InitializeComponent();\r\n            First.Content = new Controls.TestClass();\r\n            Second.DataContext = new Controls.TestClass();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ContentPresenterTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ContentPresenterTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    \r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <ContentControl x:Name=\"ContentControl\" Content=\"RAWR\">\r\n            <ContentControl.Template>\r\n                <ControlTemplate TargetType=\"ContentControl\">\r\n                    <StackPanel>\r\n                        <ContentPresenter Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" />\r\n                    </StackPanel>\r\n                </ControlTemplate>\r\n            </ContentControl.Template>\r\n            <ContentControl.ContentTemplate>\r\n                <DataTemplate>\r\n                    <Grid x:Name=\"DataTemplateRoot\" DataContext=\"{x:Null}\">\r\n                        <TextBlock Text=\"{Binding}\" />\r\n                    </Grid>\r\n                </DataTemplate>\r\n            </ContentControl.ContentTemplate>\r\n        </ContentControl>\r\n    </Grid>\r\n</UserControl>"
  },
  {
    "path": "litmus/LitmusTests/Tests/ContentPresenterTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ContentPresenterTest : UserControl\r\n    {\r\n        public ContentPresenterTest()\r\n        {\r\n            InitializeComponent();\r\n\r\n            var ccdc = ContentControl.DataContext;\r\n            var stackpanel = VisualTreeHelper.GetChild(ContentControl, 0);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/DoubleListBox.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.DoubleListBox\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:controls=\"clr-namespace:LitmusTests.Controls\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    <Grid>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"100\" />\r\n            <ColumnDefinition />\r\n            <ColumnDefinition Width=\"100\" />\r\n        </Grid.ColumnDefinitions>\r\n        <controls:ListBoxMonitor ItemsSource=\"{Binding AllItems}\">\r\n            <controls:ListBoxMonitor.ItemTemplate>\r\n                <DataTemplate>\r\n                    <controls:ListBoxMonitor ItemsSource=\"{Binding SubItems}\">\r\n                        <controls:ListBoxMonitor.ItemTemplate>\r\n                            <DataTemplate>\r\n                                <TextBlock Text=\"{Binding}\" />\r\n                            </DataTemplate>\r\n                        </controls:ListBoxMonitor.ItemTemplate>\r\n                        <controls:ListBoxMonitor.ItemsPanel>\r\n                            <ItemsPanelTemplate>\r\n                                <controls:VirtualizingStackPanelMonitor />\r\n                            </ItemsPanelTemplate>\r\n                        </controls:ListBoxMonitor.ItemsPanel>\r\n                    </controls:ListBoxMonitor>\r\n                </DataTemplate>\r\n            </controls:ListBoxMonitor.ItemTemplate>\r\n        </controls:ListBoxMonitor>\r\n        <StackPanel Grid.Column=\"1\">\r\n            <Button Content=\"Add Item\" Margin=\"10,0,0,0\" Click=\"Add_Click\" Width=\"150\" />\r\n            <Button Content=\"Remove First Item\" Margin=\"10,0,0,0\" Click=\"Remove_Click\" Width=\"150\" />\r\n        </StackPanel>\r\n        <StackPanel Grid.Column=\"2\" Orientation=\"Vertical\">\r\n            <ListBox ItemsSource=\"{Binding AllItems[0].SubItems}\">\r\n                <ListBox.ItemTemplate>\r\n                    <DataTemplate>\r\n                        <TextBlock Text=\"{Binding}\" />\r\n                    </DataTemplate>\r\n                </ListBox.ItemTemplate>\r\n            </ListBox>\r\n        </StackPanel>\r\n    </Grid>\r\n</UserControl>"
  },
  {
    "path": "litmus/LitmusTests/Tests/DoubleListBox.xaml.cs",
    "content": "﻿using System.Collections.ObjectModel;\r\nusing System.Linq;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class DoubleListBox : UserControl\r\n    {\r\n        public ObservableCollection<TestClass> AllItems { get; set; }\r\n\r\n        public DoubleListBox()\r\n        {\r\n            InitializeComponent();\r\n            AllItems = new ObservableCollection<TestClass>(Enumerable.Range(0, 5)\r\n                .Select(i => new TestClass\r\n                {\r\n                    SubItems = new ObservableCollection<int>(Enumerable.Range(1, 5))\r\n                }));\r\n            DataContext = this;\r\n        }\r\n\r\n        private void Add_Click(object sender, RoutedEventArgs e)\r\n        {\r\n            var i = AllItems.FirstOrDefault();\r\n            if (i == null)\r\n                AllItems.Add(i = new TestClass());\r\n            i.SubItems.Add(i.SubItems.Count);\r\n        }\r\n\r\n        private void Remove_Click(object sender, RoutedEventArgs e)\r\n        {\r\n            var i = AllItems.FirstOrDefault();\r\n            if (i == null)\r\n                return;\r\n            i.SubItems.RemoveAt(0);\r\n            if (!i.SubItems.Any())\r\n                AllItems.RemoveAt(0);\r\n        }\r\n\r\n        public class TestClass\r\n        {\r\n            public ObservableCollection<int> SubItems { get; set; }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "litmus/LitmusTests/Tests/GridSplitterTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.GridSplitterTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    xmlns:controls=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <Grid Height=\"300\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition />\r\n                <RowDefinition />\r\n                <RowDefinition />\r\n            </Grid.RowDefinitions>\r\n            <Border Background=\"Gray\" BorderBrush=\"Black\" BorderThickness=\"1\" Margin=\"0,0,10,0\" />\r\n            <controls:GridSplitter VerticalAlignment=\"Stretch\" HorizontalAlignment=\"Right\" />\r\n            <Border Grid.Column=\"1\" Background=\"Gray\" BorderBrush=\"Black\" BorderThickness=\"1\" Margin=\"0,0,10,0\" />\r\n            <controls:GridSplitter Grid.Column=\"1\" VerticalAlignment=\"Stretch\" HorizontalAlignment=\"Right\" />\r\n            <Border Grid.Column=\"2\" Background=\"Gray\" BorderBrush=\"Black\" BorderThickness=\"1\" Margin=\"0,0,10,0\" />\r\n\r\n            <Border Grid.Row=\"1\" Grid.ColumnSpan=\"4\" Background=\"Gray\" BorderBrush=\"Black\" BorderThickness=\"1\" Margin=\"0,0,0,10\" />\r\n            <controls:GridSplitter Grid.Row=\"1\" Grid.ColumnSpan=\"4\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Stretch\" />\r\n            <Border Grid.Row=\"2\" Grid.ColumnSpan=\"4\" Background=\"Gray\" BorderBrush=\"Black\" BorderThickness=\"1\" Margin=\"0,0,0,10\" />\r\n        </Grid>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/GridSplitterTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class GridSplitterTest : UserControl\r\n    {\r\n        public GridSplitterTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ImageBrushTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ImageBrushTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"800\" d:DesignWidth=\"800\">\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"400\" />\r\n            <RowDefinition Height=\"400\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"400\" />\r\n            <ColumnDefinition Width=\"400\" />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid>\r\n            <Grid.Background>\r\n                <ImageBrush Stretch=\"None\" ImageSource=\"tile-test.png\" />\r\n            </Grid.Background>\r\n        </Grid>\r\n        <Grid Grid.Column=\"1\">\r\n            <Grid.Background>\r\n                <ImageBrush Stretch=\"Fill\" ImageSource=\"tile-test.png\" />\r\n            </Grid.Background>\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\">\r\n            <Grid.Background>\r\n                <ImageBrush Stretch=\"Uniform\" ImageSource=\"tile-test.png\" />\r\n            </Grid.Background>\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\" Grid.Column=\"1\">\r\n            <Grid.Background>\r\n                <ImageBrush Stretch=\"UniformToFill\" ImageSource=\"tile-test.png\" />\r\n            </Grid.Background>\r\n        </Grid>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ImageBrushTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ImageBrushTest : UserControl\r\n    {\r\n        public ImageBrushTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ImageTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ImageTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n    <Grid Background=\"#FFFFFF00\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"400\" />\r\n            <ColumnDefinition Width=\"400\" />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"400\" />\r\n            <RowDefinition Height=\"400\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid>\r\n            <Image Stretch=\"None\" Source=\"/LitmusTests;component/testing.jpg\" />\r\n            <TextBlock Foreground=\"#FFFFFFFF\" FontSize=\"18\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"None\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"1\">\r\n            <Image Stretch=\"Fill\" Source=\"/LitmusTests;component/testing.jpg\" />\r\n            <TextBlock Foreground=\"#FFFFFFFF\" FontSize=\"18\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"Fill\" />\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\">\r\n            <Image Stretch=\"Uniform\" Source=\"/LitmusTests;component/testing.jpg\" />\r\n            <TextBlock Foreground=\"#FFFFFFFF\" FontSize=\"18\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"Uniform\" />\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\" Grid.Column=\"1\">\r\n            <Image Stretch=\"UniformToFill\" Source=\"/LitmusTests;component/testing.jpg\" />\r\n            <TextBlock Foreground=\"#FFFFFFFF\" FontSize=\"18\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"UniformToFill\" />\r\n        </Grid>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ImageTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ImageTest : UserControl\r\n    {\r\n        public ImageTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ItemsControl.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ItemsControl\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    \r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <ItemsControl>\r\n            <ItemsControl.Items>\r\n                <TextBlock Text=\"Item 1\"/>\r\n                <TextBlock Text=\"Item 2\"/>\r\n            </ItemsControl.Items>\r\n        </ItemsControl>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ItemsControl.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ItemsControl : UserControl\r\n    {\r\n        public ItemsControl()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/Layout.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.Layout\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\" Width=\"1400\" Height=\"800\">\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"Green\" ShowGridLines=\"True\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"500\"></ColumnDefinition>\r\n            <ColumnDefinition></ColumnDefinition>\r\n            <ColumnDefinition Width=\"Auto\"></ColumnDefinition>\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition></RowDefinition>\r\n            <RowDefinition></RowDefinition>\r\n            <RowDefinition></RowDefinition>\r\n        </Grid.RowDefinitions>\r\n        <Border BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"1\" CornerRadius=\"5\" Margin=\"0,0,50,50\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Right\">\r\n            <Border BorderBrush=\"Red\" Background=\"Orange\" BorderThickness=\"8\" CornerRadius=\"15\" Margin=\"5, 10, 15, 20\">\r\n                <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\" Margin=\"20\">\r\n                    <TextBlock Margin=\"10\">\r\n                        <TextBlock.Inlines>\r\n                            <Run Text=\"Welcome to Fayde!\"></Run>\r\n                        </TextBlock.Inlines>\r\n                    </TextBlock>\r\n                </Border>\r\n            </Border>\r\n        </Border>\r\n        <Border Grid.Column=\"1\" Width=\"100\" Height=\"100\" BorderBrush=\"Black\" BorderThickness=\"2\"/>\r\n        <Border Grid.Column=\"2\" BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"2\" CornerRadius=\"4\" Margin=\"20, 10, 20, 10\">\r\n            <Border BorderBrush=\"Navy\" Background=\"Silver\" BorderThickness=\"2\" CornerRadius=\"4\" Margin=\"20, 10, 20, 10\">\r\n                <TextBlock Margin=\"10\">\r\n                    <TextBlock.Inlines>\r\n                        <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                        <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                        <LineBreak />\r\n                        <Underline Foreground=\"Blue\">\r\n                            <Run Text=\"How about adding some blue?\" />\r\n                        </Underline>\r\n                    </TextBlock.Inlines>\r\n                </TextBlock>\r\n            </Border>\r\n        </Border>\r\n        <Border Grid.Row=\"1\" Grid.Column=\"1\" BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"1\" CornerRadius=\"5\">\r\n            <Border BorderBrush=\"Red\" Background=\"Orange\" BorderThickness=\"8\" CornerRadius=\"15\" Margin=\"5, 10, 15, 20\">\r\n                <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\" Margin=\"20\">\r\n                    <Image Margin=\"10\" Source=\"/WickedSick.LitmusTests;component/testing.jpg\"/>\r\n                </Border>\r\n            </Border>\r\n        </Border>\r\n        <Image Grid.Row=\"2\" Grid.Column=\"1\" Source=\"/WickedSick.LitmusTests;component/tile-test.png\"/>\r\n        <StackPanel Grid.Row=\"2\" Grid.Column=\"2\" Background=\"AntiqueWhite\" Orientation=\"Horizontal\">\r\n            <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\">\r\n                <TextBlock Margin=\"10\">\r\n                    <TextBlock.Inlines>\r\n                        <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                        <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                        <LineBreak />\r\n                        <Underline Foreground=\"Blue\">\r\n                            <Run Text=\"How about adding some blue?\" />\r\n                        </Underline>\r\n                    </TextBlock.Inlines>\r\n                </TextBlock>\r\n            </Border>\r\n            <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\">\r\n                <TextBlock Margin=\"10\">\r\n                    <TextBlock.Inlines>\r\n                        <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                        <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                        <LineBreak />\r\n                        <Underline Foreground=\"Blue\">\r\n                            <Run Text=\"How about adding some blue?\" />\r\n                        </Underline>\r\n                    </TextBlock.Inlines>\r\n                </TextBlock>\r\n            </Border>\r\n        </StackPanel>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/Layout.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class Layout : UserControl\r\n    {\r\n        public Layout()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ListBoxSelectionTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ListBoxSelectionTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n\r\n    <StackPanel>\r\n        <ListBox SelectionMode=\"Single\" Margin=\"5\">\r\n            <ListBoxItem Content=\"listboxitem1\" />\r\n            <ListBoxItem Content=\"listboxitem1\" />\r\n            <ListBoxItem Content=\"listboxitem1\" />\r\n        </ListBox>\r\n        <ListBox SelectionMode=\"Multiple\" Margin=\"5\">\r\n            <ListBoxItem Content=\"listboxitem1\" />\r\n            <ListBoxItem Content=\"listboxitem1\" />\r\n            <ListBoxItem Content=\"listboxitem1\" />\r\n        </ListBox>\r\n        <ListBox SelectionMode=\"Extended\" Margin=\"5\">\r\n            <ListBoxItem Content=\"listboxitem1\" />\r\n            <ListBoxItem Content=\"listboxitem1\" />\r\n            <ListBoxItem Content=\"listboxitem1\" />\r\n        </ListBox>\r\n    </StackPanel>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ListBoxSelectionTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ListBoxSelectionTest : UserControl\r\n    {\r\n        public ListBoxSelectionTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ListBoxTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ListBoxTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    xmlns:controls=\"clr-namespace:LitmusTests.Controls\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    \r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <ListBox>\r\n            <ListBox.ItemsPanel>\r\n                <ItemsPanelTemplate>\r\n                    <controls:VirtualizingStackPanelMonitor />\r\n                </ItemsPanelTemplate>\r\n            </ListBox.ItemsPanel>\r\n            <ListBoxItem Content=\"ListBoxItem1\" />\r\n            <ListBoxItem Content=\"ListBoxItem2\" />\r\n            <ListBoxItem Content=\"ListBoxItem3\" />\r\n            <ListBoxItem Content=\"ListBoxItem4\" />\r\n        </ListBox>    \r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ListBoxTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ListBoxTest : UserControl\r\n    {\r\n        public ListBoxTest()\r\n        {\r\n            InitializeComponent();\r\n            LayoutUpdated += ListBoxTest_LayoutUpdated;\r\n        }\r\n\r\n        private void ListBoxTest_LayoutUpdated(object sender, EventArgs e)\r\n        {\r\n            Debug.WriteLine(\"Walking\");\r\n            Walk(this);\r\n        }\r\n\r\n        private void Walk(DependencyObject cur, int tabLevel = 1)\r\n        {\r\n            for (var i = 0; i < VisualTreeHelper.GetChildrenCount(cur); i++)\r\n            {\r\n                var child = VisualTreeHelper.GetChild(cur, i);\r\n                Debug.WriteLine(string.Join(\"\\t\", Enumerable.Range(0, tabLevel).Select(j => \"\")) + child.GetType().Name);\r\n                Walk(child, tabLevel + 1);\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/MapTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.MapTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n    <Canvas Width=\"9999\" Height=\"5300\">\r\n        <Canvas.RenderTransform>\r\n            <ScaleTransform ScaleX=\"0.125\" ScaleY=\"0.125\" />\r\n        </Canvas.RenderTransform>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6755,1434L6751,1434L6746,1436L6751,1439L6753,1441L6751,1444L6751,1441L6749,1441L6742,1444L6740,1446L6733,1446L6731,1444L6727,1444L6723,1446L6723,1444L6720,1444L6718,1446L6697,1446L6697,1449L6690,1449L6688,1451L6686,1451L6686,1454L6679,1456L6673,1462L6673,1459L6671,1459L6666,1464L6660,1469L6658,1472L6660,1474L6662,1474L6664,1477L6664,1479L6666,1479L6668,1485L6668,1487L6671,1490L6671,1495L6668,1495L6668,1497L6671,1500L6668,1502L6668,1505L6662,1513L6658,1515L6655,1518L6655,1520L6653,1520L6653,1525L6655,1525L6655,1528L6658,1528L6658,1533L6655,1538L6649,1541L6632,1541L6629,1538L6623,1538L6621,1541L6623,1543L6625,1548L6629,1548L6632,1551L6632,1553L6629,1553L6629,1556L6632,1556L6634,1558L6634,1561L6629,1566L6625,1569L6612,1569L6612,1576L6610,1576L6610,1584L6608,1587L6606,1587L6606,1589L6603,1589L6603,1592L6606,1592L6606,1607L6601,1612L6601,1615L6599,1617L6593,1617L6586,1610L6584,1610L6584,1612L6586,1612L6586,1615L6584,1615L6577,1612L6575,1612L6575,1610L6573,1610L6573,1612L6569,1617L6564,1617L6564,1620L6558,1620L6558,1625L6564,1625L6564,1627L6558,1630L6543,1630L6543,1627L6538,1627L6534,1630L6534,1635L6532,1635L6528,1640L6525,1640L6521,1650L6521,1653L6523,1653L6523,1663L6521,1663L6521,1668L6523,1671L6523,1673L6521,1676L6517,1676L6510,1678L6506,1678L6504,1681L6486,1686L6482,1683L6471,1683L6469,1686L6465,1686L6463,1689L6458,1689L6450,1686L6445,1686L6437,1689L6411,1689L6406,1686L6404,1686L6376,1676L6372,1676L6374,1673L6376,1668L6396,1645L6400,1638L6398,1632L6398,1630L6396,1630L6398,1627L6396,1625L6387,1625L6380,1622L6372,1622L6370,1617L6370,1604L6372,1602L6372,1594L6363,1571L6363,1566L6365,1566L6367,1561L6370,1561L6370,1558L6372,1556L6374,1556L6374,1553L6363,1553L6363,1551L6361,1551L6361,1548L6363,1548L6363,1541L6361,1538L6361,1536L6365,1530L6367,1530L6367,1528L6372,1528L6370,1525L6370,1523L6367,1523L6367,1520L6372,1520L6374,1518L6376,1513L6378,1510L6378,1497L6380,1495L6383,1490L6383,1487L6387,1487L6387,1490L6389,1490L6389,1492L6404,1492L6406,1495L6409,1495L6411,1497L6411,1502L6413,1502L6413,1500L6415,1500L6415,1497L6417,1497L6417,1500L6422,1500L6424,1497L6426,1497L6430,1492L6435,1492L6435,1490L6432,1487L6435,1487L6435,1485L6437,1485L6435,1482L6435,1479L6441,1479L6445,1477L6448,1477L6448,1474L6454,1474L6456,1472L6458,1472L6461,1469L6463,1469L6469,1467L6471,1467L6476,1462L6476,1451L6478,1451L6478,1449L6480,1446L6480,1436L6482,1436L6486,1434L6502,1434L6504,1431L6504,1426L6506,1423L6508,1423L6515,1426L6517,1428L6519,1428L6521,1431L6528,1431L6528,1428L6532,1428L6534,1431L6536,1428L6543,1428L6549,1436L6549,1434L6562,1434L6564,1436L6564,1439L6569,1444L6571,1444L6575,1441L6577,1441L6580,1439L6582,1439L6586,1436L6586,1434L6588,1434L6593,1431L6597,1431L6603,1439L6606,1439L6608,1436L6610,1436L6610,1434L6608,1434L6608,1426L6612,1423L6619,1423L6621,1421L6623,1421L6623,1423L6629,1423L6634,1418L6634,1416L6632,1416L6632,1413L6629,1413L6629,1411L6634,1411L6634,1408L6645,1395L6647,1395L6651,1393L6653,1393L6658,1395L6658,1398L6662,1398L6662,1400L6664,1400L6664,1403L6662,1403L6662,1405L6660,1408L6660,1411L6662,1413L6664,1411L6668,1411L6668,1418L6666,1421L6666,1434L6664,1436L6664,1439L6668,1449L6668,1451L6677,1451L6681,1446L6688,1444L6690,1441L6699,1441L6701,1439L6701,1436L6703,1434L6705,1434L6710,1431L6712,1428L6714,1428L6716,1426L6725,1426L6727,1428L6727,1426L6729,1426L6729,1431L6727,1431L6725,1434L6733,1434L6738,1431L6740,1431L6742,1428L6755,1428L6759,1431L6762,1434L6755,1434L6755,1434L6755,1434z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5228,1258L5230,1258L5230,1263L5232,1263L5235,1260L5241,1260L5243,1263L5243,1268L5250,1268L5250,1270L5252,1270L5254,1275L5254,1281L5252,1283L5252,1291L5250,1293L5250,1296L5252,1298L5250,1298L5250,1301L5252,1303L5252,1306L5254,1309L5256,1309L5256,1314L5265,1314L5265,1324L5263,1329L5258,1329L5258,1334L5256,1334L5256,1339L5254,1339L5254,1342L5248,1342L5245,1344L5245,1347L5248,1347L5248,1349L5245,1349L5245,1352L5243,1354L5239,1354L5237,1352L5237,1347L5232,1342L5230,1342L5230,1339L5226,1339L5224,1337L5222,1337L5219,1334L5217,1329L5219,1329L5219,1332L5222,1332L5222,1324L5217,1324L5217,1321L5219,1321L5219,1316L5222,1314L5224,1314L5224,1311L5222,1311L5222,1309L5224,1303L5224,1301L5222,1301L5222,1298L5224,1291L5226,1291L5224,1288L5226,1288L5226,1283L5219,1283L5219,1273L5217,1273L5226,1260L5226,1258L5228,1258L5228,1258L5228,1258z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4769,2025L4769,2023L4771,2018L4773,2018L4771,2015L4771,2002L4765,2000L4762,1997L4752,1997L4749,1995L4747,1995L4747,1992L4745,1989L4743,1989L4743,1987L4741,1987L4741,1989L4734,1989L4732,1987L4730,1987L4728,1984L4728,1979L4726,1979L4726,1977L4721,1977L4719,1974L4713,1974L4713,1969L4715,1969L4715,1961L4713,1961L4684,1941L4682,1938L4680,1938L4548,1834L4546,1831L4544,1831L4520,1814L4518,1814L4496,1796L4494,1796L4481,1785L4479,1785L4455,1768L4453,1768L4442,1760L4440,1760L4440,1712L4444,1712L4444,1709L4448,1709L4448,1706L4453,1701L4455,1701L4466,1694L4468,1691L4474,1691L4477,1689L4477,1686L4479,1686L4481,1683L4483,1683L4483,1681L4492,1683L4500,1683L4500,1678L4503,1676L4518,1676L4520,1673L4529,1673L4531,1671L4533,1671L4539,1663L4539,1661L4542,1661L4542,1655L4544,1655L4544,1653L4546,1653L4552,1650L4559,1650L4559,1648L4563,1648L4563,1645L4565,1645L4570,1640L4581,1640L4581,1635L4578,1632L4574,1632L4576,1627L4576,1622L4574,1622L4574,1615L4587,1615L4589,1612L4596,1612L4598,1610L4600,1610L4600,1602L4602,1602L4613,1599L4624,1599L4626,1602L4648,1602L4648,1599L4645,1599L4645,1594L4648,1592L4650,1592L4652,1589L4654,1589L4645,1584L4643,1581L4639,1574L4641,1571L4639,1571L4639,1569L4635,1564L4635,1558L4637,1558L4637,1553L4635,1551L4632,1551L4632,1548L4635,1543L4635,1536L4632,1530L4632,1525L4635,1523L4632,1523L4630,1520L4630,1518L4632,1515L4630,1515L4630,1513L4624,1507L4622,1507L4619,1505L4622,1502L4622,1505L4628,1505L4632,1502L4637,1497L4643,1497L4645,1495L4645,1492L4648,1492L4648,1490L4652,1485L4656,1485L4658,1482L4663,1482L4663,1485L4665,1485L4667,1482L4667,1479L4671,1477L4674,1479L4678,1482L4680,1479L4682,1479L4682,1477L4684,1477L4684,1472L4687,1472L4691,1469L4695,1464L4702,1464L4704,1462L4706,1462L4706,1459L4710,1459L4715,1456L4739,1456L4741,1454L4754,1454L4758,1451L4760,1451L4762,1449L4782,1449L4782,1446L4784,1446L4786,1444L4791,1444L4791,1446L4793,1444L4795,1446L4799,1444L4804,1444L4808,1446L4812,1446L4814,1444L4823,1449L4823,1451L4825,1451L4827,1454L4832,1454L4832,1451L4836,1451L4836,1449L4840,1446L4849,1446L4853,1444L4856,1444L4856,1441L4858,1439L4862,1439L4862,1441L4864,1441L4873,1446L4875,1446L4879,1444L4882,1444L4882,1439L4884,1439L4888,1441L4892,1441L4897,1444L4897,1446L4905,1446L4908,1444L4921,1444L4921,1446L4916,1449L4916,1454L4914,1454L4910,1456L4908,1456L4908,1459L4914,1459L4914,1462L4912,1464L4912,1477L4910,1477L4910,1479L4912,1482L4912,1485L4914,1487L4912,1492L4912,1497L4914,1497L4914,1500L4912,1502L4912,1515L4910,1515L4910,1518L4908,1523L4905,1523L4899,1525L4899,1528L4897,1530L4897,1533L4892,1533L4890,1536L4890,1551L4897,1558L4897,1566L4903,1569L4905,1569L4912,1576L4912,1587L4914,1587L4914,1589L4927,1597L4931,1602L4934,1602L4934,1607L4936,1617L4938,1622L4940,1632L4940,1638L4942,1643L4942,1650L4944,1653L4947,1661L4947,1663L4944,1663L4942,1666L4940,1666L4940,1668L4942,1668L4942,1671L4944,1671L4947,1676L4947,1678L4951,1683L4951,1686L4953,1689L4955,1696L4955,1717L4953,1722L4953,1727L4955,1729L4955,1737L4957,1740L4957,1742L4955,1747L4955,1750L4953,1750L4953,1755L4951,1757L4951,1760L4953,1765L4953,1768L4955,1768L4955,1773L4957,1773L4957,1775L4955,1778L4957,1778L4955,1780L4955,1785L4953,1785L4944,1791L4944,1793L4942,1793L4942,1798L4944,1798L4953,1814L4960,1821L4960,1839L4962,1842L4966,1842L4966,1847L4970,1852L4973,1852L4975,1849L4977,1849L4979,1847L4979,1849L4981,1849L4986,1852L4990,1852L4994,1854L4999,1854L5001,1857L5003,1857L5007,1867L5007,1870L5014,1882L5007,1885L5007,1887L4981,1903L4977,1908L4923,1944L4921,1946L4905,1956L4901,1961L4897,1964L4895,1967L4892,1967L4888,1969L4843,2015L4838,2018L4806,2023L4801,2025L4795,2025L4791,2028L4784,2028L4773,2030L4769,2028L4769,2025L4769,2025L4769,2025z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5027,3106L5029,3104L5029,3089L5035,3083L5038,3078L5040,3076L5042,3076L5042,3073L5040,3071L5042,3068L5046,3066L5048,3063L5053,3063L5055,3061L5055,3058L5061,3050L5064,3043L5064,3022L5066,3022L5066,3007L5064,3007L5061,3004L5061,3002L5064,3002L5064,2999L5059,2997L5057,2992L5057,2987L5055,2987L5055,2984L5051,2976L5051,2974L5048,2971L5048,2966L5046,2959L5046,2956L5042,2951L5042,2948L5044,2946L5044,2941L5048,2941L5051,2938L5053,2938L5053,2923L5051,2920L5051,2918L5048,2915L5048,2913L5046,2910L5046,2908L5044,2905L5042,2900L5042,2895L5038,2882L5038,2879L5033,2872L5031,2869L5029,2869L5025,2857L5025,2854L5022,2854L5022,2851L5027,2849L5037,2849L5037,2846L5038,2845L5040,2844L5053,2844L5055,2841L5057,2844L5064,2844L5068,2841L5070,2841L5072,2844L5141,2844L5141,2849L5144,2851L5146,2851L5146,2859L5144,2859L5144,2862L5146,2862L5148,2869L5148,2874L5150,2874L5150,2877L5150,2874L5150,2877L5152,2877L5152,2890L5154,2892L5157,2892L5157,2895L5159,2897L5161,2902L5161,2905L5163,2908L5165,2908L5167,2913L5167,2915L5185,2915L5185,2913L5196,2913L5196,2910L5202,2910L5202,2913L5219,2913L5219,2900L5222,2900L5222,2897L5224,2895L5224,2892L5222,2890L5224,2887L5224,2879L5245,2879L5245,2877L5254,2877L5254,2879L5252,2882L5252,2890L5287,2890L5289,2892L5289,2900L5287,2900L5287,2908L5284,2910L5284,2913L5287,2913L5287,2918L5289,2920L5289,2925L5291,2925L5291,2933L5289,2936L5289,2943L5287,2948L5289,2951L5287,2956L5287,2959L5289,2966L5293,2974L5295,2974L5297,2976L5297,2984L5300,2984L5300,2987L5302,2989L5302,2992L5300,2992L5300,2997L5302,2999L5302,3002L5300,3004L5297,3004L5297,3012L5300,3012L5300,3020L5306,3015L5306,3012L5310,3012L5310,3015L5315,3015L5315,3012L5317,3012L5319,3015L5326,3015L5326,3012L5328,3012L5330,3010L5336,3010L5339,3012L5345,3012L5347,3010L5347,3007L5347,3015L5349,3020L5349,3025L5347,3033L5347,3050L5349,3053L5349,3055L5345,3068L5345,3073L5347,3073L5347,3076L5293,3076L5293,3183L5295,3186L5295,3191L5300,3196L5306,3201L5326,3224L5332,3226L5334,3229L5328,3229L5319,3231L5317,3231L5308,3234L5300,3234L5284,3239L5271,3239L5271,3237L5269,3237L5265,3239L5261,3239L5261,3242L5258,3239L5250,3239L5250,3237L5245,3234L5243,3237L5235,3237L5235,3234L5232,3234L5230,3237L5219,3237L5219,3234L5206,3234L5204,3231L5202,3231L5196,3224L5193,3219L5170,3219L5167,3221L5076,3219L5076,3221L5068,3221L5066,3219L5061,3216L5061,3214L5057,3211L5057,3208L5055,3208L5053,3206L5042,3206L5040,3208L5038,3208L5038,3211L5031,3214L5031,3216L5029,3216L5027,3214L5020,3214L5018,3211L5016,3211L5014,3214L5012,3214L5009,3216L5007,3216L5007,3201L5009,3201L5009,3173L5007,3173L5007,3168L5012,3168L5012,3165L5014,3163L5014,3160L5016,3160L5016,3150L5018,3145L5018,3142L5020,3137L5022,3135L5022,3124L5025,3122L5025,3117L5022,3117L5022,3114L5025,3112L5027,3106L5027,3106L5027,3106zM5044,2803L5038,2806L5035,2811L5033,2811L5033,2813L5029,2818L5029,2839L5020,2839L5018,2836L5018,2834L5020,2834L5020,2831L5020,2834L5020,2826L5018,2823L5016,2818L5016,2816L5018,2811L5020,2811L5020,2808L5025,2808L5025,2803L5027,2803L5027,2800L5033,2800L5033,2798L5035,2795L5040,2795L5040,2798L5044,2803L5044,2803L5044,2803z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5932,1352L5923,1352L5921,1349L5919,1349L5919,1347L5917,1344L5915,1344L5913,1342L5904,1342L5904,1344L5902,1342L5893,1339L5895,1339L5895,1337L5893,1334L5893,1332L5891,1329L5891,1326L5893,1326L5895,1324L5895,1319L5893,1314L5893,1311L5889,1311L5889,1306L5904,1306L5906,1303L5928,1303L5930,1301L5932,1301L5932,1303L5934,1303L5936,1306L5932,1306L5932,1309L5934,1309L5947,1314L5947,1319L5943,1319L5943,1324L5945,1329L5956,1334L5958,1334L5958,1339L5956,1342L5947,1342L5947,1344L5954,1344L5954,1349L5958,1349L5958,1352L5960,1352L5960,1354L5965,1357L5967,1357L5967,1354L5969,1354L5973,1357L5973,1360L5971,1362L5969,1362L5969,1365L5973,1367L5975,1367L5975,1370L5971,1370L5971,1372L5973,1372L5973,1380L5962,1380L5962,1377L5958,1370L5958,1367L5954,1365L5954,1357L5947,1357L5947,1360L5941,1360L5941,1357L5939,1357L5934,1352L5932,1352L5932,1352L5932,1352z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5122,1122L5120,1122L5115,1125L5098,1125L5094,1128L5094,1130L5092,1130L5085,1133L5072,1133L5072,1130L5057,1130L5055,1128L5038,1128L5035,1125L5025,1125L5025,1122L5020,1117L5018,1117L5018,1115L5020,1112L5016,1112L5007,1115L4992,1115L4988,1120L4988,1122L4981,1122L4981,1120L4979,1120L4979,1117L4977,1117L4977,1120L4973,1120L4973,1117L4970,1115L4968,1115L4968,1117L4966,1117L4964,1120L4960,1120L4957,1117L4955,1117L4955,1115L4951,1112L4949,1112L4949,1110L4947,1107L4947,1105L4949,1102L4951,1102L4949,1099L4947,1099L4947,1097L4953,1097L4953,1094L4957,1097L4960,1099L4966,1102L4964,1105L4968,1105L4973,1099L4970,1097L4970,1094L4973,1094L4975,1097L4983,1097L4986,1102L4990,1102L4999,1097L5003,1097L5005,1094L5020,1094L5020,1092L5027,1092L5029,1094L5031,1094L5031,1092L5035,1092L5038,1094L5035,1094L5038,1097L5042,1099L5044,1099L5044,1092L5040,1092L5040,1089L5042,1089L5042,1084L5040,1084L5038,1082L5038,1079L5035,1079L5035,1077L5038,1074L5042,1074L5046,1071L5051,1071L5053,1069L5055,1069L5055,1064L5066,1064L5066,1056L5068,1056L5070,1059L5072,1059L5072,1061L5074,1061L5079,1064L5081,1061L5087,1061L5089,1064L5089,1059L5092,1056L5096,1056L5098,1051L5098,1048L5109,1048L5109,1051L5113,1051L5113,1054L5122,1054L5124,1056L5128,1056L5135,1059L5137,1059L5137,1056L5146,1056L5148,1059L5150,1059L5152,1061L5152,1064L5148,1069L5150,1069L5150,1071L5152,1071L5152,1077L5154,1077L5157,1079L5157,1082L5159,1082L5157,1082L5154,1087L5154,1092L5146,1092L5146,1089L5141,1089L5137,1092L5139,1094L5144,1094L5146,1097L5144,1099L5139,1099L5137,1102L5139,1102L5139,1107L5137,1107L5137,1110L5139,1110L5139,1115L5133,1115L5128,1117L5128,1120L5124,1120L5124,1122L5122,1122L5122,1122L5122,1122z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5932,1352L5934,1352L5939,1357L5941,1357L5941,1360L5947,1360L5947,1357L5954,1357L5954,1365L5958,1367L5958,1370L5962,1377L5962,1380L5965,1380L5954,1380L5947,1377L5945,1377L5943,1375L5941,1370L5934,1370L5934,1365L5932,1365L5932,1362L5930,1362L5930,1360L5928,1360L5928,1354L5926,1354L5926,1352L5932,1352L5932,1352L5932,1352zM6047,1372L6042,1370L6040,1370L6040,1380L6038,1380L6038,1395L6038,1393L6036,1395L6032,1395L6029,1393L6027,1388L6025,1388L6023,1390L6023,1388L6021,1388L6021,1385L6019,1385L6019,1383L6014,1383L6014,1380L6016,1377L6023,1377L6023,1372L6021,1372L6019,1370L6019,1365L6023,1365L6025,1362L6023,1362L6023,1360L6021,1360L6016,1354L6014,1354L6014,1352L6010,1354L6008,1354L6001,1360L5997,1360L5997,1362L5995,1362L5995,1365L5991,1365L5988,1367L5988,1370L5982,1370L5980,1372L5980,1375L5975,1380L5973,1380L5973,1372L5971,1372L5971,1370L5975,1370L5975,1367L5973,1367L5969,1365L5969,1362L5971,1362L5973,1360L5973,1357L5969,1354L5967,1354L5967,1357L5965,1357L5960,1354L5960,1352L5958,1352L5958,1349L5954,1349L5954,1344L5947,1344L5947,1342L5956,1342L5958,1339L5958,1334L5956,1334L5945,1329L5943,1324L5943,1319L5947,1319L5947,1314L5934,1309L5932,1309L5932,1306L5936,1306L5934,1303L5932,1303L5932,1301L5934,1298L5936,1298L5939,1296L5941,1296L5947,1298L5952,1298L5952,1301L5954,1303L5958,1303L5958,1306L5960,1306L5962,1303L5967,1303L5967,1306L5969,1306L5973,1309L5975,1309L5978,1306L5978,1301L5975,1298L5973,1298L5969,1296L5965,1291L5965,1286L5969,1286L5971,1283L5971,1281L5975,1281L5975,1283L5980,1283L5980,1286L5982,1286L5988,1293L5988,1291L5991,1291L5991,1293L5995,1298L5993,1298L5995,1301L5997,1301L6001,1303L6012,1303L6012,1298L6016,1296L6019,1296L6019,1293L6021,1293L6025,1291L6027,1291L6029,1286L6029,1283L6032,1283L6038,1291L6038,1293L6040,1293L6047,1301L6047,1309L6053,1316L6058,1316L6058,1319L6055,1319L6055,1321L6058,1321L6058,1324L6071,1324L6077,1326L6079,1329L6079,1334L6077,1334L6077,1332L6066,1332L6058,1337L6055,1337L6055,1339L6053,1342L6055,1342L6055,1344L6053,1347L6053,1354L6051,1354L6051,1357L6049,1360L6051,1360L6051,1362L6053,1362L6053,1365L6049,1365L6049,1367L6047,1372L6047,1372L6047,1372z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6164,2242L6164,2237L6166,2234L6168,2234L6170,2237L6172,2237L6175,2239L6177,2239L6181,2237L6188,2237L6194,2239L6194,2242L6192,2245L6188,2245L6185,2247L6181,2247L6175,2250L6170,2247L6168,2247L6164,2242L6164,2242L6164,2242zM5882,2204L5882,2196L5878,2196L5878,2183L5876,2178L5876,2173L5874,2171L5874,2163L5871,2158L5871,2155L5869,2155L5867,2153L5867,2150L5869,2153L5869,2142L5867,2142L5867,2137L5869,2137L5869,2132L5871,2132L5871,2125L5869,2117L5871,2114L5874,2114L5878,2109L5878,2107L5880,2107L5880,2102L5878,2099L5878,2097L5880,2091L5880,2084L5882,2081L5884,2081L5884,2079L5893,2079L5893,2081L5895,2081L5895,2084L5897,2084L5902,2086L5906,2084L5908,2086L5934,2086L5939,2089L5965,2091L5971,2089L5986,2109L5991,2109L5997,2086L6016,2058L6084,2048L6125,2030L6146,2084L6146,2086L6149,2086L6157,2107L6153,2107L6151,2109L6149,2109L6146,2112L6142,2112L6140,2114L6138,2114L6131,2122L6129,2127L6129,2130L6131,2132L6131,2140L6127,2142L6125,2142L6118,2148L6116,2148L6116,2150L6112,2150L6105,2155L6097,2155L6094,2158L6090,2158L6086,2160L6081,2160L6071,2168L6071,2165L6068,2165L6049,2176L6045,2176L6045,2178L6042,2178L6042,2183L6038,2188L6034,2191L6034,2193L6032,2191L6029,2191L6029,2193L6019,2193L6016,2191L6014,2191L6012,2193L6010,2193L6010,2196L6006,2196L6006,2199L6003,2199L5999,2204L5997,2204L5997,2206L5991,2206L5986,2209L5982,2209L5982,2211L5978,2211L5971,2214L5969,2213L5949,2214L5949,2216L5947,2216L5945,2219L5945,2222L5943,2222L5943,2224L5939,2224L5936,2227L5934,2227L5934,2229L5926,2234L5923,2234L5921,2232L5919,2232L5915,2237L5910,2237L5908,2239L5902,2239L5902,2237L5897,2237L5895,2234L5891,2234L5891,2237L5889,2237L5889,2232L5887,2227L5882,2222L5882,2204L5882,2204L5882,2204z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5605,2969L5605,2966L5598,2966L5596,2961L5596,2959L5594,2959L5592,2956L5590,2956L5588,2953L5583,2953L5583,2951L5577,2951L5577,2948L5572,2948L5572,2946L5570,2946L5570,2948L5568,2948L5568,2943L5566,2943L5564,2941L5564,2943L5562,2943L5559,2941L5557,2941L5557,2938L5553,2933L5549,2933L5547,2936L5542,2937L5536,2934L5535,2931L5529,2932L5526,2925L5530,2923L5530,2920L5527,2920L5521,2923L5512,2923L5503,2925L5497,2925L5492,2928L5484,2928L5484,2931L5485,2932L5489,2930L5492,2935L5491,2942L5488,2947L5484,2950L5483,2955L5478,2961L5473,2961L5477,2969L5477,2976L5475,2979L5477,2984L5475,2987L5477,2994L5477,3002L5475,3002L5475,3007L5473,3010L5473,3020L5471,3020L5471,3022L5469,3025L5469,3030L5471,3030L5471,3038L5473,3040L5477,3043L5479,3043L5482,3048L5484,3050L5486,3050L5486,3053L5488,3055L5495,3055L5497,3058L5501,3058L5501,3055L5499,3055L5499,3053L5501,3050L5503,3050L5508,3048L5510,3048L5510,3091L5505,3091L5503,3089L5505,3086L5505,3083L5501,3083L5501,3086L5499,3086L5495,3089L5492,3091L5490,3089L5486,3089L5486,3083L5482,3078L5479,3073L5477,3071L5475,3071L5474,3070L5473,3068L5473,3066L5471,3061L5469,3058L5464,3058L5460,3055L5458,3053L5449,3053L5449,3050L5447,3050L5447,3048L5445,3048L5445,3043L5443,3040L5440,3040L5438,3038L5438,3030L5432,3030L5432,3040L5430,3040L5427,3043L5421,3043L5417,3040L5404,3040L5395,3035L5388,3035L5384,3030L5384,3017L5382,3017L5382,3020L5375,3020L5369,3022L5367,3022L5365,3025L5362,3025L5360,3027L5360,3025L5358,3025L5358,3020L5360,3020L5360,3017L5356,3012L5354,3012L5352,3010L5352,3007L5347,3007L5347,3015L5349,3020L5349,3025L5347,3033L5347,3050L5349,3053L5349,3055L5345,3068L5345,3073L5347,3073L5347,3076L5293,3076L5293,3183L5295,3186L5295,3191L5300,3196L5306,3201L5326,3224L5332,3226L5334,3229L5349,3224L5373,3224L5375,3226L5378,3226L5382,3231L5382,3234L5388,3234L5391,3237L5393,3234L5395,3234L5397,3237L5399,3237L5399,3239L5406,3239L5406,3237L5414,3237L5414,3239L5419,3239L5419,3242L5423,3242L5427,3239L5432,3239L5436,3237L5436,3234L5440,3226L5445,3221L5449,3219L5449,3214L5451,3211L5453,3206L5460,3203L5462,3201L5475,3193L5479,3193L5482,3191L5482,3180L5484,3175L5484,3173L5486,3173L5488,3170L5492,3168L5495,3168L5497,3165L5503,3163L5525,3163L5525,3152L5523,3152L5523,3150L5521,3150L5521,3142L5529,3137L5531,3137L5538,3135L5540,3135L5544,3132L5551,3132L5555,3129L5557,3129L5557,3127L5562,3124L5566,3124L5568,3122L5572,3122L5577,3119L5581,3119L5601,3109L5598,3106L5594,3104L5592,3099L5592,3096L5590,3096L5590,3094L5592,3094L5596,3089L5596,3078L5598,3078L5598,3073L5596,3071L5596,3068L5598,3063L5605,3063L5607,3061L5611,3058L5611,3055L5614,3055L5611,3053L5609,3055L5607,3055L5607,3053L5605,3048L5605,3045L5607,3045L5607,3030L5605,3030L5605,3022L5609,3017L5609,3015L5607,3015L5607,3012L5605,3007L5607,3004L5611,3004L5614,3002L5614,2999L5616,2999L5616,2994L5614,2992L5614,2987L5611,2984L5607,2981L5607,2971L5605,2969L5605,2969L5605,2969z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5588,903L5590,903L5590,906L5588,908L5583,911L5581,911L5577,916L5568,916L5564,913L5564,911L5553,911L5553,916L5551,916L5549,918L5553,921L5555,921L5555,924L5557,924L5559,926L5557,929L5555,929L5557,931L5559,931L5559,941L5562,944L5564,944L5564,946L5551,946L5551,949L5540,949L5540,952L5538,952L5531,959L5531,962L5529,962L5529,967L5531,967L5531,972L5529,975L5527,975L5525,972L5525,969L5521,967L5514,967L5512,969L5508,969L5508,967L5503,967L5499,969L5497,972L5495,972L5495,967L5492,967L5492,964L5490,964L5490,962L5488,962L5482,964L5482,967L5479,967L5479,969L5477,969L5477,964L5469,964L5466,962L5464,962L5464,964L5453,964L5453,967L5451,969L5449,967L5451,967L5451,964L5438,964L5436,962L5436,959L5425,959L5425,957L5414,957L5417,957L5408,957L5408,954L5384,954L5384,952L5378,952L5378,954L5358,954L5356,957L5356,959L5349,964L5345,964L5345,962L5339,962L5336,964L5339,964L5339,967L5336,967L5334,964L5334,962L5336,959L5336,952L5339,952L5339,949L5336,946L5330,944L5326,944L5326,941L5328,939L5330,934L5332,934L5334,931L5341,931L5345,929L5345,918L5343,911L5341,908L5339,903L5339,901L5336,898L5336,895L5334,890L5334,888L5356,888L5358,890L5358,888L5362,888L5365,885L5367,885L5369,888L5371,885L5371,883L5369,883L5371,880L5380,880L5382,878L5386,878L5388,875L5391,875L5391,872L5393,867L5397,867L5397,865L5395,865L5395,860L5397,860L5397,857L5399,855L5408,855L5410,852L5410,847L5421,847L5425,844L5425,842L5417,842L5419,839L5421,834L5421,829L5427,829L5427,827L5432,827L5436,824L5436,827L5449,827L5449,821L5451,821L5453,819L5456,819L5456,816L5458,816L5462,814L5464,814L5464,816L5466,819L5469,819L5469,816L5477,816L5477,819L5479,819L5479,821L5484,821L5486,819L5492,819L5497,821L5499,821L5499,824L5497,827L5497,829L5501,829L5512,824L5521,824L5531,829L5536,834L5538,832L5540,832L5540,839L5538,842L5538,844L5540,847L5542,847L5542,852L5540,855L5538,855L5536,857L5536,860L5540,860L5546,867L5544,867L5544,870L5549,870L5551,875L5551,878L5562,883L5566,883L5566,890L5564,890L5564,893L5570,893L5572,890L5583,895L5581,898L5581,901L5583,901L5588,903L5588,903L5588,903z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4843,980L4843,982L4838,987L4838,990L4840,990L4838,992L4849,992L4853,995L4856,995L4856,1000L4858,1000L4858,1003L4860,1005L4858,1005L4856,1008L4853,1008L4853,1010L4851,1010L4851,1013L4849,1010L4847,1010L4845,1013L4843,1018L4840,1018L4840,1023L4843,1023L4845,1026L4845,1031L4836,1031L4834,1033L4834,1031L4832,1031L4832,1028L4830,1028L4821,1023L4817,1023L4814,1015L4817,1015L4817,1010L4814,1010L4814,1013L4812,1013L4812,1015L4810,1015L4806,1018L4797,1018L4797,1008L4793,1005L4786,1005L4784,1003L4782,1003L4782,1000L4773,1000L4773,997L4771,995L4771,992L4769,992L4769,990L4767,990L4765,992L4758,992L4754,990L4754,985L4752,980L4760,977L4762,975L4767,975L4767,972L4775,972L4777,973L4796,973L4797,975L4799,972L4804,972L4804,969L4806,967L4808,967L4808,969L4812,969L4812,967L4817,967L4817,969L4814,969L4821,969L4821,967L4823,969L4823,972L4825,975L4836,975L4836,977L4843,977L4843,980L4843,980L4843,980z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2222,2120L2218,2120L2218,2122L2213,2127L2211,2127L2211,2132L2209,2132L2205,2130L2205,2084L2207,2071L2207,2069L2205,2063L2211,2063L2213,2066L2218,2061L2218,2056L2220,2056L2222,2053L2224,2048L2224,2046L2226,2046L2226,2048L2228,2048L2228,2051L2235,2051L2235,2061L2233,2063L2233,2066L2231,2069L2231,2081L2228,2084L2228,2091L2231,2091L2231,2102L2222,2120L2222,2120L2222,2120z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4728,2423L4728,2390L4726,2377L4726,2352L4723,2352L4723,2349L4721,2349L4721,2347L4719,2344L4719,2324L4717,2324L4715,2321L4710,2318L4708,2316L4702,2311L4704,2308L4704,2301L4706,2298L4706,2293L4708,2290L4708,2288L4710,2288L4715,2283L4719,2283L4719,2278L4739,2278L4743,2273L4743,2270L4745,2270L4747,2267L4747,2250L4756,2250L4756,2247L4760,2247L4765,2250L4771,2257L4771,2260L4773,2262L4778,2262L4778,2265L4780,2265L4780,2267L4782,2270L4780,2270L4780,2273L4778,2278L4782,2283L4784,2288L4784,2290L4786,2290L4786,2301L4788,2301L4788,2306L4786,2311L4782,2311L4780,2316L4782,2318L4784,2318L4784,2321L4782,2326L4780,2329L4778,2329L4775,2331L4773,2331L4773,2334L4775,2334L4769,2341L4769,2352L4767,2354L4758,2354L4758,2375L4756,2375L4756,2382L4758,2382L4758,2385L4756,2387L4756,2395L4758,2395L4758,2420L4756,2423L4758,2426L4758,2436L4756,2438L4756,2443L4745,2443L4739,2446L4732,2446L4730,2441L4728,2438L4728,2436L4726,2436L4726,2423L4728,2423L4728,2423L4728,2423z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7147,1763L7147,1760L7151,1760L7151,1752L7156,1752L7156,1747L7158,1747L7158,1742L7160,1742L7162,1740L7164,1740L7164,1734L7167,1734L7171,1729L7175,1729L7175,1727L7177,1727L7180,1724L7182,1724L7186,1727L7193,1727L7193,1729L7190,1729L7190,1732L7193,1734L7195,1732L7197,1734L7199,1734L7200,1736L7201,1734L7208,1734L7208,1737L7212,1737L7212,1734L7214,1734L7214,1732L7216,1732L7216,1734L7221,1734L7221,1737L7227,1737L7227,1745L7225,1745L7225,1750L7229,1755L7236,1755L7236,1752L7238,1757L7240,1757L7240,1760L7238,1763L7236,1763L7236,1765L7238,1768L7238,1770L7240,1770L7238,1773L7232,1773L7229,1775L7223,1775L7223,1773L7219,1773L7219,1775L7195,1775L7193,1773L7186,1773L7186,1775L7184,1775L7184,1778L7171,1778L7171,1775L7167,1775L7162,1773L7160,1773L7160,1775L7156,1775L7156,1773L7154,1770L7149,1770L7149,1765L7147,1765L7147,1763L7147,1763L7147,1763z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2872,3035L2874,3033L2874,3035L2876,3038L2876,3045L2882,3045L2882,3048L2887,3050L2889,3050L2889,3055L2891,3055L2891,3058L2893,3058L2895,3061L2908,3061L2908,3058L2913,3058L2919,3063L2919,3066L2930,3066L2930,3068L2934,3073L2937,3073L2939,3076L2941,3076L2941,3078L2947,3081L2956,3081L2956,3086L2958,3089L2960,3089L2963,3091L2963,3094L2986,3094L2989,3096L2993,3099L2995,3099L2997,3101L3002,3101L3002,3104L3004,3109L3004,3112L3002,3112L3002,3119L3004,3119L3008,3129L3008,3145L2999,3145L3004,3150L3008,3157L3010,3183L3060,3186L3060,3183L3062,3183L3062,3188L3060,3191L3060,3193L3058,3193L3058,3208L3060,3211L3060,3216L3062,3216L3067,3221L3069,3221L3071,3224L3073,3221L3073,3224L3077,3226L3077,3234L3082,3244L3084,3247L3084,3249L3082,3249L3082,3254L3077,3270L3080,3275L3077,3275L3075,3277L3075,3280L3071,3288L3069,3295L3075,3305L3073,3305L3067,3310L3067,3300L3064,3298L3062,3298L3041,3285L3038,3285L3032,3282L3012,3282L3004,3285L3002,3288L2993,3288L2978,3293L2967,3293L2965,3295L2963,3303L2963,3308L2956,3316L2954,3321L2952,3323L2952,3339L2950,3351L2945,3361L2945,3367L2943,3374L2941,3377L2941,3379L2937,3374L2937,3372L2906,3372L2904,3374L2900,3384L2900,3387L2898,3387L2898,3390L2895,3392L2895,3400L2893,3400L2893,3392L2891,3392L2891,3387L2889,3384L2889,3379L2887,3377L2885,3377L2878,3374L2854,3374L2846,3364L2841,3364L2841,3372L2839,3374L2837,3374L2835,3377L2828,3377L2828,3379L2826,3382L2826,3384L2824,3384L2822,3387L2820,3387L2820,3392L2815,3397L2811,3400L2798,3400L2796,3397L2796,3390L2798,3390L2794,3379L2796,3379L2794,3374L2794,3372L2791,3369L2789,3369L2789,3359L2787,3359L2787,3346L2781,3336L2778,3336L2776,3333L2776,3328L2778,3328L2778,3323L2774,3323L2774,3321L2772,3321L2772,3316L2774,3316L2772,3313L2772,3308L2776,3308L2776,3305L2778,3303L2776,3300L2776,3298L2774,3298L2774,3295L2776,3293L2776,3290L2778,3290L2781,3288L2781,3285L2778,3285L2778,3282L2774,3282L2774,3280L2772,3277L2768,3275L2765,3272L2768,3270L2765,3267L2765,3265L2763,3262L2763,3247L2761,3247L2761,3244L2763,3242L2761,3242L2757,3239L2757,3234L2752,3229L2750,3229L2750,3219L2748,3216L2746,3216L2750,3211L2752,3211L2757,3206L2759,3201L2761,3198L2763,3198L2763,3191L2765,3188L2770,3186L2770,3183L2765,3180L2763,3180L2763,3183L2761,3183L2761,3180L2759,3180L2752,3163L2757,3155L2757,3152L2759,3150L2761,3150L2761,3147L2759,3147L2755,3142L2755,3135L2757,3135L2759,3132L2759,3127L2761,3124L2765,3122L2765,3117L2770,3117L2770,3114L2768,3112L2768,3109L2765,3109L2765,3101L2763,3099L2763,3096L2765,3096L2765,3071L2768,3071L2768,3068L2770,3068L2772,3066L2772,3063L2774,3061L2774,3058L2772,3055L2768,3045L2768,3043L2765,3043L2765,3040L2763,3038L2763,3035L2759,3030L2759,3027L2750,3012L2748,3010L2763,3010L2770,3012L2772,3015L2778,3015L2778,3012L2785,3012L2785,3010L2789,3004L2789,3002L2791,3002L2791,2999L2798,2999L2800,3002L2804,2997L2804,2994L2807,2994L2811,2989L2815,2989L2817,2987L2820,2987L2822,2984L2822,2981L2824,2981L2828,2976L2830,2976L2830,2974L2837,2974L2843,2971L2854,2971L2859,2974L2861,2974L2861,2969L2865,2969L2867,2971L2867,2989L2865,2989L2865,2994L2863,2994L2863,2999L2865,3002L2867,3007L2867,3012L2865,3015L2865,3020L2867,3025L2867,3027L2869,3027L2872,3030L2872,3033L2869,3033L2869,3035L2872,3035L2872,3035L2872,3035z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5202,1181L5202,1184L5213,1184L5213,1181L5215,1181L5217,1184L5219,1184L5219,1186L5217,1189L5215,1194L5211,1199L5211,1201L5213,1201L5213,1204L5215,1204L5219,1207L5222,1209L5226,1212L5224,1214L5219,1214L5217,1212L5215,1212L5215,1214L5219,1217L5224,1222L5222,1227L5217,1227L5215,1230L5215,1227L5209,1227L5209,1232L5211,1235L5211,1237L5209,1237L5209,1235L5204,1235L5200,1237L5200,1245L5196,1245L5196,1247L5193,1247L5193,1250L5196,1252L5196,1255L5198,1255L5198,1258L5196,1258L5193,1260L5193,1258L5187,1258L5185,1255L5180,1252L5178,1250L5176,1250L5176,1247L5172,1247L5172,1242L5170,1242L5161,1237L5161,1230L5157,1230L5154,1227L5152,1227L5152,1224L5148,1222L5146,1219L5146,1217L5144,1217L5144,1214L5141,1212L5137,1212L5135,1209L5135,1207L5128,1207L5131,1201L5128,1196L5126,1194L5126,1191L5124,1189L5122,1189L5120,1186L5118,1186L5120,1181L5120,1173L5126,1173L5131,1179L5133,1179L5133,1181L5139,1173L5150,1173L5150,1171L5159,1176L5161,1176L5161,1173L5167,1176L5174,1176L5176,1179L5178,1179L5178,1176L5185,1176L5187,1179L5187,1176L5198,1176L5202,1181L5202,1181L5202,1181z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5300,3244L5306,3244L5310,3242L5321,3239L5328,3239L5328,3242L5330,3242L5330,3244L5332,3247L5334,3247L5334,3249L5336,3249L5336,3252L5334,3252L5336,3254L5336,3257L5339,3254L5341,3254L5343,3252L5343,3249L5345,3249L5345,3247L5347,3247L5347,3244L5356,3239L5360,3239L5360,3242L5365,3242L5371,3234L5380,3234L5380,3234L5382,3234L5382,3237L5384,3239L5384,3242L5388,3247L5388,3252L5391,3252L5395,3257L5395,3259L5397,3262L5399,3267L5401,3270L5404,3270L5404,3272L5401,3275L5401,3277L5404,3277L5404,3280L5406,3282L5406,3285L5408,3290L5410,3290L5410,3293L5412,3293L5414,3295L5419,3298L5419,3300L5423,3300L5423,3303L5430,3305L5434,3305L5436,3308L5438,3308L5438,3313L5440,3316L5438,3318L5438,3321L5451,3321L5451,3336L5449,3341L5451,3341L5451,3344L5453,3344L5453,3346L5456,3346L5456,3349L5458,3351L5460,3356L5469,3356L5469,3359L5477,3359L5484,3361L5484,3364L5488,3364L5488,3372L5490,3372L5490,3374L5492,3374L5495,3372L5495,3374L5497,3377L5488,3377L5486,3382L5486,3384L5484,3384L5482,3387L5477,3390L5466,3390L5464,3392L5464,3395L5458,3402L5458,3405L5453,3410L5447,3410L5447,3415L5443,3415L5440,3418L5436,3420L5434,3423L5434,3425L5430,3425L5430,3433L5427,3438L5427,3446L5423,3446L5419,3451L5417,3451L5417,3456L5410,3456L5408,3458L5404,3458L5401,3461L5399,3461L5399,3471L5395,3484L5393,3486L5393,3489L5391,3492L5386,3492L5386,3494L5378,3494L5378,3492L5375,3492L5375,3494L5373,3494L5371,3497L5365,3497L5365,3494L5358,3494L5356,3492L5354,3492L5354,3489L5347,3489L5347,3492L5341,3484L5339,3484L5339,3481L5336,3481L5334,3479L5332,3479L5328,3476L5326,3476L5321,3479L5319,3479L5317,3481L5315,3486L5315,3492L5313,3492L5313,3502L5310,3502L5310,3504L5306,3507L5302,3512L5300,3512L5297,3514L5297,3517L5293,3522L5287,3522L5287,3527L5284,3527L5284,3530L5278,3530L5276,3527L5274,3527L5274,3530L5265,3530L5263,3527L5258,3527L5258,3530L5256,3530L5254,3527L5254,3514L5256,3514L5256,3512L5258,3512L5258,3509L5261,3507L5258,3497L5256,3494L5256,3486L5254,3484L5254,3481L5252,3479L5250,3474L5243,3466L5241,3466L5237,3461L5237,3372L5265,3372L5265,3249L5300,3244L5300,3244z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7873,2494L7870,2494L7868,2497L7870,2502L7870,2515L7866,2520L7864,2520L7864,2517L7860,2515L7855,2510L7855,2505L7853,2505L7853,2502L7849,2502L7855,2502L7862,2497L7864,2497L7864,2494L7866,2494L7866,2492L7868,2492L7873,2487L7877,2487L7877,2489L7875,2492L7875,2493L7877,2494L7879,2492L7881,2492L7881,2497L7883,2500L7883,2502L7881,2502L7883,2505L7883,2507L7886,2510L7883,2510L7879,2507L7877,2507L7875,2500L7875,2497L7873,2494L7873,2494L7873,2494z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5460,1278L5451,1278L5449,1281L5447,1281L5443,1278L5440,1275L5432,1275L5430,1278L5421,1278L5419,1281L5419,1283L5414,1283L5412,1286L5412,1288L5414,1288L5410,1288L5410,1286L5408,1286L5406,1288L5406,1291L5408,1291L5408,1298L5404,1301L5399,1301L5397,1298L5393,1301L5391,1301L5384,1303L5382,1303L5382,1301L5380,1301L5378,1298L5369,1298L5365,1296L5362,1293L5356,1293L5356,1291L5354,1291L5354,1293L5349,1293L5349,1296L5343,1296L5341,1298L5326,1298L5326,1301L5323,1301L5319,1298L5319,1288L5321,1288L5321,1286L5319,1286L5319,1283L5317,1283L5317,1281L5315,1278L5310,1275L5308,1275L5306,1273L5304,1268L5302,1268L5304,1268L5304,1265L5306,1265L5306,1263L5308,1263L5308,1260L5306,1260L5304,1258L5304,1250L5308,1250L5308,1247L5310,1250L5313,1250L5319,1242L5319,1237L5315,1237L5315,1235L5313,1232L5310,1232L5308,1230L5306,1230L5304,1222L5302,1219L5304,1212L5308,1212L5308,1209L5310,1207L5310,1204L5310,1207L5313,1207L5317,1209L5321,1209L5321,1212L5317,1212L5317,1214L5315,1217L5317,1217L5319,1219L5323,1219L5326,1217L5334,1217L5334,1219L5341,1219L5347,1222L5360,1222L5362,1219L5365,1219L5365,1222L5382,1222L5384,1224L5393,1224L5395,1222L5397,1222L5401,1217L5406,1214L5408,1214L5408,1212L5417,1212L5421,1209L5430,1209L5432,1207L5434,1209L5440,1209L5443,1212L5451,1212L5451,1214L5456,1214L5456,1212L5458,1212L5458,1217L5460,1217L5462,1219L5466,1219L5471,1222L5475,1222L5475,1230L5473,1232L5462,1232L5462,1235L5460,1235L5460,1237L5458,1240L5456,1245L5456,1255L5451,1255L5449,1258L5445,1260L5443,1263L5449,1263L5449,1265L5451,1265L5451,1270L5453,1270L5460,1278L5460,1278L5460,1278z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4708,2209L4710,2211L4714,2212L4715,2214L4717,2214L4715,2216L4713,2216L4710,2214L4708,2214L4708,2227L4713,2227L4726,2239L4732,2239L4736,2234L4741,2234L4741,2237L4743,2239L4743,2245L4741,2245L4739,2247L4745,2260L4747,2262L4747,2267L4745,2270L4743,2270L4743,2273L4739,2278L4719,2278L4719,2283L4715,2283L4710,2288L4708,2288L4708,2290L4706,2293L4704,2290L4702,2290L4700,2293L4695,2293L4695,2290L4687,2290L4682,2288L4676,2288L4674,2285L4674,2288L4671,2288L4665,2295L4663,2293L4663,2290L4650,2290L4652,2290L4602,2290L4602,2295L4600,2301L4600,2308L4602,2313L4604,2316L4604,2339L4606,2339L4606,2344L4604,2344L4600,2339L4600,2336L4593,2329L4591,2329L4587,2326L4576,2326L4574,2329L4572,2329L4570,2331L4568,2329L4563,2334L4563,2336L4559,2336L4557,2334L4548,2334L4548,2329L4544,2326L4544,2321L4539,2313L4533,2313L4533,2316L4531,2316L4531,2313L4529,2313L4529,2301L4531,2301L4531,2295L4529,2290L4529,2288L4535,2288L4535,2283L4537,2278L4537,2273L4535,2273L4535,2265L4537,2260L4544,2260L4550,2257L4552,2257L4552,2255L4557,2250L4559,2250L4559,2242L4561,2242L4559,2239L4559,2237L4557,2237L4557,2234L4565,2234L4565,2227L4563,2227L4561,2222L4565,2216L4572,2211L4576,2214L4583,2222L4585,2222L4587,2219L4585,2219L4585,2216L4591,2216L4591,2204L4596,2204L4600,2206L4602,2204L4600,2204L4600,2199L4602,2193L4602,2191L4609,2188L4609,2186L4613,2183L4615,2186L4619,2186L4622,2188L4626,2188L4626,2178L4635,2178L4643,2171L4645,2171L4650,2168L4652,2168L4661,2158L4669,2158L4671,2160L4674,2158L4689,2163L4689,2165L4687,2165L4689,2168L4687,2171L4687,2181L4691,2181L4691,2183L4693,2186L4693,2188L4691,2188L4693,2196L4695,2199L4697,2204L4704,2204L4708,2209L4708,2209L4708,2209z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5498,2763L5497,2771L5498,2780L5502,2787L5505,2796L5504,2798L5505,2798L5508,2795L5512,2793L5518,2785L5523,2775L5525,2775L5525,2772L5527,2767L5529,2765L5531,2765L5533,2762L5531,2762L5531,2760L5536,2760L5538,2757L5538,2749L5533,2749L5533,2747L5527,2747L5527,2744L5525,2744L5529,2732L5531,2729L5527,2729L5527,2726L5525,2726L5523,2729L5518,2732L5514,2726L5512,2726L5512,2742L5503,2742L5501,2744L5499,2742L5497,2744L5497,2739L5495,2737L5488,2737L5488,2742L5486,2742L5486,2744L5490,2749L5492,2749L5492,2765L5493,2765L5494,2763L5498,2763L5498,2763L5498,2763z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7535,2257L7535,2245L7533,2239L7530,2239L7530,2237L7528,2237L7528,2227L7526,2222L7524,2222L7524,2206L7524,2209L7528,2209L7528,2206L7530,2206L7530,2204L7535,2201L7535,2196L7537,2196L7537,2193L7539,2193L7539,2188L7541,2186L7543,2186L7543,2183L7548,2183L7550,2181L7559,2181L7561,2178L7561,2181L7567,2183L7569,2183L7572,2181L7587,2181L7587,2178L7591,2178L7593,2181L7598,2181L7598,2186L7602,2186L7602,2181L7604,2183L7602,2183L7604,2183L7604,2188L7606,2191L7608,2191L7611,2188L7613,2188L7617,2191L7619,2191L7619,2193L7621,2196L7628,2196L7630,2191L7626,2186L7626,2181L7632,2181L7632,2178L7637,2178L7637,2176L7639,2176L7639,2173L7641,2173L7641,2176L7643,2178L7645,2178L7645,2181L7647,2183L7650,2183L7656,2181L7663,2173L7667,2173L7667,2171L7669,2171L7669,2173L7667,2176L7667,2181L7665,2181L7665,2178L7665,2181L7663,2181L7663,2193L7667,2196L7667,2199L7665,2201L7671,2209L7671,2214L7669,2216L7667,2227L7667,2232L7669,2232L7669,2247L7667,2247L7665,2250L7663,2250L7663,2247L7660,2247L7660,2250L7658,2250L7652,2257L7647,2257L7645,2260L7637,2260L7639,2262L7637,2265L7637,2267L7639,2270L7632,2270L7632,2267L7628,2267L7626,2265L7626,2267L7624,2270L7621,2270L7619,2273L7621,2273L7621,2283L7624,2285L7628,2288L7630,2288L7630,2298L7628,2298L7624,2295L7621,2295L7619,2290L7617,2290L7617,2293L7608,2293L7608,2295L7602,2295L7600,2293L7598,2295L7600,2298L7600,2301L7598,2301L7598,2303L7595,2303L7595,2306L7593,2306L7593,2308L7589,2308L7589,2306L7587,2306L7582,2311L7578,2308L7578,2306L7563,2306L7563,2308L7559,2308L7556,2306L7556,2301L7561,2301L7561,2290L7556,2288L7556,2285L7554,2288L7554,2290L7552,2293L7552,2295L7546,2295L7543,2293L7546,2293L7546,2285L7543,2285L7543,2275L7541,2275L7535,2257L7535,2257L7535,2257z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5115,2324L5113,2326L5105,2326L5105,2324L5100,2324L5100,2326L5087,2326L5083,2324L5076,2326L5074,2326L5074,2329L5072,2331L5070,2331L5070,2334L5068,2336L5070,2336L5079,2349L5081,2349L5079,2352L5085,2357L5087,2359L5094,2364L5094,2362L5094,2364L5096,2364L5100,2369L5102,2375L5105,2375L5105,2380L5107,2385L5109,2385L5109,2392L5111,2392L5111,2398L5113,2398L5113,2403L5111,2405L5111,2410L5109,2410L5107,2413L5105,2413L5105,2415L5102,2420L5102,2423L5100,2423L5100,2431L5096,2431L5096,2433L5094,2441L5092,2443L5092,2446L5085,2449L5083,2451L5083,2454L5081,2454L5083,2459L5085,2459L5085,2456L5087,2456L5087,2474L5085,2477L5085,2479L5087,2479L5087,2482L5089,2482L5089,2500L5092,2500L5092,2502L5094,2505L5096,2505L5100,2510L5100,2515L5102,2517L5098,2520L5100,2522L5100,2525L5102,2525L5105,2530L5113,2543L5120,2548L5120,2551L5124,2551L5128,2556L5128,2573L5131,2579L5131,2581L5128,2579L5128,2591L5131,2594L5128,2596L5126,2596L5126,2594L5124,2594L5120,2589L5115,2589L5111,2586L5107,2586L5105,2584L5102,2584L5100,2586L5094,2586L5094,2584L5092,2584L5089,2581L5051,2581L5051,2576L5046,2576L5042,2579L5031,2579L5029,2576L4996,2576L4996,2581L4957,2581L4957,2579L4955,2579L4955,2576L4953,2576L4953,2568L4955,2558L4955,2556L4957,2553L4957,2545L4949,2535L4951,2533L4949,2533L4947,2528L4949,2525L4951,2525L4951,2522L4949,2521L4947,2521L4944,2522L4942,2525L4942,2522L4940,2522L4938,2520L4934,2520L4931,2517L4929,2517L4931,2515L4931,2512L4929,2512L4929,2502L4927,2500L4927,2502L4923,2502L4923,2505L4918,2505L4918,2500L4921,2494L4921,2492L4923,2489L4923,2487L4925,2482L4927,2482L4927,2469L4929,2469L4929,2466L4927,2466L4927,2461L4934,2454L4938,2451L4940,2446L4942,2443L4944,2443L4944,2441L4947,2441L4949,2438L4951,2438L4951,2433L4953,2431L4953,2428L4955,2431L4955,2428L4962,2423L4964,2420L4964,2426L4973,2426L4975,2420L4977,2420L4979,2423L4983,2423L4983,2428L4986,2431L4990,2431L4990,2433L4988,2436L4990,2438L4990,2441L4999,2441L4999,2436L5001,2436L5003,2433L5003,2426L5005,2423L5007,2423L5012,2420L5012,2418L5009,2415L5009,2413L5007,2413L5009,2413L5009,2410L5012,2410L5012,2408L5016,2403L5016,2398L5018,2395L5018,2392L5020,2392L5020,2385L5022,2385L5022,2382L5020,2380L5020,2377L5022,2377L5022,2375L5025,2377L5025,2375L5027,2375L5027,2372L5025,2372L5025,2369L5033,2369L5033,2367L5038,2364L5038,2354L5042,2341L5046,2341L5046,2339L5048,2339L5048,2336L5051,2331L5048,2329L5048,2321L5053,2321L5055,2318L5055,2316L5057,2308L5057,2303L5059,2303L5059,2301L5061,2298L5061,2295L5066,2290L5068,2285L5070,2283L5076,2283L5079,2280L5081,2280L5081,2278L5083,2278L5087,2275L5087,2252L5085,2252L5085,2250L5083,2247L5074,2247L5074,2245L5076,2245L5076,2242L5074,2239L5072,2227L5072,2224L5083,2224L5083,2227L5085,2227L5085,2234L5089,2234L5094,2237L5094,2239L5096,2247L5096,2252L5094,2252L5094,2255L5098,2255L5098,2257L5100,2267L5100,2278L5098,2278L5098,2288L5100,2295L5100,2301L5102,2303L5102,2308L5109,2316L5111,2321L5113,2321L5113,2324L5115,2324L5115,2324L5115,2324z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5443,2484L5440,2484L5436,2482L5432,2482L5430,2484L5427,2484L5427,2487L5425,2487L5425,2484L5423,2484L5421,2487L5417,2487L5417,2484L5414,2484L5408,2479L5406,2479L5406,2482L5399,2482L5399,2479L5395,2479L5391,2474L5391,2477L5386,2477L5384,2479L5384,2482L5386,2482L5386,2484L5384,2484L5384,2487L5380,2487L5378,2489L5369,2489L5369,2492L5365,2489L5365,2487L5362,2484L5358,2484L5358,2487L5345,2494L5343,2494L5332,2500L5332,2502L5330,2502L5330,2500L5326,2497L5321,2497L5319,2494L5317,2494L5313,2500L5313,2502L5310,2505L5308,2505L5308,2512L5306,2512L5306,2515L5304,2515L5304,2517L5300,2517L5300,2515L5295,2515L5295,2512L5287,2512L5284,2510L5282,2510L5280,2512L5269,2512L5269,2510L5267,2510L5267,2507L5261,2507L5261,2505L5256,2507L5252,2507L5250,2505L5250,2500L5245,2494L5237,2489L5235,2489L5235,2487L5232,2487L5232,2484L5226,2484L5224,2482L5222,2484L5219,2484L5215,2487L5215,2489L5211,2489L5211,2492L5209,2494L5209,2497L5204,2502L5204,2505L5202,2505L5202,2507L5200,2507L5200,2510L5196,2510L5196,2512L5198,2512L5198,2515L5200,2520L5200,2522L5198,2525L5198,2535L5196,2533L5193,2533L5189,2535L5187,2535L5187,2538L5185,2538L5185,2535L5176,2535L5176,2533L5170,2533L5167,2530L5165,2530L5163,2533L5157,2535L5144,2535L5141,2538L5141,2543L5139,2545L5139,2561L5137,2563L5137,2566L5135,2571L5133,2573L5131,2579L5128,2573L5128,2556L5124,2551L5120,2551L5120,2548L5113,2543L5105,2530L5102,2525L5100,2525L5100,2522L5098,2520L5102,2517L5100,2515L5100,2510L5096,2505L5094,2505L5092,2502L5092,2500L5089,2500L5089,2482L5087,2482L5087,2479L5085,2479L5085,2477L5087,2474L5087,2456L5085,2456L5085,2459L5083,2459L5081,2454L5083,2454L5083,2451L5085,2449L5092,2446L5092,2443L5094,2441L5096,2433L5096,2431L5100,2431L5100,2423L5102,2423L5102,2420L5105,2415L5105,2413L5107,2413L5109,2410L5111,2410L5111,2405L5118,2405L5118,2408L5124,2408L5124,2405L5126,2405L5126,2403L5133,2403L5137,2400L5137,2398L5139,2395L5141,2395L5141,2398L5148,2403L5148,2405L5152,2400L5157,2400L5161,2395L5163,2395L5165,2392L5170,2392L5170,2390L5187,2390L5193,2387L5198,2387L5198,2385L5200,2385L5200,2382L5204,2382L5204,2380L5206,2377L5206,2375L5209,2375L5211,2372L5211,2369L5213,2367L5211,2364L5206,2364L5206,2359L5209,2359L5209,2357L5226,2357L5232,2354L5235,2354L5239,2352L5241,2352L5243,2354L5248,2354L5248,2352L5250,2352L5250,2349L5258,2344L5261,2341L5261,2339L5263,2336L5265,2331L5271,2326L5276,2326L5276,2324L5278,2321L5278,2318L5282,2318L5282,2316L5284,2316L5284,2303L5287,2303L5289,2301L5291,2301L5293,2298L5300,2295L5302,2293L5304,2293L5304,2290L5306,2290L5310,2293L5317,2293L5317,2295L5321,2301L5321,2303L5328,2308L5328,2311L5330,2311L5339,2329L5339,2339L5336,2339L5339,2341L5339,2349L5336,2352L5332,2352L5332,2357L5336,2357L5336,2362L5334,2362L5334,2367L5354,2367L5356,2369L5352,2375L5352,2380L5354,2380L5358,2382L5371,2382L5371,2385L5378,2392L5380,2392L5384,2398L5384,2403L5380,2403L5382,2405L5382,2408L5384,2408L5384,2410L5386,2410L5388,2413L5393,2415L5395,2418L5399,2418L5406,2426L5406,2428L5410,2431L5410,2433L5414,2433L5414,2436L5412,2438L5412,2443L5414,2443L5419,2449L5417,2449L5417,2451L5414,2451L5414,2454L5421,2454L5421,2456L5423,2454L5425,2456L5425,2459L5430,2459L5434,2461L5436,2461L5436,2464L5438,2466L5438,2479L5440,2479L5440,2482L5443,2482L5443,2484L5443,2484L5443,2484z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5115,2324L5113,2324L5113,2321L5111,2321L5109,2316L5102,2308L5102,2303L5100,2301L5100,2295L5098,2288L5098,2278L5100,2278L5100,2267L5098,2257L5098,2255L5094,2255L5094,2252L5096,2252L5096,2247L5094,2239L5094,2237L5089,2234L5085,2234L5085,2227L5083,2227L5083,2224L5072,2224L5064,2209L5059,2204L5059,2199L5057,2193L5055,2181L5055,2178L5057,2178L5057,2176L5061,2176L5061,2173L5064,2171L5064,2165L5066,2160L5070,2155L5072,2150L5076,2145L5076,2142L5081,2137L5085,2130L5096,2120L5100,2112L5111,2099L5118,2000L5120,1997L5124,1987L5126,1987L5113,1972L5113,1967L5115,1967L5113,1964L5113,1961L5105,1951L5105,1949L5102,1949L5102,1926L5098,1908L5098,1900L5126,1885L5347,2012L5347,2137L5343,2137L5339,2135L5336,2135L5336,2137L5323,2137L5319,2142L5317,2142L5317,2145L5319,2145L5319,2158L5315,2158L5315,2160L5313,2160L5310,2165L5310,2168L5313,2171L5306,2173L5304,2173L5304,2183L5306,2186L5308,2186L5308,2188L5304,2191L5302,2193L5300,2193L5297,2196L5295,2201L5295,2204L5300,2209L5300,2216L5297,2219L5295,2219L5295,2222L5293,2222L5289,2227L5287,2232L5287,2234L5289,2237L5297,2237L5297,2234L5306,2239L5304,2242L5304,2247L5306,2255L5308,2257L5308,2273L5310,2275L5315,2278L5319,2278L5319,2285L5317,2293L5310,2293L5306,2290L5304,2290L5304,2293L5302,2293L5300,2295L5293,2298L5291,2301L5289,2301L5287,2303L5284,2303L5284,2316L5282,2316L5282,2318L5278,2318L5278,2321L5276,2324L5276,2326L5271,2326L5265,2331L5263,2336L5261,2339L5261,2341L5258,2344L5250,2349L5250,2352L5248,2352L5248,2354L5243,2354L5241,2352L5239,2352L5235,2354L5232,2354L5226,2357L5209,2357L5209,2359L5206,2359L5206,2364L5211,2364L5213,2367L5211,2369L5211,2372L5209,2375L5206,2375L5206,2377L5204,2380L5204,2382L5200,2382L5200,2385L5198,2385L5198,2387L5193,2387L5187,2390L5170,2390L5170,2392L5165,2392L5163,2395L5161,2395L5157,2400L5152,2400L5148,2405L5148,2403L5141,2398L5141,2395L5139,2395L5137,2398L5137,2400L5133,2403L5126,2403L5126,2405L5124,2405L5124,2408L5118,2408L5118,2405L5111,2405L5113,2403L5113,2398L5111,2398L5111,2392L5109,2392L5109,2385L5107,2385L5105,2380L5105,2375L5102,2375L5100,2369L5096,2364L5094,2364L5094,2362L5094,2364L5087,2359L5085,2357L5079,2352L5081,2349L5079,2349L5070,2336L5068,2336L5070,2334L5070,2331L5072,2331L5074,2329L5074,2326L5076,2326L5083,2324L5087,2326L5100,2326L5100,2324L5105,2324L5105,2326L5113,2326L5115,2324L5115,2324L5115,2324z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2807,2449L2807,2454L2809,2454L2809,2456L2807,2456L2807,2459L2804,2461L2802,2461L2802,2469L2804,2469L2802,2471L2802,2474L2798,2474L2798,2497L2796,2502L2798,2510L2798,2515L2800,2517L2800,2520L2802,2522L2802,2528L2804,2528L2804,2530L2807,2530L2809,2533L2809,2538L2813,2538L2813,2540L2807,2548L2802,2551L2798,2558L2802,2558L2807,2563L2811,2571L2813,2571L2815,2573L2815,2581L2822,2596L2822,2604L2824,2609L2824,2612L2817,2612L2817,2604L2820,2604L2820,2599L2817,2599L2817,2594L2815,2591L2815,2589L2813,2589L2813,2586L2811,2584L2811,2581L2807,2581L2807,2584L2804,2584L2802,2586L2802,2589L2800,2591L2798,2591L2798,2594L2791,2594L2791,2589L2789,2589L2789,2586L2787,2586L2787,2589L2785,2591L2785,2594L2746,2594L2744,2596L2742,2596L2742,2617L2757,2617L2761,2622L2761,2630L2759,2632L2757,2632L2757,2630L2752,2627L2746,2630L2744,2630L2744,2632L2735,2632L2735,2658L2737,2658L2744,2665L2746,2665L2746,2668L2748,2668L2748,2675L2750,2681L2750,2683L2752,2683L2752,2688L2755,2691L2755,2696L2752,2701L2739,2790L2739,2788L2735,2788L2733,2785L2733,2780L2729,2775L2724,2775L2724,2777L2720,2777L2718,2775L2718,2772L2722,2767L2724,2760L2726,2760L2735,2742L2735,2739L2733,2739L2733,2737L2731,2737L2731,2734L2729,2734L2729,2732L2726,2732L2726,2734L2722,2732L2720,2732L2720,2729L2718,2729L2714,2724L2709,2726L2707,2726L2705,2729L2698,2729L2698,2726L2696,2724L2690,2724L2690,2721L2685,2726L2685,2729L2679,2729L2675,2734L2672,2732L2670,2732L2666,2729L2664,2732L2659,2732L2657,2734L2657,2732L2655,2729L2651,2729L2651,2724L2653,2721L2651,2714L2651,2711L2646,2711L2646,2714L2642,2711L2640,2709L2640,2704L2642,2704L2640,2701L2640,2698L2638,2698L2638,2696L2636,2693L2631,2693L2625,2686L2620,2686L2620,2683L2618,2683L2618,2678L2616,2675L2616,2668L2612,2665L2610,2663L2610,2665L2607,2665L2607,2663L2605,2663L2605,2658L2599,2658L2599,2655L2594,2653L2592,2653L2592,2655L2588,2655L2588,2653L2584,2653L2584,2650L2577,2650L2571,2642L2571,2640L2566,2640L2564,2637L2560,2637L2560,2642L2558,2642L2555,2645L2553,2642L2542,2642L2540,2640L2532,2640L2532,2637L2529,2635L2529,2632L2532,2632L2529,2630L2527,2630L2525,2627L2525,2624L2519,2624L2516,2622L2512,2622L2508,2617L2506,2617L2503,2614L2503,2612L2499,2612L2490,2602L2490,2599L2486,2599L2486,2596L2490,2591L2495,2591L2497,2594L2499,2594L2499,2584L2497,2584L2497,2576L2499,2573L2499,2573L2499,2571L2502,2568L2504,2565L2509,2564L2513,2564L2521,2562L2523,2558L2525,2549L2532,2540L2534,2540L2538,2530L2538,2525L2535,2525L2534,2519L2531,2521L2529,2516L2527,2513L2534,2505L2534,2489L2532,2484L2532,2474L2529,2471L2527,2471L2532,2466L2534,2466L2536,2464L2536,2461L2534,2456L2529,2451L2529,2446L2532,2446L2534,2443L2534,2436L2532,2433L2532,2431L2529,2431L2525,2426L2525,2423L2519,2415L2521,2408L2523,2408L2523,2403L2521,2403L2521,2400L2523,2400L2523,2398L2525,2400L2525,2405L2527,2405L2534,2400L2534,2398L2532,2398L2534,2392L2536,2392L2538,2390L2536,2387L2536,2382L2534,2382L2534,2380L2532,2380L2532,2375L2529,2375L2529,2372L2532,2372L2532,2367L2534,2367L2534,2372L2536,2372L2536,2375L2538,2375L2538,2377L2540,2377L2540,2380L2545,2382L2545,2385L2547,2385L2547,2387L2545,2387L2545,2392L2549,2392L2551,2387L2549,2387L2549,2375L2547,2375L2547,2372L2545,2372L2547,2369L2549,2369L2558,2358L2561,2358L2563,2356L2565,2351L2565,2348L2567,2346L2575,2341L2579,2344L2581,2341L2581,2334L2579,2331L2581,2329L2581,2326L2582,2317L2583,2313L2583,2309L2584,2306L2586,2303L2588,2303L2590,2301L2590,2298L2592,2298L2597,2295L2597,2293L2599,2293L2603,2288L2612,2293L2614,2293L2610,2295L2610,2298L2614,2298L2614,2301L2616,2301L2616,2295L2618,2293L2618,2290L2619,2287L2619,2282L2620,2280L2627,2280L2629,2283L2646,2283L2653,2275L2659,2270L2662,2270L2662,2267L2668,2265L2670,2265L2674,2262L2676,2254L2676,2250L2683,2250L2687,2245L2691,2243L2696,2243L2701,2246L2706,2257L2702,2260L2702,2262L2701,2264L2698,2265L2696,2265L2692,2267L2688,2267L2683,2270L2679,2275L2677,2283L2668,2288L2666,2290L2664,2295L2662,2298L2659,2306L2657,2308L2657,2313L2655,2321L2655,2329L2653,2331L2651,2336L2651,2339L2646,2344L2644,2349L2644,2352L2649,2352L2649,2349L2651,2349L2653,2347L2655,2349L2655,2352L2657,2354L2659,2354L2662,2359L2664,2369L2670,2377L2670,2380L2672,2385L2672,2387L2670,2387L2668,2392L2668,2405L2670,2408L2670,2410L2675,2410L2677,2413L2677,2415L2679,2415L2679,2420L2681,2420L2681,2423L2688,2423L2690,2420L2701,2420L2703,2423L2711,2423L2711,2420L2714,2420L2718,2418L2722,2420L2724,2423L2729,2423L2729,2426L2731,2423L2733,2423L2752,2451L2757,2451L2759,2454L2759,2451L2761,2451L2761,2449L2772,2449L2772,2451L2776,2451L2778,2449L2796,2449L2796,2446L2807,2446L2807,2449L2807,2449L2807,2449zM2618,2293L2618,2290L2618,2293M2499,2573L2499,2571L2499,2573L2499,2573L2499,2573z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5064,2798L5064,2800L5061,2806L5059,2808L5057,2808L5053,2811L5048,2806L5048,2803L5046,2803L5046,2800L5044,2800L5044,2803L5040,2798L5040,2795L5035,2795L5033,2798L5033,2800L5027,2800L5027,2803L5025,2803L5025,2808L5020,2808L5020,2811L5018,2811L5016,2816L5014,2816L5014,2813L5009,2808L5009,2800L5007,2800L5007,2798L5003,2793L4996,2788L4996,2785L4994,2785L4992,2783L4992,2780L4990,2780L4992,2777L4992,2772L4994,2772L4994,2770L5001,2767L5001,2765L5007,2772L5012,2772L5012,2770L5009,2770L5009,2767L5012,2762L5014,2762L5014,2760L5009,2757L5007,2757L5007,2752L5009,2749L5005,2744L5003,2744L5003,2739L5005,2739L5005,2734L5003,2732L5003,2726L5007,2732L5007,2729L5009,2729L5014,2726L5014,2729L5016,2729L5027,2726L5029,2724L5029,2719L5027,2719L5027,2714L5029,2714L5031,2711L5035,2711L5035,2714L5038,2714L5038,2716L5040,2721L5040,2724L5041,2725L5042,2726L5044,2726L5048,2729L5051,2729L5053,2732L5055,2732L5061,2724L5064,2724L5064,2719L5066,2721L5066,2732L5068,2732L5072,2734L5072,2732L5074,2732L5074,2729L5076,2729L5076,2716L5079,2714L5081,2714L5081,2704L5083,2704L5083,2688L5081,2686L5081,2681L5083,2681L5083,2673L5085,2673L5085,2670L5083,2670L5083,2668L5081,2668L5079,2665L5074,2665L5074,2660L5068,2660L5066,2658L5066,2655L5068,2655L5068,2640L5070,2640L5072,2635L5072,2632L5074,2632L5074,2635L5076,2635L5079,2632L5079,2630L5083,2624L5083,2619L5081,2619L5079,2614L5079,2607L5072,2607L5070,2604L5064,2604L5064,2607L5059,2609L5053,2609L5051,2612L5046,2612L5046,2609L5048,2609L5048,2602L5046,2602L5046,2594L5048,2591L5048,2586L5051,2584L5051,2581L5089,2581L5092,2584L5094,2584L5094,2586L5100,2586L5102,2584L5105,2584L5107,2586L5111,2586L5115,2589L5120,2589L5124,2594L5126,2594L5126,2596L5128,2596L5131,2594L5128,2591L5128,2579L5131,2581L5131,2579L5133,2573L5135,2571L5137,2566L5137,2563L5139,2561L5139,2545L5141,2543L5141,2538L5144,2535L5157,2535L5163,2533L5165,2530L5167,2530L5170,2533L5176,2533L5176,2535L5185,2535L5185,2538L5187,2538L5187,2535L5189,2535L5193,2533L5196,2533L5198,2535L5198,2538L5200,2543L5200,2545L5198,2548L5198,2551L5196,2551L5193,2556L5193,2561L5191,2563L5191,2566L5189,2566L5189,2568L5187,2568L5187,2573L5183,2579L5183,2602L5180,2612L5180,2614L5178,2614L5178,2632L5180,2635L5180,2640L5178,2640L5178,2642L5176,2645L5176,2647L5174,2650L5174,2670L5172,2670L5170,2673L5170,2675L5161,2686L5157,2686L5152,2688L5152,2691L5150,2691L5150,2693L5148,2693L5148,2696L5146,2698L5146,2701L5144,2704L5144,2706L5141,2709L5141,2711L5139,2711L5139,2714L5137,2716L5135,2716L5135,2719L5133,2719L5133,2721L5131,2721L5131,2762L5128,2767L5128,2770L5126,2770L5124,2775L5124,2777L5120,2783L5113,2783L5113,2785L5111,2785L5111,2790L5109,2793L5109,2790L5107,2790L5107,2793L5102,2793L5102,2795L5094,2806L5094,2808L5089,2811L5081,2811L5081,2798L5083,2798L5083,2795L5081,2790L5079,2793L5070,2795L5070,2798L5068,2798L5066,2795L5064,2795L5064,2798L5064,2798L5064,2798z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2386,2335L2384,2334L2380,2334L2378,2329L2378,2326L2376,2326L2363,2308L2363,2306L2360,2301L2360,2295L2358,2295L2358,2298L2354,2298L2354,2301L2350,2301L2350,2298L2343,2298L2339,2293L2330,2288L2324,2293L2317,2290L2315,2290L2313,2288L2308,2288L2306,2285L2304,2285L2302,2288L2302,2293L2298,2293L2295,2295L2298,2295L2300,2298L2302,2298L2304,2303L2302,2303L2302,2306L2298,2311L2298,2321L2302,2326L2302,2329L2311,2329L2315,2334L2317,2339L2320,2332L2324,2331L2321,2329L2321,2326L2317,2324L2313,2318L2319,2318L2319,2321L2324,2324L2326,2326L2328,2326L2330,2331L2330,2339L2334,2339L2339,2341L2341,2341L2343,2344L2345,2344L2347,2347L2350,2347L2354,2352L2356,2352L2356,2354L2358,2357L2358,2359L2358,2366L2356,2367L2355,2371L2360,2375L2365,2375L2365,2377L2367,2377L2368,2376L2368,2374L2367,2372L2365,2372L2365,2369L2363,2367L2367,2367L2369,2369L2371,2369L2373,2375L2373,2377L2371,2377L2373,2380L2376,2381L2378,2386L2379,2385L2378,2380L2379,2379L2380,2377L2380,2367L2378,2367L2378,2364L2380,2362L2382,2362L2384,2359L2384,2357L2380,2354L2378,2354L2378,2341L2380,2339L2380,2336L2382,2336L2382,2339L2384,2339L2384,2341L2386,2341L2389,2339L2386,2335L2386,2335z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5107,1156L5111,1153L5118,1153L5118,1145L5115,1145L5115,1140L5120,1140L5126,1138L5128,1135L5128,1133L5133,1133L5133,1130L5139,1130L5141,1133L5144,1133L5148,1135L5150,1135L5150,1138L5152,1138L5152,1140L5157,1140L5161,1145L5161,1148L5163,1148L5165,1150L5165,1148L5170,1148L5170,1150L5172,1150L5172,1153L5187,1153L5187,1156L5193,1156L5196,1153L5198,1153L5200,1150L5204,1150L5206,1153L5209,1153L5209,1158L5206,1158L5206,1163L5209,1163L5209,1168L5213,1171L5220,1171L5219,1173L5213,1173L5211,1176L5213,1179L5209,1184L5202,1184L5202,1181L5198,1176L5187,1176L5187,1179L5185,1176L5178,1176L5178,1179L5176,1179L5174,1176L5167,1176L5161,1173L5161,1176L5159,1176L5150,1171L5150,1173L5139,1173L5133,1181L5133,1179L5131,1179L5126,1173L5120,1173L5120,1181L5118,1186L5120,1186L5122,1189L5124,1189L5126,1191L5126,1194L5128,1196L5131,1201L5128,1207L5135,1207L5135,1209L5137,1212L5141,1212L5144,1214L5144,1217L5146,1217L5146,1219L5148,1222L5152,1224L5152,1227L5154,1227L5157,1230L5161,1230L5161,1237L5170,1242L5172,1242L5172,1247L5167,1247L5167,1245L5165,1245L5163,1242L5160,1241L5159,1240L5157,1240L5154,1237L5148,1232L5144,1232L5144,1230L5139,1230L5139,1227L5135,1227L5131,1230L5126,1230L5124,1227L5124,1222L5120,1219L5118,1219L5115,1217L5113,1217L5111,1214L5109,1214L5102,1207L5102,1196L5100,1196L5098,1194L5096,1194L5096,1189L5094,1189L5094,1184L5096,1184L5096,1181L5094,1176L5089,1176L5089,1173L5087,1171L5083,1171L5083,1168L5079,1168L5079,1171L5076,1173L5076,1176L5074,1176L5074,1181L5072,1181L5070,1184L5070,1186L5068,1186L5061,1179L5059,1173L5059,1171L5057,1166L5057,1163L5059,1163L5059,1166L5070,1166L5070,1163L5083,1163L5083,1161L5085,1161L5085,1158L5087,1158L5087,1161L5092,1166L5094,1166L5094,1163L5100,1163L5102,1166L5105,1166L5107,1163L5107,1156L5107,1156L5107,1156z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4598,2484L4593,2484L4593,2482L4593,2481L4593,2479L4593,2477L4591,2477L4591,2479L4589,2484L4585,2484L4583,2482L4576,2482L4573,2480L4573,2478L4571,2477L4566,2480L4552,2479L4550,2482L4548,2482L4548,2484L4544,2484L4542,2482L4539,2482L4538,2482L4533,2482L4531,2482L4531,2484L4529,2484L4520,2487L4516,2487L4513,2489L4511,2489L4509,2492L4507,2492L4503,2494L4498,2494L4498,2497L4492,2497L4490,2500L4485,2502L4483,2505L4479,2505L4474,2510L4472,2510L4472,2494L4470,2494L4470,2492L4472,2487L4472,2484L4477,2477L4474,2474L4474,2471L4477,2469L4477,2466L4474,2464L4474,2459L4472,2461L4472,2459L4468,2456L4468,2459L4466,2456L4466,2454L4464,2449L4464,2446L4455,2446L4448,2443L4446,2441L4446,2441L4445,2439L4444,2436L4446,2436L4446,2433L4448,2433L4448,2431L4451,2431L4451,2415L4448,2415L4448,2405L4446,2405L4448,2403L4451,2403L4453,2405L4455,2403L4457,2398L4457,2395L4455,2395L4457,2392L4457,2390L4461,2390L4461,2387L4459,2385L4457,2385L4455,2382L4453,2382L4453,2375L4455,2372L4461,2372L4464,2375L4466,2375L4466,2377L4468,2377L4468,2369L4466,2367L4466,2364L4461,2364L4459,2362L4461,2359L4461,2357L4464,2354L4466,2354L4466,2352L4461,2352L4461,2347L4464,2347L4461,2344L4457,2344L4457,2341L4455,2341L4455,2331L4457,2331L4457,2329L4455,2329L4455,2324L4457,2324L4457,2321L4459,2321L4459,2318L4464,2318L4466,2316L4466,2311L4474,2311L4479,2316L4483,2316L4485,2318L4487,2318L4487,2313L4496,2313L4496,2303L4498,2303L4500,2306L4505,2306L4503,2306L4503,2301L4509,2301L4509,2316L4511,2318L4516,2318L4516,2316L4518,2313L4518,2311L4524,2311L4526,2308L4529,2311L4529,2313L4531,2313L4531,2316L4533,2316L4533,2313L4539,2313L4544,2321L4544,2326L4548,2329L4548,2334L4557,2334L4559,2336L4563,2336L4563,2334L4568,2329L4570,2331L4572,2329L4574,2329L4576,2326L4587,2326L4591,2329L4593,2329L4600,2336L4600,2339L4604,2344L4606,2344L4606,2341L4606,2352L4604,2354L4604,2357L4606,2357L4609,2359L4609,2364L4611,2367L4611,2369L4613,2382L4611,2385L4609,2385L4606,2390L4604,2392L4604,2395L4602,2398L4600,2403L4600,2408L4598,2413L4598,2420L4596,2420L4596,2423L4591,2428L4591,2441L4596,2451L4596,2456L4598,2459L4598,2464L4600,2466L4604,2466L4604,2482L4606,2482L4606,2484L4598,2484L4598,2484L4598,2484zM4596,2484L4593,2484L4596,2484L4596,2484L4596,2484z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5585,1502L5588,1500L5590,1500L5592,1502L5594,1502L5594,1500L5596,1500L5596,1495L5607,1495L5607,1497L5611,1497L5616,1495L5622,1495L5624,1492L5633,1487L5635,1487L5640,1485L5642,1485L5635,1490L5633,1492L5631,1492L5629,1495L5624,1497L5622,1497L5622,1502L5624,1505L5627,1505L5627,1507L5616,1507L5616,1513L5611,1513L5607,1515L5605,1515L5603,1518L5598,1518L5598,1520L5596,1520L5596,1518L5583,1518L5583,1515L5581,1515L5579,1513L5579,1510L5577,1505L5577,1502L5579,1502L5579,1505L5583,1505L5583,1502L5585,1502L5585,1502L5585,1502z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5105,985L5105,987L5107,987L5107,990L5115,990L5124,995L5135,995L5137,997L5137,1000L5135,1000L5131,1003L5133,1003L5135,1005L5139,1005L5141,1008L5141,1013L5148,1013L5148,1010L5154,1010L5152,1005L5150,1003L5157,1003L5159,1005L5161,1005L5163,1008L5172,1008L5172,1005L5174,1005L5174,1010L5170,1010L5176,1018L5178,1018L5180,1015L5185,1015L5189,1018L5198,1018L5198,1026L5202,1026L5204,1028L5204,1033L5196,1033L5191,1038L5189,1038L5187,1041L5187,1043L5185,1043L5185,1046L5183,1048L5178,1048L5174,1054L5157,1054L5154,1056L5154,1059L5152,1059L5152,1061L5150,1059L5148,1059L5146,1056L5137,1056L5137,1059L5135,1059L5128,1056L5124,1056L5122,1054L5113,1054L5113,1051L5109,1051L5109,1048L5098,1048L5098,1051L5096,1056L5092,1056L5089,1059L5089,1064L5087,1061L5081,1061L5079,1064L5074,1061L5072,1061L5072,1059L5070,1059L5068,1056L5064,1056L5064,1054L5061,1054L5061,1051L5057,1051L5053,1048L5051,1046L5046,1043L5042,1038L5035,1038L5033,1036L5031,1031L5029,1028L5029,1026L5027,1026L5027,1023L5029,1020L5029,1018L5027,1018L5027,1015L5022,1015L5020,1013L5020,1010L5018,1005L5020,1005L5022,1010L5025,1010L5025,1005L5029,1005L5029,1003L5042,1003L5044,1000L5048,1000L5048,997L5053,995L5053,997L5055,997L5059,992L5068,992L5068,990L5074,990L5079,987L5081,985L5076,985L5076,982L5085,982L5087,985L5087,990L5092,990L5094,987L5098,987L5098,985L5102,982L5105,985L5105,985L5105,985z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8150,1329L8154,1329L8154,1326L8156,1324L8161,1321L8165,1321L8167,1319L8169,1319L8172,1316L8178,1314L8180,1314L8185,1309L8189,1306L8189,1303L8193,1298L8195,1298L8198,1293L8198,1291L8195,1291L8198,1288L8202,1288L8204,1286L8206,1286L8211,1288L8211,1291L8213,1291L8213,1293L8215,1296L8228,1296L8232,1298L8232,1296L8237,1296L8237,1298L8241,1298L8241,1296L8243,1296L8243,1293L8245,1291L8243,1291L8243,1288L8241,1288L8239,1286L8239,1281L8237,1278L8243,1275L8245,1275L8247,1278L8263,1278L8263,1275L8265,1275L8267,1273L8269,1273L8269,1270L8271,1265L8273,1263L8276,1263L8278,1265L8282,1263L8284,1263L8284,1255L8286,1250L8286,1247L8289,1245L8291,1245L8293,1247L8299,1247L8299,1250L8297,1252L8297,1255L8299,1255L8302,1258L8306,1260L8308,1263L8308,1265L8310,1265L8310,1268L8308,1270L8308,1268L8304,1268L8297,1273L8295,1275L8291,1278L8291,1281L8289,1286L8284,1286L8284,1288L8282,1291L8282,1296L8284,1296L8284,1298L8286,1298L8286,1301L8284,1301L8284,1316L8280,1316L8269,1321L8269,1326L8267,1326L8267,1329L8260,1329L8260,1332L8258,1332L8254,1334L8252,1337L8245,1342L8237,1342L8232,1347L8228,1349L8224,1349L8224,1352L8221,1352L8221,1354L8224,1360L8224,1362L8219,1362L8219,1370L8221,1370L8224,1372L8230,1372L8230,1375L8232,1377L8237,1380L8239,1380L8239,1383L8241,1385L8245,1385L8245,1393L8243,1393L8243,1395L8241,1398L8213,1398L8211,1400L8208,1400L8208,1403L8206,1403L8206,1405L8204,1408L8202,1408L8202,1411L8200,1411L8200,1413L8198,1416L8193,1416L8193,1413L8187,1413L8185,1416L8185,1418L8182,1418L8182,1413L8180,1411L8178,1413L8176,1411L8176,1408L8169,1408L8169,1411L8174,1411L8172,1416L8167,1416L8163,1418L8163,1416L8165,1416L8167,1413L8165,1411L8163,1413L8161,1413L8161,1411L8159,1411L8159,1413L8152,1413L8152,1411L8156,1408L8159,1408L8161,1405L8143,1405L8143,1403L8148,1403L8150,1400L8150,1398L8152,1393L8152,1390L8154,1390L8156,1388L8163,1388L8163,1385L8159,1385L8156,1383L8156,1380L8159,1377L8159,1375L8161,1375L8161,1370L8163,1370L8163,1367L8165,1367L8165,1365L8163,1365L8163,1360L8165,1357L8163,1357L8161,1360L8156,1357L8154,1357L8152,1354L8148,1352L8146,1349L8146,1354L8143,1357L8141,1357L8143,1354L8141,1349L8137,1349L8135,1347L8135,1339L8137,1339L8141,1337L8141,1334L8146,1334L8150,1329L8150,1329L8150,1329z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5508,2650L5508,2645L5510,2645L5510,2640L5514,2635L5514,2632L5512,2632L5512,2627L5514,2624L5514,2622L5518,2622L5521,2619L5521,2614L5523,2614L5525,2612L5527,2612L5528,2611L5527,2602L5549,2579L5549,2579L5544,2576L5542,2573L5540,2573L5540,2576L5538,2576L5536,2571L5536,2563L5538,2561L5538,2553L5536,2553L5536,2548L5538,2545L5538,2543L5540,2540L5540,2535L5538,2535L5536,2533L5531,2533L5531,2530L5529,2525L5527,2525L5525,2522L5521,2522L5518,2520L5518,2517L5516,2517L5516,2515L5514,2512L5514,2510L5510,2510L5510,2502L5505,2500L5503,2500L5501,2497L5499,2500L5499,2502L5497,2507L5495,2507L5492,2510L5488,2505L5482,2505L5482,2502L5479,2502L5477,2505L5477,2507L5473,2507L5473,2510L5464,2510L5458,2502L5453,2502L5453,2494L5445,2489L5445,2484L5440,2484L5436,2482L5432,2482L5430,2484L5427,2484L5427,2487L5425,2487L5425,2484L5423,2484L5421,2487L5417,2487L5417,2484L5414,2484L5408,2479L5406,2479L5406,2482L5399,2482L5399,2479L5395,2479L5391,2474L5391,2477L5386,2477L5384,2479L5384,2482L5386,2482L5386,2484L5384,2484L5384,2487L5380,2487L5378,2489L5369,2489L5369,2492L5365,2489L5365,2487L5362,2484L5358,2484L5358,2487L5345,2494L5343,2494L5332,2500L5332,2502L5330,2502L5330,2500L5326,2497L5321,2497L5319,2494L5317,2494L5313,2500L5313,2502L5310,2505L5308,2505L5308,2512L5306,2512L5306,2515L5304,2515L5304,2517L5300,2517L5300,2515L5295,2515L5295,2512L5287,2512L5284,2510L5282,2510L5280,2512L5269,2512L5269,2510L5267,2510L5267,2507L5261,2507L5261,2505L5256,2507L5252,2507L5250,2505L5250,2500L5245,2494L5237,2489L5235,2489L5235,2487L5232,2487L5232,2484L5226,2484L5224,2482L5222,2484L5219,2484L5215,2487L5215,2489L5211,2489L5211,2492L5209,2494L5209,2497L5204,2502L5204,2505L5202,2505L5202,2507L5200,2507L5200,2510L5196,2510L5196,2512L5198,2512L5198,2515L5200,2520L5200,2522L5198,2525L5198,2538L5200,2543L5200,2545L5198,2548L5198,2551L5196,2551L5193,2556L5193,2561L5191,2563L5191,2566L5189,2566L5189,2568L5187,2568L5187,2573L5183,2579L5183,2602L5180,2612L5180,2614L5178,2614L5178,2632L5180,2635L5180,2640L5178,2640L5178,2642L5176,2645L5176,2647L5174,2650L5174,2670L5172,2670L5170,2673L5170,2675L5161,2686L5157,2686L5152,2688L5152,2691L5150,2691L5150,2693L5148,2693L5148,2696L5146,2698L5146,2701L5144,2704L5144,2706L5141,2709L5141,2711L5139,2711L5139,2714L5137,2716L5135,2716L5135,2719L5133,2719L5133,2721L5131,2721L5131,2762L5128,2767L5128,2770L5126,2770L5124,2775L5124,2777L5120,2783L5113,2783L5113,2785L5111,2785L5111,2790L5109,2793L5109,2790L5107,2790L5107,2793L5102,2793L5102,2795L5094,2806L5094,2808L5089,2811L5081,2811L5081,2798L5083,2798L5083,2795L5081,2790L5079,2793L5070,2795L5070,2798L5068,2798L5066,2795L5064,2795L5064,2800L5061,2806L5059,2808L5057,2808L5053,2811L5048,2806L5048,2803L5046,2803L5046,2800L5044,2800L5044,2803L5038,2806L5035,2811L5033,2811L5033,2813L5029,2818L5029,2839L5020,2839L5020,2841L5027,2849L5037,2849L5037,2846L5040,2844L5053,2844L5055,2841L5057,2844L5064,2844L5068,2841L5070,2841L5072,2844L5141,2844L5141,2849L5144,2851L5146,2851L5146,2859L5144,2859L5144,2862L5146,2862L5148,2869L5148,2874L5150,2874L5150,2877L5152,2877L5152,2890L5154,2892L5157,2892L5157,2895L5159,2897L5161,2902L5161,2905L5163,2908L5165,2908L5167,2913L5167,2915L5185,2915L5185,2913L5196,2913L5196,2910L5202,2910L5202,2913L5219,2913L5219,2900L5222,2900L5222,2897L5224,2895L5224,2892L5222,2890L5224,2887L5224,2879L5245,2879L5245,2877L5254,2877L5254,2879L5252,2882L5252,2890L5287,2890L5289,2892L5289,2900L5287,2900L5287,2908L5284,2910L5284,2913L5287,2913L5287,2918L5289,2920L5289,2925L5291,2925L5291,2933L5289,2936L5289,2943L5287,2948L5289,2951L5287,2956L5287,2959L5289,2966L5293,2974L5295,2974L5297,2976L5297,2984L5300,2984L5300,2987L5302,2989L5302,2992L5300,2992L5300,2997L5302,2999L5302,3002L5300,3004L5297,3004L5297,3012L5300,3012L5300,3020L5306,3015L5306,3012L5310,3012L5310,3015L5315,3015L5315,3012L5317,3012L5319,3015L5326,3015L5326,3012L5328,3012L5330,3010L5336,3010L5339,3012L5345,3012L5347,3010L5347,3007L5352,3007L5352,3010L5354,3012L5356,3012L5360,3017L5360,3020L5358,3020L5358,3025L5360,3025L5360,3027L5362,3025L5365,3025L5367,3022L5369,3022L5375,3020L5382,3020L5382,3017L5384,3017L5384,3030L5388,3035L5395,3035L5404,3040L5417,3040L5421,3043L5427,3043L5430,3040L5432,3040L5432,3030L5438,3030L5438,3038L5440,3040L5443,3040L5445,3043L5445,3048L5447,3048L5447,3050L5449,3050L5449,3053L5458,3053L5460,3055L5464,3058L5469,3058L5471,3061L5473,3066L5473,3068L5474,3070L5475,3071L5477,3071L5479,3073L5482,3078L5486,3083L5486,3089L5490,3089L5492,3091L5495,3089L5499,3086L5501,3086L5501,3083L5505,3083L5505,3086L5503,3089L5505,3091L5510,3091L5510,3048L5508,3048L5503,3050L5501,3050L5499,3053L5499,3055L5501,3055L5501,3058L5497,3058L5495,3055L5488,3055L5486,3053L5486,3050L5484,3050L5482,3048L5479,3043L5477,3043L5473,3040L5471,3038L5471,3030L5469,3030L5469,3025L5471,3022L5471,3020L5473,3020L5473,3010L5475,3007L5475,3002L5477,3002L5477,2994L5475,2987L5477,2984L5475,2979L5477,2976L5477,2969L5473,2961L5469,2962L5467,2946L5473,2943L5481,2933L5485,2932L5484,2931L5484,2928L5492,2928L5497,2925L5503,2925L5512,2923L5521,2923L5527,2920L5530,2920L5530,2917L5524,2913L5520,2890L5513,2883L5506,2882L5492,2851L5492,2845L5498,2838L5490,2815L5491,2800L5494,2797L5493,2791L5489,2788L5490,2771L5493,2765L5492,2765L5492,2749L5490,2749L5486,2744L5486,2742L5488,2742L5488,2739L5484,2739L5482,2734L5484,2729L5486,2726L5490,2726L5490,2721L5492,2721L5492,2719L5490,2719L5490,2711L5495,2706L5495,2704L5497,2701L5499,2701L5503,2696L5503,2673L5505,2670L5505,2653L5508,2653L5508,2650L5508,2650L5508,2650z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5869,2245L5869,2242L5871,2242L5874,2239L5878,2237L5880,2237L5880,2239L5882,2239L5884,2242L5884,2245L5887,2250L5887,2260L5880,2260L5880,2262L5878,2265L5876,2265L5871,2267L5869,2267L5867,2270L5865,2275L5871,2273L5880,2273L5882,2275L5882,2278L5880,2278L5880,2280L5878,2283L5878,2285L5876,2290L5874,2290L5874,2293L5869,2293L5869,2288L5865,2288L5861,2290L5852,2290L5850,2293L5843,2293L5841,2290L5843,2288L5843,2283L5841,2280L5841,2270L5843,2267L5845,2267L5845,2265L5850,2260L5854,2250L5856,2250L5856,2247L5861,2242L5863,2242L5865,2245L5865,2247L5869,2247L5869,2245L5869,2245L5869,2245z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2722,2053L2722,2051L2720,2051L2720,2048L2718,2048L2718,2051L2716,2051L2714,2053L2707,2053L2707,2061L2705,2066L2703,2066L2703,2069L2698,2076L2692,2069L2692,2063L2690,2063L2690,2061L2688,2061L2690,2061L2690,2058L2688,2058L2688,2056L2690,2053L2690,2051L2688,2051L2685,2048L2685,2046L2683,2046L2681,2043L2688,2043L2688,2040L2690,2040L2690,2033L2688,2030L2690,2030L2692,2025L2692,2023L2690,2023L2690,2007L2688,2007L2690,2007L2690,2005L2688,2005L2692,2000L2696,2000L2698,2002L2707,2002L2707,2000L2714,2000L2718,2005L2726,2005L2726,2007L2729,2007L2729,2010L2735,2010L2735,2007L2739,2007L2739,2012L2742,2015L2742,2018L2744,2020L2757,2020L2757,2018L2759,2018L2761,2020L2759,2023L2759,2025L2755,2023L2748,2023L2748,2028L2755,2028L2759,2030L2765,2030L2765,2028L2768,2028L2768,2030L2772,2030L2772,2033L2774,2033L2781,2040L2783,2040L2783,2043L2781,2051L2776,2051L2774,2053L2774,2056L2772,2056L2772,2053L2770,2051L2763,2051L2761,2048L2752,2048L2750,2051L2750,2048L2737,2048L2735,2051L2735,2053L2733,2056L2722,2056L2722,2053L2722,2053L2722,2053z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2454,2749L2450,2749L2451,2744L2455,2741L2458,2739L2460,2739L2461,2740L2460,2742L2456,2747L2456,2749L2454,2749L2454,2749L2454,2749zM2194,2683L2192,2681L2194,2681L2194,2678L2196,2678L2196,2675L2198,2675L2200,2673L2202,2673L2202,2675L2198,2681L2198,2683L2194,2683L2194,2683L2194,2683zM2172,2678L2168,2673L2166,2673L2168,2670L2168,2668L2176,2668L2176,2673L2172,2678L2172,2678L2172,2678zM2140,2668L2137,2665L2135,2665L2135,2663L2137,2660L2144,2660L2144,2665L2142,2665L2140,2668L2140,2668L2140,2668zM2166,2663L2159,2663L2157,2660L2159,2658L2159,2655L2161,2658L2166,2658L2166,2663L2166,2663L2166,2663zM2148,2686L2146,2686L2146,2683L2144,2686L2142,2686L2142,2683L2140,2681L2140,2678L2142,2678L2146,2673L2150,2673L2153,2670L2150,2670L2142,2658L2144,2658L2144,2655L2142,2653L2137,2653L2137,2650L2140,2650L2144,2647L2146,2647L2146,2650L2148,2653L2148,2658L2153,2663L2155,2663L2155,2670L2157,2673L2159,2673L2159,2675L2157,2681L2157,2683L2150,2686L2148,2686L2148,2686L2148,2686zM2586,2658L2586,2665L2590,2665L2590,2668L2592,2670L2592,2673L2590,2673L2590,2678L2592,2683L2588,2683L2588,2681L2586,2686L2586,2691L2584,2701L2581,2701L2581,2704L2571,2716L2568,2721L2545,2739L2542,2739L2521,2747L2521,2749L2516,2749L2514,2755L2514,2757L2512,2757L2512,2760L2510,2760L2510,2765L2508,2767L2508,2762L2506,2762L2506,2770L2503,2772L2503,2775L2501,2777L2501,2780L2499,2780L2499,2785L2497,2790L2497,2800L2495,2800L2495,2803L2490,2803L2490,2808L2486,2813L2486,2816L2484,2813L2480,2813L2475,2808L2473,2803L2473,2798L2471,2798L2471,2795L2469,2795L2469,2798L2464,2798L2460,2795L2456,2790L2456,2793L2454,2793L2451,2795L2451,2798L2447,2798L2447,2793L2449,2790L2449,2788L2447,2790L2447,2785L2445,2783L2451,2783L2456,2777L2454,2777L2454,2765L2451,2762L2449,2762L2451,2762L2451,2760L2456,2760L2458,2757L2460,2757L2460,2755L2462,2752L2462,2749L2464,2747L2464,2742L2462,2737L2458,2737L2458,2734L2456,2734L2456,2737L2454,2737L2451,2739L2443,2734L2443,2732L2441,2729L2436,2729L2432,2724L2434,2724L2436,2721L2438,2721L2438,2709L2436,2706L2436,2698L2438,2698L2438,2693L2434,2688L2434,2686L2436,2681L2443,2681L2445,2678L2445,2673L2447,2670L2447,2668L2445,2665L2445,2663L2451,2655L2454,2655L2456,2653L2456,2650L2458,2650L2458,2640L2460,2640L2460,2637L2458,2637L2458,2635L2460,2632L2458,2632L2458,2630L2456,2630L2456,2627L2458,2624L2460,2624L2462,2622L2464,2622L2467,2619L2473,2619L2473,2617L2482,2617L2482,2614L2484,2614L2486,2612L2488,2612L2490,2607L2493,2604L2499,2612L2503,2612L2503,2614L2506,2617L2508,2617L2512,2622L2516,2622L2519,2624L2525,2624L2525,2627L2527,2630L2529,2630L2532,2632L2529,2632L2529,2635L2532,2637L2532,2640L2540,2640L2542,2642L2553,2642L2555,2645L2558,2642L2560,2642L2560,2637L2564,2637L2566,2640L2571,2640L2571,2642L2577,2650L2584,2650L2584,2653L2588,2653L2588,2655L2590,2655L2588,2655L2586,2658L2586,2658L2586,2658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5585,1635L5588,1635L5590,1638L5592,1635L5598,1632L5601,1632L5603,1635L5601,1635L5607,1635L5609,1632L5611,1632L5611,1635L5616,1635L5616,1632L5624,1632L5624,1630L5629,1630L5631,1627L5633,1627L5633,1632L5642,1655L5640,1655L5640,1658L5642,1658L5646,1668L5646,1671L5648,1678L5650,1681L5650,1689L5648,1689L5646,1691L5646,1694L5644,1699L5644,1701L5642,1709L5642,1714L5640,1717L5637,1722L5637,1737L5635,1740L5633,1740L5633,1745L5631,1742L5629,1742L5620,1737L5618,1734L5618,1732L5614,1727L5611,1727L5611,1724L5609,1724L5607,1719L5605,1719L5605,1717L5603,1717L5603,1704L5596,1696L5594,1696L5590,1689L5590,1678L5588,1677L5588,1669L5579,1650L5580,1634L5578,1630L5583,1631L5585,1635L5585,1635L5585,1635zM5531,1622L5539,1623L5544,1622L5551,1618L5557,1621L5565,1622L5571,1633L5574,1634L5574,1650L5582,1667L5583,1676L5579,1681L5579,1686L5583,1686L5588,1696L5588,1704L5590,1706L5590,1709L5592,1709L5592,1712L5594,1712L5594,1714L5596,1717L5596,1719L5598,1719L5598,1722L5601,1724L5601,1727L5603,1729L5605,1729L5607,1734L5609,1734L5614,1740L5614,1742L5611,1742L5611,1747L5616,1752L5616,1757L5618,1757L5618,1760L5620,1760L5620,1765L5624,1770L5624,1780L5627,1780L5627,1785L5631,1791L5631,1796L5635,1801L5637,1806L5640,1808L5640,1811L5642,1811L5642,1814L5644,1816L5644,1819L5646,1824L5648,1826L5648,1829L5650,1831L5650,1834L5653,1836L5655,1842L5655,1844L5657,1849L5659,1852L5659,1854L5661,1854L5666,1859L5666,1862L5670,1865L5672,1867L5674,1867L5676,1870L5670,1870L5668,1867L5666,1870L5666,1872L5668,1875L5668,1890L5670,1890L5670,1895L5672,1895L5672,1900L5674,1903L5676,1908L5679,1908L5681,1910L5687,1910L5689,1913L5692,1918L5696,1923L5702,1926L5702,1928L5705,1928L5705,1931L5555,1931L5557,1926L5555,1926L5555,1923L5553,1923L5553,1926L5551,1928L5551,1931L5375,1931L5375,1694L5373,1689L5373,1686L5371,1686L5373,1683L5371,1676L5371,1671L5369,1668L5369,1666L5367,1666L5367,1663L5369,1663L5369,1661L5371,1658L5371,1655L5373,1655L5373,1653L5375,1650L5375,1643L5371,1632L5371,1625L5373,1625L5378,1620L5378,1617L5380,1617L5380,1620L5382,1620L5384,1622L5386,1622L5388,1620L5395,1620L5397,1617L5406,1617L5408,1620L5414,1620L5417,1622L5427,1622L5434,1625L5440,1625L5440,1627L5443,1630L5445,1630L5447,1632L5449,1632L5453,1630L5456,1630L5456,1635L5471,1635L5475,1638L5479,1638L5484,1643L5497,1643L5501,1640L5505,1635L5508,1635L5510,1632L5514,1630L5516,1627L5518,1630L5523,1630L5523,1627L5525,1622L5531,1622L5531,1622L5531,1622z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2215,2219L2211,2214L2207,2214L2205,2211L2200,2211L2198,2209L2187,2209L2187,2206L2185,2206L2185,2204L2183,2204L2179,2201L2179,2199L2185,2191L2189,2191L2189,2188L2192,2188L2192,2186L2196,2186L2194,2183L2194,2181L2198,2181L2200,2178L2200,2181L2205,2181L2207,2183L2209,2183L2211,2186L2213,2186L2213,2191L2215,2191L2215,2188L2218,2188L2218,2193L2224,2193L2224,2199L2228,2199L2228,2196L2231,2196L2233,2193L2235,2193L2237,2196L2237,2199L2239,2196L2243,2196L2243,2199L2246,2199L2246,2201L2243,2206L2243,2209L2246,2209L2246,2211L2243,2211L2243,2214L2241,2211L2241,2216L2242,2217L2241,2219L2239,2222L2231,2222L2226,2219L2215,2219L2215,2219L2215,2219z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4953,2576L4955,2576L4955,2579L4957,2579L4957,2581L4996,2581L4996,2619L4957,2619L4957,2622L4955,2619L4953,2619L4953,2617L4955,2617L4953,2614L4940,2614L4942,2612L4942,2609L4944,2607L4944,2604L4949,2599L4949,2596L4951,2594L4953,2589L4953,2576L4953,2576L4953,2576zM4923,2545L4916,2545L4916,2538L4921,2538L4921,2530L4923,2530L4925,2528L4929,2528L4929,2533L4927,2535L4927,2538L4925,2540L4925,2543L4923,2545L4923,2545L4923,2545z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5869,2245L5869,2247L5865,2247L5865,2245L5863,2242L5861,2242L5858,2245L5858,2242L5856,2242L5856,2239L5854,2237L5854,2234L5852,2234L5852,2232L5848,2232L5845,2229L5845,2227L5843,2224L5843,2222L5837,2214L5835,2214L5832,2211L5826,2206L5824,2204L5824,2199L5822,2199L5822,2196L5819,2196L5817,2193L5817,2191L5815,2188L5811,2188L5809,2186L5804,2186L5804,2183L5802,2183L5802,2181L5800,2181L5798,2178L5791,2178L5791,2181L5789,2181L5789,2178L5787,2178L5787,2176L5785,2176L5785,2178L5783,2178L5780,2176L5778,2176L5774,2178L5770,2178L5770,2173L5765,2173L5765,2176L5763,2176L5761,2178L5759,2178L5752,2181L5748,2181L5746,2176L5746,2173L5744,2171L5737,2171L5737,2168L5735,2168L5735,2165L5724,2191L5724,2188L5720,2186L5720,2181L5718,2181L5718,2178L5713,2178L5713,2181L5711,2181L5711,2183L5709,2186L5707,2183L5696,2183L5696,2186L5694,2155L5696,2153L5696,2150L5698,2148L5698,2145L5700,2140L5700,2137L5702,2135L5707,2122L5707,2120L5709,2120L5707,2114L5707,2104L5709,2104L5709,2094L5720,2094L5724,2089L5724,2086L5722,2084L5728,2084L5733,2081L5735,2081L5735,2079L5737,2079L5737,2076L5739,2076L5739,2079L5744,2079L5746,2074L5750,2069L5750,2066L5752,2063L5754,2063L5754,2069L5759,2074L5761,2081L5763,2084L5765,2089L5765,2094L5767,2099L5767,2102L5770,2107L5770,2122L5772,2125L5772,2132L5774,2132L5776,2135L5776,2142L5778,2145L5778,2142L5780,2142L5780,2145L5783,2150L5785,2153L5785,2155L5783,2155L5783,2158L5787,2158L5789,2155L5787,2153L5785,2148L5787,2145L5789,2145L5793,2150L5793,2155L5796,2160L5798,2163L5802,2163L5804,2160L5809,2163L5811,2163L5813,2165L5813,2168L5815,2171L5817,2171L5824,2173L5830,2181L5832,2186L5835,2186L5837,2191L5839,2193L5839,2196L5843,2199L5848,2199L5850,2201L5850,2204L5854,2209L5854,2206L5856,2206L5856,2214L5858,2214L5858,2219L5861,2219L5863,2222L5867,2224L5867,2227L5869,2229L5869,2232L5876,2232L5876,2229L5878,2232L5878,2237L5874,2239L5871,2242L5869,2242L5869,2245L5869,2245L5869,2245z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5453,719L5453,717L5458,712L5464,712L5464,709L5462,707L5458,707L5458,709L5456,709L5447,707L5425,707L5423,704L5414,704L5410,702L5397,702L5395,699L5395,704L5393,704L5393,702L5388,699L5388,704L5386,707L5384,707L5384,704L5369,704L5367,707L5356,707L5356,709L5354,712L5352,712L5352,709L5349,709L5349,712L5345,714L5345,712L5341,712L5341,714L5332,714L5332,717L5334,719L5332,719L5332,722L5339,722L5336,725L5332,725L5334,727L5342,731L5336,731L5334,732L5334,737L5336,737L5341,742L5343,742L5345,745L5349,745L5349,748L5352,748L5354,745L5356,745L5356,742L5362,742L5362,745L5360,745L5360,753L5358,755L5358,758L5360,758L5362,755L5369,755L5375,753L5388,753L5388,755L5397,760L5404,760L5410,768L5412,768L5417,770L5421,770L5423,768L5434,768L5440,770L5440,768L5447,760L5453,760L5453,758L5450,754L5446,752L5443,748L5445,742L5435,740L5436,736L5434,732L5431,729L5430,725L5435,722L5442,721L5446,719L5450,722L5450,723L5451,722L5453,719L5453,719L5453,719zM5326,731L5324,733L5325,735L5324,737L5319,735L5302,735L5297,737L5295,740L5293,737L5289,737L5288,739L5289,740L5291,740L5293,742L5291,742L5291,744L5289,745L5293,748L5293,750L5297,750L5297,753L5295,753L5291,755L5293,758L5295,758L5300,753L5300,748L5313,748L5321,742L5323,740L5328,740L5328,737L5325,737L5327,736L5329,737L5331,736L5329,733L5326,731L5326,731L5326,731zM5304,726L5295,724L5304,723L5306,722L5308,719L5310,719L5313,722L5319,722L5321,727L5317,727L5317,730L5315,730L5315,727L5313,727L5313,730L5310,730L5310,732L5306,732L5306,730L5304,726L5304,726L5304,726z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5655,2273L5655,2275L5653,2280L5653,2288L5650,2293L5653,2295L5650,2301L5646,2301L5646,2298L5644,2298L5642,2295L5637,2298L5635,2303L5633,2306L5635,2313L5635,2321L5631,2324L5631,2326L5629,2331L5629,2372L5627,2372L5624,2375L5622,2375L5620,2377L5616,2377L5616,2375L5605,2375L5603,2377L5603,2385L5598,2390L5598,2398L5611,2398L5616,2400L5618,2400L5627,2410L5627,2415L5629,2415L5631,2418L5631,2423L5635,2423L5637,2426L5640,2426L5640,2431L5644,2431L5644,2433L5646,2436L5648,2443L5648,2446L5650,2449L5650,2451L5653,2451L5653,2459L5655,2461L5657,2466L5661,2471L5661,2477L5663,2477L5666,2474L5668,2474L5674,2477L5676,2477L5676,2479L5674,2479L5676,2482L5676,2484L5674,2484L5674,2494L5679,2500L5679,2501L5682,2497L5686,2500L5686,2507L5689,2507L5694,2507L5698,2505L5700,2507L5709,2507L5713,2512L5737,2530L5737,2533L5754,2533L5757,2535L5767,2535L5770,2538L5778,2538L5778,2540L5780,2540L5780,2538L5787,2530L5789,2525L5791,2522L5802,2517L5804,2517L5811,2512L5817,2512L5819,2517L5822,2517L5822,2520L5824,2520L5824,2522L5835,2522L5837,2520L5841,2520L5841,2522L5845,2522L5845,2517L5848,2517L5850,2515L5858,2515L5861,2512L5869,2512L5871,2510L5874,2510L5874,2505L5876,2505L5876,2502L5878,2502L5878,2500L5880,2500L5880,2497L5884,2497L5884,2494L5889,2494L5891,2492L5900,2492L5900,2489L5930,2492L5930,2489L5932,2489L5958,2456L5958,2454L6001,2403L6006,2400L6014,2390L5986,2390L5904,2357L5893,2347L5891,2347L5889,2344L5887,2344L5887,2339L5884,2336L5882,2336L5882,2329L5880,2329L5878,2326L5876,2326L5876,2321L5874,2321L5874,2318L5871,2318L5871,2313L5869,2313L5869,2308L5867,2308L5867,2303L5869,2298L5874,2293L5869,2293L5869,2288L5865,2288L5861,2290L5852,2290L5850,2293L5843,2293L5841,2290L5843,2288L5843,2283L5841,2280L5841,2270L5843,2267L5845,2267L5845,2265L5850,2260L5854,2250L5856,2250L5856,2247L5858,2245L5858,2242L5856,2242L5856,2239L5854,2237L5854,2234L5852,2234L5852,2232L5848,2232L5845,2229L5845,2227L5843,2224L5843,2222L5837,2214L5835,2214L5832,2211L5826,2206L5824,2204L5824,2199L5822,2199L5822,2196L5819,2196L5817,2193L5817,2191L5815,2188L5811,2188L5809,2186L5804,2186L5804,2183L5802,2183L5802,2181L5800,2181L5798,2178L5791,2178L5791,2181L5789,2181L5789,2178L5787,2178L5787,2176L5785,2176L5785,2178L5783,2178L5780,2176L5778,2176L5774,2178L5770,2178L5770,2173L5765,2173L5765,2176L5763,2176L5761,2178L5759,2178L5752,2181L5748,2181L5746,2176L5746,2173L5744,2171L5737,2171L5737,2168L5735,2168L5735,2165L5724,2191L5724,2188L5720,2186L5720,2181L5718,2181L5718,2178L5713,2178L5713,2181L5711,2181L5711,2183L5709,2186L5707,2183L5696,2183L5696,2186L5694,2196L5694,2204L5692,2204L5692,2209L5687,2214L5685,2224L5685,2237L5683,2237L5683,2234L5681,2234L5672,2237L5672,2239L5663,2252L5663,2255L5661,2260L5661,2262L5657,2262L5657,2265L5655,2265L5655,2273L5655,2273L5655,2273z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2867,4438L2865,4438L2856,4440L2854,4438L2848,4435L2841,4435L2839,4433L2833,4430L2830,4427L2828,4427L2828,4425L2824,4425L2813,4420L2811,4417L2807,4415L2804,4415L2804,4412L2802,4410L2800,4410L2798,4407L2794,4405L2791,4402L2791,4397L2789,4397L2789,4394L2781,4394L2778,4392L2776,4392L2776,4417L2774,4427L2776,4427L2774,4435L2774,4443L2776,4445L2785,4445L2785,4443L2789,4443L2789,4445L2815,4445L2820,4448L2828,4448L2828,4450L2837,4450L2839,4448L2841,4450L2846,4450L2846,4448L2850,4448L2850,4445L2856,4445L2856,4448L2859,4448L2863,4445L2865,4448L2867,4448L2867,4445L2869,4443L2872,4438L2867,4438L2867,4438L2867,4438zM2904,4440L2893,4440L2889,4443L2882,4443L2882,4445L2885,4445L2885,4448L2887,4445L2893,4445L2893,4443L2895,4443L2895,4445L2898,4445L2900,4443L2908,4443L2908,4440L2904,4440L2904,4440L2904,4440zM3054,3540L3054,3545L3056,3545L3056,3543L3075,3543L3077,3545L3082,3545L3086,3548L3090,3548L3090,3550L3097,3550L3099,3548L3103,3548L3103,3550L3108,3550L3110,3548L3110,3550L3112,3550L3114,3553L3116,3553L3119,3550L3119,3548L3121,3545L3129,3545L3129,3548L3134,3548L3136,3545L3138,3545L3138,3537L3142,3535L3142,3532L3147,3532L3151,3530L3151,3527L3155,3527L3155,3522L3158,3522L3162,3514L3164,3512L3164,3486L3166,3486L3168,3489L3171,3489L3171,3486L3177,3486L3179,3484L3186,3489L3186,3499L3188,3504L3192,3509L3192,3512L3190,3512L3190,3522L3188,3525L3190,3527L3190,3532L3188,3535L3188,3537L3186,3540L3181,3540L3181,3543L3177,3543L3175,3548L3173,3548L3173,3550L3166,3550L3164,3553L3160,3553L3158,3555L3158,3558L3155,3558L3153,3560L3153,3563L3145,3563L3145,3565L3142,3565L3142,3571L3136,3571L3136,3573L3132,3573L3132,3576L3136,3576L3136,3581L3134,3581L3134,3578L3129,3578L3127,3583L3125,3586L3125,3588L3121,3591L3119,3591L3119,3594L3114,3601L3112,3604L3110,3604L3108,3606L3108,3611L3106,3611L3103,3614L3101,3619L3097,3622L3097,3624L3090,3624L3090,3632L3088,3632L3084,3637L3082,3637L3082,3642L3077,3647L3075,3647L3075,3650L3073,3650L3073,3652L3075,3652L3075,3668L3073,3673L3073,3675L3069,3680L3071,3683L3071,3685L3069,3690L3069,3693L3064,3693L3064,3696L3067,3696L3067,3701L3064,3703L3067,3703L3067,3706L3069,3706L3069,3708L3067,3708L3067,3711L3064,3713L3067,3716L3067,3734L3060,3734L3060,3741L3058,3744L3058,3757L3058,3757L3058,3764L3060,3764L3060,3769L3056,3775L3056,3777L3058,3780L3058,3782L3060,3782L3060,3785L3062,3785L3064,3787L3069,3787L3071,3790L3075,3790L3075,3792L3088,3800L3095,3808L3095,3813L3093,3813L3093,3815L3088,3821L3088,3828L3090,3831L3090,3833L3093,3833L3093,3836L3095,3836L3095,3838L3097,3838L3099,3841L3101,3841L3103,3838L3106,3838L3108,3841L3108,3859L3106,3859L3106,3861L3099,3869L3097,3874L3097,3877L3095,3877L3084,3889L3084,3897L3082,3897L3082,3900L3080,3900L3067,3907L3064,3907L3062,3910L3051,3912L3049,3912L3049,3915L3043,3917L3036,3917L3030,3920L3021,3920L3019,3923L3010,3923L3002,3925L2991,3925L2984,3928L2982,3928L2978,3925L2976,3925L2973,3928L2969,3928L2965,3925L2956,3925L2956,3923L2954,3920L2947,3920L2950,3923L2950,3935L2954,3935L2958,3936L2959,3940L2958,3943L2956,3948L2956,3953L2954,3956L2952,3953L2952,3956L2950,3961L2950,3966L2947,3966L2945,3968L2947,3974L2952,3979L2954,3979L2954,3981L2952,3984L2952,3986L2950,3986L2950,3989L2947,3989L2932,3996L2906,3996L2906,3994L2902,3994L2900,3991L2895,3991L2891,3989L2889,3989L2885,3986L2882,3986L2882,3984L2880,3981L2878,3981L2878,3984L2876,3984L2872,3986L2872,3999L2874,4007L2876,4007L2876,4019L2874,4022L2874,4025L2878,4030L2880,4030L2882,4032L2891,4032L2891,4035L2889,4035L2887,4037L2887,4038L2900,4038L2902,4037L2902,4032L2900,4032L2904,4030L2906,4027L2911,4027L2913,4030L2913,4032L2915,4032L2914,4049L2912,4049L2912,4052L2900,4053L2898,4050L2898,4045L2895,4042L2882,4042L2882,4044L2877,4044L2876,4047L2876,4050L2878,4050L2882,4053L2885,4053L2885,4055L2894,4056L2893,4058L2889,4060L2887,4060L2885,4063L2880,4063L2876,4068L2874,4068L2872,4073L2867,4078L2867,4086L2869,4086L2869,4093L2867,4093L2867,4096L2869,4098L2869,4101L2865,4106L2859,4111L2856,4114L2856,4119L2861,4119L2859,4124L2854,4124L2852,4121L2843,4121L2835,4127L2833,4129L2824,4129L2822,4132L2820,4132L2820,4134L2813,4142L2811,4142L2811,4149L2809,4149L2807,4152L2804,4152L2804,4157L2802,4157L2802,4162L2804,4162L2804,4165L2807,4170L2809,4172L2809,4175L2811,4175L2815,4178L2817,4180L2822,4183L2828,4190L2852,4190L2852,4193L2856,4198L2856,4203L2854,4206L2854,4208L2852,4213L2852,4216L2854,4218L2854,4221L2852,4221L2852,4218L2850,4218L2850,4223L2846,4223L2839,4231L2837,4231L2835,4234L2830,4234L2830,4236L2828,4236L2828,4239L2824,4239L2822,4241L2817,4241L2817,4244L2815,4246L2813,4246L2813,4249L2809,4249L2807,4251L2807,4254L2804,4254L2802,4257L2802,4269L2800,4274L2800,4282L2798,4282L2798,4285L2796,4285L2796,4287L2791,4287L2791,4290L2783,4290L2783,4292L2778,4292L2778,4295L2772,4295L2770,4297L2768,4297L2768,4300L2765,4300L2763,4302L2763,4305L2761,4305L2761,4315L2759,4318L2761,4318L2761,4323L2763,4331L2765,4333L2765,4341L2768,4341L2768,4343L2770,4346L2770,4348L2772,4348L2774,4354L2776,4354L2776,4356L2778,4356L2779,4358L2782,4361L2782,4362L2769,4362L2766,4361L2759,4356L2752,4356L2744,4354L2739,4354L2739,4351L2683,4351L2683,4346L2679,4343L2675,4343L2675,4341L2670,4336L2672,4336L2672,4328L2675,4328L2675,4325L2672,4325L2670,4323L2672,4320L2675,4320L2675,4313L2672,4313L2672,4305L2666,4305L2666,4308L2655,4308L2655,4310L2649,4310L2649,4305L2646,4302L2646,4297L2642,4292L2640,4292L2640,4285L2638,4285L2640,4282L2640,4280L2642,4280L2640,4274L2640,4272L2638,4272L2640,4269L2640,4267L2642,4264L2651,4264L2651,4262L2649,4262L2651,4257L2653,4257L2653,4254L2655,4254L2655,4251L2662,4251L2666,4249L2666,4236L2668,4234L2670,4234L2675,4231L2672,4226L2672,4223L2670,4221L2668,4221L2668,4218L2666,4218L2668,4213L2670,4211L2672,4211L2672,4203L2675,4203L2675,4200L2679,4200L2681,4198L2685,4195L2685,4193L2683,4190L2683,4183L2685,4183L2690,4178L2692,4178L2692,4172L2690,4172L2690,4162L2685,4162L2685,4160L2690,4160L2690,4157L2692,4155L2692,4152L2690,4152L2690,4149L2688,4149L2688,4142L2690,4142L2690,4139L2696,4139L2701,4132L2701,4129L2696,4124L2694,4124L2694,4121L2688,4121L2683,4119L2679,4119L2679,4114L2681,4114L2681,4116L2688,4116L2688,4114L2690,4114L2690,4116L2692,4116L2694,4114L2696,4114L2698,4116L2703,4116L2703,4111L2705,4109L2707,4109L2707,4106L2705,4106L2705,4104L2685,4104L2685,4101L2688,4101L2688,4093L2692,4088L2688,4083L2688,4081L2690,4081L2690,4076L2685,4073L2683,4073L2683,4070L2685,4068L2690,4068L2690,4063L2685,4063L2685,4060L2679,4060L2679,4042L2681,4037L2679,4035L2681,4030L2688,4030L2690,4027L2690,4025L2688,4025L2688,4019L2683,4014L2683,4012L2685,4012L2685,3989L2683,3986L2683,3981L2685,3981L2685,3976L2688,3974L2690,3974L2692,3971L2692,3968L2688,3968L2688,3963L2690,3963L2692,3961L2692,3956L2690,3953L2690,3945L2692,3945L2692,3948L2696,3948L2696,3940L2698,3938L2698,3923L2701,3923L2703,3920L2707,3920L2707,3917L2714,3917L2714,3910L2711,3910L2711,3907L2709,3907L2709,3897L2707,3889L2705,3887L2705,3882L2707,3879L2707,3874L2705,3874L2705,3866L2707,3864L2705,3861L2705,3854L2707,3846L2709,3843L2718,3843L2718,3838L2720,3833L2726,3833L2726,3823L2729,3823L2726,3821L2726,3808L2722,3805L2722,3803L2724,3803L2726,3800L2726,3795L2733,3780L2735,3777L2735,3772L2742,3772L2742,3767L2739,3759L2739,3754L2742,3749L2742,3744L2744,3744L2744,3739L2737,3739L2735,3736L2735,3731L2737,3729L2737,3726L2735,3726L2733,3724L2733,3713L2731,3708L2729,3708L2729,3706L2726,3701L2729,3698L2731,3698L2731,3696L2729,3693L2724,3693L2720,3683L2722,3683L2722,3670L2724,3668L2726,3668L2729,3665L2729,3655L2731,3652L2731,3650L2735,3645L2739,3645L2739,3642L2742,3639L2742,3634L2739,3632L2739,3622L2737,3622L2737,3606L2739,3604L2744,3604L2744,3588L2746,3586L2746,3581L2748,3578L2750,3578L2755,3573L2755,3571L2757,3568L2757,3565L2761,3565L2761,3558L2763,3555L2763,3553L2768,3545L2768,3540L2770,3540L2770,3537L2774,3537L2774,3540L2781,3537L2785,3532L2785,3530L2778,3522L2778,3520L2776,3520L2776,3512L2778,3512L2778,3509L2781,3507L2781,3499L2778,3494L2778,3492L2776,3489L2776,3479L2778,3479L2778,3474L2783,3474L2783,3471L2778,3466L2778,3463L2776,3463L2776,3461L2778,3461L2778,3458L2783,3453L2785,3453L2785,3448L2787,3448L2802,3441L2804,3441L2811,3438L2815,3420L2815,3415L2817,3415L2817,3412L2820,3407L2820,3402L2815,3397L2820,3392L2820,3387L2822,3387L2824,3384L2826,3384L2826,3382L2828,3379L2828,3377L2835,3377L2837,3374L2839,3374L2841,3372L2841,3364L2846,3364L2854,3374L2878,3374L2885,3377L2887,3377L2889,3379L2889,3384L2891,3387L2891,3392L2893,3392L2893,3400L2895,3400L2895,3392L2898,3390L2898,3387L2900,3387L2900,3384L2904,3374L2906,3372L2937,3372L2937,3374L2941,3379L2943,3379L2947,3384L2950,3384L2950,3387L2952,3387L2952,3390L2956,3395L2956,3397L2958,3400L2958,3402L2960,3402L2960,3405L2963,3405L2963,3407L2967,3410L2967,3412L2971,3412L2976,3418L2978,3418L2982,3423L2984,3423L2986,3428L2986,3430L2991,3430L2993,3433L2999,3433L2999,3435L3002,3435L3006,3438L3012,3438L3012,3435L3015,3435L3015,3438L3028,3446L3034,3453L3041,3456L3043,3458L3045,3458L3047,3461L3049,3461L3051,3463L3058,3463L3060,3469L3069,3469L3073,3471L3075,3471L3077,3474L3077,3476L3080,3479L3080,3481L3082,3481L3082,3484L3084,3484L3077,3492L3077,3494L3075,3494L3075,3499L3073,3499L3073,3502L3075,3502L3071,3504L3069,3504L3067,3509L3067,3512L3064,3514L3064,3520L3067,3520L3067,3522L3064,3522L3062,3530L3060,3530L3060,3532L3058,3532L3058,3535L3056,3537L3054,3537L3054,3540L3054,3540L3054,3540zM2783,4384L2785,4384L2785,4382L2783,4382L2776,4374L2776,4389L2778,4389L2783,4384L2783,4384L2783,4384z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5583,3349L5581,3349L5551,3384L5549,3382L5542,3382L5540,3379L5536,3379L5533,3382L5523,3382L5512,3377L5510,3377L5508,3374L5505,3374L5499,3377L5497,3377L5495,3374L5495,3372L5492,3374L5490,3374L5490,3372L5488,3372L5488,3364L5484,3364L5484,3361L5477,3359L5469,3359L5469,3356L5460,3356L5458,3351L5456,3349L5456,3346L5453,3346L5453,3344L5451,3344L5451,3341L5449,3341L5451,3336L5451,3321L5438,3321L5438,3318L5440,3316L5438,3313L5438,3308L5436,3308L5434,3305L5430,3305L5423,3303L5423,3300L5419,3300L5419,3298L5414,3295L5412,3293L5410,3293L5410,3290L5408,3290L5406,3285L5406,3282L5404,3280L5404,3277L5401,3277L5401,3275L5404,3272L5404,3270L5401,3270L5399,3267L5397,3262L5395,3259L5395,3257L5391,3252L5388,3252L5388,3247L5384,3242L5384,3239L5382,3237L5382,3234L5388,3234L5391,3237L5393,3234L5395,3234L5397,3237L5399,3237L5399,3239L5406,3239L5406,3237L5414,3237L5414,3239L5419,3239L5419,3242L5423,3242L5427,3239L5432,3239L5436,3237L5436,3234L5440,3226L5445,3221L5449,3219L5449,3214L5451,3211L5453,3206L5460,3203L5462,3201L5475,3193L5479,3193L5482,3191L5482,3180L5484,3175L5484,3173L5486,3173L5488,3170L5492,3168L5495,3168L5497,3165L5503,3163L5527,3163L5527,3175L5551,3175L5551,3178L5553,3180L5562,3180L5564,3183L5568,3186L5568,3188L5579,3188L5579,3191L5581,3191L5585,3193L5590,3193L5590,3198L5596,3198L5596,3203L5594,3203L5596,3208L5596,3216L5598,3216L5598,3219L5596,3224L5596,3226L5598,3226L5598,3234L5596,3234L5596,3244L5598,3247L5596,3247L5596,3249L5598,3249L5598,3252L5601,3252L5596,3257L5594,3257L5594,3259L5596,3262L5596,3265L5592,3265L5590,3267L5590,3272L5594,3272L5594,3282L5592,3285L5592,3288L5594,3288L5594,3293L5598,3298L5598,3303L5596,3305L5594,3310L5594,3316L5588,3323L5585,3323L5583,3326L5583,3339L5581,3341L5579,3341L5579,3344L5583,3349L5583,3349L5583,3349z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9640,3229L9642,3234L9642,3237L9644,3242L9642,3242L9640,3244L9640,3242L9636,3244L9631,3244L9631,3247L9629,3247L9629,3249L9621,3249L9614,3247L9612,3244L9605,3244L9605,3242L9603,3239L9603,3237L9605,3234L9608,3234L9610,3231L9608,3229L9614,3221L9621,3219L9621,3221L9623,3221L9627,3219L9629,3219L9629,3216L9631,3216L9631,3221L9634,3221L9640,3229L9640,3229L9640,3229zM9679,3180L9673,3188L9673,3191L9670,3191L9668,3193L9666,3198L9668,3198L9670,3197L9673,3196L9673,3193L9675,3193L9677,3191L9679,3191L9679,3193L9677,3193L9677,3196L9679,3198L9677,3201L9677,3198L9673,3198L9668,3200L9662,3201L9662,3198L9657,3198L9653,3201L9653,3203L9655,3203L9653,3206L9651,3203L9647,3203L9647,3208L9644,3208L9644,3206L9642,3203L9642,3201L9638,3201L9638,3198L9640,3198L9640,3196L9644,3196L9647,3193L9649,3193L9651,3191L9660,3188L9664,3188L9664,3186L9666,3183L9670,3183L9675,3180L9679,3180L9679,3180L9679,3180z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4923,1278L4925,1275L4923,1275L4918,1270L4923,1270L4923,1268L4921,1268L4921,1265L4918,1265L4923,1260L4934,1255L4940,1255L4940,1245L4944,1245L4944,1260L4944,1258L4947,1260L4947,1275L4944,1278L4942,1278L4942,1291L4940,1291L4938,1293L4938,1298L4936,1298L4934,1296L4929,1296L4929,1293L4925,1293L4925,1291L4927,1291L4927,1288L4929,1288L4925,1288L4923,1286L4925,1283L4925,1281L4921,1281L4921,1278L4923,1278L4923,1278L4923,1278zM4721,1263L4721,1258L4719,1255L4713,1255L4713,1252L4706,1252L4704,1250L4700,1250L4700,1255L4680,1255L4678,1252L4676,1252L4674,1250L4671,1250L4669,1252L4665,1252L4661,1250L4661,1247L4654,1247L4654,1245L4648,1245L4645,1242L4643,1245L4641,1245L4641,1240L4643,1240L4643,1237L4641,1237L4639,1235L4632,1235L4632,1232L4637,1232L4637,1230L4639,1230L4639,1227L4641,1224L4641,1219L4643,1212L4643,1209L4645,1207L4645,1196L4648,1194L4648,1191L4652,1193L4655,1191L4646,1185L4646,1181L4650,1177L4649,1173L4650,1164L4653,1165L4659,1170L4665,1178L4662,1170L4658,1164L4654,1160L4646,1158L4646,1152L4644,1150L4641,1146L4648,1147L4651,1152L4652,1151L4650,1145L4648,1143L4642,1141L4650,1140L4650,1135L4648,1138L4645,1138L4635,1133L4626,1122L4624,1122L4624,1120L4622,1120L4622,1117L4624,1117L4624,1115L4626,1112L4624,1112L4622,1110L4624,1105L4631,1102L4627,1100L4620,1102L4618,1105L4613,1105L4611,1105L4611,1102L4615,1102L4615,1099L4613,1099L4613,1097L4606,1097L4604,1099L4602,1099L4602,1097L4604,1097L4606,1094L4600,1094L4595,1097L4596,1099L4593,1099L4593,1094L4591,1094L4585,1089L4574,1089L4574,1087L4572,1087L4570,1084L4568,1087L4565,1087L4565,1089L4559,1089L4559,1087L4561,1087L4561,1084L4559,1084L4559,1082L4550,1082L4550,1079L4563,1079L4563,1077L4561,1077L4561,1074L4555,1074L4553,1073L4555,1072L4561,1072L4562,1070L4554,1070L4550,1071L4548,1071L4548,1064L4555,1064L4555,1061L4561,1059L4572,1059L4572,1061L4574,1061L4574,1059L4583,1059L4583,1054L4596,1054L4602,1059L4602,1061L4606,1064L4606,1066L4617,1059L4622,1061L4624,1061L4626,1064L4626,1059L4630,1059L4630,1061L4643,1061L4641,1059L4639,1059L4637,1056L4637,1051L4639,1048L4637,1048L4637,1041L4635,1038L4632,1038L4632,1036L4630,1036L4630,1028L4628,1028L4628,1026L4635,1026L4635,1028L4641,1028L4641,1026L4645,1026L4648,1028L4645,1031L4645,1033L4648,1033L4650,1036L4656,1036L4658,1038L4674,1038L4676,1041L4678,1038L4684,1038L4684,1036L4691,1036L4693,1033L4682,1033L4682,1031L4687,1026L4689,1026L4697,1020L4702,1020L4710,1018L4715,1018L4719,1015L4719,1013L4721,1013L4723,1010L4723,1005L4726,1005L4726,1003L4723,1003L4726,1000L4726,987L4730,985L4734,985L4743,982L4752,982L4752,980L4754,985L4754,990L4758,992L4765,992L4767,990L4769,990L4769,992L4771,992L4771,995L4773,997L4773,1000L4782,1000L4782,1003L4784,1003L4786,1005L4793,1005L4797,1008L4797,1018L4806,1018L4810,1015L4812,1015L4812,1013L4814,1013L4814,1010L4817,1010L4817,1015L4814,1015L4817,1023L4821,1023L4830,1028L4832,1028L4832,1031L4834,1031L4834,1033L4836,1031L4843,1031L4843,1033L4860,1033L4869,1043L4871,1043L4871,1041L4873,1041L4877,1043L4877,1046L4884,1046L4886,1043L4888,1043L4892,1046L4895,1048L4905,1048L4908,1051L4910,1051L4908,1054L4905,1054L4905,1056L4899,1064L4897,1069L4897,1071L4895,1071L4892,1077L4892,1084L4890,1087L4890,1099L4882,1099L4879,1097L4875,1097L4873,1102L4875,1102L4875,1105L4871,1110L4866,1112L4866,1115L4862,1115L4860,1117L4860,1122L4858,1122L4858,1125L4856,1125L4851,1128L4851,1138L4849,1140L4847,1140L4847,1143L4851,1143L4853,1140L4856,1140L4856,1138L4853,1138L4853,1135L4856,1135L4858,1133L4871,1133L4871,1135L4869,1143L4871,1143L4875,1148L4877,1148L4877,1150L4875,1150L4873,1153L4871,1153L4871,1156L4875,1161L4875,1163L4877,1163L4879,1166L4879,1171L4877,1173L4873,1173L4871,1176L4871,1173L4869,1173L4866,1176L4864,1176L4866,1179L4869,1184L4875,1184L4877,1186L4877,1189L4875,1189L4875,1191L4871,1194L4871,1196L4873,1199L4873,1201L4875,1204L4877,1204L4886,1209L4888,1209L4890,1207L4895,1207L4895,1212L4890,1217L4890,1219L4888,1219L4887,1220L4886,1222L4882,1222L4877,1227L4874,1229L4871,1232L4866,1235L4866,1240L4853,1240L4853,1242L4851,1242L4853,1242L4843,1242L4834,1237L4830,1237L4830,1232L4827,1235L4821,1235L4821,1233L4823,1232L4825,1232L4827,1230L4821,1227L4821,1230L4820,1231L4819,1232L4814,1232L4817,1232L4812,1232L4814,1232L4812,1232L4810,1235L4808,1232L4808,1230L4799,1230L4801,1230L4797,1230L4797,1227L4791,1227L4788,1230L4780,1235L4775,1235L4773,1237L4771,1237L4767,1242L4767,1247L4765,1250L4762,1250L4765,1252L4765,1258L4767,1258L4767,1260L4769,1260L4769,1263L4762,1263L4756,1265L4756,1268L4749,1268L4749,1265L4745,1265L4745,1263L4741,1265L4736,1265L4734,1263L4721,1263L4721,1263L4721,1263z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4940,2711L4938,2711L4938,2704L4936,2704L4936,2698L4934,2696L4931,2696L4931,2688L4929,2683L4925,2678L4923,2673L4923,2670L4925,2670L4925,2673L4927,2675L4929,2675L4931,2674L4934,2673L4934,2670L4936,2670L4936,2668L4940,2668L4940,2640L4942,2640L4942,2645L4947,2645L4951,2647L4953,2647L4957,2645L4951,2645L4947,2642L4944,2642L4944,2637L4942,2637L4942,2635L4940,2635L4940,2630L4947,2630L4947,2635L4949,2635L4949,2624L4947,2619L4949,2617L4953,2617L4953,2619L4955,2619L4957,2622L4957,2619L4996,2619L4996,2576L5029,2576L5031,2579L5042,2579L5046,2576L5051,2576L5051,2584L5048,2586L5048,2591L5046,2594L5046,2602L5048,2602L5048,2609L5046,2609L5046,2612L5051,2612L5053,2609L5059,2609L5064,2607L5064,2604L5070,2604L5072,2607L5079,2607L5079,2614L5081,2619L5083,2619L5083,2624L5079,2630L5079,2632L5076,2635L5074,2635L5074,2632L5072,2632L5072,2635L5070,2640L5068,2640L5068,2655L5066,2655L5066,2658L5068,2660L5074,2660L5074,2665L5079,2665L5081,2668L5083,2668L5083,2670L5085,2670L5085,2673L5083,2673L5083,2681L5081,2681L5081,2686L5083,2688L5083,2704L5081,2704L5081,2714L5079,2714L5076,2716L5076,2729L5074,2729L5074,2732L5072,2732L5072,2734L5068,2732L5066,2732L5066,2721L5064,2719L5064,2724L5061,2724L5055,2732L5053,2732L5051,2729L5048,2729L5044,2726L5042,2727L5040,2724L5040,2721L5038,2716L5038,2714L5035,2714L5035,2711L5031,2711L5029,2714L5027,2714L5027,2719L5029,2719L5029,2724L5027,2726L5016,2729L5014,2729L5014,2726L5009,2729L5007,2729L5007,2732L5003,2726L5003,2732L5005,2734L5005,2739L5003,2739L5003,2744L5005,2744L5009,2749L5007,2752L5007,2757L5009,2757L5014,2760L5014,2762L5012,2762L5009,2767L5009,2770L5012,2770L5012,2772L5007,2772L5001,2765L5001,2767L4994,2770L4994,2772L4992,2772L4992,2777L4990,2780L4988,2777L4988,2775L4986,2775L4986,2770L4981,2767L4977,2762L4977,2760L4968,2749L4964,2747L4964,2744L4962,2742L4960,2742L4957,2739L4955,2739L4955,2737L4951,2732L4949,2732L4949,2729L4947,2729L4947,2721L4944,2721L4944,2719L4942,2719L4942,2716L4940,2714L4940,2711L4940,2711L4940,2711zM4931,2693L4931,2696L4934,2696z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4227,2216L4223,2214L4223,2211L4221,2209L4221,2206L4251,2206L4250,2204L4253,2201L4259,2201L4261,2199L4266,2201L4270,2201L4270,2204L4273,2206L4272,2204L4276,2204L4277,2206L4279,2206L4279,2209L4282,2209L4282,2211L4286,2211L4286,2209L4290,2209L4292,2206L4295,2209L4297,2209L4297,2211L4299,2211L4299,2214L4297,2214L4297,2216L4288,2216L4288,2219L4282,2219L4277,2216L4275,2214L4271,2214L4271,2211L4266,2211L4264,2209L4262,2209L4262,2206L4260,2206L4260,2211L4258,2211L4258,2214L4243,2214L4243,2222L4217,2222L4217,2224L4214,2222L4214,2214L4217,2211L4221,2211L4219,2211L4221,2211L4221,2216L4226,2218L4227,2216L4227,2216L4227,2216z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5793,1232L5793,1227L5802,1227L5806,1230L5809,1230L5809,1227L5813,1227L5813,1230L5817,1230L5819,1232L5826,1232L5832,1235L5835,1237L5837,1237L5848,1240L5850,1240L5852,1237L5861,1237L5863,1240L5871,1240L5874,1242L5876,1242L5880,1247L5887,1247L5889,1250L5893,1250L5893,1252L5900,1252L5900,1255L5897,1255L5895,1258L5910,1258L5910,1255L5913,1255L5917,1252L5921,1252L5923,1255L5926,1255L5928,1252L5930,1252L5930,1255L5936,1255L5941,1260L5952,1260L5952,1265L5949,1268L5949,1270L5958,1278L5967,1278L5969,1281L5971,1281L5971,1283L5969,1286L5965,1286L5965,1291L5969,1296L5973,1298L5975,1298L5978,1301L5978,1306L5975,1309L5973,1309L5969,1306L5967,1306L5967,1303L5962,1303L5960,1306L5958,1306L5958,1303L5954,1303L5952,1301L5952,1298L5947,1298L5941,1296L5939,1296L5936,1298L5934,1298L5932,1301L5930,1301L5928,1303L5906,1303L5904,1306L5889,1306L5887,1303L5882,1303L5878,1301L5871,1293L5871,1291L5865,1291L5861,1296L5856,1296L5856,1293L5845,1293L5845,1296L5841,1296L5841,1293L5835,1293L5837,1291L5839,1291L5839,1288L5841,1288L5841,1278L5839,1273L5837,1270L5837,1265L5835,1265L5835,1258L5830,1252L5824,1252L5824,1250L5822,1250L5822,1245L5819,1245L5819,1247L5817,1247L5817,1245L5815,1242L5811,1242L5802,1240L5798,1235L5796,1235L5793,1232L5793,1232L5793,1232z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4988,872L4986,872L4988,872L4988,872L4988,872zM5079,895L5079,901L5081,908L5081,916L5079,916L5079,918L5074,918L5074,924L5076,924L5079,926L5081,926L5083,929L5083,931L5087,931L5087,936L5085,936L5085,941L5089,941L5089,944L5092,949L5089,952L5089,954L5087,954L5087,957L5089,959L5089,962L5092,962L5092,964L5089,964L5089,967L5096,967L5096,969L5098,969L5098,982L5096,982L5096,985L5092,990L5087,990L5087,985L5085,982L5076,982L5076,985L5081,985L5079,987L5074,990L5068,990L5068,992L5059,992L5055,997L5053,997L5053,995L5048,997L5048,1000L5044,1000L5042,1003L5029,1003L5029,1005L5025,1005L5025,1010L5022,1010L5020,1005L5018,1005L5020,1010L5020,1013L5022,1015L5027,1015L5027,1018L5029,1018L5029,1020L5027,1023L5027,1026L5029,1026L5029,1028L5031,1031L5033,1036L5035,1038L5042,1038L5046,1043L5051,1046L5053,1048L5057,1051L5061,1051L5061,1054L5064,1054L5064,1056L5066,1056L5066,1064L5055,1064L5055,1069L5053,1069L5051,1071L5046,1071L5042,1074L5038,1074L5035,1077L5035,1079L5038,1079L5038,1082L5040,1084L5042,1084L5042,1089L5040,1089L5040,1092L5044,1092L5044,1099L5042,1099L5038,1097L5035,1094L5038,1094L5035,1092L5031,1092L5031,1094L5029,1094L5027,1092L5020,1092L5020,1094L5005,1094L5003,1097L4999,1097L4990,1102L4986,1102L4983,1097L4975,1097L4973,1094L4970,1094L4970,1097L4973,1099L4968,1105L4964,1105L4966,1102L4960,1099L4957,1097L4953,1094L4953,1097L4947,1097L4944,1094L4938,1092L4929,1092L4929,1094L4925,1089L4916,1089L4914,1092L4916,1092L4916,1096L4916,1097L4914,1094L4905,1094L4905,1097L4892,1097L4895,1094L4890,1094L4890,1087L4892,1084L4892,1077L4895,1071L4897,1071L4897,1069L4899,1064L4905,1056L4905,1054L4908,1054L4910,1051L4908,1051L4905,1048L4895,1048L4892,1046L4888,1043L4886,1043L4884,1046L4877,1046L4877,1043L4873,1041L4871,1041L4871,1043L4869,1043L4860,1033L4858,1033L4858,1031L4860,1028L4860,1026L4862,1026L4862,1023L4860,1023L4858,1020L4853,1020L4853,1018L4851,1015L4851,1010L4853,1010L4853,1008L4856,1008L4858,1005L4860,1005L4858,1003L4858,1000L4856,1000L4856,995L4853,995L4849,992L4849,987L4849,990L4849,985L4845,985L4845,982L4847,980L4851,980L4851,977L4849,977L4849,975L4851,975L4853,972L4853,967L4847,959L4847,957L4851,954L4853,954L4858,957L4860,957L4862,954L4871,954L4871,952L4869,949L4869,946L4873,946L4875,944L4877,944L4877,939L4875,936L4866,936L4866,934L4869,934L4869,929L4873,929L4873,931L4877,931L4877,924L4879,921L4882,921L4882,908L4879,908L4878,907L4877,906L4876,905L4877,903L4877,898L4882,898L4882,895L4903,895L4905,898L4908,898L4908,901L4905,901L4905,903L4910,906L4912,906L4912,901L4910,901L4910,898L4912,898L4915,900L4916,903L4917,906L4921,906L4921,899L4918,898L4916,898L4916,895L4918,890L4921,890L4921,888L4923,888L4923,890L4929,890L4932,892L4934,891L4940,892L4942,895L4952,904L4957,904L4939,887L4927,888L4927,885L4931,885L4931,880L4927,883L4927,875L4923,878L4921,878L4921,872L4927,872L4931,870L4925,862L4923,862L4917,858L4914,859L4913,861L4909,861L4910,859L4909,855L4914,852L4917,853L4917,855L4918,857L4920,857L4925,857L4925,855L4929,855L4936,857L4938,857L4938,860L4942,860L4942,857L4944,860L4957,860L4960,862L4960,867L4957,870L4955,870L4962,870L4968,872L4977,872L4977,875L4983,875L4983,872L4988,872L4990,878L4990,880L4988,880L4983,883L4979,883L4979,885L4983,885L4983,888L4986,885L4992,885L4994,888L5001,888L5001,885L5003,885L5005,883L5005,880L5018,880L5021,878L5024,878L5028,876L5026,871L5026,867L5031,868L5031,872L5033,874L5040,869L5043,872L5047,875L5049,872L5046,870L5045,867L5049,866L5052,866L5051,863L5055,862L5056,865L5056,868L5058,869L5062,867L5063,871L5061,872L5057,876L5054,877L5050,880L5057,883L5063,881L5066,883L5071,883L5071,884L5075,886L5078,887L5079,887L5080,890L5072,890L5068,892L5079,895L5079,895L5079,895z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4600,2466L4598,2464L4598,2459L4596,2456L4596,2451L4591,2441L4591,2428L4596,2423L4596,2420L4598,2420L4598,2413L4600,2408L4600,2403L4602,2398L4604,2395L4604,2392L4606,2390L4609,2385L4611,2385L4613,2382L4611,2369L4611,2367L4609,2364L4609,2359L4606,2357L4604,2357L4604,2354L4606,2352L4606,2339L4604,2339L4604,2316L4602,2313L4600,2308L4600,2301L4602,2295L4602,2290L4652,2290L4650,2290L4663,2290L4663,2293L4665,2295L4671,2288L4674,2288L4674,2285L4676,2288L4682,2288L4682,2293L4680,2295L4680,2298L4678,2301L4678,2303L4680,2303L4687,2311L4689,2311L4691,2316L4691,2321L4693,2321L4693,2324L4691,2324L4691,2331L4689,2334L4689,2336L4687,2339L4687,2344L4689,2344L4691,2341L4695,2341L4697,2344L4695,2349L4695,2352L4693,2354L4693,2357L4695,2359L4695,2364L4691,2364L4693,2367L4693,2369L4695,2369L4695,2372L4700,2375L4700,2377L4702,2380L4700,2382L4697,2382L4697,2400L4695,2403L4695,2410L4700,2410L4700,2415L4697,2420L4697,2423L4695,2423L4697,2428L4700,2431L4700,2436L4702,2436L4702,2441L4704,2441L4706,2443L4708,2443L4710,2449L4713,2451L4715,2451L4713,2454L4710,2454L4710,2456L4708,2459L4708,2461L4706,2461L4704,2464L4693,2464L4691,2461L4689,2461L4689,2464L4684,2464L4680,2469L4676,2471L4671,2471L4667,2477L4663,2477L4663,2479L4661,2479L4658,2482L4650,2482L4650,2484L4645,2484L4641,2487L4637,2487L4626,2494L4624,2497L4619,2492L4617,2492L4617,2489L4609,2489L4604,2487L4596,2487L4596,2484L4606,2484L4606,2482L4604,2482L4604,2466L4600,2466L4600,2466L4600,2466z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5397,1497L5397,1500L5395,1500L5395,1502L5399,1502L5401,1500L5410,1500L5412,1497L5412,1502L5408,1507L5406,1507L5404,1505L5393,1507L5380,1507L5375,1510L5371,1510L5369,1507L5369,1505L5367,1502L5367,1505L5365,1505L5365,1502L5362,1502L5358,1500L5336,1500L5334,1497L5336,1490L5339,1490L5341,1488L5343,1490L5349,1490L5349,1487L5354,1487L5354,1490L5352,1490L5352,1492L5354,1492L5356,1495L5365,1495L5369,1492L5375,1495L5386,1495L5386,1497L5391,1497L5393,1495L5397,1495L5397,1497L5397,1497L5397,1497zM5464,1459L5466,1459L5464,1462L5464,1464L5462,1467L5462,1469L5460,1469L5460,1472L5458,1472L5458,1474L5456,1474L5456,1477L5451,1477L5451,1469L5453,1467L5453,1464L5456,1464L5460,1462L5462,1462L5464,1459L5464,1459L5464,1459zM5388,1444L5384,1439L5386,1439L5388,1436L5393,1436L5393,1441L5391,1441L5391,1444L5388,1444L5388,1444L5388,1444zM5425,1421L5425,1418L5419,1418L5421,1416L5432,1416L5434,1418L5432,1418L5427,1421L5425,1421L5425,1421L5425,1421zM5261,1421L5258,1421L5254,1416L5254,1413L5256,1411L5258,1413L5261,1413L5261,1416L5265,1418L5261,1418L5261,1421L5261,1421L5261,1421zM5375,1418L5373,1418L5369,1413L5367,1413L5367,1411L5369,1408L5375,1413L5375,1418L5375,1418L5375,1418zM5252,1393L5254,1395L5258,1405L5252,1405L5248,1403L5245,1403L5248,1400L5248,1398L5252,1398L5252,1393L5252,1393L5252,1393zM5404,1403L5401,1403L5399,1400L5401,1400L5401,1398L5404,1398L5404,1395L5401,1393L5399,1393L5399,1390L5408,1390L5408,1398L5404,1403L5404,1403L5404,1403zM5365,1385L5360,1380L5360,1377L5365,1377L5367,1383L5365,1383L5365,1385L5365,1385L5365,1385zM5339,1393L5334,1388L5326,1383L5323,1380L5323,1375L5330,1375L5330,1377L5334,1383L5336,1383L5341,1385L5343,1388L5352,1388L5352,1390L5354,1395L5354,1400L5356,1400L5356,1403L5365,1403L5365,1408L5362,1408L5362,1411L5360,1411L5358,1408L5356,1408L5354,1403L5349,1398L5349,1395L5341,1395L5339,1393L5339,1393L5339,1393zM5406,1372L5399,1372L5399,1367L5404,1367L5408,1365L5414,1365L5414,1367L5417,1370L5419,1370L5421,1375L5419,1377L5412,1377L5408,1375L5406,1375L5406,1372L5406,1372L5406,1372zM5232,1349L5235,1349L5235,1352L5232,1352L5232,1354L5235,1360L5239,1362L5241,1365L5239,1365L5232,1362L5232,1357L5230,1357L5230,1354L5228,1354L5226,1352L5228,1349L5232,1349L5232,1349L5232,1349zM5267,1395L5267,1393L5265,1388L5261,1385L5258,1385L5255,1386L5256,1383L5258,1380L5263,1379L5266,1380L5270,1379L5270,1375L5260,1376L5256,1377L5256,1372L5252,1370L5250,1367L5245,1367L5245,1365L5243,1362L5243,1360L5241,1354L5243,1354L5245,1352L5245,1349L5248,1349L5248,1347L5245,1347L5245,1344L5248,1342L5254,1342L5254,1339L5256,1339L5256,1334L5258,1334L5258,1329L5263,1329L5265,1324L5265,1316L5269,1316L5274,1314L5287,1314L5289,1309L5291,1309L5291,1306L5313,1306L5313,1301L5315,1301L5315,1298L5319,1298L5323,1301L5326,1301L5326,1298L5341,1298L5343,1296L5349,1296L5349,1293L5354,1293L5354,1291L5356,1291L5356,1293L5362,1293L5365,1296L5369,1298L5378,1298L5380,1301L5382,1301L5382,1303L5384,1303L5391,1301L5393,1301L5397,1298L5399,1301L5404,1301L5408,1298L5408,1291L5406,1291L5406,1288L5408,1286L5410,1286L5410,1288L5414,1288L5419,1291L5421,1293L5421,1301L5414,1301L5414,1303L5412,1301L5412,1309L5414,1309L5414,1311L5412,1311L5412,1314L5410,1314L5408,1316L5408,1319L5404,1319L5404,1316L5395,1316L5391,1314L5386,1314L5384,1311L5382,1314L5380,1314L5380,1311L5378,1311L5373,1314L5371,1314L5371,1316L5369,1322L5364,1322L5365,1311L5362,1311L5360,1314L5356,1314L5356,1316L5352,1319L5339,1319L5339,1321L5343,1324L5343,1329L5345,1329L5346,1330L5349,1329L5353,1333L5354,1334L5358,1337L5358,1339L5356,1339L5352,1334L5349,1334L5348,1333L5347,1332L5339,1332L5339,1334L5341,1335L5343,1337L5345,1337L5345,1339L5347,1339L5347,1344L5345,1344L5343,1342L5343,1339L5341,1339L5340,1338L5339,1337L5332,1334L5330,1334L5331,1336L5331,1340L5334,1342L5336,1344L5341,1344L5341,1347L5336,1347L5332,1344L5330,1344L5330,1339L5329,1337L5328,1337L5327,1334L5326,1334L5323,1334L5317,1332L5315,1329L5317,1326L5319,1326L5319,1324L5317,1321L5317,1324L5315,1324L5313,1326L5310,1326L5308,1329L5310,1332L5308,1334L5308,1344L5313,1344L5317,1349L5317,1357L5319,1357L5323,1362L5328,1365L5330,1370L5328,1372L5326,1372L5326,1367L5323,1367L5319,1365L5315,1367L5315,1370L5317,1370L5319,1372L5319,1375L5321,1375L5321,1377L5319,1377L5315,1380L5306,1380L5308,1383L5313,1383L5319,1385L5321,1385L5323,1388L5330,1388L5330,1390L5328,1390L5330,1390L5332,1393L5336,1393L5336,1395L5339,1398L5345,1398L5349,1403L5347,1405L5347,1411L5349,1413L5349,1421L5347,1418L5345,1418L5345,1416L5343,1416L5341,1413L5336,1411L5336,1408L5332,1408L5332,1411L5321,1411L5319,1413L5323,1413L5323,1421L5326,1421L5328,1423L5330,1423L5330,1421L5332,1423L5332,1426L5334,1426L5334,1428L5326,1428L5326,1431L5321,1431L5321,1428L5323,1428L5323,1426L5319,1423L5313,1423L5313,1428L5315,1431L5317,1436L5317,1439L5319,1439L5319,1441L5321,1441L5321,1446L5323,1446L5323,1449L5321,1449L5321,1454L5322,1455L5323,1456L5326,1459L5323,1459L5319,1456L5317,1454L5315,1449L5308,1449L5306,1451L5306,1462L5302,1456L5302,1451L5300,1446L5297,1444L5295,1444L5297,1441L5291,1441L5291,1449L5289,1451L5289,1449L5287,1449L5284,1446L5284,1444L5280,1439L5280,1434L5282,1434L5284,1431L5284,1428L5282,1428L5282,1426L5280,1423L5276,1421L5274,1416L5269,1416L5269,1413L5267,1413L5267,1411L5271,1411L5271,1408L5274,1408L5274,1405L5276,1405L5276,1403L5282,1403L5284,1400L5293,1398L5293,1400L5297,1403L5302,1403L5304,1405L5310,1405L5315,1411L5318,1410L5319,1408L5317,1408L5319,1405L5321,1405L5321,1408L5323,1408L5323,1405L5326,1405L5326,1403L5323,1403L5321,1400L5319,1403L5317,1403L5315,1400L5313,1400L5310,1398L5306,1398L5306,1395L5302,1395L5304,1398L5297,1398L5295,1395L5291,1395L5282,1398L5278,1398L5274,1395L5271,1398L5267,1398L5267,1395L5267,1395L5267,1395z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2205,2130L2209,2132L2218,2132L2218,2135L2220,2137L2222,2134L2222,2130L2226,2132L2231,2137L2224,2145L2222,2145L2220,2150L2215,2150L2211,2155L2205,2158L2205,2171L2207,2171L2205,2173L2202,2173L2202,2176L2198,2181L2194,2181L2194,2183L2196,2186L2192,2186L2192,2188L2189,2188L2189,2191L2185,2191L2179,2199L2179,2201L2174,2201L2172,2199L2170,2199L2170,2196L2146,2196L2144,2193L2140,2193L2140,2191L2135,2191L2135,2188L2133,2188L2129,2183L2127,2183L2120,2176L2120,2173L2122,2171L2122,2168L2120,2165L2122,2165L2122,2160L2124,2160L2124,2158L2120,2153L2131,2132L2131,2130L2133,2125L2170,2125L2170,2117L2172,2117L2168,2112L2163,2112L2163,2107L2159,2102L2157,2102L2153,2097L2148,2094L2144,2089L2142,2089L2142,2086L2155,2086L2155,2069L2207,2069L2207,2071L2205,2084L2205,2130L2205,2130L2205,2130z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4420,2398L4420,2395L4418,2392L4420,2392L4420,2390L4418,2385L4418,2377L4414,2375L4412,2375L4409,2372L4407,2375L4407,2372L4405,2375L4399,2372L4399,2375L4396,2375L4394,2372L4392,2375L4392,2377L4390,2377L4390,2380L4383,2380L4383,2377L4386,2372L4390,2367L4388,2362L4388,2354L4383,2354L4383,2349L4386,2349L4386,2347L4383,2347L4383,2344L4381,2341L4379,2336L4370,2326L4370,2324L4351,2324L4351,2326L4344,2329L4342,2326L4336,2329L4334,2329L4331,2336L4331,2339L4329,2341L4329,2344L4325,2347L4325,2349L4325,2347L4323,2347L4321,2349L4321,2354L4318,2354L4318,2357L4316,2357L4316,2354L4312,2354L4312,2349L4305,2341L4301,2339L4303,2334L4299,2334L4299,2329L4297,2329L4295,2326L4290,2324L4288,2324L4286,2321L4279,2316L4277,2311L4277,2308L4273,2308L4275,2303L4273,2303L4273,2301L4269,2295L4269,2293L4266,2293L4266,2298L4262,2298L4262,2295L4266,2290L4266,2288L4269,2285L4269,2280L4271,2280L4271,2278L4273,2275L4279,2275L4279,2273L4282,2273L4284,2270L4299,2270L4301,2267L4301,2257L4299,2257L4297,2255L4292,2255L4292,2252L4295,2252L4297,2250L4299,2250L4297,2250L4301,2250L4301,2247L4303,2245L4303,2242L4301,2242L4301,2237L4318,2237L4318,2245L4321,2245L4321,2242L4325,2242L4327,2245L4331,2245L4331,2247L4338,2247L4338,2250L4342,2247L4344,2247L4347,2245L4351,2245L4353,2247L4357,2247L4357,2245L4366,2245L4366,2247L4364,2250L4364,2252L4362,2252L4364,2255L4366,2255L4366,2257L4368,2260L4370,2257L4373,2257L4373,2255L4375,2252L4379,2252L4381,2255L4383,2260L4383,2262L4386,2262L4388,2260L4390,2255L4394,2255L4394,2252L4401,2252L4405,2255L4407,2257L4414,2257L4414,2255L4416,2252L4420,2250L4422,2250L4422,2245L4420,2245L4420,2242L4427,2242L4431,2247L4433,2247L4433,2250L4431,2250L4431,2252L4433,2252L4438,2260L4438,2262L4435,2270L4440,2270L4440,2275L4444,2275L4444,2278L4448,2278L4448,2283L4446,2283L4440,2290L4440,2293L4442,2293L4444,2290L4451,2290L4451,2308L4453,2311L4455,2311L4459,2313L4461,2316L4459,2318L4459,2321L4457,2321L4457,2324L4455,2324L4455,2329L4457,2329L4457,2331L4455,2331L4455,2341L4457,2341L4457,2344L4461,2344L4464,2347L4461,2347L4461,2352L4466,2352L4466,2354L4464,2354L4461,2357L4461,2359L4459,2362L4461,2364L4466,2364L4466,2367L4468,2369L4468,2377L4466,2377L4466,2375L4464,2375L4461,2372L4455,2372L4453,2375L4453,2382L4455,2382L4457,2385L4459,2385L4461,2387L4461,2390L4457,2390L4457,2392L4455,2395L4457,2395L4457,2398L4455,2403L4453,2405L4451,2403L4448,2403L4446,2405L4446,2403L4444,2403L4444,2400L4440,2400L4440,2405L4438,2408L4438,2410L4433,2415L4433,2413L4431,2415L4429,2415L4422,2408L4420,2408L4420,2398L4420,2398L4420,2398z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4232,2290L4230,2288L4232,2285L4234,2285L4236,2285L4234,2285L4234,2288L4236,2288L4236,2290L4232,2290L4232,2290L4232,2290zM4236,2278L4236,2273L4240,2273L4240,2275L4238,2278L4236,2278L4236,2278L4236,2278zM4218,2248L4221,2247L4225,2247L4232,2245L4247,2245L4253,2242L4258,2237L4301,2237L4301,2242L4303,2242L4303,2245L4301,2247L4301,2250L4297,2250L4299,2250L4297,2250L4295,2252L4292,2252L4292,2255L4297,2255L4299,2257L4301,2257L4301,2267L4299,2270L4284,2270L4282,2273L4279,2273L4279,2275L4273,2275L4271,2278L4271,2280L4269,2280L4269,2285L4266,2288L4266,2290L4264,2293L4262,2293L4262,2288L4256,2288L4253,2285L4253,2280L4251,2280L4251,2278L4253,2273L4258,2273L4258,2270L4249,2270L4249,2267L4251,2264L4247,2265L4245,2265L4240,2267L4238,2267L4238,2265L4236,2264L4235,2266L4234,2264L4232,2262L4230,2264L4227,2260L4227,2255L4230,2252L4223,2252L4221,2250L4218,2248L4218,2248L4218,2248z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3108,2584L3110,2584L3110,2586L3112,2586L3112,2589L3097,2589L3097,2586L3093,2586L3093,2589L3090,2586L3088,2586L3086,2589L3086,2591L3084,2594L3084,2596L3080,2596L3077,2594L3077,2596L3073,2596L3071,2599L3071,2602L3067,2602L3062,2599L3060,2602L3060,2604L3056,2604L3058,2607L3058,2609L3051,2609L3051,2612L3045,2612L3045,2609L3043,2609L3041,2607L3036,2607L3032,2599L3030,2596L3028,2596L3025,2594L3023,2594L3025,2591L3021,2591L3021,2584L3023,2579L3023,2576L3019,2576L3019,2571L3017,2568L3017,2566L3015,2563L3015,2556L3017,2553L3017,2545L3021,2540L3021,2538L3019,2535L3028,2525L3028,2520L3023,2515L3023,2507L3021,2505L3010,2505L3010,2502L3012,2502L3012,2500L3015,2497L3015,2484L3012,2482L3012,2479L3008,2479L3006,2482L2995,2482L2976,2456L2978,2456L2980,2454L2980,2451L2984,2446L2984,2441L2982,2438L2982,2433L2984,2431L2991,2431L2993,2428L2995,2431L2995,2428L2999,2428L2999,2426L3002,2426L3006,2420L3008,2420L3008,2418L3006,2418L3006,2415L3002,2415L3002,2418L2999,2418L2997,2415L2997,2413L2999,2413L2999,2410L2997,2410L2997,2408L2995,2408L2995,2403L2999,2403L2999,2395L3002,2395L3006,2392L3008,2392L3010,2390L3012,2390L3012,2387L3015,2387L3015,2385L3017,2382L3019,2382L3021,2380L3021,2377L3025,2377L3032,2385L3038,2387L3049,2400L3049,2403L3054,2403L3057,2408L3057,2421L3056,2423L3056,2426L3064,2426L3064,2428L3071,2428L3071,2431L3073,2431L3073,2433L3077,2436L3081,2440L3082,2441L3084,2446L3084,2443L3086,2443L3090,2449L3093,2449L3093,2451L3095,2454L3095,2456L3093,2466L3093,2469L3090,2471L3090,2477L3088,2477L3092,2482L3090,2484L3088,2484L3088,2487L3086,2489L3082,2487L3080,2487L3075,2489L3073,2492L3073,2494L3075,2497L3075,2500L3071,2510L3071,2512L3069,2512L3069,2520L3073,2525L3073,2528L3075,2528L3075,2533L3077,2533L3080,2535L3080,2540L3082,2540L3084,2543L3086,2543L3090,2540L3090,2551L3093,2551L3093,2558L3095,2561L3099,2571L3101,2571L3103,2576L3103,2579L3108,2584L3108,2584L3108,2584z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2659,2040L2657,2038L2653,2038L2649,2035L2646,2035L2646,2030L2649,2030L2653,2033L2655,2033L2657,2035L2659,2035L2659,2040L2659,2040L2659,2040zM2688,2051L2690,2051L2690,2053L2688,2056L2688,2058L2690,2058L2690,2061L2688,2061L2683,2056L2662,2056L2662,2058L2655,2058L2653,2056L2644,2056L2646,2056L2644,2056L2644,2053L2640,2053L2631,2058L2631,2061L2629,2061L2625,2056L2623,2056L2620,2053L2616,2053L2614,2051L2614,2043L2616,2043L2618,2040L2623,2040L2625,2043L2636,2046L2644,2046L2649,2048L2664,2048L2664,2046L2666,2043L2668,2046L2672,2046L2672,2040L2670,2040L2666,2038L2666,2035L2659,2028L2662,2025L2659,2023L2659,2020L2662,2018L2662,2015L2653,2010L2642,2010L2641,2007L2641,2005L2642,2002L2646,2002L2649,2000L2664,2000L2672,2005L2677,2005L2679,2007L2690,2007L2690,2023L2692,2023L2692,2025L2690,2030L2688,2030L2690,2033L2690,2040L2688,2040L2688,2043L2681,2043L2683,2046L2685,2046L2685,2048L2688,2051L2688,2051L2688,2051z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2295,2127L2300,2127L2302,2130L2304,2130L2304,2132L2315,2132L2317,2130L2319,2130L2321,2127L2324,2130L2330,2132L2330,2135L2337,2135L2334,2132L2345,2137L2353,2147L2358,2148L2363,2148L2367,2158L2369,2158L2369,2160L2363,2160L2360,2163L2352,2168L2347,2168L2343,2171L2341,2171L2334,2173L2326,2168L2326,2165L2324,2168L2321,2168L2321,2171L2319,2171L2319,2176L2317,2176L2317,2178L2315,2181L2317,2181L2317,2183L2313,2183L2306,2191L2304,2191L2300,2193L2300,2199L2298,2199L2293,2196L2293,2191L2291,2191L2289,2193L2285,2201L2272,2201L2272,2211L2274,2211L2274,2216L2269,2216L2267,2219L2267,2224L2265,2227L2256,2227L2256,2224L2248,2214L2243,2214L2243,2211L2246,2211L2246,2209L2243,2209L2243,2206L2246,2201L2246,2199L2243,2199L2243,2196L2239,2196L2237,2199L2237,2196L2235,2193L2233,2193L2231,2196L2228,2196L2228,2199L2224,2199L2224,2193L2218,2193L2218,2188L2215,2188L2215,2191L2213,2191L2213,2186L2211,2186L2209,2183L2207,2183L2205,2181L2200,2181L2200,2178L2202,2176L2202,2173L2205,2173L2207,2171L2205,2171L2205,2158L2211,2155L2215,2150L2220,2150L2222,2145L2224,2145L2231,2137L2235,2137L2239,2132L2246,2132L2246,2130L2250,2135L2254,2135L2256,2132L2259,2135L2287,2135L2287,2132L2293,2132L2293,2130L2295,2130L2295,2127L2295,2127L2295,2127z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5282,1115L5282,1117L5280,1120L5278,1120L5278,1122L5280,1122L5278,1125L5276,1125L5274,1128L5274,1130L5269,1135L5269,1138L5267,1140L5265,1140L5265,1138L5258,1138L5258,1140L5256,1140L5256,1143L5252,1143L5252,1140L5250,1140L5245,1143L5239,1143L5235,1140L5232,1143L5230,1143L5228,1140L5224,1140L5224,1143L5222,1145L5217,1148L5213,1148L5213,1145L5211,1145L5209,1148L5204,1150L5200,1150L5198,1153L5196,1153L5193,1156L5187,1156L5187,1153L5172,1153L5172,1150L5170,1150L5170,1148L5165,1148L5165,1150L5163,1148L5161,1148L5161,1145L5157,1140L5152,1140L5152,1138L5150,1138L5150,1135L5148,1135L5144,1133L5141,1133L5139,1130L5137,1125L5135,1122L5135,1120L5133,1120L5133,1117L5131,1120L5128,1120L5128,1117L5133,1115L5139,1115L5139,1110L5137,1110L5137,1107L5139,1107L5139,1102L5137,1102L5139,1099L5144,1099L5146,1097L5144,1094L5139,1094L5137,1092L5141,1089L5146,1089L5146,1092L5154,1092L5154,1087L5157,1082L5163,1082L5167,1087L5174,1089L5202,1089L5202,1082L5204,1082L5204,1079L5222,1079L5222,1077L5224,1077L5224,1074L5230,1074L5230,1077L5239,1077L5239,1074L5245,1074L5245,1071L5248,1071L5248,1069L5252,1064L5278,1064L5282,1066L5284,1069L5284,1071L5287,1071L5289,1069L5300,1069L5302,1074L5306,1074L5308,1077L5308,1079L5317,1079L5317,1084L5315,1087L5310,1089L5302,1089L5300,1092L5297,1092L5297,1094L5295,1094L5293,1097L5293,1102L5291,1102L5289,1105L5289,1107L5284,1112L5282,1112L5282,1115L5282,1115L5282,1115z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4069,546L4069,544L4072,541L4076,538L4080,538L4082,541L4085,541L4082,538L4080,538L4085,538L4078,538L4072,541L4069,541L4067,544L4065,544L4061,541L4059,538L4061,536L4063,536L4059,531L4056,533L4037,533L4035,531L4028,531L4026,533L4024,533L4020,536L4017,533L4015,533L4015,531L4013,531L4013,528L4028,528L4033,526L4054,526L4056,523L4063,523L4063,526L4076,526L4076,523L4078,521L4078,518L4076,518L4076,521L4074,521L4069,523L4067,523L4063,521L4054,521L4056,518L4059,518L4061,515L4065,515L4069,513L4076,513L4078,510L4076,513L4074,510L4065,510L4065,513L4063,513L4063,510L4061,510L4063,510L4063,508L4065,508L4067,505L4065,508L4061,508L4056,510L4054,508L4052,508L4050,510L4048,510L4046,508L4039,508L4037,510L4024,510L4022,513L4015,513L4015,510L4000,510L4002,508L4004,508L4004,505L4011,505L4013,508L4020,508L4017,508L4015,505L4013,505L4020,505L4015,505L4015,503L4011,503L4011,500L4015,500L4020,503L4026,503L4026,505L4033,505L4033,503L4028,503L4037,503L4037,500L4022,500L4020,498L4017,498L4020,495L4024,498L4037,498L4026,498L4026,495L4022,495L4020,493L4020,490L4022,490L4024,493L4033,493L4028,493L4028,490L4024,490L4026,487L4039,487L4041,490L4043,490L4043,493L4050,493L4050,490L4052,493L4054,493L4054,498L4052,498L4054,495L4059,495L4059,498L4056,498L4059,498L4059,493L4056,490L4050,490L4048,487L4043,487L4043,485L4059,485L4052,485L4050,482L4037,482L4039,482L4043,477L4046,477L4050,480L4059,480L4063,482L4065,485L4072,485L4076,487L4078,487L4080,490L4080,493L4080,490L4085,490L4087,493L4085,495L4082,495L4091,495L4091,498L4089,503L4080,503L4080,500L4076,500L4080,505L4089,505L4089,508L4091,510L4093,510L4093,515L4095,518L4095,521L4095,510L4098,510L4100,513L4100,510L4098,510L4098,508L4100,508L4100,505L4102,505L4106,503L4108,503L4108,508L4113,510L4119,503L4119,500L4115,495L4115,490L4123,490L4128,495L4130,495L4130,498L4134,498L4134,500L4136,500L4136,503L4141,503L4143,500L4143,498L4141,495L4141,490L4152,490L4152,487L4165,487L4167,490L4167,495L4173,495L4175,500L4175,503L4180,505L4180,498L4178,498L4178,495L4175,495L4173,493L4173,490L4171,487L4184,487L4193,493L4199,493L4199,490L4201,487L4210,487L4212,490L4221,490L4219,490L4219,487L4223,487L4225,485L4223,480L4221,477L4230,477L4232,475L4236,475L4238,477L4240,477L4240,480L4245,480L4245,485L4249,485L4253,487L4256,487L4256,485L4262,485L4264,482L4266,482L4266,480L4269,480L4273,482L4271,482L4266,485L4264,485L4266,485L4266,487L4260,487L4260,490L4264,493L4269,493L4271,490L4273,490L4273,493L4275,493L4275,498L4271,498L4269,500L4269,503L4271,503L4273,500L4284,500L4284,503L4282,505L4277,508L4277,510L4277,508L4284,505L4297,505L4301,508L4303,510L4303,513L4301,513L4299,515L4303,515L4303,518L4305,518L4297,518L4292,521L4303,521L4305,523L4303,526L4295,526L4292,523L4292,526L4297,526L4299,528L4301,528L4290,528L4297,528L4299,531L4297,531L4297,533L4290,533L4292,533L4292,536L4284,536L4282,533L4277,533L4279,533L4282,536L4282,538L4275,538L4277,538L4277,541L4279,541L4277,546L4273,546L4269,549L4266,549L4266,551L4264,551L4262,549L4256,549L4253,546L4253,551L4245,551L4243,554L4236,554L4236,556L4232,556L4232,559L4227,559L4225,561L4223,561L4219,564L4212,564L4210,561L4208,564L4208,566L4204,566L4201,564L4201,566L4199,566L4188,569L4186,566L4184,566L4182,569L4182,572L4184,572L4184,574L4182,574L4178,577L4165,577L4162,579L4160,579L4152,577L4143,577L4136,574L4119,574L4113,569L4111,569L4111,566L4117,566L4106,566L4108,566L4106,564L4104,564L4104,566L4102,566L4102,564L4093,564L4093,561L4098,561L4093,559L4091,561L4089,561L4089,564L4050,564L4050,556L4054,556L4054,559L4061,559L4059,559L4065,559L4069,556L4074,556L4072,554L4078,554L4078,551L4074,551L4076,549L4078,549L4078,546L4089,546L4076,546L4076,549L4067,549L4069,546L4069,546L4069,546z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7288,2415L7288,2418L7290,2420L7290,2428L7288,2428L7288,2431L7286,2431L7286,2426L7284,2423L7284,2420L7281,2420L7281,2418L7284,2415L7288,2415L7288,2415L7288,2415zM7251,2298L7253,2301L7251,2306L7251,2308L7249,2308L7247,2306L7247,2298L7249,2295L7251,2295L7251,2298L7251,2298L7251,2298zM7258,2257L7258,2273L7255,2275L7253,2273L7251,2265L7251,2262L7253,2262L7253,2255L7255,2252L7258,2252L7258,2257L7258,2257L7258,2257zM7260,2250L7258,2250L7255,2247L7255,2245L7258,2237L7258,2232L7260,2229L7262,2229L7262,2232L7264,2237L7264,2242L7262,2245L7260,2245L7260,2247L7262,2247L7262,2250L7260,2250L7260,2250L7260,2250zM7260,2228L7258,2224L7260,2224L7260,2214L7262,2211L7262,2209L7264,2206L7266,2206L7266,2224L7262,2224L7264,2224L7262,2224L7260,2228L7260,2228L7260,2228zM7355,1696L7355,1699L7353,1699L7351,1701L7351,1706L7353,1706L7355,1704L7355,1701L7362,1701L7362,1706L7364,1709L7364,1712L7359,1717L7357,1717L7357,1722L7359,1724L7359,1722L7364,1719L7366,1719L7366,1722L7368,1722L7368,1724L7381,1724L7381,1727L7383,1727L7383,1729L7385,1729L7383,1732L7385,1734L7385,1737L7379,1742L7377,1745L7375,1745L7372,1747L7372,1755L7375,1757L7377,1757L7377,1760L7379,1765L7375,1765L7375,1763L7370,1763L7372,1760L7370,1760L7370,1757L7359,1757L7353,1760L7351,1760L7349,1763L7346,1763L7346,1768L7342,1768L7338,1773L7338,1775L7333,1775L7333,1778L7331,1778L7327,1780L7327,1778L7325,1780L7323,1780L7320,1785L7320,1791L7323,1793L7323,1796L7325,1798L7325,1801L7323,1801L7323,1803L7320,1803L7320,1811L7316,1816L7314,1816L7314,1819L7310,1819L7310,1821L7307,1824L7307,1829L7312,1829L7312,1834L7310,1839L7310,1842L7307,1842L7301,1854L7301,1857L7299,1859L7299,1867L7297,1872L7294,1870L7292,1870L7290,1867L7288,1870L7286,1870L7286,1867L7277,1867L7275,1865L7273,1865L7273,1867L7275,1872L7275,1893L7273,1898L7273,1900L7271,1900L7271,1898L7268,1898L7268,1900L7266,1903L7266,1916L7268,1916L7268,1921L7271,1923L7268,1923L7268,1926L7266,1926L7264,1928L7264,1931L7260,1931L7255,1926L7255,1931L7253,1933L7253,1921L7251,1921L7251,1908L7249,1908L7247,1900L7247,1887L7245,1885L7245,1875L7242,1877L7240,1875L7240,1877L7236,1877L7236,1875L7234,1875L7234,1877L7236,1880L7236,1882L7234,1885L7232,1885L7232,1887L7229,1887L7229,1893L7232,1893L7232,1898L7229,1898L7229,1900L7223,1900L7223,1895L7221,1893L7221,1890L7219,1890L7219,1895L7216,1893L7216,1885L7212,1880L7212,1875L7214,1875L7216,1872L7214,1870L7216,1867L7219,1862L7221,1862L7221,1865L7225,1865L7229,1862L7234,1862L7234,1854L7236,1857L7240,1854L7240,1849L7242,1849L7242,1842L7245,1839L7242,1839L7242,1836L7247,1836L7247,1839L7249,1839L7249,1834L7247,1834L7242,1829L7216,1829L7216,1826L7210,1826L7210,1829L7190,1829L7186,1826L7182,1826L7180,1824L7175,1824L7175,1819L7177,1816L7177,1811L7175,1806L7177,1803L7175,1801L7175,1798L7173,1796L7171,1796L7171,1793L7169,1793L7169,1801L7162,1801L7160,1798L7156,1796L7156,1788L7151,1785L7151,1791L7154,1793L7149,1793L7145,1791L7145,1788L7141,1783L7136,1783L7134,1785L7138,1785L7138,1788L7141,1788L7141,1791L7134,1791L7134,1796L7130,1796L7130,1798L7128,1803L7128,1806L7130,1808L7132,1808L7138,1811L7138,1814L7143,1819L7145,1819L7147,1816L7149,1819L7149,1824L7154,1824L7151,1829L7149,1829L7145,1826L7138,1826L7138,1831L7136,1834L7136,1836L7134,1839L7132,1836L7130,1836L7130,1839L7125,1844L7128,1849L7130,1849L7132,1852L7136,1852L7138,1854L7138,1857L7145,1857L7145,1859L7147,1859L7145,1859L7145,1865L7147,1865L7145,1870L7143,1870L7143,1872L7141,1875L7141,1880L7145,1885L7147,1885L7145,1887L7145,1890L7147,1893L7147,1890L7149,1890L7151,1893L7151,1895L7149,1895L7149,1900L7151,1903L7154,1949L7146,1947L7142,1950L7136,1950L7130,1947L7125,1947L7130,1934L7128,1932L7121,1941L7119,1941L7117,1944L7110,1944L7106,1946L7104,1946L7102,1949L7099,1949L7097,1951L7095,1956L7093,1956L7093,1967L7095,1967L7095,1969L7097,1969L7097,1972L7095,1972L7095,1974L7097,1974L7097,1977L7093,1979L7091,1979L7091,1987L7089,1987L7089,1989L7084,1989L7082,1992L7082,1997L7080,1997L7080,2000L7078,2000L7073,2002L7067,2002L7067,2005L7063,2005L7060,2007L7039,2023L7037,2025L7034,2025L7034,2030L7032,2033L7030,2033L7028,2038L7017,2051L7017,2053L7015,2053L7013,2056L7011,2056L7008,2058L7002,2061L7002,2063L7000,2066L6998,2071L6995,2071L6993,2076L6991,2076L6991,2079L6987,2079L6982,2081L6980,2084L6976,2086L6974,2086L6967,2094L6965,2099L6969,2102L6967,2104L6967,2109L6963,2112L6961,2114L6956,2114L6952,2117L6943,2117L6941,2114L6941,2117L6937,2117L6935,2125L6935,2130L6933,2130L6933,2132L6931,2132L6930,2136L6929,2138L6926,2137L6926,2132L6918,2132L6913,2135L6913,2137L6911,2137L6911,2140L6909,2140L6909,2142L6907,2148L6907,2150L6905,2150L6905,2165L6907,2168L6907,2171L6909,2173L6909,2183L6907,2183L6907,2193L6909,2196L6909,2204L6913,2214L6913,2216L6911,2219L6911,2234L6909,2237L6907,2245L6907,2247L6902,2252L6902,2255L6900,2255L6900,2257L6898,2260L6898,2267L6896,2267L6898,2267L6896,2267L6896,2278L6898,2278L6898,2306L6900,2311L6899,2316L6895,2316L6892,2313L6885,2313L6885,2316L6883,2316L6883,2318L6881,2318L6883,2321L6883,2324L6879,2329L6876,2334L6874,2336L6872,2341L6876,2347L6881,2347L6885,2349L6887,2352L6885,2352L6884,2350L6883,2349L6870,2349L6861,2354L6859,2354L6855,2359L6853,2359L6853,2362L6850,2369L6850,2375L6848,2377L6848,2380L6846,2380L6837,2385L6835,2385L6835,2387L6833,2387L6829,2385L6827,2385L6822,2380L6820,2380L6820,2377L6818,2377L6816,2372L6814,2369L6811,2364L6807,2362L6805,2352L6803,2349L6803,2347L6801,2344L6801,2333L6796,2321L6796,2318L6790,2301L6790,2295L6788,2293L6783,2280L6783,2278L6781,2275L6781,2273L6779,2273L6779,2267L6772,2260L6770,2260L6770,2257L6768,2257L6768,2252L6762,2239L6762,2234L6759,2234L6759,2232L6757,2224L6757,2216L6755,2209L6755,2206L6753,2199L6753,2196L6751,2191L6749,2188L6749,2183L6746,2181L6746,2178L6749,2178L6746,2176L6744,2176L6744,2171L6742,2171L6742,2168L6738,2168L6740,2165L6738,2163L6736,2158L6736,2155L6731,2145L6729,2145L6727,2137L6727,2135L6725,2132L6725,2130L6723,2130L6723,2127L6720,2127L6720,2120L6718,2114L6718,2109L6716,2099L6716,2089L6714,2084L6714,2079L6712,2076L6712,2069L6710,2066L6710,2063L6707,2056L6707,2051L6705,2051L6705,2040L6703,2033L6703,2020L6701,2018L6701,2005L6699,2005L6699,2000L6701,1997L6701,1987L6703,1987L6703,1982L6705,1982L6705,1979L6707,1972L6705,1972L6705,1969L6703,1967L6705,1964L6705,1961L6699,1961L6699,1955L6700,1947L6705,1948L6708,1942L6702,1944L6696,1944L6697,1939L6703,1933L6702,1930L6695,1934L6696,1929L6702,1922L6699,1920L6690,1924L6688,1935L6689,1946L6681,1961L6668,1967L6666,1967L6666,1969L6664,1969L6660,1972L6658,1972L6651,1974L6645,1974L6634,1967L6627,1959L6625,1959L6623,1954L6614,1944L6612,1944L6610,1938L6608,1936L6606,1936L6597,1926L6597,1923L6595,1921L6597,1921L6597,1918L6599,1916L6603,1921L6601,1921L6601,1923L6606,1923L6621,1916L6625,1916L6625,1913L6629,1913L6632,1910L6634,1905L6638,1900L6632,1900L6621,1903L6621,1905L6619,1905L6616,1908L6608,1905L6603,1905L6599,1900L6595,1900L6590,1895L6588,1895L6584,1890L6582,1885L6582,1880L6575,1880L6574,1880L6575,1877L6575,1870L6577,1870L6577,1867L6590,1867L6590,1857L6593,1854L6595,1857L6614,1857L6614,1859L6616,1859L6619,1862L6625,1862L6629,1857L6632,1857L6632,1854L6636,1854L6640,1852L6642,1852L6642,1854L6640,1857L6642,1857L6642,1859L6647,1859L6651,1854L6655,1854L6655,1852L6653,1852L6653,1844L6655,1844L6653,1839L6651,1836L6651,1831L6649,1829L6649,1826L6647,1826L6647,1824L6645,1821L6645,1811L6634,1811L6629,1803L6627,1801L6627,1798L6629,1796L6629,1783L6627,1783L6627,1780L6623,1783L6619,1783L6619,1780L6616,1780L6616,1778L6612,1778L6612,1775L6610,1775L6610,1773L6614,1763L6625,1750L6627,1750L6627,1742L6629,1742L6636,1734L6642,1734L6642,1737L6645,1737L6645,1745L6653,1745L6655,1742L6658,1742L6660,1740L6673,1740L6677,1737L6677,1734L6684,1727L6684,1724L6686,1722L6688,1717L6688,1714L6692,1709L6697,1706L6699,1706L6701,1704L6703,1704L6707,1701L6707,1699L6710,1696L6712,1696L6716,1686L6716,1683L6720,1673L6720,1671L6725,1671L6727,1668L6731,1668L6736,1663L6736,1661L6733,1661L6733,1658L6736,1653L6738,1650L6740,1650L6742,1648L6742,1645L6746,1640L6751,1638L6753,1635L6751,1635L6751,1625L6753,1625L6753,1620L6751,1617L6751,1615L6753,1610L6755,1607L6757,1607L6759,1604L6762,1604L6762,1602L6764,1604L6766,1604L6770,1602L6775,1597L6770,1592L6766,1589L6755,1589L6755,1579L6753,1579L6751,1581L6746,1579L6746,1571L6742,1571L6738,1566L6736,1566L6736,1564L6738,1564L6738,1561L6740,1561L6742,1556L6742,1553L6738,1553L6738,1551L6736,1551L6736,1546L6740,1546L6742,1543L6744,1543L6744,1538L6733,1538L6733,1536L6736,1536L6736,1533L6738,1533L6736,1530L6733,1530L6731,1528L6731,1525L6733,1523L6733,1518L6740,1518L6742,1515L6755,1515L6755,1518L6768,1518L6768,1520L6775,1520L6781,1523L6788,1523L6788,1520L6792,1520L6792,1518L6794,1518L6794,1520L6798,1520L6798,1518L6801,1518L6803,1515L6814,1515L6814,1518L6818,1518L6818,1510L6820,1507L6822,1507L6822,1505L6820,1505L6820,1502L6827,1500L6829,1500L6831,1497L6842,1492L6842,1490L6844,1492L6846,1492L6846,1490L6850,1490L6850,1492L6848,1492L6848,1500L6850,1502L6853,1507L6853,1510L6855,1510L6855,1518L6857,1518L6857,1520L6866,1520L6866,1523L6868,1523L6874,1528L6874,1530L6876,1530L6876,1533L6874,1533L6872,1536L6868,1536L6868,1541L6870,1546L6870,1556L6872,1556L6872,1558L6874,1558L6874,1561L6876,1561L6879,1564L6881,1564L6881,1566L6883,1566L6885,1569L6885,1574L6887,1574L6887,1576L6889,1579L6889,1584L6887,1584L6887,1587L6883,1589L6879,1589L6874,1594L6868,1587L6870,1587L6870,1584L6866,1584L6866,1587L6859,1587L6859,1589L6861,1592L6861,1597L6863,1599L6863,1602L6866,1602L6866,1604L6870,1604L6870,1607L6868,1607L6868,1615L6870,1615L6870,1620L6868,1620L6868,1627L6872,1627L6876,1625L6876,1622L6879,1622L6881,1625L6881,1627L6883,1630L6883,1632L6885,1632L6885,1635L6887,1635L6889,1640L6894,1640L6894,1638L6900,1638L6900,1640L6902,1640L6902,1643L6909,1645L6911,1645L6909,1650L6911,1653L6913,1653L6918,1655L6920,1655L6924,1658L6924,1661L6931,1661L6931,1663L6928,1666L6926,1666L6924,1671L6920,1671L6920,1673L6918,1676L6915,1676L6915,1678L6913,1678L6913,1681L6915,1681L6915,1683L6913,1683L6913,1686L6911,1686L6909,1689L6911,1694L6911,1696L6905,1704L6905,1709L6907,1709L6909,1712L6911,1712L6911,1714L6913,1714L6915,1717L6918,1717L6918,1714L6920,1714L6922,1717L6928,1722L6933,1722L6935,1724L6937,1724L6939,1729L6941,1729L6943,1732L6943,1734L6948,1734L6952,1740L6963,1740L6967,1745L6969,1745L6969,1747L6974,1747L6976,1745L6978,1745L6978,1750L6980,1752L6985,1752L6987,1755L6993,1755L6993,1757L6995,1757L6998,1755L6998,1752L7004,1752L7006,1755L7008,1755L7008,1757L7011,1757L7011,1755L7015,1755L7015,1752L7017,1752L7021,1755L7024,1755L7026,1757L7032,1757L7032,1768L7039,1768L7041,1770L7047,1775L7050,1778L7052,1778L7054,1775L7056,1775L7056,1773L7060,1773L7060,1775L7063,1775L7063,1780L7065,1783L7067,1783L7067,1780L7076,1780L7076,1783L7078,1780L7089,1785L7091,1788L7093,1788L7095,1785L7095,1783L7097,1783L7102,1788L7117,1788L7119,1785L7123,1785L7123,1788L7128,1788L7128,1783L7130,1780L7130,1773L7128,1770L7128,1768L7125,1768L7125,1752L7128,1750L7128,1747L7130,1747L7130,1740L7128,1740L7130,1737L7136,1737L7138,1734L7141,1734L7143,1732L7145,1734L7149,1734L7149,1747L7147,1747L7147,1755L7149,1757L7151,1757L7151,1760L7147,1760L7147,1765L7149,1765L7149,1770L7154,1770L7156,1773L7156,1775L7160,1775L7160,1773L7162,1773L7167,1775L7171,1775L7171,1778L7184,1778L7184,1775L7186,1775L7186,1773L7193,1773L7195,1775L7219,1775L7219,1773L7223,1773L7223,1775L7229,1775L7232,1773L7238,1773L7240,1770L7238,1770L7238,1768L7236,1765L7236,1763L7238,1763L7240,1760L7240,1757L7238,1757L7236,1752L7236,1755L7229,1755L7225,1750L7225,1745L7227,1745L7227,1742L7232,1742L7234,1745L7238,1745L7238,1742L7242,1742L7242,1740L7245,1740L7245,1742L7249,1742L7251,1740L7253,1740L7253,1737L7255,1737L7255,1732L7258,1729L7262,1729L7262,1727L7266,1727L7268,1724L7271,1724L7271,1722L7273,1719L7273,1717L7275,1714L7290,1714L7292,1712L7292,1709L7294,1706L7297,1706L7297,1704L7303,1696L7307,1696L7307,1694L7310,1691L7312,1691L7318,1699L7323,1699L7329,1701L7333,1701L7333,1699L7338,1694L7342,1691L7346,1691L7349,1689L7351,1689L7351,1691L7353,1691L7353,1694L7355,1696L7355,1696L7355,1696z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6244,1770L6242,1773L6240,1773L6240,1775L6237,1775L6235,1778L6227,1778L6224,1780L6218,1783L6216,1783L6216,1780L6218,1780L6222,1778L6224,1778L6227,1775L6231,1775L6231,1773L6229,1773L6229,1770L6237,1770L6240,1768L6244,1768L6244,1770L6244,1770L6244,1770zM6380,1469L6380,1477L6383,1477L6383,1490L6380,1495L6378,1497L6378,1510L6376,1513L6374,1518L6372,1520L6367,1520L6367,1523L6370,1523L6370,1525L6372,1528L6367,1528L6367,1530L6365,1530L6361,1536L6361,1538L6363,1541L6363,1548L6361,1548L6361,1551L6363,1551L6363,1553L6374,1553L6374,1556L6372,1556L6370,1558L6370,1561L6367,1561L6365,1566L6363,1566L6363,1571L6372,1594L6372,1602L6370,1604L6370,1617L6372,1622L6380,1622L6387,1625L6396,1625L6398,1627L6396,1630L6398,1630L6398,1632L6400,1638L6396,1645L6376,1668L6374,1673L6372,1676L6385,1691L6385,1694L6387,1699L6391,1704L6391,1706L6400,1717L6400,1719L6402,1719L6409,1722L6415,1722L6417,1724L6417,1727L6426,1727L6426,1729L6424,1734L6424,1737L6426,1742L6426,1755L6424,1760L6426,1760L6428,1763L6430,1763L6430,1760L6439,1760L6439,1763L6441,1763L6441,1765L6439,1765L6439,1770L6437,1773L6437,1780L6422,1780L6419,1783L6415,1783L6413,1785L6411,1785L6411,1791L6409,1788L6406,1788L6406,1791L6404,1791L6400,1793L6398,1793L6398,1808L6393,1808L6393,1824L6387,1831L6383,1829L6380,1829L6376,1826L6365,1826L6365,1821L6363,1821L6363,1819L6361,1819L6359,1821L6359,1824L6361,1824L6361,1826L6359,1826L6357,1824L6357,1821L6335,1821L6335,1819L6326,1819L6324,1821L6320,1821L6318,1819L6318,1816L6311,1816L6307,1814L6300,1814L6300,1816L6294,1816L6294,1814L6292,1814L6292,1811L6285,1811L6285,1808L6283,1808L6283,1811L6281,1811L6279,1808L6272,1808L6272,1803L6270,1801L6270,1798L6266,1788L6266,1785L6268,1785L6268,1783L6266,1780L6266,1773L6263,1773L6261,1768L6261,1765L6259,1765L6255,1763L6240,1763L6235,1765L6235,1768L6227,1768L6227,1770L6224,1770L6224,1775L6222,1775L6216,1775L6214,1778L6205,1783L6203,1785L6201,1785L6194,1783L6190,1778L6172,1778L6170,1775L6166,1773L6166,1770L6164,1768L6159,1768L6157,1765L6153,1765L6149,1763L6149,1760L6146,1760L6144,1757L6142,1757L6142,1752L6140,1750L6140,1747L6131,1747L6131,1745L6129,1745L6129,1742L6125,1742L6120,1740L6118,1740L6118,1742L6114,1742L6114,1740L6110,1737L6107,1734L6105,1729L6103,1727L6101,1722L6101,1719L6099,1717L6099,1709L6094,1709L6094,1706L6092,1706L6092,1704L6094,1704L6097,1701L6094,1701L6094,1699L6088,1699L6088,1686L6084,1683L6077,1676L6077,1673L6075,1673L6073,1666L6073,1666L6073,1663L6066,1663L6066,1666L6064,1666L6062,1668L6058,1671L6055,1668L6055,1666L6051,1666L6049,1663L6042,1659L6040,1659L6040,1663L6040,1668L6038,1671L6036,1671L6034,1668L6032,1671L6027,1671L6025,1668L6025,1663L6019,1655L6014,1655L6014,1638L6006,1638L6006,1622L6008,1620L6008,1617L6010,1615L6010,1612L6008,1610L6008,1607L6003,1604L6003,1602L6001,1599L5999,1594L5999,1592L5997,1589L5988,1589L5984,1584L5982,1584L5982,1581L5980,1581L5980,1579L5978,1579L5973,1576L5971,1574L5962,1574L5962,1569L5965,1566L5965,1564L5962,1564L5962,1561L5960,1561L5960,1556L5956,1556L5958,1553L5956,1551L5954,1551L5954,1553L5952,1553L5952,1551L5949,1551L5949,1546L5945,1541L5943,1541L5943,1538L5945,1538L5945,1536L5947,1536L5947,1528L5943,1528L5943,1525L5947,1520L5952,1520L5952,1518L5949,1518L5949,1513L5952,1513L5954,1510L5956,1510L5956,1502L5958,1505L5960,1505L5962,1502L5965,1502L5965,1500L5962,1500L5962,1497L5958,1492L5958,1487L5960,1485L5965,1485L5967,1482L5969,1482L5969,1479L5952,1479L5952,1477L5949,1477L5949,1474L5943,1474L5941,1472L5941,1467L5939,1462L5939,1459L5936,1459L5936,1462L5934,1462L5934,1459L5932,1456L5932,1449L5926,1449L5926,1446L5928,1446L5928,1439L5923,1439L5926,1436L5926,1431L5921,1428L5919,1428L5919,1418L5921,1418L5919,1416L5910,1413L5910,1411L5913,1405L5915,1403L5917,1398L5915,1395L5913,1395L5913,1388L5910,1388L5910,1385L5913,1383L5910,1380L5908,1380L5908,1372L5906,1365L5904,1365L5904,1362L5915,1362L5917,1354L5917,1352L5919,1349L5921,1349L5926,1354L5928,1354L5928,1360L5930,1360L5930,1362L5932,1362L5932,1365L5934,1365L5934,1370L5941,1370L5943,1375L5945,1377L5947,1377L5954,1380L5975,1380L5980,1375L5980,1372L5982,1370L5988,1370L5988,1367L5991,1365L5995,1365L5995,1362L5997,1362L5997,1360L6001,1360L6008,1354L6010,1354L6014,1352L6014,1354L6016,1354L6021,1360L6023,1360L6023,1362L6025,1362L6023,1365L6019,1365L6019,1370L6021,1372L6023,1372L6023,1377L6016,1377L6014,1380L6014,1383L6019,1383L6019,1385L6021,1385L6021,1388L6023,1388L6023,1390L6025,1388L6027,1388L6029,1393L6032,1395L6036,1395L6038,1393L6038,1398L6040,1408L6040,1413L6042,1416L6042,1418L6045,1418L6045,1421L6047,1421L6049,1423L6051,1423L6053,1426L6068,1426L6075,1428L6077,1431L6077,1436L6079,1436L6079,1439L6084,1441L6086,1441L6088,1444L6094,1446L6097,1449L6099,1449L6101,1451L6112,1451L6112,1454L6133,1454L6138,1451L6142,1451L6146,1449L6155,1449L6159,1446L6166,1446L6168,1444L6178,1444L6177,1446L6172,1446L6177,1449L6179,1449L6183,1444L6181,1441L6181,1439L6179,1434L6179,1431L6185,1431L6190,1428L6194,1428L6196,1426L6203,1426L6203,1418L6205,1418L6205,1416L6207,1416L6211,1411L6214,1411L6216,1408L6220,1408L6220,1405L6246,1405L6246,1400L6261,1400L6263,1403L6266,1403L6268,1400L6270,1400L6274,1405L6274,1411L6283,1411L6296,1416L6298,1416L6298,1418L6302,1421L6313,1421L6315,1418L6318,1418L6318,1421L6322,1421L6324,1423L6328,1423L6331,1426L6331,1431L6333,1434L6335,1434L6339,1436L6341,1436L6348,1439L6348,1441L6350,1441L6350,1444L6352,1444L6352,1446L6359,1454L6380,1454L6380,1469L6380,1469L6380,1469z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5999,1594L6001,1599L6003,1602L6003,1604L6008,1607L6008,1610L6010,1612L6010,1615L6008,1617L6008,1620L6006,1622L6006,1638L6014,1638L6014,1655L6019,1655L6025,1663L6025,1668L6027,1671L6029,1671L6029,1673L6025,1673L6023,1671L6021,1671L6019,1668L6012,1668L6010,1669L5993,1668L5991,1671L5991,1673L5988,1673L5988,1676L5986,1681L5984,1683L5984,1686L5978,1694L5978,1696L5975,1696L5975,1699L5973,1699L5971,1701L5923,1696L5804,1607L5770,1599L5772,1597L5772,1594L5765,1594L5763,1589L5767,1589L5759,1561L5759,1558L5763,1558L5819,1525L5822,1523L5822,1520L5826,1515L5826,1495L5828,1495L5828,1490L5830,1487L5830,1477L5826,1472L5828,1462L5830,1459L5830,1456L5843,1454L5858,1439L5863,1436L5865,1436L5867,1431L5869,1428L5871,1428L5871,1431L5876,1431L5880,1428L5889,1434L5902,1434L5902,1431L5906,1431L5910,1434L5910,1436L5908,1439L5910,1441L5913,1441L5915,1439L5917,1439L5919,1436L5926,1436L5923,1439L5928,1439L5928,1446L5926,1446L5926,1449L5932,1449L5932,1456L5934,1459L5934,1462L5936,1462L5936,1459L5939,1459L5939,1462L5941,1467L5941,1472L5943,1474L5949,1474L5949,1477L5952,1477L5952,1479L5969,1479L5969,1482L5967,1482L5965,1485L5960,1485L5958,1487L5958,1492L5962,1497L5962,1500L5965,1500L5965,1502L5962,1502L5960,1505L5958,1505L5956,1502L5956,1510L5954,1510L5952,1513L5949,1513L5949,1518L5952,1518L5952,1520L5947,1520L5943,1525L5943,1528L5947,1528L5947,1536L5945,1536L5945,1538L5943,1538L5943,1541L5945,1541L5949,1546L5949,1551L5952,1551L5952,1553L5954,1553L5954,1551L5956,1551L5958,1553L5956,1556L5960,1556L5960,1561L5962,1561L5962,1564L5965,1564L5965,1566L5962,1569L5962,1574L5971,1574L5973,1576L5978,1579L5980,1579L5980,1581L5982,1581L5982,1584L5984,1584L5988,1589L5997,1589L5999,1592L5999,1594L5999,1594L5999,1594z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4408,890L4403,889L4397,886L4398,884L4400,883L4403,884L4405,883L4405,880L4403,878L4407,878L4403,878L4407,878L4407,875L4425,875L4425,878L4427,878L4427,880L4429,878L4429,875L4433,875L4434,877L4444,875L4440,875L4442,872L4446,870L4451,870L4451,867L4455,867L4455,865L4438,865L4438,862L4440,860L4446,860L4446,852L4455,847L4459,847L4461,845L4472,844L4474,842L4477,842L4477,839L4485,844L4490,844L4487,846L4485,847L4483,847L4472,860L4466,862L4461,862L4461,865L4466,865L4464,867L4461,867L4457,870L4455,870L4459,875L4464,875L4464,880L4472,880L4479,883L4483,878L4481,875L4483,875L4485,872L4490,872L4490,875L4492,875L4494,880L4496,883L4496,885L4498,885L4498,883L4509,883L4511,885L4505,885L4505,890L4507,890L4507,895L4509,895L4509,898L4511,898L4513,901L4511,906L4509,906L4509,908L4513,913L4513,924L4511,924L4511,926L4509,929L4509,934L4507,934L4505,939L4500,939L4503,941L4505,941L4505,944L4492,944L4492,946L4490,946L4490,944L4487,941L4487,946L4470,946L4470,949L4472,949L4468,954L4466,954L4464,952L4464,954L4461,954L4459,957L4457,957L4448,959L4448,962L4444,962L4440,964L4431,964L4427,967L4425,967L4422,968L4420,968L4418,967L4410,967L4414,962L4409,962L4405,964L4401,964L4405,959L4403,959L4405,959L4401,959L4399,957L4396,957L4394,959L4393,956L4393,953L4401,949L4403,949L4409,946L4392,946L4392,949L4390,946L4390,944L4394,944L4396,941L4399,941L4405,944L4409,944L4409,941L4407,941L4407,939L4412,934L4414,934L4414,931L4409,932L4409,929L4416,926L4420,921L4418,921L4422,913L4427,913L4427,916L4429,913L4433,913L4433,908L4431,908L4429,911L4414,911L4414,908L4416,908L4416,906L4412,906L4412,908L4407,908L4407,906L4409,906L4399,906L4399,901L4403,898L4405,898L4405,893L4414,893L4414,890L4416,890L4416,888L4409,888L4408,890L4408,890L4408,890z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5660,1612L5660,1615L5653,1617L5653,1622L5650,1622L5650,1627L5653,1627L5657,1625L5661,1625L5663,1622L5666,1622L5666,1635L5661,1645L5661,1648L5659,1650L5657,1655L5657,1668L5655,1671L5655,1676L5653,1681L5653,1686L5650,1686L5650,1681L5648,1678L5646,1671L5646,1668L5642,1658L5640,1658L5640,1655L5642,1655L5633,1632L5633,1630L5635,1630L5635,1625L5640,1622L5640,1620L5642,1620L5640,1617L5642,1615L5644,1610L5644,1607L5646,1607L5646,1602L5648,1599L5648,1594L5650,1592L5650,1581L5653,1579L5655,1579L5655,1571L5657,1569L5661,1569L5663,1571L5666,1569L5668,1569L5668,1566L5670,1564L5672,1564L5672,1571L5670,1571L5670,1576L5672,1576L5670,1579L5672,1579L5672,1581L5670,1581L5670,1584L5668,1592L5666,1592L5666,1589L5663,1589L5663,1587L5661,1589L5661,1587L5659,1587L5655,1589L5655,1597L5653,1599L5653,1610L5660,1610L5660,1612L5660,1612L5660,1612z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5113,1400L5113,1405L5111,1405L5109,1408L5109,1411L5105,1416L5105,1418L5102,1421L5102,1423L5100,1423L5100,1431L5102,1436L5105,1436L5105,1439L5107,1439L5107,1441L5105,1441L5105,1444L5102,1444L5100,1446L5100,1449L5102,1451L5100,1454L5098,1451L5089,1451L5085,1449L5081,1444L5081,1441L5079,1441L5076,1439L5066,1439L5064,1436L5061,1436L5061,1434L5057,1434L5057,1431L5053,1431L5051,1428L5048,1428L5048,1426L5044,1426L5042,1423L5033,1423L5029,1421L5027,1418L5027,1411L5029,1408L5029,1405L5031,1405L5035,1403L5040,1408L5042,1408L5044,1405L5044,1403L5046,1403L5051,1400L5053,1403L5053,1405L5061,1411L5066,1411L5068,1408L5085,1408L5087,1405L5092,1403L5098,1403L5100,1405L5102,1403L5107,1403L5111,1400L5113,1398L5113,1400L5113,1400L5113,1400zM4951,1321L4951,1324L4953,1324L4953,1332L4951,1332L4949,1334L4949,1339L4951,1339L4951,1349L4949,1349L4949,1352L4951,1352L4949,1357L4949,1365L4947,1367L4947,1372L4942,1372L4942,1370L4940,1370L4931,1367L4931,1377L4929,1380L4927,1380L4923,1377L4921,1380L4921,1377L4918,1375L4916,1375L4916,1377L4914,1377L4914,1372L4916,1372L4916,1370L4914,1370L4916,1367L4914,1365L4914,1360L4916,1354L4916,1352L4918,1352L4918,1347L4914,1347L4914,1342L4916,1339L4916,1332L4914,1326L4912,1324L4908,1324L4908,1319L4910,1314L4912,1316L4921,1316L4921,1314L4925,1314L4931,1306L4934,1306L4936,1303L4938,1303L4944,1306L4947,1306L4949,1311L4944,1314L4949,1314L4949,1316L4951,1321L4951,1321L4951,1321zM4957,1135L4960,1138L4960,1140L4964,1140L4964,1135L4962,1133L4960,1133L4960,1130L4962,1128L4964,1128L4966,1125L4966,1128L4968,1130L4973,1130L4973,1128L4970,1122L4973,1120L4977,1120L4977,1117L4979,1117L4979,1120L4981,1120L4981,1122L4988,1122L4988,1120L4992,1115L5007,1115L5016,1112L5020,1112L5018,1115L5018,1117L5020,1117L5025,1122L5025,1125L5035,1125L5038,1128L5055,1128L5057,1130L5061,1130L5061,1133L5057,1135L5055,1135L5053,1138L5053,1140L5061,1140L5061,1143L5059,1143L5055,1148L5059,1148L5059,1150L5064,1156L5066,1156L5068,1158L5066,1161L5061,1156L5059,1156L5059,1154L5057,1153L5057,1156L5055,1158L5055,1156L5044,1156L5044,1158L5042,1158L5040,1161L5038,1161L5033,1163L5031,1163L5031,1161L5029,1161L5025,1163L5022,1163L5022,1166L5018,1168L5018,1171L5025,1179L5027,1179L5029,1181L5029,1184L5025,1184L5025,1186L5022,1186L5022,1199L5025,1204L5029,1209L5033,1212L5033,1214L5040,1214L5044,1217L5048,1222L5051,1222L5051,1224L5057,1224L5059,1227L5059,1230L5066,1242L5066,1247L5068,1247L5068,1252L5083,1270L5087,1270L5087,1273L5089,1273L5089,1275L5094,1275L5094,1278L5098,1278L5100,1281L5131,1281L5131,1286L5128,1286L5126,1288L5124,1288L5124,1291L5122,1291L5122,1293L5124,1293L5124,1296L5126,1296L5128,1298L5131,1298L5139,1303L5144,1303L5154,1309L5159,1309L5163,1314L5178,1321L5180,1321L5183,1324L5183,1326L5185,1326L5189,1329L5193,1334L5193,1337L5196,1339L5193,1342L5193,1344L5191,1344L5191,1349L5187,1349L5185,1347L5183,1347L5183,1342L5180,1339L5178,1334L5167,1334L5165,1332L5159,1329L5163,1329L5163,1326L5152,1326L5152,1329L5150,1329L5150,1332L5148,1334L5146,1334L5146,1339L5141,1339L5141,1347L5139,1349L5139,1354L5144,1354L5146,1357L5148,1357L5152,1360L5154,1360L5157,1362L5157,1375L5159,1375L5159,1377L5157,1377L5157,1380L5152,1377L5148,1377L5148,1380L5146,1380L5144,1383L5141,1383L5141,1385L5139,1385L5141,1388L5141,1395L5139,1395L5139,1398L5135,1398L5131,1403L5131,1405L5128,1405L5128,1411L5115,1411L5115,1400L5120,1400L5120,1398L5122,1393L5124,1393L5124,1390L5122,1390L5122,1388L5124,1385L5131,1385L5131,1380L5133,1380L5126,1372L5126,1362L5124,1362L5124,1360L5122,1360L5122,1357L5120,1354L5120,1347L5118,1347L5118,1344L5115,1342L5111,1342L5109,1344L5107,1344L5107,1342L5105,1342L5100,1337L5096,1337L5096,1332L5098,1332L5098,1329L5096,1329L5096,1326L5094,1324L5094,1321L5087,1321L5085,1324L5081,1324L5081,1321L5083,1321L5083,1319L5079,1316L5072,1316L5070,1314L5070,1311L5064,1303L5061,1303L5059,1301L5059,1303L5057,1303L5051,1301L5046,1301L5046,1303L5044,1303L5044,1301L5042,1301L5042,1298L5038,1298L5033,1296L5031,1293L5029,1293L5025,1288L5020,1286L5020,1283L5016,1278L5009,1278L5009,1275L5007,1273L5007,1270L5005,1268L5001,1268L5001,1265L4990,1265L4990,1263L4992,1263L4992,1260L4990,1258L4986,1255L4986,1252L4983,1252L4981,1250L4981,1247L4975,1247L4975,1237L4973,1237L4970,1232L4970,1230L4968,1230L4968,1227L4966,1227L4966,1217L4962,1212L4960,1212L4951,1209L4949,1209L4942,1204L4940,1201L4938,1201L4927,1199L4921,1199L4916,1201L4916,1204L4914,1207L4912,1207L4912,1209L4910,1209L4908,1212L4908,1214L4905,1217L4901,1217L4897,1219L4890,1219L4890,1217L4895,1212L4895,1207L4890,1207L4888,1209L4886,1209L4877,1204L4875,1204L4873,1201L4873,1199L4871,1196L4871,1194L4875,1191L4875,1189L4877,1189L4877,1186L4875,1184L4869,1184L4866,1179L4864,1176L4866,1176L4869,1173L4871,1173L4871,1176L4873,1173L4877,1173L4879,1171L4879,1166L4877,1163L4875,1163L4875,1161L4871,1156L4871,1153L4873,1153L4875,1150L4888,1150L4888,1148L4895,1148L4897,1150L4899,1150L4899,1148L4903,1148L4908,1143L4908,1140L4912,1133L4916,1133L4916,1140L4921,1143L4927,1143L4927,1148L4929,1148L4929,1153L4931,1153L4934,1150L4931,1150L4931,1145L4934,1143L4936,1143L4936,1140L4938,1140L4938,1138L4940,1138L4940,1133L4938,1133L4938,1130L4942,1130L4944,1133L4944,1135L4947,1138L4951,1138L4953,1135L4957,1135L4957,1135L4957,1135z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2538,2071L2538,2074L2534,2069L2532,2069L2532,2066L2529,2069L2523,2069L2521,2066L2521,2063L2519,2063L2519,2061L2516,2061L2514,2056L2506,2056L2506,2051L2510,2048L2514,2048L2516,2046L2523,2046L2525,2048L2525,2046L2527,2046L2529,2048L2542,2048L2545,2051L2547,2051L2549,2053L2551,2053L2553,2056L2558,2056L2560,2058L2562,2058L2562,2061L2564,2063L2564,2066L2562,2066L2562,2069L2555,2069L2553,2066L2551,2066L2551,2063L2547,2063L2547,2066L2545,2069L2542,2069L2542,2066L2538,2066L2538,2071L2538,2071L2538,2071z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5709,1622L5718,1630L5722,1638L5737,1653L5726,1661L5722,1671L5720,1671L5702,1676L5696,1686L5683,1696L5653,1691L5653,1681L5655,1676L5655,1671L5657,1668L5657,1655L5659,1650L5661,1648L5661,1645L5666,1635L5666,1622L5666,1622L5666,1620L5668,1617L5668,1599L5670,1597L5668,1592L5670,1584L5670,1581L5679,1581L5683,1587L5685,1587L5685,1589L5687,1587L5692,1592L5694,1592L5696,1594L5705,1594L5757,1561L5759,1561L5767,1589L5763,1589L5765,1594L5772,1594L5772,1597L5770,1599L5765,1602L5765,1604L5709,1622L5709,1622z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6881,1126L6878,1128L6876,1132L6860,1133L6858,1137L6852,1135L6844,1135L6841,1133L6815,1131L6807,1128L6801,1130L6775,1129L6767,1135L6767,1132L6763,1133L6759,1137L6759,1143L6756,1145L6742,1146L6744,1153L6744,1158L6740,1161L6739,1165L6742,1170L6742,1176L6739,1181L6736,1179L6736,1173L6725,1160L6721,1158L6722,1156L6725,1152L6727,1147L6727,1141L6732,1139L6736,1139L6751,1124L6756,1122L6784,1123L6792,1120L6799,1120L6805,1123L6811,1124L6818,1127L6846,1125L6852,1128L6858,1129L6860,1126L6869,1122L6882,1123L6881,1126L6881,1126L6881,1126zM7034,1117L7034,1120L7041,1120L7041,1117L7045,1117L7047,1115L7047,1112L7056,1112L7060,1107L7060,1099L7058,1099L7058,1087L7056,1087L7056,1082L7058,1082L7058,1077L7063,1069L7067,1069L7069,1066L7073,1066L7073,1069L7076,1069L7078,1066L7082,1066L7086,1064L7086,1061L7089,1061L7089,1059L7091,1059L7093,1054L7091,1054L7091,1048L7093,1046L7106,1046L7106,1043L7104,1041L7099,1041L7095,1038L7093,1033L7091,1031L7086,1031L7086,1028L7091,1028L7091,1023L7086,1023L7084,1026L7084,1028L7078,1028L7078,1031L7076,1033L7073,1033L7069,1031L7063,1031L7060,1028L7058,1031L7054,1031L7054,1028L7052,1028L7052,1031L7050,1031L7047,1028L7047,1026L7043,1020L7041,1020L7041,1015L7043,1015L7043,1013L7037,1013L7032,1010L7024,1010L7021,1008L7019,1003L7019,997L7017,995L7015,995L7013,992L7013,990L7011,987L7008,987L7000,985L6989,985L6989,987L6978,987L6978,990L6974,992L6959,992L6956,990L6954,990L6952,992L6943,992L6943,985L6933,985L6933,982L6935,980L6935,977L6928,977L6926,975L6920,975L6920,977L6915,977L6915,982L6918,982L6915,985L6913,985L6913,987L6911,987L6905,990L6902,990L6902,987L6894,977L6889,969L6889,967L6868,939L6866,934L6859,926L6855,924L6850,916L6848,916L6848,913L6842,906L6840,906L6835,903L6835,901L6831,901L6820,893L6818,893L6807,885L6805,885L6805,883L6803,880L6811,880L6816,875L6814,870L6811,870L6811,872L6809,872L6805,875L6796,875L6798,878L6783,883L6775,883L6777,885L6775,885L6770,890L6766,893L6762,890L6757,890L6755,893L6755,895L6749,895L6749,898L6751,898L6749,903L6746,903L6744,901L6744,898L6727,898L6725,901L6720,903L6718,903L6720,901L6716,901L6716,895L6718,895L6718,893L6720,890L6729,890L6729,883L6725,883L6723,885L6725,888L6716,888L6710,885L6710,883L6707,883L6707,880L6705,883L6701,880L6697,880L6697,883L6699,883L6701,885L6701,888L6692,888L6692,885L6694,883L6694,880L6690,880L6690,878L6686,872L6681,872L6684,878L6686,878L6686,880L6684,880L6681,878L6673,878L6673,880L6671,883L6666,883L6666,880L6662,878L6658,883L6655,880L6655,878L6653,878L6653,875L6660,875L6660,872L6658,870L6658,865L6662,865L6660,862L6655,862L6651,857L6653,855L6653,850L6649,844L6649,842L6642,842L6642,844L6640,844L6638,842L6634,847L6632,847L6632,850L6629,847L6623,847L6623,844L6621,842L6610,842L6608,839L6603,842L6601,839L6595,839L6595,842L6590,842L6588,844L6588,847L6575,847L6575,850L6580,850L6580,852L6575,855L6569,855L6569,852L6567,855L6564,855L6562,857L6549,857L6549,860L6536,860L6536,862L6521,862L6521,865L6515,865L6515,862L6510,862L6508,865L6499,865L6495,867L6493,867L6493,875L6489,875L6486,872L6482,872L6480,875L6478,875L6474,872L6469,875L6458,875L6458,878L6456,880L6456,878L6445,878L6443,880L6435,880L6435,883L6419,883L6419,890L6417,890L6413,885L6404,885L6404,888L6400,888L6400,885L6389,885L6389,883L6385,883L6380,885L6378,888L6376,888L6376,890L6383,890L6383,893L6380,893L6376,898L6378,898L6380,901L6383,901L6380,906L6380,908L6387,908L6387,911L6396,911L6398,913L6406,913L6406,918L6402,921L6400,918L6378,918L6378,921L6376,921L6367,926L6367,931L6372,931L6372,934L6374,934L6374,936L6376,939L6374,941L6372,941L6372,944L6367,944L6367,946L6359,946L6354,952L6348,952L6348,954L6350,954L6350,957L6352,957L6352,954L6354,954L6361,957L6361,959L6359,959L6359,962L6363,964L6374,964L6374,967L6376,967L6378,969L6389,969L6391,975L6391,977L6389,982L6389,987L6387,990L6385,990L6383,992L6374,992L6370,995L6357,995L6354,992L6352,992L6352,987L6348,987L6348,990L6346,990L6346,992L6344,995L6344,997L6341,997L6341,1000L6333,1000L6333,997L6335,997L6333,995L6318,995L6318,992L6311,990L6309,987L6307,987L6309,985L6309,982L6307,982L6302,980L6298,980L6298,982L6296,982L6287,980L6285,980L6285,987L6274,987L6272,982L6270,982L6268,980L6268,982L6259,982L6259,980L6257,980L6257,985L6253,985L6253,982L6248,982L6248,985L6246,987L6242,987L6240,990L6240,992L6237,995L6233,995L6231,997L6229,997L6229,1000L6227,1000L6227,997L6224,997L6224,995L6216,995L6209,987L6201,982L6196,982L6196,987L6201,987L6201,990L6198,992L6201,995L6201,997L6198,997L6196,1000L6194,1000L6194,997L6192,997L6192,992L6194,992L6194,987L6190,987L6188,985L6185,985L6185,980L6179,977L6172,977L6170,975L6170,972L6166,967L6155,967L6153,969L6151,969L6149,967L6144,967L6144,969L6140,969L6140,967L6138,967L6138,964L6136,959L6129,959L6129,962L6123,962L6120,964L6120,967L6118,969L6116,969L6116,967L6112,967L6110,969L6105,967L6105,964L6110,964L6107,962L6094,962L6094,959L6090,959L6092,962L6092,964L6090,964L6088,962L6086,962L6086,969L6079,969L6079,975L6071,975L6071,977L6068,977L6066,980L6053,980L6053,982L6051,985L6053,985L6053,990L6045,990L6045,992L6042,992L6042,995L6038,997L6034,997L6034,1005L6036,1008L6036,1010L6040,1015L6038,1018L6036,1018L6034,1020L6027,1020L6027,1023L6025,1023L6021,1020L6019,1018L6019,1013L6016,1013L6012,1008L6003,1003L5999,1003L5999,1005L5997,1005L5995,1008L5995,1013L5997,1013L5995,1015L5993,1015L5993,1018L5988,1018L5988,1020L5984,1020L5982,1031L5982,1038L5984,1038L5984,1041L5988,1041L5988,1046L5986,1046L5986,1048L5984,1048L5982,1051L5980,1051L5975,1061L5973,1064L5973,1069L5978,1069L5982,1071L5986,1071L5991,1074L5991,1089L5993,1089L5997,1092L5997,1087L6001,1087L6003,1089L6019,1089L6021,1092L6021,1094L6023,1097L6025,1097L6032,1105L6034,1112L6042,1120L6042,1122L6040,1125L6036,1125L6034,1122L6027,1122L6027,1125L6029,1128L6029,1130L6032,1130L6034,1128L6034,1130L6038,1130L6038,1133L6040,1130L6047,1135L6063,1138L6066,1138L6066,1133L6066,1131L6073,1122L6077,1122L6077,1120L6079,1120L6081,1117L6092,1117L6092,1115L6097,1112L6099,1114L6105,1112L6116,1112L6116,1117L6123,1117L6127,1120L6131,1120L6138,1117L6138,1115L6142,1115L6142,1117L6146,1117L6153,1124L6153,1127L6155,1130L6155,1133L6152,1134L6152,1141L6150,1144L6150,1147L6150,1150L6148,1152L6149,1156L6146,1158L6146,1163L6142,1168L6140,1166L6138,1166L6127,1168L6123,1168L6120,1166L6118,1166L6116,1168L6110,1168L6105,1171L6105,1176L6103,1179L6099,1181L6097,1181L6097,1186L6101,1186L6101,1189L6105,1189L6105,1194L6101,1196L6097,1196L6097,1194L6094,1194L6094,1191L6077,1191L6077,1201L6081,1201L6081,1204L6090,1204L6092,1207L6094,1207L6094,1212L6097,1217L6099,1219L6101,1224L6103,1224L6105,1227L6105,1230L6107,1232L6107,1235L6105,1235L6105,1240L6116,1240L6118,1245L6120,1245L6120,1247L6123,1250L6140,1250L6140,1252L6142,1252L6144,1255L6146,1255L6146,1258L6144,1258L6142,1265L6142,1268L6140,1268L6140,1270L6136,1275L6138,1278L6138,1281L6140,1281L6140,1283L6138,1283L6138,1286L6140,1286L6153,1273L6162,1270L6166,1270L6166,1268L6179,1268L6181,1265L6183,1265L6185,1268L6188,1268L6190,1270L6201,1275L6203,1275L6207,1281L6207,1286L6209,1286L6211,1288L6211,1291L6214,1291L6214,1293L6216,1293L6216,1296L6218,1296L6218,1298L6220,1298L6220,1301L6237,1301L6237,1179L6244,1179L6248,1176L6255,1176L6257,1173L6259,1173L6274,1168L6281,1168L6285,1166L6292,1166L6307,1161L6308,1161L6310,1155L6311,1151L6314,1149L6314,1147L6326,1147L6328,1145L6330,1145L6331,1147L6327,1151L6328,1154L6331,1154L6334,1151L6334,1147L6336,1144L6335,1140L6334,1138L6333,1135L6334,1134L6342,1136L6342,1141L6344,1143L6346,1143L6348,1140L6360,1140L6364,1141L6367,1141L6368,1138L6368,1136L6365,1135L6362,1137L6360,1136L6359,1134L6351,1134L6346,1132L6346,1129L6348,1127L6350,1126L6352,1123L6356,1123L6357,1126L6360,1126L6362,1128L6365,1128L6366,1125L6365,1123L6362,1121L6372,1122L6370,1126L6369,1129L6371,1132L6380,1132L6380,1128L6383,1124L6387,1121L6391,1121L6393,1123L6391,1124L6387,1131L6379,1140L6375,1141L6373,1143L6376,1147L6371,1152L6371,1157L6372,1161L6379,1168L6383,1167L6383,1172L6384,1177L6395,1181L6386,1188L6380,1189L6376,1192L6375,1194L6376,1198L6375,1202L6374,1203L6385,1209L6398,1224L6402,1227L6404,1230L6413,1227L6426,1227L6437,1224L6445,1224L6452,1227L6471,1227L6482,1222L6484,1222L6486,1224L6493,1230L6493,1232L6499,1235L6502,1235L6504,1240L6508,1245L6508,1250L6517,1245L6517,1265L6515,1265L6515,1278L6530,1278L6530,1288L6534,1306L6556,1306L6560,1303L6569,1303L6569,1306L6573,1309L6573,1316L6571,1316L6575,1321L6577,1321L6582,1324L6588,1324L6588,1321L6586,1319L6586,1314L6588,1311L6590,1311L6590,1309L6593,1309L6595,1306L6599,1303L6599,1298L6603,1296L6608,1296L6614,1288L6623,1288L6627,1286L6632,1281L6634,1275L6640,1275L6640,1278L6642,1278L6642,1275L6645,1275L6647,1270L6651,1270L6649,1268L6651,1265L6651,1263L6655,1258L6658,1258L6658,1255L6660,1252L6673,1252L6673,1250L6679,1250L6681,1252L6690,1252L6694,1255L6699,1255L6701,1258L6703,1258L6703,1260L6718,1260L6718,1263L6723,1265L6723,1263L6720,1260L6720,1255L6723,1255L6723,1247L6727,1242L6733,1242L6733,1240L6742,1240L6742,1237L6744,1237L6746,1240L6753,1240L6753,1242L6755,1245L6762,1245L6770,1250L6781,1250L6781,1252L6783,1252L6785,1250L6785,1247L6816,1247L6816,1245L6820,1245L6822,1247L6846,1247L6846,1250L6866,1250L6876,1252L6881,1252L6881,1258L6885,1258L6885,1260L6887,1260L6887,1263L6902,1263L6907,1268L6907,1270L6911,1270L6911,1268L6909,1265L6907,1258L6909,1252L6911,1252L6911,1250L6920,1250L6920,1247L6915,1247L6913,1245L6920,1240L6922,1240L6922,1242L6924,1242L6926,1240L6924,1237L6924,1230L6920,1224L6920,1222L6918,1219L6918,1214L6913,1209L6913,1191L6918,1189L6915,1189L6911,1186L6902,1186L6900,1184L6905,1179L6915,1179L6918,1176L6928,1176L6931,1173L6937,1173L6937,1171L6948,1171L6948,1168L6952,1168L6952,1173L6956,1173L6959,1176L6959,1173L6965,1173L6965,1171L6967,1171L6967,1173L6972,1176L6974,1176L6974,1173L6976,1173L6976,1166L6974,1166L6974,1163L6967,1163L6967,1161L6969,1156L6972,1153L6972,1150L6974,1150L6974,1140L6976,1140L6976,1138L6978,1138L6978,1135L6980,1133L6980,1125L6982,1125L6982,1120L6985,1120L6985,1117L6987,1117L6987,1107L6993,1107L6993,1110L7000,1110L7002,1112L7006,1112L7006,1115L7034,1115L7034,1117L7034,1117L7034,1117z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5841,2522L5841,2520L5837,2520L5835,2522L5824,2522L5824,2520L5822,2520L5822,2517L5819,2517L5817,2512L5811,2512L5804,2517L5802,2517L5791,2522L5789,2525L5787,2530L5780,2538L5780,2540L5778,2540L5778,2538L5770,2538L5767,2535L5757,2535L5754,2533L5737,2533L5737,2530L5713,2512L5709,2507L5700,2507L5698,2505L5694,2507L5689,2507L5686,2507L5688,2538L5693,2550L5702,2557L5703,2564L5700,2572L5693,2567L5685,2550L5680,2544L5678,2517L5679,2509L5677,2502L5679,2501L5679,2500L5635,2500L5635,2502L5629,2510L5624,2512L5627,2512L5627,2515L5629,2517L5629,2522L5631,2525L5631,2528L5635,2530L5637,2530L5637,2545L5640,2548L5642,2548L5642,2556L5644,2558L5646,2558L5646,2561L5648,2561L5648,2566L5650,2568L5650,2576L5653,2579L5653,2599L5650,2599L5650,2604L5648,2604L5648,2612L5644,2612L5642,2614L5640,2614L5640,2619L5637,2622L5637,2624L5633,2630L5631,2630L5631,2632L5629,2632L5629,2640L5627,2642L5625,2653L5631,2658L5638,2659L5644,2656L5648,2658L5647,2661L5624,2665L5626,2673L5631,2678L5625,2681L5627,2683L5627,2686L5637,2691L5640,2693L5646,2696L5683,2721L5685,2724L5713,2742L5715,2742L5715,2744L5720,2747L5724,2747L5728,2752L5728,2760L5726,2762L5726,2767L5731,2767L5731,2770L5750,2788L5754,2790L5765,2800L5770,2803L5772,2803L5772,2800L5774,2803L5776,2803L5783,2785L5787,2780L5787,2775L5789,2772L5789,2770L5791,2765L5791,2762L5793,2760L5796,2760L5796,2752L5798,2749L5798,2747L5796,2747L5798,2742L5798,2739L5800,2737L5802,2737L5802,2734L5811,2734L5815,2729L5813,2726L5815,2724L5817,2724L5817,2726L5819,2726L5819,2724L5818,2721L5819,2718L5822,2720L5824,2716L5828,2716L5832,2711L5832,2709L5835,2706L5835,2704L5819,2681L5819,2558L5830,2548L5841,2525L5845,2522L5841,2522L5841,2522L5841,2522z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5975,1699L5975,1696L5978,1696L5978,1694L5984,1686L5984,1683L5986,1681L5988,1676L5988,1673L5991,1673L5991,1671L5993,1668L6019,1668L6021,1671L6022,1674L6025,1676L6027,1680L6019,1686L6016,1683L6012,1683L6006,1689L6006,1691L6014,1691L6016,1694L6016,1696L6019,1699L6019,1704L6025,1712L6025,1717L6023,1719L6006,1719L6003,1717L6003,1712L6001,1712L6001,1706L5999,1704L5982,1701L5975,1699L5975,1699L5975,1699z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6849,1261L6845,1262L6841,1264L6841,1271L6835,1273L6798,1265L6810,1262L6814,1258L6834,1256L6838,1254L6845,1254L6849,1252L6853,1254L6855,1259L6849,1261L6849,1261L6849,1261zM6642,1342L6642,1344L6640,1347L6638,1347L6638,1344L6640,1344L6640,1342L6636,1342L6634,1339L6627,1337L6621,1337L6616,1339L6612,1339L6612,1342L6610,1342L6612,1344L6612,1347L6610,1347L6608,1344L6606,1344L6606,1349L6603,1352L6606,1352L6606,1360L6612,1360L6612,1357L6621,1357L6621,1360L6625,1357L6645,1357L6645,1362L6655,1362L6655,1360L6658,1360L6662,1357L6664,1357L6666,1354L6666,1357L6668,1357L6668,1362L6673,1362L6673,1360L6675,1360L6675,1362L6673,1365L6675,1367L6677,1367L6679,1365L6684,1365L6684,1367L6688,1370L6690,1367L6690,1365L6699,1365L6699,1362L6701,1362L6703,1365L6714,1365L6723,1360L6727,1362L6731,1360L6733,1360L6736,1357L6733,1354L6733,1352L6731,1352L6731,1349L6736,1342L6738,1342L6742,1339L6749,1339L6753,1334L6757,1332L6759,1332L6759,1326L6764,1326L6764,1329L6770,1329L6772,1326L6775,1326L6777,1324L6779,1324L6779,1321L6781,1321L6781,1326L6783,1332L6783,1334L6790,1334L6792,1332L6794,1332L6798,1329L6801,1332L6805,1329L6807,1329L6807,1324L6809,1324L6809,1319L6814,1314L6814,1311L6816,1311L6818,1309L6822,1309L6822,1311L6827,1311L6829,1309L6831,1309L6831,1311L6840,1311L6842,1309L6853,1309L6853,1306L6855,1306L6855,1303L6857,1303L6857,1298L6859,1298L6861,1296L6866,1293L6868,1293L6874,1291L6876,1288L6879,1288L6894,1281L6898,1281L6898,1278L6909,1278L6909,1275L6911,1275L6909,1273L6909,1270L6907,1270L6907,1268L6902,1263L6887,1263L6887,1260L6885,1260L6885,1258L6881,1258L6881,1252L6876,1252L6866,1250L6846,1250L6846,1247L6822,1247L6820,1245L6816,1245L6816,1247L6785,1247L6785,1250L6783,1252L6781,1252L6781,1250L6770,1250L6762,1245L6755,1245L6753,1242L6753,1240L6746,1240L6744,1237L6742,1237L6742,1240L6733,1240L6733,1242L6727,1242L6723,1247L6723,1255L6720,1255L6720,1260L6723,1263L6723,1265L6718,1263L6718,1260L6703,1260L6703,1258L6701,1258L6699,1255L6694,1255L6690,1252L6681,1252L6679,1250L6673,1250L6673,1252L6660,1252L6658,1255L6658,1258L6655,1258L6651,1263L6651,1265L6649,1268L6651,1270L6653,1270L6653,1268L6658,1268L6658,1270L6660,1270L6660,1273L6653,1275L6649,1275L6649,1281L6645,1281L6640,1283L6640,1286L6638,1286L6638,1288L6634,1291L6629,1291L6629,1293L6636,1293L6636,1296L6638,1296L6638,1298L6640,1296L6645,1296L6647,1298L6647,1303L6653,1303L6658,1306L6658,1303L6660,1303L6664,1306L6666,1306L6666,1301L6671,1301L6671,1293L6673,1293L6677,1298L6677,1303L6686,1303L6686,1311L6690,1309L6692,1309L6694,1311L6697,1311L6697,1314L6710,1314L6712,1316L6712,1319L6707,1319L6705,1321L6703,1321L6699,1326L6697,1326L6692,1324L6690,1324L6694,1329L6692,1329L6692,1332L6690,1329L6684,1329L6681,1332L6681,1334L6677,1334L6673,1339L6668,1337L6666,1337L6666,1334L6653,1334L6653,1337L6649,1337L6645,1339L6642,1339L6642,1342L6642,1342L6642,1342z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7576,2066L7576,2063L7572,2058L7572,2056L7569,2053L7569,2051L7567,2051L7567,2053L7565,2053L7563,2051L7559,2051L7556,2048L7550,2048L7550,2051L7548,2051L7548,2053L7546,2058L7543,2058L7543,2063L7537,2063L7533,2069L7530,2066L7530,2063L7526,2063L7522,2061L7520,2058L7520,2056L7515,2056L7511,2061L7507,2061L7507,2063L7504,2066L7502,2066L7502,2069L7500,2071L7496,2074L7496,2076L7491,2079L7491,2081L7489,2081L7489,2079L7487,2079L7485,2076L7483,2076L7485,2076L7485,2069L7487,2066L7489,2066L7489,2061L7491,2061L7491,2051L7489,2051L7487,2048L7489,2046L7491,2046L7491,2043L7494,2043L7494,2030L7496,2030L7496,2028L7494,2028L7491,2018L7491,2015L7494,2015L7494,2010L7483,2010L7483,2012L7481,2012L7481,2015L7478,2012L7476,2012L7474,2015L7470,2010L7470,2002L7472,2002L7472,2000L7474,1997L7474,1992L7472,1992L7470,1989L7470,1987L7468,1984L7465,1984L7463,1987L7461,1987L7461,1984L7463,1982L7463,1974L7465,1972L7468,1972L7468,1969L7470,1969L7470,1972L7474,1972L7474,1969L7476,1969L7472,1969L7472,1967L7474,1964L7476,1964L7476,1961L7478,1959L7478,1954L7483,1954L7487,1951L7491,1946L7489,1946L7491,1946L7494,1951L7494,1959L7496,1959L7496,1956L7502,1956L7504,1959L7509,1959L7509,1956L7507,1954L7507,1949L7509,1944L7507,1941L7507,1938L7502,1926L7504,1923L7504,1916L7509,1916L7511,1918L7517,1918L7517,1921L7520,1921L7520,1923L7522,1926L7526,1928L7526,1931L7528,1933L7530,1933L7533,1936L7533,1944L7535,1944L7537,1941L7541,1941L7541,1946L7539,1946L7539,1959L7543,1964L7543,1967L7546,1967L7546,1969L7548,1969L7550,1972L7554,1972L7559,1974L7561,1974L7561,1977L7563,1974L7563,1972L7565,1969L7572,1967L7576,1967L7582,1974L7587,1974L7587,1977L7582,1982L7580,1982L7580,1984L7587,1984L7589,1987L7593,1989L7598,1995L7598,1997L7595,1997L7593,2000L7591,2000L7591,2002L7593,2002L7593,2005L7589,2005L7589,2007L7587,2007L7587,2010L7582,2010L7580,2007L7569,2007L7572,2010L7572,2018L7569,2015L7569,2018L7565,2020L7569,2023L7574,2023L7576,2025L7578,2025L7578,2028L7585,2030L7585,2033L7587,2033L7589,2035L7591,2035L7591,2038L7598,2038L7600,2040L7602,2040L7602,2043L7600,2046L7600,2048L7606,2056L7606,2053L7606,2058L7611,2058L7615,2063L7617,2069L7617,2074L7621,2074L7621,2076L7630,2086L7632,2086L7634,2089L7637,2094L7637,2097L7641,2097L7641,2107L7643,2112L7645,2114L7647,2114L7647,2109L7650,2109L7650,2112L7652,2117L7652,2120L7654,2117L7656,2117L7656,2122L7658,2122L7663,2127L7663,2125L7665,2125L7667,2127L7665,2127L7665,2130L7660,2132L7658,2132L7658,2135L7660,2140L7665,2145L7667,2145L7671,2150L7671,2158L7669,2158L7669,2160L7665,2160L7667,2160L7667,2163L7669,2165L7669,2171L7667,2171L7667,2173L7663,2173L7656,2181L7650,2183L7647,2183L7645,2181L7645,2178L7643,2178L7641,2176L7641,2173L7639,2173L7639,2176L7637,2176L7637,2178L7632,2178L7632,2181L7626,2181L7626,2186L7630,2191L7628,2196L7621,2196L7619,2193L7619,2191L7617,2191L7613,2188L7611,2188L7608,2191L7606,2191L7604,2188L7604,2183L7602,2183L7604,2183L7606,2181L7608,2181L7611,2178L7611,2176L7613,2176L7613,2173L7611,2168L7611,2165L7613,2165L7613,2158L7611,2158L7611,2155L7613,2148L7615,2148L7615,2137L7613,2137L7611,2135L7608,2135L7606,2130L7608,2130L7608,2127L7602,2127L7600,2125L7598,2125L7598,2120L7595,2120L7595,2117L7591,2112L7591,2097L7589,2097L7591,2094L7591,2081L7587,2076L7582,2074L7578,2069L7576,2069L7576,2066L7576,2066L7576,2066z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5464,806L5462,804L5460,799L5456,793L5458,793L5456,791L5451,791L5456,781L5456,778L5453,776L5451,776L5447,773L5445,773L5447,770L5440,770L5434,768L5423,768L5421,770L5417,770L5412,768L5410,768L5404,760L5397,760L5388,755L5388,753L5375,753L5369,755L5362,755L5360,758L5356,758L5356,765L5358,768L5358,776L5360,778L5358,778L5358,781L5354,783L5352,783L5347,786L5345,788L5336,788L5330,786L5328,786L5328,783L5326,781L5326,778L5323,776L5321,776L5319,773L5317,773L5313,770L5310,768L5308,768L5308,763L5306,763L5295,768L5284,768L5278,776L5278,778L5276,778L5276,786L5271,791L5269,791L5267,793L5267,796L5265,799L5265,801L5267,804L5267,806L5265,806L5265,804L5263,809L5263,814L5265,814L5265,816L5271,816L5271,814L5274,811L5280,811L5284,809L5289,809L5293,806L5310,806L5310,809L5315,809L5315,806L5319,806L5319,809L5321,809L5323,811L5323,809L5347,809L5349,811L5356,811L5356,809L5358,809L5358,811L5362,811L5365,809L5367,809L5373,806L5373,809L5375,809L5375,811L5378,814L5388,814L5393,816L5395,816L5399,819L5401,821L5406,821L5408,824L5410,824L5410,827L5412,829L5417,829L5417,832L5421,832L5421,829L5427,829L5427,827L5432,827L5436,824L5436,827L5449,827L5449,821L5451,821L5453,819L5456,819L5456,816L5458,816L5462,814L5464,814L5466,811L5464,806L5464,806L5464,806z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5674,1561L5670,1564L5668,1566L5668,1569L5666,1569L5663,1571L5661,1569L5657,1569L5659,1566L5659,1561L5661,1558L5661,1556L5663,1556L5663,1551L5666,1551L5666,1543L5670,1543L5670,1538L5672,1536L5670,1536L5670,1533L5672,1533L5672,1530L5679,1523L5681,1523L5681,1518L5694,1518L5694,1520L5692,1520L5692,1523L5694,1523L5696,1525L5696,1528L5698,1533L5696,1536L5692,1538L5692,1541L5689,1541L5689,1543L5692,1543L5692,1546L5687,1543L5683,1546L5681,1546L5681,1548L5679,1551L5681,1551L5683,1553L5679,1556L5679,1558L5676,1558L5676,1561L5674,1561L5674,1561L5674,1561z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5488,3632L5484,3634L5482,3634L5477,3637L5469,3637L5469,3639L5466,3639L5466,3642L5464,3650L5462,3650L5462,3655L5460,3652L5451,3652L5449,3647L5447,3647L5447,3645L5445,3642L5443,3642L5440,3639L5440,3634L5438,3632L5436,3632L5436,3627L5434,3624L5434,3622L5432,3622L5432,3619L5436,3619L5436,3616L5440,3616L5440,3614L5443,3609L5445,3609L5449,3604L5449,3601L5453,3596L5460,3596L5460,3594L5464,3588L5464,3591L5466,3591L5469,3588L5471,3588L5471,3586L5477,3586L5482,3591L5484,3591L5484,3594L5486,3596L5492,3601L5497,3601L5497,3604L5499,3609L5499,3614L5495,3614L5495,3619L5492,3619L5492,3622L5490,3624L5490,3627L5492,3629L5490,3629L5490,3632L5488,3632L5488,3632L5488,3632z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4445,2439L4448,2443L4455,2446L4464,2446L4464,2449L4466,2454L4466,2456L4468,2459L4468,2456L4472,2459L4472,2461L4474,2459L4474,2464L4477,2466L4477,2469L4474,2471L4474,2474L4477,2477L4472,2484L4472,2487L4470,2492L4470,2494L4472,2494L4472,2510L4466,2510L4466,2507L4464,2507L4464,2505L4459,2505L4457,2502L4453,2502L4451,2500L4444,2497L4442,2494L4440,2494L4435,2489L4431,2487L4427,2487L4416,2474L4416,2471L4414,2471L4412,2469L4409,2469L4403,2459L4401,2459L4396,2454L4394,2454L4394,2451L4392,2449L4383,2449L4381,2446L4381,2441L4379,2441L4379,2438L4377,2438L4366,2433L4366,2428L4364,2426L4364,2423L4366,2423L4366,2418L4368,2415L4370,2415L4370,2413L4373,2413L4373,2410L4377,2405L4379,2405L4383,2400L4383,2398L4386,2398L4388,2395L4388,2385L4394,2385L4394,2382L4396,2375L4399,2375L4399,2372L4405,2375L4407,2372L4407,2375L4409,2372L4412,2375L4414,2375L4418,2377L4418,2385L4420,2390L4420,2392L4418,2392L4420,2395L4420,2408L4422,2408L4429,2415L4431,2415L4433,2413L4433,2415L4438,2410L4438,2408L4440,2405L4440,2400L4444,2400L4444,2403L4446,2403L4446,2405L4448,2405L4448,2415L4451,2415L4451,2431L4448,2431L4448,2433L4446,2433L4446,2436L4444,2436L4445,2439L4445,2439L4445,2439z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4955,1658L4964,1648L4964,1645L4966,1645L4966,1630L4962,1625L4962,1622L4964,1620L4966,1615L4973,1615L4983,1602L4983,1599L4988,1599L4990,1597L4992,1597L4996,1594L4999,1594L5001,1592L5003,1592L5003,1587L5001,1587L5001,1566L5003,1569L5009,1569L5012,1571L5014,1571L5016,1574L5020,1576L5022,1576L5025,1579L5040,1579L5042,1576L5046,1576L5048,1574L5051,1574L5051,1576L5055,1576L5057,1579L5068,1579L5068,1581L5076,1581L5081,1587L5083,1587L5083,1589L5092,1589L5096,1592L5102,1592L5109,1599L5107,1604L5107,1607L5109,1607L5109,1610L5111,1615L5111,1617L5115,1622L5118,1622L5118,1625L5120,1625L5122,1627L5124,1627L5128,1630L5146,1630L5150,1632L5157,1632L5161,1635L5165,1635L5165,1638L5170,1638L5176,1640L5178,1643L5183,1643L5185,1645L5187,1645L5191,1650L5198,1655L5200,1658L5204,1658L5206,1661L5219,1661L5231,1654L5232,1650L5238,1646L5238,1643L5240,1643L5240,1638L5242,1638L5242,1631L5239,1627L5239,1625L5237,1625L5237,1620L5236,1619L5236,1604L5237,1602L5245,1592L5261,1581L5263,1581L5267,1579L5278,1579L5278,1576L5280,1576L5282,1574L5287,1574L5289,1576L5291,1576L5293,1574L5293,1576L5304,1576L5306,1579L5308,1579L5315,1581L5317,1581L5319,1584L5323,1584L5324,1590L5321,1594L5326,1594L5326,1597L5328,1597L5328,1599L5343,1599L5347,1602L5347,1604L5373,1604L5375,1607L5375,1610L5380,1615L5380,1617L5378,1617L5378,1620L5373,1625L5371,1625L5371,1632L5375,1643L5375,1650L5373,1653L5373,1655L5371,1655L5371,1658L5369,1661L5369,1663L5367,1663L5367,1666L5369,1666L5369,1668L5371,1671L5371,1676L5373,1683L5371,1686L5373,1686L5373,1689L5375,1694L5375,1997L5347,1997L5347,2012L5126,1885L5098,1900L5094,1900L5094,1903L5083,1908L5081,1908L5081,1910L5076,1913L5059,1895L5057,1895L5057,1893L5053,1893L5040,1887L5031,1887L5027,1885L5022,1885L5016,1882L5014,1882L5007,1870L5007,1867L5003,1857L5001,1857L4999,1854L4994,1854L4990,1852L4986,1852L4981,1849L4979,1849L4979,1847L4977,1849L4975,1849L4973,1852L4970,1852L4966,1847L4966,1842L4962,1842L4960,1839L4960,1821L4953,1814L4944,1798L4942,1798L4942,1793L4944,1793L4944,1791L4953,1785L4955,1785L4955,1780L4957,1778L4955,1778L4957,1775L4957,1773L4955,1773L4955,1768L4953,1768L4953,1765L4951,1760L4951,1757L4953,1755L4953,1750L4955,1750L4955,1747L4957,1742L4957,1740L4955,1737L4955,1729L4953,1727L4953,1722L4955,1717L4955,1696L4953,1689L4951,1686L4951,1683L4947,1678L4947,1676L4944,1671L4942,1671L4942,1668L4940,1668L4940,1666L4942,1666L4944,1663L4947,1663L4949,1661L4951,1661L4955,1658L4955,1658L4955,1658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5391,875L5388,875L5386,878L5382,878L5380,880L5371,880L5369,883L5371,883L5371,885L5369,888L5367,885L5365,885L5362,888L5358,888L5358,890L5356,888L5334,888L5334,880L5332,880L5330,878L5326,875L5323,875L5319,872L5313,872L5313,870L5310,870L5310,867L5313,867L5313,862L5315,860L5317,860L5317,857L5315,857L5313,855L5310,855L5306,850L5297,850L5297,852L5293,852L5284,850L5284,847L5280,847L5276,844L5271,844L5271,842L5269,842L5271,839L5271,837L5268,836L5269,832L5267,829L5267,827L5265,824L5265,821L5267,821L5267,819L5265,816L5271,816L5271,814L5274,811L5280,811L5284,809L5289,809L5293,806L5310,806L5310,809L5315,809L5315,806L5319,806L5319,809L5321,809L5323,811L5323,809L5347,809L5349,811L5356,811L5356,809L5358,809L5358,811L5362,811L5365,809L5367,809L5373,806L5373,809L5375,809L5375,811L5378,814L5388,814L5393,816L5395,816L5399,819L5401,821L5406,821L5408,824L5410,824L5410,827L5412,829L5417,829L5417,832L5421,832L5421,834L5419,839L5417,842L5425,842L5425,844L5421,847L5410,847L5410,852L5408,855L5399,855L5397,857L5397,860L5395,860L5395,865L5397,865L5397,867L5393,867L5391,872L5391,875L5391,875L5391,875z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4858,1031L4858,1033L4843,1033L4843,1031L4845,1031L4845,1026L4843,1023L4840,1023L4840,1018L4843,1018L4845,1013L4847,1010L4849,1010L4851,1013L4851,1015L4853,1018L4853,1020L4858,1020L4860,1023L4862,1023L4862,1026L4860,1026L4860,1028L4858,1031L4858,1031L4858,1031z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5908,3471L5906,3471L5904,3469L5904,3463L5902,3463L5902,3456L5900,3456L5900,3453L5897,3453L5897,3451L5895,3451L5895,3448L5893,3446L5893,3423L5895,3423L5897,3418L5895,3418L5895,3415L5893,3415L5893,3407L5891,3405L5889,3405L5889,3402L5887,3400L5884,3400L5884,3387L5882,3379L5882,3367L5884,3367L5884,3361L5887,3359L5889,3359L5889,3349L5891,3349L5891,3346L5897,3346L5897,3344L5900,3344L5900,3333L5902,3333L5902,3331L5906,3326L5913,3310L5913,3308L5915,3308L5917,3305L5917,3300L5915,3300L5913,3298L5915,3290L5917,3290L5917,3288L5915,3285L5913,3280L5910,3277L5910,3265L5908,3262L5908,3259L5906,3257L5906,3254L5904,3254L5904,3229L5902,3229L5902,3221L5904,3219L5906,3214L5908,3211L5908,3208L5910,3203L5915,3198L5917,3191L5915,3191L5915,3180L5928,3180L5930,3178L5932,3178L5936,3173L5939,3173L5939,3178L5943,3178L5943,3175L5941,3175L5941,3173L5947,3173L5947,3175L5949,3175L5949,3170L5952,3168L5956,3168L5960,3165L5965,3165L5965,3162L5969,3163L5971,3157L5975,3157L5982,3150L5984,3150L5984,3147L5986,3147L5986,3150L5987,3152L5988,3155L5986,3155L5986,3160L5988,3157L5993,3157L5993,3155L5988,3150L5988,3145L5991,3145L5995,3140L5995,3135L5997,3135L5997,3132L6001,3132L6001,3137L5999,3137L5999,3140L5997,3140L5997,3145L5999,3145L6003,3141L6005,3138L6004,3135L6006,3132L6010,3129L6008,3129L6006,3127L6006,3119L6008,3117L6012,3117L6012,3112L6014,3115L6016,3114L6016,3112L6014,3112L6012,3109L6014,3109L6014,3106L6012,3106L6012,3104L6010,3104L6010,3101L6012,3099L6012,3096L6014,3096L6016,3094L6019,3096L6019,3101L6021,3104L6023,3104L6023,3101L6025,3096L6023,3096L6023,3094L6027,3094L6027,3091L6034,3091L6036,3089L6036,3083L6038,3081L6038,3076L6040,3076L6040,3066L6038,3063L6037,3061L6034,3060L6034,3056L6037,3056L6040,3061L6040,3055L6042,3055L6045,3053L6047,3053L6047,3048L6045,3048L6049,3043L6051,3043L6051,3047L6050,3049L6050,3051L6054,3052L6055,3055L6058,3055L6058,3066L6060,3066L6064,3071L6066,3076L6068,3078L6068,3089L6071,3091L6071,3094L6073,3094L6073,3101L6075,3104L6073,3104L6073,3109L6075,3109L6075,3127L6077,3132L6077,3140L6081,3145L6081,3147L6084,3147L6084,3155L6079,3168L6077,3170L6077,3173L6073,3173L6071,3170L6071,3168L6068,3165L6066,3160L6066,3155L6062,3155L6062,3157L6060,3157L6060,3165L6062,3170L6062,3180L6066,3180L6066,3183L6064,3186L6064,3188L6066,3188L6066,3193L6064,3196L6062,3196L6062,3201L6064,3201L6060,3203L6058,3203L6058,3208L6053,3216L6053,3219L6055,3221L6055,3239L6053,3239L6048,3257L6047,3270L6045,3272L6045,3275L6042,3280L6042,3285L6040,3288L6040,3290L6038,3293L6038,3300L6036,3303L6036,3308L6034,3310L6034,3313L6032,3316L6032,3321L6029,3321L6029,3328L6027,3336L6027,3339L6019,3369L6016,3369L6016,3374L6014,3377L6012,3384L6012,3387L6010,3392L6010,3402L6008,3402L6008,3407L6003,3423L6003,3430L6001,3433L6001,3435L5999,3438L5999,3441L5995,3446L5995,3453L5993,3461L5991,3463L5991,3466L5988,3469L5980,3474L5978,3476L5975,3474L5967,3474L5967,3476L5965,3476L5958,3479L5956,3479L5952,3484L5949,3484L5949,3486L5943,3486L5936,3489L5934,3486L5928,3481L5926,3479L5917,3479L5908,3471L5908,3471L5908,3471z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5616,2997L5616,2999L5614,2999L5614,3002L5611,3004L5607,3004L5605,3007L5607,3012L5607,3015L5609,3015L5609,3017L5605,3022L5605,3030L5607,3030L5607,3045L5605,3045L5605,3048L5607,3053L5607,3055L5609,3055L5611,3053L5614,3055L5611,3055L5611,3058L5607,3061L5605,3063L5598,3063L5596,3068L5596,3071L5598,3073L5598,3078L5596,3078L5596,3089L5592,3094L5590,3094L5590,3096L5592,3096L5592,3099L5594,3104L5598,3106L5601,3109L5605,3109L5605,3114L5607,3114L5607,3117L5609,3119L5611,3124L5616,3127L5620,3127L5622,3124L5629,3124L5635,3122L5637,3124L5637,3127L5640,3127L5640,3129L5642,3135L5642,3152L5640,3152L5637,3157L5637,3163L5633,3168L5633,3173L5635,3173L5637,3175L5637,3183L5640,3183L5642,3186L5642,3188L5644,3188L5646,3191L5646,3193L5653,3201L5657,3201L5657,3206L5655,3206L5655,3211L5661,3211L5661,3196L5657,3196L5657,3193L5659,3191L5661,3191L5661,3180L5663,3178L5668,3178L5668,3180L5672,3178L5674,3178L5674,3175L5676,3175L5676,3142L5679,3140L5679,3129L5676,3129L5668,3117L5668,3114L5650,3094L5650,3098L5654,3102L5659,3111L5661,3120L5656,3114L5651,3111L5646,3115L5643,3114L5641,3109L5643,3106L5644,3100L5636,3094L5631,3064L5633,3057L5628,3057L5627,3049L5629,3041L5636,3033L5633,3025L5633,3012L5631,3004L5632,2987L5626,2983L5623,2973L5624,2969L5622,2969L5622,2966L5620,2964L5614,2964L5614,2966L5609,2966L5609,2964L5607,2961L5601,2961L5598,2959L5596,2959L5596,2961L5598,2966L5605,2966L5605,2969L5607,2971L5607,2981L5611,2984L5614,2987L5614,2992L5616,2994L5616,2997L5616,2997L5616,2997z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7554,2510L7554,2515L7552,2515L7552,2525L7550,2528L7550,2530L7552,2530L7552,2533L7554,2535L7554,2558L7556,2558L7556,2561L7559,2563L7561,2563L7563,2566L7565,2566L7565,2571L7567,2573L7569,2579L7569,2581L7572,2584L7572,2586L7574,2591L7576,2594L7576,2599L7578,2604L7578,2607L7572,2607L7572,2602L7569,2602L7566,2601L7563,2602L7559,2604L7559,2607L7556,2609L7554,2609L7554,2604L7550,2599L7548,2599L7537,2591L7533,2591L7533,2589L7528,2584L7526,2584L7526,2581L7522,2581L7520,2579L7517,2579L7517,2576L7515,2573L7511,2573L7509,2571L7509,2568L7507,2566L7504,2566L7502,2563L7500,2563L7498,2561L7498,2558L7494,2558L7494,2556L7496,2556L7496,2548L7494,2545L7494,2543L7491,2543L7491,2540L7487,2535L7487,2533L7483,2528L7481,2528L7481,2525L7478,2525L7478,2520L7483,2520L7478,2515L7476,2515L7474,2512L7474,2494L7472,2492L7470,2492L7470,2487L7468,2484L7470,2484L7470,2469L7468,2469L7468,2466L7470,2466L7470,2461L7468,2459L7468,2454L7465,2451L7465,2449L7463,2446L7461,2441L7463,2441L7463,2431L7465,2433L7468,2433L7468,2436L7470,2438L7476,2441L7478,2438L7483,2443L7483,2449L7485,2449L7485,2446L7489,2446L7489,2459L7487,2459L7485,2461L7489,2466L7491,2466L7498,2459L7504,2459L7504,2464L7507,2464L7507,2461L7509,2464L7513,2459L7513,2454L7515,2454L7517,2451L7517,2449L7524,2449L7524,2451L7526,2454L7528,2459L7530,2461L7533,2461L7533,2464L7537,2469L7541,2469L7541,2471L7543,2471L7543,2474L7546,2474L7546,2477L7548,2479L7548,2482L7550,2484L7552,2489L7552,2492L7554,2494L7554,2510M7946,2515L7942,2515L7942,2512L7938,2510L7907,2510L7905,2512L7903,2512L7903,2510L7899,2507L7899,2510L7894,2515L7894,2517L7892,2525L7892,2530L7890,2530L7890,2535L7892,2535L7892,2540L7890,2540L7890,2548L7888,2551L7888,2553L7881,2553L7879,2556L7879,2558L7877,2566L7881,2566L7881,2571L7877,2571L7873,2576L7870,2576L7870,2579L7868,2579L7868,2584L7870,2584L7870,2589L7866,2594L7866,2596L7864,2604L7860,2604L7860,2602L7858,2602L7855,2604L7845,2604L7845,2607L7842,2607L7842,2609L7840,2609L7838,2612L7836,2612L7836,2609L7832,2609L7829,2607L7823,2604L7819,2599L7806,2599L7797,2604L7797,2607L7797,2604L7797,2607L7795,2614L7790,2614L7788,2617L7788,2619L7784,2619L7784,2617L7782,2617L7780,2619L7775,2619L7773,2617L7762,2617L7760,2619L7758,2619L7758,2622L7756,2622L7754,2624L7751,2624L7751,2622L7749,2622L7745,2619L7741,2612L7738,2612L7736,2609L7734,2604L7732,2604L7730,2602L7728,2602L7728,2596L7725,2594L7725,2591L7723,2591L7723,2589L7725,2584L7728,2586L7726,2587L7726,2589L7728,2589L7728,2591L7730,2591L7734,2594L7734,2596L7743,2596L7745,2594L7745,2591L7749,2596L7749,2599L7754,2599L7756,2602L7756,2604L7758,2604L7758,2599L7760,2599L7762,2602L7764,2602L7764,2596L7767,2596L7769,2589L7769,2584L7771,2581L7769,2581L7769,2573L7771,2573L7771,2571L7773,2570L7770,2563L7770,2560L7772,2558L7775,2559L7775,2567L7776,2568L7776,2564L7777,2563L7777,2561L7782,2558L7784,2558L7786,2557L7791,2557L7795,2556L7797,2556L7800,2554L7806,2553L7810,2551L7816,2551L7819,2548L7821,2548L7821,2545L7827,2538L7827,2535L7834,2528L7834,2525L7836,2525L7840,2520L7845,2512L7847,2512L7847,2502L7853,2502L7853,2505L7855,2505L7855,2510L7860,2515L7864,2517L7864,2520L7866,2520L7870,2515L7870,2502L7868,2497L7870,2494L7873,2494L7874,2496L7875,2497L7875,2500L7877,2507L7879,2507L7883,2510L7886,2510L7883,2507L7883,2505L7881,2502L7883,2502L7883,2500L7881,2497L7881,2492L7879,2492L7881,2489L7883,2489L7883,2492L7886,2492L7886,2489L7888,2489L7888,2487L7890,2487L7890,2482L7888,2482L7886,2477L7886,2474L7890,2471L7899,2471L7899,2466L7901,2466L7901,2464L7903,2461L7905,2461L7905,2451L7920,2433L7920,2428L7922,2423L7925,2423L7925,2420L7927,2423L7927,2431L7925,2431L7925,2436L7927,2436L7929,2431L7931,2428L7931,2426L7933,2423L7938,2423L7938,2433L7940,2436L7944,2438L7948,2438L7951,2441L7951,2446L7948,2446L7948,2449L7946,2449L7948,2451L7948,2456L7946,2459L7953,2459L7957,2454L7959,2454L7959,2456L7961,2459L7961,2461L7955,2461L7955,2464L7957,2466L7961,2466L7964,2461L7970,2461L7970,2464L7972,2464L7974,2466L7977,2466L7977,2469L7981,2471L7983,2474L7992,2474L7994,2477L7994,2482L7992,2482L7992,2484L7987,2484L7987,2487L7981,2487L7981,2489L7974,2489L7970,2487L7968,2487L7964,2489L7961,2492L7964,2497L7966,2497L7970,2502L7970,2500L7973,2499L7974,2502L7974,2505L7977,2505L7977,2507L7974,2510L7961,2510L7959,2512L7955,2512L7951,2507L7948,2510L7947,2509L7947,2511L7950,2512L7953,2513L7955,2514L7956,2517L7956,2518L7954,2519L7952,2517L7952,2519L7950,2520L7949,2520L7947,2518L7946,2515L7946,2515L7946,2515zM7933,2413L7935,2410L7938,2410L7938,2415L7935,2418L7931,2418L7929,2413L7933,2413L7933,2413L7933,2413z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4769,2025L4769,2028L4773,2030L4784,2028L4791,2028L4795,2025L4799,2025L4799,2099L4797,2102L4797,2117L4795,2117L4795,2120L4791,2130L4791,2137L4788,2137L4788,2140L4784,2140L4780,2145L4780,2150L4773,2148L4765,2148L4765,2150L4717,2150L4708,2160L4702,2163L4697,2163L4695,2160L4693,2160L4693,2163L4691,2160L4687,2160L4687,2163L4689,2163L4674,2158L4671,2160L4669,2158L4661,2158L4652,2168L4650,2168L4645,2171L4643,2171L4635,2178L4626,2178L4626,2188L4622,2188L4619,2186L4615,2186L4613,2183L4609,2186L4609,2188L4602,2191L4602,2193L4600,2199L4600,2204L4602,2204L4600,2206L4596,2204L4591,2204L4591,2216L4585,2216L4585,2219L4587,2219L4585,2222L4583,2222L4576,2214L4572,2211L4565,2216L4561,2222L4563,2227L4565,2227L4565,2234L4557,2234L4557,2237L4559,2237L4559,2239L4561,2242L4559,2242L4559,2250L4557,2250L4552,2255L4552,2257L4550,2257L4544,2260L4537,2260L4535,2265L4535,2273L4537,2273L4537,2278L4535,2283L4535,2288L4529,2288L4529,2290L4531,2295L4531,2301L4529,2301L4529,2311L4526,2308L4524,2311L4518,2311L4518,2313L4516,2316L4516,2318L4511,2318L4509,2316L4509,2301L4503,2301L4503,2306L4505,2306L4500,2306L4498,2303L4496,2303L4496,2313L4487,2313L4487,2318L4485,2318L4483,2316L4479,2316L4474,2311L4466,2311L4466,2316L4464,2318L4459,2318L4461,2316L4459,2313L4455,2311L4453,2311L4451,2308L4451,2290L4444,2290L4442,2293L4440,2293L4440,2290L4446,2283L4448,2283L4448,2278L4444,2278L4444,2275L4440,2275L4440,2270L4435,2270L4438,2262L4438,2260L4433,2252L4431,2252L4431,2250L4433,2250L4433,2247L4431,2247L4427,2242L4420,2242L4420,2245L4422,2245L4422,2250L4420,2250L4416,2252L4414,2255L4414,2257L4407,2257L4405,2255L4401,2252L4394,2252L4394,2255L4390,2255L4388,2260L4386,2262L4383,2262L4383,2260L4381,2255L4379,2252L4375,2252L4373,2255L4373,2257L4370,2257L4368,2260L4366,2257L4366,2255L4364,2255L4362,2252L4364,2252L4364,2250L4366,2247L4366,2245L4364,2242L4364,2232L4366,2229L4366,2227L4364,2224L4362,2224L4362,2222L4360,2219L4362,2219L4362,2216L4360,2216L4360,2214L4355,2214L4353,2216L4351,2214L4351,2211L4347,2206L4347,2201L4349,2201L4349,2193L4347,2193L4349,2191L4349,2188L4347,2186L4347,2183L4343,2181L4341,2181L4341,2168L4339,2168L4343,2168L4347,2171L4351,2165L4353,2165L4353,2158L4353,2160L4353,2150L4355,2148L4355,2142L4362,2142L4362,2140L4364,2140L4368,2145L4368,2148L4370,2148L4377,2153L4377,2155L4379,2158L4379,2155L4381,2150L4383,2150L4383,2148L4414,2148L4420,2145L4418,2142L4422,2137L4422,2145L4529,2145L4529,2142L4531,2132L4531,2125L4533,2125L4533,2117L4526,2112L4524,2104L4520,2040L4518,2038L4518,2018L4516,2007L4516,2002L4513,1992L4513,1972L4511,1964L4511,1951L4509,1946L4507,1910L4505,1903L4503,1870L4500,1862L4500,1847L4498,1834L4548,1834L4680,1938L4682,1938L4684,1941L4713,1961L4715,1961L4715,1969L4713,1969L4713,1974L4719,1974L4721,1977L4726,1977L4726,1979L4728,1979L4728,1984L4730,1987L4732,1987L4734,1989L4741,1989L4741,1987L4743,1987L4743,1989L4745,1989L4747,1992L4747,1995L4749,1995L4752,1997L4762,1997L4765,2000L4771,2002L4771,2015L4773,2018L4771,2018L4769,2023L4769,2025L4769,2025L4769,2025z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4440,1760L4440,1747L4316,1747L4314,1752L4314,1755L4312,1757L4312,1760L4310,1760L4310,1763L4309,1764L4309,1767L4307,1773L4305,1773L4305,1775L4300,1780L4294,1786L4289,1786L4289,1788L4285,1788L4285,1791L4283,1791L4283,1793L4281,1793L4279,1796L4279,1801L4276,1803L4276,1806L4274,1806L4274,1811L4272,1814L4270,1819L4270,1824L4268,1824L4268,1844L4266,1844L4263,1849L4259,1849L4259,1852L4257,1852L4257,1854L4256,1854L4256,1857L4251,1859L4249,1862L4249,1865L4245,1867L4243,1870L4243,1877L4240,1877L4238,1880L4238,1885L4236,1885L4236,1888L4234,1888L4234,1890L4232,1898L4232,1903L4230,1903L4227,1905L4227,1913L4225,1913L4225,1916L4223,1918L4223,1921L4221,1921L4221,1923L4217,1923L4211,1928L4211,1933L4209,1939L4209,1946L4207,1949L4207,1961L4205,1972L4208,1972L4209,1961L4211,1956L4213,1959L4213,1962L4218,1977L4220,1977L4220,1979L4222,1979L4222,1977L4221,1974L4222,1974L4224,1974L4224,1977L4227,1979L4227,1984L4231,1990L4231,1997L4229,2002L4228,2007L4225,2004L4223,2008L4224,2013L4226,2012L4228,2014L4222,2020L4222,2023L4227,2023L4229,2025L4229,2028L4231,2030L4231,2033L4232,2036L4232,2041L4233,2043L4233,2046L4235,2048L4235,2076L4233,2076L4233,2079L4234,2083L4232,2086L4232,2088L4230,2093L4228,2096L4225,2101L4225,2106L4223,2106L4223,2116L4221,2116L4222,2127L4222,2125L4224,2122L4224,2120L4227,2120L4227,2112L4229,2112L4231,2109L4233,2109L4233,2112L4248,2112L4250,2109L4261,2109L4263,2107L4263,2104L4266,2107L4283,2107L4292,2117L4292,2120L4296,2125L4300,2122L4300,2125L4305,2125L4309,2127L4311,2130L4313,2137L4313,2140L4315,2143L4315,2145L4320,2145L4322,2148L4322,2150L4324,2150L4324,2153L4328,2158L4330,2158L4333,2160L4335,2160L4335,2163L4339,2168L4343,2168L4347,2171L4351,2165L4353,2165L4353,2158L4353,2160L4353,2150L4355,2148L4355,2142L4362,2142L4362,2140L4364,2140L4368,2145L4368,2148L4370,2148L4377,2153L4377,2155L4379,2158L4379,2155L4381,2150L4383,2150L4383,2148L4414,2148L4420,2145L4418,2142L4422,2137L4422,2145L4529,2145L4529,2142L4531,2132L4531,2125L4533,2125L4533,2117L4526,2112L4524,2104L4520,2040L4518,2038L4518,2018L4516,2007L4516,2002L4513,1992L4513,1972L4511,1964L4511,1951L4509,1946L4507,1910L4505,1903L4503,1870L4500,1862L4500,1847L4498,1834L4548,1834L4546,1831L4544,1831L4520,1814L4518,1814L4496,1796L4494,1796L4481,1785L4479,1785L4455,1768L4453,1768L4442,1760L4440,1760z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1563,1712L1563,1696L1557,1696L1557,1699L1555,1706L1557,1709L1561,1709L1562,1711L1563,1712L1563,1712L1563,1712zM1537,1701L1533,1696L1531,1696L1529,1691L1527,1689L1527,1683L1529,1683L1529,1686L1531,1686L1533,1689L1533,1694L1535,1694L1537,1696L1537,1701L1537,1701L1537,1701zM1758,1645L1763,1645L1763,1648L1765,1650L1767,1650L1769,1653L1769,1658L1774,1663L1774,1673L1778,1681L1780,1683L1782,1683L1784,1686L1786,1686L1786,1689L1789,1689L1793,1694L1795,1694L1806,1699L1808,1701L1810,1701L1812,1704L1817,1704L1819,1699L1825,1691L1825,1689L1830,1678L1834,1678L1838,1676L1841,1673L1841,1676L1856,1676L1856,1678L1864,1678L1867,1681L1867,1683L1871,1686L1873,1686L1877,1691L1882,1694L1886,1699L1886,1706L1888,1706L1888,1709L1890,1709L1890,1714L1893,1714L1893,1717L1895,1719L1895,1722L1897,1727L1899,1729L1901,1729L1901,1732L1903,1732L1906,1737L1908,1740L1908,1742L1910,1742L1910,1745L1912,1745L1912,1747L1916,1747L1916,1750L1919,1750L1919,1768L1923,1773L1925,1773L1925,1775L1927,1778L1927,1783L1929,1788L1934,1788L1938,1791L1940,1791L1942,1793L1947,1793L1951,1798L1953,1798L1958,1801L1960,1801L1960,1798L1964,1798L1968,1801L1971,1801L1975,1806L1977,1806L1977,1803L1984,1803L1984,1808L1981,1811L1979,1816L1979,1821L1977,1821L1977,1824L1975,1826L1975,1829L1973,1832L1971,1828L1971,1826L1969,1826L1967,1829L1968,1833L1970,1835L1968,1838L1968,1865L1966,1867L1966,1905L1964,1905L1964,1910L1962,1910L1962,1913L1964,1913L1964,1921L1966,1921L1966,1934L1970,1938L1968,1940L1969,1945L1972,1949L1973,1947L1972,1943L1972,1940L1976,1941L1977,1946L1976,1951L1974,1953L1974,1957L1977,1959L1977,1961L1979,1967L1981,1969L1981,1974L1984,1974L1984,1977L1992,1989L1994,1989L1997,1992L1999,1997L2003,2002L2003,2005L2005,2007L2005,2012L2007,2018L2007,2020L2010,2020L2010,2023L2012,2023L2012,2028L2014,2028L2016,2030L2016,2033L2018,2033L2018,2035L2020,2038L2029,2040L2038,2040L2042,2043L2042,2046L2049,2046L2051,2048L2051,2051L2055,2056L2055,2058L2064,2058L2064,2056L2070,2056L2073,2052L2079,2049L2094,2048L2094,2051L2096,2051L2101,2048L2103,2048L2103,2046L2105,2046L2105,2043L2107,2046L2109,2043L2114,2040L2121,2041L2124,2039L2127,2040L2128,2043L2128,2046L2131,2048L2131,2051L2133,2048L2142,2048L2142,2046L2146,2043L2148,2040L2146,2037L2145,2037L2141,2036L2139,2034L2146,2030L2150,2030L2153,2028L2157,2025L2161,2020L2161,2015L2163,2010L2161,2007L2166,2002L2168,2002L2168,1979L2170,1974L2170,1969L2172,1967L2172,1964L2174,1961L2185,1956L2187,1956L2189,1954L2207,1954L2213,1951L2218,1951L2218,1949L2220,1949L2220,1946L2231,1946L2233,1944L2235,1944L2237,1946L2248,1949L2250,1949L2263,1944L2263,1946L2265,1946L2267,1951L2269,1951L2269,1959L2272,1959L2269,1964L2269,1967L2267,1972L2261,1979L2259,1979L2259,1982L2256,1982L2256,1984L2254,1989L2252,1989L2252,2002L2252,2000L2252,2002L2250,2002L2250,2005L2250,2002L2250,2005L2248,2005L2248,2007L2243,2007L2243,2010L2246,2010L2246,2012L2248,2012L2250,2010L2254,2010L2252,2012L2252,2015L2250,2018L2250,2015L2248,2018L2246,2018L2246,2023L2248,2023L2248,2020L2252,2020L2250,2025L2248,2028L2248,2038L2246,2038L2246,2040L2243,2043L2243,2051L2241,2051L2239,2048L2237,2048L2235,2046L2237,2040L2237,2035L2235,2035L2231,2040L2233,2040L2231,2046L2228,2046L2228,2048L2226,2048L2226,2046L2224,2046L2224,2048L2222,2053L2220,2056L2218,2056L2218,2061L2213,2066L2211,2063L2205,2063L2207,2069L2155,2069L2155,2086L2142,2086L2142,2089L2144,2089L2148,2094L2153,2097L2157,2102L2159,2102L2163,2107L2163,2112L2168,2112L2172,2117L2170,2117L2170,2125L2133,2125L2131,2130L2131,2132L2120,2153L2124,2158L2124,2160L2122,2160L2122,2165L2120,2165L2122,2168L2122,2171L2120,2173L2120,2176L2111,2165L2109,2165L2109,2163L2101,2153L2098,2153L2096,2150L2096,2148L2094,2148L2094,2145L2092,2145L2083,2135L2081,2135L2072,2125L2051,2122L2051,2120L2055,2120L2055,2117L2051,2117L2049,2120L2049,2114L2044,2114L2042,2117L2042,2120L2046,2120L2046,2122L2038,2122L2033,2127L2031,2127L2031,2130L2027,2130L2016,2135L2014,2137L2007,2137L2007,2140L2005,2140L2005,2137L2003,2137L2001,2140L1999,2140L1992,2137L1986,2132L1984,2132L1981,2130L1964,2130L1964,2127L1962,2125L1958,2122L1955,2122L1953,2120L1947,2120L1945,2117L1942,2117L1942,2114L1940,2114L1940,2112L1938,2109L1932,2109L1925,2107L1916,2107L1908,2102L1908,2099L1906,2099L1897,2097L1897,2094L1893,2094L1890,2091L1886,2091L1882,2089L1880,2089L1875,2086L1875,2084L1873,2084L1869,2081L1867,2079L1864,2079L1860,2074L1858,2074L1858,2071L1851,2063L1845,2063L1845,2066L1843,2066L1843,2063L1836,2063L1832,2061L1825,2061L1825,2058L1821,2058L1819,2056L1817,2056L1810,2053L1808,2053L1808,2051L1806,2051L1806,2048L1804,2046L1802,2040L1799,2040L1793,2033L1789,2033L1786,2030L1784,2030L1784,2028L1782,2025L1774,2025L1771,2023L1767,2020L1765,2020L1765,2018L1763,2015L1763,2010L1758,2010L1758,2007L1756,2007L1756,2005L1754,2002L1754,2000L1752,2000L1752,1997L1750,1995L1750,1989L1746,1985L1748,1982L1752,1982L1756,1979L1758,1979L1758,1974L1756,1972L1750,1972L1756,1964L1758,1964L1758,1954L1761,1951L1752,1941L1752,1938L1748,1933L1748,1921L1745,1918L1745,1913L1743,1910L1739,1908L1739,1905L1737,1905L1735,1903L1735,1900L1730,1898L1728,1893L1724,1887L1724,1885L1715,1880L1715,1875L1713,1875L1713,1870L1711,1870L1711,1867L1709,1867L1700,1859L1698,1859L1696,1857L1696,1854L1691,1854L1687,1847L1683,1847L1683,1844L1680,1842L1683,1842L1680,1838L1680,1833L1680,1831L1678,1831L1678,1829L1672,1829L1672,1826L1670,1826L1670,1824L1665,1824L1661,1821L1661,1816L1657,1816L1657,1819L1652,1819L1650,1816L1650,1814L1646,1808L1644,1808L1641,1806L1641,1801L1644,1801L1644,1798L1648,1793L1648,1791L1650,1788L1646,1785L1641,1778L1639,1775L1635,1780L1635,1778L1631,1778L1631,1770L1628,1770L1628,1765L1620,1765L1613,1757L1611,1757L1609,1750L1609,1745L1613,1740L1600,1740L1598,1737L1596,1737L1592,1734L1592,1732L1589,1732L1589,1729L1583,1722L1579,1722L1579,1717L1576,1717L1576,1714L1574,1714L1572,1712L1572,1709L1568,1704L1566,1704L1566,1694L1563,1691L1561,1691L1559,1689L1559,1683L1557,1683L1555,1681L1555,1678L1550,1673L1550,1663L1546,1658L1546,1655L1544,1650L1542,1650L1542,1648L1540,1645L1540,1643L1542,1635L1542,1632L1540,1630L1533,1630L1531,1627L1527,1627L1527,1622L1524,1622L1524,1620L1520,1620L1516,1617L1516,1622L1511,1622L1509,1620L1503,1617L1503,1615L1501,1615L1498,1612L1496,1612L1494,1615L1494,1617L1492,1617L1492,1625L1490,1632L1492,1632L1492,1638L1494,1638L1494,1640L1496,1640L1496,1653L1497,1654L1497,1661L1496,1663L1498,1666L1501,1671L1507,1678L1509,1678L1514,1681L1514,1683L1518,1686L1518,1689L1520,1689L1529,1699L1529,1706L1531,1706L1531,1704L1533,1704L1533,1706L1535,1709L1537,1709L1540,1714L1540,1719L1542,1722L1546,1722L1546,1727L1548,1727L1548,1734L1550,1734L1550,1742L1555,1747L1557,1747L1561,1750L1561,1752L1563,1760L1572,1770L1572,1773L1579,1773L1579,1775L1581,1775L1581,1778L1583,1778L1583,1783L1585,1783L1587,1791L1587,1796L1589,1796L1589,1808L1594,1814L1594,1816L1598,1816L1598,1821L1600,1826L1600,1829L1602,1831L1605,1831L1605,1834L1607,1836L1607,1839L1609,1839L1607,1842L1607,1854L1609,1854L1609,1857L1613,1859L1618,1857L1618,1854L1620,1854L1622,1857L1626,1859L1626,1865L1631,1865L1633,1867L1631,1867L1631,1870L1633,1870L1633,1872L1635,1872L1635,1877L1637,1880L1641,1880L1644,1885L1641,1893L1641,1895L1637,1895L1637,1898L1635,1898L1635,1900L1631,1903L1626,1903L1624,1900L1624,1895L1622,1893L1622,1887L1618,1882L1618,1880L1615,1880L1615,1877L1611,1877L1605,1870L1598,1865L1598,1862L1596,1862L1585,1857L1585,1854L1583,1852L1581,1852L1581,1849L1576,1849L1576,1847L1572,1842L1568,1842L1566,1839L1562,1841L1564,1836L1566,1834L1568,1829L1568,1826L1570,1824L1570,1814L1568,1814L1568,1816L1568,1808L1566,1803L1566,1801L1563,1801L1561,1798L1561,1793L1557,1793L1548,1788L1546,1785L1546,1783L1544,1783L1542,1780L1540,1780L1535,1775L1531,1775L1531,1773L1529,1775L1529,1778L1527,1778L1522,1775L1522,1770L1520,1770L1518,1768L1516,1768L1516,1770L1514,1768L1514,1765L1511,1765L1511,1763L1507,1763L1503,1760L1503,1757L1498,1752L1496,1752L1490,1745L1488,1745L1488,1742L1485,1742L1488,1740L1490,1742L1505,1742L1507,1740L1507,1737L1509,1734L1511,1734L1511,1724L1514,1722L1514,1717L1511,1714L1509,1714L1505,1709L1505,1706L1503,1706L1490,1691L1488,1691L1485,1689L1481,1689L1481,1686L1479,1686L1472,1683L1468,1678L1468,1673L1466,1666L1466,1661L1464,1661L1464,1658L1459,1653L1459,1645L1457,1645L1453,1640L1453,1638L1451,1632L1451,1630L1444,1622L1442,1622L1442,1620L1440,1620L1442,1617L1442,1610L1440,1607L1436,1604L1436,1597L1431,1597L1431,1594L1429,1594L1429,1587L1446,1587L1453,1584L1477,1584L1481,1581L1494,1581L1494,1587L1492,1589L1494,1589L1514,1597L1520,1597L1524,1599L1533,1602L1542,1607L1546,1607L1598,1627L1676,1627L1676,1612L1726,1612L1728,1615L1728,1617L1730,1617L1730,1620L1732,1622L1735,1622L1735,1625L1739,1625L1741,1627L1741,1630L1743,1630L1743,1632L1745,1632L1748,1635L1750,1635L1750,1638L1754,1643L1758,1645L1758,1645L1758,1645z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5462,1161L5464,1161L5464,1156L5462,1150L5462,1140L5464,1135L5466,1133L5466,1125L5464,1125L5464,1122L5462,1120L5462,1115L5460,1115L5458,1112L5456,1112L5453,1110L5453,1107L5451,1105L5449,1105L5440,1094L5440,1092L5438,1092L5438,1089L5436,1087L5436,1082L5432,1077L5430,1077L5425,1074L5421,1074L5421,1071L5425,1071L5430,1069L5438,1069L5445,1066L5453,1066L5456,1069L5456,1071L5462,1071L5462,1074L5469,1074L5469,1077L5482,1077L5482,1079L5486,1084L5488,1084L5488,1082L5490,1082L5492,1084L5495,1089L5492,1094L5490,1094L5490,1097L5492,1099L5495,1099L5497,1102L5497,1105L5501,1105L5501,1102L5503,1102L5503,1117L5508,1117L5510,1120L5514,1120L5514,1128L5512,1130L5514,1133L5518,1133L5518,1135L5510,1135L5508,1133L5505,1135L5503,1135L5501,1133L5501,1130L5499,1130L5497,1133L5495,1133L5495,1135L5492,1135L5492,1130L5488,1130L5486,1133L5484,1133L5486,1138L5488,1140L5486,1148L5479,1148L5479,1153L5477,1153L5477,1156L5473,1156L5473,1163L5464,1163L5464,1166L5464,1163L5462,1161L5462,1161L5462,1161z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7329,1204L7329,1212L7336,1212L7338,1217L7338,1222L7340,1224L7340,1227L7342,1227L7342,1230L7344,1232L7344,1237L7346,1237L7351,1242L7357,1247L7357,1255L7359,1255L7364,1252L7390,1252L7392,1255L7405,1255L7409,1258L7439,1258L7444,1260L7465,1258L7468,1255L7483,1255L7485,1258L7491,1258L7498,1260L7509,1260L7513,1268L7515,1268L7515,1270L7526,1273L7533,1273L7552,1281L7554,1281L7565,1286L7572,1283L7585,1283L7585,1288L7589,1291L7593,1288L7595,1288L7598,1291L7604,1286L7606,1286L7611,1283L7613,1281L7647,1268L7654,1268L7667,1263L7669,1265L7678,1265L7686,1263L7695,1263L7699,1265L7704,1265L7708,1263L7723,1263L7728,1260L7730,1260L7734,1258L7738,1258L7741,1255L7747,1252L7749,1252L7749,1250L7751,1250L7751,1247L7754,1247L7756,1245L7756,1242L7760,1240L7764,1235L7767,1235L7771,1232L7773,1232L7782,1227L7784,1224L7788,1224L7790,1222L7790,1217L7786,1212L7782,1212L7780,1207L7775,1201L7775,1199L7780,1194L7780,1191L7782,1186L7786,1181L7786,1179L7788,1179L7790,1176L7795,1176L7795,1179L7801,1179L7803,1176L7808,1181L7823,1186L7834,1186L7834,1189L7838,1189L7845,1181L7851,1181L7853,1179L7858,1176L7860,1173L7862,1168L7868,1166L7870,1166L7873,1168L7875,1168L7879,1166L7894,1166L7901,1158L7907,1158L7907,1156L7909,1156L7909,1148L7912,1148L7912,1145L7914,1145L7914,1143L7916,1143L7918,1140L7918,1138L7920,1135L7942,1135L7942,1128L7946,1128L7948,1130L7955,1130L7955,1128L7957,1128L7966,1122L7970,1122L7970,1125L7981,1125L7981,1122L7987,1122L7987,1125L7990,1125L7994,1128L7998,1128L7998,1125L8000,1128L8007,1128L8009,1125L8011,1125L8011,1117L8009,1117L8009,1115L8007,1115L8007,1110L8005,1107L8003,1107L7998,1102L7996,1102L7996,1099L7992,1097L7990,1097L7990,1092L7985,1092L7981,1089L7979,1089L7972,1082L7953,1082L7948,1084L7948,1087L7942,1092L7940,1092L7933,1089L7933,1087L7927,1084L7925,1087L7905,1087L7905,1089L7903,1089L7903,1092L7901,1092L7892,1084L7890,1077L7892,1077L7899,1074L7899,1069L7896,1064L7901,1061L7901,1059L7905,1056L7905,1054L7907,1051L7912,1038L7914,1036L7916,1031L7922,1023L7922,1020L7920,1018L7912,1018L7912,1015L7905,1015L7899,1018L7899,1020L7886,1020L7881,1018L7881,1015L7877,1013L7875,1010L7873,1010L7870,1008L7851,1008L7847,1010L7847,1013L7840,1013L7840,1015L7836,1015L7834,1018L7832,1018L7829,1020L7825,1023L7823,1028L7823,1031L7814,1033L7810,1033L7808,1031L7806,1031L7803,1033L7797,1033L7795,1036L7780,1036L7780,1038L7767,1038L7767,1041L7764,1041L7764,1043L7749,1043L7745,1041L7745,1043L7738,1043L7730,1041L7721,1041L7719,1038L7695,1038L7691,1036L7689,1033L7684,1031L7682,1031L7682,1028L7680,1028L7680,1018L7665,1018L7660,1015L7658,1015L7656,1013L7654,1013L7654,1010L7647,1008L7647,1005L7632,1005L7632,1008L7628,1005L7626,1003L7613,1003L7608,1000L7604,1000L7604,1003L7595,1003L7589,1005L7580,1005L7580,1008L7578,1008L7576,1010L7572,1010L7572,1013L7569,1010L7563,1010L7563,1013L7559,1013L7559,1010L7550,1010L7550,1008L7548,1008L7548,1005L7543,1005L7541,1008L7541,1005L7537,1005L7535,1003L7530,1003L7528,1000L7526,1000L7524,997L7522,997L7522,995L7524,995L7524,992L7522,990L7520,990L7520,987L7522,987L7522,985L7520,982L7520,980L7517,977L7517,975L7520,975L7520,972L7515,972L7513,969L7507,969L7502,967L7500,967L7498,969L7496,969L7496,967L7489,967L7487,964L7483,964L7481,962L7478,962L7474,959L7455,959L7455,957L7452,957L7452,954L7446,954L7435,949L7431,949L7429,946L7426,946L7426,949L7424,952L7424,954L7420,959L7411,959L7411,962L7409,964L7409,969L7407,969L7407,967L7405,967L7405,969L7400,975L7403,975L7403,977L7400,977L7400,982L7398,982L7398,985L7400,985L7400,987L7403,987L7403,992L7407,997L7411,997L7411,1008L7407,1013L7407,1015L7405,1015L7400,1018L7394,1018L7392,1020L7392,1023L7388,1023L7385,1026L7381,1026L7381,1023L7379,1023L7370,1018L7366,1018L7366,1020L7364,1020L7364,1018L7362,1018L7359,1020L7357,1020L7357,1018L7353,1018L7351,1015L7349,1015L7349,1018L7344,1018L7344,1015L7342,1015L7340,1018L7336,1020L7333,1020L7331,1018L7320,1018L7320,1015L7310,1015L7307,1013L7307,1010L7303,1010L7303,1008L7301,1008L7301,997L7279,997L7277,995L7275,995L7275,997L7264,997L7264,990L7258,990L7258,992L7255,995L7253,995L7249,990L7245,990L7245,992L7242,992L7240,995L7238,995L7238,992L7229,992L7229,995L7227,995L7225,997L7221,1000L7219,1000L7212,1003L7208,1003L7206,1005L7201,1008L7199,1010L7197,1010L7197,1008L7195,1008L7195,1010L7188,1010L7188,1013L7182,1013L7182,1018L7171,1018L7171,1023L7173,1023L7173,1026L7169,1026L7169,1028L7164,1028L7164,1031L7162,1031L7162,1028L7158,1028L7158,1031L7160,1031L7158,1031L7158,1033L7151,1033L7151,1031L7149,1031L7149,1036L7145,1033L7130,1033L7130,1041L7125,1043L7121,1043L7121,1046L7123,1048L7121,1051L7119,1051L7119,1054L7121,1056L7125,1056L7128,1059L7125,1061L7123,1061L7123,1064L7125,1064L7130,1066L7134,1066L7138,1069L7141,1069L7141,1071L7143,1074L7143,1077L7149,1079L7154,1079L7154,1082L7162,1082L7164,1079L7169,1079L7169,1082L7171,1084L7175,1087L7180,1087L7180,1084L7182,1084L7184,1087L7184,1092L7188,1092L7193,1097L7195,1105L7195,1107L7197,1107L7201,1112L7201,1115L7206,1115L7206,1117L7208,1117L7210,1122L7210,1130L7208,1135L7206,1135L7206,1138L7208,1140L7208,1143L7210,1143L7210,1148L7208,1148L7206,1150L7203,1150L7199,1161L7199,1163L7201,1163L7201,1166L7208,1173L7214,1173L7214,1176L7223,1176L7223,1179L7232,1179L7236,1176L7238,1176L7245,1179L7268,1179L7271,1181L7281,1181L7284,1184L7286,1184L7288,1186L7290,1186L7299,1191L7303,1196L7307,1196L7307,1199L7312,1199L7312,1201L7320,1204L7329,1204L7329,1204L7329,1204z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4600,1495L4597,1490L4597,1493L4592,1498L4589,1500L4581,1500L4581,1497L4576,1500L4572,1500L4572,1497L4570,1500L4563,1500L4561,1502L4559,1502L4557,1500L4548,1500L4546,1497L4544,1497L4544,1495L4537,1490L4533,1485L4533,1479L4531,1477L4529,1477L4529,1479L4522,1479L4520,1482L4516,1482L4516,1487L4513,1492L4511,1495L4509,1500L4509,1505L4507,1507L4507,1513L4505,1513L4505,1515L4498,1528L4496,1528L4496,1530L4494,1533L4492,1538L4487,1543L4485,1543L4472,1551L4470,1553L4464,1553L4464,1556L4461,1556L4457,1558L4451,1558L4451,1561L4448,1561L4448,1564L4444,1564L4444,1566L4442,1566L4442,1569L4438,1571L4433,1576L4433,1579L4431,1579L4427,1584L4425,1584L4425,1587L4422,1587L4425,1589L4425,1599L4422,1599L4422,1604L4420,1604L4412,1615L4412,1620L4409,1622L4409,1630L4408,1629L4408,1639L4409,1640L4409,1645L4407,1645L4407,1650L4409,1650L4412,1653L4414,1658L4414,1668L4409,1673L4409,1676L4403,1683L4401,1683L4401,1689L4396,1694L4394,1694L4394,1696L4392,1696L4392,1699L4388,1704L4386,1704L4383,1706L4377,1709L4375,1712L4373,1712L4373,1714L4370,1714L4368,1717L4368,1719L4362,1727L4357,1727L4355,1729L4349,1732L4347,1732L4331,1737L4321,1737L4321,1742L4318,1745L4316,1745L4316,1747L4440,1747L4440,1712L4444,1712L4444,1709L4448,1709L4448,1706L4453,1701L4455,1701L4466,1694L4468,1691L4474,1691L4477,1689L4477,1686L4479,1686L4481,1683L4483,1683L4483,1681L4492,1683L4500,1683L4500,1678L4503,1676L4518,1676L4520,1673L4529,1673L4531,1671L4533,1671L4539,1663L4539,1661L4542,1661L4542,1655L4544,1655L4544,1653L4546,1653L4552,1650L4559,1650L4559,1648L4563,1648L4563,1645L4565,1645L4570,1640L4581,1640L4581,1635L4578,1632L4574,1632L4576,1627L4576,1622L4574,1622L4574,1615L4587,1615L4589,1612L4596,1612L4598,1610L4600,1610L4600,1602L4602,1602L4613,1599L4624,1599L4626,1602L4648,1602L4648,1599L4645,1599L4645,1594L4648,1592L4650,1592L4652,1589L4654,1589L4645,1584L4643,1581L4639,1574L4641,1571L4639,1571L4639,1569L4635,1564L4635,1558L4637,1558L4637,1553L4635,1551L4632,1551L4632,1548L4635,1543L4635,1536L4632,1530L4632,1525L4635,1523L4632,1523L4630,1520L4630,1518L4632,1515L4630,1515L4630,1513L4624,1507L4622,1507L4619,1505L4619,1502L4611,1502L4611,1505L4609,1502L4602,1503L4601,1500L4600,1495L4600,1495L4600,1495z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5663,3374L5663,3372L5661,3367L5661,3359L5659,3356L5659,3354L5655,3349L5655,3341L5657,3336L5655,3336L5653,3331L5653,3328L5650,3326L5646,3323L5644,3318L5646,3310L5646,3298L5644,3298L5644,3293L5648,3298L5648,3300L5650,3300L5657,3295L5663,3288L5666,3288L5666,3285L5670,3282L5670,3280L5676,3272L5679,3272L5683,3267L5685,3267L5685,3270L5687,3270L5689,3265L5692,3265L5692,3262L5702,3249L5707,3247L5707,3239L5709,3239L5715,3231L5731,3221L5733,3219L5739,3219L5744,3214L5748,3214L5757,3208L5761,3208L5767,3206L5767,3203L5770,3201L5772,3201L5776,3196L5778,3196L5783,3193L5785,3193L5788,3187L5790,3187L5790,3184L5796,3178L5796,3173L5800,3170L5802,3165L5804,3163L5804,3160L5809,3160L5809,3157L5811,3152L5811,3147L5806,3147L5806,3145L5811,3145L5813,3142L5813,3137L5815,3135L5815,3122L5811,3122L5813,3119L5813,3117L5811,3114L5811,3117L5809,3117L5806,3114L5809,3114L5811,3112L5811,3106L5809,3106L5806,3099L5806,3096L5809,3096L5809,3094L5806,3094L5806,3091L5809,3089L5809,3086L5806,3086L5809,3083L5809,3076L5806,3076L5806,3078L5804,3076L5804,3073L5806,3073L5811,3068L5809,3068L5809,3061L5804,3061L5806,3058L5806,3043L5804,3038L5804,3027L5806,3025L5804,3025L5802,3022L5804,3020L5804,3017L5806,3017L5809,3012L5806,3012L5806,3007L5809,3007L5809,3004L5806,3004L5809,3002L5809,2997L5806,2994L5804,2994L5802,2997L5796,2999L5793,3004L5789,3004L5789,3007L5787,3007L5785,3010L5778,3010L5778,3012L5776,3015L5772,3015L5772,3017L5770,3017L5767,3015L5763,3017L5761,3017L5754,3020L5750,3025L5748,3025L5748,3022L5746,3022L5741,3020L5733,3020L5733,3022L5731,3025L5731,3030L5728,3030L5726,3033L5722,3035L5715,3035L5713,3033L5711,3033L5709,3030L5702,3030L5702,3033L5700,3033L5700,3035L5696,3035L5692,3033L5689,3033L5689,3035L5685,3035L5685,3030L5679,3025L5676,3025L5672,3030L5652,3030L5652,3038L5650,3044L5645,3053L5646,3061L5649,3068L5646,3070L5649,3076L5647,3079L5650,3089L5650,3094L5668,3114L5668,3117L5676,3129L5679,3129L5679,3140L5676,3142L5676,3175L5674,3175L5674,3178L5672,3178L5668,3180L5668,3178L5663,3178L5661,3180L5661,3191L5659,3191L5657,3193L5657,3196L5661,3196L5661,3211L5655,3211L5655,3206L5657,3206L5657,3201L5653,3201L5646,3193L5646,3191L5644,3188L5642,3188L5642,3186L5640,3183L5637,3183L5637,3175L5635,3173L5633,3173L5633,3168L5637,3163L5637,3157L5640,3152L5642,3152L5642,3135L5640,3129L5640,3127L5637,3127L5637,3124L5635,3122L5629,3124L5622,3124L5620,3127L5616,3127L5611,3124L5609,3119L5607,3117L5607,3114L5605,3114L5605,3109L5601,3109L5581,3119L5577,3119L5572,3122L5568,3122L5566,3124L5562,3124L5557,3127L5557,3129L5555,3129L5551,3132L5544,3132L5540,3135L5538,3135L5531,3137L5529,3137L5521,3142L5521,3150L5523,3150L5523,3152L5525,3152L5525,3163L5527,3163L5527,3175L5551,3175L5551,3178L5553,3180L5562,3180L5564,3183L5568,3186L5568,3188L5579,3188L5579,3191L5581,3191L5585,3193L5590,3193L5590,3198L5596,3198L5596,3203L5594,3203L5596,3208L5596,3216L5598,3216L5598,3219L5596,3224L5596,3226L5598,3226L5598,3234L5596,3234L5596,3244L5598,3247L5596,3247L5596,3249L5598,3249L5598,3252L5601,3252L5596,3257L5594,3257L5594,3259L5596,3262L5596,3265L5592,3265L5590,3267L5590,3272L5594,3272L5594,3282L5592,3285L5592,3288L5594,3288L5594,3293L5598,3298L5598,3303L5596,3305L5594,3310L5594,3316L5588,3323L5585,3323L5583,3326L5583,3339L5581,3341L5579,3341L5579,3344L5583,3349L5581,3349L5551,3384L5557,3405L5557,3420L5559,3420L5559,3423L5562,3423L5562,3428L5566,3433L5566,3441L5570,3451L5570,3492L5568,3494L5568,3499L5570,3502L5572,3502L5572,3517L5575,3527L5575,3530L5594,3530L5594,3525L5596,3512L5596,3504L5594,3504L5594,3512L5590,3507L5588,3502L5585,3502L5590,3497L5590,3494L5592,3492L5592,3489L5594,3486L5598,3484L5603,3479L5605,3479L5607,3476L5624,3469L5629,3469L5633,3466L5635,3466L5637,3463L5642,3463L5644,3461L5648,3461L5653,3458L5655,3456L5657,3456L5659,3453L5659,3451L5661,3451L5661,3448L5663,3446L5663,3443L5666,3441L5668,3441L5668,3438L5666,3438L5668,3435L5668,3430L5666,3430L5666,3433L5663,3435L5663,3425L5666,3423L5666,3410L5668,3405L5670,3402L5668,3402L5668,3374L5663,3374L5663,3374L5663,3374z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7281,2033L7281,2035L7284,2035L7284,2033L7286,2035L7286,2040L7281,2040L7277,2035L7277,2033L7281,2033L7281,2033L7281,2033zM7288,2023L7290,2028L7292,2030L7292,2033L7290,2033L7290,2035L7288,2033L7284,2030L7284,2028L7277,2020L7277,2018L7279,2015L7281,2018L7281,2020L7284,2020L7284,2023L7288,2023L7288,2023L7288,2023zM7420,2252L7418,2252L7418,2250L7422,2250L7422,2247L7420,2247L7420,2239L7422,2237L7420,2229L7420,2219L7416,2219L7416,2211L7411,2206L7411,2204L7410,2202L7409,2204L7407,2209L7405,2201L7405,2186L7403,2183L7403,2181L7398,2171L7398,2168L7396,2165L7396,2163L7398,2158L7398,2155L7396,2155L7396,2145L7394,2135L7396,2135L7396,2132L7394,2132L7394,2130L7392,2130L7392,2125L7394,2120L7392,2117L7392,2119L7388,2119L7387,2117L7388,2112L7385,2112L7381,2102L7381,2099L7379,2094L7379,2091L7377,2086L7375,2086L7375,2084L7372,2086L7370,2086L7370,2091L7372,2091L7372,2099L7370,2099L7370,2104L7368,2104L7368,2107L7366,2109L7364,2109L7362,2112L7355,2112L7355,2114L7353,2117L7351,2117L7349,2114L7349,2120L7346,2122L7346,2120L7344,2120L7340,2122L7340,2125L7338,2127L7338,2132L7333,2135L7332,2138L7329,2138L7329,2135L7327,2135L7325,2134L7321,2135L7321,2137L7318,2138L7316,2136L7314,2136L7312,2133L7303,2127L7301,2130L7299,2130L7297,2127L7299,2117L7301,2112L7301,2109L7303,2102L7303,2099L7305,2097L7307,2089L7305,2089L7307,2084L7307,2079L7310,2079L7310,2076L7307,2076L7307,2071L7305,2069L7305,2061L7303,2051L7301,2051L7299,2046L7299,2038L7294,2036L7294,2029L7293,2026L7288,2018L7284,2015L7282,2011L7285,2010L7286,2008L7281,2006L7279,2007L7277,2006L7275,2004L7277,1998L7274,1994L7272,1997L7265,1995L7264,1993L7262,1995L7260,1995L7260,1992L7258,1992L7258,1989L7255,1989L7255,1987L7251,1977L7249,1977L7249,1974L7247,1974L7247,1972L7245,1969L7245,1964L7242,1964L7242,1951L7247,1949L7251,1951L7253,1956L7255,1954L7253,1954L7253,1933L7255,1931L7255,1926L7260,1931L7264,1931L7264,1928L7266,1926L7268,1926L7268,1923L7271,1923L7268,1921L7268,1916L7266,1916L7266,1903L7268,1900L7268,1898L7271,1898L7271,1900L7273,1900L7273,1898L7275,1893L7275,1872L7273,1867L7273,1865L7275,1865L7277,1867L7286,1867L7286,1870L7288,1870L7290,1867L7292,1870L7294,1870L7297,1872L7299,1867L7299,1859L7301,1857L7301,1854L7307,1842L7310,1842L7310,1839L7312,1834L7312,1829L7307,1829L7307,1824L7310,1821L7310,1819L7314,1819L7314,1816L7316,1816L7320,1811L7320,1803L7323,1803L7323,1801L7325,1801L7325,1798L7323,1796L7323,1793L7320,1791L7320,1785L7323,1780L7325,1780L7327,1778L7327,1780L7331,1778L7333,1778L7333,1775L7338,1775L7338,1773L7342,1768L7346,1768L7346,1763L7349,1763L7351,1760L7353,1760L7359,1757L7370,1757L7370,1760L7372,1760L7370,1763L7375,1763L7375,1765L7379,1765L7377,1760L7377,1757L7375,1757L7372,1755L7372,1747L7375,1745L7377,1745L7379,1742L7385,1737L7385,1734L7383,1732L7385,1729L7385,1727L7388,1727L7388,1724L7390,1722L7390,1717L7392,1717L7394,1719L7396,1719L7396,1724L7400,1724L7403,1727L7403,1729L7407,1729L7407,1734L7409,1742L7409,1745L7411,1747L7411,1752L7413,1752L7413,1750L7416,1750L7416,1747L7418,1747L7420,1750L7422,1750L7422,1757L7424,1757L7422,1757L7422,1765L7424,1768L7424,1788L7422,1788L7422,1798L7420,1798L7420,1796L7418,1796L7418,1798L7420,1801L7420,1803L7422,1803L7422,1806L7420,1808L7420,1806L7418,1806L7416,1808L7416,1811L7413,1814L7413,1816L7411,1816L7409,1814L7407,1816L7407,1821L7405,1824L7400,1826L7398,1826L7398,1829L7396,1829L7396,1836L7392,1842L7390,1842L7390,1844L7392,1844L7390,1847L7390,1852L7394,1852L7394,1854L7396,1857L7396,1862L7394,1862L7394,1865L7390,1867L7390,1870L7394,1870L7394,1872L7394,1870L7396,1870L7398,1867L7400,1867L7400,1865L7405,1865L7407,1862L7418,1862L7420,1865L7426,1862L7429,1862L7429,1865L7426,1865L7424,1867L7422,1867L7422,1872L7424,1875L7426,1875L7426,1877L7424,1880L7424,1882L7426,1882L7429,1885L7429,1893L7433,1895L7444,1895L7444,1898L7446,1898L7446,1903L7444,1903L7439,1908L7442,1913L7442,1916L7439,1918L7435,1926L7435,1928L7450,1928L7450,1931L7450,1928L7455,1931L7457,1931L7459,1933L7457,1933L7457,1941L7461,1941L7463,1944L7461,1946L7461,1949L7463,1949L7463,1951L7465,1949L7468,1949L7468,1946L7470,1946L7472,1949L7478,1949L7481,1946L7481,1944L7489,1938L7491,1944L7491,1946L7489,1946L7491,1946L7487,1951L7483,1954L7478,1954L7478,1959L7476,1961L7476,1964L7474,1964L7472,1967L7472,1969L7476,1969L7474,1969L7474,1972L7470,1972L7470,1969L7468,1969L7468,1972L7465,1972L7463,1974L7463,1982L7461,1984L7461,1987L7457,1982L7455,1982L7455,1987L7444,1987L7446,1989L7446,1992L7444,1995L7437,1995L7435,1992L7433,1995L7431,1995L7431,2005L7426,2005L7426,2002L7420,2005L7418,2007L7409,2007L7407,2005L7405,2005L7405,2002L7405,2005L7403,2007L7405,2007L7405,2010L7400,2010L7400,2012L7398,2012L7396,2018L7398,2018L7398,2028L7396,2028L7394,2033L7396,2033L7396,2043L7394,2043L7392,2046L7385,2046L7385,2043L7385,2046L7388,2048L7388,2053L7390,2053L7390,2051L7392,2051L7392,2053L7394,2053L7392,2053L7392,2056L7394,2056L7394,2058L7396,2063L7394,2066L7394,2069L7396,2074L7398,2074L7398,2076L7400,2076L7407,2084L7407,2086L7409,2086L7411,2089L7411,2091L7413,2094L7416,2094L7418,2097L7418,2102L7416,2102L7416,2104L7422,2112L7422,2120L7426,2114L7429,2114L7429,2120L7426,2122L7426,2125L7422,2125L7420,2127L7420,2130L7418,2137L7418,2142L7420,2145L7420,2150L7418,2150L7418,2148L7416,2148L7416,2150L7413,2150L7413,2153L7409,2153L7409,2168L7413,2173L7416,2173L7416,2176L7418,2178L7418,2181L7420,2183L7424,2186L7424,2188L7426,2188L7429,2191L7431,2191L7431,2196L7435,2201L7435,2209L7437,2211L7437,2219L7435,2219L7433,2222L7433,2224L7437,2234L7442,2239L7442,2242L7444,2247L7444,2252L7446,2255L7446,2262L7448,2265L7448,2267L7444,2273L7439,2280L7439,2283L7437,2285L7437,2288L7435,2290L7433,2290L7433,2293L7429,2298L7426,2298L7426,2301L7424,2303L7424,2306L7426,2308L7424,2308L7424,2313L7422,2316L7422,2318L7419,2324L7418,2325L7418,2311L7416,2311L7416,2301L7418,2301L7420,2295L7422,2295L7422,2285L7424,2285L7424,2283L7422,2280L7422,2270L7420,2270L7420,2265L7422,2262L7422,2257L7420,2252L7420,2252L7420,2252z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5380,3234L5371,3234L5365,3242L5360,3242L5360,3239L5356,3239L5347,3244L5347,3247L5345,3247L5345,3249L5343,3249L5343,3252L5341,3254L5339,3254L5336,3257L5336,3254L5334,3252L5336,3252L5336,3249L5334,3249L5334,3247L5332,3247L5330,3244L5330,3242L5328,3242L5328,3239L5321,3239L5310,3242L5306,3244L5265,3249L5265,3372L5237,3372L5237,3581L5232,3583L5224,3583L5224,3586L5222,3588L5222,3591L5215,3591L5215,3596L5213,3599L5211,3599L5209,3596L5206,3596L5202,3594L5200,3594L5191,3596L5183,3596L5183,3594L5178,3594L5174,3591L5170,3591L5170,3588L5167,3588L5165,3591L5163,3583L5163,3581L5165,3581L5165,3578L5163,3576L5163,3573L5161,3573L5161,3576L5159,3576L5159,3571L5157,3571L5157,3568L5150,3568L5150,3571L5148,3576L5148,3581L5146,3583L5146,3581L5144,3581L5144,3583L5139,3586L5135,3586L5131,3581L5131,3578L5128,3578L5126,3576L5126,3573L5122,3573L5120,3568L5118,3568L5118,3563L5115,3563L5115,3560L5113,3560L5113,3555L5111,3555L5109,3550L5107,3548L5107,3545L5105,3543L5105,3532L5102,3532L5102,3530L5100,3527L5100,3522L5102,3522L5102,3517L5100,3517L5100,3514L5098,3514L5098,3512L5096,3512L5096,3507L5098,3507L5098,3504L5096,3502L5096,3499L5094,3494L5094,3481L5092,3481L5092,3476L5094,3474L5094,3469L5092,3466L5092,3461L5089,3458L5089,3456L5087,3456L5087,3451L5085,3448L5085,3443L5083,3443L5083,3433L5085,3430L5083,3423L5083,3407L5081,3405L5081,3402L5083,3400L5083,3402L5085,3402L5085,3390L5081,3382L5081,3379L5079,3374L5074,3369L5072,3369L5072,3367L5068,3364L5070,3361L5068,3361L5068,3359L5066,3356L5066,3351L5064,3351L5061,3349L5059,3341L5053,3333L5053,3326L5051,3323L5051,3321L5048,3321L5048,3313L5046,3310L5046,3308L5044,3308L5044,3305L5042,3303L5042,3300L5040,3300L5040,3298L5038,3293L5038,3290L5035,3290L5033,3285L5033,3280L5029,3275L5027,3270L5027,3267L5022,3262L5020,3262L5020,3259L5018,3259L5016,3257L5016,3254L5014,3254L5014,3247L5012,3247L5012,3244L5009,3244L5009,3242L5007,3239L5007,3216L5009,3216L5012,3214L5014,3214L5016,3211L5018,3211L5020,3214L5027,3214L5029,3216L5031,3216L5031,3214L5038,3211L5038,3208L5040,3208L5042,3206L5053,3206L5055,3208L5057,3208L5057,3211L5061,3214L5061,3216L5066,3219L5068,3221L5076,3221L5076,3219L5167,3221L5170,3219L5193,3219L5196,3224L5202,3231L5204,3231L5206,3234L5219,3234L5219,3237L5230,3237L5232,3234L5235,3234L5235,3237L5243,3237L5245,3234L5250,3237L5250,3239L5258,3239L5261,3242L5261,3239L5265,3239L5269,3237L5271,3237L5271,3239L5284,3239L5300,3234L5308,3234L5317,3231L5319,3231L5328,3229L5334,3229L5349,3224L5373,3224L5375,3226L5378,3226L5382,3231L5382,3234L5380,3234L5380,3234L5380,3234z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6946,1658L6948,1655L6950,1658L6961,1658L6961,1661L6963,1666L6963,1668L6965,1668L6976,1673L6976,1676L6980,1678L6982,1681L6987,1681L6989,1683L6993,1683L6998,1689L6998,1691L7002,1696L7002,1699L7004,1699L7006,1696L7011,1694L7017,1694L7019,1696L7019,1699L7021,1701L7021,1706L7026,1706L7026,1712L7032,1712L7034,1714L7034,1717L7037,1717L7041,1719L7043,1717L7043,1714L7045,1714L7047,1717L7047,1719L7045,1719L7045,1727L7063,1727L7063,1729L7067,1729L7067,1732L7069,1734L7069,1740L7071,1740L7073,1737L7073,1734L7071,1732L7076,1729L7076,1734L7080,1737L7082,1740L7084,1737L7084,1732L7091,1732L7091,1734L7095,1737L7099,1737L7099,1740L7102,1740L7102,1742L7106,1742L7108,1740L7112,1742L7119,1742L7119,1740L7130,1740L7130,1747L7128,1747L7128,1750L7125,1752L7125,1768L7128,1768L7128,1770L7130,1773L7130,1780L7128,1783L7128,1788L7123,1788L7123,1785L7119,1785L7117,1788L7102,1788L7097,1783L7095,1783L7095,1785L7093,1788L7091,1788L7089,1785L7078,1780L7076,1783L7076,1780L7067,1780L7067,1783L7065,1783L7063,1780L7063,1775L7060,1775L7060,1773L7056,1773L7056,1775L7054,1775L7052,1778L7050,1778L7047,1775L7041,1770L7039,1768L7032,1768L7032,1757L7026,1757L7024,1755L7021,1755L7017,1752L7015,1752L7015,1755L7011,1755L7011,1757L7008,1757L7008,1755L7006,1755L7004,1752L6998,1752L6998,1755L6995,1757L6993,1757L6993,1755L6987,1755L6985,1752L6980,1752L6978,1750L6978,1745L6976,1745L6974,1747L6969,1747L6969,1745L6967,1745L6963,1740L6952,1740L6948,1734L6943,1734L6943,1732L6941,1729L6939,1729L6937,1724L6935,1724L6933,1722L6928,1722L6922,1717L6920,1714L6918,1714L6918,1717L6915,1717L6913,1714L6911,1714L6911,1712L6909,1712L6907,1709L6905,1709L6905,1704L6911,1696L6911,1694L6909,1689L6911,1686L6913,1686L6913,1683L6915,1683L6915,1681L6913,1681L6913,1678L6915,1678L6915,1676L6918,1676L6920,1673L6920,1671L6924,1671L6926,1666L6928,1666L6931,1663L6933,1666L6933,1668L6935,1671L6935,1668L6937,1671L6937,1668L6939,1668L6941,1666L6941,1658L6946,1658L6946,1658L6946,1658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7560,2608L7560,2605L7562,2603L7566,2602L7570,2603L7568,2608L7565,2609L7563,2609L7560,2609L7560,2608L7560,2608L7560,2608z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5274,1270L5287,1270L5287,1268L5297,1268L5302,1265L5302,1268L5304,1268L5304,1265L5306,1265L5306,1263L5308,1263L5308,1260L5306,1260L5304,1258L5304,1250L5308,1250L5308,1247L5310,1250L5313,1250L5319,1242L5319,1237L5315,1237L5315,1235L5313,1232L5310,1232L5308,1230L5306,1230L5304,1222L5302,1219L5304,1212L5308,1212L5308,1209L5310,1207L5310,1204L5308,1204L5308,1201L5306,1201L5306,1199L5304,1196L5306,1196L5308,1194L5310,1194L5310,1196L5313,1196L5313,1194L5310,1191L5306,1191L5306,1189L5304,1189L5302,1191L5300,1191L5300,1194L5297,1196L5295,1196L5293,1194L5293,1191L5282,1191L5282,1189L5280,1189L5280,1186L5274,1186L5274,1184L5280,1184L5280,1181L5276,1181L5276,1179L5276,1179L5278,1176L5278,1173L5271,1173L5258,1163L5258,1156L5256,1156L5254,1153L5254,1150L5250,1150L5248,1148L5245,1148L5245,1145L5243,1143L5239,1143L5235,1140L5232,1143L5230,1143L5228,1140L5224,1140L5224,1143L5222,1145L5217,1148L5213,1148L5213,1145L5211,1145L5209,1148L5204,1150L5206,1153L5209,1153L5209,1158L5206,1158L5206,1163L5209,1163L5209,1168L5213,1171L5220,1171L5219,1173L5213,1173L5211,1176L5213,1179L5209,1184L5213,1184L5213,1181L5215,1181L5217,1184L5219,1184L5219,1186L5217,1189L5215,1194L5211,1199L5211,1201L5213,1201L5213,1204L5215,1204L5219,1207L5222,1209L5226,1212L5224,1214L5219,1214L5217,1212L5215,1212L5215,1214L5219,1217L5224,1222L5222,1227L5217,1227L5215,1230L5217,1232L5222,1232L5222,1235L5224,1235L5224,1237L5226,1237L5226,1240L5230,1240L5232,1242L5237,1242L5237,1245L5241,1245L5243,1247L5245,1247L5248,1250L5243,1253L5237,1252L5237,1255L5239,1255L5239,1260L5241,1260L5244,1263L5243,1268L5250,1268L5250,1270L5252,1270L5254,1275L5254,1283L5256,1283L5258,1280L5258,1275L5267,1270L5269,1270L5272,1273L5274,1273L5274,1270z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4849,990L4849,992L4838,992L4840,990L4838,990L4838,987L4843,982L4843,977L4836,977L4836,975L4825,975L4823,972L4823,969L4821,967L4821,969L4814,969L4817,969L4817,967L4812,967L4812,969L4808,969L4808,967L4806,967L4804,969L4804,972L4801,972L4798,973L4797,975L4796,973L4777,973L4777,971L4784,970L4780,968L4778,967L4778,964L4790,966L4791,969L4794,969L4797,970L4801,969L4798,966L4793,965L4792,963L4785,960L4789,958L4796,961L4800,962L4803,961L4817,961L4817,958L4798,958L4795,956L4793,953L4799,949L4800,946L4808,941L4807,938L4810,935L4809,931L4812,925L4811,921L4811,916L4813,914L4816,913L4818,913L4817,917L4818,921L4821,920L4823,921L4824,926L4828,927L4829,929L4826,931L4823,930L4822,932L4825,934L4822,936L4821,939L4824,941L4835,932L4842,933L4844,931L4838,929L4837,926L4840,923L4834,923L4831,922L4831,913L4836,908L4845,906L4856,906L4860,903L4873,903L4873,908L4875,908L4877,911L4882,911L4882,921L4879,921L4877,924L4877,931L4873,931L4873,929L4869,929L4869,934L4866,934L4866,936L4875,936L4877,939L4877,944L4875,944L4873,946L4869,946L4869,949L4871,952L4871,954L4862,954L4860,957L4858,957L4853,954L4851,954L4847,957L4847,959L4853,967L4853,972L4851,975L4849,975L4849,977L4851,977L4851,980L4847,980L4845,982L4845,985L4849,985L4849,990L4849,990L4849,990z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9348,4180L9350,4183L9352,4183L9352,4185L9348,4185L9354,4188L9354,4190L9352,4190L9352,4193L9345,4193L9343,4195L9341,4193L9339,4193L9337,4195L9339,4195L9337,4198L9332,4198L9332,4195L9335,4195L9337,4193L9339,4188L9341,4185L9341,4183L9339,4183L9341,4180L9341,4178L9348,4178L9348,4180L9348,4180L9348,4180zM9514,4007L9514,4009L9517,4009L9519,4012L9519,4014L9521,4017L9521,4019L9519,4019L9519,4022L9517,4022L9512,4027L9512,4032L9510,4032L9508,4035L9501,4040L9501,4042L9499,4045L9499,4047L9497,4047L9497,4050L9495,4053L9495,4055L9493,4055L9488,4060L9484,4060L9482,4063L9480,4063L9480,4065L9478,4070L9480,4078L9486,4078L9488,4081L9488,4086L9486,4086L9484,4083L9484,4086L9478,4086L9478,4083L9475,4083L9471,4081L9469,4081L9469,4086L9465,4086L9462,4088L9460,4088L9458,4091L9456,4091L9452,4093L9447,4093L9447,4096L9445,4096L9441,4098L9439,4098L9439,4104L9436,4106L9436,4114L9434,4121L9430,4127L9430,4129L9426,4134L9428,4134L9426,4137L9426,4139L9423,4142L9421,4147L9423,4149L9423,4152L9415,4152L9415,4155L9410,4155L9410,4160L9408,4160L9408,4162L9404,4162L9400,4167L9397,4167L9397,4170L9393,4172L9393,4175L9387,4175L9382,4178L9378,4178L9376,4175L9376,4178L9371,4178L9371,4175L9363,4175L9358,4172L9358,4170L9356,4170L9354,4167L9339,4167L9341,4165L9339,4162L9334,4159L9331,4159L9329,4162L9309,4161L9308,4157L9304,4157L9304,4153L9303,4150L9304,4148L9304,4147L9304,4143L9305,4141L9308,4143L9311,4141L9311,4138L9312,4134L9315,4132L9315,4130L9317,4127L9320,4125L9321,4123L9328,4118L9327,4115L9332,4115L9336,4113L9337,4108L9339,4111L9348,4101L9350,4101L9350,4098L9352,4098L9356,4093L9356,4091L9369,4091L9374,4086L9376,4086L9380,4081L9384,4081L9389,4078L9393,4078L9400,4070L9402,4070L9410,4060L9415,4060L9417,4058L9419,4058L9421,4055L9423,4055L9436,4040L9436,4037L9439,4037L9439,4027L9441,4027L9443,4019L9445,4017L9449,4017L9452,4014L9454,4014L9454,4012L9458,4007L9460,4007L9460,3989L9465,3984L9467,3984L9469,3981L9472,3979L9473,3976L9477,3974L9488,3974L9488,3976L9480,3976L9475,3981L9478,3984L9482,3986L9484,3986L9484,3984L9486,3984L9486,3994L9488,4002L9493,4002L9500,3994L9503,3992L9505,3989L9509,3987L9508,3986L9506,3984L9508,3982L9512,3982L9513,3986L9512,3989L9515,3990L9520,3988L9520,3992L9522,3993L9524,3996L9524,3999L9522,3999L9520,4000L9520,4003L9516,4003L9514,4007L9514,4007L9514,4007zM9556,3841L9551,3836L9551,3831L9553,3831L9556,3833L9558,3838L9556,3841L9556,3841L9556,3841zM9499,3795L9501,3795L9501,3792L9517,3800L9514,3800L9514,3803L9517,3803L9517,3805L9521,3805L9523,3803L9523,3808L9525,3810L9527,3810L9530,3815L9530,3818L9527,3818L9527,3828L9536,3838L9534,3841L9534,3851L9538,3856L9543,3856L9543,3859L9549,3859L9549,3861L9551,3861L9551,3864L9549,3864L9549,3866L9551,3866L9551,3869L9558,3869L9558,3866L9556,3861L9556,3859L9553,3859L9553,3854L9556,3854L9556,3851L9551,3846L9551,3843L9556,3846L9558,3849L9558,3851L9562,3851L9564,3854L9564,3856L9566,3859L9566,3872L9569,3874L9569,3877L9570,3881L9572,3883L9575,3882L9577,3884L9582,3887L9584,3887L9588,3889L9590,3889L9590,3892L9599,3892L9599,3894L9608,3894L9610,3892L9612,3892L9612,3889L9614,3889L9614,3887L9616,3884L9618,3884L9618,3882L9625,3882L9625,3879L9634,3879L9634,3882L9638,3882L9640,3884L9638,3889L9636,3889L9634,3894L9636,3894L9636,3897L9634,3900L9634,3912L9629,3915L9627,3917L9623,3917L9623,3930L9625,3930L9623,3935L9621,3935L9621,3930L9616,3930L9614,3928L9608,3928L9608,3930L9603,3930L9601,3933L9599,3933L9595,3938L9595,3948L9601,3948L9599,3951L9597,3951L9595,3961L9595,3963L9592,3963L9592,3966L9590,3966L9588,3971L9586,3971L9586,3974L9579,3981L9577,3986L9573,3991L9573,3994L9571,3994L9571,3996L9564,4004L9562,4004L9553,4009L9551,4012L9547,4012L9547,4007L9543,4004L9540,4004L9540,4007L9538,4007L9538,3999L9536,3999L9534,4002L9536,4002L9536,4004L9532,4004L9532,4002L9530,4002L9530,3999L9534,3999L9536,3994L9538,3991L9540,3991L9543,3986L9545,3984L9545,3979L9547,3979L9547,3963L9545,3963L9543,3958L9540,3956L9534,3956L9530,3953L9527,3953L9523,3948L9523,3945L9512,3945L9510,3943L9510,3940L9508,3940L9508,3938L9506,3935L9508,3933L9508,3930L9514,3930L9519,3925L9525,3925L9530,3923L9530,3920L9532,3915L9532,3907L9534,3900L9536,3900L9536,3884L9534,3879L9534,3872L9534,3874L9534,3872L9532,3872L9532,3869L9530,3866L9530,3864L9532,3864L9534,3866L9538,3864L9536,3861L9536,3859L9532,3859L9532,3861L9530,3861L9527,3864L9527,3861L9525,3859L9525,3853L9523,3849L9519,3848L9518,3844L9520,3842L9523,3846L9526,3848L9526,3842L9524,3842L9521,3838L9519,3837L9519,3839L9516,3842L9513,3841L9514,3836L9497,3815L9497,3813L9488,3803L9489,3802L9491,3800L9491,3795L9484,3787L9482,3782L9480,3782L9478,3780L9478,3777L9484,3777L9484,3782L9486,3785L9488,3790L9497,3791L9499,3795L9499,3795L9499,3795z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2324,2290L2321,2291L2315,2289L2313,2287L2310,2287L2306,2284L2303,2283L2297,2273L2295,2267L2294,2260L2294,2257L2300,2257L2304,2259L2307,2263L2311,2264L2313,2268L2316,2270L2319,2275L2321,2279L2325,2282L2327,2287L2324,2290L2324,2290zM2367,2165L2367,2163L2371,2163L2373,2160L2363,2160L2360,2163L2352,2168L2347,2168L2343,2171L2341,2171L2334,2173L2326,2168L2326,2165L2324,2168L2321,2168L2321,2171L2319,2171L2319,2176L2317,2176L2317,2178L2315,2181L2317,2181L2317,2183L2313,2183L2306,2191L2304,2191L2300,2193L2300,2199L2298,2199L2293,2196L2293,2193L2293,2191L2291,2191L2289,2193L2285,2201L2272,2201L2272,2211L2274,2211L2274,2216L2269,2216L2267,2219L2267,2224L2265,2227L2256,2227L2256,2229L2252,2229L2252,2227L2250,2227L2250,2224L2248,2224L2248,2227L2246,2227L2246,2229L2248,2229L2248,2232L2252,2234L2254,2237L2254,2239L2259,2242L2263,2247L2265,2247L2265,2250L2267,2250L2272,2252L2272,2255L2274,2257L2274,2260L2276,2260L2278,2265L2278,2267L2282,2270L2285,2273L2289,2275L2298,2285L2298,2288L2302,2288L2304,2285L2306,2285L2308,2288L2313,2288L2315,2290L2317,2290L2324,2293L2330,2288L2339,2293L2343,2298L2350,2298L2350,2301L2354,2301L2354,2298L2358,2298L2358,2293L2356,2293L2354,2290L2354,2288L2352,2285L2352,2278L2354,2273L2358,2273L2358,2267L2356,2265L2354,2265L2354,2262L2356,2260L2357,2249L2359,2246L2362,2245L2361,2241L2360,2211L2363,2206L2363,2199L2365,2196L2365,2193L2369,2188L2369,2186L2371,2186L2371,2178L2369,2176L2369,2173L2365,2168L2365,2165L2367,2165L2367,2165z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4708,2209L4704,2204L4697,2204L4695,2199L4693,2196L4691,2188L4693,2188L4693,2186L4691,2183L4691,2181L4687,2181L4687,2171L4689,2168L4687,2165L4689,2165L4689,2163L4687,2163L4687,2160L4691,2160L4693,2163L4693,2160L4695,2160L4697,2163L4702,2163L4708,2160L4717,2150L4765,2150L4765,2148L4773,2148L4780,2150L4780,2145L4784,2140L4788,2140L4788,2137L4791,2137L4791,2130L4795,2120L4795,2117L4797,2117L4797,2102L4799,2099L4799,2025L4801,2025L4806,2023L4838,2018L4843,2015L4888,1969L4892,1967L4895,1967L4897,1964L4901,1961L4905,1956L4921,1946L4923,1944L4977,1908L4981,1903L5007,1887L5007,1885L5014,1882L5016,1882L5022,1885L5027,1885L5031,1887L5040,1887L5053,1893L5057,1893L5057,1895L5059,1895L5076,1913L5081,1910L5081,1908L5083,1908L5094,1903L5094,1900L5098,1900L5098,1908L5102,1926L5102,1949L5105,1949L5105,1951L5113,1961L5113,1964L5115,1967L5113,1967L5113,1972L5126,1987L5124,1987L5120,1997L5118,2000L5111,2099L5100,2112L5096,2120L5085,2130L5081,2137L5076,2142L5076,2145L5072,2150L5070,2155L5066,2160L5064,2165L5064,2171L5061,2173L5061,2176L5057,2176L5057,2178L5055,2178L5055,2181L5057,2193L5059,2199L5059,2204L5053,2204L5048,2206L5051,2206L5048,2206L5048,2209L5042,2209L5040,2211L5035,2214L5033,2216L5031,2216L5031,2219L5029,2219L5029,2224L5025,2224L5020,2222L5014,2222L5009,2216L5001,2214L4975,2214L4973,2216L4964,2216L4960,2222L4957,2222L4949,2232L4931,2232L4927,2229L4923,2229L4923,2227L4921,2227L4921,2224L4914,2224L4914,2222L4912,2219L4910,2219L4908,2216L4905,2216L4899,2214L4886,2224L4886,2222L4882,2222L4877,2227L4873,2227L4871,2222L4869,2222L4866,2214L4860,2206L4858,2206L4856,2204L4847,2204L4845,2201L4840,2199L4838,2199L4836,2196L4834,2196L4830,2199L4830,2201L4817,2201L4810,2204L4806,2204L4799,2211L4797,2211L4797,2222L4791,2234L4782,2242L4782,2245L4784,2250L4782,2252L4782,2255L4784,2260L4782,2262L4782,2265L4784,2265L4784,2267L4782,2270L4780,2267L4780,2265L4778,2265L4778,2262L4773,2262L4771,2260L4771,2257L4765,2250L4760,2247L4756,2247L4756,2250L4747,2250L4747,2262L4745,2260L4739,2247L4741,2245L4743,2245L4743,2239L4741,2237L4741,2234L4736,2234L4732,2239L4726,2239L4713,2227L4708,2227L4708,2214L4710,2214L4713,2216L4715,2216L4717,2214L4715,2214L4714,2212L4710,2211L4708,2209L4708,2209L4708,2209z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4912,2497L4914,2500L4912,2502L4903,2502L4897,2505L4894,2504L4880,2508L4880,2506L4877,2505L4874,2508L4869,2510L4863,2510L4849,2512L4845,2507L4840,2505L4836,2500L4836,2497L4834,2494L4834,2492L4832,2489L4832,2484L4834,2484L4834,2482L4830,2482L4830,2478L4833,2478L4834,2475L4833,2473L4831,2474L4826,2473L4826,2470L4827,2468L4823,2466L4823,2464L4821,2459L4819,2459L4817,2454L4812,2451L4812,2449L4808,2446L4806,2446L4806,2443L4801,2443L4795,2441L4784,2441L4785,2437L4776,2438L4779,2441L4775,2441L4773,2443L4756,2443L4756,2438L4758,2436L4758,2426L4756,2423L4758,2420L4758,2395L4756,2395L4756,2387L4758,2385L4758,2382L4756,2382L4756,2375L4758,2375L4758,2354L4767,2354L4769,2352L4769,2341L4775,2334L4773,2334L4773,2331L4775,2331L4778,2329L4780,2329L4782,2326L4784,2321L4784,2318L4782,2318L4780,2316L4782,2311L4786,2311L4788,2306L4788,2301L4786,2301L4786,2290L4784,2290L4784,2288L4782,2283L4778,2278L4780,2273L4780,2270L4782,2270L4784,2267L4784,2265L4782,2265L4782,2262L4784,2260L4782,2255L4782,2252L4784,2250L4782,2245L4782,2242L4791,2234L4797,2222L4797,2211L4799,2211L4806,2204L4810,2204L4817,2201L4830,2201L4830,2199L4834,2196L4836,2196L4838,2199L4840,2199L4845,2201L4847,2204L4856,2204L4858,2206L4860,2206L4866,2214L4869,2222L4871,2222L4873,2227L4877,2227L4882,2222L4886,2222L4886,2224L4899,2214L4905,2216L4908,2216L4910,2219L4912,2219L4914,2222L4914,2224L4921,2224L4921,2227L4923,2227L4923,2229L4927,2229L4931,2232L4949,2232L4957,2222L4960,2222L4964,2216L4973,2216L4975,2214L5001,2214L5009,2216L5014,2222L5020,2222L5025,2224L5029,2224L5029,2219L5031,2219L5031,2216L5033,2216L5035,2214L5040,2211L5042,2209L5048,2209L5048,2206L5051,2206L5048,2206L5053,2204L5059,2204L5064,2209L5072,2224L5072,2227L5074,2239L5076,2242L5076,2245L5074,2245L5074,2247L5083,2247L5085,2250L5085,2252L5087,2252L5087,2275L5083,2278L5081,2278L5081,2280L5079,2280L5076,2283L5070,2283L5068,2285L5066,2290L5061,2295L5061,2298L5059,2301L5059,2303L5057,2303L5057,2308L5055,2316L5055,2318L5053,2321L5048,2321L5048,2329L5051,2331L5048,2336L5048,2339L5046,2339L5046,2341L5042,2341L5038,2354L5038,2364L5033,2367L5033,2369L5025,2369L5025,2372L5027,2372L5027,2375L5025,2375L5025,2377L5022,2375L5022,2377L5020,2377L5020,2380L5022,2382L5022,2385L5020,2385L5020,2392L5018,2392L5018,2395L5016,2398L5016,2403L5012,2408L5012,2410L5009,2410L5009,2413L5007,2413L5009,2413L5009,2415L5012,2418L5012,2420L5007,2423L5005,2423L5003,2426L5003,2433L5001,2436L4999,2436L4999,2441L4990,2441L4990,2438L4988,2436L4990,2433L4990,2431L4986,2431L4983,2428L4983,2423L4979,2423L4977,2420L4975,2420L4973,2426L4964,2426L4964,2420L4962,2423L4955,2428L4955,2431L4953,2428L4953,2431L4951,2433L4951,2438L4949,2438L4947,2441L4944,2441L4944,2443L4942,2443L4940,2446L4938,2451L4934,2454L4927,2461L4927,2466L4929,2466L4929,2469L4927,2469L4927,2482L4925,2482L4923,2487L4923,2489L4921,2492L4921,2494L4918,2494L4918,2497L4912,2497L4912,2497L4912,2497z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5660,1612L5660,1610L5653,1610L5653,1599L5655,1597L5655,1589L5659,1587L5661,1587L5661,1589L5663,1587L5663,1589L5666,1589L5666,1592L5668,1592L5670,1597L5668,1599L5668,1617L5666,1620L5666,1622L5663,1622L5661,1625L5657,1625L5653,1627L5650,1627L5650,1622L5653,1622L5653,1617L5660,1615L5660,1612L5660,1612L5660,1612z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6237,1836L6235,1836L6235,1839L6237,1842L6242,1842L6242,1839L6244,1839L6244,1836L6246,1836L6246,1834L6250,1844L6250,1847L6253,1847L6253,1852L6255,1852L6259,1857L6259,1859L6261,1859L6261,1862L6266,1867L6268,1867L6268,1870L6270,1870L6287,1875L6294,1875L6296,1877L6300,1877L6300,1880L6305,1880L6305,1877L6309,1877L6309,1880L6315,1887L6318,1887L6318,1890L6320,1893L6320,1895L6322,1898L6324,1898L6324,1900L6326,1900L6331,1910L6333,1910L6333,1913L6341,1913L6341,1916L6344,1916L6344,1923L6341,1923L6341,1926L6339,1928L6337,1933L6337,1936L6335,1938L6333,1938L6333,1944L6328,1951L6326,1951L6324,1954L6322,1954L6318,1959L6318,1961L6315,1961L6315,1964L6313,1964L6311,1969L6311,1974L6307,1979L6307,1984L6305,1984L6305,1987L6300,1984L6298,1984L6298,1982L6300,1979L6300,1977L6298,1977L6296,1979L6294,1979L6294,1982L6287,1989L6287,1997L6285,2002L6285,2005L6283,2005L6283,2007L6285,2015L6285,2023L6287,2025L6287,2030L6285,2033L6268,2033L6266,2035L6261,2035L6255,2043L6255,2048L6253,2051L6253,2058L6250,2058L6250,2061L6248,2061L6248,2063L6242,2063L6237,2066L6222,2066L6222,2069L6220,2069L6220,2071L6216,2076L6216,2081L6218,2081L6218,2084L6214,2089L6211,2094L6209,2094L6207,2097L6201,2097L6201,2094L6183,2094L6179,2099L6175,2099L6170,2104L6164,2104L6157,2107L6149,2086L6146,2086L6146,2084L6125,2030L6209,1997L6227,1931L6214,1908L6216,1905L6216,1903L6214,1903L6214,1898L6218,1893L6218,1887L6222,1877L6224,1875L6224,1870L6222,1867L6227,1865L6229,1865L6231,1867L6233,1865L6237,1865L6235,1859L6231,1859L6231,1847L6233,1844L6231,1844L6231,1836L6233,1836L6233,1834L6237,1834L6237,1836L6237,1836L6237,1836zM6246,1792L6246,1790L6250,1790L6251,1795L6248,1796L6247,1798L6249,1799L6248,1806L6246,1806L6246,1808L6244,1808L6244,1814L6242,1814L6242,1811L6240,1811L6240,1806L6242,1803L6242,1798L6240,1798L6240,1796L6242,1793L6246,1792L6246,1792L6246,1792z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6751,1638L6746,1640L6742,1645L6742,1648L6740,1650L6738,1650L6736,1653L6733,1658L6733,1661L6736,1661L6736,1663L6731,1668L6727,1668L6725,1671L6720,1671L6720,1673L6716,1683L6716,1686L6712,1696L6710,1696L6707,1699L6707,1701L6703,1704L6701,1704L6699,1706L6697,1706L6692,1709L6688,1714L6688,1717L6686,1722L6684,1724L6684,1727L6677,1734L6677,1737L6673,1740L6660,1740L6658,1742L6655,1742L6653,1745L6645,1745L6645,1737L6642,1737L6642,1734L6636,1734L6629,1742L6627,1742L6627,1750L6625,1750L6614,1763L6610,1773L6610,1775L6612,1775L6612,1778L6616,1778L6616,1780L6619,1780L6619,1783L6623,1783L6627,1780L6627,1783L6629,1783L6629,1796L6627,1798L6627,1801L6629,1803L6634,1811L6645,1811L6645,1821L6647,1824L6647,1826L6649,1826L6649,1829L6651,1831L6651,1836L6653,1839L6655,1844L6653,1844L6653,1852L6655,1852L6655,1854L6651,1854L6647,1859L6642,1859L6642,1857L6640,1857L6642,1854L6642,1852L6640,1852L6636,1854L6632,1854L6632,1857L6629,1857L6625,1862L6619,1862L6616,1859L6614,1859L6614,1857L6595,1857L6593,1854L6590,1857L6590,1867L6577,1867L6577,1870L6575,1870L6575,1877L6569,1875L6567,1872L6567,1870L6564,1870L6564,1872L6558,1872L6558,1870L6556,1870L6556,1865L6551,1865L6549,1862L6549,1852L6547,1849L6547,1847L6545,1847L6545,1844L6547,1844L6549,1842L6545,1842L6541,1839L6532,1839L6532,1836L6534,1831L6534,1826L6532,1824L6530,1824L6530,1816L6525,1814L6521,1814L6519,1816L6519,1819L6519,1816L6519,1819L6512,1821L6508,1821L6506,1824L6504,1824L6502,1821L6493,1821L6493,1824L6478,1824L6478,1829L6476,1829L6476,1826L6474,1824L6474,1826L6469,1826L6461,1824L6456,1824L6456,1821L6448,1821L6445,1824L6443,1824L6443,1826L6417,1826L6413,1829L6411,1829L6411,1826L6406,1826L6406,1829L6402,1829L6400,1831L6398,1831L6398,1834L6396,1834L6396,1831L6398,1829L6398,1826L6391,1826L6393,1824L6393,1808L6398,1808L6398,1793L6400,1793L6404,1791L6406,1791L6406,1788L6409,1788L6411,1791L6411,1785L6413,1785L6415,1783L6419,1783L6422,1780L6437,1780L6437,1773L6439,1770L6439,1765L6441,1765L6441,1763L6439,1763L6439,1760L6430,1760L6430,1763L6428,1763L6426,1760L6424,1760L6426,1755L6426,1742L6424,1737L6424,1734L6426,1729L6426,1727L6417,1727L6417,1724L6415,1722L6409,1722L6402,1719L6400,1719L6400,1717L6391,1706L6391,1704L6387,1699L6385,1694L6385,1691L6372,1676L6376,1676L6404,1686L6406,1686L6411,1689L6437,1689L6445,1686L6450,1686L6458,1689L6463,1689L6465,1686L6469,1686L6471,1683L6482,1683L6486,1686L6504,1681L6506,1678L6510,1678L6517,1676L6521,1676L6523,1673L6523,1671L6521,1668L6521,1663L6523,1663L6523,1653L6521,1653L6521,1650L6525,1640L6528,1640L6532,1635L6534,1635L6534,1630L6538,1627L6543,1627L6543,1630L6558,1630L6564,1627L6564,1625L6558,1625L6558,1620L6564,1620L6564,1617L6569,1617L6573,1612L6573,1610L6575,1610L6575,1612L6577,1612L6584,1615L6586,1615L6586,1612L6584,1612L6584,1610L6586,1610L6593,1617L6599,1617L6601,1615L6601,1612L6606,1607L6606,1592L6603,1592L6603,1589L6606,1589L6606,1587L6608,1587L6610,1584L6610,1576L6612,1576L6612,1569L6625,1569L6629,1566L6634,1561L6634,1558L6632,1556L6629,1556L6629,1553L6632,1553L6632,1551L6629,1548L6625,1548L6623,1543L6621,1541L6623,1538L6629,1538L6632,1541L6649,1541L6655,1538L6658,1533L6658,1528L6655,1528L6655,1525L6653,1525L6653,1520L6655,1520L6655,1518L6658,1515L6662,1513L6668,1505L6668,1502L6671,1500L6668,1497L6668,1495L6671,1495L6671,1490L6668,1487L6668,1485L6666,1479L6664,1479L6664,1477L6662,1474L6660,1474L6658,1472L6660,1469L6666,1464L6671,1459L6673,1459L6673,1462L6679,1456L6686,1454L6686,1451L6688,1451L6690,1449L6697,1449L6697,1446L6718,1446L6720,1444L6723,1444L6723,1446L6727,1444L6731,1444L6733,1446L6740,1446L6742,1444L6749,1441L6751,1441L6751,1444L6755,1439L6759,1441L6770,1441L6770,1444L6775,1444L6777,1446L6777,1451L6779,1451L6779,1449L6785,1449L6785,1451L6788,1451L6790,1454L6794,1467L6792,1469L6790,1469L6790,1474L6796,1474L6796,1479L6805,1479L6807,1477L6807,1482L6811,1482L6811,1485L6814,1485L6816,1487L6822,1490L6827,1490L6831,1492L6837,1492L6839,1490L6842,1490L6842,1492L6831,1497L6829,1500L6827,1500L6820,1502L6820,1505L6822,1505L6822,1507L6820,1507L6818,1510L6818,1518L6814,1518L6814,1515L6803,1515L6801,1518L6798,1518L6798,1520L6794,1520L6794,1518L6792,1518L6792,1520L6788,1520L6788,1523L6781,1523L6775,1520L6768,1520L6768,1518L6755,1518L6755,1515L6742,1515L6740,1518L6733,1518L6733,1523L6731,1525L6731,1528L6733,1530L6736,1530L6738,1533L6736,1533L6736,1536L6733,1536L6733,1538L6744,1538L6744,1543L6742,1543L6740,1546L6736,1546L6736,1551L6738,1551L6738,1553L6742,1553L6742,1556L6740,1561L6738,1561L6738,1564L6736,1564L6736,1566L6738,1566L6742,1571L6746,1571L6746,1579L6751,1581L6753,1579L6755,1579L6755,1589L6766,1589L6770,1592L6775,1597L6770,1602L6766,1604L6764,1604L6762,1602L6762,1604L6759,1604L6757,1607L6755,1607L6753,1610L6751,1615L6751,1617L6753,1620L6753,1625L6751,1625L6751,1635L6753,1635L6751,1638L6751,1638L6751,1638zM6575,1875L6575,1872z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8880,2984L8878,2984L8878,2981L8873,2981L8873,2979L8869,2974L8869,2971L8867,2969L8869,2969L8873,2974L8875,2979L8878,2979L8880,2976L8882,2976L8882,2981L8880,2984L8880,2984L8880,2984zM8871,2969L8869,2966L8860,2966L8860,2964L8858,2961L8858,2956L8862,2956L8862,2959L8865,2959L8865,2961L8867,2961L8867,2959L8869,2959L8869,2961L8873,2966L8873,2969L8871,2969L8871,2969L8871,2969zM8856,2964L8852,2961L8849,2959L8849,2953L8856,2953L8858,2959L8856,2961L8856,2964L8856,2964L8856,2964zM8925,2953L8919,2946L8917,2946L8919,2943L8921,2943L8925,2946L8927,2946L8930,2948L8932,2948L8932,2951L8930,2951L8925,2953L8925,2953L8925,2953zM8791,2841L8789,2841L8787,2839L8787,2836L8785,2836L8785,2831L8787,2831L8791,2834L8793,2834L8793,2841L8791,2841L8791,2841L8791,2841zM8997,2846L8997,2851L8999,2854L9003,2854L9012,2864L9012,2874L9010,2872L9008,2872L9008,2874L9005,2874L9005,2877L9003,2877L9001,2874L8999,2874L8995,2872L8992,2867L8990,2867L8992,2864L8992,2857L8988,2857L8986,2854L8984,2849L8982,2849L8979,2846L8977,2841L8977,2836L8979,2831L8982,2834L8988,2834L8992,2844L8997,2846L8997,2846L8997,2846zM8767,2828L8763,2826L8763,2823L8765,2823L8767,2821L8769,2823L8769,2828L8767,2828L8767,2828L8767,2828zM8975,2828L8975,2826L8973,2823L8973,2818L8975,2816L8977,2816L8977,2828L8975,2828L8975,2828L8975,2828zM8847,2857L8834,2857L8834,2851L8832,2851L8828,2849L8823,2851L8821,2854L8821,2849L8817,2849L8817,2846L8815,2846L8810,2841L8802,2841L8802,2839L8800,2839L8800,2836L8802,2831L8804,2828L8806,2831L8823,2831L8823,2834L8834,2834L8834,2831L8839,2831L8839,2834L8843,2831L8845,2831L8847,2828L8845,2828L8845,2826L8847,2821L8847,2816L8852,2816L8852,2818L8849,2818L8849,2821L8847,2826L8849,2826L8849,2831L8852,2834L8856,2834L8856,2831L8858,2828L8860,2828L8862,2831L8865,2831L8865,2834L8867,2834L8873,2831L8873,2828L8875,2828L8875,2821L8878,2821L8878,2818L8882,2813L8893,2813L8893,2798L8891,2795L8891,2793L8888,2790L8888,2788L8897,2788L8897,2790L8899,2790L8899,2793L8901,2793L8906,2788L8908,2788L8910,2790L8908,2790L8908,2793L8912,2793L8914,2803L8914,2808L8912,2808L8912,2811L8910,2813L8908,2813L8908,2816L8906,2816L8906,2813L8901,2813L8901,2821L8904,2823L8906,2823L8906,2828L8897,2834L8895,2834L8895,2831L8888,2831L8886,2834L8886,2841L8884,2844L8875,2849L8869,2849L8869,2851L8867,2851L8865,2854L8865,2851L8860,2854L8860,2857L8847,2857L8847,2857L8847,2857zM8704,2902L8696,2902L8696,2897L8694,2897L8694,2900L8691,2897L8691,2902L8689,2900L8687,2900L8687,2905L8683,2905L8678,2902L8676,2900L8676,2908L8678,2910L8678,2915L8674,2915L8674,2913L8665,2913L8668,2915L8670,2920L8661,2920L8659,2923L8646,2923L8646,2925L8648,2925L8650,2928L8655,2928L8659,2931L8659,2933L8661,2933L8663,2938L8663,2946L8659,2946L8657,2948L8652,2948L8648,2953L8646,2953L8646,2956L8639,2956L8639,2953L8637,2953L8631,2951L8626,2951L8624,2953L8611,2953L8611,2951L8605,2951L8603,2953L8600,2953L8598,2951L8598,2877L8596,2877L8594,2874L8594,2867L8596,2864L8596,2859L8598,2859L8598,2737L8596,2737L8605,2737L8605,2739L8609,2739L8609,2742L8613,2742L8613,2744L8616,2744L8620,2747L8622,2749L8624,2747L8629,2752L8631,2752L8639,2757L8644,2757L8650,2760L8652,2760L8652,2762L8665,2762L8672,2770L8674,2770L8678,2772L8678,2775L8681,2775L8687,2777L8687,2775L8694,2775L8696,2777L8696,2783L8702,2783L8704,2785L8707,2790L8709,2790L8709,2793L8711,2795L8717,2795L8720,2798L8722,2798L8722,2800L8726,2806L8726,2808L8728,2808L8730,2813L8730,2823L8728,2826L8728,2831L8739,2831L8741,2834L8750,2834L8750,2836L8752,2839L8756,2839L8756,2841L8761,2841L8765,2846L8778,2846L8782,2851L8785,2857L8787,2859L8787,2862L8789,2869L8787,2869L8787,2872L8763,2872L8763,2879L8765,2882L8767,2887L8767,2892L8769,2895L8769,2897L8774,2897L8776,2900L8782,2905L8782,2910L8789,2910L8789,2913L8791,2913L8791,2915L8795,2915L8797,2920L8797,2931L8800,2933L8802,2933L8804,2936L8804,2941L8806,2941L8806,2946L8808,2948L8815,2948L8821,2946L8828,2946L8828,2951L8823,2956L8823,2959L8826,2961L8828,2961L8828,2964L8832,2964L8832,2966L8847,2966L8847,2971L8839,2971L8839,2974L8841,2974L8843,2979L8845,2979L8845,2981L8854,2981L8854,2984L8858,2984L8862,2987L8871,2987L8867,2989L8856,2989L8856,2992L8862,2994L8865,2994L8867,2997L8865,2997L8862,2999L8860,2999L8858,3002L8854,3002L8849,2999L8847,2997L8843,2997L8843,2994L8849,2994L8847,2992L8843,2992L8841,2989L8828,2989L8826,2987L8813,2987L8810,2984L8800,2984L8800,2981L8793,2981L8793,2984L8791,2984L8789,2981L8789,2979L8780,2979L8780,2976L8778,2974L8778,2971L8772,2964L8772,2961L8765,2961L8761,2956L8761,2948L8759,2948L8754,2946L8752,2946L8752,2938L8750,2938L8750,2936L8748,2933L8746,2933L8746,2931L8743,2928L8743,2923L8741,2923L8741,2920L8739,2918L8739,2915L8733,2915L8730,2913L8726,2913L8726,2910L8720,2910L8715,2908L8709,2908L8704,2905L8704,2902L8704,2902L8704,2902zM8871,2737L8873,2739L8878,2742L8880,2744L8884,2744L8886,2747L8888,2747L8893,2752L8895,2752L8895,2755L8897,2757L8897,2755L8899,2755L8899,2757L8904,2757L8904,2760L8908,2762L8908,2764L8910,2765L8912,2767L8913,2769L8917,2770L8917,2772L8919,2775L8919,2777L8923,2777L8923,2780L8927,2783L8934,2790L8934,2795L8932,2795L8932,2800L8930,2808L8927,2808L8921,2800L8921,2788L8919,2783L8919,2780L8917,2780L8917,2777L8912,2772L8912,2770L8910,2767L8906,2765L8901,2765L8895,2760L8893,2757L8893,2755L8888,2755L8888,2752L8886,2752L8884,2749L8882,2749L8882,2747L8880,2747L8875,2742L8867,2742L8867,2739L8871,2739L8871,2737L8871,2739L8871,2737L8871,2737L8871,2737zM8858,2739L8852,2739L8849,2737L8845,2734L8845,2732L8849,2729L8854,2729L8858,2732L8860,2732L8860,2739L8858,2739L8858,2739L8858,2739zM8776,2719L8772,2721L8769,2721L8769,2724L8761,2724L8759,2721L8756,2721L8752,2724L8750,2724L8750,2721L8752,2716L8759,2716L8761,2714L8767,2716L8772,2716L8776,2719L8776,2719L8776,2719zM8838,2702L8836,2704L8834,2701L8834,2696L8839,2696L8839,2698L8840,2701L8838,2702L8838,2702L8838,2702z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3073,3328L3075,3328L3075,3349L3073,3351L3073,3354L3071,3354L3073,3359L3073,3364L3071,3369L3071,3374L3080,3374L3082,3377L3095,3377L3099,3379L3106,3379L3106,3377L3108,3377L3108,3379L3110,3377L3110,3374L3114,3374L3114,3372L3116,3374L3116,3377L3121,3379L3129,3379L3134,3384L3134,3390L3136,3390L3136,3392L3138,3395L3136,3395L3136,3400L3138,3405L3138,3415L3140,3415L3138,3418L3140,3423L3140,3425L3142,3425L3142,3435L3158,3435L3158,3433L3164,3430L3166,3430L3171,3433L3175,3438L3173,3438L3173,3446L3175,3446L3175,3451L3173,3451L3173,3458L3168,3469L3168,3471L3171,3474L3168,3479L3166,3479L3166,3481L3164,3484L3164,3512L3162,3514L3158,3522L3155,3522L3155,3527L3151,3527L3151,3530L3147,3532L3142,3532L3142,3535L3138,3537L3138,3545L3136,3545L3134,3548L3129,3548L3129,3545L3121,3545L3119,3548L3119,3550L3116,3553L3114,3553L3112,3550L3110,3550L3110,3548L3108,3550L3103,3550L3103,3548L3099,3548L3097,3550L3090,3550L3090,3548L3086,3548L3082,3545L3077,3545L3075,3543L3056,3543L3056,3545L3054,3545L3054,3537L3056,3537L3058,3535L3058,3532L3060,3532L3060,3530L3062,3530L3064,3522L3067,3522L3067,3520L3064,3520L3064,3514L3067,3512L3067,3509L3069,3504L3071,3504L3075,3502L3073,3502L3073,3499L3075,3499L3075,3494L3077,3494L3077,3492L3084,3484L3082,3484L3082,3481L3080,3481L3080,3479L3077,3476L3077,3474L3075,3471L3073,3471L3069,3469L3060,3469L3058,3463L3051,3463L3049,3461L3047,3461L3045,3458L3043,3458L3041,3456L3034,3453L3028,3446L3015,3438L3015,3435L3012,3435L3012,3438L3006,3438L3002,3435L2999,3435L2999,3433L2993,3433L2991,3430L2986,3430L2986,3428L2984,3423L2982,3423L2978,3418L2976,3418L2971,3412L2967,3412L2967,3410L2963,3407L2963,3405L2960,3405L2960,3402L2958,3402L2958,3400L2956,3397L2956,3395L2952,3390L2952,3387L2950,3387L2950,3384L2947,3384L2943,3379L2941,3379L2941,3377L2943,3374L2945,3367L2945,3361L2950,3351L2952,3339L2952,3323L2954,3321L2956,3316L2963,3308L2963,3303L2965,3295L2967,3293L2978,3293L2993,3288L3002,3288L3004,3285L3012,3282L3032,3282L3038,3285L3041,3285L3062,3298L3064,3298L3067,3300L3067,3316L3069,3316L3069,3318L3071,3321L3071,3328L3073,3328L3073,3328L3073,3328z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2586,2658L2588,2655L2592,2655L2592,2653L2594,2653L2599,2655L2599,2658L2605,2658L2605,2663L2607,2663L2607,2665L2610,2665L2610,2663L2612,2665L2616,2668L2616,2675L2618,2678L2618,2683L2620,2683L2620,2686L2625,2686L2631,2693L2636,2693L2638,2696L2638,2698L2640,2698L2640,2701L2642,2704L2640,2704L2640,2709L2642,2711L2646,2714L2646,2711L2651,2711L2651,2714L2653,2721L2651,2724L2651,2729L2655,2729L2657,2732L2657,2734L2659,2732L2664,2732L2666,2729L2670,2732L2672,2732L2675,2734L2679,2729L2685,2729L2685,2726L2690,2721L2690,2724L2696,2724L2698,2726L2698,2729L2705,2729L2707,2726L2709,2726L2714,2724L2718,2729L2720,2729L2720,2732L2722,2732L2726,2734L2726,2732L2729,2732L2729,2734L2731,2734L2731,2737L2733,2737L2733,2739L2735,2739L2735,2742L2726,2760L2724,2760L2722,2767L2718,2772L2718,2775L2720,2777L2724,2777L2724,2775L2729,2775L2733,2780L2733,2785L2735,2788L2739,2788L2739,2790L2737,2793L2731,2793L2729,2790L2729,2788L2726,2785L2724,2785L2724,2788L2714,2788L2714,2790L2711,2795L2709,2795L2707,2793L2705,2793L2703,2795L2698,2795L2692,2798L2685,2798L2679,2806L2675,2806L2675,2808L2672,2806L2672,2808L2670,2808L2670,2811L2668,2813L2664,2816L2662,2818L2657,2818L2657,2826L2655,2828L2655,2839L2653,2841L2651,2841L2651,2844L2649,2849L2649,2857L2651,2859L2651,2864L2649,2864L2649,2867L2644,2867L2638,2872L2633,2877L2631,2882L2631,2885L2633,2885L2633,2892L2629,2892L2629,2895L2627,2897L2627,2900L2629,2900L2629,2902L2631,2902L2631,2905L2636,2905L2636,2908L2633,2908L2633,2913L2636,2913L2638,2918L2638,2920L2640,2923L2640,2925L2642,2928L2644,2933L2646,2936L2649,2936L2651,2938L2653,2943L2655,2943L2655,2951L2651,2956L2649,2956L2649,2959L2662,2959L2666,2961L2672,2961L2672,2964L2675,2966L2675,2971L2677,2971L2677,2979L2701,2979L2705,2976L2705,2974L2707,2974L2709,2971L2711,2971L2714,2966L2716,2966L2722,2959L2722,2964L2720,2964L2720,3010L2724,3010L2724,3012L2733,3012L2735,3010L2739,3010L2739,3007L2744,3010L2748,3010L2750,3012L2759,3027L2759,3030L2763,3035L2763,3038L2765,3040L2765,3043L2768,3043L2768,3045L2772,3055L2774,3058L2774,3061L2772,3063L2772,3066L2770,3068L2768,3068L2768,3071L2765,3071L2765,3096L2763,3096L2763,3099L2765,3101L2765,3109L2768,3109L2768,3112L2770,3114L2770,3117L2765,3117L2765,3122L2761,3124L2759,3127L2759,3132L2757,3135L2755,3135L2755,3142L2759,3147L2761,3147L2761,3150L2759,3150L2757,3152L2757,3155L2752,3163L2759,3180L2761,3180L2761,3183L2763,3183L2763,3180L2765,3180L2770,3183L2770,3186L2765,3188L2763,3191L2763,3198L2761,3198L2759,3201L2757,3206L2752,3211L2750,3211L2746,3216L2748,3216L2750,3219L2750,3224L2746,3229L2742,3229L2742,3234L2744,3239L2744,3242L2737,3249L2733,3249L2733,3252L2731,3252L2729,3249L2726,3249L2726,3252L2722,3247L2720,3247L2718,3244L2711,3239L2711,3237L2709,3237L2707,3234L2705,3234L2705,3231L2701,3231L2701,3226L2698,3224L2698,3219L2696,3219L2696,3216L2694,3216L2692,3214L2685,3214L2685,3211L2683,3211L2683,3208L2681,3208L2679,3206L2675,3203L2672,3201L2672,3198L2668,3198L2668,3196L2659,3196L2659,3193L2655,3193L2655,3191L2653,3191L2646,3188L2646,3186L2642,3186L2642,3183L2636,3183L2631,3180L2625,3173L2620,3170L2616,3170L2616,3168L2614,3168L2614,3165L2612,3165L2610,3163L2607,3163L2599,3157L2597,3157L2597,3155L2594,3155L2594,3152L2592,3150L2592,3147L2590,3147L2584,3140L2584,3137L2581,3137L2579,3135L2575,3132L2573,3129L2573,3127L2566,3119L2568,3119L2562,3112L2562,3106L2560,3106L2560,3104L2562,3101L2562,3104L2564,3104L2564,3096L2566,3096L2566,3091L2564,3091L2564,3086L2562,3086L2560,3081L2558,3081L2558,3076L2555,3076L2555,3073L2553,3071L2553,3068L2549,3061L2549,3055L2547,3055L2547,3053L2545,3053L2542,3048L2540,3048L2540,3045L2538,3043L2538,3033L2529,3022L2525,3022L2525,3017L2523,3010L2523,3007L2521,3002L2519,2999L2519,2997L2516,2997L2516,2994L2512,2989L2508,2976L2508,2971L2506,2969L2506,2966L2503,2964L2503,2959L2501,2956L2501,2951L2499,2948L2497,2948L2497,2943L2495,2941L2495,2933L2493,2933L2493,2931L2488,2925L2488,2923L2488,2920L2480,2910L2477,2910L2477,2908L2475,2905L2475,2902L2473,2900L2473,2897L2471,2897L2471,2890L2469,2890L2469,2887L2467,2887L2467,2882L2464,2879L2462,2879L2462,2877L2460,2877L2460,2872L2456,2869L2451,2864L2447,2864L2445,2862L2445,2859L2441,2859L2430,2851L2428,2851L2425,2846L2428,2844L2428,2841L2430,2841L2430,2844L2434,2844L2434,2828L2432,2828L2430,2826L2430,2823L2428,2823L2425,2821L2428,2818L2428,2816L2430,2816L2430,2813L2428,2813L2425,2811L2423,2806L2421,2806L2421,2803L2423,2803L2423,2790L2425,2790L2428,2785L2430,2785L2432,2783L2432,2780L2434,2780L2434,2777L2436,2777L2436,2775L2441,2770L2443,2770L2445,2767L2445,2765L2449,2765L2449,2762L2451,2762L2454,2765L2454,2777L2456,2777L2451,2783L2445,2783L2447,2785L2447,2790L2449,2788L2449,2790L2447,2793L2447,2798L2451,2798L2451,2795L2454,2793L2456,2793L2456,2790L2460,2795L2464,2798L2469,2798L2469,2795L2471,2795L2471,2798L2473,2798L2473,2803L2475,2808L2480,2813L2484,2813L2486,2816L2486,2813L2490,2808L2490,2803L2495,2803L2495,2800L2497,2800L2497,2790L2499,2785L2499,2780L2501,2780L2501,2777L2503,2775L2503,2772L2506,2770L2506,2762L2508,2762L2508,2767L2510,2765L2510,2760L2512,2760L2512,2757L2514,2757L2514,2755L2516,2749L2521,2749L2521,2747L2542,2739L2545,2739L2568,2721L2571,2716L2581,2704L2581,2701L2584,2701L2586,2691L2586,2686L2588,2681L2588,2683L2592,2683L2590,2678L2590,2673L2592,2673L2592,2670L2590,2668L2590,2665L2586,2665L2586,2658L2586,2658L2586,2658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5098,973L5098,969L5096,969L5096,967L5089,967L5089,964L5092,964L5092,962L5089,962L5089,959L5087,957L5087,954L5089,954L5089,952L5092,949L5089,944L5089,941L5085,941L5085,936L5087,936L5087,931L5083,931L5083,929L5081,926L5079,926L5076,924L5074,924L5074,918L5079,918L5079,916L5081,916L5081,908L5079,901L5079,895L5085,895L5087,893L5087,890L5081,890L5081,888L5085,888L5085,885L5092,885L5105,880L5115,880L5118,878L5126,878L5134,876L5139,876L5135,872L5135,872L5137,870L5139,870L5139,867L5150,867L5150,865L5154,865L5154,862L5163,862L5165,860L5178,860L5183,857L5191,857L5191,860L5193,860L5193,865L5196,865L5196,867L5198,867L5198,872L5202,872L5204,875L5216,875L5218,876L5222,878L5227,874L5230,872L5232,870L5236,870L5237,872L5248,872L5256,875L5313,875L5315,872L5319,872L5323,875L5326,875L5330,878L5332,880L5334,880L5334,890L5336,895L5336,898L5339,901L5339,903L5341,908L5343,911L5345,918L5345,929L5341,931L5334,931L5332,934L5330,934L5328,939L5326,941L5326,944L5330,944L5336,946L5339,949L5339,952L5336,952L5336,959L5334,962L5334,964L5336,967L5339,967L5339,975L5341,977L5343,977L5345,982L5345,985L5347,985L5349,987L5352,987L5352,990L5347,990L5347,992L5349,992L5352,995L5352,997L5347,1003L5341,1003L5336,1008L5334,1008L5334,1010L5330,1010L5330,1013L5328,1013L5315,1028L5313,1028L5310,1031L5310,1033L5313,1036L5313,1043L5315,1043L5317,1046L5317,1048L5313,1048L5308,1046L5306,1046L5302,1043L5293,1043L5293,1041L5289,1036L5276,1036L5271,1033L5267,1036L5265,1036L5265,1038L5258,1038L5256,1036L5245,1036L5243,1038L5241,1038L5239,1041L5239,1043L5237,1043L5237,1041L5235,1041L5232,1043L5230,1043L5230,1041L5232,1041L5230,1038L5230,1036L5228,1036L5226,1033L5224,1033L5224,1031L5217,1031L5215,1033L5215,1036L5209,1036L5209,1033L5204,1033L5204,1028L5202,1026L5198,1026L5198,1018L5189,1018L5185,1015L5180,1015L5178,1018L5176,1018L5170,1010L5174,1010L5174,1005L5172,1005L5172,1008L5163,1008L5161,1005L5159,1005L5157,1003L5150,1003L5152,1005L5154,1010L5148,1010L5148,1013L5141,1013L5141,1008L5139,1005L5135,1005L5133,1003L5131,1003L5135,1000L5137,1000L5137,997L5135,995L5124,995L5115,990L5107,990L5107,987L5105,987L5105,985L5102,982L5098,985L5098,987L5094,987L5096,985L5096,982L5098,982L5098,973L5098,973L5098,973z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4210,1584L4208,1584L4206,1581L4204,1581L4204,1579L4201,1579L4204,1576L4206,1576L4206,1579L4210,1579L4212,1576L4217,1579L4217,1581L4214,1584L4210,1584L4210,1584L4210,1584zM3974,1418L3968,1418L3968,1416L3965,1416L3963,1413L3965,1411L3965,1413L3983,1413L3983,1418L3974,1418L3974,1418L3974,1418zM3900,1395L3898,1395L3896,1397L3892,1397L3890,1395L3890,1393L3887,1393L3887,1390L3894,1390L3896,1393L3900,1393L3900,1395L3900,1395L3900,1395zM3929,1388L3922,1388L3922,1385L3920,1385L3920,1383L3929,1383L3931,1385L3931,1388L3929,1388L3929,1388L3929,1388zM4487,1281L4500,1281L4500,1286L4498,1288L4507,1288L4507,1291L4509,1291L4509,1293L4503,1301L4500,1301L4498,1303L4496,1303L4494,1306L4494,1309L4490,1309L4490,1311L4492,1311L4492,1334L4487,1334L4487,1337L4485,1337L4487,1339L4490,1339L4490,1342L4487,1352L4487,1354L4472,1354L4472,1357L4477,1360L4479,1362L4479,1365L4481,1370L4483,1372L4487,1372L4487,1375L4485,1380L4485,1383L4483,1383L4481,1385L4479,1385L4479,1395L4483,1400L4483,1403L4486,1403L4487,1408L4483,1409L4479,1411L4479,1416L4477,1416L4474,1418L4472,1423L4474,1426L4474,1436L4470,1436L4470,1439L4466,1441L4457,1441L4457,1439L4435,1439L4433,1441L4431,1441L4431,1439L4433,1437L4433,1436L4435,1434L4435,1428L4438,1426L4438,1411L4435,1408L4438,1405L4438,1395L4440,1395L4438,1393L4431,1393L4429,1395L4427,1395L4427,1390L4425,1390L4425,1389L4427,1388L4429,1388L4431,1385L4433,1385L4433,1383L4431,1383L4431,1377L4429,1380L4429,1384L4427,1385L4425,1385L4422,1388L4420,1385L4418,1385L4418,1380L4420,1377L4420,1370L4422,1370L4422,1367L4420,1365L4422,1365L4422,1362L4425,1362L4429,1357L4429,1352L4431,1349L4433,1344L4433,1342L4435,1342L4435,1332L4438,1329L4438,1324L4440,1321L4440,1319L4440,1321L4440,1314L4442,1311L4440,1309L4440,1303L4438,1296L4438,1293L4435,1291L4435,1281L4438,1281L4438,1278L4442,1275L4451,1275L4453,1273L4457,1275L4457,1278L4455,1278L4453,1281L4453,1283L4464,1283L4466,1281L4468,1281L4470,1283L4479,1283L4481,1281L4481,1278L4485,1278L4485,1281L4487,1281L4487,1281L4487,1281z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2852,2061L2852,2063L2850,2063L2843,2066L2841,2066L2841,2063L2824,2063L2822,2066L2820,2063L2817,2063L2815,2066L2815,2053L2813,2053L2813,2051L2815,2046L2828,2046L2833,2048L2854,2048L2859,2051L2859,2056L2856,2056L2852,2061L2852,2061L2852,2061z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6103,1847L6101,1849L6097,1847L6092,1842L6094,1842L6094,1839L6092,1836L6092,1831L6092,1829L6092,1819L6095,1817L6094,1808L6097,1808L6097,1803L6099,1801L6099,1798L6103,1798L6103,1796L6105,1796L6105,1798L6107,1798L6107,1803L6114,1803L6114,1811L6112,1814L6112,1816L6110,1816L6112,1816L6112,1824L6114,1824L6114,1836L6112,1839L6112,1842L6107,1847L6103,1847L6103,1847L6103,1847z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8204,1553L8206,1556L8206,1561L8204,1561L8202,1564L8198,1564L8195,1566L8193,1566L8193,1564L8189,1564L8189,1566L8187,1566L8187,1564L8185,1564L8185,1561L8189,1558L8191,1556L8198,1556L8200,1553L8204,1553L8204,1553L8204,1553zM8193,1452L8191,1455L8185,1451L8186,1445L8188,1445L8188,1442L8191,1441L8196,1439L8198,1442L8204,1443L8204,1439L8192,1432L8194,1430L8199,1432L8201,1431L8198,1426L8200,1426L8200,1423L8198,1423L8198,1421L8195,1421L8195,1416L8198,1416L8199,1415L8200,1413L8200,1411L8202,1411L8202,1408L8204,1408L8206,1405L8206,1403L8208,1403L8208,1400L8211,1400L8213,1398L8241,1398L8243,1395L8243,1393L8245,1393L8245,1388L8247,1390L8254,1403L8254,1405L8265,1418L8265,1421L8271,1428L8273,1434L8273,1436L8276,1439L8276,1449L8278,1449L8278,1451L8276,1451L8276,1464L8273,1464L8276,1472L8276,1474L8278,1474L8278,1472L8280,1472L8280,1474L8278,1485L8278,1490L8271,1497L8271,1500L8269,1502L8267,1502L8263,1505L8256,1505L8256,1502L8252,1502L8249,1507L8250,1510L8253,1508L8256,1507L8257,1510L8256,1513L8252,1515L8248,1515L8246,1509L8243,1510L8237,1510L8237,1507L8230,1507L8226,1510L8226,1507L8224,1510L8226,1513L8230,1513L8230,1515L8228,1515L8226,1520L8224,1518L8224,1513L8219,1513L8219,1518L8221,1518L8221,1520L8224,1520L8221,1520L8219,1525L8217,1525L8215,1523L8213,1524L8211,1523L8217,1518L8217,1515L8215,1515L8211,1518L8208,1520L8208,1523L8206,1523L8206,1525L8202,1525L8202,1520L8198,1530L8195,1530L8195,1528L8193,1528L8193,1523L8191,1523L8189,1520L8189,1515L8191,1518L8191,1520L8193,1520L8193,1515L8191,1513L8191,1510L8189,1510L8189,1507L8187,1502L8191,1502L8189,1502L8191,1502L8191,1495L8193,1495L8193,1490L8200,1490L8200,1487L8193,1487L8198,1482L8202,1482L8202,1477L8198,1477L8198,1474L8200,1474L8195,1469L8195,1467L8193,1462L8193,1452L8193,1452L8193,1452z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5282,1115L5282,1112L5284,1112L5289,1107L5289,1105L5291,1102L5293,1102L5293,1097L5295,1094L5297,1094L5297,1092L5300,1092L5302,1089L5310,1089L5315,1087L5317,1084L5319,1084L5321,1082L5323,1082L5323,1079L5328,1079L5328,1082L5343,1082L5347,1084L5367,1084L5367,1087L5371,1087L5371,1089L5373,1092L5375,1092L5378,1089L5380,1089L5380,1087L5382,1087L5382,1084L5399,1084L5399,1082L5408,1082L5412,1077L5417,1074L5425,1074L5430,1077L5432,1077L5436,1082L5436,1087L5438,1089L5438,1092L5440,1092L5440,1094L5449,1105L5451,1105L5453,1107L5453,1110L5456,1112L5458,1112L5460,1115L5462,1115L5462,1120L5464,1122L5464,1125L5466,1125L5466,1133L5464,1135L5462,1140L5462,1150L5464,1156L5464,1161L5462,1161L5464,1163L5464,1166L5466,1166L5466,1168L5469,1168L5469,1171L5475,1171L5477,1173L5482,1173L5482,1171L5492,1166L5503,1166L5503,1168L5505,1168L5505,1181L5503,1184L5503,1186L5488,1186L5488,1181L5490,1181L5488,1179L5486,1179L5484,1181L5484,1184L5485,1188L5484,1196L5477,1201L5477,1214L5475,1217L5475,1222L5471,1222L5466,1219L5462,1219L5460,1217L5458,1217L5458,1212L5456,1212L5456,1214L5451,1214L5451,1212L5443,1212L5440,1209L5434,1209L5432,1207L5430,1209L5421,1209L5417,1212L5408,1212L5408,1214L5406,1214L5401,1217L5397,1222L5395,1222L5393,1224L5384,1224L5382,1222L5365,1222L5365,1219L5362,1219L5360,1222L5347,1222L5341,1219L5334,1219L5334,1217L5326,1217L5323,1219L5319,1219L5317,1217L5315,1217L5317,1214L5317,1212L5321,1212L5321,1209L5317,1209L5313,1207L5310,1207L5310,1204L5308,1204L5308,1201L5306,1201L5306,1199L5304,1196L5306,1196L5308,1194L5310,1194L5310,1196L5313,1196L5313,1194L5310,1191L5306,1191L5306,1189L5304,1189L5302,1191L5300,1191L5300,1194L5297,1196L5295,1196L5293,1194L5293,1191L5282,1191L5282,1189L5280,1189L5280,1186L5274,1186L5274,1184L5280,1184L5280,1181L5276,1181L5276,1179L5278,1176L5278,1173L5271,1173L5258,1163L5258,1156L5256,1156L5254,1153L5254,1150L5250,1150L5248,1148L5245,1148L5245,1145L5243,1143L5245,1143L5250,1140L5252,1140L5252,1143L5256,1143L5256,1140L5258,1140L5258,1138L5265,1138L5265,1140L5267,1140L5269,1138L5269,1135L5274,1130L5274,1128L5276,1125L5278,1125L5280,1122L5278,1122L5278,1120L5280,1120L5282,1117L5282,1115L5282,1115L5282,1115z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5538,2719L5538,2729L5527,2729L5527,2726L5525,2726L5523,2729L5518,2732L5514,2726L5512,2726L5512,2742L5503,2742L5501,2744L5499,2742L5497,2744L5497,2739L5495,2737L5488,2737L5488,2742L5488,2739L5484,2739L5482,2734L5484,2729L5486,2726L5490,2726L5490,2721L5492,2721L5492,2719L5490,2719L5490,2711L5495,2706L5495,2704L5497,2701L5499,2701L5503,2696L5508,2696L5510,2693L5510,2696L5512,2696L5512,2698L5514,2698L5518,2696L5518,2693L5521,2693L5523,2691L5523,2688L5525,2686L5527,2686L5527,2688L5529,2696L5533,2696L5536,2698L5536,2701L5538,2706L5538,2719L5538,2719L5538,2719z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4324,2153L4328,2158L4330,2158L4333,2160L4335,2160L4335,2163L4339,2168L4341,2168L4341,2181L4343,2181L4347,2183L4347,2186L4349,2188L4349,2191L4347,2193L4349,2193L4349,2201L4347,2201L4347,2206L4351,2211L4351,2214L4353,2216L4355,2214L4360,2214L4360,2216L4362,2216L4362,2219L4360,2219L4362,2222L4362,2224L4364,2224L4366,2227L4366,2229L4364,2232L4364,2242L4366,2245L4357,2245L4357,2247L4353,2247L4351,2245L4347,2245L4344,2247L4342,2247L4338,2250L4338,2247L4331,2247L4331,2245L4327,2245L4325,2242L4321,2242L4321,2245L4318,2245L4318,2237L4258,2237L4253,2242L4247,2245L4232,2245L4225,2247L4217,2247L4214,2245L4214,2242L4217,2242L4217,2239L4214,2239L4214,2229L4217,2229L4217,2222L4243,2222L4243,2214L4258,2214L4258,2211L4260,2211L4260,2206L4262,2206L4262,2209L4264,2209L4266,2211L4271,2211L4271,2214L4275,2214L4277,2216L4282,2219L4288,2219L4288,2216L4297,2216L4297,2214L4299,2214L4299,2211L4297,2211L4297,2209L4295,2209L4292,2206L4290,2209L4286,2209L4286,2211L4282,2211L4282,2209L4279,2209L4279,2206L4277,2206L4276,2204L4272,2204L4273,2206L4270,2204L4270,2201L4266,2201L4261,2199L4259,2201L4253,2201L4250,2204L4251,2206L4221,2206L4218,2204L4218,2201L4216,2201L4216,2194L4214,2194L4214,2188L4211,2188L4211,2186L4209,2181L4207,2178L4205,2178L4205,2173L4203,2173L4203,2171L4200,2171L4198,2170L4196,2171L4196,2173L4194,2168L4198,2168L4203,2166L4203,2163L4205,2163L4209,2158L4211,2153L4214,2150L4214,2148L4218,2143L4222,2127L4222,2125L4224,2122L4224,2120L4227,2120L4227,2112L4229,2112L4231,2109L4233,2109L4233,2112L4248,2112L4250,2109L4261,2109L4263,2107L4263,2104L4266,2107L4283,2107L4292,2117L4292,2120L4296,2125L4300,2122L4300,2125L4305,2125L4309,2127L4311,2130L4313,2137L4313,2140L4315,2143L4315,2145L4320,2145L4322,2148L4322,2150L4324,2150L4324,2153L4324,2153L4324,2153z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4330,2407L4321,2405L4319,2401L4334,2403L4331,2400L4329,2400L4327,2398L4323,2395L4321,2392L4323,2392L4323,2385L4321,2385L4321,2382L4316,2382L4314,2380L4312,2375L4318,2375L4321,2372L4323,2372L4323,2369L4318,2369L4316,2372L4314,2372L4314,2362L4316,2362L4316,2359L4312,2359L4312,2355L4316,2354L4316,2357L4318,2357L4318,2354L4321,2354L4321,2349L4323,2347L4325,2347L4325,2349L4325,2347L4329,2344L4329,2341L4331,2339L4331,2336L4334,2329L4336,2329L4342,2326L4344,2329L4351,2326L4351,2324L4370,2324L4370,2326L4379,2336L4381,2341L4383,2344L4383,2347L4386,2347L4386,2349L4383,2349L4383,2354L4388,2354L4388,2362L4390,2367L4386,2372L4383,2377L4383,2380L4390,2380L4390,2377L4392,2377L4392,2375L4394,2372L4396,2375L4394,2382L4394,2385L4388,2385L4388,2395L4386,2398L4383,2398L4383,2400L4379,2405L4377,2405L4373,2410L4373,2413L4370,2413L4370,2415L4368,2415L4366,2418L4366,2423L4364,2423L4364,2426L4362,2426L4362,2423L4357,2423L4357,2420L4355,2420L4353,2418L4351,2418L4340,2413L4338,2410L4334,2410L4334,2408L4330,2407L4330,2407L4330,2407z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5202,1087L5202,1089L5174,1089L5167,1087L5163,1082L5157,1082L5157,1079L5154,1077L5152,1077L5152,1071L5150,1071L5150,1069L5148,1069L5152,1064L5152,1059L5154,1059L5154,1056L5157,1054L5174,1054L5178,1048L5183,1048L5185,1046L5185,1043L5187,1043L5187,1041L5189,1038L5191,1038L5196,1033L5209,1033L5209,1036L5215,1036L5215,1033L5217,1031L5224,1031L5224,1033L5226,1033L5228,1036L5230,1036L5230,1038L5232,1041L5230,1041L5230,1043L5232,1043L5235,1041L5237,1041L5237,1043L5239,1043L5239,1041L5241,1038L5243,1038L5245,1036L5256,1036L5258,1038L5265,1038L5265,1036L5267,1036L5271,1033L5276,1036L5289,1036L5293,1041L5293,1043L5302,1043L5306,1046L5308,1046L5308,1048L5306,1048L5306,1051L5304,1054L5304,1056L5300,1061L5297,1061L5297,1069L5289,1069L5287,1071L5284,1071L5284,1069L5282,1066L5278,1064L5252,1064L5248,1069L5248,1071L5245,1071L5245,1074L5239,1074L5239,1077L5230,1077L5230,1074L5224,1074L5224,1077L5222,1077L5222,1079L5204,1079L5204,1082L5202,1082L5202,1087L5202,1087L5202,1087z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5124,1122L5124,1120L5131,1120L5133,1117L5133,1120L5135,1120L5135,1122L5137,1125L5139,1130L5141,1133L5139,1130L5133,1130L5133,1133L5128,1133L5128,1135L5126,1138L5120,1140L5115,1140L5115,1145L5118,1145L5118,1153L5111,1153L5107,1156L5107,1163L5105,1166L5102,1166L5100,1163L5094,1163L5094,1166L5092,1166L5087,1161L5087,1158L5085,1158L5085,1161L5083,1161L5083,1163L5070,1163L5070,1166L5059,1166L5059,1163L5064,1163L5064,1161L5066,1161L5068,1158L5066,1156L5064,1156L5059,1150L5059,1148L5055,1148L5059,1143L5061,1143L5061,1140L5053,1140L5053,1138L5055,1135L5057,1135L5061,1133L5061,1130L5072,1130L5072,1133L5085,1133L5092,1130L5094,1130L5094,1128L5098,1125L5115,1125L5120,1122L5124,1122L5124,1122L5124,1122z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6100,2308L6101,2303L6101,2288L6103,2288L6103,2285L6099,2285L6099,2280L6101,2275L6103,2273L6103,2270L6105,2270L6105,2265L6094,2260L6088,2260L6086,2262L6084,2262L6084,2267L6081,2270L6073,2275L6071,2275L6064,2278L6062,2278L6062,2275L6060,2275L6058,2278L6055,2278L6055,2280L6053,2280L6047,2283L6036,2283L6034,2280L6029,2280L6023,2283L6021,2285L6019,2285L6019,2288L6003,2288L6001,2285L5997,2285L5991,2288L5991,2290L5988,2290L5988,2293L5986,2293L5980,2298L5978,2301L5967,2301L5967,2298L5956,2298L5954,2295L5952,2295L5949,2298L5945,2301L5943,2303L5939,2303L5939,2306L5936,2306L5930,2311L5926,2311L5923,2308L5921,2308L5921,2311L5910,2311L5910,2308L5908,2308L5900,2298L5897,2298L5895,2293L5889,2285L5889,2280L5887,2280L5882,2275L5882,2278L5880,2278L5880,2280L5878,2283L5878,2285L5876,2290L5874,2290L5874,2293L5869,2298L5867,2303L5867,2308L5869,2308L5869,2313L5871,2313L5871,2318L5874,2318L5874,2321L5876,2321L5876,2326L5878,2326L5880,2329L5882,2329L5882,2336L5884,2336L5887,2339L5887,2344L5889,2344L5891,2347L5893,2347L5904,2357L5986,2390L6014,2390L6006,2400L6001,2403L5958,2454L5958,2456L5932,2489L5930,2489L5930,2492L5900,2489L5900,2492L5891,2492L5889,2494L5884,2494L5884,2497L5880,2497L5880,2500L5878,2500L5878,2502L5876,2502L5876,2505L5874,2505L5874,2510L5871,2510L5869,2512L5861,2512L5858,2515L5850,2515L5848,2517L5845,2517L5845,2522L5841,2525L5830,2548L5819,2558L5819,2681L5835,2704L5835,2706L5837,2706L5837,2704L5839,2704L5839,2701L5845,2688L5848,2686L5850,2681L5856,2673L5858,2668L5861,2668L5861,2665L5863,2663L5863,2660L5865,2660L5882,2640L5882,2637L5884,2637L5884,2635L5893,2624L5897,2622L5902,2617L5906,2614L5906,2612L5908,2612L5913,2607L5919,2602L5919,2599L5928,2594L5930,2591L5932,2591L5932,2589L5934,2589L5936,2586L5939,2586L5941,2584L5945,2581L5947,2581L5949,2579L5954,2576L5958,2571L5960,2571L5965,2566L5965,2563L5969,2561L5984,2543L5986,2538L5988,2538L5988,2535L5991,2535L5993,2533L5993,2530L5997,2528L6001,2522L6001,2520L6006,2515L6010,2507L6012,2507L6012,2505L6014,2505L6014,2502L6016,2500L6016,2497L6019,2494L6019,2492L6021,2492L6023,2487L6023,2484L6025,2484L6029,2477L6034,2471L6036,2464L6038,2461L6042,2451L6043,2449L6045,2448L6045,2438L6049,2431L6049,2428L6051,2423L6053,2420L6055,2415L6060,2410L6060,2408L6062,2403L6064,2400L6064,2392L6068,2387L6071,2387L6071,2385L6073,2385L6073,2380L6075,2380L6075,2377L6079,2372L6079,2369L6081,2362L6084,2359L6084,2357L6086,2357L6088,2354L6088,2349L6090,2349L6090,2347L6092,2344L6092,2336L6094,2324L6094,2313L6097,2313L6100,2308L6100,2308L6100,2308z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5453,3596L5449,3601L5449,3604L5445,3609L5443,3609L5440,3614L5440,3616L5436,3616L5436,3619L5432,3619L5432,3622L5434,3622L5434,3624L5436,3627L5436,3632L5438,3632L5440,3634L5440,3639L5443,3642L5445,3642L5447,3645L5447,3647L5449,3647L5451,3652L5460,3652L5462,3655L5462,3650L5464,3650L5466,3642L5466,3639L5469,3639L5469,3637L5477,3637L5482,3634L5484,3634L5488,3632L5490,3632L5490,3629L5492,3629L5490,3627L5490,3624L5492,3622L5492,3619L5495,3619L5495,3614L5499,3614L5499,3609L5497,3604L5497,3601L5492,3601L5486,3596L5484,3594L5484,3591L5482,3591L5477,3586L5471,3586L5471,3588L5469,3588L5466,3591L5464,3591L5464,3588L5460,3594L5460,3596L5453,3596L5453,3596L5453,3596zM5360,3494L5365,3494L5365,3497L5371,3497L5373,3494L5375,3494L5375,3492L5378,3492L5378,3494L5386,3494L5386,3492L5391,3492L5393,3489L5393,3486L5395,3484L5399,3471L5399,3461L5401,3461L5404,3458L5408,3458L5410,3456L5417,3456L5417,3451L5419,3451L5423,3446L5427,3446L5427,3438L5430,3433L5430,3425L5434,3425L5434,3423L5436,3420L5440,3418L5443,3415L5447,3415L5447,3410L5453,3410L5458,3405L5458,3402L5464,3395L5464,3392L5466,3390L5477,3390L5482,3387L5484,3384L5486,3384L5486,3382L5488,3377L5499,3377L5505,3374L5508,3374L5510,3377L5512,3377L5523,3382L5533,3382L5536,3379L5540,3379L5542,3382L5549,3382L5551,3384L5557,3405L5557,3420L5559,3420L5559,3423L5562,3423L5562,3428L5566,3433L5566,3441L5570,3451L5570,3492L5568,3494L5568,3499L5566,3502L5564,3499L5562,3499L5559,3497L5553,3492L5544,3502L5544,3504L5542,3507L5542,3509L5538,3514L5538,3517L5536,3517L5536,3525L5538,3525L5538,3527L5540,3527L5544,3537L5549,3543L5553,3543L5557,3545L5570,3545L5570,3543L5568,3543L5568,3535L5570,3527L5572,3527L5575,3530L5594,3530L5594,3537L5590,3545L5590,3550L5588,3550L5588,3558L5585,3563L5585,3573L5583,3576L5583,3578L5581,3578L5581,3586L5577,3588L5570,3596L5566,3596L5566,3599L5562,3599L5562,3601L5557,3604L5557,3606L5555,3609L5553,3609L5553,3611L5551,3611L5546,3622L5544,3622L5542,3629L5542,3632L5540,3632L5538,3634L5538,3637L5536,3642L5531,3647L5521,3668L5512,3678L5510,3678L5510,3680L5505,3680L5505,3683L5503,3683L5499,3688L5495,3690L5495,3693L5492,3696L5490,3701L5484,3706L5475,3716L5473,3716L5469,3721L5466,3721L5462,3726L5460,3726L5453,3734L5451,3734L5447,3736L5443,3741L5440,3741L5436,3747L5434,3747L5432,3749L5427,3749L5423,3752L5421,3754L5419,3754L5417,3757L5412,3754L5395,3754L5395,3757L5393,3759L5393,3762L5395,3762L5395,3764L5386,3764L5384,3762L5373,3762L5373,3764L5371,3769L5360,3769L5360,3767L5358,3767L5339,3762L5334,3762L5332,3764L5330,3764L5330,3767L5319,3767L5315,3764L5297,3764L5297,3767L5295,3767L5291,3769L5291,3772L5289,3775L5287,3775L5284,3777L5282,3775L5276,3775L5276,3777L5269,3777L5269,3775L5261,3775L5261,3777L5250,3777L5250,3780L5248,3780L5248,3782L5243,3785L5241,3785L5237,3790L5235,3790L5235,3787L5224,3787L5224,3785L5222,3782L5217,3782L5219,3780L5217,3777L5213,3777L5211,3775L5204,3775L5204,3767L5202,3767L5202,3764L5196,3764L5196,3767L5193,3767L5193,3769L5196,3775L5193,3775L5191,3772L5189,3764L5191,3759L5193,3759L5193,3754L5189,3747L5189,3744L5187,3744L5185,3741L5185,3736L5183,3731L5178,3731L5176,3724L5178,3724L5180,3721L5183,3724L5185,3724L5189,3718L5189,3716L5191,3713L5191,3706L5189,3703L5189,3693L5187,3690L5187,3688L5178,3678L5178,3675L5176,3673L5176,3670L5174,3670L5174,3668L5170,3662L5167,3655L5165,3652L5165,3650L5161,3645L5161,3642L5159,3639L5159,3634L5157,3629L5157,3627L5154,3624L5154,3616L5152,3616L5152,3611L5150,3611L5148,3604L5148,3601L5144,3596L5142,3591L5139,3588L5139,3586L5144,3583L5144,3581L5146,3581L5146,3583L5148,3581L5148,3576L5150,3571L5150,3568L5157,3568L5157,3571L5159,3571L5159,3576L5161,3576L5161,3573L5163,3573L5163,3576L5165,3578L5165,3581L5163,3581L5163,3583L5165,3591L5167,3588L5170,3588L5170,3591L5174,3591L5178,3594L5183,3594L5183,3596L5191,3596L5200,3594L5202,3594L5206,3596L5209,3596L5211,3599L5213,3599L5215,3596L5215,3591L5222,3591L5222,3588L5224,3586L5224,3583L5232,3583L5237,3581L5237,3461L5241,3466L5243,3466L5250,3474L5252,3479L5254,3481L5254,3484L5256,3486L5256,3494L5258,3497L5261,3507L5258,3509L5258,3512L5256,3512L5256,3514L5254,3514L5254,3527L5256,3530L5258,3530L5258,3527L5263,3527L5265,3530L5274,3530L5274,3527L5276,3527L5278,3530L5284,3530L5284,3527L5287,3527L5287,3522L5293,3522L5297,3517L5297,3514L5300,3512L5302,3512L5306,3507L5310,3504L5310,3502L5313,3502L5313,3492L5315,3492L5315,3486L5317,3481L5319,3479L5321,3479L5326,3476L5328,3476L5332,3479L5334,3479L5336,3481L5339,3481L5339,3484L5341,3484L5347,3492L5347,3489L5354,3489L5354,3492L5356,3492L5358,3494L5360,3494L5360,3494L5360,3494z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4249,1745L4245,1745L4243,1742L4243,1734L4245,1734L4245,1729L4247,1729L4253,1732L4253,1742L4249,1742L4249,1745L4249,1745L4249,1745zM4219,1737L4217,1734L4217,1732L4214,1732L4214,1729L4212,1724L4217,1724L4221,1722L4223,1722L4225,1719L4227,1719L4230,1717L4232,1717L4232,1719L4230,1719L4230,1722L4227,1724L4225,1729L4225,1732L4223,1732L4223,1734L4221,1734L4219,1737L4219,1737L4219,1737zM4286,1727L4287,1724L4287,1721L4289,1719L4289,1716L4292,1714L4292,1712L4297,1712L4297,1724L4295,1724L4295,1729L4290,1729L4284,1734L4279,1734L4286,1727L4286,1727L4286,1727zM4187,1722L4185,1722L4184,1717L4182,1712L4182,1709L4188,1709L4188,1717L4187,1722L4187,1722L4187,1722zM4299,1709L4297,1709L4297,1704L4299,1701L4308,1696L4308,1704L4305,1704L4303,1706L4299,1706L4299,1709L4299,1709L4299,1709zM4719,1383L4719,1380L4715,1380L4715,1377L4717,1375L4719,1375L4721,1372L4726,1372L4726,1375L4719,1383L4719,1383L4719,1383zM4747,1360L4747,1357L4752,1352L4756,1349L4758,1349L4765,1347L4767,1347L4769,1349L4769,1352L4773,1352L4773,1349L4775,1352L4778,1352L4778,1354L4771,1362L4771,1365L4767,1367L4765,1367L4765,1365L4758,1365L4758,1362L4756,1360L4758,1360L4756,1357L4752,1360L4747,1360L4747,1360L4747,1360zM4799,1349L4795,1347L4793,1347L4791,1346L4791,1347L4788,1347L4786,1342L4797,1342L4801,1347L4801,1349L4799,1349L4799,1349L4799,1349zM4487,1281L4485,1281L4485,1278L4481,1278L4481,1281L4479,1283L4470,1283L4468,1281L4466,1281L4464,1283L4453,1283L4453,1281L4455,1278L4457,1278L4457,1275L4453,1273L4451,1275L4442,1275L4438,1278L4438,1281L4435,1281L4434,1276L4435,1274L4440,1272L4436,1271L4438,1268L4440,1267L4433,1265L4434,1263L4436,1262L4438,1261L4438,1258L4440,1255L4435,1255L4431,1260L4429,1260L4429,1258L4433,1252L4427,1252L4429,1250L4427,1250L4427,1247L4422,1247L4425,1245L4425,1240L4431,1240L4433,1237L4431,1237L4431,1235L4440,1235L4448,1232L4451,1232L4453,1227L4459,1222L4461,1219L4464,1219L4464,1222L4477,1222L4477,1224L4479,1224L4479,1227L4516,1227L4518,1224L4520,1224L4522,1227L4535,1227L4535,1230L4546,1230L4548,1232L4568,1232L4570,1230L4585,1230L4589,1232L4591,1232L4593,1235L4598,1235L4598,1232L4611,1232L4613,1235L4626,1235L4630,1232L4632,1232L4632,1235L4639,1235L4641,1237L4643,1237L4643,1240L4641,1240L4641,1245L4643,1245L4645,1242L4648,1245L4654,1245L4654,1247L4661,1247L4661,1250L4665,1252L4669,1252L4671,1250L4674,1250L4676,1252L4678,1252L4680,1255L4700,1255L4700,1250L4704,1250L4706,1252L4713,1252L4713,1255L4719,1255L4721,1258L4721,1263L4734,1263L4736,1265L4741,1265L4745,1263L4745,1265L4749,1265L4749,1268L4756,1268L4756,1265L4762,1263L4769,1263L4769,1268L4773,1268L4773,1270L4767,1270L4767,1273L4769,1273L4769,1275L4771,1275L4771,1281L4769,1283L4765,1286L4762,1286L4762,1288L4756,1291L4752,1291L4745,1296L4743,1296L4741,1298L4741,1301L4736,1301L4734,1303L4723,1303L4723,1306L4715,1306L4710,1309L4708,1309L4708,1311L4706,1311L4702,1316L4700,1316L4702,1319L4706,1319L4706,1321L4697,1324L4695,1326L4693,1329L4691,1334L4689,1337L4687,1337L4682,1342L4682,1344L4676,1352L4671,1360L4671,1362L4674,1372L4680,1380L4684,1380L4684,1383L4687,1383L4687,1385L4684,1385L4682,1388L4680,1388L4680,1390L4678,1390L4674,1393L4671,1393L4671,1395L4667,1398L4661,1413L4656,1418L4658,1418L4658,1421L4661,1421L4656,1423L4643,1423L4641,1426L4639,1426L4639,1428L4635,1428L4635,1431L4632,1434L4630,1434L4630,1439L4628,1441L4628,1444L4626,1444L4626,1446L4624,1449L4622,1449L4622,1451L4619,1451L4619,1449L4617,1446L4611,1446L4609,1449L4609,1451L4600,1451L4600,1449L4589,1449L4587,1451L4583,1451L4581,1449L4578,1449L4578,1451L4576,1449L4570,1449L4565,1451L4557,1451L4557,1454L4552,1456L4550,1459L4548,1459L4546,1456L4544,1459L4539,1459L4533,1467L4533,1469L4531,1469L4531,1472L4526,1474L4520,1472L4520,1469L4513,1469L4513,1467L4507,1459L4509,1459L4509,1454L4503,1454L4503,1449L4505,1446L4485,1434L4479,1434L4479,1436L4477,1436L4474,1434L4474,1426L4472,1423L4474,1418L4477,1416L4479,1416L4479,1411L4487,1408L4486,1406L4486,1403L4483,1403L4483,1400L4479,1395L4479,1385L4481,1385L4483,1383L4485,1383L4485,1380L4487,1375L4487,1372L4483,1372L4481,1370L4479,1365L4479,1362L4477,1360L4472,1357L4472,1354L4487,1354L4487,1352L4490,1342L4490,1339L4487,1339L4485,1337L4487,1337L4487,1334L4492,1334L4492,1311L4490,1311L4490,1309L4494,1309L4494,1306L4496,1303L4498,1303L4500,1301L4503,1301L4509,1293L4509,1291L4507,1291L4507,1288L4498,1288L4500,1286L4500,1281L4487,1281L4487,1281L4487,1281z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6898,2423L6898,2398L6896,2392L6896,2390L6898,2390L6898,2382L6900,2372L6902,2369L6902,2364L6900,2362L6900,2359L6902,2357L6905,2357L6905,2354L6907,2352L6907,2347L6905,2344L6907,2344L6908,2340L6906,2338L6900,2336L6900,2333L6907,2328L6911,2328L6924,2347L6926,2347L6926,2349L6928,2357L6928,2359L6931,2359L6937,2367L6937,2372L6935,2372L6935,2375L6939,2375L6939,2372L6941,2375L6941,2377L6943,2382L6941,2385L6941,2387L6943,2387L6946,2390L6948,2395L6950,2398L6950,2403L6952,2403L6952,2408L6954,2408L6954,2418L6956,2423L6954,2423L6954,2431L6952,2433L6952,2436L6950,2438L6950,2441L6948,2441L6941,2446L6939,2449L6933,2451L6931,2451L6928,2454L6924,2454L6924,2456L6922,2456L6920,2459L6915,2456L6911,2456L6905,2449L6905,2443L6902,2441L6902,2436L6900,2433L6900,2431L6898,2428L6898,2423L6898,2423L6898,2423z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3108,2584L3103,2579L3103,2576L3101,2571L3099,2571L3095,2561L3093,2558L3093,2551L3090,2551L3090,2540L3086,2543L3084,2543L3082,2540L3080,2540L3080,2535L3077,2533L3075,2533L3075,2528L3073,2528L3073,2525L3069,2520L3069,2512L3071,2512L3071,2510L3075,2500L3075,2497L3073,2494L3073,2492L3075,2489L3080,2487L3082,2487L3086,2489L3088,2487L3088,2484L3090,2484L3092,2482L3088,2477L3090,2477L3090,2471L3093,2469L3093,2466L3094,2460L3097,2456L3112,2456L3125,2461L3129,2461L3127,2459L3129,2459L3129,2456L3145,2456L3147,2459L3149,2459L3149,2456L3164,2456L3173,2459L3177,2459L3181,2461L3181,2471L3180,2472L3179,2474L3175,2479L3173,2479L3173,2482L3168,2487L3168,2500L3171,2500L3171,2502L3168,2502L3168,2507L3171,2507L3171,2520L3173,2520L3173,2522L3177,2528L3179,2528L3181,2533L3181,2538L3179,2543L3177,2545L3177,2548L3175,2548L3177,2551L3177,2561L3175,2561L3175,2563L3173,2566L3173,2568L3171,2568L3171,2571L3168,2573L3164,2576L3162,2576L3162,2571L3158,2571L3155,2568L3151,2568L3134,2573L3129,2571L3129,2568L3127,2568L3123,2573L3123,2579L3125,2579L3129,2584L3129,2589L3127,2591L3123,2591L3121,2589L3112,2589L3112,2586L3110,2586L3110,2584L3108,2584L3108,2584L3108,2584z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5540,3527L5538,3527L5538,3525L5536,3525L5536,3517L5538,3517L5538,3514L5542,3509L5542,3507L5544,3504L5544,3502L5553,3492L5559,3497L5562,3499L5564,3499L5566,3502L5568,3499L5570,3502L5572,3502L5572,3517L5575,3527L5575,3530L5572,3527L5570,3527L5568,3535L5568,3543L5570,3543L5570,3545L5557,3545L5553,3543L5549,3543L5544,3537L5540,3527L5540,3527L5540,3527z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4849,1140L4851,1138L4851,1128L4856,1125L4858,1125L4858,1122L4860,1122L4860,1117L4862,1115L4866,1115L4866,1112L4871,1110L4875,1105L4875,1102L4873,1102L4875,1097L4879,1097L4882,1099L4890,1099L4890,1094L4895,1094L4892,1097L4905,1097L4905,1094L4914,1094L4916,1097L4916,1092L4914,1092L4916,1089L4925,1089L4929,1094L4929,1092L4938,1092L4944,1094L4947,1097L4947,1099L4949,1099L4951,1102L4949,1102L4947,1105L4946,1107L4949,1110L4949,1112L4951,1112L4955,1115L4955,1117L4957,1117L4960,1120L4964,1120L4966,1117L4968,1117L4968,1115L4970,1115L4973,1117L4973,1120L4970,1122L4973,1128L4973,1130L4968,1130L4966,1128L4966,1125L4964,1128L4962,1128L4960,1130L4960,1133L4962,1133L4964,1135L4964,1140L4960,1140L4960,1138L4957,1135L4953,1135L4951,1138L4947,1138L4944,1135L4944,1133L4942,1130L4938,1130L4938,1133L4940,1133L4940,1138L4938,1138L4938,1140L4936,1140L4936,1143L4934,1143L4931,1145L4931,1150L4934,1150L4931,1153L4929,1153L4929,1148L4927,1148L4927,1143L4921,1143L4916,1140L4916,1133L4912,1133L4908,1140L4908,1143L4903,1148L4899,1148L4899,1150L4897,1150L4895,1148L4888,1148L4888,1150L4877,1150L4877,1148L4875,1148L4871,1143L4869,1143L4871,1135L4871,1133L4858,1133L4856,1135L4853,1135L4853,1138L4856,1138L4856,1140L4853,1140L4851,1143L4847,1143L4847,1140L4849,1140L4849,1140L4849,1140z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5679,1500L5679,1492L5676,1492L5674,1487L5676,1485L5676,1482L5679,1479L5679,1477L5681,1477L5685,1479L5685,1477L5687,1477L5687,1474L5692,1474L5692,1467L5700,1467L5700,1464L5698,1462L5696,1462L5696,1459L5700,1449L5700,1446L5707,1449L5709,1449L5709,1451L5720,1451L5720,1454L5728,1449L5735,1449L5735,1446L5739,1446L5741,1444L5748,1444L5748,1446L5752,1446L5757,1451L5780,1451L5787,1449L5791,1449L5791,1446L5798,1444L5800,1444L5804,1441L5806,1441L5811,1439L5815,1439L5817,1436L5824,1439L5835,1439L5843,1436L5850,1436L5850,1434L5852,1434L5852,1431L5854,1431L5856,1434L5858,1434L5858,1439L5843,1454L5830,1456L5830,1459L5828,1462L5826,1472L5830,1477L5830,1487L5828,1490L5828,1495L5826,1495L5826,1515L5822,1520L5822,1523L5819,1525L5763,1558L5759,1558L5759,1561L5757,1561L5705,1594L5696,1594L5694,1592L5692,1592L5687,1587L5685,1589L5685,1587L5683,1587L5679,1581L5672,1581L5672,1579L5670,1579L5672,1576L5670,1576L5670,1571L5672,1571L5672,1564L5670,1564L5674,1561L5676,1561L5676,1558L5679,1558L5679,1556L5683,1553L5681,1551L5679,1551L5681,1548L5681,1546L5683,1546L5687,1543L5692,1546L5692,1543L5689,1543L5689,1541L5692,1541L5692,1538L5696,1536L5698,1533L5696,1528L5696,1525L5694,1523L5692,1523L5692,1520L5694,1520L5694,1518L5679,1518L5679,1510L5676,1510L5679,1507L5679,1500L5679,1500L5679,1500z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8018,1882L8018,1877L8020,1875L8020,1872L8022,1870L8022,1867L8026,1862L8026,1859L8029,1857L8029,1854L8031,1854L8031,1852L8033,1849L8033,1847L8039,1839L8039,1836L8044,1831L8046,1831L8048,1829L8055,1829L8052,1829L8052,1826L8055,1826L8055,1824L8057,1824L8061,1829L8065,1829L8070,1834L8068,1834L8065,1836L8065,1839L8063,1839L8063,1847L8065,1847L8065,1852L8063,1852L8063,1857L8061,1859L8059,1859L8059,1870L8055,1882L8055,1887L8052,1895L8046,1908L8044,1908L8042,1910L8042,1913L8039,1916L8037,1921L8037,1923L8039,1928L8037,1931L8037,1933L8033,1933L8033,1926L8031,1923L8031,1921L8029,1921L8029,1918L8026,1918L8026,1916L8022,1916L8022,1913L8022,1916L8022,1913L8020,1910L8020,1905L8018,1903L8018,1898L8016,1898L8016,1890L8018,1890L8018,1882L8018,1882L8018,1882z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6668,1360L6668,1362L6673,1362L6673,1360L6675,1360L6675,1362L6673,1365L6675,1367L6677,1367L6679,1365L6684,1365L6684,1367L6688,1370L6690,1367L6690,1365L6699,1365L6699,1362L6701,1362L6703,1365L6714,1365L6723,1360L6727,1362L6727,1367L6725,1367L6729,1372L6729,1375L6731,1375L6731,1377L6729,1377L6729,1383L6731,1388L6731,1390L6738,1390L6740,1388L6746,1388L6755,1390L6757,1390L6759,1393L6759,1408L6762,1408L6762,1416L6764,1416L6762,1418L6762,1423L6766,1423L6766,1426L6770,1428L6762,1434L6759,1431L6755,1428L6742,1428L6740,1431L6738,1431L6733,1434L6725,1434L6727,1431L6729,1431L6729,1426L6727,1426L6727,1428L6725,1426L6716,1426L6714,1428L6712,1428L6710,1431L6705,1434L6703,1434L6701,1436L6701,1439L6699,1441L6690,1441L6688,1444L6681,1446L6677,1451L6668,1451L6668,1449L6664,1439L6664,1436L6666,1434L6666,1421L6668,1418L6668,1411L6664,1411L6662,1413L6660,1411L6660,1408L6662,1405L6662,1403L6664,1403L6664,1400L6662,1400L6662,1398L6658,1398L6658,1395L6653,1393L6651,1393L6647,1395L6645,1395L6634,1408L6634,1411L6629,1411L6629,1413L6632,1413L6632,1416L6634,1416L6634,1418L6629,1423L6623,1423L6623,1421L6621,1421L6619,1423L6612,1423L6608,1426L6608,1434L6610,1434L6610,1436L6608,1436L6606,1439L6603,1439L6597,1431L6593,1431L6588,1434L6586,1434L6586,1436L6582,1439L6580,1439L6577,1441L6575,1441L6571,1444L6569,1444L6564,1439L6564,1426L6567,1423L6567,1421L6569,1421L6569,1418L6571,1418L6571,1416L6573,1416L6573,1411L6577,1411L6580,1408L6580,1400L6577,1398L6575,1398L6573,1395L6571,1390L6571,1388L6573,1383L6575,1383L6575,1380L6573,1377L6573,1375L6569,1375L6567,1377L6562,1377L6562,1375L6560,1375L6562,1372L6560,1372L6560,1370L6551,1370L6551,1367L6554,1367L6554,1360L6556,1360L6560,1357L6562,1354L6564,1354L6564,1357L6575,1357L6580,1360L6582,1360L6586,1354L6586,1352L6588,1349L6588,1347L6590,1347L6590,1349L6595,1347L6590,1342L6597,1342L6597,1339L6586,1339L6586,1337L6606,1337L6608,1332L6606,1332L6606,1324L6608,1319L6608,1316L6610,1316L6612,1319L6614,1319L6616,1321L6621,1321L6621,1319L6627,1319L6632,1316L6634,1314L6636,1314L6636,1309L6638,1309L6645,1316L6645,1319L6647,1319L6647,1321L6645,1321L6636,1326L6636,1329L6634,1329L6636,1332L6638,1332L6642,1334L6642,1337L6649,1337L6645,1339L6642,1339L6642,1344L6640,1347L6638,1347L6638,1344L6640,1344L6640,1342L6636,1342L6634,1339L6627,1337L6621,1337L6616,1339L6612,1339L6612,1342L6610,1342L6612,1344L6612,1347L6610,1347L6608,1344L6606,1344L6606,1349L6603,1352L6606,1352L6606,1360L6612,1360L6612,1357L6621,1357L6621,1360L6625,1357L6645,1357L6645,1362L6655,1362L6655,1360L6658,1360L6662,1357L6664,1357L6666,1354L6666,1357L6668,1357L6668,1360L6668,1360L6668,1360z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7496,2426L7500,2426L7500,2428L7502,2428L7502,2431L7507,2436L7507,2438L7509,2438L7509,2441L7515,2446L7517,2449L7517,2451L7515,2454L7513,2454L7513,2459L7509,2464L7507,2461L7507,2464L7504,2464L7504,2459L7498,2459L7491,2466L7489,2466L7485,2461L7487,2459L7489,2459L7489,2446L7485,2446L7485,2449L7483,2449L7483,2443L7478,2438L7476,2441L7470,2438L7468,2436L7468,2433L7465,2433L7463,2431L7463,2441L7461,2441L7461,2438L7459,2438L7459,2436L7457,2436L7457,2433L7452,2428L7450,2428L7450,2418L7446,2418L7446,2415L7442,2413L7439,2410L7439,2408L7437,2403L7437,2400L7435,2398L7433,2398L7433,2400L7431,2400L7431,2392L7429,2390L7424,2390L7424,2382L7422,2380L7420,2380L7420,2377L7418,2377L7416,2380L7416,2382L7414,2388L7412,2388L7411,2382L7411,2380L7409,2377L7409,2362L7411,2359L7411,2357L7413,2354L7411,2349L7413,2349L7413,2344L7418,2334L7418,2326L7422,2318L7422,2316L7424,2313L7424,2308L7426,2308L7424,2306L7424,2303L7426,2301L7426,2298L7429,2298L7433,2293L7433,2290L7435,2290L7437,2288L7437,2285L7439,2283L7439,2280L7444,2273L7448,2267L7448,2265L7446,2262L7446,2255L7444,2252L7444,2247L7442,2242L7442,2239L7437,2234L7433,2224L7433,2222L7435,2219L7437,2219L7437,2211L7435,2209L7435,2201L7431,2196L7431,2191L7429,2191L7426,2188L7424,2188L7424,2186L7420,2183L7418,2181L7418,2178L7416,2176L7416,2173L7413,2173L7409,2168L7409,2153L7413,2153L7413,2150L7416,2150L7416,2148L7418,2148L7418,2150L7420,2150L7420,2145L7418,2142L7418,2137L7420,2130L7420,2127L7422,2125L7426,2125L7426,2122L7429,2120L7429,2114L7426,2114L7422,2120L7422,2112L7416,2104L7416,2102L7418,2102L7418,2097L7416,2094L7413,2094L7411,2091L7411,2089L7409,2086L7407,2086L7407,2084L7400,2076L7398,2076L7398,2074L7396,2074L7394,2069L7394,2066L7396,2063L7394,2058L7394,2056L7392,2056L7392,2053L7394,2053L7392,2053L7392,2051L7390,2051L7390,2053L7388,2053L7388,2048L7385,2046L7385,2043L7385,2046L7392,2046L7394,2043L7396,2043L7396,2033L7394,2033L7396,2028L7398,2028L7398,2018L7396,2018L7398,2012L7400,2012L7400,2010L7405,2010L7405,2007L7403,2007L7405,2005L7405,2002L7405,2005L7407,2005L7409,2007L7418,2007L7420,2005L7426,2002L7426,2005L7431,2005L7431,1995L7433,1995L7435,1992L7437,1995L7444,1995L7446,1992L7446,1989L7444,1987L7455,1987L7455,1982L7457,1982L7461,1987L7463,1987L7465,1984L7468,1984L7470,1987L7470,1989L7472,1992L7474,1992L7474,1997L7472,2000L7472,2002L7470,2002L7470,2010L7474,2015L7476,2012L7478,2012L7481,2015L7481,2012L7483,2012L7483,2010L7494,2010L7494,2015L7491,2015L7491,2018L7494,2028L7496,2028L7496,2030L7494,2030L7494,2043L7491,2043L7491,2046L7489,2046L7487,2048L7489,2051L7491,2051L7491,2061L7489,2061L7489,2066L7487,2066L7485,2069L7485,2076L7483,2076L7485,2076L7487,2079L7489,2079L7489,2081L7491,2081L7491,2079L7496,2076L7496,2074L7500,2071L7502,2069L7502,2066L7504,2066L7507,2063L7507,2061L7511,2061L7515,2056L7520,2056L7520,2058L7522,2061L7526,2063L7530,2063L7530,2066L7533,2069L7537,2063L7543,2063L7543,2058L7546,2058L7548,2053L7548,2051L7550,2051L7550,2048L7556,2048L7559,2051L7563,2051L7565,2053L7567,2053L7567,2051L7569,2051L7569,2053L7572,2056L7572,2058L7576,2063L7576,2069L7578,2069L7582,2074L7587,2076L7591,2081L7591,2094L7589,2097L7591,2097L7591,2112L7595,2117L7595,2120L7598,2120L7598,2125L7600,2125L7602,2127L7608,2127L7608,2130L7606,2130L7608,2135L7611,2135L7613,2137L7615,2137L7615,2148L7613,2148L7611,2155L7611,2158L7613,2158L7613,2165L7611,2165L7611,2168L7613,2173L7613,2176L7611,2176L7611,2178L7608,2181L7606,2181L7604,2183L7602,2181L7602,2186L7598,2186L7598,2181L7593,2181L7591,2178L7587,2178L7587,2181L7572,2181L7569,2183L7567,2183L7561,2181L7561,2178L7559,2181L7550,2181L7548,2183L7543,2183L7543,2186L7541,2186L7539,2188L7539,2193L7537,2193L7537,2196L7535,2196L7535,2201L7530,2204L7530,2206L7528,2206L7528,2209L7524,2209L7524,2206L7524,2222L7526,2222L7528,2227L7528,2237L7530,2237L7530,2239L7533,2239L7535,2245L7535,2255L7533,2252L7528,2252L7528,2255L7524,2252L7522,2250L7520,2250L7520,2247L7517,2245L7515,2245L7515,2239L7513,2239L7513,2242L7511,2239L7511,2237L7504,2237L7502,2239L7496,2239L7496,2237L7485,2237L7485,2239L7483,2237L7481,2237L7481,2234L7483,2234L7485,2227L7483,2224L7485,2219L7483,2216L7485,2216L7485,2211L7481,2211L7478,2209L7474,2209L7472,2211L7459,2211L7459,2214L7457,2216L7457,2219L7459,2219L7459,2222L7461,2222L7461,2227L7459,2227L7457,2234L7457,2245L7459,2247L7459,2252L7457,2255L7457,2257L7455,2257L7455,2262L7452,2262L7452,2267L7450,2270L7448,2275L7448,2278L7446,2280L7444,2285L7444,2295L7442,2298L7442,2303L7439,2303L7435,2313L7435,2336L7437,2341L7439,2344L7437,2344L7437,2349L7442,2352L7444,2352L7444,2349L7446,2349L7450,2347L7455,2347L7455,2352L7457,2357L7457,2369L7461,2375L7461,2377L7463,2377L7463,2375L7465,2375L7465,2385L7468,2387L7468,2395L7470,2398L7471,2398L7470,2404L7471,2408L7473,2409L7472,2413L7473,2416L7477,2416L7478,2420L7478,2423L7481,2423L7483,2426L7485,2426L7487,2428L7491,2428L7496,2426L7496,2426L7496,2426z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5258,1314L5256,1314L5256,1309L5254,1309L5252,1306L5252,1303L5250,1301L5250,1298L5252,1298L5250,1296L5250,1293L5252,1291L5252,1283L5254,1281L5254,1283L5256,1283L5258,1281L5258,1275L5267,1270L5269,1270L5271,1273L5274,1273L5274,1270L5287,1270L5287,1268L5297,1268L5302,1265L5302,1268L5304,1268L5306,1273L5308,1275L5310,1275L5315,1278L5317,1281L5317,1283L5319,1283L5319,1286L5321,1286L5321,1288L5319,1288L5319,1298L5315,1298L5315,1301L5313,1301L5313,1306L5291,1306L5291,1309L5289,1309L5287,1314L5274,1314L5269,1316L5265,1316L5265,1314L5258,1314L5258,1314L5258,1314z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4726,2423L4726,2436L4728,2436L4728,2438L4730,2441L4732,2446L4728,2446L4726,2449L4719,2449L4717,2451L4713,2451L4710,2449L4708,2443L4706,2443L4704,2441L4702,2441L4702,2436L4700,2436L4700,2431L4697,2428L4695,2423L4697,2423L4697,2420L4700,2415L4700,2410L4695,2410L4695,2403L4697,2400L4697,2382L4700,2382L4702,2380L4700,2377L4700,2375L4695,2372L4695,2369L4693,2369L4693,2367L4691,2364L4695,2364L4695,2359L4693,2357L4693,2354L4695,2352L4695,2349L4697,2344L4695,2341L4691,2341L4689,2344L4687,2344L4687,2339L4689,2336L4689,2334L4691,2331L4691,2324L4693,2324L4693,2321L4691,2321L4691,2316L4689,2311L4687,2311L4680,2303L4678,2303L4678,2301L4680,2298L4680,2295L4682,2293L4682,2288L4678,2288L4682,2288L4687,2290L4695,2290L4695,2293L4700,2293L4702,2290L4704,2290L4706,2293L4706,2298L4704,2301L4704,2308L4702,2311L4708,2316L4710,2318L4715,2321L4717,2324L4719,2324L4719,2344L4721,2347L4721,2349L4723,2349L4723,2352L4726,2352L4726,2377L4728,2390L4728,2423L4726,2423L4726,2423L4726,2423z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4955,1658L4951,1661L4949,1661L4947,1663L4947,1661L4944,1653L4942,1650L4942,1643L4940,1638L4940,1632L4938,1622L4936,1617L4934,1607L4934,1602L4931,1602L4927,1597L4914,1589L4914,1587L4912,1587L4912,1576L4905,1569L4903,1569L4897,1566L4897,1558L4890,1551L4890,1536L4892,1533L4897,1533L4897,1530L4899,1528L4899,1525L4905,1523L4908,1523L4910,1518L4910,1515L4912,1515L4912,1502L4914,1500L4914,1497L4912,1497L4912,1492L4914,1487L4912,1485L4912,1482L4910,1479L4910,1477L4912,1477L4912,1464L4914,1462L4914,1459L4908,1459L4908,1456L4910,1456L4914,1454L4916,1454L4916,1449L4921,1446L4921,1444L4925,1444L4927,1441L4929,1441L4929,1439L4931,1439L4931,1436L4936,1436L4947,1431L4955,1431L4960,1434L4964,1434L4966,1436L4964,1436L4964,1441L4968,1444L4968,1446L4964,1446L4964,1449L4968,1449L4968,1451L4970,1451L4973,1449L4975,1449L4975,1446L4979,1446L4979,1444L4981,1444L4983,1441L4983,1439L4988,1439L4990,1444L4988,1446L4988,1449L4986,1449L4983,1454L4981,1456L4981,1459L4977,1459L4975,1462L4973,1462L4973,1474L4975,1479L4977,1479L4979,1482L4981,1482L4981,1485L4988,1485L4988,1497L4990,1497L4990,1500L4988,1502L4988,1505L4981,1513L4979,1518L4977,1518L4977,1520L4975,1520L4975,1523L4970,1523L4970,1525L4968,1525L4964,1528L4962,1528L4962,1530L4960,1533L4960,1538L4962,1541L4962,1543L4966,1548L4968,1548L4968,1551L4975,1551L4979,1547L4979,1543L4985,1542L4989,1545L4988,1548L4985,1550L4980,1549L4981,1551L4979,1552L4978,1556L4980,1557L4985,1556L4987,1551L4991,1552L4991,1556L4990,1558L4990,1564L4992,1566L5001,1566L5001,1587L5003,1587L5003,1592L5001,1592L4999,1594L4996,1594L4992,1597L4990,1597L4988,1599L4983,1599L4983,1602L4973,1615L4966,1615L4964,1620L4962,1622L4962,1625L4966,1630L4966,1645L4964,1645L4964,1648L4955,1658L4955,1658L4955,1658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5466,1446L5466,1451L5464,1451L5464,1455L5458,1457L5459,1453L5462,1449L5460,1449L5455,1451L5454,1451L5452,1451L5451,1451L5445,1451L5445,1454L5443,1451L5440,1451L5445,1449L5451,1449L5460,1446L5460,1444L5469,1441L5440,1441L5440,1444L5438,1444L5438,1439L5440,1436L5443,1436L5443,1439L5447,1436L5447,1434L5445,1434L5443,1431L5443,1428L5440,1428L5440,1431L5436,1431L5436,1428L5438,1426L5436,1423L5436,1421L5438,1418L5438,1411L5432,1405L5430,1405L5425,1403L5421,1403L5421,1405L5419,1405L5419,1403L5417,1403L5414,1400L5410,1400L5412,1398L5417,1398L5417,1393L5414,1393L5412,1390L5412,1388L5419,1388L5419,1390L5421,1390L5421,1398L5427,1398L5431,1396L5427,1393L5425,1388L5423,1388L5423,1385L5425,1385L5427,1383L5432,1380L5434,1380L5432,1377L5427,1377L5427,1379L5425,1377L5425,1375L5427,1375L5427,1372L5425,1370L5423,1370L5421,1367L5427,1360L5430,1360L5430,1357L5421,1357L5419,1360L5410,1360L5408,1362L5406,1362L5406,1357L5408,1357L5408,1344L5412,1344L5414,1339L5416,1337L5419,1337L5421,1334L5425,1332L5432,1332L5433,1330L5434,1329L5440,1329L5438,1329L5440,1329L5440,1332L5443,1332L5445,1334L5453,1334L5454,1330L5451,1328L5454,1326L5461,1326L5461,1328L5458,1329L5458,1332L5464,1332L5466,1329L5473,1332L5488,1332L5490,1329L5484,1329L5484,1326L5482,1326L5482,1324L5486,1324L5486,1321L5499,1321L5499,1319L5497,1316L5495,1316L5495,1314L5490,1314L5489,1311L5489,1306L5490,1303L5499,1303L5503,1306L5521,1306L5523,1303L5525,1303L5525,1306L5531,1306L5536,1309L5549,1309L5551,1306L5553,1306L5553,1301L5557,1298L5559,1298L5575,1291L5577,1288L5585,1283L5596,1283L5596,1281L5601,1281L5603,1278L5631,1278L5633,1281L5648,1281L5648,1278L5650,1278L5650,1275L5655,1275L5657,1278L5655,1281L5657,1281L5657,1283L5659,1286L5661,1286L5661,1288L5666,1288L5666,1291L5672,1291L5674,1288L5679,1288L5679,1286L5681,1286L5685,1291L5685,1296L5687,1298L5692,1301L5692,1303L5696,1303L5696,1301L5698,1298L5705,1298L5707,1301L5709,1301L5709,1306L5718,1306L5720,1309L5726,1309L5726,1306L5731,1306L5731,1309L5733,1311L5741,1311L5746,1314L5750,1314L5757,1311L5759,1311L5763,1309L5776,1309L5776,1306L5778,1306L5778,1309L5780,1309L5783,1311L5789,1311L5793,1314L5796,1314L5800,1311L5802,1311L5804,1309L5811,1309L5815,1303L5822,1303L5824,1301L5826,1301L5828,1298L5832,1298L5835,1296L5835,1293L5841,1293L5841,1296L5845,1296L5845,1293L5856,1293L5856,1296L5861,1296L5865,1291L5871,1291L5871,1293L5878,1301L5882,1303L5887,1303L5889,1306L5889,1311L5893,1311L5893,1314L5895,1319L5895,1324L5893,1326L5891,1326L5891,1329L5893,1332L5893,1334L5895,1337L5895,1339L5893,1339L5902,1342L5904,1344L5904,1342L5913,1342L5915,1344L5917,1344L5919,1347L5919,1349L5921,1349L5923,1352L5926,1352L5926,1354L5921,1349L5919,1349L5917,1352L5917,1354L5915,1362L5904,1362L5904,1365L5906,1365L5908,1372L5908,1380L5910,1380L5913,1383L5910,1385L5910,1388L5913,1388L5913,1395L5915,1395L5917,1398L5915,1403L5913,1405L5910,1411L5910,1413L5919,1416L5921,1418L5919,1418L5919,1428L5921,1428L5926,1431L5926,1436L5919,1436L5917,1439L5915,1439L5913,1441L5910,1441L5908,1439L5910,1436L5910,1434L5906,1431L5902,1431L5902,1434L5889,1434L5880,1428L5876,1431L5871,1431L5871,1428L5869,1428L5867,1431L5865,1436L5863,1436L5858,1439L5858,1434L5856,1434L5854,1431L5852,1431L5852,1434L5850,1434L5850,1436L5843,1436L5835,1439L5824,1439L5817,1436L5815,1439L5811,1439L5806,1441L5804,1441L5800,1444L5798,1444L5791,1446L5791,1449L5787,1449L5780,1451L5757,1451L5752,1446L5748,1446L5748,1444L5741,1444L5739,1446L5735,1446L5735,1449L5728,1449L5720,1454L5720,1451L5709,1451L5709,1449L5707,1449L5700,1446L5700,1449L5696,1459L5696,1462L5698,1462L5700,1464L5700,1467L5692,1467L5692,1474L5687,1474L5687,1477L5685,1477L5685,1479L5681,1477L5679,1477L5681,1474L5681,1472L5679,1472L5676,1467L5674,1464L5679,1459L5683,1456L5685,1454L5687,1454L5687,1449L5683,1444L5679,1444L5679,1446L5676,1449L5670,1449L5670,1454L5666,1454L5663,1456L5655,1451L5650,1451L5650,1449L5646,1449L5646,1446L5644,1449L5642,1449L5640,1451L5635,1454L5633,1454L5633,1456L5631,1456L5629,1459L5629,1462L5627,1462L5627,1464L5622,1464L5620,1467L5618,1467L5618,1469L5616,1467L5614,1469L5605,1469L5598,1472L5592,1472L5592,1474L5588,1472L5583,1472L5575,1462L5575,1459L5572,1459L5572,1456L5570,1456L5566,1454L5562,1454L5553,1449L5551,1449L5551,1446L5531,1446L5531,1449L5529,1449L5529,1459L5527,1459L5527,1462L5529,1462L5529,1464L5527,1467L5525,1467L5523,1464L5518,1464L5518,1467L5514,1467L5508,1469L5503,1469L5503,1467L5495,1467L5495,1464L5490,1464L5490,1456L5488,1456L5488,1451L5486,1449L5484,1449L5484,1451L5482,1451L5478,1450L5476,1448L5466,1446L5466,1446L5466,1446zM5475,1311L5473,1311L5471,1309L5458,1309L5458,1311L5445,1311L5445,1314L5443,1316L5440,1321L5438,1321L5436,1324L5432,1324L5430,1326L5424,1327L5423,1328L5420,1330L5419,1332L5418,1332L5416,1333L5413,1335L5410,1340L5408,1340L5410,1337L5410,1332L5419,1326L5421,1326L5423,1326L5425,1324L5425,1321L5421,1321L5419,1324L5406,1324L5406,1321L5404,1319L5408,1319L5408,1316L5410,1314L5412,1314L5412,1311L5414,1311L5414,1309L5412,1309L5412,1301L5414,1303L5414,1301L5421,1301L5421,1293L5419,1291L5414,1288L5412,1288L5412,1286L5414,1283L5419,1283L5419,1281L5421,1278L5430,1278L5432,1275L5440,1275L5443,1278L5447,1281L5449,1281L5451,1278L5460,1278L5460,1281L5458,1281L5458,1283L5462,1288L5462,1291L5464,1293L5466,1293L5466,1296L5471,1296L5486,1303L5487,1303L5485,1312L5484,1311L5475,1311L5475,1311L5475,1311z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6380,1469L6380,1454L6359,1454L6352,1446L6352,1444L6350,1444L6350,1441L6348,1441L6348,1439L6341,1436L6339,1436L6335,1434L6333,1434L6331,1431L6331,1426L6328,1423L6324,1423L6322,1421L6318,1421L6318,1418L6315,1418L6313,1421L6302,1421L6298,1418L6298,1416L6296,1416L6283,1411L6274,1411L6274,1405L6270,1400L6268,1400L6266,1403L6263,1403L6261,1400L6246,1400L6246,1405L6220,1405L6220,1408L6216,1408L6214,1411L6211,1411L6207,1416L6205,1416L6205,1418L6203,1418L6203,1426L6196,1426L6194,1428L6190,1428L6185,1431L6179,1431L6179,1426L6177,1423L6177,1416L6176,1414L6175,1408L6177,1405L6177,1385L6181,1380L6177,1375L6172,1375L6170,1372L6170,1365L6157,1365L6157,1362L6159,1357L6162,1358L6168,1358L6170,1357L6168,1354L6164,1354L6164,1352L6166,1347L6168,1347L6168,1344L6151,1344L6151,1347L6146,1342L6146,1337L6144,1334L6146,1329L6146,1324L6149,1321L6151,1309L6149,1308L6148,1300L6144,1296L6143,1295L6142,1293L6142,1288L6138,1288L6138,1286L6140,1286L6153,1273L6162,1270L6166,1270L6166,1268L6179,1268L6181,1265L6183,1265L6185,1268L6188,1268L6190,1270L6201,1275L6203,1275L6207,1281L6207,1286L6209,1286L6211,1288L6211,1291L6214,1291L6214,1293L6216,1293L6216,1296L6218,1296L6218,1298L6220,1298L6220,1301L6266,1301L6268,1298L6266,1298L6266,1296L6263,1288L6263,1281L6268,1281L6268,1278L6270,1278L6270,1275L6272,1275L6272,1273L6287,1273L6292,1268L6292,1265L6289,1263L6292,1263L6294,1260L6294,1263L6302,1263L6302,1260L6298,1260L6298,1258L6296,1258L6300,1255L6305,1255L6305,1258L6307,1258L6307,1255L6309,1255L6309,1252L6313,1255L6313,1258L6315,1258L6318,1260L6324,1260L6326,1263L6326,1265L6328,1265L6328,1268L6346,1268L6348,1270L6348,1278L6352,1281L6352,1283L6350,1283L6350,1288L6352,1288L6352,1291L6350,1293L6350,1298L6354,1298L6357,1301L6359,1301L6359,1303L6367,1303L6367,1301L6370,1301L6374,1303L6380,1303L6383,1306L6385,1306L6385,1303L6387,1303L6387,1301L6393,1301L6393,1303L6396,1303L6400,1306L6402,1309L6402,1316L6404,1319L6406,1324L6409,1326L6409,1329L6413,1329L6415,1334L6415,1342L6419,1344L6419,1347L6424,1349L6426,1349L6428,1352L6430,1352L6430,1354L6432,1354L6432,1357L6437,1357L6439,1360L6441,1360L6443,1362L6445,1362L6445,1365L6448,1365L6450,1367L6450,1370L6454,1370L6458,1375L6461,1375L6463,1377L6469,1377L6469,1380L6471,1380L6476,1383L6478,1385L6480,1385L6482,1388L6486,1388L6489,1390L6491,1390L6491,1393L6493,1395L6495,1395L6502,1400L6517,1400L6521,1403L6521,1405L6523,1405L6525,1408L6532,1408L6532,1413L6530,1416L6528,1423L6528,1428L6530,1428L6528,1428L6528,1431L6521,1431L6519,1428L6517,1428L6515,1426L6508,1423L6506,1423L6504,1426L6504,1431L6502,1434L6486,1434L6482,1436L6480,1436L6480,1446L6478,1449L6478,1451L6476,1451L6476,1462L6471,1467L6469,1467L6463,1469L6461,1469L6458,1472L6456,1472L6454,1474L6448,1474L6448,1477L6445,1477L6441,1479L6435,1479L6435,1482L6437,1485L6435,1485L6435,1487L6432,1487L6435,1490L6435,1492L6430,1492L6426,1497L6424,1497L6422,1500L6417,1500L6417,1497L6415,1497L6415,1500L6413,1500L6413,1502L6411,1502L6411,1497L6409,1495L6406,1495L6404,1492L6389,1492L6389,1490L6387,1490L6387,1487L6383,1487L6383,1477L6380,1477L6380,1469L6380,1469L6380,1469z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5650,2576L5650,2568L5648,2566L5648,2561L5646,2561L5646,2558L5644,2558L5642,2556L5642,2548L5640,2548L5637,2545L5637,2530L5635,2530L5631,2528L5631,2525L5629,2522L5629,2517L5627,2515L5627,2512L5624,2512L5611,2528L5601,2528L5598,2525L5596,2525L5594,2528L5581,2528L5575,2533L5575,2535L5572,2535L5570,2533L5568,2533L5568,2530L5566,2528L5564,2528L5562,2530L5557,2533L5553,2528L5546,2528L5542,2530L5540,2530L5540,2540L5538,2543L5538,2545L5536,2548L5536,2553L5538,2553L5538,2561L5536,2563L5536,2571L5538,2576L5540,2576L5540,2573L5542,2573L5544,2576L5549,2579L5549,2579L5552,2575L5553,2580L5553,2592L5536,2608L5535,2616L5528,2615L5528,2611L5527,2612L5525,2612L5523,2614L5521,2614L5521,2619L5518,2622L5514,2622L5514,2624L5512,2627L5512,2632L5514,2632L5514,2635L5510,2640L5510,2645L5508,2645L5508,2653L5505,2653L5505,2670L5503,2673L5503,2696L5508,2696L5510,2693L5510,2696L5512,2696L5512,2698L5514,2698L5518,2696L5518,2693L5521,2693L5523,2691L5523,2688L5525,2686L5533,2686L5533,2683L5564,2682L5563,2677L5565,2673L5565,2666L5569,2667L5572,2663L5573,2660L5569,2654L5583,2649L5588,2645L5591,2648L5599,2648L5601,2646L5603,2638L5606,2636L5609,2638L5613,2644L5617,2642L5621,2643L5627,2642L5629,2640L5629,2632L5631,2632L5631,2630L5633,2630L5637,2624L5637,2622L5640,2619L5640,2614L5642,2614L5644,2612L5648,2612L5648,2604L5650,2604L5650,2599L5653,2599L5653,2579L5650,2576L5650,2576L5650,2576z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5787,1054L5787,1056L5785,1056L5785,1059L5783,1061L5783,1064L5789,1064L5789,1069L5791,1071L5791,1074L5789,1074L5789,1077L5787,1082L5787,1087L5759,1087L5759,1092L5757,1092L5754,1094L5746,1094L5746,1097L5744,1097L5744,1102L5746,1105L5744,1107L5741,1107L5741,1110L5744,1110L5739,1112L5724,1112L5720,1117L5709,1117L5709,1120L5705,1120L5705,1122L5692,1122L5692,1125L5687,1128L5687,1125L5679,1125L5676,1128L5674,1128L5672,1130L5670,1130L5670,1133L5666,1133L5663,1135L5659,1133L5659,1135L5657,1138L5655,1138L5650,1141L5626,1141L5625,1143L5630,1145L5635,1145L5637,1148L5642,1149L5644,1155L5650,1155L5651,1157L5655,1158L5656,1164L5655,1167L5666,1171L5668,1171L5676,1166L5679,1166L5679,1168L5683,1168L5683,1166L5698,1166L5698,1168L5694,1168L5694,1171L5692,1173L5692,1176L5694,1176L5694,1179L5681,1179L5681,1181L5676,1181L5676,1179L5674,1179L5672,1176L5668,1176L5666,1179L5663,1179L5659,1181L5657,1184L5657,1186L5646,1186L5640,1189L5637,1189L5637,1191L5635,1191L5635,1194L5629,1199L5616,1199L5614,1196L5609,1196L5609,1194L5611,1194L5614,1191L5611,1186L5614,1186L5614,1184L5616,1184L5616,1181L5614,1181L5614,1176L5611,1176L5609,1173L5607,1173L5605,1176L5605,1173L5601,1173L5601,1171L5598,1171L5596,1168L5588,1168L5588,1171L5585,1168L5583,1168L5583,1166L5585,1166L5585,1163L5588,1163L5594,1161L5594,1158L5598,1158L5603,1156L5607,1156L5607,1153L5611,1153L5614,1150L5618,1150L5618,1148L5616,1148L5616,1143L5611,1143L5611,1145L5609,1145L5609,1143L5585,1143L5585,1145L5581,1145L5579,1143L5577,1143L5577,1140L5570,1138L5564,1138L5563,1136L5570,1134L5568,1132L5562,1132L5557,1129L5560,1126L5556,1125L5546,1128L5540,1128L5536,1133L5536,1135L5518,1153L5512,1153L5510,1156L5510,1158L5505,1158L5505,1153L5503,1153L5503,1163L5505,1166L5508,1163L5508,1173L5505,1173L5505,1168L5503,1168L5503,1166L5492,1166L5482,1171L5482,1173L5477,1173L5475,1171L5469,1171L5469,1168L5466,1168L5466,1166L5464,1166L5464,1163L5473,1163L5473,1156L5477,1156L5477,1153L5479,1153L5479,1148L5486,1148L5488,1140L5486,1138L5484,1133L5486,1133L5488,1130L5492,1130L5492,1135L5495,1135L5495,1133L5497,1133L5499,1130L5501,1130L5501,1133L5503,1135L5505,1135L5508,1133L5510,1135L5518,1135L5518,1133L5514,1133L5512,1130L5514,1128L5514,1120L5510,1120L5508,1117L5503,1117L5503,1102L5501,1102L5501,1105L5497,1105L5497,1102L5495,1099L5492,1099L5490,1097L5490,1094L5492,1094L5495,1089L5492,1084L5490,1082L5488,1082L5488,1084L5486,1084L5482,1079L5482,1077L5469,1077L5469,1074L5462,1074L5462,1071L5456,1071L5456,1069L5453,1066L5445,1066L5438,1069L5430,1069L5425,1071L5421,1071L5421,1074L5417,1074L5412,1077L5408,1082L5399,1082L5399,1084L5382,1084L5382,1087L5380,1087L5380,1089L5378,1089L5375,1092L5373,1092L5371,1089L5371,1087L5367,1087L5367,1084L5347,1084L5343,1082L5328,1082L5328,1079L5323,1079L5323,1082L5321,1082L5319,1084L5317,1084L5317,1079L5308,1079L5308,1077L5306,1074L5302,1074L5300,1069L5297,1069L5297,1061L5300,1061L5304,1056L5304,1054L5306,1051L5306,1048L5308,1048L5308,1046L5313,1048L5317,1048L5317,1046L5315,1043L5313,1043L5313,1036L5310,1033L5310,1031L5313,1028L5315,1028L5328,1013L5330,1013L5330,1010L5334,1010L5334,1008L5336,1008L5341,1003L5347,1003L5352,997L5352,995L5349,992L5347,992L5347,990L5352,990L5352,987L5349,987L5347,985L5345,985L5345,982L5343,977L5341,977L5339,975L5339,967L5336,967L5339,967L5339,964L5336,964L5339,962L5345,962L5345,964L5349,964L5356,959L5356,957L5358,954L5378,954L5378,952L5384,952L5384,954L5408,954L5408,957L5417,957L5414,957L5425,957L5425,959L5436,959L5436,962L5438,964L5451,964L5451,967L5449,967L5451,969L5453,967L5453,964L5464,964L5464,962L5466,962L5469,964L5477,964L5477,969L5479,969L5479,967L5482,967L5482,964L5488,962L5490,962L5490,964L5492,964L5492,967L5495,967L5495,972L5497,972L5499,969L5503,967L5508,967L5508,969L5512,969L5514,967L5521,967L5525,969L5525,972L5527,975L5529,975L5531,972L5531,967L5529,967L5529,962L5531,962L5531,959L5538,952L5540,952L5540,949L5551,949L5551,946L5566,946L5566,949L5577,949L5577,946L5579,946L5579,941L5581,941L5581,939L5585,941L5592,941L5594,944L5596,944L5596,941L5598,941L5603,939L5609,939L5611,941L5614,939L5620,939L5627,944L5629,946L5627,946L5627,949L5629,949L5629,952L5633,954L5635,957L5637,957L5637,959L5635,959L5633,962L5629,962L5631,964L5631,967L5633,967L5633,969L5635,975L5637,975L5642,977L5657,977L5657,982L5663,982L5661,985L5663,985L5663,987L5666,990L5666,992L5668,995L5663,995L5666,1000L5670,1005L5672,1005L5674,1003L5687,1003L5687,1005L5689,1008L5692,1008L5692,1005L5694,1008L5696,1008L5696,1010L5698,1010L5702,1005L5715,1005L5715,1003L5722,1003L5726,1010L5728,1013L5731,1013L5731,1015L5735,1015L5735,1018L5737,1018L5737,1020L5741,1015L5746,1013L5746,1015L5748,1018L5757,1018L5759,1020L5761,1020L5763,1023L5767,1023L5767,1020L5770,1020L5772,1023L5772,1026L5776,1026L5776,1023L5778,1023L5778,1026L5780,1026L5780,1028L5783,1028L5787,1031L5791,1031L5791,1028L5793,1028L5796,1031L5793,1031L5793,1033L5796,1036L5796,1038L5798,1038L5798,1041L5793,1043L5791,1043L5791,1048L5783,1048L5783,1051L5787,1051L5787,1054L5787,1054L5787,1054z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6227,1816L6227,1814L6227,1816L6227,1816L6227,1816zM6237,1836L6237,1834L6233,1834L6233,1836L6231,1836L6231,1844L6233,1844L6231,1847L6231,1859L6235,1859L6237,1865L6233,1865L6231,1867L6229,1865L6227,1865L6222,1867L6224,1870L6224,1875L6222,1877L6218,1887L6218,1893L6214,1898L6214,1903L6216,1903L6216,1905L6214,1908L6214,1910L6142,1900L6114,1862L6114,1857L6118,1857L6118,1862L6120,1865L6120,1867L6136,1867L6140,1862L6143,1861L6144,1862L6166,1862L6168,1865L6177,1865L6183,1862L6185,1862L6185,1859L6192,1859L6192,1857L6194,1854L6194,1852L6196,1852L6198,1844L6198,1842L6201,1839L6207,1836L6209,1834L6211,1834L6211,1831L6214,1829L6216,1829L6216,1826L6218,1824L6218,1821L6222,1821L6222,1816L6227,1816L6227,1814L6229,1814L6229,1811L6233,1811L6237,1806L6237,1801L6240,1801L6240,1798L6242,1798L6242,1803L6240,1806L6240,1811L6242,1811L6242,1814L6246,1814L6246,1836L6244,1836L6244,1839L6242,1839L6242,1842L6237,1842L6235,1839L6235,1836L6237,1836L6237,1836L6237,1836z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5599,2928L5565,2892L5559,2899L5578,2929L5580,2922L5588,2929L5599,2928L5599,2928L5599,2928zM5564,2682L5567,2690L5565,2699L5563,2702L5563,2706L5561,2716L5566,2719L5565,2722L5561,2722L5560,2727L5567,2726L5568,2731L5564,2733L5564,2736L5568,2738L5572,2734L5573,2728L5571,2723L5577,2724L5582,2727L5585,2724L5586,2728L5590,2730L5594,2730L5598,2728L5602,2729L5606,2733L5621,2723L5618,2721L5610,2722L5599,2720L5594,2721L5592,2714L5593,2708L5599,2709L5604,2712L5607,2712L5609,2707L5612,2708L5615,2703L5617,2696L5621,2693L5624,2688L5627,2686L5637,2691L5640,2693L5646,2696L5683,2721L5685,2724L5713,2742L5715,2742L5715,2744L5720,2747L5724,2747L5728,2752L5728,2760L5726,2762L5726,2767L5731,2767L5731,2770L5750,2788L5754,2790L5765,2800L5770,2803L5770,2811L5767,2811L5767,2823L5765,2826L5765,2831L5763,2834L5759,2846L5759,2851L5761,2857L5761,2862L5763,2862L5763,2864L5765,2864L5767,2867L5770,2867L5772,2872L5772,2874L5778,2874L5778,2879L5780,2879L5778,2882L5778,2885L5776,2887L5776,2890L5774,2890L5772,2895L5772,2905L5774,2905L5776,2908L5776,2913L5774,2923L5772,2923L5774,2925L5774,2936L5777,2941L5776,2943L5783,2951L5783,2959L5785,2964L5785,2971L5787,2971L5787,2979L5789,2979L5793,2984L5796,2984L5796,2987L5798,2989L5798,2984L5800,2984L5802,2989L5804,2992L5804,2994L5802,2997L5796,2999L5793,3004L5789,3004L5789,3007L5787,3007L5785,3010L5778,3010L5778,3012L5776,3015L5772,3015L5772,3017L5770,3017L5767,3015L5763,3017L5761,3017L5754,3020L5750,3025L5748,3025L5748,3022L5746,3022L5741,3020L5733,3020L5733,3022L5731,3025L5731,3030L5728,3030L5726,3033L5722,3035L5715,3035L5713,3033L5711,3033L5709,3030L5702,3030L5702,3033L5700,3033L5700,3035L5696,3035L5692,3033L5689,3033L5689,3035L5685,3035L5685,3030L5679,3025L5676,3025L5672,3030L5652,3030L5653,3027L5651,3024L5642,3014L5640,2976L5635,2971L5634,2968L5624,2961L5624,2969L5622,2969L5622,2966L5620,2964L5614,2964L5614,2966L5609,2966L5609,2964L5607,2961L5601,2961L5598,2959L5594,2959L5592,2956L5590,2956L5588,2953L5583,2953L5583,2951L5577,2951L5577,2948L5572,2948L5572,2946L5570,2946L5570,2948L5568,2948L5568,2943L5566,2943L5564,2941L5564,2943L5562,2943L5559,2941L5557,2941L5557,2938L5553,2933L5549,2933L5551,2929L5546,2924L5531,2895L5534,2892L5533,2886L5526,2868L5518,2863L5512,2858L5510,2847L5515,2842L5509,2827L5511,2820L5507,2815L5503,2807L5504,2798L5505,2798L5508,2795L5512,2793L5518,2785L5523,2775L5525,2775L5525,2772L5527,2767L5529,2765L5531,2765L5533,2762L5531,2762L5531,2760L5536,2760L5538,2757L5538,2749L5533,2749L5533,2747L5527,2747L5527,2744L5525,2744L5529,2732L5531,2729L5538,2729L5538,2706L5536,2701L5536,2698L5533,2696L5529,2696L5527,2688L5527,2686L5533,2686L5533,2683L5564,2682L5564,2682L5564,2682zM5787,2828L5787,2823L5789,2823L5789,2821L5787,2818L5787,2816L5789,2816L5789,2811L5783,2811L5783,2818L5785,2821L5785,2823L5783,2823L5783,2828L5785,2831L5787,2828L5787,2828L5787,2828zM5770,2844L5772,2844L5772,2839L5774,2839L5774,2844L5774,2846L5776,2849L5776,2851L5779,2854L5780,2859L5780,2862L5776,2862L5776,2859L5775,2857L5774,2857L5770,2857L5770,2844L5770,2844L5770,2844z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2380,1951L2378,1949L2371,1949L2371,1944L2373,1946L2378,1946L2378,1944L2376,1944L2373,1938L2373,1936L2378,1933L2382,1933L2384,1936L2384,1938L2386,1938L2386,1941L2389,1946L2386,1946L2386,1949L2384,1949L2380,1951L2380,1951L2380,1951zM2523,1936L2519,1931L2516,1931L2516,1928L2525,1928L2525,1933L2523,1933L2523,1936L2523,1936L2523,1936zM2592,2000L2590,2002L2584,2002L2581,2000L2579,2000L2573,1997L2573,2000L2568,1997L2560,1997L2558,2000L2545,2000L2542,2002L2542,2000L2540,2002L2538,2000L2534,2000L2534,2002L2523,2002L2523,2000L2532,1989L2536,1989L2540,1984L2540,1982L2538,1977L2536,1977L2534,1974L2512,1974L2510,1972L2510,1969L2508,1967L2506,1967L2501,1964L2501,1959L2499,1956L2499,1949L2497,1949L2497,1946L2495,1944L2490,1944L2490,1946L2473,1946L2473,1944L2469,1941L2460,1941L2458,1938L2456,1938L2456,1936L2451,1936L2449,1933L2449,1929L2447,1928L2445,1928L2445,1931L2432,1931L2430,1928L2421,1928L2421,1926L2408,1926L2404,1923L2402,1921L2399,1921L2399,1918L2412,1918L2415,1916L2415,1913L2410,1910L2384,1910L2384,1908L2382,1908L2382,1913L2380,1913L2376,1916L2373,1916L2373,1921L2369,1921L2367,1923L2367,1926L2350,1926L2350,1928L2347,1931L2350,1931L2350,1933L2345,1933L2341,1936L2339,1936L2339,1938L2334,1938L2334,1933L2330,1933L2326,1938L2324,1938L2321,1936L2324,1933L2324,1936L2326,1936L2332,1931L2339,1931L2339,1928L2337,1926L2337,1921L2341,1918L2343,1913L2345,1910L2347,1910L2376,1898L2376,1900L2378,1900L2378,1898L2389,1898L2391,1895L2393,1895L2395,1893L2406,1893L2406,1895L2417,1895L2417,1898L2421,1895L2423,1895L2428,1898L2430,1898L2438,1895L2443,1895L2443,1898L2445,1900L2449,1900L2451,1903L2454,1903L2456,1900L2460,1900L2460,1903L2464,1905L2467,1908L2469,1908L2469,1910L2471,1910L2473,1913L2473,1916L2475,1916L2480,1921L2486,1921L2486,1918L2493,1918L2503,1923L2506,1926L2512,1928L2514,1928L2514,1931L2521,1938L2529,1937L2532,1938L2540,1945L2542,1946L2542,1949L2545,1949L2547,1951L2547,1954L2549,1951L2560,1956L2564,1956L2564,1959L2566,1959L2568,1961L2581,1961L2581,1969L2577,1969L2577,1974L2599,1974L2605,1977L2605,1979L2607,1979L2610,1982L2610,1984L2612,1984L2612,1987L2620,1987L2623,1989L2623,1992L2620,1995L2605,1995L2603,1997L2599,2000L2592,2000L2592,2000L2592,2000z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3067,3734L3060,3734L3060,3741L3058,3744L3058,3759L3060,3759L3060,3762L3062,3762L3064,3764L3064,3767L3067,3769L3069,3769L3073,3775L3073,3777L3075,3780L3080,3777L3095,3777L3101,3785L3103,3785L3114,3790L3116,3792L3127,3792L3127,3790L3132,3790L3134,3787L3138,3787L3142,3790L3145,3790L3147,3792L3155,3792L3155,3795L3158,3795L3158,3792L3162,3792L3162,3790L3166,3790L3173,3787L3173,3785L3177,3785L3177,3782L3179,3782L3184,3777L3186,3777L3188,3775L3188,3772L3192,3767L3194,3767L3194,3762L3196,3759L3196,3757L3199,3757L3199,3754L3194,3752L3194,3746L3193,3745L3194,3742L3191,3738L3193,3732L3195,3728L3199,3726L3201,3721L3205,3718L3203,3718L3194,3713L3194,3711L3192,3711L3192,3706L3186,3698L3186,3696L3184,3696L3179,3693L3177,3693L3173,3690L3171,3688L3168,3688L3168,3683L3166,3680L3160,3680L3158,3678L3155,3678L3155,3675L3151,3675L3147,3673L3145,3668L3138,3660L3136,3660L3136,3662L3132,3668L3125,3668L3125,3662L3127,3662L3127,3660L3119,3650L3116,3650L3108,3639L3103,3637L3101,3634L3099,3634L3097,3637L3095,3637L3095,3639L3093,3642L3084,3642L3082,3639L3082,3642L3077,3647L3075,3647L3075,3650L3073,3650L3073,3652L3075,3652L3075,3668L3073,3673L3073,3675L3069,3680L3071,3683L3071,3685L3069,3690L3069,3693L3064,3693L3064,3696L3067,3696L3067,3701L3064,3703L3067,3703L3067,3706L3069,3706L3069,3708L3067,3708L3067,3711L3064,3713L3067,3716L3067,3734L3067,3734L3067,3734z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6302,1260L6298,1260L6298,1258L6296,1258L6300,1255L6305,1255L6305,1258L6307,1258L6307,1255L6309,1255L6309,1252L6313,1255L6313,1258L6315,1258L6318,1260L6324,1260L6326,1263L6326,1265L6328,1265L6328,1268L6346,1268L6348,1270L6348,1278L6352,1281L6352,1283L6350,1283L6350,1288L6352,1288L6352,1291L6350,1293L6350,1298L6354,1298L6357,1301L6359,1301L6359,1303L6367,1303L6367,1301L6370,1301L6374,1303L6380,1303L6383,1306L6385,1306L6385,1303L6387,1303L6387,1301L6393,1301L6393,1303L6396,1303L6400,1306L6402,1309L6402,1316L6404,1319L6406,1324L6409,1326L6409,1329L6413,1329L6415,1334L6415,1342L6419,1344L6419,1347L6424,1349L6426,1349L6428,1352L6430,1352L6430,1354L6432,1354L6432,1357L6437,1357L6439,1360L6441,1360L6443,1362L6445,1362L6445,1365L6448,1365L6450,1367L6450,1370L6454,1370L6458,1375L6461,1375L6463,1377L6469,1377L6469,1380L6471,1380L6476,1383L6478,1385L6480,1385L6482,1388L6486,1388L6489,1390L6491,1390L6491,1393L6493,1395L6495,1395L6502,1400L6517,1400L6521,1403L6521,1405L6523,1405L6525,1408L6532,1408L6532,1413L6530,1416L6528,1423L6528,1428L6532,1428L6534,1431L6536,1428L6543,1428L6549,1436L6549,1434L6562,1434L6564,1436L6564,1426L6567,1423L6567,1421L6569,1421L6569,1418L6571,1418L6571,1416L6573,1416L6573,1411L6577,1411L6580,1408L6580,1400L6577,1398L6575,1398L6573,1395L6571,1390L6571,1388L6573,1383L6575,1383L6575,1380L6573,1377L6573,1375L6569,1375L6567,1377L6562,1377L6562,1375L6560,1375L6562,1372L6560,1372L6560,1370L6551,1370L6551,1367L6554,1367L6554,1360L6556,1360L6560,1357L6562,1354L6564,1354L6564,1357L6575,1357L6580,1360L6582,1360L6586,1354L6586,1352L6588,1349L6588,1347L6590,1347L6590,1349L6595,1347L6590,1342L6597,1342L6597,1339L6586,1339L6586,1337L6606,1337L6608,1332L6606,1332L6606,1324L6608,1319L6608,1316L6610,1316L6612,1319L6614,1319L6616,1321L6621,1321L6621,1319L6627,1319L6632,1316L6634,1314L6636,1314L6636,1309L6638,1309L6645,1316L6645,1319L6647,1319L6647,1321L6645,1321L6636,1326L6636,1329L6634,1329L6636,1332L6638,1332L6642,1334L6642,1337L6653,1337L6653,1334L6666,1334L6666,1337L6668,1337L6673,1339L6677,1334L6681,1334L6681,1332L6684,1329L6690,1329L6692,1332L6692,1329L6694,1329L6690,1324L6692,1324L6697,1326L6699,1326L6703,1321L6705,1321L6707,1319L6712,1319L6712,1316L6710,1314L6697,1314L6697,1311L6694,1311L6692,1309L6690,1309L6686,1311L6686,1303L6677,1303L6677,1298L6673,1293L6671,1293L6671,1301L6666,1301L6666,1306L6664,1306L6660,1303L6658,1303L6658,1306L6653,1303L6647,1303L6647,1298L6645,1296L6640,1296L6638,1298L6638,1296L6636,1296L6636,1293L6629,1293L6629,1291L6634,1291L6638,1288L6638,1286L6640,1286L6640,1283L6645,1281L6649,1281L6649,1275L6653,1275L6660,1273L6660,1270L6658,1270L6658,1268L6653,1268L6653,1270L6647,1270L6645,1275L6642,1275L6642,1278L6640,1278L6640,1275L6634,1275L6632,1281L6627,1286L6623,1288L6614,1288L6608,1296L6603,1296L6599,1298L6599,1303L6595,1306L6593,1309L6590,1309L6590,1311L6588,1311L6586,1314L6586,1319L6588,1321L6588,1324L6582,1324L6577,1321L6575,1321L6571,1316L6573,1316L6573,1309L6569,1306L6569,1303L6560,1303L6556,1306L6534,1306L6530,1288L6530,1278L6515,1278L6515,1265L6517,1265L6517,1245L6508,1250L6508,1245L6504,1240L6502,1235L6499,1235L6493,1232L6493,1230L6486,1224L6484,1222L6482,1222L6471,1227L6452,1227L6445,1224L6437,1224L6426,1227L6413,1227L6404,1230L6402,1227L6398,1224L6385,1209L6374,1203L6373,1204L6370,1207L6367,1209L6364,1209L6349,1222L6345,1230L6340,1233L6339,1230L6341,1222L6336,1221L6334,1216L6321,1216L6318,1214L6315,1213L6311,1213L6309,1214L6312,1218L6310,1219L6304,1219L6301,1217L6303,1213L6303,1207L6300,1204L6299,1198L6299,1194L6301,1189L6298,1186L6308,1161L6307,1161L6292,1166L6285,1166L6281,1168L6274,1168L6259,1173L6257,1173L6255,1176L6248,1176L6244,1179L6237,1179L6237,1301L6266,1301L6268,1298L6266,1298L6266,1296L6263,1288L6263,1281L6268,1281L6268,1278L6270,1278L6270,1275L6272,1275L6272,1273L6287,1273L6292,1268L6292,1265L6289,1263L6292,1263L6294,1260L6294,1263L6302,1263L6302,1260L6302,1260L6302,1260z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2902,2295L2900,2293L2893,2293L2893,2290L2898,2288L2898,2290L2900,2290L2902,2293L2904,2293L2904,2288L2906,2288L2906,2285L2908,2288L2908,2293L2906,2295L2902,2295L2902,2295L2902,2295zM2997,2403L2995,2403L2995,2408L2997,2408L2997,2410L2999,2410L2999,2413L2997,2413L2997,2415L2999,2418L3002,2418L3002,2415L3006,2415L3006,2418L3008,2418L3008,2420L3006,2420L3002,2426L2999,2426L2999,2428L2995,2428L2995,2431L2993,2428L2991,2431L2984,2431L2982,2433L2982,2438L2984,2441L2984,2446L2980,2451L2980,2454L2978,2456L2976,2456L2995,2482L2997,2482L2999,2487L2999,2489L2997,2492L2997,2494L2995,2494L2991,2497L2989,2500L2989,2505L2978,2505L2973,2507L2973,2512L2965,2512L2965,2515L2958,2515L2958,2517L2952,2517L2952,2515L2947,2515L2943,2520L2939,2520L2939,2533L2937,2533L2934,2535L2926,2525L2926,2522L2919,2522L2919,2525L2917,2525L2915,2522L2906,2522L2906,2525L2902,2525L2902,2520L2898,2515L2891,2515L2889,2517L2887,2517L2887,2512L2882,2512L2882,2515L2885,2515L2885,2520L2887,2520L2887,2522L2891,2528L2893,2528L2898,2533L2898,2535L2900,2535L2898,2538L2898,2548L2900,2551L2900,2553L2902,2556L2902,2558L2904,2563L2904,2568L2902,2568L2902,2571L2921,2571L2921,2581L2915,2581L2915,2584L2911,2586L2904,2586L2904,2589L2902,2589L2902,2599L2900,2599L2895,2604L2893,2602L2889,2604L2889,2607L2887,2607L2885,2609L2885,2612L2882,2612L2882,2609L2880,2609L2876,2614L2872,2614L2872,2622L2867,2622L2865,2624L2865,2627L2863,2630L2861,2630L2861,2624L2863,2624L2863,2622L2861,2622L2861,2619L2856,2619L2852,2622L2850,2622L2850,2624L2848,2624L2846,2627L2839,2627L2824,2612L2824,2609L2822,2604L2822,2596L2815,2581L2815,2573L2813,2571L2811,2571L2807,2563L2802,2558L2798,2558L2802,2551L2807,2548L2813,2540L2813,2538L2809,2538L2809,2533L2807,2530L2804,2530L2804,2528L2802,2528L2802,2522L2800,2520L2800,2517L2798,2515L2798,2510L2796,2502L2798,2497L2798,2474L2802,2474L2802,2471L2804,2469L2802,2469L2802,2461L2804,2461L2807,2459L2807,2456L2809,2456L2809,2454L2807,2454L2807,2446L2796,2446L2796,2449L2778,2449L2776,2451L2772,2451L2772,2449L2761,2449L2761,2451L2759,2451L2759,2454L2757,2451L2752,2451L2733,2423L2731,2423L2729,2426L2729,2423L2724,2423L2722,2420L2718,2418L2714,2420L2711,2420L2711,2423L2703,2423L2701,2420L2690,2420L2688,2423L2681,2423L2681,2420L2679,2420L2679,2415L2677,2415L2677,2413L2675,2410L2670,2410L2670,2408L2668,2405L2668,2392L2670,2387L2672,2387L2672,2385L2670,2380L2670,2377L2664,2369L2662,2359L2659,2354L2657,2354L2655,2352L2655,2349L2653,2347L2651,2349L2649,2349L2649,2352L2644,2352L2644,2349L2646,2344L2651,2339L2651,2336L2653,2331L2655,2329L2655,2321L2657,2313L2657,2308L2659,2306L2662,2298L2664,2295L2666,2290L2668,2288L2677,2283L2679,2275L2683,2270L2688,2267L2692,2267L2696,2265L2701,2265L2698,2267L2694,2267L2692,2270L2688,2270L2683,2273L2683,2280L2685,2283L2685,2285L2690,2290L2688,2290L2690,2298L2692,2298L2692,2311L2688,2311L2688,2316L2685,2316L2685,2321L2683,2321L2679,2329L2679,2334L2681,2334L2681,2336L2683,2336L2683,2341L2689,2344L2689,2346L2688,2349L2688,2354L2690,2354L2692,2357L2694,2357L2696,2354L2701,2354L2703,2352L2703,2349L2705,2349L2705,2347L2707,2347L2707,2329L2705,2326L2702,2324L2701,2318L2698,2316L2697,2312L2696,2308L2695,2306L2695,2297L2696,2295L2696,2293L2703,2293L2707,2288L2709,2288L2711,2285L2716,2285L2720,2283L2726,2283L2729,2280L2731,2280L2733,2278L2735,2278L2736,2276L2737,2275L2739,2278L2742,2278L2742,2276L2743,2275L2742,2272L2742,2270L2736,2270L2733,2273L2731,2273L2731,2267L2729,2262L2731,2260L2731,2257L2735,2252L2739,2252L2739,2255L2742,2257L2742,2265L2744,2270L2744,2273L2746,2273L2746,2275L2761,2275L2765,2278L2770,2278L2774,2280L2776,2283L2778,2283L2781,2285L2785,2295L2783,2295L2783,2298L2785,2303L2785,2306L2787,2308L2798,2308L2804,2306L2817,2306L2820,2303L2837,2303L2838,2304L2839,2303L2843,2303L2846,2306L2846,2311L2850,2313L2851,2316L2854,2316L2856,2318L2856,2316L2861,2318L2865,2318L2874,2324L2880,2321L2885,2321L2885,2318L2887,2316L2893,2316L2893,2311L2898,2311L2902,2308L2902,2311L2911,2311L2913,2308L2911,2308L2908,2306L2898,2306L2895,2303L2924,2303L2926,2301L2963,2301L2963,2303L2952,2303L2952,2306L2937,2306L2938,2309L2944,2316L2946,2318L2946,2322L2949,2326L2951,2322L2954,2322L2957,2325L2960,2327L2964,2330L2966,2331L2969,2327L2973,2328L2977,2333L2986,2339L2989,2339L2993,2344L2993,2347L2994,2352L2992,2356L2994,2360L2995,2365L2998,2371L3003,2371L3004,2369L3010,2369L3015,2372L3021,2380L3019,2382L3017,2382L3015,2385L3015,2387L3012,2387L3012,2390L3010,2390L3008,2392L3006,2392L3002,2395L2999,2395L2999,2403L2997,2403L2997,2403L2997,2403z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7569,2311L7572,2311L7572,2316L7569,2321L7569,2318L7565,2313L7565,2311L7569,2311L7569,2311L7569,2311zM7643,1967L7645,1967L7643,1967L7643,1964L7643,1967L7643,1967L7643,1967zM7600,2326L7600,2324L7598,2321L7593,2321L7593,2318L7591,2318L7591,2316L7589,2316L7589,2318L7587,2318L7587,2316L7585,2316L7582,2311L7587,2306L7589,2306L7589,2308L7593,2308L7593,2306L7595,2306L7595,2303L7598,2303L7598,2301L7600,2301L7600,2298L7598,2295L7600,2293L7602,2295L7608,2295L7608,2293L7617,2293L7617,2290L7619,2290L7621,2295L7624,2295L7628,2298L7630,2298L7630,2288L7628,2288L7624,2285L7621,2283L7621,2273L7619,2273L7621,2270L7624,2270L7626,2267L7626,2265L7628,2267L7632,2267L7632,2270L7639,2270L7637,2267L7637,2265L7639,2262L7637,2260L7645,2260L7647,2257L7652,2257L7658,2250L7660,2250L7660,2247L7663,2247L7663,2250L7665,2250L7667,2247L7669,2247L7669,2232L7667,2232L7667,2227L7669,2216L7671,2214L7671,2209L7665,2201L7667,2199L7667,2196L7663,2193L7663,2181L7665,2181L7665,2178L7665,2181L7667,2181L7667,2176L7669,2173L7669,2171L7667,2171L7669,2171L7669,2165L7667,2163L7667,2160L7665,2160L7669,2160L7669,2158L7671,2158L7671,2150L7667,2145L7665,2145L7660,2140L7658,2135L7658,2132L7660,2132L7665,2130L7665,2127L7667,2127L7665,2125L7663,2125L7663,2127L7658,2122L7656,2122L7656,2117L7654,2117L7652,2120L7652,2117L7650,2112L7650,2109L7647,2109L7647,2114L7645,2114L7643,2112L7641,2107L7641,2097L7637,2097L7637,2094L7634,2089L7632,2086L7630,2086L7621,2076L7621,2074L7617,2074L7617,2069L7615,2063L7611,2058L7606,2058L7606,2053L7606,2056L7600,2048L7600,2046L7602,2043L7602,2040L7600,2040L7598,2038L7591,2038L7591,2035L7589,2035L7587,2033L7585,2033L7585,2030L7578,2028L7578,2025L7576,2025L7574,2023L7569,2023L7565,2020L7569,2018L7569,2015L7572,2018L7572,2010L7569,2007L7580,2007L7582,2010L7587,2010L7587,2007L7589,2007L7589,2005L7593,2005L7593,2002L7591,2002L7591,2000L7593,2000L7595,1997L7598,1997L7598,1995L7593,1989L7589,1987L7587,1984L7580,1984L7580,1982L7582,1982L7587,1977L7587,1974L7582,1974L7576,1967L7572,1967L7565,1969L7563,1972L7563,1974L7561,1977L7561,1974L7559,1974L7554,1972L7550,1972L7548,1969L7546,1969L7546,1967L7543,1967L7543,1964L7539,1959L7539,1946L7541,1946L7541,1941L7537,1941L7535,1944L7533,1944L7533,1936L7530,1933L7528,1933L7526,1931L7526,1928L7522,1926L7520,1923L7520,1921L7517,1921L7517,1918L7520,1918L7526,1910L7526,1908L7528,1905L7528,1908L7537,1913L7539,1913L7539,1916L7541,1918L7543,1918L7546,1916L7546,1913L7550,1905L7552,1905L7552,1908L7554,1908L7554,1913L7556,1913L7559,1910L7556,1910L7556,1908L7559,1905L7561,1905L7563,1910L7567,1916L7569,1916L7569,1910L7572,1908L7572,1905L7576,1905L7576,1908L7580,1910L7582,1908L7582,1905L7589,1905L7593,1900L7593,1895L7595,1893L7604,1890L7606,1887L7606,1890L7608,1890L7613,1893L7613,1898L7619,1898L7619,1900L7621,1900L7621,1903L7624,1900L7632,1900L7632,1903L7639,1903L7639,1900L7641,1903L7645,1903L7645,1905L7647,1905L7647,1908L7643,1913L7641,1913L7641,1921L7643,1921L7645,1926L7643,1926L7645,1931L7650,1933L7654,1933L7654,1938L7658,1941L7663,1941L7663,1946L7667,1946L7671,1944L7678,1944L7678,1946L7676,1946L7676,1949L7673,1951L7669,1954L7669,1956L7667,1956L7667,1954L7665,1954L7663,1956L7663,1964L7658,1964L7656,1967L7650,1967L7652,1967L7650,1967L7650,1969L7647,1967L7647,1964L7643,1964L7643,1967L7645,1967L7645,1972L7647,1974L7643,1977L7641,1987L7641,1989L7637,1989L7628,2000L7626,1997L7624,2000L7624,2005L7619,2010L7619,2020L7617,2023L7615,2028L7615,2033L7617,2035L7617,2038L7619,2038L7619,2043L7621,2043L7621,2048L7626,2053L7630,2053L7639,2063L7639,2066L7637,2066L7637,2071L7641,2076L7643,2081L7645,2081L7645,2084L7647,2086L7652,2089L7654,2091L7656,2091L7656,2094L7658,2099L7663,2102L7665,2107L7667,2109L7669,2109L7671,2112L7676,2114L7676,2117L7676,2114L7676,2120L7678,2120L7678,2117L7682,2117L7682,2120L7686,2122L7691,2122L7691,2125L7689,2125L7689,2130L7693,2135L7697,2145L7702,2148L7704,2148L7706,2153L7706,2163L7708,2163L7708,2165L7710,2171L7710,2176L7712,2181L7712,2183L7715,2183L7715,2188L7717,2199L7715,2204L7715,2214L7719,2227L7721,2227L7721,2232L7719,2232L7715,2237L7715,2242L7719,2247L7715,2247L7715,2260L7715,2255L7715,2262L7712,2262L7712,2265L7715,2265L7715,2267L7712,2270L7712,2273L7710,2273L7708,2275L7708,2283L7706,2283L7706,2280L7704,2280L7699,2285L7695,2285L7695,2288L7689,2293L7684,2293L7684,2295L7682,2295L7682,2301L7676,2301L7676,2303L7673,2303L7669,2306L7667,2308L7665,2308L7663,2311L7658,2311L7658,2308L7654,2308L7654,2306L7652,2306L7650,2303L7645,2303L7647,2306L7645,2306L7645,2308L7647,2311L7647,2316L7643,2316L7643,2318L7647,2318L7647,2321L7643,2326L7646,2327L7643,2330L7641,2330L7641,2339L7638,2339L7636,2337L7630,2341L7630,2347L7626,2347L7621,2349L7619,2349L7615,2352L7613,2352L7613,2354L7611,2354L7611,2357L7608,2357L7608,2359L7606,2362L7606,2364L7600,2369L7598,2369L7593,2372L7591,2369L7595,2364L7591,2364L7591,2357L7593,2349L7593,2331L7595,2331L7598,2326L7600,2326L7600,2326L7600,2326z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5700,1806L5700,1798L5696,1798L5694,1796L5687,1780L5685,1778L5683,1778L5683,1773L5681,1773L5681,1770L5679,1770L5679,1768L5676,1765L5676,1763L5674,1757L5670,1757L5670,1755L5668,1752L5668,1747L5663,1742L5663,1740L5661,1740L5655,1732L5650,1732L5648,1734L5646,1732L5644,1732L5644,1734L5642,1734L5642,1729L5644,1729L5644,1727L5646,1722L5646,1719L5648,1719L5648,1706L5650,1699L5650,1696L5653,1691L5683,1696L5696,1686L5702,1676L5720,1671L5722,1671L5726,1661L5737,1653L5722,1638L5718,1630L5709,1622L5765,1604L5765,1602L5770,1599L5804,1607L5923,1696L5971,1701L5973,1699L5975,1699L5982,1701L5999,1704L6001,1706L6001,1712L6003,1712L6003,1717L6006,1719L6023,1719L6025,1717L6025,1719L6027,1719L6029,1722L6029,1724L6032,1732L6032,1734L6038,1740L6038,1745L6038,1742L6036,1742L6036,1745L6040,1750L6040,1747L6042,1747L6042,1750L6049,1750L6051,1752L6051,1755L6049,1755L6049,1752L6047,1752L6045,1755L6049,1757L6053,1763L6053,1765L6055,1765L6055,1763L6058,1763L6060,1768L6060,1770L6062,1770L6064,1773L6068,1773L6073,1778L6068,1778L6071,1783L6071,1785L6073,1785L6075,1788L6075,1798L6073,1798L6071,1796L6068,1796L6068,1798L6073,1803L6073,1806L6075,1808L6079,1816L6079,1819L6084,1819L6084,1826L6086,1831L6090,1836L6090,1844L6092,1844L6092,1842L6097,1847L6101,1849L6103,1847L6112,1847L6107,1852L6105,1852L6105,1857L6112,1857L6112,1859L6114,1859L6114,1862L6142,1900L6214,1910L6214,1908L6227,1931L6209,1997L6084,2048L6016,2058L5997,2086L5991,2109L5986,2109L5971,2089L5965,2091L5939,2089L5934,2086L5908,2086L5906,2084L5902,2086L5897,2084L5895,2084L5895,2081L5893,2081L5893,2079L5884,2079L5884,2081L5882,2081L5880,2084L5880,2091L5878,2097L5878,2099L5880,2102L5880,2107L5878,2107L5878,2109L5874,2114L5871,2114L5869,2117L5869,2112L5867,2112L5867,2102L5863,2102L5863,2094L5858,2091L5856,2089L5856,2081L5850,2074L5843,2069L5841,2069L5841,2066L5837,2061L5837,2058L5832,2053L5832,2048L5830,2046L5830,2043L5828,2043L5826,2040L5826,2035L5824,2035L5824,2028L5822,2028L5822,2023L5819,2015L5815,2012L5813,2010L5815,2010L5815,2007L5813,2007L5813,2005L5811,2005L5806,1997L5804,1997L5802,1995L5800,1995L5793,1987L5787,1987L5780,1979L5780,1977L5776,1972L5776,1969L5774,1969L5772,1967L5770,1961L5770,1959L5767,1956L5770,1951L5770,1949L5767,1946L5767,1944L5765,1941L5765,1938L5763,1938L5765,1928L5765,1926L5767,1921L5763,1903L5761,1900L5757,1893L5757,1887L5752,1882L5750,1877L5750,1875L5744,1867L5739,1865L5737,1865L5733,1862L5731,1857L5726,1857L5726,1859L5724,1857L5722,1857L5722,1852L5720,1849L5720,1847L5718,1847L5718,1844L5715,1844L5713,1839L5715,1839L5715,1826L5713,1826L5713,1824L5711,1824L5711,1819L5707,1814L5705,1808L5702,1808L5702,1811L5700,1808L5700,1806L5700,1806L5700,1806z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5228,1258L5226,1258L5226,1260L5217,1273L5219,1273L5219,1283L5217,1281L5213,1281L5213,1275L5211,1275L5211,1273L5209,1273L5206,1268L5204,1268L5196,1263L5193,1263L5193,1260L5196,1258L5198,1258L5198,1255L5196,1255L5196,1252L5193,1250L5193,1247L5196,1247L5196,1245L5200,1245L5200,1237L5204,1235L5209,1235L5209,1237L5211,1237L5211,1235L5209,1232L5209,1227L5215,1227L5215,1230L5217,1232L5222,1232L5222,1235L5224,1235L5224,1237L5226,1237L5226,1240L5230,1240L5232,1242L5237,1242L5237,1245L5241,1245L5243,1247L5245,1247L5248,1250L5243,1252L5237,1252L5237,1255L5239,1255L5239,1260L5235,1260L5232,1263L5230,1263L5230,1258L5228,1258L5228,1258L5228,1258z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7219,1917L7222,1921L7226,1921L7226,1918L7224,1913L7220,1913L7219,1917L7219,1917L7219,1917zM7219,1895L7219,1890L7221,1890L7221,1893L7223,1895L7223,1900L7229,1900L7229,1898L7232,1898L7232,1893L7229,1893L7229,1887L7232,1887L7232,1885L7234,1885L7236,1882L7236,1880L7234,1877L7234,1875L7236,1875L7236,1877L7240,1877L7240,1875L7242,1877L7245,1875L7245,1885L7247,1887L7247,1900L7249,1908L7251,1908L7251,1921L7253,1921L7253,1954L7255,1954L7253,1956L7251,1951L7247,1949L7242,1951L7242,1967L7240,1961L7238,1961L7238,1954L7236,1954L7236,1949L7233,1947L7234,1933L7232,1928L7231,1921L7228,1913L7225,1910L7221,1907L7211,1906L7210,1907L7214,1912L7213,1913L7212,1914L7214,1923L7213,1928L7210,1930L7210,1919L7208,1914L7206,1912L7205,1914L7206,1916L7204,1926L7202,1931L7200,1932L7197,1929L7197,1933L7187,1940L7183,1938L7181,1934L7178,1932L7178,1937L7173,1940L7166,1940L7160,1949L7154,1949L7151,1903L7149,1900L7149,1895L7151,1895L7151,1893L7149,1890L7147,1890L7147,1893L7145,1890L7145,1887L7147,1885L7145,1885L7141,1880L7141,1875L7143,1872L7143,1870L7145,1870L7147,1865L7145,1865L7145,1859L7147,1859L7145,1859L7145,1857L7138,1857L7138,1854L7136,1852L7132,1852L7130,1849L7128,1849L7125,1844L7130,1839L7130,1836L7132,1836L7134,1839L7136,1836L7136,1834L7138,1831L7138,1826L7145,1826L7149,1829L7151,1829L7154,1824L7149,1824L7149,1819L7147,1816L7145,1819L7143,1819L7138,1814L7138,1811L7132,1808L7130,1808L7128,1806L7128,1803L7130,1798L7130,1796L7134,1796L7134,1791L7141,1791L7141,1788L7138,1788L7138,1785L7134,1785L7136,1783L7141,1783L7145,1788L7145,1791L7149,1793L7154,1793L7151,1791L7151,1785L7156,1788L7156,1796L7160,1798L7162,1801L7169,1801L7169,1793L7171,1793L7171,1796L7173,1796L7175,1798L7175,1801L7177,1803L7175,1806L7177,1811L7177,1816L7175,1819L7175,1824L7180,1824L7182,1826L7186,1826L7190,1829L7210,1829L7210,1826L7216,1826L7216,1829L7242,1829L7247,1834L7249,1834L7249,1839L7247,1839L7247,1836L7242,1836L7242,1839L7245,1839L7242,1842L7242,1849L7240,1849L7240,1854L7236,1857L7234,1854L7234,1862L7229,1862L7225,1865L7221,1865L7221,1862L7219,1862L7216,1867L7214,1870L7216,1872L7214,1875L7212,1875L7212,1880L7216,1885L7216,1893L7219,1895L7219,1895L7219,1895z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4907,575L4899,576L4896,579L4906,582L4911,579L4910,575L4907,575L4907,575L4907,575zM4914,575L4927,574L4933,573L4937,570L4933,567L4929,568L4927,566L4922,566L4923,568L4919,570L4922,572L4914,575L4914,575L4914,575zM5006,501L5010,507L5013,508L5017,507L5015,501L5006,501L5006,501L5006,501zM5034,434L5029,436L5031,441L5035,438L5035,435L5034,434L5034,434L5034,434zM5054,422L5050,422L5048,425L5046,425L5042,426L5040,430L5036,431L5038,435L5041,432L5048,429L5052,431L5054,428L5057,425L5054,422L5054,422L5054,422zM5072,417L5067,417L5059,418L5056,420L5059,423L5069,423L5073,422L5072,417L5072,417L5072,417zM5216,353L5211,353L5211,358L5214,359L5217,359L5216,353L5216,353L5216,353zM5227,358L5232,360L5236,362L5239,359L5240,356L5235,355L5231,351L5227,351L5223,352L5227,358L5227,358L5227,358zM5290,342L5299,345L5309,345L5330,340L5336,334L5330,333L5323,334L5319,337L5310,337L5306,340L5296,341L5291,339L5290,342L5290,342L5290,342zM5109,477L5109,480L5111,482L5111,485L5089,487L5085,490L5085,495L5087,498L5087,500L5085,503L5083,508L5083,515L5079,521L5079,523L5076,523L5072,528L5068,531L5061,538L5061,541L5068,541L5070,544L5074,544L5074,554L5070,559L5040,556L5038,559L5033,559L5029,564L5027,564L5025,566L5018,572L5020,574L5014,582L5016,584L5018,589L5020,592L5018,592L5016,595L5016,597L5018,600L5016,600L5016,607L5018,610L5020,610L5020,612L5022,612L5022,620L5020,623L5020,628L5018,630L5018,633L5025,638L5029,638L5035,643L5038,646L5038,648L5033,653L5033,656L5020,656L5020,658L5022,658L5022,661L5025,661L5025,666L5027,666L5031,671L5031,676L5029,679L5029,686L5027,686L5022,691L5018,691L5018,694L5014,694L5014,691L5012,694L5009,694L5012,697L5012,699L5009,702L5005,702L5009,712L5009,714L5007,714L5007,719L5005,725L4999,725L4999,722L4996,719L4992,719L4988,717L4981,717L4981,714L4978,714L4979,702L4978,698L4981,695L4980,691L4977,688L4974,691L4974,696L4975,700L4975,704L4973,704L4970,707L4973,709L4973,714L4968,714L4966,719L4964,722L4964,719L4962,719L4957,725L4955,725L4955,722L4953,722L4949,717L4947,717L4947,719L4949,719L4951,722L4949,725L4944,725L4940,730L4936,732L4934,735L4929,735L4927,740L4923,740L4923,742L4914,748L4910,748L4910,750L4908,750L4908,753L4895,753L4892,755L4886,755L4882,753L4877,753L4877,755L4875,755L4873,753L4869,750L4869,753L4864,753L4864,750L4866,748L4869,748L4864,745L4851,745L4851,742L4847,742L4847,740L4840,740L4838,737L4838,734L4836,732L4834,729L4836,725L4835,721L4839,721L4842,716L4844,717L4843,720L4843,723L4847,725L4849,722L4846,714L4849,710L4849,706L4844,708L4842,712L4839,712L4835,715L4830,716L4827,718L4827,705L4831,700L4844,700L4845,697L4828,695L4828,699L4825,702L4823,694L4824,690L4827,686L4831,688L4839,689L4843,687L4840,681L4836,682L4833,685L4830,685L4831,682L4826,682L4823,685L4820,684L4818,681L4820,678L4823,675L4833,676L4833,673L4824,672L4816,666L4818,664L4825,666L4826,663L4819,662L4818,661L4819,657L4811,657L4810,653L4817,650L4824,651L4825,649L4822,648L4820,645L4815,642L4819,641L4821,643L4824,641L4824,638L4821,637L4818,635L4824,634L4830,629L4826,628L4820,632L4815,632L4816,626L4820,628L4820,626L4822,623L4839,622L4836,620L4827,620L4825,619L4825,615L4828,616L4831,618L4833,618L4832,614L4835,616L4838,615L4834,611L4840,608L4842,613L4845,610L4849,609L4850,612L4855,612L4857,613L4867,611L4873,612L4875,611L4874,609L4874,604L4878,603L4885,603L4889,602L4888,600L4875,600L4873,603L4872,607L4861,609L4857,607L4858,604L4862,604L4877,592L4884,591L4887,588L4898,587L4900,590L4896,592L4890,593L4891,595L4903,593L4904,590L4902,587L4905,587L4910,590L4912,589L4908,586L4910,583L4915,582L4919,585L4921,584L4917,580L4936,576L4939,573L4944,571L4948,573L4953,571L4955,575L4958,579L4961,579L4964,578L4975,576L4979,578L4985,577L4984,576L4980,573L4981,571L4985,570L4985,568L4977,569L4972,572L4960,575L4957,569L4948,568L4948,565L4952,563L4961,562L4960,560L4955,560L4952,557L4956,556L4961,556L4964,553L4967,552L4968,550L4967,548L4973,546L4984,538L4998,537L5001,536L4999,534L4994,535L4992,532L4985,530L4979,531L4978,529L4982,525L4987,524L4993,526L4994,528L5010,528L5008,526L5001,524L5003,521L5010,520L5012,522L5018,520L5020,521L5017,519L5018,515L5016,510L5019,510L5025,513L5024,510L5021,507L5019,505L5017,500L5021,500L5025,503L5025,499L5018,495L5018,492L5022,491L5024,490L5025,487L5032,487L5035,488L5036,485L5034,482L5034,479L5039,479L5042,485L5045,483L5042,475L5037,475L5032,472L5036,471L5045,472L5049,470L5050,466L5065,460L5063,458L5063,455L5068,454L5074,452L5075,449L5080,449L5079,446L5083,444L5085,446L5088,442L5091,442L5094,434L5093,432L5097,431L5108,424L5116,423L5121,423L5124,421L5131,423L5131,420L5134,418L5135,415L5121,416L5120,418L5115,418L5112,416L5092,420L5089,419L5084,419L5080,421L5076,420L5075,418L5086,414L5105,412L5105,409L5100,407L5094,406L5090,408L5084,406L5082,402L5083,399L5089,400L5092,397L5095,397L5097,395L5102,393L5107,396L5112,396L5113,391L5129,383L5132,384L5134,390L5133,394L5134,397L5143,395L5146,397L5144,399L5142,401L5142,403L5145,405L5148,406L5150,404L5151,400L5155,400L5157,405L5159,404L5158,400L5160,397L5164,398L5168,397L5168,395L5171,393L5176,389L5173,387L5169,389L5167,392L5164,388L5162,392L5148,395L5146,392L5149,390L5151,387L5153,385L5153,382L5155,379L5161,379L5164,379L5164,376L5166,373L5185,381L5187,380L5191,380L5194,383L5198,384L5201,382L5197,379L5199,375L5188,377L5184,376L5182,373L5179,375L5178,372L5188,369L5193,370L5193,366L5197,365L5200,368L5201,366L5201,360L5202,356L5204,353L5206,352L5208,354L5208,358L5210,361L5212,363L5215,361L5216,362L5219,362L5221,360L5224,360L5226,363L5234,365L5231,367L5231,371L5234,372L5235,368L5239,367L5240,363L5246,361L5248,363L5249,366L5247,368L5247,373L5248,377L5252,377L5253,371L5252,366L5255,366L5258,368L5259,367L5258,364L5256,362L5252,362L5248,360L5248,356L5255,351L5264,354L5264,357L5265,362L5266,367L5270,368L5271,366L5271,361L5278,360L5281,364L5287,365L5289,364L5289,361L5283,361L5280,358L5272,359L5269,358L5269,354L5284,350L5287,350L5289,352L5291,351L5295,351L5300,353L5304,351L5330,345L5336,340L5339,346L5340,345L5339,338L5341,334L5346,337L5350,337L5355,341L5357,339L5354,333L5346,333L5346,330L5345,325L5347,322L5350,322L5352,324L5352,327L5354,330L5357,331L5359,333L5362,334L5363,326L5367,323L5371,325L5373,328L5375,324L5377,327L5377,330L5382,332L5384,331L5384,328L5386,325L5394,323L5401,323L5409,327L5411,330L5401,332L5401,335L5396,340L5388,341L5386,344L5385,348L5383,348L5382,350L5378,353L5379,355L5382,356L5385,356L5386,354L5388,353L5389,350L5393,349L5410,337L5412,334L5414,334L5419,332L5423,332L5423,340L5417,340L5414,342L5422,343L5421,348L5425,350L5427,345L5433,344L5435,339L5440,338L5436,332L5436,329L5441,329L5443,325L5447,327L5453,327L5456,329L5458,329L5460,327L5466,327L5466,329L5475,329L5475,332L5473,332L5471,334L5469,334L5466,337L5462,337L5462,340L5466,340L5466,342L5464,342L5462,345L5456,345L5456,347L5464,347L5464,345L5469,345L5469,347L5473,342L5473,337L5479,334L5495,334L5495,337L5497,340L5505,340L5505,337L5508,340L5508,342L5510,342L5512,340L5521,340L5525,342L5523,345L5531,345L5531,347L5540,347L5544,352L5540,355L5529,355L5525,357L5523,357L5518,360L5501,360L5495,357L5475,357L5475,360L5486,360L5492,362L5505,362L5503,365L5508,365L5508,368L5518,368L5523,365L5523,368L5533,368L5536,370L5540,370L5540,378L5529,378L5527,375L5518,378L5516,378L5516,380L5512,380L5505,383L5501,383L5499,385L5495,385L5495,391L5492,391L5492,393L5482,393L5482,388L5484,385L5488,385L5488,383L5490,383L5495,380L5495,378L5490,373L5486,373L5486,370L5477,370L5471,368L5469,368L5469,365L5462,365L5458,362L5458,360L5447,360L5443,362L5440,362L5440,365L5414,365L5414,368L5408,370L5406,370L5404,373L5401,373L5404,375L5401,375L5399,380L5399,383L5397,383L5397,385L5395,385L5395,391L5397,393L5397,396L5395,398L5386,398L5382,401L5380,401L5380,403L5378,406L5378,408L5371,408L5371,406L5358,406L5358,403L5352,403L5349,401L5343,401L5341,403L5339,403L5336,406L5328,406L5326,408L5326,406L5315,406L5308,403L5302,403L5302,401L5300,398L5297,398L5297,396L5284,385L5274,385L5265,388L5265,391L5267,391L5267,393L5239,393L5243,396L5245,398L5245,403L5243,406L5241,406L5239,408L5235,411L5243,411L5241,413L5239,413L5237,416L5228,416L5224,413L5219,413L5209,411L5183,411L5183,419L5185,419L5185,424L5180,429L5172,429L5172,426L5170,426L5161,424L5161,426L5159,426L5146,431L5144,434L5144,436L5137,444L5131,444L5128,447L5128,449L5133,449L5137,454L5135,459L5118,470L5113,475L5109,477L5109,477L5109,477z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5208,707L5209,710L5209,713L5207,712L5205,709L5208,707L5208,707L5208,707zM5202,709L5203,716L5198,716L5196,714L5195,711L5202,709L5202,709L5202,709zM5137,814L5137,801L5141,796L5144,791L5146,788L5150,786L5150,783L5152,781L5152,776L5157,776L5157,778L5154,781L5154,783L5152,786L5150,791L5150,793L5148,793L5146,796L5144,804L5141,806L5141,809L5139,811L5139,814L5137,814M5209,758L5211,760L5206,763L5204,763L5204,765L5202,765L5202,773L5200,778L5200,781L5196,781L5196,783L5191,783L5191,788L5189,788L5187,791L5185,791L5185,788L5187,788L5189,786L5185,781L5185,770L5187,768L5189,768L5189,765L5191,765L5191,763L5193,763L5193,760L5200,758L5209,758L5209,758L5209,758zM5093,740L5090,740L5089,745L5086,751L5084,752L5082,757L5078,762L5074,760L5078,742L5080,743L5084,734L5087,731L5098,726L5097,734L5098,738L5093,740L5093,740L5093,740zM5071,714L5069,717L5071,722L5069,726L5065,731L5061,732L5054,732L5050,735L5047,739L5044,735L5041,735L5030,742L5023,741L5032,733L5029,731L5028,727L5031,726L5033,721L5035,719L5043,719L5045,724L5048,723L5048,718L5045,714L5046,710L5073,710L5071,714L5071,714L5071,714zM5109,477L5109,480L5111,482L5111,485L5089,487L5085,490L5085,495L5087,498L5087,500L5085,503L5083,508L5083,515L5079,521L5079,523L5076,523L5072,528L5068,531L5061,538L5061,541L5068,541L5070,544L5074,544L5074,554L5070,559L5040,556L5038,559L5033,559L5029,564L5027,564L5025,566L5018,572L5020,574L5014,582L5016,584L5018,589L5020,592L5018,592L5016,595L5016,597L5018,600L5016,600L5016,607L5018,610L5020,610L5020,612L5022,612L5022,620L5020,623L5020,628L5018,630L5018,633L5025,638L5029,638L5035,643L5038,646L5038,648L5033,653L5033,656L5020,656L5020,658L5022,658L5022,661L5025,661L5025,666L5027,666L5031,671L5031,676L5029,679L5029,686L5027,686L5022,691L5018,691L5018,694L5014,694L5014,691L5012,694L5009,694L5012,697L5012,699L5009,702L5005,702L5009,712L5009,714L5007,714L5007,719L5005,725L4999,725L4999,722L4996,719L4992,719L4990,722L4990,725L4992,725L4994,727L4994,730L4992,730L4992,732L4994,732L4994,737L4992,742L4994,742L4996,745L4999,745L5001,748L5000,752L5003,758L5007,755L5009,756L5005,760L5007,760L5007,765L5009,765L5012,768L5012,773L5014,776L5014,773L5018,773L5018,781L5020,786L5022,786L5025,788L5025,791L5029,791L5031,793L5031,796L5033,799L5040,799L5040,806L5035,806L5035,804L5033,804L5033,809L5035,809L5038,811L5038,814L5035,814L5033,811L5027,812L5032,817L5034,817L5034,819L5040,827L5044,829L5044,832L5042,834L5040,834L5042,839L5051,842L5055,842L5055,839L5074,839L5079,837L5081,837L5081,834L5079,834L5079,832L5076,829L5074,829L5074,827L5076,827L5076,824L5079,821L5081,821L5085,819L5092,819L5089,816L5089,814L5100,814L5105,816L5109,816L5115,814L5120,816L5122,816L5126,814L5126,809L5128,806L5131,801L5133,799L5135,799L5135,796L5137,793L5137,788L5139,786L5141,786L5141,783L5139,783L5139,781L5137,781L5141,776L5144,776L5144,773L5146,773L5144,770L5144,768L5146,765L5146,763L5144,763L5141,761L5140,757L5144,756L5147,760L5149,756L5146,753L5146,750L5148,750L5148,742L5144,742L5141,740L5152,740L5148,735L5154,735L5157,732L5154,730L5163,730L5170,724L5171,720L5174,719L5175,723L5179,727L5182,726L5183,723L5190,718L5194,721L5196,719L5194,715L5191,712L5187,712L5185,710L5185,708L5187,708L5192,709L5192,707L5200,707L5202,701L5205,702L5209,702L5214,696L5211,692L5207,690L5206,684L5202,682L5203,686L5198,685L5197,682L5197,676L5194,674L5192,678L5187,676L5186,673L5182,670L5178,671L5174,673L5172,671L5172,668L5161,668L5161,661L5159,658L5157,658L5159,656L5159,646L5157,646L5157,643L5159,643L5159,637L5163,635L5169,640L5170,636L5164,630L5163,626L5167,623L5168,620L5177,619L5175,614L5169,612L5164,607L5166,605L5169,608L5173,610L5180,605L5183,605L5185,602L5181,600L5181,598L5184,596L5187,600L5193,597L5193,595L5198,592L5189,592L5191,589L5198,587L5202,587L5206,584L5204,584L5204,582L5206,582L5209,584L5211,584L5211,582L5215,582L5217,577L5222,577L5222,574L5226,574L5226,577L5230,577L5230,574L5235,572L5237,572L5239,569L5248,569L5250,566L5250,564L5258,564L5258,561L5263,556L5263,554L5271,549L5276,549L5280,544L5280,541L5278,541L5276,538L5271,538L5267,536L5274,536L5274,533L5267,533L5265,531L5269,531L5269,528L5274,528L5276,526L5278,526L5278,523L5280,523L5282,521L5282,519L5287,518L5289,516L5280,514L5284,512L5293,513L5293,510L5289,510L5289,508L5304,508L5304,505L5300,505L5300,503L5302,498L5306,498L5308,500L5313,500L5310,498L5310,495L5313,498L5315,498L5315,500L5319,500L5321,503L5323,503L5326,500L5352,500L5352,498L5349,493L5347,490L5345,490L5345,487L5341,487L5339,485L5339,477L5341,477L5343,475L5345,475L5345,467L5347,467L5347,464L5345,464L5345,462L5341,462L5341,459L5339,459L5336,457L5336,452L5341,452L5341,447L5332,447L5332,442L5334,439L5334,436L5332,434L5334,431L5339,431L5339,429L5334,429L5321,419L5319,419L5319,416L5315,416L5310,413L5297,413L5293,411L5291,411L5291,408L5284,408L5282,406L5278,406L5276,403L5271,401L5269,401L5267,398L5261,398L5263,398L5263,396L5261,396L5258,393L5239,393L5243,396L5245,398L5245,403L5243,406L5241,406L5239,408L5235,411L5243,411L5241,413L5239,413L5237,416L5228,416L5224,413L5219,413L5209,411L5183,411L5183,419L5185,419L5185,424L5180,429L5172,429L5172,426L5170,426L5161,424L5161,426L5159,426L5146,431L5144,434L5144,436L5137,444L5131,444L5128,447L5128,449L5133,449L5137,454L5135,459L5118,470L5113,475L5109,477L5109,477L5109,477z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5273,680L5273,686L5276,684L5278,679L5273,680L5273,680L5273,680zM5223,679L5223,683L5228,687L5233,687L5234,685L5233,683L5233,681L5234,679L5235,682L5235,687L5238,688L5240,686L5241,682L5243,686L5241,687L5242,689L5245,691L5248,690L5250,691L5254,691L5257,689L5255,686L5245,687L5247,683L5249,682L5249,679L5245,679L5243,678L5240,678L5240,675L5236,674L5232,675L5230,676L5229,679L5223,679L5223,679L5223,679zM5475,398L5479,398L5482,401L5477,406L5473,408L5471,411L5475,416L5477,421L5482,421L5501,429L5505,434L5508,434L5516,439L5514,442L5514,444L5512,444L5490,459L5490,462L5488,462L5488,464L5490,464L5490,467L5492,467L5492,470L5497,470L5497,472L5503,480L5503,482L5505,482L5508,485L5508,487L5512,487L5512,490L5516,495L5516,500L5518,503L5518,505L5516,503L5514,503L5510,505L5510,508L5508,508L5508,515L5505,515L5503,518L5510,518L5512,521L5512,523L5503,523L5503,526L5505,528L5505,531L5508,531L5510,533L5518,533L5521,536L5521,538L5514,538L5514,541L5516,541L5516,546L5521,546L5523,549L5525,549L5529,551L5531,551L5531,556L5529,559L5527,559L5523,564L5521,564L5518,566L5514,566L5521,572L5523,572L5525,574L5527,574L5527,577L5533,577L5540,579L5546,584L5549,584L5553,589L5557,592L5559,595L5557,595L5557,597L5555,597L5555,600L5551,605L5551,607L5549,607L5544,610L5542,612L5538,615L5536,615L5533,617L5531,617L5525,623L5521,628L5518,628L5510,638L5497,646L5495,646L5495,648L5490,648L5488,651L5486,651L5482,653L5479,656L5477,656L5477,658L5473,658L5471,661L5469,661L5466,663L5456,671L5451,671L5451,674L5438,674L5438,671L5436,671L5430,674L5404,676L5406,679L5401,679L5401,681L5395,681L5393,679L5391,679L5388,681L5382,681L5382,684L5369,684L5360,689L5358,686L5356,686L5354,689L5349,689L5343,692L5339,691L5336,693L5332,694L5329,694L5327,696L5317,694L5319,692L5317,689L5321,688L5320,685L5317,685L5314,686L5314,690L5306,691L5305,695L5302,694L5302,690L5303,688L5305,684L5304,681L5294,687L5291,687L5286,686L5281,688L5279,687L5279,686L5281,683L5286,682L5287,682L5291,683L5294,683L5294,681L5296,679L5296,676L5294,676L5293,679L5286,678L5288,676L5285,673L5284,676L5282,675L5281,673L5278,672L5274,673L5271,672L5271,668L5276,667L5277,664L5272,664L5269,661L5271,660L5274,658L5276,656L5276,651L5278,648L5280,648L5280,643L5278,640L5282,640L5283,639L5281,633L5278,633L5278,630L5274,625L5271,625L5271,623L5276,617L5276,615L5274,612L5271,612L5269,610L5267,610L5267,597L5269,597L5274,595L5274,597L5276,597L5276,592L5278,592L5276,589L5280,589L5277,586L5277,584L5280,584L5284,584L5289,582L5289,584L5297,584L5302,582L5302,579L5300,579L5297,577L5300,574L5302,574L5304,577L5304,574L5308,569L5313,569L5313,572L5315,572L5315,569L5317,569L5319,566L5314,565L5317,564L5321,564L5323,561L5330,561L5330,556L5336,556L5339,554L5341,554L5347,546L5352,544L5356,544L5358,541L5358,538L5362,533L5369,531L5371,531L5375,528L5378,528L5388,532L5388,528L5385,525L5386,523L5384,523L5382,521L5384,518L5384,515L5386,513L5386,510L5384,510L5384,508L5378,508L5378,505L5367,505L5362,503L5362,500L5352,500L5352,498L5349,493L5347,490L5345,490L5345,487L5341,487L5339,485L5339,477L5341,477L5343,475L5345,475L5345,467L5347,467L5347,464L5345,464L5345,462L5341,462L5341,459L5339,459L5336,457L5336,452L5341,452L5341,447L5332,447L5332,442L5334,439L5334,436L5332,434L5334,431L5339,431L5339,429L5334,429L5321,419L5319,419L5319,416L5315,416L5310,413L5297,413L5293,411L5291,411L5291,408L5284,408L5282,406L5278,406L5276,403L5271,401L5269,401L5267,398L5263,398L5263,396L5261,396L5258,393L5267,393L5267,391L5265,391L5265,388L5274,385L5284,385L5297,396L5297,398L5300,398L5302,401L5302,403L5308,403L5315,406L5326,406L5326,408L5328,406L5336,406L5339,403L5341,403L5343,401L5349,401L5352,403L5358,403L5358,406L5371,406L5371,408L5378,408L5378,406L5380,403L5380,401L5382,401L5386,398L5395,398L5397,396L5397,393L5395,391L5395,385L5397,385L5397,383L5399,383L5399,380L5401,375L5404,375L5401,373L5404,373L5406,370L5408,370L5414,368L5414,365L5440,365L5440,362L5443,362L5447,360L5458,360L5458,362L5462,365L5469,365L5469,368L5471,368L5477,370L5486,370L5486,373L5490,373L5495,378L5495,380L5490,383L5488,383L5488,385L5484,385L5482,388L5482,393L5479,396L5475,398L5475,398L5475,398z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4984,776L4985,781L4990,781L4992,780L4992,777L4989,776L4984,776L4984,776L4984,776zM5005,857L5016,858L5018,860L5016,863L4996,865L4996,862L4990,862L4988,860L4986,860L4988,860L4988,855L4996,855L4996,857L5001,857L5003,860L5005,857L5005,857L5005,857zM5092,844L5094,844L5098,847L5102,847L5102,850L5100,852L5094,852L5092,850L5089,850L5089,847L5092,844L5092,844L5092,844zM4953,836L4954,835L4955,837L4957,837L4960,834L4964,834L4966,832L4968,832L4970,834L4973,834L4973,837L4970,837L4970,839L4973,839L4975,837L4977,837L4977,834L4979,837L4981,842L4981,850L4979,850L4977,854L4975,854L4973,852L4964,850L4962,850L4964,850L4962,847L4960,847L4955,844L4955,842L4953,839L4953,837L4953,836L4953,836L4953,836zM4986,829L4996,829L5006,820L5009,823L5009,828L5012,828L5012,825L5017,826L5018,823L5013,822L5013,819L5016,819L5019,820L5020,816L5027,817L5030,820L5030,821L5029,821L5029,824L5031,824L5031,832L5029,832L5029,834L5027,834L5027,832L5025,832L5025,834L5022,834L5020,837L5020,839L5025,839L5027,842L5027,844L5020,844L5016,847L5016,850L5020,850L5020,852L5018,852L5016,855L5014,855L5014,852L5007,852L5009,850L5009,847L4994,847L4992,842L4992,839L4990,834L4990,832L4986,829L4986,829L4986,829zM4906,802L4908,798L4911,800L4917,801L4918,799L4920,799L4921,802L4923,806L4926,805L4926,801L4927,798L4930,795L4932,792L4934,795L4935,797L4934,800L4936,802L4940,799L4938,797L4937,789L4925,789L4924,790L4927,791L4929,794L4923,798L4921,797L4919,795L4917,797L4914,798L4909,794L4910,792L4913,792L4913,789L4915,786L4917,787L4921,782L4925,783L4947,782L4948,780L4958,769L4969,766L4971,764L4976,763L4975,765L4972,767L4972,769L4973,771L4973,774L4974,779L4974,782L4971,782L4970,785L4968,787L4962,785L4962,787L4967,789L4967,791L4968,796L4969,797L4969,802L4970,804L4983,804L4986,806L4986,809L4983,809L4979,814L4977,814L4979,814L4975,814L4975,816L4973,816L4970,815L4973,814L4973,811L4970,811L4966,814L4966,824L4964,827L4964,824L4955,824L4955,827L4960,827L4960,829L4955,832L4951,832L4951,834L4949,839L4949,844L4951,844L4951,847L4944,847L4944,852L4947,852L4952,851L4958,852L4962,858L4949,857L4949,855L4944,857L4944,860L4942,857L4942,860L4938,860L4938,857L4936,857L4929,855L4925,855L4925,857L4923,857L4923,855L4921,852L4917,851L4915,850L4913,849L4915,846L4918,846L4921,847L4923,850L4923,842L4921,839L4918,839L4916,837L4912,834L4910,837L4905,834L4908,834L4908,827L4912,827L4912,824L4914,824L4914,821L4912,819L4912,816L4908,816L4908,819L4905,819L4905,816L4908,809L4908,806L4906,802L4906,802L4906,802z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8275,1723L8283,1718L8282,1723L8277,1730L8276,1735L8270,1735L8270,1732L8269,1728L8275,1723L8275,1723L8275,1723zM8239,1778L8239,1780L8237,1780L8237,1778L8234,1778L8232,1780L8234,1780L8230,1785L8230,1788L8228,1788L8228,1793L8226,1793L8226,1798L8230,1798L8230,1796L8233,1794L8235,1787L8234,1785L8241,1783L8243,1780L8245,1775L8245,1773L8243,1773L8239,1778L8239,1778L8239,1778zM8304,1655L8302,1658L8304,1663L8308,1663L8310,1661L8310,1658L8308,1655L8304,1655L8304,1655L8304,1655zM8293,1599L8293,1597L8295,1597L8297,1594L8297,1587L8295,1587L8291,1592L8291,1599L8293,1599L8293,1599L8293,1599zM8254,1587L8256,1587L8260,1584L8260,1581L8258,1579L8254,1579L8254,1587L8254,1587L8254,1587zM8287,1555L8286,1564L8280,1561L8280,1566L8282,1566L8285,1567L8289,1571L8291,1571L8291,1576L8289,1579L8286,1578L8286,1574L8286,1576L8286,1574L8283,1570L8282,1576L8284,1579L8289,1581L8291,1581L8293,1579L8297,1579L8297,1581L8295,1584L8297,1587L8302,1584L8302,1576L8299,1576L8298,1578L8296,1576L8297,1574L8297,1571L8295,1571L8295,1569L8297,1566L8302,1569L8304,1569L8304,1576L8306,1576L8308,1579L8308,1581L8304,1584L8308,1584L8308,1592L8306,1592L8304,1594L8302,1599L8302,1602L8297,1602L8295,1604L8297,1607L8297,1615L8299,1615L8302,1617L8302,1620L8299,1622L8299,1625L8297,1625L8297,1630L8306,1630L8306,1632L8310,1632L8310,1627L8308,1627L8306,1625L8306,1620L8312,1621L8315,1627L8315,1630L8312,1632L8312,1635L8317,1635L8317,1632L8319,1632L8323,1630L8323,1627L8319,1627L8319,1625L8321,1625L8321,1622L8325,1622L8325,1625L8330,1625L8330,1622L8332,1617L8332,1607L8334,1599L8336,1597L8336,1594L8338,1592L8338,1587L8345,1579L8347,1579L8347,1576L8345,1574L8343,1569L8343,1566L8345,1564L8334,1564L8334,1561L8336,1561L8340,1556L8340,1553L8338,1551L8332,1551L8332,1553L8321,1553L8321,1548L8319,1546L8319,1543L8315,1543L8312,1541L8310,1541L8306,1543L8306,1546L8304,1546L8304,1553L8297,1553L8297,1551L8293,1556L8293,1558L8287,1555L8287,1555L8287,1555zM8356,1558L8358,1556L8358,1564L8362,1564L8362,1566L8360,1566L8360,1576L8366,1576L8364,1579L8364,1581L8371,1581L8371,1579L8373,1579L8373,1581L8375,1579L8375,1571L8377,1571L8382,1566L8382,1561L8384,1561L8384,1558L8386,1558L8390,1556L8401,1556L8403,1558L8403,1561L8405,1564L8408,1564L8408,1561L8410,1558L8410,1556L8412,1556L8412,1551L8414,1551L8418,1548L8421,1546L8423,1546L8423,1541L8418,1541L8418,1536L8421,1536L8418,1533L8414,1533L8412,1530L8410,1530L8410,1528L8399,1528L8395,1530L8395,1533L8392,1533L8392,1538L8390,1538L8390,1541L8382,1541L8382,1543L8377,1543L8377,1541L8375,1538L8375,1536L8371,1536L8369,1541L8366,1543L8366,1548L8364,1551L8362,1551L8358,1553L8356,1556L8356,1558L8356,1558L8356,1558zM8276,1518L8273,1518L8271,1520L8271,1528L8273,1530L8276,1528L8278,1523L8278,1518L8276,1518L8276,1518L8276,1518zM8529,1400L8529,1398L8527,1398L8520,1405L8520,1408L8522,1408L8522,1413L8520,1413L8520,1416L8525,1416L8527,1413L8527,1411L8529,1411L8529,1400L8529,1400L8529,1400zM8616,1375L8622,1375L8622,1365L8624,1365L8624,1362L8626,1362L8626,1357L8624,1354L8624,1344L8622,1344L8622,1342L8620,1342L8620,1334L8616,1329L8616,1326L8611,1326L8611,1324L8609,1324L8609,1314L8607,1306L8609,1306L8609,1298L8603,1298L8600,1296L8594,1293L8590,1306L8594,1306L8596,1303L8598,1306L8600,1303L8600,1301L8603,1301L8603,1303L8605,1303L8605,1306L8603,1311L8603,1314L8596,1314L8596,1311L8594,1311L8594,1314L8592,1316L8590,1316L8587,1314L8587,1303L8579,1303L8579,1314L8577,1316L8577,1319L8570,1319L8566,1324L8568,1326L8568,1329L8570,1332L8570,1337L8568,1339L8568,1342L8566,1344L8561,1344L8561,1347L8570,1347L8570,1354L8572,1357L8570,1360L8570,1365L8568,1365L8568,1367L8566,1370L8566,1375L8564,1380L8564,1383L8561,1383L8561,1385L8559,1385L8559,1388L8557,1390L8555,1395L8555,1400L8551,1405L8551,1408L8548,1408L8546,1411L8542,1411L8542,1413L8538,1413L8538,1416L8535,1416L8535,1421L8529,1428L8522,1434L8520,1436L8514,1439L8512,1439L8509,1441L8503,1441L8503,1444L8499,1444L8499,1446L8496,1446L8496,1449L8488,1449L8486,1446L8488,1444L8488,1439L8486,1439L8486,1436L8488,1436L8488,1434L8492,1428L8496,1428L8496,1426L8494,1423L8492,1423L8490,1426L8488,1426L8486,1428L8479,1428L8479,1431L8477,1436L8479,1439L8479,1449L8477,1449L8477,1451L8473,1456L8470,1462L8468,1462L8464,1464L8464,1467L8462,1467L8460,1469L8457,1474L8457,1485L8451,1492L8449,1492L8444,1490L8442,1492L8440,1492L8436,1490L8436,1487L8438,1485L8438,1482L8434,1482L8431,1485L8427,1487L8425,1487L8425,1485L8416,1485L8414,1487L8410,1487L8410,1490L8397,1490L8397,1492L8395,1490L8388,1490L8388,1492L8382,1492L8382,1490L8377,1487L8377,1490L8371,1490L8366,1492L8364,1492L8364,1495L8366,1495L8366,1497L8362,1497L8362,1500L8358,1500L8358,1502L8356,1505L8353,1505L8353,1507L8351,1507L8343,1518L8336,1518L8334,1520L8332,1525L8330,1525L8327,1528L8325,1528L8325,1525L8317,1525L8317,1541L8319,1541L8319,1538L8323,1538L8323,1541L8325,1543L8327,1543L8327,1541L8330,1541L8336,1538L8343,1538L8343,1541L8349,1543L8349,1546L8351,1546L8351,1541L8353,1541L8353,1530L8356,1528L8360,1528L8360,1530L8362,1533L8369,1533L8369,1530L8373,1530L8375,1528L8377,1530L8379,1530L8382,1528L8382,1525L8384,1528L8392,1523L8397,1523L8397,1525L8401,1525L8403,1523L8403,1520L8401,1520L8401,1523L8401,1520L8408,1520L8410,1518L8410,1515L8412,1518L8414,1515L8423,1515L8427,1518L8429,1518L8431,1520L8434,1518L8436,1518L8440,1515L8442,1518L8442,1523L8438,1528L8434,1528L8434,1533L8436,1536L8434,1538L8434,1541L8431,1543L8436,1546L8438,1548L8442,1548L8440,1551L8444,1556L8447,1556L8451,1558L8455,1556L8455,1553L8457,1553L8457,1551L8460,1548L8460,1543L8464,1543L8464,1541L8466,1541L8466,1533L8470,1533L8475,1530L8483,1530L8483,1525L8481,1525L8481,1523L8477,1523L8477,1520L8473,1520L8473,1515L8475,1513L8477,1513L8477,1507L8479,1505L8483,1505L8483,1507L8481,1507L8481,1515L8494,1514L8494,1516L8488,1518L8490,1521L8501,1518L8514,1518L8518,1520L8520,1520L8518,1518L8520,1518L8522,1513L8529,1505L8529,1502L8535,1502L8538,1505L8540,1505L8538,1507L8535,1507L8535,1520L8540,1520L8544,1515L8546,1510L8546,1507L8544,1507L8544,1502L8548,1497L8557,1497L8559,1500L8559,1502L8561,1502L8561,1497L8559,1497L8559,1492L8561,1492L8561,1490L8564,1490L8564,1487L8568,1485L8570,1485L8570,1487L8572,1487L8572,1490L8570,1490L8568,1492L8568,1495L8566,1497L8564,1502L8566,1505L8566,1507L8564,1507L8564,1510L8568,1510L8568,1507L8570,1507L8574,1502L8581,1502L8581,1490L8583,1490L8583,1487L8585,1487L8587,1485L8592,1485L8592,1479L8587,1472L8585,1472L8585,1459L8587,1456L8590,1449L8590,1446L8592,1446L8592,1444L8596,1444L8596,1436L8598,1428L8598,1418L8594,1413L8594,1408L8596,1405L8596,1403L8598,1398L8600,1398L8605,1395L8609,1395L8609,1398L8611,1400L8611,1383L8613,1380L8616,1380L8616,1375L8616,1375L8616,1375zM8711,1224L8711,1214L8713,1214L8713,1212L8715,1212L8717,1207L8717,1204L8720,1204L8717,1201L8715,1204L8713,1204L8713,1207L8711,1207L8711,1209L8707,1209L8707,1212L8704,1212L8704,1214L8689,1214L8685,1209L8672,1209L8672,1207L8665,1204L8663,1201L8652,1194L8648,1189L8646,1189L8646,1186L8642,1184L8642,1181L8637,1176L8635,1176L8635,1173L8633,1173L8631,1171L8631,1168L8626,1168L8626,1166L8624,1166L8624,1163L8622,1166L8616,1166L8613,1171L8613,1176L8616,1179L8616,1181L8618,1181L8618,1186L8620,1189L8620,1194L8618,1199L8616,1201L8616,1214L8611,1219L8607,1219L8607,1227L8609,1232L8609,1235L8605,1240L8592,1240L8583,1235L8583,1232L8579,1235L8579,1240L8581,1240L8583,1242L8583,1247L8581,1247L8579,1250L8579,1252L8572,1252L8570,1255L8566,1255L8566,1258L8564,1258L8564,1260L8566,1260L8566,1263L8564,1265L8564,1270L8568,1273L8572,1278L8572,1286L8568,1291L8568,1293L8570,1296L8572,1296L8574,1298L8574,1296L8577,1296L8581,1293L8581,1288L8583,1288L8585,1286L8587,1286L8587,1283L8590,1283L8596,1288L8598,1288L8603,1286L8603,1283L8600,1283L8598,1281L8596,1281L8592,1275L8590,1275L8590,1273L8587,1273L8585,1275L8583,1275L8583,1273L8581,1273L8581,1270L8577,1270L8577,1265L8579,1263L8581,1263L8581,1260L8590,1260L8594,1263L8594,1265L8596,1268L8598,1268L8598,1265L8600,1265L8607,1260L8609,1260L8611,1258L8620,1258L8622,1260L8624,1260L8624,1263L8629,1263L8633,1265L8633,1268L8644,1273L8648,1273L8650,1275L8652,1275L8655,1278L8658,1277L8658,1279L8660,1279L8662,1274L8661,1273L8661,1268L8668,1260L8668,1258L8670,1258L8670,1255L8674,1252L8676,1252L8681,1247L8685,1247L8689,1245L8691,1245L8691,1247L8700,1247L8700,1245L8704,1245L8707,1247L8707,1245L8711,1245L8711,1242L8713,1240L8722,1240L8726,1235L8730,1235L8730,1232L8726,1232L8722,1237L8717,1237L8715,1235L8717,1232L8717,1228L8711,1224L8711,1224L8711,1224zM8306,1655L8308,1655L8310,1658L8310,1661L8308,1663L8304,1663L8302,1658L8304,1655L8306,1655z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8063,2161L8065,2159L8070,2159L8070,2165L8071,2166L8070,2169L8069,2173L8067,2172L8067,2169L8067,2166L8065,2164L8063,2161L8063,2161L8063,2161zM8023,2476L8027,2481L8023,2485L8016,2485L8010,2488L8006,2487L8010,2482L8016,2478L8023,2476L8023,2476L8023,2476zM8054,2451L8060,2456L8054,2459L8048,2458L8038,2458L8038,2453L8042,2448L8049,2452L8054,2451L8054,2451L8054,2451zM8039,2043L8048,2043L8052,2046L8057,2051L8059,2051L8063,2053L8070,2053L8072,2051L8073,2047L8073,2044L8076,2046L8078,2051L8078,2056L8076,2056L8076,2058L8074,2058L8074,2076L8076,2081L8076,2084L8078,2084L8081,2086L8081,2091L8085,2091L8083,2094L8083,2099L8081,2102L8078,2109L8074,2114L8076,2114L8076,2117L8070,2122L8068,2125L8066,2123L8063,2125L8061,2127L8057,2130L8057,2135L8058,2136L8059,2137L8059,2140L8052,2148L8052,2153L8055,2155L8057,2160L8057,2165L8059,2165L8059,2168L8061,2171L8059,2171L8059,2178L8061,2181L8061,2183L8063,2186L8063,2188L8070,2196L8078,2196L8078,2193L8076,2191L8074,2191L8074,2188L8076,2186L8076,2188L8078,2191L8078,2186L8081,2186L8083,2183L8094,2183L8094,2186L8096,2186L8098,2191L8100,2193L8100,2199L8098,2199L8098,2201L8100,2201L8100,2204L8104,2201L8107,2201L8107,2199L8104,2196L8104,2191L8107,2191L8109,2193L8113,2196L8117,2197L8122,2201L8124,2201L8124,2204L8113,2204L8111,2206L8111,2209L8113,2209L8115,2211L8117,2211L8117,2216L8120,2216L8120,2219L8117,2219L8117,2224L8120,2224L8122,2222L8124,2222L8124,2224L8126,2224L8126,2227L8130,2226L8128,2232L8128,2237L8127,2240L8126,2242L8124,2242L8124,2239L8122,2237L8122,2234L8120,2232L8117,2232L8115,2229L8113,2229L8111,2227L8109,2227L8109,2224L8104,2224L8104,2222L8107,2222L8104,2216L8102,2214L8102,2211L8100,2211L8098,2209L8096,2209L8094,2206L8091,2206L8091,2204L8094,2204L8094,2201L8091,2201L8087,2196L8085,2196L8083,2199L8083,2206L8085,2209L8087,2209L8087,2214L8089,2214L8089,2219L8087,2222L8085,2222L8085,2216L8083,2214L8081,2209L8078,2206L8074,2206L8074,2204L8072,2201L8068,2199L8065,2196L8063,2196L8065,2196L8063,2196L8063,2193L8061,2193L8061,2196L8055,2199L8055,2201L8050,2206L8046,2206L8044,2204L8044,2201L8039,2201L8039,2196L8033,2196L8033,2201L8031,2199L8031,2183L8035,2183L8039,2178L8042,2178L8042,2176L8039,2173L8039,2171L8037,2168L8031,2168L8029,2165L8029,2171L8031,2173L8031,2178L8029,2181L8026,2178L8024,2178L8024,2176L8020,2171L8020,2168L8016,2168L8016,2155L8013,2153L8013,2150L8011,2148L8011,2145L8013,2142L8011,2140L8011,2132L8009,2130L8007,2130L8007,2117L8009,2117L8011,2114L8011,2120L8018,2127L8022,2127L8022,2125L8024,2125L8026,2122L8024,2120L8024,2114L8022,2109L8022,2107L8024,2099L8026,2097L8026,2079L8024,2079L8024,2074L8026,2071L8026,2061L8029,2056L8029,2053L8031,2053L8031,2048L8029,2048L8029,2046L8035,2046L8035,2043L8039,2043L8039,2043L8039,2043zM8072,2441L8074,2441L8074,2438L8076,2436L8076,2433L8074,2433L8072,2431L8070,2431L8068,2433L8063,2433L8063,2436L8068,2441L8072,2441L8072,2441L8072,2441zM7933,2395L7933,2387L7929,2387L7929,2395L7933,2395L7933,2395L7933,2395zM8187,2441L8187,2428L8185,2426L8189,2423L8191,2423L8193,2420L8195,2415L8198,2413L8195,2413L8195,2408L8198,2408L8198,2405L8195,2400L8195,2398L8193,2395L8191,2395L8191,2392L8193,2387L8193,2382L8189,2382L8191,2377L8191,2372L8185,2372L8182,2369L8185,2367L8187,2367L8189,2364L8189,2357L8187,2357L8187,2354L8185,2354L8185,2349L8180,2349L8178,2344L8178,2341L8176,2339L8174,2339L8172,2336L8169,2336L8169,2334L8167,2331L8163,2331L8163,2336L8165,2339L8165,2341L8167,2347L8167,2357L8161,2357L8156,2362L8154,2362L8154,2359L8152,2359L8150,2357L8146,2357L8146,2375L8143,2375L8141,2372L8139,2372L8139,2369L8137,2369L8133,2375L8133,2380L8130,2382L8130,2385L8128,2385L8128,2382L8126,2382L8122,2387L8122,2382L8120,2375L8120,2372L8115,2367L8113,2369L8111,2369L8109,2367L8107,2369L8107,2372L8098,2372L8098,2375L8096,2377L8096,2380L8098,2382L8096,2382L8096,2385L8091,2385L8083,2387L8078,2387L8078,2390L8076,2390L8074,2395L8072,2398L8072,2405L8070,2408L8070,2413L8068,2415L8068,2418L8065,2420L8070,2426L8074,2426L8074,2423L8076,2418L8076,2415L8078,2413L8078,2410L8078,2413L8078,2408L8081,2403L8085,2398L8091,2398L8091,2408L8093,2412L8096,2412L8098,2408L8098,2400L8100,2398L8100,2400L8102,2403L8100,2403L8100,2405L8102,2408L8102,2405L8104,2405L8109,2411L8109,2403L8111,2403L8111,2398L8109,2398L8111,2395L8117,2395L8117,2398L8120,2400L8126,2400L8126,2403L8128,2405L8128,2408L8130,2410L8130,2408L8133,2408L8133,2410L8130,2415L8128,2418L8126,2418L8124,2420L8124,2431L8126,2431L8126,2443L8133,2451L8137,2451L8139,2454L8146,2456L8148,2459L8154,2459L8156,2451L8161,2451L8161,2459L8159,2459L8159,2464L8161,2464L8161,2469L8165,2469L8165,2466L8167,2464L8167,2461L8169,2459L8172,2459L8172,2446L8169,2438L8167,2436L8163,2436L8163,2428L8165,2428L8165,2426L8167,2426L8167,2420L8169,2420L8174,2424L8173,2419L8172,2415L8172,2413L8174,2413L8176,2410L8176,2415L8178,2418L8178,2420L8180,2420L8180,2426L8182,2426L8182,2438L8185,2443L8187,2443L8187,2441L8187,2441L8187,2441zM8107,2329L8109,2329L8107,2329L8107,2329L8107,2329zM8184,2333L8185,2331L8185,2329L8182,2324L8181,2327L8178,2329L8182,2333L8184,2333L8184,2333L8184,2333zM8137,2321L8135,2318L8128,2318L8128,2321L8124,2326L8122,2326L8120,2329L8120,2334L8122,2336L8124,2336L8126,2339L8128,2339L8133,2336L8137,2336L8139,2331L8139,2334L8141,2334L8141,2331L8139,2329L8141,2329L8141,2324L8139,2324L8137,2321L8137,2321L8137,2321zM8172,2329L8172,2308L8169,2308L8165,2321L8167,2321L8169,2326L8169,2331L8172,2331L8172,2329L8172,2329L8172,2329zM8011,2308L8013,2308L8013,2306L8011,2303L8009,2303L8007,2306L8007,2307L8008,2309L8009,2311L8011,2308L8011,2308L8011,2308zM8087,2311L8087,2308L8089,2308L8089,2301L8087,2301L8085,2303L8085,2306L8083,2306L8083,2311L8087,2311L8087,2311L8087,2311zM8107,2308L8111,2308L8113,2298L8113,2295L8111,2293L8104,2290L8102,2290L8098,2293L8096,2295L8096,2303L8094,2306L8091,2306L8091,2311L8094,2313L8094,2321L8089,2326L8083,2326L8081,2331L8081,2336L8085,2341L8085,2344L8091,2344L8091,2347L8094,2347L8094,2352L8098,2357L8100,2357L8104,2352L8104,2349L8107,2347L8102,2341L8102,2339L8100,2336L8102,2336L8102,2331L8100,2331L8100,2329L8102,2329L8102,2324L8104,2324L8104,2321L8107,2316L8107,2308L8107,2308L8107,2308zM8107,2324L8107,2326L8109,2326L8109,2329L8107,2329L8107,2339L8104,2341L8105,2343L8107,2344L8109,2339L8111,2339L8111,2334L8113,2331L8113,2329L8115,2326L8115,2321L8117,2318L8117,2316L8120,2316L8124,2313L8126,2311L8126,2283L8124,2283L8124,2288L8122,2293L8122,2298L8117,2303L8117,2308L8115,2311L8115,2313L8113,2313L8113,2316L8111,2318L8111,2321L8109,2321L8109,2324L8107,2324L8107,2324L8107,2324zM7992,2293L7992,2295L7996,2301L7994,2306L7990,2311L7985,2311L7985,2313L7985,2311L7987,2313L7985,2313L7983,2318L7981,2318L7981,2324L7979,2324L7979,2321L7977,2324L7977,2326L7972,2331L7972,2334L7970,2334L7968,2336L7968,2339L7959,2349L7955,2349L7953,2352L7948,2354L7944,2359L7944,2362L7942,2364L7940,2364L7940,2367L7938,2369L7938,2372L7935,2380L7940,2375L7942,2375L7942,2372L7946,2372L7948,2367L7953,2367L7953,2364L7955,2362L7959,2362L7959,2359L7961,2354L7961,2352L7968,2352L7970,2347L7977,2341L7979,2336L7979,2334L7977,2334L7977,2331L7979,2326L7985,2326L7990,2324L7992,2324L7992,2318L7994,2318L7994,2316L7996,2313L7998,2313L7998,2311L8000,2313L8005,2308L8007,2308L8003,2303L8003,2298L8000,2298L8000,2285L8003,2283L8003,2280L8000,2280L8000,2278L7998,2278L7998,2290L7996,2290L7996,2288L7994,2288L7994,2293L7992,2293L7992,2293L7992,2293zM8140,2256L8141,2257L8143,2257L8146,2262L8150,2265L8152,2267L8154,2267L8152,2273L8150,2273L8148,2275L8148,2280L8146,2280L8146,2283L8141,2283L8141,2280L8135,2273L8133,2275L8135,2280L8135,2283L8137,2283L8137,2295L8139,2295L8141,2293L8143,2293L8146,2298L8148,2301L8148,2303L8146,2306L8146,2313L8148,2313L8148,2316L8146,2318L8148,2321L8152,2324L8154,2324L8154,2321L8152,2318L8152,2311L8154,2313L8154,2318L8157,2316L8160,2315L8161,2313L8161,2311L8159,2311L8156,2308L8156,2306L8159,2306L8154,2301L8152,2301L8152,2295L8154,2295L8154,2285L8152,2283L8152,2280L8154,2283L8156,2283L8161,2288L8172,2288L8172,2285L8167,2285L8167,2283L8169,2283L8169,2278L8167,2278L8165,2273L8165,2257L8167,2257L8165,2255L8167,2252L8165,2250L8161,2250L8161,2245L8156,2239L8154,2239L8154,2242L8150,2239L8150,2242L8135,2242L8133,2239L8133,2245L8135,2250L8135,2252L8137,2252L8138,2254L8140,2256L8140,2256L8140,2256zM8141,2275L8141,2273L8139,2270L8139,2267L8137,2267L8135,2270L8140,2276L8141,2275L8141,2275L8141,2275zM8068,2306L8068,2311L8070,2311L8070,2308L8072,2308L8072,2306L8074,2303L8083,2303L8087,2298L8089,2298L8091,2295L8089,2293L8091,2293L8094,2290L8096,2290L8100,2285L8100,2280L8102,2278L8102,2273L8100,2273L8100,2275L8098,2275L8094,2278L8094,2275L8091,2273L8089,2273L8085,2275L8076,2265L8072,2265L8070,2262L8065,2262L8065,2267L8072,2267L8072,2275L8070,2278L8070,2293L8068,2295L8068,2306L8068,2306L8068,2306zM8011,2257L8013,2257L8011,2257L8011,2257L8011,2257zM8018,2260L8018,2257L8020,2260L8024,2260L8024,2257L8022,2257L8020,2252L8020,2255L8018,2255L8016,2252L8011,2250L8009,2250L8009,2252L8011,2257L8013,2257L8013,2260L8018,2260L8018,2260L8018,2260zM8089,2250L8089,2245L8087,2242L8083,2242L8081,2245L8083,2247L8085,2247L8087,2250L8089,2250L8089,2250L8089,2250zM8126,2260L8122,2252L8120,2252L8111,2242L8107,2239L8104,2239L8104,2255L8100,2260L8102,2262L8107,2257L8109,2252L8113,2252L8113,2255L8115,2255L8120,2262L8122,2262L8125,2267L8127,2267L8126,2260L8126,2260L8126,2260zM8070,2252L8074,2239L8074,2237L8072,2237L8070,2239L8070,2245L8068,2245L8068,2255L8070,2255L8070,2252L8070,2252L8070,2252zM8105,2232L8102,2227L8098,2222L8096,2222L8096,2227L8098,2227L8105,2232L8105,2232L8105,2232zM8056,2219L8054,2221L8051,2223L8050,2223L8050,2220L8051,2218L8050,2214L8048,2214L8046,2211L8046,2214L8044,2214L8044,2211L8042,2211L8042,2209L8039,2209L8035,2211L8033,2211L8026,2209L8024,2209L8022,2211L8022,2214L8024,2214L8029,2219L8033,2219L8033,2222L8035,2224L8035,2234L8037,2234L8037,2237L8039,2237L8039,2242L8044,2247L8042,2249L8042,2252L8048,2252L8052,2247L8052,2245L8055,2242L8057,2242L8057,2234L8055,2234L8055,2224L8057,2224L8056,2219L8056,2219L8056,2219zM8072,2219L8074,2214L8072,2214L8072,2211L8070,2209L8065,2209L8063,2211L8065,2214L8065,2216L8070,2219L8072,2219L8072,2219L8072,2219zM8133,2193L8133,2196L8133,2193L8133,2193L8133,2193zM8132,2207L8134,2206L8137,2201L8137,2199L8135,2196L8133,2196L8133,2191L8128,2191L8128,2204L8126,2204L8126,2206L8130,2208L8132,2207L8132,2207L8132,2207zM8010,2259L8011,2259L8015,2263L8016,2267L8016,2270L8012,2270L8011,2268L8011,2265L8009,2263L8010,2259L8010,2259L8010,2259z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4506,831L4505,828L4505,824L4507,823L4510,822L4512,823L4512,822L4515,820L4517,817L4518,817L4520,819L4518,821L4517,823L4517,824L4514,826L4512,826L4512,828L4510,831L4506,831L4506,831L4506,831zM4532,831L4534,828L4538,829L4540,831L4540,836L4538,838L4533,837L4532,834L4532,831L4532,831L4532,831zM4480,764L4484,766L4483,770L4480,772L4481,775L4480,784L4475,783L4473,775L4475,770L4473,768L4473,764L4478,763L4480,764L4480,764L4480,764zM4486,761L4482,759L4488,756L4486,756L4481,753L4483,746L4503,740L4505,737L4510,737L4511,741L4505,748L4503,751L4503,754L4486,761L4486,761L4486,761zM4654,990L4652,990L4654,990L4654,990L4654,990zM4479,852L4485,852L4485,850L4487,850L4488,848L4490,847L4498,847L4500,844L4505,844L4507,847L4509,844L4511,844L4511,847L4513,847L4513,852L4520,857L4522,857L4524,860L4522,860L4522,862L4526,862L4526,865L4529,865L4531,869L4529,871L4527,871L4526,867L4523,867L4523,870L4523,873L4525,873L4526,875L4526,878L4518,878L4518,883L4516,883L4513,885L4511,885L4509,883L4498,883L4498,885L4496,885L4496,883L4494,880L4492,875L4490,875L4490,872L4485,872L4483,875L4481,875L4483,878L4479,883L4472,880L4464,880L4464,875L4459,875L4455,870L4457,870L4461,867L4464,867L4466,865L4461,865L4461,862L4466,862L4472,860L4479,852L4479,852L4479,852zM4694,967L4705,969L4706,972L4706,972L4721,972L4721,977L4719,977L4719,980L4715,980L4713,982L4708,982L4708,985L4704,987L4704,985L4702,987L4700,987L4697,990L4689,990L4689,992L4684,992L4682,990L4661,990L4661,992L4656,992L4656,990L4643,990L4641,992L4624,992L4626,995L4628,995L4626,997L4622,997L4622,995L4613,995L4613,997L4611,995L4606,995L4604,992L4598,992L4596,995L4587,995L4585,997L4585,1000L4583,1003L4581,1008L4578,1010L4576,1010L4572,1005L4570,1005L4570,1008L4568,1008L4568,1005L4548,1005L4544,1010L4542,1010L4541,1014L4539,1015L4537,1015L4537,1018L4535,1018L4535,1015L4533,1013L4526,1013L4526,1014L4523,1014L4522,1013L4522,1010L4525,1009L4531,1009L4534,1008L4536,1005L4541,1003L4542,1000L4542,998L4543,997L4547,997L4552,992L4555,990L4555,982L4559,982L4559,985L4561,985L4563,982L4565,982L4563,980L4563,977L4598,977L4598,975L4607,963L4604,963L4600,967L4593,967L4593,969L4591,972L4585,972L4583,969L4578,967L4576,967L4576,964L4572,964L4565,966L4562,966L4561,964L4562,963L4566,962L4565,961L4561,961L4559,958L4555,959L4550,959L4550,962L4542,962L4546,962L4542,962L4537,959L4539,959L4539,957L4537,954L4535,954L4539,952L4547,950L4547,948L4550,946L4555,946L4561,943L4563,943L4567,938L4568,936L4568,929L4570,929L4568,926L4565,926L4565,921L4559,921L4559,924L4557,924L4555,925L4549,925L4550,923L4552,921L4557,921L4557,918L4561,918L4561,913L4556,912L4554,910L4552,908L4553,905L4554,903L4564,905L4564,907L4571,909L4574,908L4587,908L4587,906L4589,906L4593,911L4596,911L4596,908L4593,908L4593,906L4594,905L4596,903L4596,898L4598,895L4598,893L4596,893L4596,888L4600,888L4600,885L4602,883L4602,878L4600,880L4593,883L4591,883L4587,878L4587,875L4585,875L4585,872L4583,872L4583,870L4581,870L4581,867L4587,860L4587,857L4589,855L4594,853L4583,852L4583,855L4581,857L4576,857L4574,860L4565,860L4561,857L4559,857L4559,860L4561,860L4561,862L4555,862L4555,860L4550,860L4548,857L4544,857L4544,860L4546,862L4546,865L4544,865L4544,862L4542,860L4539,860L4539,857L4537,857L4537,852L4542,852L4542,847L4544,847L4550,841L4553,840L4553,832L4547,831L4546,827L4546,825L4547,821L4550,820L4554,820L4557,822L4557,820L4556,819L4552,818L4546,819L4543,822L4542,825L4542,827L4539,827L4538,824L4534,824L4532,819L4531,820L4531,823L4532,826L4530,829L4529,830L4530,833L4528,837L4529,840L4527,843L4523,842L4521,839L4524,829L4526,826L4524,824L4524,820L4525,817L4527,815L4525,808L4536,797L4531,798L4527,801L4523,802L4521,805L4521,810L4515,811L4507,809L4510,806L4507,803L4506,802L4505,801L4508,800L4513,794L4521,792L4519,788L4523,782L4519,785L4515,785L4511,781L4509,784L4508,788L4505,790L4504,783L4507,781L4504,779L4502,775L4497,776L4490,772L4493,771L4500,770L4505,771L4505,765L4507,766L4512,771L4513,775L4515,771L4515,775L4517,779L4522,780L4525,777L4520,776L4518,769L4522,765L4519,761L4521,758L4526,754L4530,758L4537,756L4530,753L4532,751L4533,748L4531,745L4542,746L4541,743L4538,740L4540,733L4545,732L4552,736L4563,737L4567,735L4586,735L4591,733L4595,733L4596,735L4595,737L4596,740L4594,743L4590,745L4583,749L4580,750L4578,753L4574,755L4570,755L4569,760L4575,761L4561,771L4562,773L4566,772L4569,768L4581,765L4583,764L4585,764L4590,762L4592,764L4628,764L4629,768L4631,770L4631,773L4629,775L4625,775L4625,778L4623,781L4623,786L4621,788L4618,788L4618,791L4616,793L4614,793L4614,796L4612,796L4612,798L4612,796L4612,801L4610,801L4608,802L4606,802L4600,804L4602,805L4602,809L4609,809L4609,811L4606,813L4598,813L4589,819L4581,819L4585,821L4600,821L4602,819L4611,819L4619,824L4624,824L4624,827L4626,827L4626,829L4630,832L4632,832L4635,834L4637,834L4637,844L4639,847L4639,850L4641,850L4641,852L4643,855L4643,857L4650,865L4652,865L4656,867L4665,870L4667,870L4669,872L4669,878L4671,878L4674,880L4678,880L4678,883L4676,883L4676,888L4680,889L4684,894L4684,898L4678,898L4678,901L4682,901L4684,903L4687,903L4687,906L4689,906L4691,911L4691,916L4689,916L4687,918L4682,921L4684,921L4685,922L4687,922L4687,925L4692,925L4694,922L4695,921L4695,918L4706,918L4706,921L4719,921L4721,924L4723,924L4728,926L4728,929L4730,929L4730,939L4726,944L4726,949L4721,949L4719,952L4717,952L4715,949L4713,949L4717,954L4717,957L4715,957L4713,959L4710,959L4708,957L4706,957L4706,959L4708,959L4708,964L4695,965L4692,963L4685,963L4682,963L4677,964L4680,965L4686,965L4694,967L4694,967zM4578,753L4574,755L4570,755M4602,727L4602,725L4589,725L4589,722L4587,722L4589,719L4589,717L4596,717L4600,722L4602,722L4604,725L4602,727L4602,727L4602,727zM4550,883L4555,883L4557,880L4559,880L4560,878L4560,873L4559,872L4555,872L4555,878L4550,878L4548,883L4550,883L4550,883L4550,883zM4644,668L4648,671L4652,663L4655,659L4660,661L4660,665L4658,668L4663,670L4659,671L4655,670L4649,675L4653,678L4650,681L4652,683L4651,686L4648,686L4646,692L4642,693L4644,686L4643,684L4637,684L4632,678L4641,680L4642,676L4633,672L4644,668L4644,668L4644,668z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2631,4141L2632,4146L2635,4146L2637,4141L2638,4135L2635,4137L2631,4141L2631,4141L2631,4141zM2641,4110L2643,4114L2643,4118L2648,4118L2656,4113L2660,4107L2657,4104L2654,4104L2653,4106L2651,4104L2648,4104L2646,4105L2646,4108L2641,4110L2641,4110L2641,4110zM2594,4116L2594,4119L2598,4120L2598,4116L2594,4116L2594,4116L2594,4116zM2614,4110L2611,4110L2607,4107L2603,4107L2602,4110L2609,4113L2613,4117L2617,4118L2619,4115L2627,4112L2629,4110L2626,4107L2614,4110L2614,4110L2614,4110zM2619,4094L2620,4091L2617,4090L2614,4100L2615,4103L2610,4103L2611,4106L2615,4108L2621,4107L2618,4103L2619,4094L2619,4094L2619,4094zM2633,4090L2636,4095L2639,4092L2637,4088L2635,4088L2633,4090L2633,4090L2633,4090zM2630,4095L2628,4093L2625,4094L2623,4092L2621,4098L2623,4101L2626,4104L2630,4104L2630,4101L2630,4095L2630,4095L2630,4095zM2801,4470L2804,4473L2806,4474L2796,4474L2793,4478L2795,4478L2805,4479L2808,4478L2812,4482L2814,4481L2815,4478L2817,4479L2819,4479L2818,4476L2816,4475L2815,4475L2814,4473L2811,4467L2809,4467L2808,4471L2805,4467L2802,4466L2801,4467L2801,4470L2801,4470L2801,4470zM2587,4288L2586,4292L2584,4294L2585,4311L2589,4312L2591,4310L2593,4304L2595,4302L2598,4298L2602,4294L2602,4291L2601,4288L2598,4287L2588,4286L2587,4288L2587,4288L2587,4288zM2664,4376L2673,4376L2679,4373L2691,4373L2695,4371L2692,4369L2670,4371L2669,4373L2665,4371L2664,4376L2664,4376L2664,4376zM2701,4377L2695,4378L2684,4383L2680,4388L2674,4387L2673,4389L2675,4392L2677,4392L2678,4398L2680,4397L2680,4391L2684,4392L2687,4395L2688,4390L2693,4390L2699,4387L2702,4385L2705,4382L2705,4379L2701,4377L2701,4377L2701,4377zM2772,3308L2772,3313L2774,3316L2772,3316L2772,3321L2774,3321L2774,3323L2778,3323L2778,3328L2776,3328L2776,3333L2778,3336L2781,3336L2787,3346L2787,3359L2789,3359L2789,3369L2791,3369L2794,3372L2794,3374L2796,3379L2794,3379L2798,3390L2796,3390L2796,3397L2798,3400L2811,3400L2815,3397L2820,3402L2820,3407L2817,3412L2817,3415L2815,3415L2815,3420L2811,3438L2804,3441L2802,3441L2787,3448L2785,3448L2785,3453L2783,3453L2778,3458L2778,3461L2776,3461L2776,3463L2778,3463L2778,3466L2783,3471L2783,3474L2778,3474L2778,3479L2776,3479L2776,3489L2778,3492L2778,3494L2781,3499L2781,3507L2778,3509L2778,3512L2776,3512L2776,3520L2778,3520L2778,3522L2785,3530L2785,3532L2781,3537L2774,3540L2774,3537L2770,3537L2770,3540L2768,3540L2768,3545L2763,3553L2763,3555L2761,3558L2761,3565L2757,3565L2757,3568L2755,3571L2755,3573L2750,3578L2748,3578L2746,3581L2746,3586L2744,3588L2744,3604L2739,3604L2737,3606L2737,3622L2739,3622L2739,3632L2742,3634L2742,3639L2739,3642L2739,3645L2735,3645L2731,3650L2731,3652L2729,3655L2729,3665L2726,3668L2724,3668L2722,3670L2722,3683L2720,3683L2724,3693L2729,3693L2731,3696L2731,3698L2729,3698L2726,3701L2729,3706L2729,3708L2731,3708L2733,3713L2733,3724L2735,3726L2737,3726L2737,3729L2735,3731L2735,3736L2737,3739L2744,3739L2744,3744L2742,3744L2742,3749L2739,3754L2739,3759L2742,3767L2742,3772L2735,3772L2735,3777L2733,3780L2726,3795L2726,3800L2724,3803L2722,3803L2722,3805L2726,3808L2726,3821L2729,3823L2726,3823L2726,3833L2720,3833L2718,3838L2718,3843L2709,3843L2707,3846L2705,3854L2705,3861L2707,3864L2705,3866L2705,3874L2707,3874L2707,3879L2705,3882L2705,3887L2707,3889L2709,3897L2709,3907L2711,3907L2711,3910L2714,3910L2714,3917L2707,3917L2707,3920L2703,3920L2701,3923L2698,3923L2698,3938L2696,3940L2696,3948L2692,3948L2692,3945L2690,3945L2690,3953L2692,3956L2692,3961L2690,3963L2688,3963L2688,3968L2692,3968L2692,3971L2690,3974L2688,3974L2685,3976L2685,3981L2683,3981L2683,3986L2685,3989L2685,4012L2683,4012L2683,4014L2688,4019L2688,4025L2690,4025L2690,4027L2688,4030L2681,4030L2679,4035L2681,4037L2679,4042L2679,4060L2685,4060L2685,4063L2690,4063L2690,4068L2685,4068L2683,4070L2683,4073L2685,4073L2690,4076L2690,4081L2688,4081L2688,4083L2692,4088L2688,4093L2688,4101L2685,4101L2685,4104L2705,4104L2705,4106L2707,4106L2707,4109L2705,4109L2703,4111L2703,4116L2698,4116L2696,4114L2694,4114L2692,4116L2690,4116L2690,4114L2688,4114L2688,4116L2681,4116L2681,4114L2679,4114L2679,4119L2683,4119L2688,4121L2694,4121L2694,4124L2696,4124L2701,4129L2701,4132L2696,4139L2690,4139L2690,4142L2688,4142L2688,4149L2690,4149L2690,4152L2692,4152L2692,4155L2690,4157L2690,4160L2685,4160L2685,4162L2690,4162L2690,4172L2692,4172L2692,4178L2690,4178L2685,4183L2683,4183L2683,4190L2685,4193L2685,4195L2681,4198L2679,4200L2675,4200L2675,4203L2672,4203L2672,4211L2670,4211L2668,4213L2666,4218L2668,4218L2668,4221L2670,4221L2672,4223L2672,4226L2675,4231L2670,4234L2668,4234L2666,4236L2666,4249L2662,4251L2655,4251L2655,4254L2653,4254L2653,4257L2651,4257L2649,4262L2651,4262L2651,4264L2642,4264L2640,4267L2640,4269L2638,4272L2640,4272L2640,4274L2642,4280L2640,4280L2640,4282L2638,4285L2640,4285L2640,4292L2642,4292L2646,4297L2646,4302L2649,4305L2649,4310L2655,4310L2655,4308L2666,4308L2666,4305L2672,4305L2672,4313L2675,4313L2675,4320L2672,4320L2670,4323L2672,4325L2675,4325L2675,4328L2672,4328L2672,4336L2670,4336L2675,4341L2675,4343L2679,4343L2683,4346L2683,4351L2739,4351L2739,4354L2744,4354L2752,4356L2759,4356L2762,4358L2761,4359L2757,4359L2752,4361L2752,4363L2749,4365L2748,4366L2747,4367L2746,4369L2739,4369L2724,4374L2718,4374L2716,4376L2714,4382L2716,4382L2716,4384L2714,4389L2711,4389L2711,4392L2709,4397L2709,4399L2711,4402L2711,4405L2709,4410L2709,4412L2706,4409L2702,4415L2705,4418L2708,4417L2710,4420L2710,4425L2705,4430L2710,4429L2713,4425L2713,4421L2715,4419L2712,4416L2714,4412L2719,4406L2721,4402L2723,4404L2724,4412L2729,4424L2733,4427L2737,4426L2742,4428L2742,4426L2748,4426L2750,4429L2755,4430L2759,4432L2761,4429L2757,4427L2752,4427L2750,4425L2746,4425L2746,4422L2739,4422L2735,4420L2733,4415L2733,4410L2739,4405L2744,4405L2755,4402L2755,4394L2748,4394L2742,4397L2737,4397L2735,4399L2729,4399L2724,4397L2724,4384L2726,4382L2729,4382L2729,4384L2726,4384L2729,4387L2731,4384L2733,4384L2733,4382L2731,4379L2729,4379L2729,4376L2733,4374L2733,4376L2735,4376L2735,4379L2739,4379L2744,4376L2745,4376L2748,4373L2748,4371L2749,4369L2750,4369L2752,4366L2755,4369L2757,4369L2759,4371L2759,4374L2765,4374L2770,4371L2776,4371L2776,4417L2774,4427L2776,4427L2774,4435L2774,4445L2771,4445L2770,4446L2775,4448L2783,4448L2783,4450L2783,4450L2783,4452L2785,4460L2792,4467L2792,4470L2790,4471L2785,4468L2781,4467L2777,4468L2775,4470L2770,4469L2766,4469L2764,4471L2756,4469L2751,4465L2747,4465L2743,4461L2733,4461L2732,4455L2736,4455L2737,4459L2741,4458L2736,4453L2733,4449L2733,4446L2730,4445L2728,4447L2730,4449L2728,4454L2724,4456L2718,4455L2709,4450L2708,4444L2711,4444L2713,4446L2720,4447L2721,4444L2718,4444L2714,4443L2713,4440L2709,4438L2704,4439L2702,4438L2701,4436L2699,4436L2699,4437L2694,4442L2685,4442L2680,4441L2679,4439L2678,4436L2680,4433L2679,4432L2670,4432L2667,4430L2666,4421L2665,4420L2661,4421L2656,4421L2653,4422L2648,4421L2644,4421L2641,4418L2642,4416L2645,4415L2645,4410L2643,4408L2638,4409L2637,4406L2633,4406L2632,4403L2630,4403L2629,4394L2631,4394L2633,4395L2634,4395L2635,4394L2633,4391L2632,4391L2628,4392L2625,4391L2622,4389L2617,4389L2605,4378L2604,4375L2607,4375L2610,4375L2614,4379L2618,4381L2626,4382L2642,4389L2644,4388L2636,4382L2632,4381L2631,4379L2636,4378L2633,4376L2631,4375L2628,4376L2625,4374L2623,4373L2622,4375L2619,4373L2619,4370L2621,4369L2624,4370L2624,4366L2619,4363L2619,4361L2617,4359L2615,4361L2614,4358L2614,4356L2612,4353L2610,4356L2609,4360L2611,4362L2612,4366L2609,4369L2608,4365L2605,4363L2603,4362L2601,4360L2601,4358L2598,4355L2595,4354L2596,4347L2594,4346L2596,4342L2599,4342L2601,4342L2601,4340L2603,4340L2608,4343L2613,4350L2616,4353L2620,4354L2622,4354L2622,4351L2618,4349L2613,4346L2612,4342L2613,4342L2616,4343L2617,4344L2618,4344L2626,4348L2628,4348L2625,4345L2621,4342L2620,4339L2621,4337L2624,4337L2626,4339L2626,4336L2625,4332L2623,4332L2619,4332L2618,4329L2621,4327L2621,4325L2618,4326L2616,4323L2615,4322L2615,4324L2613,4325L2611,4328L2611,4331L2609,4331L2607,4333L2604,4333L2602,4336L2600,4337L2597,4336L2598,4335L2597,4333L2596,4334L2592,4339L2589,4340L2588,4337L2591,4334L2591,4331L2591,4327L2595,4327L2597,4326L2597,4324L2600,4321L2597,4321L2595,4319L2597,4316L2600,4314L2599,4312L2598,4312L2594,4309L2596,4307L2601,4307L2603,4305L2606,4307L2607,4306L2604,4302L2604,4300L2607,4295L2607,4289L2600,4285L2600,4283L2590,4282L2587,4281L2584,4281L2583,4280L2583,4273L2582,4271L2582,4268L2584,4266L2583,4262L2580,4260L2579,4256L2577,4254L2579,4252L2581,4247L2581,4243L2578,4239L2578,4236L2582,4235L2582,4222L2584,4220L2588,4221L2588,4225L2591,4229L2592,4228L2591,4225L2590,4220L2591,4217L2590,4214L2587,4212L2592,4209L2598,4209L2598,4211L2597,4214L2599,4216L2602,4214L2605,4218L2604,4223L2605,4226L2609,4233L2609,4237L2611,4240L2612,4243L2611,4246L2611,4248L2614,4246L2615,4240L2612,4236L2605,4211L2605,4208L2608,4205L2612,4201L2617,4192L2621,4188L2622,4186L2617,4182L2615,4180L2611,4180L2607,4182L2597,4179L2594,4177L2586,4175L2585,4178L2588,4181L2587,4185L2584,4186L2578,4179L2577,4174L2592,4166L2597,4163L2603,4161L2603,4158L2605,4156L2601,4156L2601,4157L2599,4158L2597,4158L2595,4151L2606,4148L2609,4150L2611,4149L2609,4145L2602,4145L2602,4142L2608,4142L2612,4134L2611,4133L2614,4128L2613,4125L2616,4123L2621,4117L2625,4115L2630,4115L2633,4114L2631,4108L2636,4102L2637,4104L2636,4116L2633,4118L2633,4131L2630,4136L2630,4141L2628,4144L2626,4157L2627,4159L2631,4150L2634,4150L2634,4157L2631,4169L2625,4172L2626,4174L2629,4174L2637,4164L2637,4153L2639,4149L2638,4146L2640,4137L2644,4133L2648,4133L2652,4136L2652,4134L2649,4130L2645,4130L2640,4132L2639,4131L2640,4126L2643,4122L2648,4122L2661,4115L2662,4109L2662,4104L2653,4098L2648,4097L2646,4094L2647,4089L2655,4083L2653,4080L2655,4075L2652,4074L2651,4070L2652,4066L2656,4066L2656,4063L2656,4059L2661,4058L2660,4054L2658,4051L2658,4041L2664,4042L2663,4039L2660,4036L2659,4032L2666,4029L2666,4025L2663,4025L2658,4023L2660,4018L2662,4015L2662,4012L2657,4008L2654,4008L2652,4011L2651,4016L2649,4017L2640,4017L2639,4017L2638,4017L2633,4017L2633,4014L2636,4012L2633,4012L2629,4007L2631,4004L2629,4004L2629,3999L2627,3999L2627,3986L2631,3979L2633,3976L2633,3974L2631,3974L2633,3966L2636,3963L2636,3961L2633,3958L2636,3958L2640,3956L2644,3956L2644,3945L2646,3945L2646,3943L2649,3940L2646,3940L2649,3938L2649,3935L2640,3912L2640,3900L2642,3897L2642,3894L2640,3894L2640,3889L2636,3884L2636,3879L2638,3879L2638,3874L2636,3874L2636,3866L2640,3866L2640,3869L2646,3869L2646,3866L2649,3866L2649,3864L2651,3856L2651,3851L2655,3851L2655,3846L2657,3841L2659,3838L2659,3828L2662,3826L2666,3823L2666,3821L2664,3818L2664,3813L2668,3813L2668,3810L2670,3808L2670,3803L2672,3803L2677,3798L2677,3792L2679,3790L2679,3785L2681,3785L2681,3775L2683,3775L2681,3772L2681,3767L2685,3762L2685,3757L2688,3757L2688,3754L2690,3754L2692,3752L2692,3747L2690,3741L2690,3739L2688,3734L2690,3734L2694,3731L2694,3726L2696,3724L2696,3713L2698,3711L2696,3708L2696,3706L2694,3703L2694,3698L2696,3698L2696,3690L2694,3690L2694,3683L2692,3675L2692,3662L2690,3662L2690,3645L2692,3642L2696,3642L2698,3639L2698,3637L2701,3629L2701,3609L2698,3609L2696,3606L2696,3599L2694,3599L2696,3596L2696,3594L2701,3588L2701,3586L2703,3583L2705,3578L2705,3565L2707,3563L2707,3560L2709,3558L2709,3555L2711,3555L2714,3550L2711,3550L2711,3537L2714,3537L2716,3535L2716,3532L2714,3530L2716,3525L2718,3522L2718,3514L2720,3512L2718,3507L2720,3504L2720,3499L2718,3499L2718,3492L2720,3486L2724,3481L2724,3466L2722,3466L2722,3463L2720,3458L2722,3453L2722,3441L2724,3441L2722,3438L2722,3430L2724,3428L2724,3425L2726,3425L2726,3420L2724,3420L2724,3418L2722,3418L2722,3420L2720,3420L2720,3410L2722,3405L2726,3405L2729,3402L2729,3392L2731,3384L2731,3374L2733,3372L2733,3359L2735,3356L2735,3346L2733,3341L2733,3333L2731,3331L2733,3318L2733,3293L2731,3288L2731,3282L2729,3282L2729,3280L2731,3277L2729,3277L2729,3267L2726,3259L2729,3259L2729,3252L2726,3252L2726,3249L2729,3249L2731,3252L2733,3252L2733,3249L2737,3249L2744,3242L2744,3239L2742,3234L2742,3229L2746,3229L2750,3224L2750,3229L2752,3229L2757,3234L2757,3239L2761,3242L2763,3242L2761,3244L2761,3247L2763,3247L2763,3262L2765,3265L2765,3267L2768,3270L2765,3272L2768,3275L2772,3277L2774,3280L2774,3282L2778,3282L2778,3285L2781,3285L2781,3288L2778,3290L2776,3290L2776,3293L2774,3295L2774,3298L2776,3298L2776,3300L2778,3303L2776,3305L2776,3308L2772,3308L2772,3308L2772,3308zM2607,4080L2610,4078L2610,4076L2607,4074L2604,4074L2603,4076L2603,4078L2604,4080L2607,4080L2607,4080L2607,4080zM2785,4450L2787,4450L2787,4453L2789,4455L2789,4458L2791,4458L2796,4455L2796,4458L2802,4458L2802,4455L2809,4455L2809,4458L2813,4461L2817,4455L2820,4455L2820,4453L2815,4448L2783,4448L2783,4450L2785,4450L2785,4450L2785,4450zM2618,4068L2629,4068L2629,4070L2633,4070L2636,4068L2636,4065L2633,4065L2633,4063L2631,4063L2631,4060L2633,4060L2640,4063L2640,4060L2638,4058L2638,4055L2636,4055L2636,4053L2640,4053L2640,4050L2636,4050L2631,4045L2631,4040L2633,4040L2631,4040L2631,4042L2638,4042L2638,4040L2636,4040L2636,4035L2644,4035L2644,4032L2642,4030L2640,4030L2640,4027L2642,4027L2640,4025L2640,4019L2631,4019L2631,4022L2629,4022L2627,4019L2629,4019L2629,4017L2625,4017L2625,4030L2623,4030L2623,4032L2620,4032L2620,4042L2623,4042L2623,4045L2620,4053L2620,4055L2618,4058L2620,4058L2616,4060L2614,4065L2616,4065L2618,4068L2618,4068L2618,4068zM2629,4088L2625,4088L2623,4086L2620,4086L2623,4083L2631,4083L2633,4086L2629,4086L2629,4088L2629,4088L2629,4088z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2406,2407L2409,2410L2413,2411L2414,2409L2412,2408L2411,2403L2409,2402L2407,2403L2406,2407L2406,2407L2406,2407zM2483,2357L2479,2355L2472,2356L2469,2351L2466,2347L2463,2343L2467,2339L2470,2336L2474,2337L2481,2338L2484,2340L2490,2343L2503,2344L2503,2347L2508,2347L2510,2349L2514,2349L2519,2354L2521,2354L2521,2357L2523,2357L2523,2362L2525,2362L2527,2364L2527,2367L2532,2367L2532,2372L2529,2372L2529,2375L2532,2375L2532,2380L2534,2380L2534,2382L2536,2382L2536,2387L2538,2390L2536,2392L2534,2392L2532,2398L2534,2398L2534,2400L2527,2405L2525,2405L2525,2400L2523,2398L2523,2400L2521,2400L2521,2403L2523,2403L2523,2408L2521,2408L2519,2415L2516,2415L2514,2410L2510,2405L2510,2403L2508,2400L2508,2398L2506,2395L2506,2392L2503,2392L2503,2387L2508,2387L2506,2384L2507,2381L2509,2378L2505,2376L2501,2376L2501,2369L2499,2369L2499,2367L2497,2367L2490,2359L2483,2357L2483,2357zM2438,2357L2441,2355L2443,2354L2445,2354L2447,2352L2456,2352L2456,2349L2458,2349L2460,2347L2463,2349L2467,2355L2470,2361L2466,2362L2466,2365L2467,2369L2460,2375L2460,2377L2456,2377L2456,2380L2449,2380L2447,2382L2447,2390L2449,2390L2458,2400L2460,2405L2460,2408L2451,2408L2449,2410L2449,2413L2447,2415L2434,2415L2433,2413L2434,2408L2433,2406L2432,2403L2430,2400L2430,2395L2428,2395L2425,2400L2425,2403L2423,2403L2423,2400L2419,2400L2417,2398L2415,2398L2415,2390L2412,2390L2412,2385L2406,2385L2402,2382L2399,2385L2399,2382L2397,2382L2397,2380L2378,2380L2378,2380L2380,2377L2380,2367L2378,2367L2378,2364L2380,2362L2382,2362L2384,2359L2384,2357L2380,2354L2378,2354L2378,2341L2380,2339L2380,2336L2382,2336L2382,2339L2384,2339L2384,2341L2386,2341L2389,2339L2396,2342L2392,2346L2395,2352L2397,2354L2398,2356L2402,2358L2406,2358L2410,2357L2408,2354L2406,2354L2406,2352L2408,2352L2412,2357L2412,2359L2415,2359L2415,2362L2417,2362L2419,2363L2427,2362L2432,2362L2436,2359L2438,2357L2438,2357z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6725,4384L6716,4384L6723,4392L6725,4392L6725,4389L6729,4389L6729,4387L6727,4387L6725,4384L6725,4384zM6638,4255L6633,4256L6631,4257L6626,4257L6619,4262L6617,4261L6616,4259L6616,4256L6614,4252L6611,4252L6609,4255L6607,4254L6607,4249L6604,4250L6603,4248L6601,4249L6600,4246L6598,4242L6594,4243L6594,4245L6592,4246L6593,4250L6589,4256L6589,4259L6589,4262L6591,4265L6591,4268L6589,4273L6590,4277L6599,4276L6601,4273L6603,4271L6607,4272L6609,4273L6614,4275L6616,4274L6617,4272L6619,4271L6620,4275L6624,4276L6630,4277L6634,4274L6632,4270L6623,4271L6623,4268L6626,4266L6636,4267L6641,4264L6641,4260L6638,4255L6638,4255zM8937,3018L8934,3021L8940,3028L8945,3032L8951,3032L8952,3028L8944,3024L8937,3018L8937,3018zM4481,614L4480,617L4474,622L4480,624L4486,623L4488,625L4490,629L4496,633L4498,628L4495,625L4497,620L4508,615L4509,612L4492,611L4481,614L4481,614zM4864,2637L4862,2640L4862,2642L4860,2642L4860,2645L4862,2650L4864,2650L4869,2645L4869,2640L4866,2637L4864,2637L4864,2637zM6229,3336L6227,3336L6227,3333L6220,3333L6216,3336L6216,3344L6220,3349L6224,3349L6227,3351L6229,3349L6231,3349L6233,3344L6233,3341L6229,3341L6229,3336L6229,3336zM4489,634L4486,636L4490,642L4495,644L4497,642L4494,636L4489,634L4489,634zM2965,2260L2967,2260L2970,2256L2971,2255L2971,2252L2967,2252L2965,2260L2965,2260zM2982,2132L2982,2130L2980,2127L2978,2130L2978,2132L2980,2132L2982,2132L2982,2132zM2980,2153L2980,2145L2976,2140L2973,2140L2973,2145L2976,2145L2976,2150L2978,2153L2978,2155L2980,2153L2980,2153zM2984,2219L2984,2214L2982,2214L2980,2216L2980,2222L2982,2222L2984,2219L2984,2219zM2965,2117L2965,2120L2967,2127L2967,2130L2969,2130L2971,2127L2971,2120L2969,2117L2965,2117L2965,2117zM2973,2122L2976,2122L2980,2120L2982,2120L2980,2117L2978,2117L2976,2114L2976,2112L2973,2112L2973,2117L2971,2120L2973,2120L2973,2122L2973,2122zM2980,2168L2982,2171L2986,2178L2991,2178L2991,2181L2993,2178L2993,2176L2989,2171L2989,2168L2986,2165L2980,2165L2980,2168L2980,2168zM2991,2201L2991,2193L2989,2191L2984,2196L2984,2201L2989,2201L2989,2204L2991,2201L2991,2201zM9287,3007L9289,3007L9289,3004L9293,3004L9296,3002L9296,2999L9289,2999L9287,3002L9285,3002L9283,3004L9284,3006L9287,3007L9287,3007zM3032,2226L3032,2221L3028,2215L3023,2218L3023,2222L3025,2228L3032,2226L3032,2226zM3684,4438L3682,4435L3679,4435L3675,4430L3675,4427L3673,4425L3671,4425L3669,4427L3669,4425L3666,4425L3664,4420L3653,4420L3649,4417L3647,4420L3643,4420L3641,4417L3625,4417L3625,4420L3630,4420L3634,4418L3636,4418L3636,4420L3634,4420L3634,4422L3641,4422L3643,4422L3643,4425L3649,4425L3651,4427L3658,4427L3660,4430L3660,4433L3666,4433L3677,4445L3682,4445L3682,4443L3686,4443L3686,4440L3684,4440L3684,4438L3684,4438zM3077,4336L3073,4333L3073,4331L3061,4332L3056,4328L3054,4328L3054,4331L3049,4331L3047,4328L3045,4331L3045,4331L3043,4333L3041,4333L3041,4336L3038,4338L3043,4338L3041,4341L3038,4341L3036,4343L3034,4343L3028,4348L3023,4356L3032,4361L3033,4361L3033,4359L3034,4359L3034,4356L3036,4359L3041,4359L3043,4356L3041,4354L3038,4354L3038,4351L3043,4354L3045,4356L3047,4354L3054,4354L3054,4351L3049,4351L3049,4348L3060,4348L3064,4346L3066,4346L3066,4343L3075,4343L3077,4341L3077,4338L3071,4338L3071,4336L3077,4336L3077,4336zM2967,2097L2969,2094L2969,2091L2967,2091L2965,2089L2963,2091L2963,2094L2965,2097L2967,2097L2967,2097zM2651,1959L2646,1959L2640,1959L2636,1961L2633,1964L2636,1967L2651,1967L2651,1964L2653,1959L2653,1954L2651,1956L2651,1959L2651,1959zM3028,4341L3030,4338L3032,4338L3036,4333L3032,4331L3030,4331L3030,4333L3019,4333L3019,4331L3015,4331L3012,4333L3015,4333L3012,4336L3008,4336L3006,4333L3004,4334L3002,4331L2997,4331L2997,4333L3002,4333L3006,4338L3008,4340L3010,4342L3008,4342L2999,4341L3002,4343L3002,4348L3004,4348L3004,4351L2993,4350L2991,4344L2982,4346L2991,4356L2995,4359L2999,4359L3004,4356L3006,4356L3012,4348L3017,4351L3023,4343L3028,4341L3028,4341zM4448,324L4461,324L4459,329L4451,329L4448,332L4442,332L4433,334L4431,337L4429,337L4429,334L4433,332L4438,332L4442,329L4446,329L4446,327L4448,327L4448,324L4448,324z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7564,2618L7565,2619L7567,2621L7568,2618L7569,2618L7570,2621L7573,2623L7574,2626L7575,2628L7576,2631L7577,2630L7578,2628L7577,2626L7576,2623L7575,2621L7572,2618L7573,2614L7572,2612L7568,2612L7568,2615L7566,2615L7564,2618L7564,2618zM8029,2857L8030,2854L8030,2841L8027,2839L8025,2845L8026,2861L8027,2862L8029,2857L8029,2857L8029,2857zM8164,2531L8167,2535L8167,2540L8170,2540L8173,2540L8166,2527L8164,2531L8164,2531L8164,2531zM8227,2920L8231,2919L8241,2922L8243,2919L8235,2915L8230,2915L8226,2916L8227,2920L8227,2920L8227,2920zM8369,2844L8369,2837L8371,2833L8369,2829L8364,2834L8366,2838L8365,2844L8369,2844L8369,2844L8369,2844zM8372,2844L8374,2844L8374,2840L8376,2835L8378,2834L8379,2828L8379,2826L8381,2824L8378,2821L8377,2823L8376,2829L8372,2837L8372,2844L8372,2844L8372,2844zM7514,2827L7519,2829L7520,2833L7525,2832L7526,2825L7521,2825L7519,2822L7515,2823L7514,2827L7514,2827L7514,2827zM7552,2622L7553,2628L7556,2629L7557,2627L7556,2621L7554,2618L7552,2622L7552,2622L7552,2622zM7408,2655L7414,2656L7411,2659L7412,2664L7411,2668L7413,2670L7416,2670L7416,2663L7418,2662L7420,2658L7417,2658L7417,2655L7420,2655L7421,2652L7418,2652L7415,2648L7411,2646L7409,2648L7408,2655L7408,2655L7408,2655zM8121,2924L8120,2927L8126,2928L8130,2928L8134,2921L8132,2919L8130,2919L8121,2924L8121,2924L8121,2924zM8104,2927L8104,2931L8108,2932L8112,2929L8112,2927L8119,2923L8120,2920L8120,2918L8116,2918L8109,2922L8104,2927L8104,2927L8104,2927zM8233,2776L8237,2777L8239,2772L8242,2774L8245,2773L8245,2770L8256,2768L8255,2766L8248,2767L8247,2768L8245,2767L8244,2764L8235,2769L8232,2772L8233,2776L8233,2776L8233,2776zM8305,2668L8310,2668L8311,2665L8313,2664L8316,2665L8317,2664L8321,2663L8323,2661L8326,2663L8327,2663L8328,2656L8322,2652L8316,2651L8313,2650L8311,2652L8308,2653L8299,2653L8297,2656L8296,2659L8303,2660L8309,2662L8309,2664L8306,2664L8303,2665L8305,2668L8305,2668L8305,2668zM8442,2704L8453,2704L8455,2706L8466,2706L8470,2709L8483,2709L8483,2711L8477,2711L8473,2714L8464,2714L8460,2711L8457,2711L8455,2709L8451,2706L8444,2706L8442,2704L8442,2704L8442,2704zM8444,2678L8442,2678L8442,2675L8440,2673L8449,2673L8451,2675L8455,2675L8464,2686L8466,2686L8468,2688L8466,2691L8455,2691L8453,2688L8453,2681L8451,2678L8447,2681L8447,2678L8444,2678L8444,2678L8444,2678zM8412,2844L8414,2841L8412,2841L8410,2839L8408,2839L8410,2836L8412,2839L8414,2836L8416,2831L8416,2828L8421,2828L8423,2831L8421,2834L8423,2839L8423,2849L8425,2851L8423,2854L8423,2859L8418,2859L8418,2863L8417,2864L8416,2869L8414,2869L8414,2872L8412,2874L8408,2877L8403,2872L8405,2864L8405,2848L8408,2847L8409,2844L8412,2844L8412,2844L8412,2844zM8321,2908L8325,2902L8323,2902L8325,2900L8325,2895L8330,2895L8330,2892L8332,2890L8334,2885L8338,2885L8340,2887L8336,2887L8336,2890L8338,2892L8338,2895L8336,2900L8336,2902L8332,2905L8330,2908L8330,2913L8323,2913L8321,2908L8321,2908L8321,2908zM8395,2734L8397,2734L8397,2732L8399,2732L8399,2729L8401,2729L8401,2726L8400,2724L8402,2721L8402,2719L8400,2720L8392,2724L8377,2724L8375,2726L8371,2726L8371,2724L8369,2724L8369,2726L8364,2726L8364,2724L8358,2724L8358,2726L8356,2726L8356,2724L8353,2724L8351,2721L8349,2721L8349,2719L8345,2714L8345,2711L8347,2709L8343,2704L8338,2704L8338,2701L8336,2701L8327,2696L8327,2701L8325,2701L8325,2698L8321,2698L8318,2697L8321,2693L8321,2691L8325,2691L8325,2686L8327,2681L8325,2678L8332,2675L8343,2675L8343,2673L8345,2673L8345,2670L8349,2668L8349,2665L8351,2665L8353,2663L8369,2663L8371,2665L8377,2668L8379,2668L8384,2673L8384,2675L8397,2675L8395,2675L8403,2675L8405,2678L8405,2681L8403,2683L8405,2688L8408,2691L8410,2696L8410,2701L8405,2706L8408,2711L8408,2714L8405,2719L8408,2726L8408,2732L8410,2732L8412,2734L8412,2739L8416,2744L8416,2734L8418,2732L8421,2734L8421,2744L8423,2749L8425,2747L8427,2747L8427,2749L8425,2749L8425,2755L8429,2760L8431,2760L8434,2762L8444,2762L8444,2760L8447,2760L8447,2757L8449,2755L8451,2755L8451,2752L8453,2749L8455,2749L8455,2747L8457,2747L8457,2742L8460,2739L8462,2739L8462,2737L8466,2737L8466,2734L8468,2729L8468,2724L8481,2724L8486,2721L8490,2721L8492,2719L8492,2716L8490,2714L8490,2709L8494,2709L8496,2706L8499,2706L8499,2704L8503,2704L8505,2701L8507,2701L8509,2698L8512,2701L8514,2701L8516,2704L8525,2709L8531,2709L8533,2711L8535,2711L8535,2714L8538,2716L8542,2716L8551,2721L8553,2721L8557,2726L8561,2729L8570,2729L8572,2726L8574,2726L8574,2729L8579,2732L8590,2732L8590,2737L8598,2737L8598,2859L8596,2859L8596,2864L8594,2867L8594,2874L8596,2877L8598,2877L8598,2951L8596,2948L8594,2948L8585,2938L8585,2936L8577,2925L8574,2925L8572,2923L8570,2923L8570,2920L8568,2920L8568,2918L8555,2918L8553,2920L8551,2920L8548,2918L8548,2915L8540,2920L8540,2923L8537,2926L8534,2926L8528,2922L8527,2925L8525,2925L8522,2928L8520,2925L8505,2925L8505,2928L8503,2928L8503,2925L8509,2908L8512,2905L8514,2900L8516,2900L8516,2897L8518,2897L8520,2895L8525,2895L8525,2892L8538,2892L8536,2889L8536,2887L8535,2884L8533,2882L8528,2882L8528,2873L8530,2871L8530,2867L8529,2864L8527,2862L8527,2859L8525,2857L8525,2851L8522,2849L8522,2844L8520,2841L8518,2841L8518,2839L8516,2839L8516,2828L8514,2831L8512,2828L8507,2826L8507,2823L8505,2821L8501,2821L8503,2821L8501,2821L8496,2818L8494,2816L8494,2813L8492,2816L8486,2813L8481,2813L8481,2811L8475,2808L8473,2808L8473,2806L8466,2806L8462,2803L8460,2800L8457,2800L8457,2798L8444,2798L8442,2795L8440,2795L8438,2798L8436,2798L8434,2795L8431,2795L8429,2793L8425,2790L8421,2785L8421,2780L8418,2783L8416,2783L8416,2780L8414,2780L8412,2777L8412,2783L8408,2780L8408,2775L8401,2775L8399,2770L8399,2767L8397,2770L8397,2772L8395,2770L8392,2765L8395,2765L8395,2755L8397,2755L8399,2752L8399,2749L8397,2747L8395,2752L8392,2755L8392,2762L8390,2765L8390,2770L8388,2770L8386,2772L8386,2777L8388,2777L8382,2785L8373,2785L8369,2780L8371,2780L8371,2777L8369,2777L8369,2770L8371,2770L8373,2767L8369,2762L8369,2757L8366,2760L8364,2760L8364,2755L8362,2752L8360,2752L8360,2749L8356,2747L8351,2747L8349,2749L8347,2742L8351,2739L8364,2739L8364,2742L8366,2742L8366,2744L8369,2742L8371,2742L8371,2739L8373,2737L8373,2734L8375,2734L8375,2732L8379,2732L8382,2729L8382,2732L8384,2732L8386,2734L8388,2734L8390,2733L8392,2734L8395,2734L8395,2734L8395,2734zM8310,2683L8315,2681L8317,2681L8317,2683L8319,2681L8321,2681L8321,2688L8320,2690L8320,2692L8319,2693L8318,2695L8317,2695L8315,2693L8312,2693L8312,2691L8310,2688L8312,2688L8312,2686L8310,2686L8310,2683L8310,2683L8310,2683zM8284,2714L8284,2711L8286,2711L8291,2709L8293,2709L8302,2706L8302,2709L8304,2709L8304,2716L8302,2716L8297,2719L8295,2719L8284,2714L8284,2714L8284,2714zM8280,2910L8280,2908L8282,2905L8284,2905L8289,2910L8286,2910L8286,2915L8282,2915L8282,2913L8280,2910L8280,2910L8280,2910zM8243,2579L8243,2571L8245,2571L8250,2566L8252,2566L8256,2571L8256,2573L8254,2576L8254,2579L8250,2584L8245,2584L8243,2586L8243,2579L8243,2579L8243,2579zM8267,2747L8269,2747L8273,2744L8273,2742L8278,2742L8282,2744L8286,2744L8286,2747L8291,2749L8302,2749L8308,2755L8308,2757L8310,2757L8308,2760L8310,2760L8310,2762L8315,2762L8315,2765L8317,2767L8317,2770L8315,2770L8315,2777L8308,2775L8308,2772L8306,2772L8304,2770L8299,2770L8297,2767L8295,2767L8293,2765L8291,2765L8291,2762L8289,2760L8278,2760L8278,2762L8280,2762L8280,2765L8276,2765L8271,2762L8267,2762L8267,2760L8265,2760L8263,2762L8263,2757L8260,2757L8258,2760L8256,2760L8254,2762L8254,2765L8247,2765L8247,2762L8245,2762L8245,2757L8243,2757L8241,2755L8241,2752L8239,2752L8239,2757L8237,2757L8237,2762L8234,2762L8234,2760L8232,2760L8232,2755L8237,2752L8239,2749L8241,2744L8260,2744L8265,2747L8267,2747L8267,2747L8267,2747zM8258,2642L8252,2642L8252,2640L8250,2640L8250,2637L8245,2637L8245,2640L8243,2640L8241,2637L8239,2637L8237,2635L8234,2635L8234,2637L8232,2637L8232,2642L8234,2642L8234,2647L8232,2647L8232,2653L8237,2660L8237,2665L8239,2665L8239,2668L8241,2670L8241,2673L8247,2681L8243,2681L8243,2678L8241,2675L8237,2675L8237,2670L8232,2665L8232,2663L8230,2663L8226,2658L8228,2658L8228,2645L8226,2640L8224,2637L8224,2627L8226,2627L8226,2624L8224,2622L8221,2622L8221,2617L8219,2617L8219,2609L8221,2609L8221,2607L8224,2604L8224,2594L8226,2591L8226,2589L8228,2589L8234,2581L8234,2579L8239,2579L8239,2581L8237,2581L8234,2586L8232,2586L8232,2591L8234,2591L8234,2594L8237,2594L8237,2607L8234,2612L8232,2614L8226,2617L8226,2622L8230,2624L8234,2624L8234,2617L8237,2614L8241,2614L8241,2612L8239,2609L8241,2607L8247,2602L8250,2602L8252,2599L8256,2599L8256,2614L8254,2617L8250,2619L8247,2622L8243,2622L8241,2624L8241,2627L8243,2627L8243,2630L8245,2630L8250,2632L8254,2632L8256,2635L8256,2640L8258,2640L8258,2642L8258,2642L8258,2642zM8219,2704L8219,2698L8221,2698L8224,2696L8228,2696L8239,2704L8241,2704L8241,2706L8239,2706L8239,2709L8237,2709L8237,2706L8228,2706L8226,2709L8221,2709L8221,2706L8219,2706L8219,2704L8219,2704L8219,2704zM8217,2665L8217,2663L8221,2663L8224,2660L8224,2663L8226,2665L8228,2665L8228,2668L8226,2668L8226,2673L8227,2675L8228,2675L8228,2673L8230,2673L8232,2675L8232,2681L8228,2681L8228,2678L8226,2678L8225,2677L8224,2678L8221,2678L8221,2675L8219,2675L8219,2670L8217,2668L8217,2665L8217,2665L8217,2665zM8213,2675L8213,2670L8215,2670L8217,2673L8217,2678L8213,2678L8213,2675L8213,2675L8213,2675zM8211,2660L8215,2660L8216,2663L8215,2665L8215,2668L8211,2668L8211,2660L8211,2660L8211,2660zM8200,2510L8200,2505L8202,2502L8204,2502L8204,2505L8206,2512L8204,2515L8202,2520L8200,2520L8200,2517L8202,2515L8202,2512L8200,2512L8200,2510L8200,2510L8200,2510zM8211,2760L8211,2762L8213,2762L8213,2760L8215,2762L8215,2770L8211,2770L8208,2772L8200,2777L8187,2770L8182,2765L8182,2762L8180,2762L8180,2755L8182,2755L8182,2752L8185,2752L8185,2755L8187,2755L8189,2752L8204,2752L8208,2755L8211,2757L8211,2760L8211,2757L8211,2760L8211,2760L8211,2760zM8176,2719L8178,2716L8180,2716L8180,2724L8182,2732L8180,2732L8180,2729L8178,2726L8178,2724L8176,2719L8176,2719L8176,2719zM8174,2913L8176,2908L8180,2902L8182,2902L8185,2905L8187,2905L8189,2902L8191,2902L8191,2900L8195,2900L8198,2897L8198,2900L8200,2902L8202,2902L8202,2905L8198,2905L8195,2908L8195,2910L8178,2910L8176,2913L8174,2913L8174,2913L8174,2913zM8167,2923L8167,2920L8169,2918L8172,2918L8169,2923L8167,2923L8167,2923L8167,2923zM8189,2711L8185,2713L8163,2714L8163,2709L8165,2709L8165,2711L8174,2711L8178,2709L8182,2709L8185,2711L8189,2711L8189,2711L8189,2711zM8135,2925L8137,2920L8137,2918L8156,2918L8156,2925L8148,2925L8141,2928L8135,2928L8135,2925L8135,2925L8135,2925zM8135,2711L8135,2706L8137,2706L8139,2704L8143,2704L8143,2706L8152,2706L8152,2709L8156,2706L8161,2709L8161,2714L8146,2714L8146,2716L8137,2716L8135,2714L8135,2711L8135,2711L8135,2711zM8098,2782L8102,2782L8104,2783L8104,2785L8102,2790L8098,2790L8098,2788L8096,2785L8096,2783L8098,2782L8098,2782L8098,2782zM8091,3004L8094,3004L8094,3002L8100,3002L8100,2999L8107,2992L8109,2992L8109,2999L8107,3002L8104,3002L8104,3004L8100,3004L8098,3007L8096,3007L8094,3010L8091,3010L8091,3004L8091,3004L8091,3004zM8091,2698L8091,2693L8094,2693L8094,2691L8096,2691L8102,2688L8104,2691L8102,2693L8104,2696L8107,2693L8107,2691L8109,2691L8113,2693L8113,2696L8109,2701L8107,2701L8107,2698L8104,2698L8104,2704L8100,2704L8100,2701L8102,2701L8102,2696L8100,2696L8098,2698L8098,2701L8096,2701L8096,2704L8094,2704L8091,2698L8091,2698L8091,2698zM8102,2808L8100,2806L8098,2808L8098,2811L8096,2813L8096,2818L8098,2821L8098,2818L8102,2823L8102,2828L8094,2828L8094,2831L8096,2831L8091,2836L8086,2837L8084,2835L8085,2831L8087,2826L8089,2823L8091,2818L8091,2813L8094,2808L8094,2798L8096,2798L8096,2795L8098,2795L8100,2798L8102,2798L8102,2808L8102,2808L8102,2808zM8086,2820L8087,2823L8085,2827L8085,2828L8077,2828L8076,2826L8078,2821L8078,2818L8080,2818L8080,2815L8081,2813L8078,2811L8081,2808L8081,2806L8085,2806L8085,2803L8089,2803L8089,2806L8091,2810L8090,2812L8089,2815L8087,2816L8086,2818L8086,2820L8086,2820L8086,2820zM8063,2823L8063,2821L8065,2818L8065,2816L8068,2816L8068,2818L8070,2818L8070,2831L8068,2831L8065,2826L8063,2823L8063,2823L8063,2823zM8061,2997L8063,2994L8065,2994L8065,2992L8070,2992L8070,2997L8068,2997L8065,2999L8063,2999L8061,2997L8061,2997L8061,2997zM8063,2941L8057,2941L8052,2938L8052,2943L8039,2943L8037,2941L8031,2941L8031,2938L8024,2938L8022,2941L8020,2941L8020,2938L8016,2938L8011,2941L8009,2938L8009,2931L8013,2925L8016,2925L8020,2923L8022,2923L8029,2920L8033,2923L8037,2923L8039,2925L8044,2925L8044,2928L8050,2928L8050,2931L8052,2931L8052,2933L8057,2933L8057,2931L8059,2931L8059,2928L8070,2928L8072,2931L8076,2933L8081,2933L8083,2931L8083,2928L8087,2925L8091,2925L8096,2920L8094,2918L8091,2920L8089,2920L8091,2915L8094,2915L8096,2918L8098,2923L8101,2921L8104,2921L8106,2922L8100,2926L8100,2929L8096,2929L8096,2925L8094,2925L8091,2928L8091,2931L8094,2931L8094,2933L8089,2933L8085,2936L8083,2936L8081,2938L8074,2938L8068,2941L8063,2941L8063,2941L8063,2941zM7983,2964L7985,2964L7985,2961L7987,2959L7996,2959L8003,2956L8005,2956L8005,2959L8009,2959L8011,2956L8013,2956L8013,2959L8016,2959L8016,2961L8020,2961L8020,2966L8022,2966L8022,2969L8024,2969L8024,2966L8026,2966L8031,2969L8031,2974L8033,2974L8033,2976L8037,2976L8037,2981L8033,2984L8033,2987L8018,2987L8016,2984L8016,2981L8013,2979L8013,2976L8007,2976L8007,2974L8005,2974L8005,2971L7998,2971L7992,2969L7987,2969L7983,2964L7983,2964L7983,2964zM8009,2678L8009,2673L8007,2668L8007,2658L8009,2658L8009,2655L8006,2656L8003,2655L8003,2653L8004,2651L8007,2651L8008,2653L8011,2650L8011,2647L8009,2647L8009,2645L8007,2645L8011,2637L8011,2635L8016,2635L8016,2632L8013,2632L8013,2630L8016,2627L8018,2627L8020,2624L8020,2619L8024,2619L8024,2624L8026,2624L8029,2627L8031,2627L8031,2619L8035,2619L8035,2617L8037,2612L8037,2609L8039,2607L8042,2607L8044,2609L8048,2609L8048,2612L8055,2612L8055,2614L8057,2617L8063,2617L8068,2614L8068,2617L8072,2617L8076,2619L8087,2619L8087,2622L8091,2624L8094,2624L8098,2619L8104,2619L8107,2622L8113,2622L8117,2624L8122,2624L8124,2622L8130,2619L8133,2619L8133,2617L8135,2617L8135,2612L8141,2612L8141,2609L8139,2609L8139,2607L8141,2607L8141,2604L8143,2604L8143,2607L8146,2607L8148,2604L8148,2599L8152,2596L8156,2596L8156,2599L8159,2599L8159,2605L8157,2605L8156,2607L8154,2607L8154,2612L8152,2614L8150,2619L8148,2619L8143,2624L8141,2630L8141,2632L8137,2637L8135,2637L8133,2640L8120,2640L8120,2642L8104,2642L8104,2640L8102,2640L8100,2637L8100,2635L8070,2635L8070,2637L8063,2637L8063,2635L8055,2635L8050,2637L8050,2635L8048,2635L8046,2637L8037,2637L8035,2635L8024,2635L8020,2640L8018,2645L8016,2647L8016,2653L8013,2653L8013,2663L8016,2670L8016,2673L8018,2675L8018,2678L8020,2681L8022,2681L8022,2683L8024,2681L8026,2681L8029,2683L8029,2686L8031,2688L8029,2691L8031,2693L8031,2696L8037,2696L8042,2698L8044,2698L8046,2696L8046,2691L8048,2691L8055,2681L8059,2678L8059,2681L8061,2681L8061,2683L8068,2683L8072,2681L8074,2681L8074,2675L8085,2675L8087,2678L8091,2675L8096,2675L8094,2673L8089,2673L8091,2670L8107,2670L8109,2673L8109,2683L8107,2686L8104,2686L8102,2683L8102,2681L8091,2681L8091,2686L8081,2698L8081,2701L8078,2701L8076,2704L8070,2704L8068,2706L8063,2706L8063,2711L8061,2711L8061,2714L8057,2714L8055,2711L8050,2709L8050,2716L8052,2716L8057,2721L8061,2721L8065,2726L8070,2739L8072,2742L8074,2742L8078,2747L8078,2749L8076,2749L8081,2755L8083,2755L8081,2757L8078,2757L8078,2760L8076,2762L8076,2765L8078,2765L8076,2767L8074,2767L8074,2770L8076,2770L8078,2772L8083,2775L8087,2780L8087,2785L8089,2787L8090,2786L8091,2784L8092,2783L8094,2784L8095,2786L8094,2788L8094,2795L8091,2798L8087,2798L8087,2795L8083,2795L8078,2798L8074,2798L8072,2800L8072,2803L8070,2803L8070,2806L8072,2806L8072,2811L8061,2811L8061,2808L8057,2806L8055,2803L8055,2798L8057,2790L8058,2789L8059,2788L8059,2783L8052,2783L8052,2780L8050,2780L8048,2775L8046,2775L8039,2770L8039,2767L8037,2767L8037,2762L8039,2762L8042,2757L8043,2757L8043,2742L8042,2739L8037,2737L8033,2737L8029,2739L8024,2744L8020,2747L8020,2749L8022,2755L8024,2755L8024,2767L8026,2767L8026,2775L8024,2775L8024,2798L8026,2803L8024,2808L8024,2811L8022,2811L8022,2823L8024,2826L8026,2831L8026,2836L8024,2834L8024,2831L8022,2831L8020,2834L8011,2834L8007,2839L8005,2839L8005,2836L8003,2836L8003,2834L7998,2834L7996,2828L7996,2818L7998,2818L7998,2816L8000,2813L8000,2803L8002,2800L8003,2780L8000,2777L7998,2772L7998,2770L8000,2770L8000,2765L7996,2765L7994,2762L7994,2765L7987,2765L7987,2767L7983,2767L7981,2762L7981,2752L7983,2747L7983,2744L7979,2744L7979,2739L7981,2739L7981,2737L7983,2739L7990,2732L7990,2724L7992,2716L7996,2716L7996,2709L7994,2706L7994,2691L7996,2691L7996,2688L7998,2688L7998,2683L8000,2681L8000,2678L8003,2678L8005,2675L8005,2673L8007,2673L8007,2675L8009,2678L8009,2678L8009,2678zM7953,2528L7953,2530L7953,2528L7953,2528L7953,2528zM7943,2924L7943,2920L7945,2917L7948,2917L7948,2919L7946,2920L7946,2923L7946,2931L7948,2931L7951,2933L7955,2936L7957,2938L7961,2933L7964,2933L7964,2936L7966,2936L7966,2933L7961,2928L7957,2928L7953,2925L7951,2920L7951,2918L7953,2918L7957,2915L7961,2915L7961,2918L7964,2918L7964,2923L7966,2923L7966,2925L7968,2925L7968,2923L7970,2923L7970,2920L7972,2920L7974,2923L7977,2923L7977,2931L7979,2928L7979,2923L7985,2923L7987,2928L7987,2933L7992,2933L7992,2936L7990,2938L7986,2937L7985,2936L7979,2936L7981,2938L7983,2938L7984,2939L7985,2941L7981,2941L7979,2938L7977,2938L7977,2941L7970,2941L7968,2938L7970,2938L7970,2933L7964,2941L7959,2941L7957,2943L7948,2943L7946,2946L7942,2946L7942,2948L7940,2948L7940,2946L7935,2946L7935,2948L7931,2948L7925,2946L7922,2946L7925,2941L7925,2933L7927,2931L7929,2931L7931,2928L7933,2928L7933,2925L7938,2925L7942,2928L7942,2925L7943,2924L7943,2924L7943,2924zM7910,2778L7907,2783L7905,2783L7905,2775L7903,2775L7903,2770L7905,2765L7906,2760L7909,2757L7909,2767L7912,2774L7911,2778L7910,2778L7910,2778L7910,2778zM7899,2938L7903,2938L7905,2936L7905,2925L7909,2920L7916,2920L7920,2923L7922,2923L7922,2931L7918,2936L7918,2941L7920,2941L7918,2943L7916,2943L7916,2941L7914,2941L7914,2943L7907,2943L7907,2941L7903,2941L7903,2943L7899,2941L7899,2938L7899,2938L7899,2938zM7860,2915L7862,2915L7866,2918L7870,2918L7870,2920L7875,2918L7877,2918L7879,2915L7881,2915L7886,2918L7888,2918L7894,2925L7894,2928L7892,2928L7888,2931L7886,2933L7883,2933L7883,2936L7881,2936L7881,2941L7877,2941L7879,2938L7879,2936L7877,2933L7875,2928L7870,2928L7868,2925L7864,2925L7862,2923L7862,2920L7860,2920L7860,2915L7860,2915L7860,2915zM7810,2882L7812,2882L7812,2879L7814,2879L7814,2877L7851,2877L7851,2879L7849,2879L7847,2882L7842,2882L7842,2885L7836,2885L7834,2887L7819,2887L7816,2885L7812,2885L7810,2882L7810,2882L7810,2882zM7712,2650L7712,2645L7710,2642L7706,2642L7706,2627L7704,2624L7706,2622L7708,2622L7708,2609L7710,2609L7710,2599L7715,2599L7715,2596L7717,2596L7717,2589L7722,2586L7723,2585L7725,2584L7723,2589L7723,2591L7725,2591L7725,2594L7728,2596L7728,2602L7730,2602L7732,2604L7734,2604L7736,2609L7738,2612L7741,2612L7745,2619L7749,2622L7751,2622L7751,2624L7754,2624L7756,2622L7758,2622L7758,2619L7760,2619L7762,2617L7773,2617L7775,2619L7780,2619L7782,2617L7784,2617L7784,2619L7788,2619L7788,2617L7790,2614L7795,2614L7797,2607L7797,2604L7797,2607L7797,2604L7806,2599L7819,2599L7823,2604L7829,2607L7832,2609L7836,2609L7836,2612L7838,2612L7840,2609L7842,2609L7842,2607L7845,2607L7845,2604L7855,2604L7858,2602L7860,2602L7860,2604L7864,2604L7866,2596L7866,2594L7870,2589L7870,2584L7868,2584L7868,2579L7870,2579L7870,2576L7873,2576L7877,2571L7881,2571L7881,2566L7877,2566L7879,2558L7879,2556L7881,2553L7888,2553L7888,2551L7890,2548L7890,2540L7892,2540L7892,2535L7890,2535L7890,2530L7892,2530L7892,2525L7894,2517L7894,2515L7899,2510L7899,2507L7903,2510L7903,2512L7905,2512L7907,2510L7938,2510L7942,2512L7942,2517L7944,2517L7948,2522L7944,2522L7948,2525L7951,2525L7953,2528L7953,2530L7951,2533L7947,2532L7947,2534L7945,2537L7944,2537L7945,2539L7946,2538L7949,2538L7949,2540L7950,2542L7949,2544L7946,2544L7945,2542L7940,2543L7940,2545L7938,2545L7940,2548L7944,2548L7948,2551L7951,2553L7951,2556L7948,2558L7948,2561L7953,2561L7953,2566L7961,2576L7955,2584L7955,2591L7957,2591L7966,2602L7970,2604L7970,2607L7974,2607L7979,2609L7979,2612L7981,2612L7981,2614L7983,2617L7985,2617L7985,2622L7983,2622L7981,2624L7968,2624L7964,2622L7961,2622L7960,2621L7959,2619L7959,2617L7957,2617L7957,2619L7959,2624L7953,2624L7951,2627L7951,2630L7948,2637L7946,2637L7946,2640L7944,2642L7944,2658L7942,2658L7942,2660L7944,2663L7944,2665L7946,2665L7948,2666L7946,2673L7948,2675L7948,2678L7944,2677L7938,2681L7933,2686L7933,2688L7929,2693L7925,2693L7925,2696L7922,2696L7920,2698L7918,2698L7918,2704L7914,2706L7912,2709L7916,2709L7916,2719L7914,2719L7912,2721L7914,2724L7916,2724L7916,2721L7918,2721L7920,2724L7920,2726L7918,2729L7918,2734L7914,2734L7914,2732L7912,2734L7912,2737L7914,2739L7914,2744L7912,2747L7912,2749L7909,2749L7909,2747L7907,2744L7905,2747L7905,2749L7907,2752L7909,2752L7909,2755L7907,2755L7905,2757L7903,2765L7903,2767L7901,2770L7896,2770L7896,2772L7894,2772L7886,2777L7883,2777L7875,2783L7873,2783L7873,2785L7868,2785L7868,2788L7864,2788L7864,2770L7860,2765L7855,2765L7855,2762L7849,2762L7845,2765L7836,2765L7836,2762L7838,2762L7838,2757L7836,2757L7836,2755L7832,2755L7832,2757L7827,2757L7827,2755L7825,2755L7821,2749L7819,2752L7819,2757L7814,2757L7814,2760L7812,2760L7808,2765L7806,2765L7806,2762L7803,2762L7801,2760L7797,2760L7797,2762L7795,2762L7790,2767L7786,2767L7786,2765L7788,2762L7788,2760L7786,2760L7786,2747L7784,2747L7780,2749L7777,2749L7777,2747L7773,2747L7771,2749L7769,2749L7767,2752L7762,2752L7758,2749L7756,2749L7756,2752L7754,2752L7754,2744L7749,2744L7747,2747L7745,2747L7745,2749L7743,2749L7743,2739L7741,2734L7741,2726L7738,2724L7738,2721L7741,2719L7738,2716L7738,2714L7734,2714L7734,2709L7736,2709L7736,2706L7738,2698L7738,2693L7736,2693L7734,2691L7732,2686L7730,2687L7729,2689L7724,2692L7722,2693L7721,2692L7720,2693L7720,2687L7720,2684L7722,2684L7725,2684L7725,2683L7725,2681L7723,2681L7721,2678L7719,2678L7719,2681L7717,2681L7717,2678L7715,2675L7715,2673L7717,2673L7721,2675L7723,2675L7719,2670L7712,2670L7712,2668L7710,2665L7710,2658L7712,2650L7712,2650L7712,2650zM7684,2528L7682,2525L7682,2522L7680,2522L7680,2520L7684,2515L7689,2515L7689,2517L7691,2520L7691,2522L7693,2525L7691,2525L7691,2528L7686,2533L7684,2530L7684,2528L7684,2528L7684,2528zM7669,2749L7669,2742L7671,2742L7671,2734L7676,2734L7680,2737L7682,2737L7689,2742L7689,2747L7686,2749L7686,2752L7682,2757L7680,2757L7680,2755L7678,2752L7676,2752L7676,2755L7671,2757L7669,2757L7669,2749L7669,2749L7669,2749zM7610,2875L7608,2874L7604,2874L7604,2872L7608,2872L7611,2873L7615,2869L7615,2862L7617,2864L7619,2864L7619,2854L7621,2854L7621,2849L7626,2844L7628,2844L7628,2849L7630,2849L7630,2846L7634,2846L7639,2849L7645,2849L7645,2851L7652,2851L7652,2849L7654,2849L7654,2844L7656,2846L7663,2846L7663,2849L7665,2849L7671,2857L7673,2857L7678,2854L7682,2859L7686,2859L7686,2857L7691,2857L7691,2859L7693,2859L7693,2862L7695,2862L7695,2867L7697,2869L7697,2872L7699,2874L7708,2874L7717,2877L7721,2877L7721,2874L7725,2874L7730,2877L7743,2877L7745,2879L7749,2879L7749,2877L7754,2872L7754,2867L7756,2864L7756,2862L7767,2862L7767,2869L7769,2869L7773,2872L7775,2872L7775,2869L7782,2869L7782,2872L7784,2872L7784,2874L7793,2874L7793,2877L7808,2877L7808,2882L7810,2885L7810,2890L7812,2887L7814,2887L7814,2895L7812,2895L7812,2897L7814,2897L7814,2900L7819,2902L7823,2902L7825,2905L7832,2905L7834,2902L7836,2902L7838,2905L7840,2905L7845,2902L7847,2902L7847,2900L7849,2900L7849,2902L7851,2902L7855,2905L7860,2905L7860,2910L7858,2920L7858,2931L7860,2933L7862,2933L7864,2936L7864,2938L7860,2938L7858,2936L7858,2933L7847,2933L7845,2931L7840,2931L7838,2928L7836,2928L7827,2923L7819,2923L7819,2925L7816,2925L7810,2928L7801,2923L7788,2923L7786,2920L7784,2923L7784,2925L7782,2925L7767,2920L7756,2920L7749,2915L7747,2915L7738,2910L7736,2910L7734,2908L7728,2905L7719,2905L7719,2902L7695,2902L7695,2905L7693,2908L7691,2908L7686,2905L7682,2905L7678,2902L7676,2902L7671,2900L7669,2900L7669,2897L7663,2897L7658,2895L7641,2895L7637,2892L7637,2887L7639,2885L7639,2882L7641,2882L7641,2879L7632,2879L7630,2877L7628,2877L7628,2874L7610,2875L7610,2875L7610,2875zM7600,2716L7602,2716L7602,2714L7606,2714L7608,2711L7608,2709L7606,2709L7606,2706L7608,2704L7611,2704L7613,2701L7615,2701L7615,2709L7617,2709L7619,2711L7619,2709L7617,2706L7617,2701L7624,2701L7626,2704L7626,2706L7628,2709L7628,2711L7630,2714L7630,2721L7632,2726L7632,2729L7634,2732L7637,2732L7647,2737L7645,2737L7643,2739L7643,2742L7641,2744L7641,2747L7643,2747L7643,2749L7645,2749L7645,2752L7639,2752L7639,2749L7637,2749L7634,2747L7632,2747L7630,2744L7624,2744L7624,2739L7621,2739L7621,2737L7624,2734L7624,2732L7621,2732L7619,2729L7619,2721L7617,2721L7611,2719L7608,2721L7606,2721L7602,2719L7600,2719L7600,2716L7600,2716L7600,2716zM7582,2658L7582,2655L7585,2655L7585,2650L7587,2650L7587,2653L7589,2653L7589,2655L7593,2658L7595,2658L7595,2663L7593,2660L7591,2660L7591,2658L7587,2658L7587,2660L7585,2660L7582,2658L7582,2658L7582,2658zM7576,2668L7578,2665L7578,2663L7585,2663L7587,2665L7587,2668L7582,2673L7578,2670L7576,2668L7576,2668L7576,2668zM7576,2617L7576,2614L7578,2612L7585,2612L7587,2614L7587,2617L7589,2617L7587,2619L7587,2624L7582,2624L7582,2622L7580,2619L7580,2617L7578,2619L7576,2619L7576,2617L7576,2617L7576,2617zM7463,2744L7463,2742L7465,2742L7468,2747L7472,2749L7472,2755L7470,2755L7470,2757L7472,2757L7472,2760L7470,2760L7468,2757L7468,2752L7465,2752L7463,2749L7463,2744L7463,2744L7463,2744zM7457,2734L7457,2732L7459,2732L7459,2734L7463,2737L7463,2744L7459,2744L7459,2742L7457,2734L7457,2734L7457,2734zM7446,2721L7446,2716L7448,2716L7450,2719L7450,2724L7452,2724L7452,2726L7455,2726L7455,2729L7452,2729L7448,2724L7446,2724L7446,2721L7446,2721L7446,2721zM7437,2706L7437,2709L7433,2711L7433,2709L7431,2709L7426,2706L7426,2704L7422,2698L7422,2696L7420,2693L7420,2683L7424,2683L7426,2681L7429,2681L7429,2683L7431,2688L7433,2691L7433,2696L7437,2704L7437,2706L7437,2704L7437,2706L7437,2706L7437,2706zM7418,2647L7418,2645L7424,2645L7426,2647L7424,2647L7420,2650L7418,2647L7418,2647L7418,2647zM7379,2607L7379,2604L7383,2604L7385,2602L7388,2604L7390,2604L7390,2607L7396,2614L7400,2617L7400,2630L7398,2632L7394,2632L7394,2627L7392,2624L7385,2619L7385,2614L7379,2607L7379,2607L7379,2607zM7359,2573L7355,2573L7355,2571L7349,2566L7344,2566L7340,2561L7338,2561L7338,2558L7340,2558L7342,2556L7344,2556L7344,2558L7346,2561L7351,2561L7353,2563L7353,2566L7355,2568L7359,2568L7359,2573L7359,2573L7359,2573zM7552,2635L7554,2635L7563,2642L7563,2650L7565,2650L7565,2653L7559,2653L7559,2655L7556,2658L7556,2660L7554,2663L7556,2663L7559,2665L7559,2668L7556,2668L7554,2670L7552,2675L7554,2675L7554,2678L7556,2681L7561,2683L7563,2683L7565,2686L7565,2683L7569,2683L7572,2686L7580,2686L7580,2693L7582,2693L7582,2706L7585,2706L7585,2714L7585,2711L7585,2714L7587,2714L7591,2716L7593,2716L7593,2726L7598,2726L7598,2729L7615,2729L7615,2739L7619,2739L7619,2747L7626,2747L7626,2749L7628,2757L7626,2757L7626,2760L7624,2760L7624,2762L7621,2762L7621,2765L7619,2770L7619,2772L7621,2775L7624,2775L7624,2780L7621,2780L7621,2788L7619,2788L7619,2793L7621,2795L7619,2834L7621,2834L7621,2836L7619,2836L7619,2841L7617,2844L7606,2831L7606,2828L7604,2828L7602,2834L7602,2836L7604,2839L7604,2841L7602,2841L7600,2839L7598,2839L7593,2836L7591,2834L7589,2834L7589,2831L7585,2831L7585,2836L7587,2836L7587,2839L7589,2841L7589,2846L7585,2846L7585,2841L7582,2839L7578,2836L7578,2834L7576,2834L7576,2831L7574,2831L7569,2826L7569,2823L7567,2818L7561,2813L7559,2813L7556,2811L7554,2811L7546,2800L7541,2800L7539,2795L7537,2795L7535,2793L7535,2790L7533,2790L7530,2788L7528,2788L7528,2785L7526,2785L7524,2783L7522,2783L7522,2775L7520,2772L7520,2770L7517,2767L7513,2765L7511,2762L7504,2757L7502,2757L7500,2752L7500,2749L7498,2749L7498,2747L7496,2742L7496,2739L7491,2739L7491,2737L7489,2737L7489,2734L7487,2734L7487,2732L7481,2724L7481,2721L7483,2721L7483,2714L7478,2709L7478,2706L7476,2706L7476,2704L7474,2701L7474,2693L7470,2691L7470,2686L7468,2681L7468,2678L7465,2678L7463,2675L7463,2673L7461,2673L7461,2670L7459,2668L7459,2665L7457,2665L7452,2663L7452,2658L7450,2655L7452,2655L7452,2653L7450,2653L7448,2650L7448,2647L7446,2647L7439,2645L7437,2645L7435,2642L7435,2637L7433,2635L7433,2632L7431,2627L7431,2624L7426,2612L7426,2609L7424,2604L7422,2602L7422,2599L7426,2599L7426,2596L7424,2594L7422,2594L7416,2586L7409,2584L7407,2581L7405,2581L7405,2579L7400,2576L7400,2579L7398,2579L7394,2573L7394,2566L7392,2563L7392,2558L7390,2558L7383,2551L7383,2545L7379,2545L7377,2540L7377,2538L7375,2535L7372,2530L7370,2530L7368,2528L7364,2528L7364,2530L7362,2530L7362,2528L7359,2528L7359,2525L7357,2525L7357,2522L7355,2522L7355,2520L7351,2515L7349,2515L7349,2512L7346,2512L7333,2497L7327,2484L7327,2474L7325,2471L7327,2469L7329,2469L7331,2466L7336,2466L7340,2469L7342,2471L7344,2471L7344,2474L7346,2474L7346,2477L7349,2477L7349,2479L7351,2479L7357,2482L7366,2482L7366,2479L7379,2479L7379,2482L7385,2482L7388,2479L7390,2479L7390,2482L7392,2482L7392,2484L7394,2484L7394,2487L7396,2489L7400,2492L7400,2494L7403,2494L7403,2502L7407,2502L7407,2505L7409,2505L7411,2507L7411,2510L7409,2510L7409,2515L7411,2515L7416,2520L7418,2520L7422,2525L7422,2528L7424,2530L7429,2530L7433,2533L7435,2535L7437,2535L7446,2545L7448,2545L7452,2548L7455,2553L7457,2556L7459,2556L7459,2561L7463,2563L7465,2563L7465,2566L7468,2568L7468,2573L7470,2573L7470,2576L7474,2581L7478,2581L7481,2584L7481,2576L7487,2576L7487,2579L7491,2581L7494,2584L7496,2584L7496,2594L7498,2594L7499,2588L7501,2584L7505,2584L7507,2586L7507,2595L7511,2602L7515,2605L7517,2606L7517,2610L7518,2614L7520,2612L7520,2604L7518,2601L7515,2601L7515,2599L7522,2600L7527,2602L7528,2606L7526,2612L7528,2615L7540,2615L7546,2619L7546,2622L7545,2626L7542,2628L7540,2625L7535,2624L7531,2625L7530,2626L7532,2627L7535,2627L7538,2628L7541,2631L7544,2632L7544,2636L7541,2638L7543,2640L7546,2637L7546,2634L7546,2628L7548,2628L7550,2630L7552,2635L7552,2635L7552,2635zM7379,2607L7385,2614L7385,2619L7392,2624L7394,2627L7394,2632L7398,2632L7400,2630L7400,2617L7396,2614L7390,2607L7390,2604L7388,2604L7385,2602L7383,2604L7379,2604L7379,2607M8111,2989L8111,2984L8115,2984L8115,2981L8117,2981L8117,2979L8113,2979L8113,2976L8115,2976L8115,2966L8120,2964L8124,2956L8128,2956L8130,2959L8133,2958L8136,2954L8141,2953L8141,2951L8143,2951L8143,2948L8146,2948L8150,2943L8152,2943L8154,2941L8154,2943L8156,2943L8159,2941L8161,2946L8156,2946L8156,2948L8161,2954L8162,2955L8161,2956L8159,2959L8156,2959L8156,2961L8154,2961L8152,2964L8152,2969L8150,2969L8141,2979L8139,2979L8139,2981L8137,2984L8128,2984L8126,2987L8124,2987L8124,2989L8120,2989L8120,2992L8115,2989L8111,2989L8111,2989L8111,2989z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3158,347L3153,346L3154,348L3164,349L3158,347L3158,347L3158,347zM3187,327L3196,329L3197,324L3193,318L3188,318L3183,323L3187,327L3187,327L3187,327zM3208,384L3219,382L3229,379L3237,377L3239,373L3239,368L3229,368L3222,365L3216,363L3207,358L3191,354L3177,352L3164,352L3156,356L3159,360L3160,363L3154,364L3155,367L3153,371L3158,374L3167,377L3178,377L3186,378L3184,379L3173,380L3174,386L3182,385L3195,385L3208,384L3208,384L3208,384zM3410,666L3408,663L3405,660L3402,660L3402,657L3398,658L3396,656L3393,656L3392,659L3389,659L3386,659L3384,660L3380,661L3376,659L3376,659L3367,659L3364,662L3355,662L3348,665L3343,662L3344,656L3337,655L3342,650L3332,648L3327,644L3318,641L3316,636L3308,631L3308,628L3305,622L3305,616L3298,617L3295,612L3290,611L3283,603L3283,599L3281,593L3275,590L3270,590L3264,582L3262,575L3256,574L3250,565L3253,564L3253,560L3249,559L3247,552L3254,543L3258,538L3263,535L3258,533L3253,539L3248,547L3241,552L3237,554L3233,551L3235,535L3232,530L3233,526L3227,518L3224,518L3224,514L3220,510L3215,507L3212,512L3206,508L3203,504L3206,500L3203,497L3195,495L3191,491L3190,485L3194,475L3195,472L3201,470L3197,466L3195,463L3186,463L3182,455L3184,450L3187,443L3191,435L3195,428L3199,425L3195,420L3194,415L3201,415L3205,409L3212,403L3226,403L3233,406L3241,407L3248,407L3257,407L3257,404L3260,398L3260,390L3261,386L3267,380L3270,374L3270,369L3266,371L3262,376L3256,377L3256,371L3255,365L3251,362L3239,361L3232,361L3224,357L3215,354L3209,352L3199,352L3186,349L3172,345L3163,339L3167,336L3174,335L3183,335L3199,337L3215,335L3227,340L3237,341L3245,345L3252,342L3266,342L3260,340L3252,336L3248,333L3240,333L3229,332L3231,329L3239,326L3232,324L3223,322L3210,323L3204,318L3203,314L3196,310L3201,306L3194,305L3188,306L3183,308L3184,312L3175,316L3160,316L3151,315L3148,317L3141,314L3134,311L3129,303L3138,302L3130,301L3134,297L3141,292L3144,290L3136,291L3137,288L3139,285L3144,282L3138,281L3132,278L3132,274L3126,276L3120,270L3124,266L3126,270L3132,269L3137,271L3140,268L3142,266L3133,262L3140,260L3143,256L3135,254L3129,256L3121,254L3126,247L3126,243L3129,240L3128,238L3121,242L3112,248L3105,240L3111,239L3118,236L3108,232L3115,232L3121,232L3121,228L3123,222L3115,225L3103,228L3092,227L3099,224L3112,222L3110,218L3101,217L3095,212L3103,211L3113,213L3110,209L3100,209L3094,205L3100,203L3079,195L3017,196L2974,202L2957,205L2929,210L2899,206L2880,182L2870,195L2840,177L2840,169L2822,170L2787,160L2746,153L2770,146L2752,140L2729,139L2710,130L2736,116L2759,119L2757,112L2736,109L2707,105L2676,103L2660,85L2726,69L2826,12L2885,2L3327,2L3332,2L3342,2L3349,2L3354,2L3360,2L3372,2L3379,2L3390,2L3400,2L3406,2L3419,2L3427,2L3435,2L3440,2L3450,2L3461,2L3467,2L3924,2L3924,2L3953,13L3982,15L4002,19L4042,19L4074,29L4090,47L4122,65L4145,79L4159,101L4166,117L4178,136L4167,145L4156,162L4138,168L4144,178L4147,191L4143,199L4147,210L4151,217L4146,220L4132,223L4118,227L4097,227L4083,226L4078,229L4094,232L4115,235L4119,238L4113,243L4114,246L4111,249L4085,248L4068,252L4059,255L4031,249L4018,246L3991,248L4005,248L4023,252L4043,259L4043,261L4053,264L4072,265L4070,269L4072,273L4066,272L4051,273L4070,278L4070,283L4052,282L4066,287L4066,291L4056,292L4046,288L4033,283L4021,283L4006,277L4003,272L4000,261L3986,261L3987,268L3993,275L4004,286L4022,287L4041,294L4055,298L4052,303L4060,304L4071,307L4057,312L4060,314L4078,310L4079,315L4079,324L4080,340L4082,346L4073,347L4063,347L4051,348L4036,348L4023,344L4010,336L4008,326L4000,323L3996,319L3987,320L3980,317L3973,316L3979,324L3971,328L3974,331L3979,339L3966,343L3950,348L3943,353L3946,356L3963,351L3980,349L3980,353L3985,349L3995,351L4014,355L4041,358L4068,357L4066,361L4049,365L4045,369L4035,369L4035,373L4026,373L4017,377L4012,376L4012,379L3999,382L3996,385L3988,389L3984,393L3973,393L3970,396L3963,400L3950,401L3945,405L3926,407L3906,412L3892,414L3878,414L3869,418L3857,422L3841,425L3822,425L3808,425L3794,422L3792,428L3784,432L3767,437L3757,444L3754,454L3747,459L3740,462L3742,466L3732,472L3724,476L3711,481L3700,484L3692,488L3684,495L3672,500L3667,496L3660,499L3655,504L3650,504L3650,498L3644,505L3630,506L3628,501L3633,492L3637,487L3646,483L3640,481L3630,484L3628,491L3623,498L3620,504L3607,507L3599,505L3591,504L3588,508L3581,505L3574,508L3581,513L3575,515L3571,524L3561,523L3551,523L3543,523L3543,528L3548,527L3554,527L3558,534L3563,540L3562,546L3551,545L3551,549L3555,553L3554,559L3555,569L3542,578L3534,586L3526,591L3515,602L3504,603L3512,605L3510,612L3505,618L3512,624L3512,632L3503,637L3503,640L3500,644L3496,651L3495,659L3493,668L3482,676L3485,682L3481,692L3466,694L3453,693L3441,690L3427,688L3420,679L3419,670L3411,669L3410,666z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2871,625L2879,627L2882,629L2885,631L2883,631L2881,634L2884,635L2889,636L2887,638L2887,640L2886,643L2886,645L2877,645L2874,642L2868,638L2863,637L2863,635L2866,634L2870,634L2868,632L2871,631L2873,630L2870,628L2871,625L2871,625L2871,625L2871,625zM2850,631L2853,629L2857,629L2860,629L2860,632L2854,632L2850,631L2850,631L2850,631L2850,631zM3018,1139L3014,1139L3011,1138L3008,1138L3005,1136L3000,1136L3001,1133L3002,1130L3004,1129L3005,1123L3006,1120L3006,1118L3002,1117L3001,1115L3001,1113L2998,1112L2995,1114L2994,1118L2989,1121L2987,1124L2985,1124L2984,1130L2981,1134L2978,1137L2976,1139L2974,1140L2973,1142L2973,1144L2971,1145L2971,1149L2973,1150L2974,1153L2975,1153L2975,1156L2982,1161L2985,1160L2990,1157L2990,1155L2989,1153L2986,1155L2983,1155L2988,1150L2989,1149L2994,1148L2996,1149L2997,1151L2993,1154L2992,1158L2993,1159L2996,1160L2997,1158L3004,1158L3006,1155L3009,1154L3012,1151L3014,1151L3019,1146L3019,1143L3018,1139L3018,1139L3018,1139L3018,1139zM3218,1092L3218,1089L3216,1089L3214,1092L3214,1094L3212,1097L3209,1097L3207,1099L3205,1099L3201,1094L3205,1094L3205,1092L3207,1087L3207,1084L3212,1079L3214,1079L3212,1077L3209,1077L3209,1079L3207,1079L3207,1082L3205,1079L3201,1082L3196,1087L3196,1089L3194,1094L3194,1097L3192,1097L3188,1094L3186,1092L3186,1089L3188,1089L3188,1087L3190,1087L3192,1082L3188,1082L3190,1079L3194,1079L3194,1077L3192,1077L3199,1071L3201,1069L3203,1069L3203,1071L3205,1071L3207,1069L3207,1066L3209,1064L3209,1061L3207,1059L3203,1064L3201,1064L3201,1061L3196,1061L3196,1066L3194,1066L3192,1064L3190,1064L3188,1066L3188,1064L3184,1064L3188,1061L3192,1061L3192,1059L3186,1059L3186,1056L3188,1056L3186,1054L3188,1051L3188,1048L3192,1048L3196,1041L3194,1041L3190,1038L3188,1036L3184,1033L3177,1033L3177,1036L3171,1036L3171,1038L3168,1041L3168,1036L3171,1033L3168,1031L3166,1031L3166,1033L3164,1036L3162,1036L3160,1038L3160,1041L3153,1041L3153,1038L3151,1038L3151,1041L3149,1041L3151,1033L3151,1031L3145,1031L3145,1033L3142,1033L3137,1035L3134,1033L3132,1033L3132,1031L3129,1033L3127,1031L3129,1031L3130,1027L3124,1026L3129,1023L3136,1020L3140,1020L3140,1015L3138,1018L3129,1018L3129,1015L3125,1015L3125,1013L3123,1010L3121,1010L3121,1013L3119,1013L3116,1015L3116,1018L3114,1018L3114,1020L3110,1020L3110,1023L3108,1026L3106,1026L3106,1028L3103,1028L3103,1026L3101,1026L3101,1023L3103,1023L3106,1020L3106,1015L3110,1010L3112,1010L3114,1008L3114,1005L3119,1000L3121,995L3121,987L3123,987L3123,992L3125,992L3125,990L3132,982L3134,982L3134,977L3125,977L3123,972L3134,972L3136,975L3138,975L3140,972L3140,969L3142,964L3134,964L3134,967L3129,967L3129,964L3125,964L3123,967L3119,969L3112,969L3110,972L3108,972L3106,975L3103,975L3103,980L3101,982L3101,987L3099,987L3097,990L3095,990L3095,992L3088,992L3088,997L3084,1003L3084,1008L3082,1013L3080,1013L3075,1020L3073,1023L3073,1026L3071,1028L3073,1028L3073,1031L3069,1031L3064,1036L3064,1041L3069,1041L3069,1046L3060,1046L3056,1048L3056,1054L3051,1059L3051,1064L3056,1064L3056,1066L3054,1069L3051,1069L3051,1071L3049,1071L3043,1079L3041,1079L3036,1082L3034,1084L3032,1084L3032,1087L3033,1089L3034,1089L3034,1094L3038,1097L3041,1097L3045,1094L3069,1092L3074,1093L3077,1094L3095,1094L3095,1097L3097,1094L3099,1094L3101,1097L3106,1097L3108,1094L3121,1094L3121,1092L3123,1089L3125,1092L3129,1092L3129,1094L3134,1092L3134,1094L3132,1097L3127,1099L3136,1099L3138,1102L3138,1099L3142,1099L3142,1094L3140,1094L3142,1092L3145,1092L3147,1094L3151,1094L3153,1092L3153,1094L3158,1094L3158,1097L3155,1097L3153,1099L3149,1099L3147,1102L3147,1105L3145,1105L3145,1107L3140,1110L3138,1110L3136,1112L3129,1112L3127,1115L3127,1117L3129,1117L3129,1120L3136,1120L3140,1117L3142,1120L3145,1117L3147,1117L3153,1110L3153,1107L3160,1099L3160,1102L3164,1102L3168,1097L3168,1094L3171,1094L3172,1097L3173,1094L3175,1092L3175,1089L3177,1087L3181,1089L3184,1094L3186,1094L3184,1097L3184,1099L3186,1099L3186,1102L3184,1105L3181,1105L3179,1110L3179,1112L3177,1115L3177,1120L3184,1120L3184,1117L3186,1115L3190,1112L3192,1112L3192,1110L3194,1110L3194,1112L3192,1115L3192,1128L3194,1128L3196,1125L3199,1125L3199,1122L3203,1128L3207,1128L3207,1125L3212,1122L3212,1115L3214,1115L3214,1107L3218,1102L3218,1099L3220,1099L3220,1097L3218,1092L3218,1092L3218,1092L3218,1092zM2950,1138L2950,1135L2956,1135L2958,1133L2956,1130L2954,1130L2947,1133L2924,1133L2924,1130L2917,1130L2915,1128L2913,1128L2913,1130L2911,1130L2911,1133L2908,1133L2908,1128L2904,1122L2902,1122L2902,1120L2904,1117L2904,1112L2900,1115L2900,1117L2898,1117L2898,1120L2895,1120L2895,1122L2893,1122L2893,1128L2902,1128L2902,1130L2900,1130L2900,1133L2904,1135L2908,1135L2911,1138L2913,1138L2913,1140L2919,1140L2924,1143L2926,1143L2928,1140L2930,1140L2934,1143L2932,1145L2934,1145L2934,1148L2947,1148L2947,1143L2945,1143L2943,1140L2947,1140L2950,1138L2950,1138L2950,1138L2950,1138zM2486,967L2486,969L2488,972L2488,977L2490,977L2490,969L2493,969L2493,964L2490,962L2488,962L2486,959L2486,957L2493,957L2493,954L2490,954L2490,952L2495,952L2499,946L2499,944L2501,941L2501,936L2499,934L2495,934L2495,929L2493,926L2493,924L2490,921L2490,911L2488,906L2488,901L2490,901L2488,898L2484,895L2486,890L2484,888L2486,885L2486,884L2484,883L2486,880L2477,880L2475,878L2475,875L2473,872L2473,865L2467,865L2469,862L2473,862L2475,860L2480,860L2484,857L2490,857L2493,855L2499,855L2506,852L2508,850L2510,850L2512,847L2516,847L2519,844L2523,842L2525,839L2527,839L2536,834L2538,832L2540,832L2540,829L2542,827L2549,821L2549,819L2553,819L2553,816L2555,811L2555,801L2558,796L2558,793L2555,793L2555,781L2553,778L2553,773L2551,773L2551,770L2549,768L2549,765L2547,763L2545,763L2536,753L2534,753L2529,750L2531,748L2529,748L2527,748L2525,745L2523,745L2523,748L2521,748L2519,745L2519,745L2519,742L2514,742L2514,740L2512,740L2506,735L2499,735L2499,732L2501,732L2501,727L2499,725L2499,722L2503,722L2506,725L2510,719L2512,719L2512,714L2519,714L2519,712L2521,712L2523,709L2519,709L2519,704L2523,704L2523,702L2521,702L2521,699L2527,699L2527,698L2527,697L2534,697L2534,694L2532,694L2532,691L2529,689L2527,689L2527,686L2529,684L2529,681L2525,679L2525,676L2523,676L2523,674L2527,671L2521,671L2521,668L2525,663L2510,663L2510,661L2516,656L2519,656L2523,651L2523,646L2521,643L2523,640L2525,640L2527,638L2523,638L2523,635L2519,635L2516,633L2514,633L2512,628L2512,623L2510,620L2510,615L2514,610L2514,612L2516,612L2516,610L2528,606L2529,605L2541,606L2545,607L2549,607L2553,610L2562,610L2566,612L2601,615L2601,617L2605,617L2605,615L2616,615L2623,612L2627,612L2627,610L2631,610L2636,607L2636,610L2640,612L2649,612L2649,615L2651,617L2653,617L2657,620L2664,620L2666,623L2664,625L2668,628L2677,628L2681,633L2681,635L2679,638L2683,638L2683,633L2688,635L2692,635L2694,638L2688,638L2690,646L2692,646L2692,648L2694,651L2703,651L2709,653L2716,653L2720,656L2722,656L2726,653L2733,653L2734,656L2735,658L2735,661L2739,663L2744,658L2744,661L2748,661L2746,658L2746,656L2748,653L2750,653L2750,656L2752,656L2752,658L2755,661L2755,663L2750,663L2748,666L2746,666L2746,671L2742,671L2746,676L2746,679L2744,679L2746,681L2748,681L2748,686L2746,686L2742,689L2744,691L2746,691L2748,694L2748,699L2750,699L2748,702L2747,703L2746,704L2744,704L2744,707L2746,707L2746,709L2744,712L2750,712L2752,709L2757,712L2759,712L2759,714L2752,715L2752,725L2755,727L2757,725L2776,725L2783,727L2783,735L2787,740L2791,735L2794,735L2794,737L2796,737L2796,740L2802,740L2802,742L2800,742L2800,745L2802,745L2802,750L2807,745L2811,745L2815,742L2817,742L2820,740L2822,740L2822,737L2824,740L2826,740L2830,737L2835,727L2839,727L2846,732L2848,735L2852,735L2850,732L2848,732L2846,730L2846,727L2850,727L2850,725L2848,725L2852,722L2854,722L2856,719L2856,714L2859,714L2861,709L2863,709L2863,707L2869,707L2867,704L2863,704L2863,702L2861,699L2863,697L2865,697L2865,694L2867,694L2872,691L2872,689L2874,689L2878,684L2880,679L2880,674L2887,674L2891,676L2891,681L2893,681L2893,684L2895,689L2900,689L2900,694L2902,694L2902,697L2904,697L2904,699L2900,699L2902,702L2900,704L2902,704L2904,702L2908,702L2911,704L2911,709L2913,709L2921,714L2921,717L2919,717L2919,719L2924,719L2927,719L2927,726L2934,727L2934,730L2937,732L2933,735L2928,737L2930,740L2935,740L2941,735L2944,737L2942,741L2941,744L2939,747L2941,748L2947,749L2949,751L2946,752L2948,755L2951,754L2963,757L2966,759L2968,760L2968,764L2961,762L2963,767L2967,769L2968,773L2964,771L2962,772L2959,769L2955,768L2953,770L2952,773L2956,772L2960,776L2962,778L2962,781L2973,781L2975,782L2977,783L2976,798L2973,798L2969,797L2968,794L2962,792L2966,798L2967,802L2963,803L2959,803L2956,804L2959,806L2963,807L2968,808L2969,811L2978,815L2982,814L2987,814L2986,817L2983,818L2978,818L2978,820L2995,821L2995,824L2999,827L3006,827L3006,829L3004,829L3004,832L3006,834L3006,837L3010,837L3010,839L3006,839L3002,844L3012,844L3012,847L3015,847L3015,844L3019,844L3019,842L3021,842L3023,844L3023,847L3017,847L3017,850L3025,850L3028,847L3034,847L3038,844L3038,850L3041,847L3043,847L3043,852L3045,852L3045,855L3043,855L3043,857L3047,857L3051,860L3064,860L3067,862L3077,862L3077,865L3086,865L3088,867L3093,867L3090,870L3086,870L3084,872L3067,872L3067,875L3069,875L3064,878L3073,878L3075,880L3088,880L3088,885L3093,888L3095,890L3097,890L3095,893L3090,895L3088,895L3086,898L3090,898L3090,903L3093,903L3095,898L3097,895L3103,895L3107,894L3108,893L3114,893L3114,895L3116,898L3121,901L3119,901L3123,903L3125,903L3127,906L3129,906L3134,911L3134,913L3132,916L3134,916L3134,918L3129,918L3132,921L3132,924L3127,924L3125,926L3127,929L3134,929L3134,936L3136,936L3136,939L3132,939L3127,939L3129,941L3134,942L3136,944L3134,946L3134,949L3121,957L3119,959L3112,959L3106,967L3103,967L3099,969L3095,969L3093,967L3086,967L3086,969L3077,969L3073,972L3071,972L3071,975L3060,975L3060,977L3054,977L3054,980L3049,980L3045,982L3043,982L3043,985L3045,985L3045,990L3043,992L3041,992L3041,990L3038,990L3038,992L3036,992L3032,995L3030,995L3028,997L3028,1000L3025,1000L3023,1003L3019,1003L3019,1005L3017,1008L2999,1008L2999,1010L2973,1010L2972,1011L2971,1010L2969,1010L2968,1011L2967,1010L2963,1010L2963,1008L2960,1008L2960,1010L2958,1010L2954,1008L2913,1008L2908,1005L2904,1005L2902,1008L2893,1008L2893,1005L2891,1005L2889,1008L2869,1008L2869,1005L2863,1008L2848,1008L2848,1010L2839,1010L2837,1008L2835,1008L2824,1015L2822,1015L2822,1018L2820,1020L2817,1020L2817,1023L2815,1023L2813,1031L2813,1033L2811,1038L2800,1038L2794,1041L2789,1041L2787,1046L2776,1046L2776,1048L2774,1051L2763,1056L2763,1059L2761,1061L2761,1064L2757,1064L2757,1066L2752,1071L2748,1074L2746,1077L2744,1077L2744,1082L2742,1084L2739,1089L2737,1092L2735,1092L2733,1094L2731,1094L2731,1099L2724,1099L2724,1102L2718,1110L2718,1112L2711,1112L2709,1115L2713,1117L2716,1117L2720,1115L2722,1115L2724,1112L2729,1110L2729,1107L2735,1102L2737,1097L2739,1097L2746,1089L2748,1089L2748,1087L2750,1087L2750,1084L2752,1084L2752,1082L2761,1077L2763,1074L2765,1074L2765,1071L2770,1071L2778,1066L2781,1064L2783,1064L2785,1061L2789,1061L2815,1051L2820,1051L2820,1048L2822,1048L2837,1043L2841,1043L2846,1041L2876,1041L2878,1043L2882,1043L2885,1046L2887,1046L2898,1051L2898,1054L2900,1056L2895,1056L2895,1054L2891,1054L2895,1059L2898,1059L2900,1061L2895,1061L2895,1064L2898,1064L2898,1066L2895,1066L2891,1069L2887,1069L2885,1071L2885,1074L2882,1074L2882,1077L2876,1077L2872,1079L2872,1082L2863,1082L2863,1079L2854,1079L2852,1074L2850,1074L2850,1077L2848,1077L2846,1079L2839,1079L2841,1082L2848,1084L2854,1084L2854,1087L2856,1087L2856,1094L2859,1094L2865,1089L2869,1089L2869,1087L2882,1087L2882,1089L2885,1089L2885,1092L2882,1094L2880,1094L2880,1102L2878,1102L2872,1107L2867,1112L2882,1112L2882,1115L2880,1115L2880,1117L2878,1117L2878,1120L2882,1125L2885,1125L2885,1133L2887,1133L2887,1135L2889,1140L2904,1140L2908,1143L2911,1143L2908,1145L2902,1145L2902,1148L2908,1148L2908,1150L2913,1153L2915,1150L2919,1150L2921,1153L2926,1153L2924,1156L2928,1156L2930,1153L2932,1153L2939,1156L2941,1156L2943,1158L2945,1158L2947,1161L2952,1156L2956,1153L2958,1153L2960,1150L2963,1150L2963,1153L2962,1154L2963,1158L2965,1158L2967,1161L2969,1161L2971,1158L2975,1158L2976,1160L2977,1162L2978,1163L2980,1163L2980,1166L2976,1166L2973,1168L2989,1168L2987,1170L2985,1171L2984,1173L2980,1171L2978,1171L2978,1173L2976,1173L2976,1176L2967,1176L2958,1181L2952,1181L2950,1184L2945,1184L2945,1186L2937,1186L2937,1189L2934,1189L2932,1186L2930,1186L2930,1191L2928,1189L2919,1194L2917,1191L2917,1196L2915,1196L2915,1199L2906,1196L2906,1191L2902,1191L2902,1194L2904,1196L2900,1196L2900,1194L2895,1194L2895,1199L2893,1201L2898,1201L2898,1204L2891,1204L2891,1207L2887,1209L2882,1214L2880,1214L2880,1217L2876,1222L2867,1222L2865,1227L2863,1227L2863,1230L2861,1227L2859,1227L2859,1230L2856,1230L2854,1227L2854,1222L2852,1219L2850,1219L2850,1222L2848,1222L2846,1219L2843,1219L2843,1207L2846,1201L2851,1195L2850,1194L2867,1181L2869,1181L2878,1176L2880,1176L2880,1173L2889,1173L2891,1171L2891,1170L2891,1170L2893,1171L2893,1176L2898,1176L2900,1173L2902,1173L2904,1171L2908,1171L2915,1168L2921,1168L2911,1166L2908,1166L2908,1168L2904,1168L2902,1166L2895,1166L2893,1168L2889,1166L2885,1168L2878,1168L2878,1166L2880,1163L2885,1163L2889,1161L2891,1158L2891,1153L2887,1150L2887,1153L2883,1159L2882,1158L2878,1158L2878,1161L2876,1161L2874,1163L2869,1163L2867,1166L2865,1166L2852,1173L2848,1173L2846,1171L2843,1173L2841,1173L2837,1176L2830,1176L2828,1179L2826,1179L2826,1176L2822,1173L2820,1173L2819,1174L2817,1173L2813,1173L2811,1176L2809,1173L2809,1171L2807,1171L2809,1168L2807,1163L2809,1163L2809,1161L2804,1161L2802,1158L2798,1158L2798,1150L2800,1148L2798,1138L2798,1112L2796,1112L2796,1110L2794,1110L2794,1107L2787,1105L2787,1102L2783,1102L2772,1107L2763,1107L2763,1099L2759,1099L2757,1102L2752,1105L2746,1112L2746,1115L2737,1125L2737,1128L2735,1130L2735,1133L2733,1135L2731,1135L2731,1138L2729,1140L2729,1148L2731,1148L2731,1150L2726,1156L2724,1156L2722,1158L2720,1158L2718,1161L2718,1166L2714,1171L2709,1168L2707,1171L2698,1171L2698,1176L2696,1176L2696,1179L2636,1179L2629,1181L2618,1181L2607,1179L2603,1179L2610,1164L2608,1155L2580,1159L2556,1154L2532,1135L2502,1129L2476,1101L2478,970L2486,967zM2969,1043L2965,1038L2963,1038L2958,1036L2954,1036L2950,1033L2947,1031L2945,1031L2939,1028L2937,1028L2932,1026L2930,1023L2921,1023L2919,1020L2917,1020L2904,1020L2904,1018L2898,1018L2891,1020L2889,1020L2893,1023L2895,1023L2904,1026L2906,1028L2908,1028L2913,1031L2915,1033L2915,1036L2917,1036L2919,1038L2924,1038L2926,1041L2930,1041L2932,1043L2939,1043L2950,1046L2967,1046L2969,1043L2969,1043L2969,1043L2969,1043zM2534,572L2540,577L2542,577L2547,579L2551,579L2555,577L2551,577L2551,572L2549,572L2542,569L2529,569L2532,572L2534,572L2534,572L2534,572L2534,572zM2488,815L2490,817L2496,814L2496,805L2491,806L2492,810L2490,813L2488,815L2488,815L2488,815L2488,815zM2506,582L2508,582L2508,584L2512,587L2514,587L2516,589L2519,589L2521,587L2525,584L2527,584L2529,582L2525,579L2523,577L2510,577L2510,574L2508,574L2503,577L2499,577L2499,579L2503,579L2506,582L2506,582L2506,582L2506,582zM2477,810L2474,812L2472,811L2474,808L2475,804L2474,800L2472,803L2468,807L2464,805L2460,809L2456,810L2456,814L2460,815L2466,810L2469,810L2470,811L2466,812L2465,816L2460,819L2458,823L2463,824L2470,817L2473,817L2471,819L2469,822L2471,823L2473,823L2475,816L2477,817L2479,815L2480,809L2482,808L2481,811L2484,812L2486,810L2488,808L2487,804L2484,804L2482,800L2479,800L2477,810L2477,810L2477,810L2477,810zM2792,678L2794,678L2794,676L2796,676L2796,673L2794,673L2792,670L2785,670L2783,676L2781,678L2781,681L2785,681L2792,678L2792,678L2792,678L2792,678zM3181,1028L3181,1026L3173,1026L3173,1031L3175,1031L3181,1028L3181,1028L3181,1028L3181,1028zM2465,794L2464,789L2460,789L2460,793L2460,794L2463,793L2465,794L2465,794L2465,794L2465,794zM2451,620L2451,630L2454,633L2458,633L2462,638L2467,638L2471,633L2471,630L2473,630L2475,628L2475,625L2477,625L2477,623L2480,617L2480,615L2477,615L2473,610L2462,610L2462,612L2460,612L2454,617L2451,620L2451,620L2451,620L2451,620z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1920,313L1913,303L1889,291L1875,288L1866,289L1852,285L1846,279L1832,277L1828,271L1838,262L1852,262L1861,272L1876,271L1892,271L1895,264L1889,259L1866,247L1867,241L1877,234L1892,234L1910,234L1915,239L1925,231L1966,227L1963,230L1973,235L1982,239L1978,250L1968,251L1956,262L1971,262L1980,271L1990,262L2001,273L2005,278L1996,285L2001,287L2001,297L1994,306L1971,309L1955,309L1949,319L1935,320L1920,313L1920,313L1920,313zM1219,304L1205,300L1186,298L1193,290L1207,275L1219,266L1216,259L1244,239L1231,233L1224,220L1261,214L1293,214L1321,215L1349,220L1381,223L1414,221L1445,230L1471,241L1479,246L1476,250L1483,253L1507,254L1514,264L1512,273L1524,273L1534,263L1549,263L1577,269L1591,273L1591,284L1609,279L1619,274L1609,267L1629,267L1653,271L1667,285L1674,304L1685,309L1694,302L1688,288L1676,260L1696,255L1716,249L1721,238L1760,239L1780,247L1770,257L1762,269L1759,276L1766,295L1782,310L1782,321L1782,327L1800,337L1812,345L1826,345L1844,352L1869,355L1880,363L1878,371L1861,371L1838,371L1819,380L1846,381L1858,391L1829,402L1805,400L1780,399L1759,394L1744,388L1730,390L1721,379L1711,387L1701,396L1679,396L1652,401L1602,411L1581,411L1553,413L1531,406L1526,395L1521,384L1486,384L1458,383L1433,375L1424,365L1429,357L1463,355L1489,354L1523,354L1548,354L1570,349L1555,342L1512,342L1482,343L1444,341L1420,341L1404,336L1394,327L1423,323L1460,313L1437,311L1406,315L1394,312L1384,308L1374,308L1372,302L1382,294L1396,286L1390,282L1396,276L1419,267L1416,265L1384,270L1372,276L1362,284L1353,290L1341,293L1337,300L1334,313L1319,313L1312,317L1301,310L1289,321L1273,323L1264,325L1254,322L1242,309L1228,303L1219,304L1219,304L1219,304zM1552,643L1543,635L1547,623L1532,623L1516,612L1494,612L1485,603L1469,600L1477,610L1482,615L1497,628L1482,634L1473,630L1468,634L1462,649L1450,646L1441,648L1444,654L1459,661L1478,662L1502,660L1519,659L1522,653L1521,648L1529,643L1542,644L1552,643L1552,643L1552,643L1552,643zM1410,479L1406,471L1395,480L1381,481L1360,483L1347,479L1339,477L1353,470L1367,464L1351,458L1331,463L1305,467L1283,474L1254,477L1226,486L1205,486L1208,494L1222,492L1241,486L1248,488L1261,488L1282,481L1299,485L1314,491L1303,495L1286,492L1289,498L1279,504L1269,508L1268,517L1261,519L1266,524L1279,525L1293,524L1299,521L1309,513L1322,507L1331,505L1336,507L1329,515L1324,519L1312,525L1308,528L1321,530L1332,524L1349,518L1357,513L1347,504L1360,503L1379,503L1390,501L1397,496L1410,479L1410,479L1410,479L1410,479zM818,684L818,679L799,679L795,684L792,684L782,679L779,681L766,679L766,375L801,375L803,378L812,378L828,383L845,390L869,396L871,398L873,396L887,399L891,397L898,398L918,404L922,403L918,399L911,398L904,398L902,395L906,393L911,395L912,392L905,390L896,389L899,388L907,386L913,385L914,381L912,377L917,377L924,377L945,376L946,372L951,370L954,370L959,376L963,374L965,377L959,384L968,383L971,381L986,379L988,374L991,373L998,373L1001,369L1012,370L1019,368L1026,365L1033,363L1037,364L1040,364L1044,359L1053,359L1064,359L1069,359L1073,358L1076,354L1081,354L1083,357L1088,358L1083,361L1075,363L1062,368L1054,372L1047,376L1043,381L1045,383L1050,381L1060,373L1068,370L1079,368L1089,368L1095,367L1097,371L1103,370L1107,369L1115,363L1115,360L1115,357L1122,356L1126,355L1124,352L1120,352L1118,350L1115,350L1121,347L1120,345L1118,344L1118,340L1124,343L1144,349L1155,359L1163,370L1169,374L1177,375L1191,372L1198,366L1199,362L1201,356L1204,354L1215,354L1225,357L1226,365L1228,370L1233,369L1238,371L1245,373L1251,372L1257,372L1262,369L1267,366L1273,366L1276,367L1282,367L1294,368L1303,368L1318,369L1339,375L1356,381L1373,385L1388,387L1395,392L1413,395L1435,396L1453,396L1465,395L1481,397L1493,400L1502,405L1515,412L1516,417L1515,421L1518,429L1525,432L1533,435L1538,438L1561,437L1564,434L1575,435L1585,435L1595,433L1608,431L1615,427L1624,426L1632,432L1638,438L1647,436L1652,434L1665,435L1674,435L1672,430L1677,427L1684,425L1680,422L1673,424L1669,424L1670,418L1665,418L1663,421L1660,419L1672,405L1697,404L1716,400L1730,397L1739,396L1751,402L1754,408L1753,413L1762,414L1774,418L1778,422L1779,426L1801,426L1807,422L1812,428L1821,429L1830,434L1843,435L1854,435L1862,437L1875,434L1885,430L1913,432L1927,436L1934,436L1949,433L1939,430L1938,423L1944,422L1942,419L1940,416L1947,414L1954,415L1959,413L1961,409L1967,409L1967,407L1955,405L1951,401L1944,402L1936,400L1934,398L1926,400L1918,397L1917,393L1923,389L1929,389L1942,387L1947,384L1945,381L1943,377L1950,376L1952,369L1958,366L1965,366L1970,367L1978,368L1985,373L1996,375L2010,376L2018,376L2024,374L2027,370L2018,369L2012,364L2002,361L1999,353L1999,348L2007,347L2011,341L2004,338L1997,334L2001,328L2003,321L2010,315L2017,316L2022,319L2027,317L2025,313L2016,309L2027,305L2031,300L2036,295L2035,280L2030,275L2025,272L2020,270L2020,263L2020,261L2025,259L2025,250L2023,248L2024,242L2029,240L2033,237L2035,231L2038,230L2047,228L2059,227L2074,227L2080,227L2080,225L2095,226L2105,228L2112,228L2120,230L2139,229L2150,229L2158,230L2162,234L2167,238L2163,243L2152,251L2145,256L2140,260L2145,262L2151,262L2167,253L2184,250L2194,246L2199,244L2202,240L2213,240L2212,242L2220,243L2223,247L2237,242L2247,239L2262,236L2275,236L2285,236L2329,237L2327,241L2312,245L2296,254L2298,255L2303,257L2302,254L2307,251L2311,253L2314,253L2312,257L2318,257L2318,254L2326,251L2340,249L2354,244L2368,242L2377,241L2382,239L2393,239L2423,240L2428,243L2433,247L2432,254L2436,254L2436,239L2444,238L2455,237L2467,239L2490,242L2519,241L2529,242L2540,245L2548,249L2557,250L2561,254L2568,256L2568,261L2569,265L2573,265L2570,269L2548,269L2558,272L2559,275L2569,275L2589,277L2594,279L2602,279L2620,279L2624,284L2642,290L2647,289L2649,292L2660,293L2671,300L2686,300L2690,298L2696,299L2702,299L2701,302L2710,304L2725,308L2729,306L2726,305L2718,304L2720,302L2728,302L2736,302L2737,300L2739,297L2748,297L2759,300L2769,305L2776,306L2782,310L2789,310L2794,311L2800,314L2801,316L2806,314L2804,310L2801,306L2802,301L2800,300L2806,297L2819,296L2819,293L2813,291L2814,288L2819,286L2829,286L2836,288L2844,290L2853,290L2848,296L2857,296L2863,292L2868,287L2877,284L2880,287L2881,292L2886,295L2895,294L2894,288L2888,286L2888,280L2885,276L2880,271L2879,266L2885,268L2888,271L2897,272L2900,274L2900,277L2901,282L2906,280L2913,280L2920,278L2923,276L2929,278L2932,282L2924,282L2922,284L2926,287L2928,289L2923,291L2923,294L2929,293L2929,296L2923,298L2930,299L2946,294L2958,298L2959,301L2979,302L2980,304L2984,305L2984,311L2989,314L2989,322L2993,324L2996,325L2999,322L2994,328L2986,330L2989,333L2993,335L2993,340L2983,344L2978,354L2984,357L2991,364L2989,369L2995,373L3000,377L3003,384L3008,391L3015,392L3018,390L3023,390L3028,399L3028,405L3025,407L3028,411L3031,413L3027,418L3020,425L3018,430L3015,429L3016,435L3019,438L3020,443L3021,447L3017,447L3027,459L3027,469L3026,483L3025,496L3023,499L3021,500L3022,503L3019,506L3023,508L3026,511L3023,514L3017,513L3014,516L3013,511L3008,511L3007,516L3003,517L3001,517L3001,515L2995,512L2991,515L2992,520L2992,523L2980,523L2985,524L2984,529L2979,533L2974,537L2970,537L2967,538L2970,540L2968,543L2962,547L2965,548L2971,545L2972,547L2968,550L2960,552L2960,554L2966,553L2972,552L2974,553L2969,557L2962,561L2959,561L2957,564L2953,559L2955,555L2951,553L2948,558L2946,561L2943,560L2937,560L2928,557L2926,558L2925,559L2918,560L2912,566L2909,563L2911,562L2909,553L2903,551L2902,546L2894,545L2889,542L2887,546L2894,548L2894,551L2880,552L2884,556L2889,557L2891,559L2895,560L2898,557L2902,561L2908,570L2906,573L2902,574L2906,581L2900,582L2900,585L2894,585L2893,583L2887,584L2893,587L2891,590L2887,589L2886,590L2889,592L2887,596L2881,596L2873,593L2877,599L2878,602L2882,604L2900,605L2891,610L2882,611L2877,608L2870,606L2866,597L2861,596L2855,594L2851,593L2847,593L2840,594L2837,591L2833,590L2829,589L2825,587L2820,584L2814,580L2809,577L2805,571L2806,577L2801,578L2798,578L2793,573L2785,571L2780,567L2774,567L2772,569L2777,571L2780,574L2785,576L2789,579L2793,582L2798,582L2804,586L2811,592L2818,596L2822,600L2831,604L2839,610L2847,615L2851,616L2854,620L2851,623L2852,626L2848,628L2839,626L2829,625L2825,622L2816,622L2814,620L2808,620L2794,616L2779,616L2770,612L2760,611L2750,603L2752,598L2746,598L2742,599L2737,597L2734,599L2732,598L2729,600L2735,604L2735,605L2718,605L2715,602L2711,598L2705,597L2705,592L2705,590L2701,590L2696,591L2694,586L2689,584L2685,581L2679,578L2680,576L2684,575L2691,576L2694,576L2698,573L2692,570L2683,569L2674,570L2665,570L2658,568L2660,565L2663,562L2661,559L2655,555L2647,554L2642,548L2637,548L2636,552L2633,550L2631,546L2627,548L2624,545L2624,542L2622,538L2618,538L2615,544L2612,544L2604,545L2593,545L2588,542L2583,540L2583,544L2581,548L2576,546L2569,546L2567,548L2564,548L2561,548L2561,551L2557,552L2553,551L2537,550L2529,548L2521,546L2515,542L2510,535L2510,529L2513,526L2522,521L2527,522L2530,518L2527,515L2524,513L2510,514L2497,519L2488,521L2479,521L2471,520L2467,520L2465,520L2454,520L2444,520L2433,512L2431,512L2432,516L2436,518L2434,520L2417,520L2399,519L2383,514L2371,512L2371,510L2365,510L2362,512L2351,509L2343,505L2345,501L2345,497L2341,497L2342,502L2339,504L2337,503L2335,507L2339,510L2347,512L2355,515L2362,518L2368,518L2370,521L2373,524L2377,527L2383,529L2388,531L2396,533L2403,534L2411,538L2415,545L2416,551L2412,556L2405,557L2408,558L2419,556L2425,556L2431,557L2432,559L2434,554L2440,557L2446,559L2448,562L2454,564L2454,566L2448,566L2444,569L2434,574L2434,575L2410,572L2400,568L2390,568L2391,565L2394,563L2390,559L2373,559L2378,555L2374,551L2373,554L2361,553L2360,559L2360,565L2353,568L2346,572L2340,573L2335,578L2327,583L2317,587L2303,587L2301,583L2303,574L2302,569L2288,570L2282,571L2276,570L2270,572L2261,572L2260,569L2267,561L2273,557L2280,556L2287,555L2285,551L2284,547L2284,535L2287,529L2287,524L2289,512L2294,501L2306,495L2312,496L2317,495L2319,489L2325,488L2322,484L2318,483L2315,488L2310,487L2309,482L2299,482L2302,485L2306,485L2304,490L2294,493L2289,498L2290,500L2284,502L2277,504L2272,509L2269,510L2269,514L2272,514L2269,523L2259,532L2252,536L2252,536L2252,536L2252,536L2250,538L2250,541L2243,541L2241,544L2241,546L2235,554L2222,559L2209,559L2207,559L2200,559L2198,556L2194,556L2194,559L2192,556L2187,556L2185,554L2181,554L2185,559L2187,559L2187,561L2183,561L2183,559L2176,559L2179,561L2183,564L2183,566L2181,566L2179,569L2179,572L2161,572L2159,574L2157,572L2148,572L2144,569L2142,569L2140,566L2137,566L2137,572L2142,574L2146,574L2150,577L2155,577L2155,579L2161,579L2163,584L2163,589L2161,592L2159,592L2159,593L2157,593L2157,592L2153,592L2148,595L2148,597L2114,597L2118,600L2120,602L2129,602L2129,607L2124,607L2122,605L2118,605L2118,607L2111,607L2109,610L2105,610L2107,612L2109,612L2109,615L2105,615L2105,617L2096,617L2096,620L2101,620L2098,623L2090,623L2090,625L2092,625L2090,628L2085,628L2081,625L2081,628L2083,628L2085,630L2092,630L2092,633L2088,633L2085,635L2081,635L2075,638L2070,643L2075,643L2077,646L2075,646L2072,648L2068,651L2066,656L2059,663L2057,668L2057,671L2053,671L2053,679L2051,681L1853,685L818,684zM2358,620L2360,617L2363,617L2365,615L2369,615L2371,617L2376,617L2382,615L2384,615L2384,612L2386,612L2386,610L2393,610L2393,607L2395,605L2399,605L2402,602L2406,602L2406,595L2408,595L2406,592L2399,592L2393,592L2393,595L2391,595L2389,592L2384,592L2382,595L2380,595L2376,597L2371,597L2371,595L2365,595L2363,597L2360,597L2360,602L2356,605L2354,607L2352,607L2350,610L2352,612L2354,612L2356,615L2356,620L2358,620L2358,620L2358,620L2358,620z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1128,967L1128,962L1125,961L1123,963L1122,965L1126,967L1128,967L1128,967L1128,967L1128,967zM1095,927L1092,924L1094,930L1096,933L1099,933L1097,930L1095,927L1095,927L1095,927L1095,927zM1704,710L1691,706L1675,705L1663,707L1655,704L1647,700L1631,706L1630,710L1617,716L1608,719L1601,725L1592,728L1590,732L1579,731L1569,726L1561,728L1557,733L1561,736L1567,744L1574,743L1575,737L1585,738L1595,734L1605,734L1615,733L1615,729L1625,723L1636,719L1651,715L1659,716L1671,715L1682,715L1691,711L1697,710L1704,710L1704,710L1704,710L1704,710zM1853,685L1853,825L1870,1049L1269,1048L1269,1046L1267,1046L1265,1048L1262,1048L1262,1046L1260,1046L1258,1041L1267,1041L1267,1038L1258,1038L1258,1033L1256,1033L1256,1038L1254,1038L1254,1036L1247,1036L1241,1033L1239,1033L1239,1031L1230,1023L1223,1023L1223,1020L1219,1020L1219,1018L1217,1018L1215,1015L1219,1015L1219,1013L1221,1010L1221,1008L1219,1008L1219,1005L1208,1005L1206,1003L1204,1003L1204,1000L1200,1000L1200,1005L1197,1005L1197,1008L1200,1010L1200,1013L1202,1013L1204,1015L1204,1018L1206,1020L1210,1023L1213,1026L1213,1028L1215,1031L1215,1033L1221,1036L1223,1036L1243,1046L1246,1050L1252,1053L1256,1056L1254,1059L1256,1064L1258,1066L1258,1069L1254,1069L1254,1066L1249,1071L1245,1071L1245,1069L1243,1069L1243,1071L1241,1069L1239,1069L1230,1066L1226,1064L1217,1064L1217,1061L1215,1061L1213,1059L1206,1059L1204,1056L1210,1051L1213,1051L1208,1048L1206,1048L1204,1051L1195,1051L1189,1048L1189,1046L1191,1046L1193,1043L1193,1041L1191,1043L1189,1043L1189,1038L1187,1041L1187,1043L1184,1043L1184,1041L1176,1041L1176,1036L1165,1036L1167,1031L1169,1028L1165,1026L1165,1031L1163,1031L1161,1028L1158,1028L1156,1026L1154,1026L1156,1023L1156,1020L1150,1020L1148,1018L1150,1015L1150,1013L1148,1013L1148,1015L1143,1015L1141,1013L1130,1013L1130,1010L1132,1010L1132,1005L1128,1005L1124,1000L1119,1000L1115,995L1115,990L1117,990L1124,987L1130,987L1131,988L1132,987L1137,987L1137,990L1141,990L1141,992L1145,995L1148,995L1154,997L1161,997L1163,1000L1165,1000L1165,997L1167,997L1169,995L1165,995L1165,987L1156,987L1154,990L1152,990L1148,987L1143,987L1143,985L1139,985L1139,980L1135,980L1132,977L1132,975L1141,975L1141,972L1135,972L1135,969L1132,967L1135,967L1130,962L1130,954L1132,954L1132,952L1130,952L1128,950L1129,947L1129,944L1126,948L1126,952L1124,955L1122,954L1119,952L1119,950L1117,947L1117,944L1121,943L1120,939L1119,938L1117,940L1113,940L1114,934L1113,932L1111,936L1109,936L1108,939L1106,940L1104,934L1106,931L1106,924L1104,924L1104,929L1098,929L1098,926L1096,926L1096,924L1098,921L1093,921L1093,916L1091,916L1089,913L1089,911L1091,908L1095,914L1096,903L1093,906L1093,898L1091,898L1091,906L1086,906L1085,906L1085,909L1082,911L1080,908L1072,901L1070,898L1063,892L1063,889L1066,889L1067,888L1067,885L1065,885L1065,883L1070,883L1070,880L1065,880L1065,875L1063,875L1063,878L1059,878L1059,875L1057,872L1059,872L1059,865L1061,865L1061,862L1063,862L1065,860L1065,857L1067,857L1070,855L1070,852L1067,852L1067,847L1070,847L1072,844L1072,842L1067,834L1067,827L1070,824L1070,816L1061,816L1059,814L1059,811L1054,811L1050,809L1046,809L1041,806L1039,806L1037,804L1035,804L1028,801L1020,801L1020,793L1013,791L1013,788L1015,786L1007,786L1007,783L1009,783L1009,781L998,768L994,765L994,760L992,760L987,755L985,755L985,753L983,750L983,748L979,748L979,745L976,742L976,740L968,735L966,732L957,727L953,727L950,725L950,722L946,717L942,717L942,714L940,714L929,709L929,707L931,707L931,704L929,702L927,702L918,697L909,699L905,699L903,702L894,702L896,704L898,704L896,707L892,707L892,714L890,714L890,717L879,717L879,719L875,719L870,722L868,722L866,725L862,725L862,722L864,722L862,719L862,717L859,714L851,709L846,704L836,699L834,699L831,697L831,694L829,694L829,691L823,689L818,689L816,686L816,684L818,684L1853,685zM1070,904L1067,900L1064,899L1064,897L1063,894L1060,894L1059,897L1057,897L1058,901L1060,902L1063,905L1066,907L1073,913L1074,910L1075,910L1074,907L1070,904L1070,904L1070,904L1070,904zM1058,889L1062,887L1063,886L1062,885L1060,882L1056,882L1054,884L1053,885L1053,888L1055,887L1057,888L1058,889L1058,889L1058,889L1058,889z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2385,1153L2408,1164L2411,1161L2415,1152L2409,1152L2405,1148L2401,1148L2396,1146L2374,1148L2368,1147L2363,1147L2358,1144L2354,1146L2353,1148L2368,1150L2374,1152L2385,1153L2385,1153L2385,1153L2385,1153zM2603,1179L2594,1184L2590,1184L2590,1186L2588,1186L2584,1189L2584,1191L2581,1191L2579,1194L2577,1194L2577,1196L2575,1196L2575,1199L2573,1199L2571,1201L2568,1201L2560,1207L2560,1209L2555,1205L2547,1206L2544,1213L2544,1217L2541,1216L2536,1216L2528,1212L2515,1213L2505,1215L2488,1216L2481,1219L2471,1226L2465,1233L2468,1237L2480,1238L2484,1235L2485,1235L2486,1237L2486,1245L2488,1247L2490,1247L2489,1249L2482,1248L2462,1251L2453,1252L2451,1254L2451,1258L2442,1259L2434,1257L2431,1255L2423,1256L2415,1260L2410,1265L2407,1267L2407,1270L2392,1275L2383,1278L2376,1277L2373,1278L2371,1278L2371,1275L2373,1270L2373,1268L2378,1268L2378,1265L2382,1265L2382,1263L2384,1263L2384,1260L2389,1260L2389,1258L2391,1258L2391,1247L2393,1245L2393,1244L2396,1245L2410,1235L2412,1230L2411,1210L2417,1200L2422,1196L2423,1188L2420,1178L2412,1171L2419,1170L2423,1171L2423,1177L2435,1188L2438,1188L2447,1192L2456,1194L2459,1191L2453,1185L2458,1183L2465,1185L2461,1177L2455,1171L2447,1159L2440,1154L2436,1147L2385,1138L2375,1139L2352,1136L2354,1143L2352,1143L2352,1145L2350,1145L2345,1140L2343,1135L2343,1133L2345,1133L2345,1130L2337,1130L2334,1133L2332,1133L2331,1130L2333,1128L2334,1124L2334,1121L2336,1119L2330,1116L2327,1110L2332,1106L2319,1093L2324,1084L2296,1082L2288,1072L2282,1057L2240,1051L2234,1047L2231,1052L2237,1054L2243,1054L2246,1055L2226,1062L2227,1054L2222,1054L2219,1068L2214,1069L2213,1061L2209,1063L2203,1065L2201,1067L2204,1072L2195,1079L2189,1082L2181,1082L2181,1079L2179,1079L2179,1077L2174,1079L2161,1079L2159,1077L2159,1074L2155,1074L2150,1077L2148,1079L2144,1079L2142,1082L2142,1079L2135,1079L2135,1077L2133,1077L2131,1074L2127,1074L2127,1071L2124,1071L2124,1069L2122,1069L2120,1071L2118,1071L2118,1074L2116,1074L2114,1071L2114,1069L2109,1066L2107,1066L2107,1064L2101,1061L2085,1061L2085,1064L2077,1064L2077,1061L2064,1061L2064,1059L2053,1059L2051,1056L2051,1048L2049,1046L2049,1038L2040,1038L2040,1036L2038,1036L2038,1048L1871,1048L1853,824L1853,685L2051,681L2053,684L2051,686L2049,686L2049,704L2051,709L2051,712L2049,712L2049,719L2055,727L2057,727L2057,730L2059,732L2062,732L2062,730L2094,730L2094,737L2096,737L2096,740L2098,742L2098,745L2103,750L2103,753L2105,753L2105,760L2107,760L2107,763L2109,765L2114,773L2114,781L2108,788L2114,786L2131,786L2133,783L2150,781L2153,778L2159,778L2161,781L2172,781L2174,783L2176,783L2181,786L2183,786L2183,788L2189,788L2196,791L2207,791L2207,793L2215,793L2218,796L2220,796L2220,799L2222,799L2226,801L2228,801L2231,804L2237,804L2237,806L2241,809L2246,814L2246,816L2250,819L2254,819L2254,821L2265,821L2267,824L2269,824L2276,827L2282,827L2285,829L2295,832L2300,832L2304,834L2306,837L2308,837L2311,839L2313,839L2315,842L2317,842L2317,844L2319,844L2321,842L2324,844L2339,844L2343,842L2343,844L2347,844L2347,842L2352,842L2359,845L2363,844L2371,847L2373,847L2373,844L2378,844L2378,847L2391,847L2391,850L2395,850L2395,847L2397,850L2397,852L2397,853L2397,855L2397,860L2393,872L2391,872L2391,875L2393,878L2393,880L2395,883L2397,883L2399,888L2399,895L2397,898L2397,901L2399,901L2399,908L2402,908L2402,911L2397,911L2397,913L2395,916L2395,918L2397,918L2397,921L2402,921L2402,924L2404,924L2404,926L2406,926L2410,934L2415,934L2415,936L2417,936L2417,941L2419,941L2419,946L2421,946L2423,949L2428,949L2432,952L2436,957L2441,957L2443,959L2443,962L2445,967L2447,967L2447,972L2449,972L2454,975L2460,975L2464,980L2467,980L2467,982L2469,982L2469,980L2467,977L2467,975L2469,975L2469,969L2473,969L2473,964L2477,962L2482,962L2482,964L2480,964L2480,967L2486,967L2478,970L2476,1102L2502,1129L2533,1135L2556,1154L2580,1159L2608,1155L2610,1164L2603,1179zM2003,974L1997,961L1987,947L1984,937L1980,927L1977,920L1974,912L1965,899L1959,893L1948,890L1934,890L1931,894L1927,904L1925,909L1930,914L1945,914L1937,921L1938,928L1943,930L1949,937L1957,942L1957,948L1963,954L1969,948L1973,948L1981,956L1981,968L1990,961L1993,967L1991,971L1996,976L1991,977L1988,984L1988,996L1993,1002L2000,999L2001,996L2007,992L2006,984L2003,974L2003,974L2003,974L2003,974zM2402,918L2406,918L2408,921L2415,921L2421,924L2425,924L2428,926L2436,926L2438,929L2441,929L2441,926L2438,921L2436,918L2432,916L2432,913L2430,913L2430,911L2417,911L2412,913L2404,913L2402,916L2402,918L2402,918L2402,918L2402,918z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M996,858L996,864L991,859L987,858L983,852L982,848L982,847L979,844L976,845L974,844L975,842L970,845L969,842L970,840L971,841L981,839L983,840L985,839L983,837L983,832L981,832L979,835L976,838L969,838L967,836L968,831L971,835L974,835L977,834L977,831L976,829L977,823L979,821L979,819L975,821L972,819L968,822L964,824L962,822L969,816L969,809L982,810L986,816L991,818L999,824L1009,838L1004,838L1015,845L1013,850L1015,853L1016,858L1015,861L1009,861L1005,856L1001,855L999,854L998,851L999,848L996,847L995,851L993,852L991,849L989,846L987,845L984,846L989,854L994,859L996,858L996,858L996,858zM893,750L895,748L897,747L904,748L907,746L915,746L920,749L934,753L934,756L932,758L930,761L922,761L924,762L932,762L935,764L936,770L936,780L940,784L940,791L942,792L941,810L938,813L938,811L934,809L932,801L929,800L922,794L922,788L922,782L919,779L916,778L914,780L915,782L915,786L910,786L908,784L912,782L908,780L908,777L911,775L900,765L898,763L893,760L888,755L890,750L893,750L893,750L893,750zM606,674L609,674L614,673L619,675L618,677L609,680L606,677L606,674L606,674L606,674zM583,686L595,676L600,678L602,681L596,680L589,685L582,693L577,696L573,696L573,693L575,691L583,686L583,686L583,686zM578,683L575,683L573,681L572,679L573,677L576,672L579,672L581,674L578,683L578,683L578,683zM403,796L401,795L401,792L405,789L404,786L402,786L395,790L392,789L389,789L389,783L387,780L382,778L384,774L384,771L390,770L392,767L396,766L402,766L404,769L407,770L408,767L410,764L406,762L409,759L414,759L416,762L418,760L422,760L417,756L422,756L424,756L425,759L427,757L430,758L437,760L441,759L444,755L447,758L447,762L445,764L452,768L450,771L445,773L442,771L440,773L441,776L439,779L434,776L433,778L435,781L434,784L426,784L425,785L422,785L422,783L419,783L416,785L416,788L409,792L406,795L403,796L403,796L403,796zM6,910L4,905L8,901L15,898L21,901L18,905L15,905L11,909L6,910L6,910L6,910zM870,722L875,719L879,719L879,717L890,717L890,714L892,714L892,707L896,707L898,704L896,704L894,702L903,702L905,699L909,699L918,697L927,702L929,702L931,704L931,707L929,707L929,709L940,714L942,714L942,717L946,717L950,722L950,725L953,727L957,727L966,732L968,735L976,740L976,742L979,745L979,748L983,748L983,750L985,753L985,755L987,755L992,760L994,760L994,765L998,768L1009,781L1009,783L1007,783L1007,786L1015,786L1013,788L1013,791L1020,793L1020,801L1028,801L1035,804L1037,804L1039,806L1041,806L1046,809L1050,809L1054,811L1059,811L1059,814L1061,816L1070,816L1070,824L1067,827L1067,834L1072,842L1072,844L1070,847L1067,847L1067,852L1070,852L1070,855L1067,857L1062,857L1059,859L1057,861L1053,861L1051,861L1049,858L1047,860L1044,859L1043,851L1041,850L1041,846L1043,844L1045,842L1047,831L1044,828L1042,830L1042,838L1041,843L1038,845L1032,844L1033,853L1035,854L1036,857L1032,857L1030,851L1026,853L1025,850L1026,846L1028,843L1024,843L1023,846L1019,848L1019,843L1020,839L1021,835L1023,834L1023,830L1025,828L1024,824L1021,825L1020,829L1020,831L1017,834L1011,835L1009,830L1010,827L1013,824L1015,818L1012,814L1010,818L1010,820L1009,822L1005,821L1000,817L998,818L995,817L996,814L999,811L1001,809L1000,806L997,805L996,807L995,809L993,811L989,812L986,810L985,807L987,805L992,805L992,802L988,803L985,801L983,799L983,802L982,804L975,803L972,805L969,805L968,802L969,798L967,798L966,800L963,800L963,805L961,808L960,813L959,815L957,815L957,818L953,819L953,807L957,806L955,803L952,799L947,795L948,792L951,791L957,791L960,793L961,796L962,798L963,791L961,788L961,786L965,784L968,784L972,786L982,787L986,789L989,791L992,792L989,786L983,783L972,781L969,777L972,775L972,773L971,770L968,767L966,760L963,756L962,753L958,751L954,749L949,747L945,748L945,750L950,750L959,755L960,757L962,760L962,764L957,761L955,759L956,764L959,765L960,767L960,777L956,777L956,781L953,781L947,784L942,781L944,772L943,770L940,769L938,756L938,754L937,750L936,748L934,746L934,743L937,743L937,741L938,739L936,738L929,727L926,726L925,720L925,716L922,716L921,719L921,725L924,729L927,735L928,740L928,746L925,747L910,740L905,741L904,738L907,735L904,735L903,736L903,737L901,745L897,745L896,742L892,740L890,742L888,742L885,746L881,742L875,742L872,740L868,740L866,737L862,737L857,732L855,732L853,730L851,730L851,725L846,725L844,722L842,722L838,719L831,719L831,717L827,714L821,714L821,712L816,712L814,709L810,709L808,707L801,707L801,704L803,704L805,702L805,699L808,699L801,691L799,694L795,697L790,697L788,699L771,699L769,697L764,697L760,694L756,694L756,691L754,690L749,691L745,691L743,689L734,689L723,686L699,686L691,689L682,689L682,686L678,686L675,684L665,684L665,681L662,681L660,679L658,679L658,681L656,679L656,676L647,676L647,679L643,679L641,676L639,676L635,672L633,672L631,674L628,673L624,669L621,669L615,666L613,668L610,668L608,666L608,662L607,661L606,663L604,663L602,661L603,659L601,658L598,660L596,662L578,661L568,663L567,664L567,666L569,671L571,672L571,674L568,680L570,683L573,684L574,687L574,690L571,690L568,691L564,690L562,687L560,688L561,690L541,691L539,689L537,690L534,690L532,686L530,686L530,689L528,691L526,693L526,697L528,697L528,699L526,699L524,697L522,697L522,699L519,697L517,697L517,699L515,702L509,707L506,707L506,709L504,709L504,707L505,705L502,707L500,704L502,704L502,702L500,702L498,704L500,707L498,707L496,709L491,712L491,714L489,714L487,712L483,712L485,714L472,714L472,717L467,717L463,714L461,714L461,712L465,707L476,707L476,704L480,704L487,697L483,697L476,702L470,702L467,699L463,699L463,697L467,689L470,686L472,686L474,684L476,684L476,681L478,676L480,676L480,671L478,671L478,668L476,668L476,666L480,663L487,663L504,656L506,656L506,658L522,658L522,656L519,653L517,653L514,651L515,651L515,648L496,648L491,651L485,651L485,653L483,656L474,656L472,658L467,661L465,661L465,663L467,663L467,666L461,666L459,668L457,668L454,671L450,674L450,676L452,676L450,679L448,679L444,681L440,681L440,684L441,684L444,686L444,689L439,691L437,694L433,694L433,697L431,699L428,699L426,702L422,702L422,699L420,697L420,702L415,704L411,704L411,707L409,709L400,709L402,712L400,712L398,717L398,722L400,722L400,719L413,719L413,722L420,722L424,727L420,732L415,735L407,735L407,737L405,740L402,740L402,742L398,742L396,745L400,745L398,750L392,750L392,753L389,753L389,755L387,755L387,753L383,755L381,755L379,753L377,753L377,755L374,755L374,758L370,760L368,763L364,763L361,760L359,760L359,763L357,765L357,770L355,770L355,768L353,768L351,770L348,770L348,773L344,773L335,776L335,778L340,778L340,781L333,788L329,788L325,791L325,788L322,788L322,791L318,793L316,793L316,796L314,793L312,793L309,791L309,793L305,796L305,799L307,799L307,801L301,801L301,799L294,799L294,801L296,801L296,804L292,804L292,801L290,801L290,806L286,806L286,804L283,804L281,806L281,809L283,809L288,811L286,811L283,814L281,814L279,816L279,821L277,819L276,816L275,816L275,821L273,821L273,819L270,819L268,821L264,821L262,824L255,824L253,827L251,827L251,832L249,834L247,834L245,834L245,831L249,827L247,827L247,824L242,824L238,827L236,827L236,829L234,832L227,832L225,834L225,837L223,837L221,834L216,834L216,837L210,837L210,839L208,839L203,842L197,842L197,837L199,834L199,832L192,832L190,837L190,839L188,842L184,844L182,844L182,847L184,850L179,850L179,847L177,847L177,850L176,851L175,852L169,852L169,847L166,844L166,837L169,837L171,834L175,832L175,829L179,829L182,827L186,824L188,824L199,821L208,821L212,827L216,824L225,824L223,821L223,819L225,814L227,814L227,811L229,811L231,809L236,806L238,806L240,804L242,804L247,801L251,801L251,799L257,799L257,796L262,796L264,793L270,793L275,796L275,786L277,786L281,781L281,778L283,778L286,776L290,776L294,770L299,770L301,768L301,765L303,763L303,755L305,753L305,750L309,748L305,745L305,742L307,740L307,737L316,735L320,730L318,726L315,726L314,727L312,727L303,730L299,732L294,732L294,735L286,735L283,732L283,730L279,730L277,727L279,727L279,722L283,722L283,719L281,719L279,717L279,719L276,721L275,725L272,726L273,727L268,727L268,732L273,737L275,737L275,740L270,740L270,742L266,742L264,740L262,740L262,737L255,732L255,730L253,730L253,727L249,725L244,725L244,727L242,727L242,730L240,730L238,727L234,725L229,725L229,722L231,722L229,719L227,719L225,722L218,725L216,725L215,726L214,725L212,725L212,727L208,727L205,730L201,730L201,732L199,735L184,735L186,732L190,730L192,730L192,727L188,727L188,722L190,722L192,719L195,719L192,717L190,719L184,719L182,717L182,714L184,709L188,707L190,707L188,704L186,699L184,699L184,697L182,694L179,694L177,689L175,686L177,684L177,681L175,681L175,684L173,684L171,679L173,676L175,671L179,668L184,668L186,666L179,666L175,668L171,676L169,676L166,679L166,681L169,681L169,684L169,684L169,686L169,689L166,689L162,691L156,691L151,694L145,694L143,697L127,697L125,694L121,694L121,689L119,689L117,686L114,686L112,684L108,681L108,679L97,679L95,676L95,674L88,674L86,671L91,671L99,666L101,663L102,661L106,661L108,663L119,663L119,668L123,668L123,666L125,663L130,663L132,666L132,671L136,671L138,668L143,668L143,663L136,663L134,661L138,661L136,656L134,656L130,658L130,661L110,661L110,658L99,658L97,661L95,658L93,658L95,656L97,656L93,651L88,651L88,653L82,653L82,648L80,646L73,646L73,643L78,643L78,640L75,640L75,638L69,638L69,640L67,640L67,638L65,638L67,633L67,635L75,635L73,633L71,632L69,632L68,629L78,630L80,628L80,625L78,625L78,623L82,617L84,617L91,610L93,610L95,607L106,607L104,605L108,605L108,602L104,602L101,600L101,597L106,592L108,592L108,589L112,589L110,587L114,584L119,584L123,582L127,582L134,584L136,587L140,587L145,589L153,589L164,584L164,582L173,577L173,574L182,574L182,577L203,577L203,574L205,574L214,569L216,566L216,561L214,561L214,559L212,556L212,551L208,549L205,546L199,544L197,545L195,545L197,541L210,541L214,538L216,538L216,536L212,531L208,531L208,528L205,528L201,531L199,531L199,533L188,533L187,535L186,533L184,533L184,536L175,536L175,538L171,538L169,541L166,541L164,544L164,546L162,546L160,548L158,541L156,541L149,536L149,538L145,538L147,541L153,541L153,544L151,546L149,546L147,544L143,541L138,541L136,538L130,538L127,541L123,541L119,538L117,538L117,541L99,541L99,544L91,544L88,541L67,541L67,538L60,538L60,536L58,536L58,533L60,531L60,528L56,528L52,526L52,523L54,523L57,519L58,518L69,518L67,515L65,515L54,513L47,513L47,514L45,513L30,513L28,510L26,510L23,508L13,508L13,503L15,502L17,500L19,500L19,503L30,503L30,500L28,500L30,498L43,498L45,495L45,493L52,490L56,490L62,487L65,485L67,485L65,487L67,487L69,490L80,490L84,487L80,487L78,485L75,485L78,482L82,482L86,480L99,480L106,477L108,475L123,475L130,472L132,472L134,475L134,477L132,477L132,480L130,480L130,482L129,483L130,485L130,487L132,490L162,490L166,493L175,493L177,490L182,490L184,493L186,493L188,490L190,490L190,487L192,487L192,485L208,485L208,487L210,487L210,485L208,482L201,482L197,480L195,480L197,477L201,477L203,477L204,475L205,475L208,477L210,477L212,480L218,480L221,482L223,480L231,480L231,472L223,472L223,475L218,475L218,472L205,472L203,474L201,475L197,475L190,472L188,472L186,470L186,467L190,462L195,462L192,459L175,459L171,462L173,462L179,467L179,472L177,470L169,470L164,464L166,464L169,462L169,459L147,459L143,457L134,457L134,452L132,452L132,449L125,442L123,442L123,439L119,439L108,434L104,434L97,429L93,429L91,426L84,426L82,424L71,424L71,421L67,421L65,419L60,419L54,416L56,416L60,413L65,408L65,406L67,403L67,401L65,401L65,398L75,398L75,401L86,401L91,398L121,398L123,396L130,396L134,393L136,391L140,391L140,388L143,388L145,385L147,385L149,383L151,383L153,378L153,373L156,373L156,370L164,365L166,365L169,362L173,360L175,357L177,357L179,355L182,355L182,352L186,352L190,355L201,355L203,352L214,352L214,350L216,350L225,347L227,345L229,345L234,342L236,342L238,340L242,340L247,337L249,337L251,334L262,334L260,337L253,337L257,340L260,340L262,337L279,337L279,334L301,334L305,332L307,329L314,329L314,327L316,327L318,324L320,324L320,322L325,319L329,319L333,317L333,319L338,322L348,322L348,324L353,324L355,322L355,324L361,324L361,327L357,329L348,329L346,332L348,332L353,334L359,334L361,332L366,329L370,329L370,327L372,327L374,324L374,327L381,327L387,329L385,332L385,334L396,334L398,337L400,337L405,334L407,334L409,332L411,332L415,334L418,334L422,332L433,332L439,334L454,334L454,337L450,337L446,340L446,342L444,345L450,345L448,342L459,342L459,345L467,345L467,347L474,347L476,350L483,350L483,347L493,347L498,345L500,345L504,347L517,347L517,345L528,345L530,347L543,347L548,350L556,350L556,352L563,352L563,350L567,350L567,352L569,352L576,355L591,355L593,357L606,357L613,355L615,355L619,357L634,357L634,360L643,360L649,362L669,362L671,360L701,360L701,357L704,360L712,360L721,362L723,362L725,365L727,365L730,368L736,368L738,370L749,370L751,373L753,373L756,375L758,375L760,373L762,373L766,375L766,679L779,681L782,679L792,684L795,684L799,679L818,679L818,684L816,684L816,686L818,689L823,689L829,691L829,694L831,694L831,697L834,699L836,699L846,704L851,709L859,714L862,717L862,719L864,722L862,722L862,725L866,725L868,722L870,722L870,722L870,722zM431,748L428,745L437,745L437,742L439,740L446,740L448,742L450,740L452,740L461,742L461,748L459,750L454,750L454,748L452,745L452,748L450,748L450,750L444,750L444,753L441,753L439,755L435,755L433,753L431,753L433,755L431,755L426,753L428,753L428,750L426,750L426,748L431,748L431,748L431,748zM52,679L58,676L69,676L69,679L80,679L80,686L82,689L84,689L84,691L78,691L73,694L67,694L67,697L62,697L60,694L54,694L45,689L39,689L36,686L34,686L32,684L34,681L41,681L45,684L47,684L47,681L49,681L52,679L52,679L52,679zM82,883L82,880L80,878L82,875L86,875L86,880L84,883L82,883L82,883L82,883zM73,885L73,883L71,883L71,885L69,885L69,883L67,883L71,878L73,878L80,880L80,883L75,883L73,885L73,885L73,885zM43,893L39,890L41,888L43,888L49,885L54,885L54,890L58,890L58,888L60,888L60,885L65,885L65,890L69,890L69,893L67,893L65,895L60,895L56,898L54,901L54,903L43,903L32,908L28,908L26,911L21,908L19,908L23,906L30,906L30,903L39,903L41,901L39,901L39,898L43,898L41,895L43,895L43,893L43,893L43,893zM214,849L214,842L216,839L223,839L223,842L221,842L225,847L218,847L216,848L214,849L214,849L214,849zM156,855L156,852L153,850L151,850L151,848L151,847L156,847L160,842L164,842L164,844L162,844L162,847L166,850L166,855L164,852L162,855L156,855L156,855L156,855zM147,855L147,852L145,850L146,849L147,847L149,846L150,849L149,852L151,852L151,855L153,855L145,858L145,857L147,855L147,855L147,855zM112,857L112,855L117,855L117,857L121,857L125,855L127,852L140,852L143,855L143,857L145,860L151,860L153,862L153,865L149,865L147,862L143,862L143,865L121,865L121,867L117,867L119,870L117,870L114,872L104,872L101,867L99,867L101,865L108,865L108,862L110,862L112,857L112,857L112,857zM1035,939L1035,941L1041,941L1044,944L1041,944L1041,946L1043,947L1043,949L1043,953L1041,952L1039,952L1039,946L1035,946L1028,939L1028,936L1024,936L1024,934L1022,934L1018,931L1013,927L1015,926L1016,925L1019,923L1020,924L1022,929L1024,929L1024,931L1026,934L1031,934L1031,936L1033,939L1033,936L1035,936L1035,939L1035,939L1035,939zM996,906L996,911L1000,911L1000,916L1002,918L1011,918L1011,921L1007,921L1011,926L1015,925L1015,924L1017,923L1018,921L1021,922L1024,922L1024,921L1026,921L1026,918L1024,918L1026,916L1022,911L1018,911L1017,906L1017,900L1020,893L1020,890L1022,890L1022,888L1024,888L1024,883L1020,883L1015,885L1011,885L1009,883L1005,883L1000,885L1000,883L998,880L994,880L994,883L992,883L989,880L985,880L985,883L987,885L985,888L983,888L983,890L985,893L987,893L989,895L987,895L989,898L987,898L992,903L996,903L1000,906L996,906L996,906L996,906zM9983,919L9986,922L9992,921L9997,916L9998,907L9994,908L9991,913L9983,919L9983,919L9983,919zM9808,948L9811,949L9874,949L9876,945L9874,943L9849,944L9848,940L9847,935L9844,935L9839,935L9835,937L9834,940L9831,942L9830,944L9816,944L9808,948L9808,948L9808,948zM9764,958L9763,962L9766,962L9770,960L9794,956L9796,951L9801,951L9800,948L9794,948L9792,949L9792,945L9785,945L9785,951L9783,952L9778,952L9776,950L9773,948L9770,950L9769,954L9764,958L9764,958L9764,958zM9731,954L9735,957L9733,959L9737,961L9759,960L9761,957L9762,951L9757,951L9754,954L9750,954L9747,956L9744,956L9741,953L9738,951L9732,950L9731,954L9731,954L9731,954zM9643,963L9657,971L9658,973L9662,972L9661,966L9657,962L9643,960L9643,963L9643,963L9643,963zM9606,949L9602,951L9602,956L9614,955L9616,951L9615,944L9613,942L9609,947L9606,949L9606,949L9606,949z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M247,1926L244,1928L244,1933L247,1933L251,1936L253,1936L255,1933L257,1933L257,1926L255,1926L255,1923L249,1923L249,1926L247,1926L247,1926L247,1926zM301,1956L303,1954L301,1951L299,1951L299,1949L296,1949L296,1944L294,1941L292,1941L292,1944L290,1944L286,1946L288,1949L288,1951L290,1951L290,1954L296,1954L299,1956L301,1956L301,1956L301,1956zM327,1961L329,1961L329,1959L314,1959L314,1961L322,1961L325,1964L327,1961L327,1961L327,1961zM331,1969L331,1972L335,1972L335,1974L338,1974L335,1977L338,1977L338,1979L340,1977L346,1977L348,1974L348,1972L346,1969L344,1969L344,1967L338,1967L335,1969L335,1964L331,1964L329,1967L329,1969L331,1969L331,1969L331,1969zM325,1974L325,1972L327,1972L327,1969L325,1967L320,1967L320,1969L322,1974L325,1974L325,1974L325,1974zM381,2015L377,2020L368,2020L364,2025L361,2025L361,2030L359,2030L359,2033L357,2033L357,2030L355,2030L355,2028L351,2028L351,2025L353,2023L353,2018L348,2007L348,2005L355,1997L355,1995L353,1995L353,1987L355,1989L357,1989L361,1992L361,1995L368,1995L370,1997L372,1997L372,2000L377,2005L377,2010L379,2010L381,2012L383,2012L381,2015L381,2015L381,2015z\"/>\r\n        <Path x:Name=\"PacificWestUS\" Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1494,1589L1498,1581L1500,1572L1496,1564L1497,1556L1501,1544L1507,1532L1503,1522L1349,1384L1343,1378L1345,1368L1346,1357L1345,1341L1340,1342L1340,1337L1345,1333L1344,1284L1425,1283L1425,1211L1431,1207L1433,1203L1426,1195L1425,1187L1432,1175L1439,1167L1439,1157L1438,1151L1431,1146L1422,1144L1423,1134L1420,1130L1424,1125L1425,1049L1424,1048L1273,1048L1273,1051L1271,1051L1273,1056L1280,1056L1280,1059L1282,1061L1282,1064L1280,1066L1278,1066L1275,1064L1273,1066L1273,1069L1275,1069L1273,1074L1279,1076L1279,1081L1282,1084L1284,1084L1282,1087L1282,1097L1284,1099L1284,1102L1282,1105L1278,1105L1280,1097L1278,1094L1278,1097L1275,1097L1273,1094L1275,1092L1278,1092L1278,1089L1280,1089L1279,1086L1278,1084L1275,1087L1275,1082L1274,1080L1273,1079L1273,1082L1271,1079L1271,1077L1269,1077L1269,1079L1267,1079L1262,1077L1236,1077L1236,1074L1234,1074L1232,1071L1223,1071L1223,1069L1219,1069L1219,1082L1221,1084L1221,1087L1226,1087L1226,1092L1228,1092L1228,1097L1230,1099L1230,1102L1232,1105L1232,1107L1234,1112L1236,1112L1239,1115L1241,1115L1239,1117L1234,1117L1234,1120L1236,1122L1243,1122L1245,1125L1241,1125L1239,1128L1241,1128L1241,1130L1240,1132L1236,1130L1236,1133L1239,1138L1254,1138L1254,1140L1239,1140L1239,1143L1241,1143L1241,1148L1239,1150L1239,1156L1241,1156L1241,1158L1239,1161L1239,1163L1241,1161L1241,1163L1239,1163L1239,1181L1236,1184L1236,1196L1234,1207L1234,1222L1232,1222L1232,1227L1230,1232L1228,1235L1228,1240L1226,1245L1223,1247L1223,1252L1228,1258L1228,1260L1226,1260L1226,1268L1228,1270L1228,1275L1230,1275L1232,1278L1232,1286L1234,1288L1236,1293L1236,1298L1234,1303L1234,1316L1232,1319L1230,1319L1230,1321L1228,1324L1228,1334L1230,1337L1232,1337L1232,1339L1236,1339L1239,1344L1243,1349L1243,1352L1245,1352L1245,1360L1243,1360L1243,1365L1245,1367L1245,1370L1247,1372L1247,1375L1245,1377L1247,1380L1252,1383L1256,1388L1256,1390L1258,1390L1258,1393L1262,1393L1265,1398L1267,1400L1267,1405L1269,1408L1271,1408L1280,1413L1282,1413L1281,1411L1280,1411L1280,1405L1282,1403L1284,1403L1284,1405L1286,1405L1284,1408L1283,1410L1284,1413L1288,1418L1288,1421L1290,1421L1291,1426L1284,1421L1282,1421L1284,1418L1284,1416L1280,1416L1280,1426L1282,1426L1282,1436L1288,1441L1291,1444L1293,1444L1293,1441L1297,1441L1297,1444L1299,1446L1299,1454L1295,1454L1295,1459L1297,1459L1297,1464L1299,1467L1301,1467L1308,1474L1308,1474L1308,1477L1308,1477L1310,1477L1310,1479L1312,1482L1314,1485L1316,1485L1318,1487L1319,1490L1321,1492L1323,1492L1324,1493L1325,1495L1325,1500L1325,1500L1326,1501L1327,1502L1328,1501L1329,1500L1329,1502L1332,1502L1332,1502L1331,1505L1330,1508L1330,1521L1330,1521L1332,1520L1334,1520L1334,1523L1336,1523L1336,1523L1336,1525L1338,1525L1342,1523L1345,1523L1349,1525L1362,1525L1364,1528L1366,1529L1368,1530L1368,1533L1368,1533L1371,1533L1371,1536L1371,1536L1373,1536L1375,1537L1377,1538L1390,1538L1390,1538L1390,1541L1392,1541L1392,1541L1392,1548L1397,1548L1397,1546L1397,1546L1399,1546L1401,1548L1403,1548L1403,1548L1403,1551L1403,1551L1405,1551L1407,1553L1410,1553L1412,1555L1414,1556L1414,1556L1414,1558L1418,1561L1420,1564L1425,1574L1425,1574L1425,1581L1427,1581L1428,1583L1429,1584L1429,1584L1427,1584L1427,1584L1428,1585L1429,1587L1446,1587L1450,1585L1453,1584L1477,1584L1479,1583L1481,1581L1494,1581L1494,1581L1494,1587L1492,1589L1492,1589L1494,1589L1494,1589zM1347,1538L1342,1538L1342,1538L1342,1541L1345,1541L1345,1541L1345,1543L1345,1543L1347,1543L1348,1542L1349,1541L1349,1541L1347,1538zM1362,1538L1362,1538L1360,1541L1351,1541L1351,1536L1353,1536L1355,1537L1358,1538L1362,1538z\"/>\r\n        <Path x:Name=\"MountainWestUS\" Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1814,1453L1843,1453L1843,1318L1785,1319L1786,1048L1424,1048L1425,1049L1424,1125L1420,1130L1423,1134L1422,1144L1431,1146L1438,1151L1439,1157L1439,1167L1432,1175L1425,1187L1426,1195L1433,1203L1431,1207L1425,1211L1425,1283L1344,1284L1345,1333L1340,1337L1340,1342L1345,1341L1346,1357L1345,1368L1343,1378L1349,1384L1503,1522L1507,1532L1501,1544L1497,1556L1496,1564L1500,1572L1498,1581L1494,1589L1494,1589L1492,1589L1492,1589L1494,1589L1514,1597L1520,1597L1524,1599L1533,1602L1542,1607L1546,1607L1598,1627L1676,1627L1676,1612L1726,1612L1814,1612L1814,1453z\"/>\r\n        <Path x:Name=\"NorthCentralUS\" Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2153,1099L2157,1094L2180,1085L2185,1082L2181,1082L2181,1079L2179,1079L2179,1077L2174,1079L2161,1079L2159,1077L2159,1074L2155,1074L2150,1077L2148,1079L2144,1079L2142,1082L2142,1079L2135,1079L2135,1077L2133,1077L2131,1074L2127,1074L2127,1071L2124,1071L2124,1069L2122,1069L2120,1071L2118,1071L2118,1074L2116,1074L2114,1071L2114,1069L2109,1066L2107,1066L2107,1064L2101,1061L2085,1061L2085,1064L2077,1064L2077,1061L2064,1061L2064,1059L2053,1059L2051,1056L2051,1048L2049,1046L2049,1038L2040,1038L2040,1036L2038,1036L2038,1048L1786,1048L1785,1319L1843,1318L1843,1452L1845,1453L2056,1453L2057,1476L2170,1475L2170,1483L2168,1492L2175,1496L2181,1493L2185,1487L2190,1477L2190,1463L2194,1458L2202,1457L2208,1452L2208,1445L2201,1448L2198,1446L2197,1435L2200,1433L2199,1425L2195,1421L2183,1414L2177,1408L2180,1401L2184,1397L2180,1394L2178,1388L2174,1385L2167,1383L2159,1376L2159,1366L2150,1359L2142,1348L2141,1337L2148,1320L2154,1310L2155,1301L2162,1299L2172,1297L2176,1289L2180,1279L2176,1270L2163,1261L2151,1249L2149,1233L2143,1220L2134,1207L2120,1196L2103,1183L2101,1171L2103,1161L2104,1158L2100,1157L2099,1150L2109,1140L2119,1138L2119,1125L2123,1123L2122,1123L2153,1099z\"/>\r\n        <Path x:Name=\"MidwestUS\" Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2435,1281L2421,1286L2416,1291L2409,1291L2398,1295L2394,1297L2389,1297L2382,1292L2374,1291L2366,1289L2364,1286L2364,1282L2369,1281L2371,1278L2371,1275L2373,1270L2373,1268L2378,1268L2378,1265L2382,1265L2382,1263L2384,1263L2384,1260L2389,1260L2389,1258L2391,1258L2391,1247L2393,1245L2393,1244L2390,1242L2390,1237L2383,1213L2369,1213L2366,1219L2357,1222L2351,1220L2351,1212L2357,1208L2366,1201L2367,1182L2364,1176L2366,1172L2334,1157L2321,1156L2318,1162L2322,1167L2312,1168L2309,1172L2309,1180L2304,1183L2304,1170L2301,1176L2289,1186L2286,1187L2284,1201L2280,1205L2278,1232L2285,1244L2287,1258L2282,1271L2276,1279L2257,1291L2249,1285L2245,1273L2241,1236L2245,1221L2244,1213L2250,1197L2266,1171L2267,1166L2261,1169L2243,1192L2236,1194L2242,1180L2261,1155L2267,1154L2276,1149L2273,1156L2276,1159L2284,1150L2307,1144L2320,1147L2325,1152L2330,1149L2330,1146L2343,1147L2350,1145L2345,1140L2343,1135L2343,1133L2345,1133L2345,1130L2337,1130L2334,1133L2332,1133L2331,1130L2330,1131L2322,1130L2319,1129L2323,1122L2314,1121L2308,1124L2283,1127L2276,1131L2270,1132L2262,1130L2254,1131L2252,1127L2242,1119L2232,1116L2224,1122L2224,1117L2234,1104L2243,1099L2222,1104L2213,1110L2211,1114L2198,1119L2192,1117L2186,1121L2177,1123L2171,1127L2162,1124L2156,1126L2157,1124L2163,1115L2154,1115L2141,1122L2122,1123L2122,1123L2123,1123L2119,1125L2119,1138L2109,1140L2099,1150L2100,1157L2104,1158L2103,1161L2101,1171L2103,1183L2120,1196L2134,1207L2143,1220L2149,1233L2151,1249L2163,1261L2176,1270L2180,1279L2176,1289L2172,1297L2162,1299L2155,1301L2154,1310L2148,1320L2141,1337L2142,1348L2150,1359L2159,1366L2159,1376L2167,1383L2174,1385L2178,1388L2180,1394L2184,1397L2180,1401L2177,1408L2183,1414L2195,1421L2199,1425L2200,1433L2197,1435L2198,1446L2201,1448L2208,1445L2208,1446L2209,1444L2226,1443L2230,1433L2239,1422L2246,1420L2250,1416L2256,1421L2265,1421L2273,1415L2280,1409L2285,1415L2292,1412L2293,1407L2301,1402L2308,1394L2315,1393L2327,1378L2344,1390L2365,1392L2382,1396L2387,1399L2395,1398L2399,1388L2400,1382L2408,1381L2415,1374L2431,1363L2438,1349L2442,1334L2444,1325L2448,1322L2447,1277L2446,1278L2435,1281z\"/>\r\n        <Path x:Name=\"NorthEastUS\" Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2594,1367L2597,1370L2601,1370L2601,1375L2599,1375L2599,1377L2603,1377L2607,1372L2607,1370L2610,1367L2610,1366L2612,1365L2616,1365L2616,1362L2618,1362L2618,1360L2614,1360L2618,1357L2623,1352L2620,1352L2620,1349L2623,1344L2625,1342L2627,1334L2627,1329L2618,1329L2618,1326L2620,1321L2620,1326L2622,1324L2624,1321L2625,1324L2629,1324L2629,1321L2633,1321L2633,1324L2636,1324L2638,1321L2642,1321L2651,1319L2659,1319L2662,1316L2670,1316L2672,1313L2679,1311L2679,1309L2675,1311L2670,1311L2670,1313L2668,1314L2664,1314L2675,1306L2672,1306L2664,1311L2651,1311L2651,1314L2636,1314L2633,1316L2631,1316L2631,1314L2633,1314L2633,1311L2638,1311L2640,1309L2644,1309L2644,1306L2651,1306L2655,1301L2657,1301L2658,1303L2659,1301L2677,1301L2683,1298L2685,1298L2685,1301L2688,1301L2690,1298L2696,1298L2698,1296L2698,1286L2701,1288L2703,1288L2703,1291L2701,1293L2701,1296L2703,1293L2711,1293L2716,1291L2718,1286L2720,1288L2720,1293L2724,1293L2724,1291L2731,1291L2733,1288L2739,1288L2739,1281L2737,1281L2737,1286L2731,1286L2729,1288L2724,1286L2722,1286L2722,1281L2720,1281L2720,1278L2719,1277L2720,1275L2718,1270L2716,1270L2714,1268L2714,1270L2711,1270L2709,1268L2709,1265L2714,1260L2716,1260L2720,1258L2722,1258L2722,1255L2716,1255L2716,1245L2718,1245L2718,1242L2722,1237L2720,1237L2722,1235L2724,1235L2724,1232L2726,1232L2726,1230L2729,1230L2729,1227L2731,1227L2732,1226L2731,1224L2731,1222L2733,1219L2735,1219L2737,1217L2739,1217L2742,1219L2742,1222L2744,1219L2746,1219L2746,1217L2748,1217L2748,1214L2750,1214L2750,1217L2752,1217L2752,1214L2755,1212L2757,1212L2759,1214L2763,1212L2763,1204L2765,1199L2768,1196L2770,1196L2770,1201L2776,1201L2778,1201L2777,1199L2779,1197L2781,1199L2782,1198L2783,1196L2789,1196L2789,1199L2791,1201L2791,1199L2794,1199L2798,1194L2800,1196L2804,1194L2804,1191L2815,1191L2820,1186L2822,1186L2822,1184L2820,1184L2820,1181L2817,1179L2815,1173L2813,1173L2811,1176L2809,1173L2809,1171L2807,1171L2809,1168L2807,1163L2809,1163L2809,1161L2804,1161L2802,1158L2798,1158L2798,1150L2800,1148L2798,1138L2798,1112L2796,1112L2796,1110L2794,1110L2794,1107L2787,1105L2787,1102L2783,1102L2772,1107L2763,1107L2763,1099L2759,1099L2757,1102L2752,1105L2746,1112L2746,1115L2737,1125L2737,1128L2735,1130L2735,1133L2733,1135L2731,1135L2731,1138L2729,1140L2729,1148L2731,1148L2731,1150L2726,1156L2724,1156L2722,1158L2720,1158L2718,1161L2718,1166L2714,1171L2709,1168L2707,1171L2698,1171L2698,1176L2696,1176L2696,1179L2636,1179L2629,1181L2618,1181L2607,1179L2603,1179L2594,1184L2590,1184L2590,1186L2588,1186L2584,1189L2584,1191L2581,1191L2579,1194L2577,1194L2577,1196L2575,1196L2575,1199L2573,1199L2571,1201L2568,1201L2560,1207L2560,1209L2558,1209L2562,1212L2563,1217L2564,1222L2563,1226L2559,1228L2552,1231L2547,1233L2542,1235L2534,1237L2529,1237L2520,1234L2506,1231L2498,1233L2492,1235L2486,1239L2486,1245L2488,1247L2490,1247L2489,1249L2491,1251L2489,1252L2488,1252L2483,1256L2477,1262L2472,1265L2460,1270L2447,1278L2448,1321L2447,1353L2570,1354L2584,1343L2587,1345L2589,1344L2591,1345L2583,1352L2584,1355L2585,1359L2586,1360L2590,1365L2594,1367zM2783,1199L2781,1201L2781,1204L2783,1204L2787,1201L2787,1199L2785,1199L2783,1199zM2826,1186L2828,1187L2828,1189L2826,1191L2824,1191L2824,1186L2826,1186z\"/>\r\n        <Path x:Name=\"SouthCentralUS\" Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2146,1644L2140,1636L2149,1604L2154,1600L2150,1586L2144,1558L2149,1539L2161,1530L2162,1519L2174,1508L2176,1495L2175,1496L2168,1492L2170,1483L2170,1475L2057,1476L2056,1453L1845,1453L1843,1452L1843,1453L1814,1453L1814,1612C1814,1612 1726,1612 1726,1612L1728,1615L1728,1617L1730,1617L1730,1620L1732,1622L1735,1622L1735,1625L1739,1625L1741,1627L1741,1630L1743,1630L1743,1632L1745,1632L1748,1635L1750,1635L1750,1638L1754,1643L1758,1645L1763,1645L1763,1648L1765,1650L1767,1650L1769,1653L1769,1658L1774,1663L1774,1673L1778,1681L1780,1683L1782,1683L1784,1686L1786,1686L1786,1689L1789,1689L1793,1694L1795,1694L1806,1699L1808,1701L1810,1701L1812,1704L1817,1704L1819,1699L1825,1691L1825,1689L1830,1678L1834,1678L1838,1676L1841,1673L1841,1676L1856,1676L1856,1678L1864,1678L1867,1681L1867,1683L1871,1686L1873,1686L1877,1691L1882,1694L1886,1699L1886,1706L1888,1706L1888,1709L1890,1709L1890,1714L1893,1714L1893,1717L1895,1719L1895,1722L1897,1727L1899,1729L1901,1729L1901,1732L1903,1732L1906,1737L1908,1740L1908,1742L1910,1742L1910,1745L1912,1745L1912,1747L1916,1747L1916,1750L1919,1750L1919,1768L1923,1773L1925,1773L1925,1775L1927,1778L1927,1783L1929,1788L1934,1788L1938,1791L1940,1791L1942,1793L1947,1793L1951,1798L1953,1798L1958,1801L1960,1801L1960,1798L1964,1798L1968,1801L1971,1801L1975,1806L1977,1806L1977,1803L1984,1803L1984,1798L1981,1796L1981,1798L1980,1799L1979,1798L1979,1793L1977,1788L1975,1788L1975,1778L1973,1775L1973,1773L1971,1770L1971,1768L1975,1768L1975,1760L1968,1760L1968,1757L1966,1755L1968,1755L1971,1757L1973,1755L1973,1757L1977,1757L1979,1755L1978,1751L1980,1749L1982,1745L1978,1744L1977,1742L1973,1742L1973,1740L1977,1740L1981,1742L1986,1734L1981,1734L1981,1732L1984,1729L1986,1729L1988,1732L1990,1732L1994,1727L1994,1724L1992,1724L1992,1719L1994,1722L1997,1722L1997,1724L1999,1724L2003,1722L1997,1714L1997,1712L1999,1712L1999,1714L2001,1714L2001,1717L2005,1717L2005,1714L2003,1714L2003,1712L2005,1712L2007,1714L2012,1714L2012,1717L2014,1714L2016,1714L2016,1717L2018,1717L2018,1714L2020,1712L2027,1712L2033,1706L2038,1701L2040,1701L2040,1696L2046,1694L2046,1689L2042,1683L2042,1678L2044,1681L2046,1678L2051,1678L2051,1681L2048,1684L2052,1686L2057,1686L2066,1681L2075,1681L2077,1678L2098,1678L2101,1681L2103,1681L2105,1683L2111,1683L2118,1686L2122,1683L2124,1683L2122,1681L2122,1678L2129,1676L2131,1676L2131,1678L2137,1678L2140,1683L2140,1686L2142,1686L2150,1691L2144,1691L2144,1694L2146,1694L2148,1696L2155,1696L2157,1699L2163,1699L2170,1691L2170,1694L2174,1694L2174,1701L2176,1699L2179,1699L2181,1696L2181,1689L2179,1689L2176,1686L2176,1683L2179,1686L2183,1686L2187,1689L2189,1691L2187,1691L2189,1694L2194,1694L2194,1696L2196,1696L2200,1701L2201,1702L2202,1700L2203,1700L2205,1701L2209,1699L2209,1696L2205,1691L2200,1691L2192,1686L2189,1683L2189,1681L2192,1681L2196,1676L2198,1676L2198,1678L2200,1673L2198,1668L2196,1668L2194,1671L2194,1673L2187,1673L2187,1668L2181,1668L2179,1671L2176,1671L2172,1668L2170,1668L2170,1663L2174,1658L2181,1658L2181,1661L2183,1661L2187,1663L2189,1663L2194,1666L2196,1663L2197,1664L2193,1646L2146,1644z\"/>\r\n        <Path x:Name=\"EastUS\" Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2592,1390L2594,1385L2592,1383L2588,1372L2586,1370L2586,1366L2584,1363L2582,1360L2581,1356L2579,1351L2589,1344L2587,1345L2584,1343L2570,1354L2447,1353L2448,1322L2444,1325L2442,1334L2438,1349L2431,1363L2415,1374L2408,1381L2400,1382L2399,1388L2395,1398L2387,1399L2385,1398L2386,1409L2391,1416L2393,1426L2405,1435L2403,1445L2381,1454L2366,1467L2416,1469L2411,1480L2408,1485L2400,1486L2395,1491L2392,1486L2389,1488L2382,1495L2355,1505L2354,1514L2352,1519L2310,1520L2307,1516L2305,1519L2307,1539L2311,1567L2314,1575L2317,1581L2316,1588L2319,1597L2323,1608L2320,1617L2319,1621L2322,1629L2321,1642L2321,1647L2250,1647L2249,1654L2252,1659L2254,1655L2256,1655L2254,1658L2254,1661L2261,1661L2263,1658L2259,1658L2261,1655L2261,1653L2265,1653L2267,1655L2265,1655L2265,1658L2267,1658L2272,1655L2274,1655L2276,1658L2278,1655L2280,1655L2280,1653L2287,1653L2287,1655L2289,1655L2289,1658L2287,1658L2289,1661L2291,1661L2295,1663L2298,1663L2298,1661L2300,1661L2302,1663L2302,1666L2304,1666L2306,1668L2308,1673L2308,1676L2311,1676L2311,1677L2313,1678L2313,1681L2315,1681L2319,1678L2328,1678L2328,1676L2330,1676L2332,1673L2339,1673L2337,1671L2339,1668L2341,1668L2343,1666L2347,1668L2350,1668L2352,1671L2356,1671L2358,1673L2358,1676L2360,1676L2360,1678L2363,1681L2365,1681L2365,1686L2367,1686L2373,1694L2373,1696L2378,1696L2380,1699L2382,1699L2382,1704L2386,1706L2386,1709L2384,1709L2386,1712L2386,1722L2384,1727L2382,1729L2382,1737L2380,1737L2380,1742L2384,1747L2386,1745L2386,1740L2384,1740L2384,1734L2391,1737L2393,1737L2393,1742L2386,1750L2386,1752L2389,1755L2389,1760L2391,1765L2393,1768L2393,1770L2395,1773L2395,1775L2397,1778L2397,1775L2399,1775L2399,1770L2404,1770L2402,1773L2402,1780L2399,1778L2399,1780L2402,1783L2406,1783L2406,1785L2408,1785L2408,1796L2410,1796L2410,1803L2417,1803L2421,1806L2421,1808L2423,1808L2428,1819L2428,1821L2430,1821L2430,1824L2428,1824L2428,1829L2441,1829L2443,1826L2447,1826L2449,1824L2449,1816L2451,1816L2451,1811L2454,1808L2456,1803L2458,1768L2456,1768L2456,1765L2454,1763L2451,1755L2449,1752L2449,1745L2445,1740L2443,1734L2441,1724L2441,1719L2443,1719L2443,1714L2441,1712L2436,1704L2432,1699L2432,1696L2425,1678L2425,1676L2423,1673L2423,1668L2421,1663L2421,1655L2419,1653L2419,1648L2418,1646L2418,1641L2419,1640L2421,1638L2421,1635L2419,1635L2419,1630L2421,1630L2421,1632L2423,1630L2423,1625L2425,1622L2423,1622L2423,1620L2428,1620L2428,1615L2432,1610L2434,1610L2436,1607L2436,1604L2434,1604L2434,1602L2436,1599L2437,1600L2438,1599L2441,1599L2441,1597L2445,1597L2447,1594L2447,1589L2451,1589L2454,1587L2458,1584L2462,1584L2462,1579L2467,1579L2471,1574L2471,1571L2477,1571L2477,1569L2482,1569L2482,1561L2488,1553L2488,1551L2490,1551L2490,1548L2493,1548L2499,1543L2514,1543L2519,1538L2519,1533L2521,1530L2523,1530L2523,1528L2527,1528L2527,1525L2529,1523L2530,1524L2534,1520L2536,1520L2538,1518L2540,1518L2549,1515L2551,1513L2553,1515L2558,1515L2560,1513L2560,1510L2562,1510L2564,1507L2560,1507L2558,1510L2558,1507L2553,1507L2553,1505L2555,1502L2551,1502L2551,1500L2558,1500L2558,1497L2555,1497L2547,1495L2542,1492L2542,1490L2545,1490L2546,1492L2553,1492L2553,1490L2555,1490L2555,1495L2566,1495L2568,1492L2571,1492L2571,1490L2573,1487L2577,1487L2578,1485L2578,1479L2577,1477L2575,1474L2573,1477L2571,1477L2571,1474L2562,1474L2562,1477L2560,1477L2560,1474L2557,1473L2555,1475L2548,1475L2550,1472L2552,1471L2554,1472L2560,1472L2560,1469L2562,1469L2564,1472L2566,1471L2569,1470L2568,1468L2569,1466L2571,1467L2573,1467L2576,1467L2576,1465L2574,1462L2572,1460L2574,1459L2574,1457L2573,1451L2573,1446L2571,1446L2571,1444L2562,1444L2560,1445L2558,1444L2555,1441L2553,1441L2553,1439L2551,1436L2547,1434L2553,1434L2553,1436L2558,1441L2562,1441L2564,1439L2560,1434L2560,1428L2562,1431L2564,1431L2564,1426L2560,1423L2560,1421L2564,1413L2564,1411L2560,1411L2558,1408L2553,1405L2551,1403L2545,1403L2542,1399L2538,1397L2532,1397L2534,1388L2541,1381L2543,1382L2536,1389L2536,1393L2542,1395L2547,1400L2555,1400L2556,1403L2560,1406L2561,1403L2560,1403L2560,1400L2559,1398L2560,1398L2560,1395L2558,1393L2556,1392L2555,1390L2555,1380L2558,1380L2560,1375L2560,1372L2558,1372L2558,1370L2555,1370L2555,1367L2558,1367L2560,1365L2561,1364L2560,1362L2564,1362L2564,1365L2566,1365L2564,1370L2564,1377L2566,1380L2567,1381L2565,1381L2564,1383L2561,1383L2562,1384L2564,1385L2566,1385L2569,1389L2568,1390L2566,1390L2564,1393L2562,1393L2564,1398L2565,1398L2566,1398L2568,1400L2571,1400L2572,1401L2572,1402L2575,1405L2575,1411L2581,1411L2579,1413L2579,1416L2575,1421L2573,1421L2573,1426L2571,1431L2571,1434L2573,1436L2575,1434L2575,1428L2579,1425L2579,1426L2581,1426L2581,1423L2584,1418L2584,1416L2586,1416L2588,1411L2588,1405L2590,1405L2592,1400L2594,1400L2597,1398L2597,1390L2592,1390z\"/>\r\n        <Path x:Name=\"SouthEastUS\" Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2250,1647L2321,1647L2321,1642L2322,1629L2319,1621L2320,1617L2323,1608L2319,1597L2316,1588L2317,1581L2314,1575L2311,1567L2307,1539L2305,1519L2307,1516L2310,1520L2352,1519L2354,1514L2355,1505L2382,1495L2389,1488L2392,1486L2395,1491L2400,1486L2408,1485L2411,1480L2416,1469L2366,1467L2381,1454L2403,1445L2405,1435L2393,1426L2391,1416L2386,1409L2385,1398L2382,1396L2365,1392L2344,1390L2327,1378L2315,1393L2308,1394L2301,1402L2293,1407L2292,1412L2285,1415L2280,1409L2273,1415L2265,1421L2256,1421L2250,1416L2246,1420L2239,1422L2230,1433L2226,1443L2209,1444L2208,1446L2208,1452L2202,1457L2194,1458L2190,1463L2190,1477L2185,1487L2181,1493L2176,1495L2174,1508L2162,1519L2161,1530L2149,1539L2144,1558L2150,1586L2154,1600L2149,1604L2140,1636L2146,1644L2193,1646L2197,1664L2200,1661L2202,1661L2211,1658L2212,1657L2213,1658L2222,1658L2224,1661L2226,1658L2233,1658L2233,1661L2235,1661L2235,1650L2237,1648L2239,1648L2239,1658L2241,1658L2243,1661L2241,1663L2248,1663L2252,1659L2249,1654L2250,1647z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3280,2589L3283,2590L3284,2588L3284,2585L3284,2582L3282,2580L3282,2577L3279,2576L3278,2578L3278,2580L3278,2582L3280,2589zM3283,2644L3282,2646L3283,2649L3295,2649L3304,2644L3303,2638L3300,2637L3297,2640L3286,2643L3283,2644zM3009,3062L3015,3058L3016,3051L3022,3043L3014,3027L3015,3008L3008,3000L2990,3001L2982,2995L2976,2992L2974,2963L2975,2944L2975,2932L3057,2928L3063,2900L3090,2953L3119,2963L3291,2964L3286,2989L3278,3004L3276,3035L3280,3058L3290,3049L3287,3060L3309,3067L3317,3059L3324,3055L3330,3070L3345,3068L3355,3072L3395,3059L3395,3042L3399,3033L3400,3020L3388,3014L3389,3003L3396,2997L3394,2988L3405,2979L3389,2955L3370,2935L3376,2928L3377,2918L3383,2917L3389,2920L3390,2913L3383,2909L3385,2899L3378,2906L3359,2887L3354,2841L3345,2824L3332,2827L3325,2818L3343,2808L3368,2772L3368,2756L3383,2732L3395,2698L3401,2686L3391,2682L3388,2679L3368,2668L3352,2666L3351,2668L3344,2673L3325,2703L3320,2704L3312,2717L3308,2732L3304,2733L3308,2713L3313,2702L3322,2697L3335,2664L3328,2656L3314,2654L3309,2657L3306,2659L3282,2654L3279,2656L3276,2656L3273,2660L3272,2668L3271,2671L3268,2670L3270,2663L3270,2658L3273,2655L3274,2653L3273,2651L3270,2650L3267,2650L3265,2653L3264,2658L3262,2662L3259,2665L3258,2670L3255,2669L3255,2664L3259,2659L3259,2656L3265,2645L3271,2643L3276,2637L3278,2631L3281,2630L3283,2627L3285,2622L3294,2617L3294,2614L3296,2612L3294,2612L3294,2609L3296,2609L3296,2599L3292,2594L3287,2591L3279,2591L3279,2589L3277,2584L3274,2581L3270,2571L3270,2563L3268,2561L3268,2558L3266,2551L3264,2551L3264,2525L3259,2520L3259,2517L3251,2507L3248,2507L3248,2510L3246,2512L3246,2520L3244,2520L3244,2522L3242,2522L3242,2525L3238,2530L3238,2533L3233,2538L3233,2543L3231,2545L3229,2545L3227,2548L3227,2556L3225,2558L3222,2563L3222,2568L3220,2568L3220,2571L3216,2576L3212,2579L3212,2581L3209,2581L3207,2579L3203,2579L3203,2576L3201,2576L3201,2573L3196,2579L3194,2579L3190,2576L3190,2573L3188,2573L3184,2576L3184,2579L3179,2581L3173,2581L3168,2579L3166,2579L3166,2576L3162,2576L3162,2571L3158,2571L3155,2568L3151,2568L3134,2573L3129,2571L3129,2568L3127,2568L3123,2573L3123,2579L3125,2579L3129,2584L3129,2589L3127,2591L3123,2591L3121,2589L3097,2589L3097,2586L3093,2586L3093,2589L3090,2586L3088,2586L3086,2589L3086,2591L3084,2594L3084,2596L3080,2596L3077,2594L3077,2596L3073,2596L3071,2599L3071,2602L3067,2602L3062,2599L3060,2602L3060,2604L3056,2604L3058,2607L3058,2609L3051,2609L3051,2612L3045,2612L3045,2609L3043,2609L3041,2607L3036,2607L3032,2599L3030,2596L3028,2596L3025,2594L3023,2594L3025,2591L3021,2591L3021,2584L3023,2579L3023,2576L3019,2576L3019,2571L3017,2568L3017,2566L3015,2563L3015,2556L3017,2553L3017,2545L3021,2540L3021,2538L3019,2535L3028,2525L3028,2520L3023,2515L3023,2507L3021,2505L3010,2505L3010,2502L3012,2502L3012,2500L3015,2497L3015,2484L3012,2482L3012,2479L3008,2479L3006,2482L2997,2482L2999,2487L2999,2489L2997,2492L2997,2494L2995,2494L2991,2497L2989,2500L2989,2505L2978,2505L2973,2507L2973,2512L2965,2512L2965,2515L2958,2515L2958,2517L2952,2517L2952,2515L2947,2515L2943,2520L2939,2520L2939,2533L2937,2533L2934,2535L2926,2525L2926,2522L2919,2522L2919,2525L2917,2525L2915,2522L2906,2522L2906,2525L2902,2525L2902,2520L2898,2515L2891,2515L2889,2517L2887,2517L2887,2512L2882,2512L2882,2515L2885,2515L2885,2520L2887,2520L2887,2522L2891,2528L2893,2528L2898,2533L2898,2535L2900,2535L2898,2538L2898,2548L2900,2551L2900,2553L2902,2556L2902,2558L2904,2563L2904,2568L2902,2568L2902,2571L2921,2571L2921,2581L2915,2581L2915,2584L2911,2586L2904,2586L2904,2589L2902,2589L2902,2599L2900,2599L2895,2604L2893,2602L2889,2604L2889,2607L2887,2607L2885,2609L2885,2612L2882,2612L2882,2609L2880,2609L2876,2614L2872,2614L2872,2622L2867,2622L2865,2624L2865,2627L2863,2630L2861,2630L2861,2624L2863,2624L2863,2622L2861,2622L2861,2619L2856,2619L2852,2622L2850,2622L2850,2624L2848,2624L2846,2627L2839,2627L2824,2612L2817,2612L2817,2604L2820,2604L2820,2599L2817,2599L2817,2594L2815,2591L2815,2589L2813,2589L2813,2586L2811,2584L2811,2581L2807,2581L2807,2584L2804,2584L2802,2586L2802,2589L2800,2591L2798,2591L2798,2594L2791,2594L2791,2589L2789,2589L2789,2586L2787,2586L2787,2589L2785,2591L2785,2594L2746,2594L2744,2596L2742,2596L2742,2617L2757,2617L2761,2622L2761,2630L2759,2632L2757,2632L2757,2630L2752,2627L2746,2630L2744,2630L2744,2632L2735,2632L2735,2658L2737,2658L2744,2665L2746,2665L2746,2668L2748,2668L2748,2675L2750,2681L2750,2683L2752,2683L2752,2688L2755,2691L2755,2696L2752,2701L2739,2790L2737,2793L2731,2793L2729,2790L2729,2788L2726,2785L2724,2785L2724,2788L2714,2788L2714,2790L2711,2795L2709,2795L2707,2793L2705,2793L2703,2795L2698,2795L2692,2798L2685,2798L2679,2806L2675,2806L2675,2808L2672,2806L2672,2808L2670,2808L2670,2811L2668,2813L2664,2816L2662,2818L2657,2818L2657,2826L2655,2828L2655,2839L2653,2841L2651,2841L2651,2844L2649,2849L2649,2857L2651,2859L2651,2864L2649,2864L2649,2867L2644,2867L2638,2872L2633,2877L2631,2882L2631,2885L2633,2885L2633,2892L2629,2892L2629,2895L2627,2897L2627,2900L2629,2900L2629,2902L2631,2902L2631,2905L2636,2905L2636,2908L2633,2908L2633,2913L2636,2913L2638,2918L2638,2920L2640,2923L2640,2925L2642,2928L2644,2933L2646,2936L2649,2936L2651,2938L2653,2943L2655,2943L2655,2951L2651,2956L2649,2956L2649,2959L2662,2959L2666,2961L2672,2961L2672,2964L2675,2966L2675,2971L2677,2971L2677,2979L2701,2979L2705,2976L2705,2974L2707,2974L2709,2971L2711,2971L2714,2966L2716,2966L2722,2959L2722,2964L2720,2964L2720,3010L2724,3010L2724,3012L2733,3012L2735,3010L2739,3010L2739,3007L2744,3010L2763,3010L2770,3012L2772,3015L2778,3015L2778,3012L2785,3012L2785,3010L2789,3004L2789,3002L2791,3002L2791,2999L2798,2999L2800,3002L2804,2997L2804,2994L2807,2994L2811,2989L2815,2989L2817,2987L2820,2987L2822,2984L2822,2981L2824,2981L2828,2976L2830,2976L2830,2974L2837,2974L2843,2971L2854,2971L2859,2974L2861,2974L2861,2969L2865,2969L2867,2971L2867,2989L2865,2989L2865,2994L2863,2994L2863,2999L2865,3002L2867,3007L2867,3012L2865,3015L2865,3020L2867,3025L2867,3027L2869,3027L2872,3030L2872,3033L2869,3033L2869,3035L2872,3035L2874,3033L2874,3035L2876,3038L2876,3045L2882,3045L2882,3048L2887,3050L2889,3050L2889,3055L2891,3055L2891,3058L2893,3058L2895,3061L2908,3061L2908,3058L2913,3058L2919,3063L2919,3066L2930,3066L2930,3068L2934,3073L2937,3073L2939,3076L2941,3076L2941,3078L2947,3081L2956,3081L2956,3086L2958,3089L2960,3089L2963,3091L2963,3094L2986,3094L2989,3096L2993,3099L2995,3099L2996,3100L3007,3081L3009,3062zM3296,2652L3298,2655L3304,2655L3308,2654L3311,2652L3310,2649L3304,2648L3301,2649L3296,2652zM3290,2635L3282,2642L3279,2646L3281,2649L3280,2651L3276,2651L3274,2646L3279,2640L3281,2633L3287,2630L3290,2631L3290,2635z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3197,3403L3209,3388L3241,3359L3265,3310L3278,3270L3322,3252L3352,3247L3360,3233L3369,3215L3365,3211L3358,3208L3367,3200L3369,3189L3362,3182L3383,3155L3380,3143L3377,3134L3388,3131L3389,3117L3400,3129L3406,3111L3395,3095L3400,3079L3399,3069L3403,3063L3395,3056L3395,3059L3355,3072L3345,3068L3330,3070L3324,3055L3317,3059L3309,3067L3287,3060L3290,3049L3280,3058L3276,3035L3278,3004L3286,2989L3291,2964L3119,2963L3090,2953L3063,2900L3057,2928L2975,2932L2975,2944L2974,2963L2976,2992L2982,2995L2990,3001L3008,3000L3015,3008L3014,3027L3022,3043L3016,3051L3015,3058L3009,3062L3007,3081L2996,3100L2997,3101L3002,3101L3002,3104L3004,3109L3004,3112L3002,3112L3002,3119L3004,3119L3008,3129L3008,3145L2999,3145L3004,3150L3008,3157L3010,3183L3060,3186L3060,3183L3062,3183L3062,3188L3060,3191L3060,3193L3058,3193L3058,3208L3060,3211L3060,3216L3062,3216L3067,3221L3069,3221L3071,3224L3073,3221L3073,3224L3077,3226L3077,3234L3082,3244L3084,3247L3084,3249L3082,3249L3082,3254L3077,3270L3080,3275L3077,3275L3075,3277L3075,3280L3071,3288L3069,3295L3075,3305L3073,3305L3067,3310L3067,3316L3069,3316L3069,3318L3071,3321L3071,3328L3073,3328L3075,3328L3075,3349L3073,3351L3073,3354L3071,3354L3073,3359L3073,3364L3071,3369L3071,3374L3080,3374L3082,3377L3095,3377L3099,3379L3106,3379L3106,3377L3108,3377L3108,3379L3110,3377L3110,3374L3114,3374L3114,3372L3116,3374L3116,3377L3121,3379L3129,3379L3134,3384L3134,3390L3136,3390L3136,3392L3138,3395L3136,3395L3136,3400L3138,3405L3138,3415L3140,3415L3138,3418L3140,3423L3140,3425L3142,3425L3142,3435L3158,3435L3158,3433L3164,3430L3166,3430L3171,3433L3174,3437L3185,3431L3197,3403z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3325,3449L3310,3446L3303,3436L3306,3422L3298,3403L3283,3404L3263,3393L3245,3386L3227,3389L3210,3386L3209,3388L3197,3403L3185,3431L3174,3437L3175,3438L3173,3438L3173,3446L3175,3446L3175,3451L3173,3451L3173,3458L3168,3469L3168,3471L3171,3474L3168,3479L3166,3479L3166,3481L3164,3484L3164,3486L3166,3486L3168,3489L3171,3489L3171,3486L3177,3486L3179,3484L3186,3489L3186,3499L3188,3504L3192,3509L3192,3512L3190,3512L3190,3522L3188,3525L3190,3527L3190,3532L3188,3535L3188,3537L3186,3540L3181,3540L3181,3543L3177,3543L3175,3548L3173,3548L3173,3550L3166,3550L3164,3553L3160,3553L3158,3555L3158,3558L3155,3558L3153,3560L3153,3563L3145,3563L3145,3565L3142,3565L3142,3571L3136,3571L3136,3573L3132,3573L3132,3576L3136,3576L3136,3581L3134,3581L3134,3578L3129,3578L3127,3583L3125,3586L3125,3588L3121,3591L3119,3591L3119,3594L3114,3601L3112,3604L3110,3604L3108,3606L3108,3611L3106,3611L3103,3614L3101,3619L3097,3622L3097,3624L3090,3624L3090,3632L3088,3632L3084,3637L3082,3637L3082,3639L3084,3642L3093,3642L3095,3639L3095,3637L3097,3637L3099,3634L3101,3634L3103,3637L3108,3639L3116,3650L3119,3650L3127,3660L3127,3662L3125,3662L3125,3668L3132,3668L3136,3662L3136,3660L3138,3660L3145,3668L3147,3673L3151,3675L3155,3675L3155,3678L3158,3678L3160,3680L3166,3680L3168,3683L3168,3688L3171,3688L3173,3690L3177,3693L3179,3693L3184,3696L3186,3696L3186,3698L3192,3706L3192,3711L3194,3711L3194,3713L3203,3718L3205,3718L3208,3717L3216,3705L3219,3705L3219,3722L3215,3724L3213,3729L3211,3726L3207,3724L3206,3727L3196,3737L3197,3740L3196,3746L3194,3746L3194,3752L3199,3754L3201,3754L3201,3752L3203,3752L3205,3749L3212,3744L3220,3734L3222,3729L3222,3726L3225,3724L3225,3718L3229,3708L3237,3701L3239,3697L3238,3691L3233,3693L3231,3691L3231,3686L3234,3687L3237,3687L3237,3683L3238,3675L3248,3670L3254,3659L3255,3654L3259,3643L3256,3639L3258,3636L3261,3640L3264,3646L3270,3644L3273,3645L3273,3649L3272,3654L3269,3658L3266,3660L3264,3663L3260,3665L3259,3673L3257,3679L3253,3680L3247,3688L3241,3690L3242,3693L3242,3693L3246,3693L3251,3688L3259,3683L3274,3665L3274,3662L3279,3655L3283,3650L3283,3647L3285,3645L3285,3642L3287,3642L3287,3637L3290,3629L3292,3627L3294,3622L3296,3619L3300,3609L3302,3608L3303,3606L3309,3599L3322,3588L3326,3583L3331,3573L3331,3527L3329,3525L3329,3520L3333,3513L3335,3505L3331,3501L3332,3496L3336,3491L3336,3486L3330,3486L3329,3483L3335,3482L3336,3476L3339,3477L3338,3483L3341,3483L3344,3483L3346,3476L3350,3473L3351,3470L3336,3468L3325,3449zM3333,3548L3338,3546L3334,3559L3332,3559L3333,3548z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3714,2902L3714,2887L3710,2869L3710,2862L3708,2854L3705,2851L3705,2846L3703,2839L3703,2834L3699,2823L3697,2821L3695,2821L3692,2818L3686,2818L3684,2816L3682,2816L3679,2818L3662,2818L3660,2816L3658,2816L3658,2813L3649,2813L3647,2811L3647,2806L3645,2806L3643,2803L3636,2803L3636,2800L3634,2800L3634,2798L3632,2795L3628,2793L3621,2785L3621,2783L3619,2780L3617,2780L3612,2772L3608,2772L3602,2767L3599,2765L3599,2762L3595,2762L3589,2755L3584,2755L3582,2752L3578,2749L3576,2747L3573,2747L3571,2744L3565,2744L3563,2742L3556,2742L3556,2744L3526,2745L3510,2738L3502,2739L3498,2737L3495,2737L3495,2734L3491,2734L3489,2732L3485,2732L3482,2729L3470,2728L3470,2724L3468,2723L3464,2726L3462,2729L3460,2735L3457,2738L3456,2743L3454,2742L3452,2740L3456,2736L3458,2731L3457,2729L3455,2732L3449,2733L3447,2749L3444,2748L3445,2745L3444,2741L3441,2740L3447,2730L3448,2724L3445,2722L3440,2722L3443,2720L3448,2719L3447,2716L3444,2713L3438,2700L3429,2699L3425,2696L3423,2703L3421,2701L3421,2695L3401,2686L3395,2698L3383,2732L3368,2756L3368,2772L3343,2808L3325,2818L3332,2827L3345,2824L3354,2841L3359,2887L3378,2906L3385,2899L3383,2909L3390,2913L3389,2920L3383,2917L3377,2918L3376,2928L3370,2935L3389,2955L3405,2979L3394,2988L3396,2997L3389,3003L3388,3014L3400,3020L3399,3033L3395,3042L3395,3056L3403,3063L3399,3069L3400,3079L3395,3095L3406,3111L3400,3129L3398,3127L3400,3138L3416,3132L3439,3120L3438,3110L3454,3108L3463,3120L3478,3114L3492,3122L3506,3135L3512,3129L3530,3147L3538,3157L3561,3156L3571,3166L3566,3178L3568,3189L3555,3200L3559,3219L3565,3224L3562,3232L3581,3245L3586,3237L3591,3237L3594,3230L3593,3229L3593,3208L3595,3206L3595,3193L3597,3191L3597,3183L3602,3170L3602,3165L3599,3163L3599,3150L3597,3142L3597,3119L3599,3113L3599,3107L3597,3104L3597,3101L3599,3099L3599,3083L3604,3078L3604,3076L3606,3076L3606,3071L3604,3071L3606,3068L3606,3063L3608,3063L3608,3068L3612,3068L3612,3073L3610,3076L3617,3076L3617,3073L3628,3061L3628,3058L3632,3053L3634,3048L3636,3045L3636,3043L3638,3040L3638,3038L3640,3031L3642,3028L3644,3023L3648,3018L3649,3012L3651,3011L3656,3007L3656,3004L3658,3002L3666,2997L3669,2994L3671,2994L3673,2992L3673,2987L3675,2987L3679,2981L3684,2974L3686,2971L3686,2969L3690,2966L3701,2953L3701,2951L3703,2946L3705,2943L3705,2938L3708,2936L3708,2933L3710,2923L3712,2920L3712,2915L3714,2915L3714,2908L3712,2908L3712,2905L3714,2902z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3565,3224L3559,3219L3555,3200L3568,3189L3566,3178L3571,3166L3561,3156L3538,3157L3530,3147L3512,3129L3506,3135L3492,3122L3478,3114L3463,3120L3454,3108L3438,3110L3439,3120L3416,3132L3400,3138L3398,3127L3389,3117L3388,3131L3377,3134L3380,3143L3383,3155L3362,3182L3369,3189L3367,3200L3358,3208L3365,3211L3369,3215L3360,3233L3352,3247L3322,3252L3278,3270L3265,3310L3241,3359L3210,3386L3227,3389L3245,3386L3263,3393L3283,3404L3298,3403L3306,3422L3303,3436L3310,3446L3325,3449L3336,3468L3351,3470L3352,3466L3355,3463L3357,3463L3361,3458L3363,3458L3368,3456L3370,3453L3376,3448L3376,3446L3378,3446L3381,3443L3387,3438L3391,3438L3391,3433L3396,3433L3396,3438L3398,3435L3400,3435L3402,3430L3404,3430L3404,3428L3413,3428L3413,3430L3417,3430L3419,3432L3424,3433L3424,3428L3420,3425L3420,3423L3424,3423L3428,3420L3430,3420L3430,3418L3433,3415L3443,3415L3446,3412L3443,3410L3439,3410L3439,3407L3441,3405L3446,3405L3450,3400L3452,3405L3456,3405L3456,3402L3459,3402L3463,3400L3465,3400L3469,3405L3478,3405L3480,3402L3482,3402L3482,3400L3480,3397L3480,3395L3485,3392L3487,3392L3487,3395L3485,3397L3484,3398L3485,3400L3485,3402L3511,3402L3515,3400L3515,3387L3519,3384L3524,3379L3528,3379L3528,3377L3534,3377L3537,3374L3543,3372L3543,3359L3541,3356L3541,3354L3543,3351L3543,3344L3545,3344L3545,3341L3547,3341L3547,3336L3552,3331L3552,3333L3554,3333L3560,3321L3565,3316L3565,3308L3567,3305L3567,3303L3569,3298L3571,3298L3571,3295L3573,3295L3576,3293L3578,3288L3578,3285L3580,3282L3578,3280L3578,3254L3580,3252L3580,3247L3581,3245L3562,3232L3565,3224z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8687,1033L8681,1015L8676,1010L8676,1008L8674,1008L8674,1005L8672,1000L8672,990L8670,990L8670,985L8668,982L8668,975L8665,975L8663,972L8665,972L8665,967L8663,962L8661,959L8659,954L8659,957L8657,957L8657,939L8659,931L8661,931L8661,913L8659,908L8659,906L8655,906L8657,903L8657,901L8655,901L8652,895L8650,895L8650,885L8652,885L8652,880L8648,875L8646,875L8646,872L8644,872L8642,875L8644,875L8644,878L8635,878L8642,885L8644,885L8644,893L8642,895L8639,895L8639,901L8644,901L8639,903L8639,906L8631,906L8631,901L8626,903L8624,903L8618,906L8620,908L8620,913L8622,913L8622,921L8620,924L8620,936L8618,936L8616,939L8616,954L8618,957L8620,957L8620,962L8624,967L8626,967L8626,969L8631,977L8631,980L8633,980L8633,982L8631,982L8631,985L8626,990L8626,1000L8629,1003L8629,1036L8626,1036L8626,1048L8624,1051L8624,1054L8622,1054L8622,1056L8620,1056L8620,1059L8622,1059L8622,1064L8626,1069L8629,1069L8629,1079L8631,1082L8631,1084L8629,1084L8629,1087L8626,1087L8624,1092L8624,1107L8626,1107L8626,1115L8624,1117L8620,1128L8620,1135L8622,1138L8622,1145L8626,1150L8631,1145L8631,1140L8637,1128L8637,1125L8642,1125L8644,1122L8646,1122L8646,1128L8663,1128L8663,1130L8661,1133L8661,1135L8663,1135L8663,1140L8668,1140L8670,1135L8668,1133L8668,1122L8665,1120L8663,1122L8663,1125L8657,1125L8655,1120L8657,1117L8655,1117L8652,1107L8650,1102L8648,1102L8646,1099L8644,1099L8642,1094L8642,1092L8639,1092L8639,1082L8642,1079L8642,1074L8644,1071L8646,1066L8646,1064L8648,1059L8652,1054L8652,1043L8655,1043L8657,1041L8659,1041L8664,1038L8672,1038L8676,1041L8683,1041L8687,1046L8689,1046L8689,1048L8698,1056L8698,1063L8703,1063L8703,1054L8687,1041L8687,1033zM8509,850L8505,847L8501,847L8501,850L8494,857L8492,857L8492,860L8494,860L8499,857L8501,857L8503,862L8503,865L8507,865L8507,862L8512,860L8514,857L8514,855L8516,855L8516,852L8520,852L8516,850L8509,850zM8743,1196L8739,1196L8737,1199L8737,1201L8735,1204L8733,1204L8730,1207L8730,1209L8728,1209L8728,1212L8726,1212L8726,1214L8724,1214L8722,1217L8720,1217L8720,1222L8724,1224L8724,1217L8728,1217L8728,1214L8730,1214L8730,1212L8735,1209L8739,1204L8746,1204L8750,1201L8750,1199L8743,1199L8743,1196zM9369,365L9367,362L9350,362L9345,365L9343,365L9341,368L9345,370L9350,370L9350,373L9356,373L9365,375L9382,375L9382,370L9387,370L9387,368L9384,365L9369,365zM9742,316L9735,312L9725,311L9716,309L9707,309L9699,310L9690,310L9682,310L9676,314L9667,315L9661,318L9655,320L9649,321L9645,326L9642,329L9645,333L9648,336L9651,335L9659,334L9665,334L9670,334L9676,333L9679,330L9686,330L9698,332L9705,331L9712,330L9726,329L9738,327L9746,325L9751,322L9750,319L9742,316zM8488,850L8477,855L8477,857L8479,857L8480,855L8481,855L8488,855L8492,850L8488,850zM8849,1145L8845,1145L8845,1148L8843,1148L8843,1150L8839,1153L8836,1153L8834,1158L8832,1161L8834,1161L8839,1158L8841,1156L8843,1156L8847,1153L8849,1153L8852,1150L8852,1148L8854,1148L8854,1145L8856,1145L8858,1143L8860,1143L8860,1140L8856,1140L8849,1145zM9248,714L9246,717L9242,719L9237,719L9235,722L9231,722L9231,725L9229,725L9229,727L9226,730L9224,734L9218,737L9220,737L9220,740L9222,740L9222,737L9224,737L9233,732L9235,730L9239,730L9242,727L9255,727L9255,719L9252,714L9248,714zM9018,992L9018,995L9025,995L9027,992L9027,987L9023,987L9018,992zM9016,990L9014,990L9014,992L9010,992L9010,997L9008,1000L9008,1003L9003,1003L9003,1005L8997,1005L8992,1008L8992,1015L8997,1015L8999,1013L9001,1013L9003,1010L9008,1010L9018,1000L9016,992L9016,990zM9306,857L9306,855L9304,855L9302,852L9298,850L9298,842L9287,842L9287,844L9289,844L9291,847L9293,847L9293,852L9296,855L9300,857L9302,857L9302,860L9304,860L9306,862L9311,862L9309,857L9306,857zM8175,241L8184,243L8192,243L8195,240L8177,239L8175,241zM8975,1036L8975,1041L8977,1041L8979,1038L8982,1038L8982,1037L8983,1035L8984,1028L8982,1028L8975,1036zM8806,1166L8804,1166L8801,1170L8800,1171L8791,1171L8791,1166L8789,1166L8789,1168L8787,1168L8789,1171L8789,1173L8785,1173L8785,1176L8782,1176L8782,1179L8778,1179L8778,1181L8774,1184L8772,1184L8769,1186L8767,1186L8767,1191L8759,1196L8759,1199L8763,1199L8763,1196L8767,1196L8767,1194L8772,1194L8772,1191L8776,1186L8778,1186L8780,1184L8780,1181L8789,1181L8789,1179L8791,1179L8793,1176L8798,1173L8802,1173L8803,1173L8804,1171L8806,1171L8808,1168L8810,1168L8810,1171L8813,1171L8813,1168L8815,1168L8815,1163L8810,1163L8806,1166zM9970,579L9970,577L9962,577L9957,574L9957,572L9953,572L9951,569L9938,569L9938,572L9916,572L9914,569L9914,566L9912,566L9910,569L9910,572L9907,572L9907,577L9910,577L9910,579L9925,579L9927,577L9938,577L9940,579L9944,579L9953,582L9953,584L9957,584L9959,587L9964,587L9966,589L9966,592L9970,592L9970,589L9972,589L9972,587L9977,584L9991,585L9994,584L9994,582L9990,579L9970,579zM9500,933L9495,935L9495,940L9502,940L9510,938L9511,934L9507,932L9500,933zM8495,881L8496,880L8501,880L8503,878L8507,875L8496,875L8494,878L8492,878L8488,880L8490,883L8490,885L8494,885L8494,883L8495,881zM9501,920L9496,916L9494,918L9491,916L9476,917L9471,920L9467,920L9468,923L9473,924L9480,929L9487,927L9499,926L9501,920zM9348,865L9346,862L9342,859L9339,857L9338,855L9334,855L9333,856L9331,859L9343,866L9345,869L9349,871L9352,870L9351,867L9348,865zM8314,1260L8311,1264L8308,1258L8308,1258L8306,1255L8304,1255L8304,1252L8306,1252L8310,1250L8321,1250L8323,1247L8323,1245L8325,1240L8327,1237L8327,1230L8325,1230L8325,1212L8327,1212L8327,1209L8325,1207L8323,1194L8321,1189L8321,1186L8319,1186L8319,1184L8321,1184L8323,1181L8323,1184L8325,1184L8327,1181L8332,1181L8336,1176L8338,1176L8338,1173L8343,1168L8345,1168L8345,1171L8347,1171L8351,1173L8358,1173L8369,1179L8375,1179L8377,1176L8377,1166L8379,1166L8379,1163L8382,1163L8386,1161L8388,1161L8388,1150L8392,1150L8392,1148L8395,1145L8395,1143L8397,1140L8399,1140L8399,1138L8401,1135L8401,1133L8399,1133L8399,1128L8403,1128L8403,1120L8405,1115L8405,1112L8408,1112L8410,1110L8408,1110L8408,1105L8412,1099L8418,1099L8423,1092L8425,1092L8425,1089L8421,1089L8418,1084L8418,1079L8421,1079L8421,1074L8423,1074L8421,1071L8416,1071L8416,1069L8414,1069L8408,1071L8403,1071L8399,1074L8395,1074L8392,1077L8390,1077L8390,1079L8377,1079L8371,1082L8366,1087L8364,1087L8364,1089L8362,1089L8362,1092L8358,1092L8358,1089L8356,1089L8353,1092L8334,1092L8334,1089L8327,1089L8327,1092L8317,1092L8317,1089L8319,1089L8317,1087L8317,1084L8315,1084L8315,1082L8312,1082L8310,1079L8310,1077L8312,1077L8315,1071L8306,1061L8308,1059L8308,1056L8310,1056L8310,1054L8297,1054L8295,1051L8289,1048L8289,1046L8284,1043L8284,1041L8280,1041L8280,1038L8278,1038L8278,1036L8269,1036L8267,1038L8265,1038L8265,1036L8263,1036L8258,1031L8230,1031L8228,1028L8228,1026L8226,1026L8226,1023L8221,1023L8221,1013L8224,1013L8224,1008L8217,1008L8217,995L8215,995L8217,992L8213,990L8213,987L8211,985L8206,982L8206,977L8204,977L8204,975L8202,975L8204,972L8206,972L8206,969L8202,969L8200,964L8200,959L8198,957L8193,954L8193,949L8195,949L8195,946L8193,946L8191,944L8189,944L8191,941L8191,939L8189,939L8189,936L8187,936L8187,934L8185,934L8182,931L8182,934L8180,934L8180,929L8182,929L8182,926L8180,926L8176,924L8174,921L8174,918L8169,916L8163,916L8163,913L8161,913L8156,911L8154,911L8152,913L8143,913L8143,911L8139,911L8139,913L8137,911L8135,911L8135,908L8133,908L8133,906L8128,906L8128,908L8126,906L8124,906L8124,903L8122,903L8115,901L8102,901L8102,903L8076,903L8072,906L8065,906L8059,890L8068,874L8063,851L8040,839L8012,830L8003,804L7989,779L7966,723L7934,721L7906,691L7848,691L7809,737L7783,721L7753,728L7718,730L7746,666L7725,649L7725,622L7714,594L7700,564L7667,547L7628,531L7644,499L7633,478L7607,425L7646,413L7640,339L7623,318L7714,300L7739,260L7790,233L7834,217L7834,217L7836,219L7833,220L7831,223L7833,225L7886,240L7892,240L7896,243L7922,243L7931,245L7984,245L7983,242L7987,241L7990,239L7989,235L7994,233L8001,233L8001,237L7999,239L7994,238L7995,241L7999,243L8004,242L8007,243L8021,243L8024,242L8032,240L8034,235L8043,238L8045,243L8043,244L8048,246L8067,242L8072,245L8082,250L8085,246L8090,244L8115,243L8121,240L8129,239L8135,240L8137,235L8145,235L8150,235L8144,237L8142,239L8150,241L8156,241L8162,245L8172,247L8175,248L8179,247L8194,247L8196,251L8203,249L8212,249L8210,247L8224,248L8229,246L8258,256L8264,256L8265,260L8274,261L8281,265L8278,268L8282,276L8274,277L8280,281L8279,284L8281,287L8282,292L8278,295L8268,295L8266,298L8273,299L8280,303L8281,307L8265,306L8265,311L8271,311L8282,322L8286,322L8289,327L8293,327L8295,329L8297,329L8297,332L8306,332L8306,334L8310,334L8310,332L8312,332L8312,329L8315,329L8317,334L8317,337L8319,337L8321,340L8325,340L8325,337L8330,337L8334,334L8337,333L8342,328L8342,326L8344,326L8344,323L8346,323L8346,321L8350,315L8350,313L8355,310L8355,308L8364,299L8369,299L8369,306L8373,306L8375,309L8377,309L8379,311L8384,314L8392,314L8395,317L8423,317L8425,314L8431,311L8442,311L8447,309L8464,309L8464,311L8473,311L8475,314L8475,311L8479,311L8481,314L8490,312L8518,312L8514,316L8509,317L8503,315L8504,318L8508,322L8516,323L8519,322L8514,317L8518,314L8521,310L8527,309L8525,311L8531,311L8529,309L8538,309L8542,311L8544,314L8544,317L8553,317L8553,314L8568,314L8568,311L8566,311L8564,309L8562,308L8562,303L8559,299L8561,299L8561,294L8566,291L8570,291L8570,294L8572,294L8574,291L8574,289L8557,289L8555,291L8551,291L8551,294L8548,294L8548,291L8546,291L8546,289L8548,286L8553,284L8555,281L8592,281L8596,278L8598,278L8598,273L8594,273L8589,271L8587,268L8607,268L8607,271L8613,271L8620,273L8668,273L8670,276L8694,276L8696,278L8724,278L8730,281L8741,281L8743,283L8754,283L8754,286L8761,286L8761,289L8759,289L8754,291L8754,294L8748,296L8746,296L8743,299L8741,299L8739,301L8735,301L8735,296L8741,296L8743,294L8746,294L8743,291L8737,291L8737,294L8735,294L8735,291L8733,291L8733,289L8730,289L8735,286L8717,286L8715,283L8700,283L8700,286L8698,286L8696,289L8685,289L8687,291L8700,291L8700,289L8726,289L8726,291L8728,291L8726,294L8726,296L8730,296L8730,299L8728,299L8728,301L8715,301L8715,299L8707,299L8709,301L8713,301L8713,304L8704,304L8704,306L8715,306L8717,309L8720,309L8722,306L8730,306L8737,304L8739,304L8741,301L8746,301L8750,296L8752,296L8765,289L8767,286L8806,286L8806,289L8823,289L8826,291L8834,291L8845,296L8847,299L8849,299L8849,301L8847,301L8841,304L8834,304L8830,301L8828,301L8826,304L8819,304L8819,306L8815,306L8815,309L8821,309L8821,306L8828,306L8830,309L8845,309L8845,311L8843,314L8852,314L8854,311L8862,314L8865,314L8865,317L8867,317L8865,319L8869,319L8871,317L8878,317L8880,319L8893,319L8897,324L8899,324L8904,327L8906,329L8904,329L8901,332L8906,332L8908,334L8951,334L8960,332L8969,332L8973,329L8988,329L8997,327L9060,327L9066,329L9081,329L9088,332L9090,332L9094,334L9103,334L9105,337L9109,337L9112,340L9116,340L9118,342L9120,342L9122,345L9125,350L9127,350L9127,355L9122,357L9118,357L9118,360L9120,360L9120,362L9118,362L9118,365L9116,365L9118,368L9120,368L9127,370L9129,373L9144,373L9151,375L9153,375L9153,378L9151,378L9151,383L9153,383L9153,391L9151,391L9153,393L9157,393L9157,391L9155,391L9157,388L9157,383L9155,383L9155,380L9159,378L9164,378L9164,375L9170,375L9170,380L9172,380L9174,378L9181,378L9185,375L9187,373L9229,373L9233,370L9239,370L9239,373L9242,373L9246,375L9287,375L9287,378L9317,378L9326,375L9330,375L9330,373L9335,373L9335,370L9343,370L9348,373L9348,375L9350,375L9352,378L9354,378L9354,380L9352,383L9354,385L9354,388L9371,388L9371,391L9380,391L9382,393L9387,393L9387,401L9389,401L9391,403L9395,403L9404,401L9415,401L9415,398L9421,398L9423,396L9428,396L9430,393L9430,391L9428,388L9428,385L9421,378L9419,378L9419,375L9406,375L9406,373L9408,373L9410,370L9419,370L9417,365L9417,360L9413,360L9413,357L9419,357L9419,360L9445,360L9449,362L9475,362L9480,365L9482,365L9486,368L9491,368L9491,370L9497,370L9499,368L9497,368L9495,365L9504,365L9506,368L9514,368L9514,365L9523,365L9523,368L9556,368L9556,365L9573,365L9575,368L9575,370L9584,370L9586,373L9590,373L9597,375L9614,375L9614,378L9621,378L9629,380L9643,379L9669,387L9672,390L9677,393L9684,395L9696,395L9701,399L9714,401L9715,403L9720,406L9718,409L9720,411L9726,410L9738,414L9738,417L9743,416L9744,414L9748,414L9752,417L9754,417L9759,420L9759,422L9765,422L9772,425L9776,425L9778,427L9787,430L9793,430L9804,435L9808,435L9815,443L9815,445L9813,445L9811,448L9819,448L9819,445L9826,445L9826,448L9824,448L9824,450L9821,456L9824,458L9824,461L9826,461L9828,463L9828,468L9824,468L9821,471L9826,471L9828,473L9834,473L9834,481L9839,481L9839,478L9843,476L9847,476L9849,477L9847,481L9845,481L9845,484L9847,484L9847,486L9850,484L9850,481L9854,481L9854,478L9856,478L9856,476L9852,476L9849,475L9847,473L9841,473L9843,471L9847,471L9847,468L9850,468L9847,466L9847,463L9845,461L9841,458L9830,458L9830,456L9869,456L9873,458L9873,461L9876,461L9882,463L9889,463L9891,461L9884,461L9880,458L9893,459L9895,461L9912,461L9912,463L9915,466L9921,466L9921,468L9919,468L9921,471L9925,471L9928,473L9934,473L9934,476L9938,476L9938,478L9941,478L9943,481L9945,481L9945,484L9953,484L9953,486L9966,486L9966,489L9969,489L9966,491L9953,491L9943,496L9945,496L9945,504L9934,504L9930,501L9925,501L9923,499L9921,499L9923,501L9923,504L9932,504L9932,507L9930,509L9925,509L9923,507L9912,507L9910,509L9908,509L9908,507L9895,507L9895,501L9882,501L9884,504L9893,504L9893,509L9891,509L9893,512L9895,512L9895,509L9899,509L9897,514L9897,519L9899,522L9895,524L9893,527L9884,527L9884,530L9880,530L9882,532L9880,535L9878,535L9882,537L9882,535L9884,535L9886,532L9889,532L9889,530L9895,530L9899,532L9893,535L9889,535L9891,537L9884,537L9889,540L9891,540L9895,542L9893,542L9891,545L9884,545L9882,542L9882,540L9876,540L9876,542L9880,542L9880,547L9871,547L9871,550L9869,547L9865,547L9865,545L9847,545L9847,542L9845,542L9845,540L9843,540L9837,535L9830,535L9828,532L9826,532L9821,530L9819,532L9808,532L9808,530L9802,527L9798,527L9795,524L9798,524L9798,522L9800,519L9795,514L9795,512L9793,512L9791,509L9782,509L9780,507L9776,507L9767,504L9759,504L9756,507L9754,507L9754,509L9723,510L9721,508L9723,508L9723,500L9717,500L9710,493L9717,493L9717,490L9721,490L9721,487L9723,485L9723,480L9721,480L9715,487L9708,487L9706,485L9706,480L9704,480L9704,485L9702,482L9697,482L9697,485L9700,485L9702,487L9700,487L9697,490L9691,490L9691,487L9689,487L9689,490L9687,490L9687,498L9689,500L9695,503L9697,505L9700,505L9700,508L9697,510L9693,510L9693,518L9691,518L9691,521L9687,521L9684,523L9677,523L9675,526L9673,526L9670,528L9666,531L9662,531L9660,533L9651,533L9651,536L9647,536L9644,538L9644,536L9614,536L9612,532L9610,531L9610,528L9605,528L9605,531L9603,532L9601,532L9599,533L9595,533L9595,531L9579,531L9575,528L9573,528L9575,531L9577,531L9582,536L9586,536L9590,541L9592,538L9605,535L9608,533L9610,538L9608,538L9608,544L9610,544L9614,549L9616,549L9618,551L9623,551L9627,550L9630,547L9632,548L9634,546L9645,557L9647,565L9646,569L9648,573L9649,578L9657,584L9662,584L9664,587L9664,589L9660,589L9660,592L9662,595L9666,595L9668,597L9668,605L9664,605L9664,607L9657,612L9655,615L9653,615L9653,612L9651,612L9644,610L9634,610L9629,607L9625,607L9625,605L9597,605L9592,607L9586,607L9577,615L9566,615L9564,617L9558,617L9549,620L9549,623L9545,623L9540,625L9532,625L9532,628L9530,630L9514,630L9514,633L9512,633L9510,635L9508,635L9508,633L9499,633L9499,638L9495,638L9495,640L9493,643L9486,643L9475,651L9471,651L9471,656L9462,656L9462,658L9460,658L9460,661L9458,661L9458,658L9456,658L9456,661L9454,663L9452,663L9452,661L9449,663L9447,663L9447,666L9441,666L9441,668L9434,671L9430,671L9426,674L9423,674L9423,676L9421,676L9421,679L9417,679L9417,681L9415,681L9415,689L9413,691L9406,691L9406,689L9404,689L9402,686L9400,686L9395,681L9395,676L9393,676L9391,674L9387,674L9384,671L9384,668L9380,668L9380,671L9350,671L9341,674L9337,674L9332,676L9326,676L9326,679L9319,679L9313,684L9311,686L9309,686L9306,689L9300,694L9298,694L9296,697L9293,694L9293,691L9296,689L9296,684L9298,681L9298,676L9300,676L9302,674L9293,674L9291,676L9289,676L9285,679L9285,681L9278,681L9276,684L9274,684L9270,686L9268,686L9268,689L9265,694L9263,694L9259,697L9257,694L9257,691L9255,689L9250,686L9244,686L9244,689L9242,689L9241,693L9239,694L9237,694L9237,689L9230,689L9230,693L9224,694L9221,696L9221,700L9219,703L9216,703L9216,705L9218,707L9219,712L9217,713L9214,713L9214,715L9215,717L9215,720L9213,718L9210,716L9208,719L9209,722L9200,727L9198,730L9194,730L9185,740L9182,750L9182,753L9181,755L9181,758L9183,760L9190,760L9190,765L9192,765L9194,763L9194,758L9196,758L9196,755L9200,755L9205,758L9207,758L9207,760L9213,760L9216,763L9213,768L9211,770L9209,770L9209,773L9203,773L9203,776L9200,778L9200,781L9203,781L9203,796L9213,796L9216,799L9213,799L9213,801L9218,806L9218,814L9216,814L9213,816L9211,816L9211,819L9205,819L9200,816L9198,814L9198,811L9194,811L9192,814L9185,814L9181,819L9181,821L9179,827L9174,829L9172,832L9172,842L9174,847L9179,852L9185,857L9181,862L9177,865L9172,870L9170,867L9166,870L9159,870L9159,867L9144,867L9140,870L9135,875L9133,875L9131,878L9127,878L9125,880L9125,883L9122,885L9120,890L9120,895L9122,895L9122,898L9125,901L9122,903L9127,913L9127,916L9118,911L9109,911L9109,913L9101,913L9099,916L9096,916L9094,918L9092,918L9090,921L9088,920L9088,918L9086,916L9083,916L9081,918L9081,921L9086,921L9087,922L9088,924L9086,926L9086,929L9083,931L9083,934L9086,939L9086,941L9081,941L9079,946L9077,946L9077,954L9066,962L9064,964L9062,964L9060,967L9055,967L9051,972L9049,977L9047,977L9044,980L9036,985L9034,987L9031,987L9034,985L9034,977L9031,977L9031,975L9027,975L9027,954L9025,946L9025,941L9023,939L9023,936L9021,934L9021,931L9018,931L9018,929L9016,926L9016,913L9014,908L9012,895L9012,890L9010,885L9010,880L9008,880L9008,878L9005,872L9005,867L9003,860L9003,855L9001,847L9001,837L9003,834L9003,824L9005,819L9005,816L9008,814L9008,811L9010,809L9010,804L9012,801L9012,799L9016,793L9016,796L9018,793L9023,791L9025,791L9025,788L9027,788L9027,786L9029,786L9029,783L9031,786L9040,776L9040,765L9038,765L9038,763L9036,763L9040,760L9042,760L9047,763L9053,763L9055,760L9057,760L9057,758L9060,755L9075,755L9079,750L9081,750L9086,748L9088,745L9090,745L9099,740L9101,740L9101,737L9103,737L9107,735L9109,732L9112,732L9118,725L9118,719L9120,717L9122,717L9129,712L9133,712L9133,709L9135,709L9138,707L9138,704L9142,704L9146,702L9148,702L9159,694L9161,691L9166,689L9166,686L9172,686L9174,684L9177,684L9179,681L9179,679L9177,679L9179,676L9190,671L9194,671L9198,668L9203,668L9203,666L9205,663L9220,663L9220,661L9226,661L9229,658L9224,658L9222,656L9226,651L9231,651L9235,646L9237,646L9235,643L9229,643L9229,640L9231,635L9235,635L9237,633L9237,617L9242,612L9248,612L9252,607L9257,607L9257,610L9265,610L9270,612L9272,612L9270,610L9268,610L9268,607L9265,607L9257,605L9255,605L9255,602L9250,602L9246,600L9242,602L9235,602L9229,605L9216,605L9216,607L9213,607L9213,610L9216,610L9216,612L9213,612L9210,614L9209,617L9209,625L9207,630L9209,630L9211,633L9216,633L9216,635L9211,635L9209,638L9207,638L9207,635L9205,635L9205,633L9198,633L9198,635L9190,635L9185,638L9179,646L9174,646L9170,648L9168,651L9164,651L9164,653L9161,653L9157,656L9157,658L9151,658L9148,661L9148,663L9146,663L9146,666L9144,666L9144,663L9135,666L9133,668L9131,668L9129,671L9129,666L9131,666L9131,663L9129,663L9129,661L9131,661L9135,656L9127,656L9122,658L9120,658L9120,656L9122,656L9122,648L9120,648L9120,646L9122,646L9125,643L9129,640L9135,633L9135,625L9133,625L9131,628L9127,628L9125,630L9122,630L9122,633L9114,633L9114,635L9112,635L9107,628L9092,628L9090,630L9075,630L9073,633L9068,633L9068,630L9053,630L9051,633L9047,633L9042,635L9040,638L9038,638L9038,640L9036,640L9034,638L9034,640L9031,640L9031,651L9023,651L9012,658L9012,661L9005,668L9001,668L8992,674L8984,676L8984,679L8982,679L8979,681L8975,684L8973,686L8973,689L8971,689L8971,691L8969,694L8964,694L8964,699L8966,702L8964,702L8960,704L8960,707L8969,707L8969,709L8971,709L8973,707L8971,707L8969,704L8977,704L8979,707L8986,707L8988,709L8990,709L8990,714L8988,717L8973,717L8973,714L8966,714L8966,717L8969,717L8966,719L8956,719L8953,717L8949,717L8945,714L8938,714L8938,719L8930,719L8930,722L8927,722L8927,725L8919,725L8917,722L8906,722L8906,725L8904,725L8895,727L8884,727L8882,725L8880,725L8878,722L8878,719L8882,719L8884,717L8906,717L8908,714L8910,714L8906,712L8904,712L8904,714L8901,714L8895,712L8895,709L8893,709L8891,707L8886,704L8880,704L8878,702L8875,702L8871,704L8873,704L8873,707L8867,707L8867,704L8862,704L8862,707L8860,707L8860,704L8858,704L8858,702L8854,702L8849,699L8841,699L8836,697L8828,697L8819,702L8821,704L8826,704L8826,707L8815,707L8815,704L8813,704L8813,707L8810,707L8810,709L8819,709L8817,714L8815,714L8815,712L8813,712L8810,714L8802,714L8802,709L8785,709L8785,712L8787,712L8785,714L8782,714L8782,712L8778,712L8778,714L8776,714L8776,712L8767,712L8765,709L8754,709L8752,707L8748,707L8746,709L8746,717L8735,717L8730,714L8730,712L8733,712L8733,709L8670,709L8668,712L8663,712L8663,709L8657,709L8655,712L8646,712L8642,714L8639,714L8633,717L8631,719L8629,719L8626,722L8624,722L8624,725L8622,725L8622,727L8620,727L8618,732L8616,732L8613,735L8611,735L8607,737L8605,737L8603,740L8598,740L8594,742L8592,745L8587,748L8587,750L8583,758L8583,760L8579,763L8570,763L8570,765L8568,765L8566,768L8566,770L8561,770L8559,773L8557,773L8557,776L8555,776L8555,778L8546,778L8540,786L8535,786L8533,788L8531,788L8525,796L8522,796L8518,801L8516,801L8518,804L8518,806L8516,806L8514,809L8512,809L8509,811L8505,814L8503,816L8501,816L8499,819L8494,821L8492,824L8481,829L8479,832L8475,832L8473,834L8468,834L8468,837L8466,837L8466,839L8462,842L8460,842L8460,844L8455,844L8451,847L8451,850L8442,850L8438,855L8436,855L8436,860L8438,862L8444,862L8449,865L8449,867L8460,867L8462,865L8468,865L8473,867L8477,865L8481,865L8483,867L8479,872L8479,878L8481,880L8479,883L8479,885L8477,885L8477,893L8479,893L8481,890L8488,890L8488,893L8490,893L8490,890L8492,890L8494,885L8501,885L8501,888L8507,888L8507,890L8503,890L8501,893L8501,895L8494,895L8494,898L8492,898L8492,901L8512,901L8512,898L8516,895L8518,895L8522,893L8522,888L8525,888L8529,885L8529,888L8531,890L8529,890L8529,893L8527,893L8520,901L8529,901L8529,898L8533,893L8533,890L8535,888L8535,878L8533,878L8533,875L8535,875L8538,878L8544,878L8546,880L8551,880L8557,878L8559,878L8559,875L8564,875L8564,878L8570,883L8577,883L8577,890L8579,893L8583,893L8583,895L8585,898L8592,901L8596,901L8596,903L8598,906L8600,906L8603,908L8609,908L8609,913L8607,916L8603,916L8603,918L8600,918L8596,916L8594,916L8594,913L8590,913L8590,916L8592,916L8596,918L8596,921L8598,921L8603,924L8605,929L8605,934L8603,934L8600,936L8600,939L8603,939L8607,944L8611,944L8611,946L8607,946L8605,949L8605,952L8609,952L8609,954L8605,954L8598,962L8596,962L8594,964L8594,967L8592,967L8592,969L8594,969L8594,972L8587,972L8587,980L8590,980L8590,982L8587,985L8585,985L8585,987L8583,987L8583,997L8581,997L8581,1000L8583,1000L8583,1013L8587,1013L8587,1015L8585,1015L8581,1020L8581,1023L8583,1023L8583,1026L8585,1031L8581,1038L8579,1041L8579,1048L8581,1048L8581,1051L8579,1051L8579,1054L8577,1054L8574,1056L8574,1066L8570,1071L8561,1077L8557,1082L8555,1082L8555,1084L8553,1084L8548,1087L8548,1089L8544,1097L8542,1099L8542,1102L8538,1105L8538,1107L8535,1110L8531,1110L8531,1112L8529,1112L8529,1115L8525,1122L8525,1125L8522,1125L8522,1130L8520,1130L8520,1133L8518,1133L8518,1135L8516,1138L8516,1140L8509,1148L8507,1148L8507,1150L8505,1150L8505,1153L8501,1158L8499,1158L8496,1161L8494,1161L8494,1163L8492,1163L8486,1171L8481,1173L8473,1184L8473,1186L8468,1186L8466,1191L8464,1191L8464,1196L8462,1196L8460,1199L8455,1199L8453,1201L8453,1204L8451,1204L8449,1207L8449,1212L8447,1212L8442,1214L8444,1217L8440,1222L8438,1222L8436,1224L8434,1230L8429,1230L8427,1232L8425,1232L8421,1237L8418,1237L8414,1240L8412,1242L8408,1242L8401,1250L8390,1250L8388,1252L8386,1252L8382,1255L8375,1255L8375,1250L8373,1250L8371,1252L8369,1252L8369,1250L8364,1250L8362,1247L8357,1247L8358,1250L8356,1250L8355,1248L8356,1240L8358,1240L8358,1235L8356,1235L8356,1237L8351,1237L8351,1240L8349,1240L8349,1242L8343,1242L8345,1240L8345,1237L8349,1237L8349,1235L8340,1235L8340,1237L8336,1242L8336,1245L8334,1245L8334,1247L8330,1252L8327,1252L8325,1258L8325,1260L8323,1260L8323,1255L8319,1258L8317,1258L8315,1255L8313,1255L8313,1258L8314,1260zM8668,250L8665,248L8659,245L8657,243L8652,243L8646,240L8644,240L8644,238L8635,238L8635,235L8603,235L8602,236L8600,236L8597,239L8595,239L8589,246L8587,246L8584,249L8579,249L8577,250L8559,250L8559,253L8577,252L8581,250L8596,250L8603,253L8611,253L8613,255L8650,255L8652,258L8668,258L8668,255L8665,253L8665,250L8668,250zM8449,225L8444,225L8442,222L8440,222L8442,225L8442,227L8449,227L8449,230L8453,230L8455,232L8460,235L8466,235L8466,232L8464,232L8449,225zM8862,197L8860,197L8854,192L8836,192L8836,189L8828,189L8821,192L8806,192L8804,189L8806,189L8806,187L8802,187L8787,187L8785,184L8774,184L8769,187L8774,187L8769,189L8763,189L8759,187L8756,187L8754,184L8756,184L8756,181L8754,181L8750,179L8746,179L8746,181L8744,187L8741,189L8739,189L8739,192L8741,192L8746,194L8754,194L8758,196L8763,197L8769,199L8782,199L8782,202L8787,202L8793,204L8795,204L8798,207L8841,207L8841,204L8852,204L8856,202L8867,202L8867,199L8865,199L8869,194L8865,194L8862,197zM8574,230L8578,232L8579,232L8579,235L8581,235L8585,235L8587,232L8599,233L8599,230L8602,227L8602,225L8599,225L8596,222L8577,222L8578,225L8574,225L8574,230zM8457,184L8457,181L8460,181L8462,179L8460,179L8460,176L8453,176L8453,174L8451,171L8449,171L8448,177L8447,179L8447,181L8444,181L8444,184L8442,184L8442,187L8455,187L8457,184zM8635,202L8631,199L8629,199L8631,202L8635,202zM8494,189L8496,187L8496,184L8492,184L8492,187L8490,187L8490,189L8494,189zM8715,179L8717,181L8711,181L8709,184L8700,184L8700,187L8698,189L8707,189L8704,192L8700,192L8700,194L8694,194L8694,197L8683,197L8681,199L8678,197L8659,197L8655,194L8648,194L8648,192L8646,188L8644,189L8642,189L8639,187L8642,184L8642,181L8648,181L8650,179L8655,179L8655,176L8631,176L8629,179L8629,187L8631,189L8635,189L8637,192L8642,194L8642,197L8657,197L8663,199L8672,199L8672,202L8644,202L8642,204L8637,204L8635,204L8626,202L8624,202L8624,199L8629,199L8631,202L8635,202L8631,199L8629,199L8624,199L8616,199L8613,202L8585,202L8581,204L8570,204L8568,202L8566,202L8564,199L8557,199L8555,202L8555,204L8557,204L8553,209L8535,209L8535,207L8516,207L8516,204L8509,204L8509,199L8501,199L8501,197L8494,197L8491,192L8481,187L8490,187L8490,189L8494,189L8496,187L8499,187L8496,187L8496,184L8492,184L8492,181L8494,179L8488,179L8490,176L8488,176L8490,174L8505,174L8507,174L8505,174L8503,171L8499,171L8496,169L8499,169L8501,166L8514,166L8516,164L8518,164L8518,161L8522,161L8525,164L8527,164L8527,161L8529,161L8531,158L8540,158L8540,161L8542,161L8544,164L8553,164L8555,166L8566,166L8566,169L8564,169L8564,171L8570,171L8574,174L8574,171L8581,171L8583,174L8583,176L8581,176L8581,179L8598,179L8594,174L8594,166L8596,166L8596,164L8603,164L8607,166L8613,166L8611,164L8607,161L8613,161L8624,166L8629,166L8635,169L8637,169L8637,171L8652,171L8655,174L8657,174L8657,171L8681,171L8694,176L8702,176L8702,179L8715,179z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7731,834L7728,856L7723,865L7721,875L7724,880L7719,884L7715,889L7712,895L7709,894L7710,890L7707,888L7704,890L7695,898L7694,902L7705,900L7707,905L7695,908L7691,914L7689,919L7682,924L7677,925L7655,936L7650,942L7645,937L7640,937L7633,941L7631,947L7627,953L7622,958L7612,963L7601,963L7594,967L7586,968L7575,966L7562,960L7604,952L7618,941L7625,933L7630,930L7638,929L7654,917L7663,915L7667,913L7673,912L7675,908L7675,904L7673,904L7666,910L7662,910L7651,915L7647,915L7671,900L7674,895L7683,891L7688,881L7711,848L7715,836L7720,830L7726,827L7732,827L7734,832L7731,834zM8068,874L8063,851L8040,839L8012,830L8003,804L7989,779L7966,723L7934,721L7906,691L7848,691L7809,737L7783,721L7753,728L7718,730L7746,666L7725,649L7725,622L7714,594L7700,564L7667,547L7628,531L7644,499L7633,478L7607,425L7646,413L7640,339L7623,318L7714,300L7739,260L7790,233L7834,217L7828,215L7821,215L7818,213L7814,212L7815,209L7821,211L7826,210L7822,208L7819,204L7824,202L7844,191L7855,183L7859,172L7845,158L7831,147L7815,143L7792,142L7767,141L7739,139L7712,139L7684,139L7673,146L7658,146L7655,143L7668,133L7660,132L7640,132L7621,130L7608,132L7592,128L7613,125L7629,117L7605,113L7587,111L7563,113L7538,116L7505,127L7486,136L7495,142L7489,149L7457,151L7432,149L7437,160L7428,157L7412,161L7391,163L7367,167L7346,166L7340,162L7313,161L7285,165L7267,166L7254,173L7236,172L7213,178L7182,182L7161,185L7138,190L7116,196L7100,197L7099,204L7092,213L7102,224L7106,229L7110,237L7106,243L7102,245L7091,245L7095,243L7095,240L7097,240L7097,238L7099,238L7099,235L7069,235L7069,238L7058,238L7056,240L7054,240L7050,243L7030,230L7008,236L7000,232L6983,237L6965,236L6959,242L6943,243L6939,245L6918,245L6918,248L6922,248L6920,250L6913,253L6909,253L6911,255L6920,255L6920,258L6915,258L6918,260L6915,260L6918,263L6924,263L6926,266L6926,268L6922,273L6920,273L6922,276L6926,276L6924,278L6922,278L6924,281L6926,281L6928,283L6935,283L6937,286L6954,286L6956,289L6967,289L6967,294L6965,294L6967,296L6972,296L6974,299L6976,299L6984,304L6941,306L6939,304L6937,304L6939,301L6935,301L6922,296L6922,294L6920,294L6915,291L6907,291L6900,289L6896,289L6894,286L6889,286L6885,283L6879,283L6877,285L6879,294L6905,316L6937,330L6961,334L6973,368L6967,382L6965,420L7003,454L7021,476L7031,510L7061,520L7075,540L7055,568L7053,602L7033,632L7041,648L7019,668L6993,662L6961,680L6941,680L6911,678L6825,674L6815,714L6779,740L6751,762L6701,765L6694,766L6667,768L6649,754L6641,778L6657,786L6663,810L6645,826L6638,842L6640,844L6642,844L6642,842L6649,842L6649,844L6653,850L6653,855L6651,857L6655,862L6660,862L6662,865L6658,865L6658,870L6660,872L6660,875L6653,875L6653,878L6655,878L6655,880L6658,883L6662,878L6666,880L6666,883L6671,883L6673,880L6673,878L6681,878L6684,880L6686,880L6686,878L6684,878L6681,872L6686,872L6690,878L6690,880L6694,880L6694,883L6692,885L6692,888L6701,888L6701,885L6699,883L6697,883L6697,880L6701,880L6705,883L6707,880L6707,883L6710,883L6710,885L6716,888L6725,888L6723,885L6725,883L6729,883L6729,890L6720,890L6718,893L6718,895L6716,895L6716,901L6720,901L6718,903L6720,903L6725,901L6727,898L6744,898L6744,901L6746,903L6749,903L6751,898L6749,898L6749,895L6755,895L6755,893L6757,890L6762,890L6766,893L6770,890L6775,885L6777,885L6775,883L6783,883L6798,878L6796,875L6805,875L6809,872L6811,872L6811,870L6814,870L6816,875L6811,880L6803,880L6805,883L6805,885L6807,885L6818,893L6820,893L6831,901L6835,901L6835,903L6840,906L6842,906L6848,913L6848,916L6850,916L6855,924L6859,926L6866,934L6868,939L6889,967L6889,969L6894,977L6902,987L6902,990L6905,990L6911,987L6913,987L6913,985L6915,985L6918,982L6915,982L6915,977L6920,977L6920,975L6926,975L6928,977L6935,977L6935,980L6933,982L6933,985L6943,985L6943,992L6952,992L6954,990L6956,990L6959,992L6974,992L6978,990L6978,987L6989,987L6989,985L7000,985L7008,987L7011,987L7013,990L7013,992L7015,995L7017,995L7019,997L7019,1003L7021,1008L7024,1010L7032,1010L7037,1013L7043,1013L7043,1015L7041,1015L7041,1020L7043,1020L7047,1026L7047,1028L7050,1031L7052,1031L7052,1028L7054,1028L7054,1031L7058,1031L7060,1028L7063,1031L7069,1031L7073,1033L7076,1033L7078,1031L7078,1028L7084,1028L7084,1026L7086,1023L7091,1023L7091,1028L7086,1028L7086,1031L7091,1031L7093,1033L7095,1038L7099,1041L7104,1041L7106,1043L7106,1046L7112,1046L7117,1043L7125,1043L7130,1041L7130,1033L7145,1033L7149,1036L7149,1031L7151,1031L7151,1033L7158,1033L7158,1028L7162,1028L7162,1031L7164,1031L7164,1028L7169,1028L7169,1026L7173,1026L7173,1023L7171,1023L7171,1018L7182,1018L7182,1013L7188,1013L7188,1010L7195,1010L7195,1008L7197,1008L7197,1010L7199,1010L7201,1008L7206,1005L7208,1003L7212,1003L7219,1000L7221,1000L7225,997L7227,995L7229,995L7229,992L7238,992L7238,995L7240,995L7242,992L7245,992L7245,990L7249,990L7253,995L7255,995L7258,992L7258,990L7264,990L7264,997L7275,997L7275,995L7277,995L7279,997L7301,997L7301,1008L7303,1008L7303,1010L7307,1010L7307,1013L7310,1015L7320,1015L7320,1018L7331,1018L7333,1020L7336,1020L7340,1018L7342,1015L7344,1015L7344,1018L7349,1018L7349,1015L7351,1015L7353,1018L7357,1018L7357,1020L7359,1020L7362,1018L7364,1018L7364,1020L7366,1020L7366,1018L7370,1018L7379,1023L7381,1023L7381,1026L7385,1026L7388,1023L7392,1023L7392,1020L7394,1018L7400,1018L7405,1015L7407,1015L7407,1013L7411,1008L7411,997L7407,997L7403,992L7403,987L7400,987L7400,985L7398,985L7398,982L7400,982L7400,977L7403,977L7403,975L7400,975L7405,969L7405,967L7407,967L7407,969L7409,969L7409,964L7411,962L7411,959L7420,959L7424,954L7424,952L7426,949L7426,946L7429,946L7431,949L7435,949L7446,954L7452,954L7452,957L7455,957L7455,959L7474,959L7478,962L7481,962L7483,964L7487,964L7489,967L7496,967L7496,969L7498,969L7500,967L7502,967L7507,969L7513,969L7515,972L7520,972L7520,975L7517,975L7517,977L7520,980L7520,982L7522,985L7522,987L7520,987L7520,990L7522,990L7524,992L7524,995L7522,995L7522,997L7524,997L7526,1000L7528,1000L7530,1003L7535,1003L7537,1005L7541,1005L7541,1008L7543,1005L7548,1005L7548,1008L7550,1008L7550,1010L7559,1010L7559,1013L7563,1013L7563,1010L7569,1010L7572,1013L7572,1010L7576,1010L7578,1008L7580,1008L7580,1005L7589,1005L7595,1003L7604,1003L7604,1000L7608,1000L7613,1003L7626,1003L7628,1005L7632,1008L7632,1005L7647,1005L7647,1008L7654,1010L7654,1013L7656,1013L7658,1015L7660,1015L7665,1018L7680,1018L7680,1028L7682,1028L7682,1031L7684,1031L7689,1033L7691,1036L7695,1038L7719,1038L7721,1041L7730,1041L7738,1043L7745,1043L7745,1041L7749,1043L7764,1043L7764,1041L7767,1041L7767,1038L7780,1038L7780,1036L7795,1036L7797,1033L7803,1033L7806,1031L7808,1031L7810,1033L7814,1033L7823,1031L7823,1028L7825,1023L7829,1020L7832,1018L7834,1018L7836,1015L7840,1015L7840,1013L7847,1013L7847,1010L7851,1008L7870,1008L7873,1010L7875,1010L7877,1013L7881,1015L7881,1018L7886,1020L7899,1020L7899,1018L7905,1015L7912,1015L7912,1018L7920,1018L7922,1020L7922,1023L7925,1023L7935,1028L7946,1028L7946,1031L7951,1031L7953,1033L7955,1033L7959,1031L7959,1028L7964,1028L7964,1026L7968,1023L7972,1023L7972,1020L7974,1018L7990,1018L7990,1015L7992,1015L7994,1013L7996,1013L7996,1005L7990,1005L7990,1003L7992,1003L7994,1000L7994,997L7996,995L7998,995L7998,992L8000,992L8000,987L8003,985L8005,985L8005,982L8007,982L8007,977L8009,975L8011,975L8013,972L8013,967L8016,964L8016,962L8020,962L8020,959L8022,959L8026,954L8033,954L8033,952L8035,946L8035,944L8033,944L8033,941L8031,941L8031,939L8033,939L8033,934L8026,931L8013,931L8013,929L8018,924L8022,924L8022,921L8024,921L8029,916L8037,911L8037,908L8057,908L8057,906L8065,906L8059,890L8068,874z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6663,810L6657,786L6641,778L6649,754L6667,768L6693,766L6699,765L6751,762L6779,740L6815,714L6825,674L6911,678L6941,680L6961,680L6993,662L7019,668L7041,648L7033,632L7053,602L7055,568L7075,540L7061,520L7031,510L7021,476L7003,454L6965,420L6967,382L6973,368L6961,334L6937,330L6905,316L6879,294L6877,285L6876,286L6870,286L6868,283L6857,283L6855,286L6846,286L6848,283L6853,283L6859,281L6857,281L6857,278L6853,278L6844,276L6835,276L6829,278L6829,281L6827,281L6824,283L6820,283L6818,286L6816,286L6816,289L6833,289L6833,291L6831,294L6833,294L6833,296L6835,294L6850,294L6850,296L6853,296L6855,299L6853,299L6853,301L6844,301L6842,304L6837,304L6835,301L6831,301L6827,299L6818,296L6801,296L6794,299L6794,301L6796,306L6798,309L6798,311L6807,311L6809,314L6811,314L6816,317L6824,317L6829,319L6837,319L6840,322L6840,319L6846,317L6848,317L6848,319L6844,319L6846,322L6857,322L6855,324L6855,327L6857,327L6859,329L6861,329L6863,332L6859,334L6857,332L6846,332L6846,329L6844,329L6844,327L6842,327L6842,324L6818,324L6818,327L6816,324L6811,322L6807,322L6805,324L6803,324L6803,322L6785,322L6777,319L6772,319L6772,317L6770,317L6770,314L6777,314L6779,311L6779,309L6777,309L6777,306L6772,306L6770,304L6770,301L6772,299L6777,299L6777,296L6779,291L6781,291L6781,289L6785,289L6785,286L6783,286L6779,281L6781,278L6777,276L6775,276L6777,273L6779,273L6775,271L6770,271L6768,268L6764,268L6759,271L6759,273L6764,273L6764,276L6766,276L6766,283L6768,283L6768,286L6766,289L6766,291L6764,291L6764,294L6759,294L6751,296L6749,296L6746,299L6736,299L6729,301L6725,301L6723,304L6723,309L6714,314L6710,314L6710,317L6714,317L6716,319L6723,319L6723,322L6725,322L6725,324L6727,324L6727,327L6729,329L6733,329L6733,334L6736,334L6736,337L6742,337L6742,340L6744,340L6744,342L6746,345L6744,345L6744,347L6742,347L6740,350L6738,350L6738,352L6733,352L6733,355L6729,357L6729,360L6727,368L6725,370L6723,370L6723,373L6725,373L6727,375L6729,375L6729,378L6731,378L6733,380L6733,383L6731,385L6731,388L6729,388L6729,391L6731,391L6733,393L6736,393L6740,391L6755,391L6755,393L6759,393L6764,391L6768,391L6770,388L6777,388L6779,385L6781,385L6783,388L6798,388L6803,391L6814,391L6814,393L6816,393L6818,396L6829,396L6829,398L6840,398L6840,408L6842,411L6846,411L6846,416L6850,416L6853,419L6848,421L6837,421L6835,424L6833,424L6833,436L6846,436L6848,439L6861,439L6861,442L6837,442L6833,439L6831,439L6829,436L6822,436L6822,434L6827,434L6829,431L6827,429L6824,429L6829,424L6829,421L6827,419L6824,419L6824,416L6829,416L6829,411L6827,411L6824,408L6816,406L6814,403L6809,403L6809,401L6811,401L6811,398L6809,396L6794,396L6788,398L6777,398L6768,401L6759,401L6757,403L6751,403L6749,406L6749,413L6746,413L6746,416L6749,416L6751,419L6753,419L6753,421L6755,421L6755,424L6757,424L6759,429L6759,434L6757,436L6757,439L6755,439L6751,442L6749,442L6746,444L6744,444L6740,447L6738,447L6733,452L6736,452L6736,454L6733,459L6733,462L6729,462L6725,464L6723,467L6714,467L6710,470L6707,470L6707,472L6694,472L6690,475L6690,477L6692,480L6692,482L6690,482L6690,485L6675,485L6673,482L6632,482L6627,480L6625,480L6621,477L6627,477L6627,470L6632,470L6634,472L6634,475L6640,475L6645,477L6647,477L6653,475L6653,472L6668,472L6671,470L6668,470L6666,467L6664,462L6677,462L6681,459L6681,457L6684,454L6686,454L6686,452L6681,452L6686,449L6692,449L6692,444L6697,444L6697,439L6705,439L6710,436L6710,434L6714,434L6714,426L6712,426L6710,424L6712,421L6716,419L6718,416L6720,416L6720,413L6723,413L6723,411L6725,411L6723,408L6720,408L6716,406L6714,406L6714,403L6705,403L6703,401L6701,401L6699,398L6697,398L6697,396L6694,391L6694,388L6697,388L6697,385L6699,383L6699,378L6697,378L6697,375L6694,375L6701,368L6699,368L6699,365L6697,365L6697,362L6694,362L6694,360L6697,360L6699,357L6697,357L6697,355L6692,355L6692,352L6694,352L6697,350L6703,350L6703,345L6701,345L6701,342L6699,342L6703,340L6703,332L6701,332L6699,329L6699,324L6694,324L6690,322L6684,322L6684,319L6681,319L6677,317L6675,314L6675,311L6681,311L6690,306L6690,301L6694,301L6694,299L6697,299L6697,296L6701,291L6701,289L6705,289L6705,286L6703,286L6703,281L6701,278L6701,276L6703,276L6703,273L6697,273L6688,271L6681,271L6679,268L6670,266L6655,263L6655,259L6668,256L6659,249L6639,249L6627,252L6625,262L6634,263L6651,260L6646,268L6628,268L6612,268L6616,266L6606,266L6606,268L6603,271L6601,271L6601,273L6597,273L6586,299L6578,308L6574,310L6569,311L6564,314L6560,314L6554,317L6551,319L6541,319L6540,321L6538,324L6536,324L6536,327L6538,327L6536,329L6536,332L6532,332L6532,337L6543,337L6543,334L6549,334L6549,337L6551,337L6551,340L6549,340L6549,342L6547,345L6549,347L6547,350L6545,355L6549,357L6554,362L6552,362L6552,364L6545,364L6545,362L6541,361L6540,362L6536,375L6538,378L6541,378L6541,373L6547,373L6551,375L6560,375L6560,378L6564,378L6569,380L6571,380L6571,378L6573,378L6573,383L6571,383L6571,388L6573,388L6577,391L6580,393L6582,393L6582,396L6586,396L6588,398L6595,398L6595,396L6603,396L6595,406L6595,408L6593,411L6590,411L6586,416L6586,419L6584,419L6582,421L6575,421L6575,419L6577,416L6573,413L6564,413L6564,411L6562,411L6560,408L6558,408L6554,406L6547,406L6543,403L6543,398L6530,398L6523,396L6519,396L6517,393L6517,391L6516,391L6515,406L6489,432L6449,448L6429,476L6407,486L6373,516L6347,516L6339,532L6353,542L6339,566L6341,614L6317,712L6315,722L6323,730L6327,747L6317,764L6317,776L6299,778L6297,792L6279,800L6279,822L6321,824L6331,844L6309,860L6287,854L6280,859L6293,882L6327,868L6336,878L6323,902L6325,931L6351,938L6372,944L6372,941L6374,941L6376,939L6374,936L6374,934L6372,934L6372,931L6367,931L6367,926L6376,921L6378,921L6378,918L6400,918L6402,921L6406,918L6406,913L6398,913L6396,911L6387,911L6387,908L6380,908L6380,906L6383,901L6380,901L6378,898L6376,898L6380,893L6383,893L6383,890L6376,890L6376,888L6378,888L6380,885L6385,883L6389,883L6389,885L6400,885L6400,888L6404,888L6404,885L6413,885L6417,890L6419,890L6419,883L6435,883L6435,880L6443,880L6445,878L6456,878L6456,880L6458,878L6458,875L6469,875L6474,872L6478,875L6480,875L6482,872L6486,872L6489,875L6493,875L6493,867L6495,867L6499,865L6508,865L6510,862L6515,862L6515,865L6521,865L6521,862L6536,862L6536,860L6549,860L6549,857L6562,857L6564,855L6567,855L6569,852L6569,855L6575,855L6580,852L6580,850L6575,850L6575,847L6588,847L6588,844L6590,842L6595,842L6595,839L6601,839L6603,842L6608,839L6610,842L6621,842L6623,844L6623,847L6629,847L6632,850L6632,847L6634,847L6638,842L6638,842L6645,826L6663,810z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5543,749L5560,750L5563,748L5559,741L5554,735L5547,739L5542,745L5543,749zM5544,689L5551,690L5554,694L5558,690L5556,685L5559,682L5577,682L5582,684L5586,682L5587,675L5587,672L5592,673L5597,670L5591,660L5585,653L5577,649L5569,648L5549,635L5535,637L5524,641L5523,645L5517,647L5515,652L5526,657L5530,663L5530,669L5536,672L5544,689zM5623,609L5628,612L5635,620L5640,623L5643,627L5634,628L5639,630L5644,635L5651,639L5658,640L5664,643L5666,644L5673,652L5669,656L5669,659L5679,659L5683,653L5690,653L5693,649L5693,642L5686,638L5683,632L5678,626L5671,623L5675,619L5677,611L5675,606L5673,604L5641,591L5639,594L5645,601L5649,603L5655,603L5660,606L5664,607L5668,612L5668,617L5658,618L5663,621L5661,626L5655,625L5654,620L5650,616L5649,613L5646,613L5645,616L5646,619L5639,619L5635,617L5635,612L5630,611L5624,606L5623,609zM5739,733L5738,736L5728,737L5730,741L5741,745L5744,752L5754,750L5756,746L5762,745L5765,740L5758,735L5752,735L5746,726L5737,720L5728,720L5730,725L5735,725L5738,728L5739,733zM5557,837L5540,847L5540,847L5538,844L5538,842L5540,839L5540,832L5538,832L5536,834L5531,829L5521,824L5512,824L5501,829L5497,829L5497,827L5499,824L5499,821L5497,821L5492,819L5486,819L5484,821L5479,821L5479,819L5477,819L5477,816L5469,816L5469,819L5466,819L5464,816L5464,814L5466,811L5464,806L5462,804L5460,799L5456,793L5458,793L5456,791L5451,791L5456,781L5456,778L5453,776L5451,776L5447,773L5445,773L5447,770L5440,770L5440,768L5447,760L5453,760L5453,758L5450,754L5453,755L5455,758L5460,760L5464,759L5462,753L5456,748L5450,748L5446,746L5447,742L5451,742L5455,739L5453,730L5454,726L5450,723L5451,722L5453,719L5453,717L5458,712L5464,712L5464,709L5462,707L5460,707L5460,699L5458,699L5460,697L5464,697L5464,699L5466,699L5469,702L5469,699L5471,699L5471,694L5473,694L5477,697L5486,697L5486,694L5488,694L5488,691L5490,689L5492,689L5501,691L5512,691L5514,694L5521,694L5521,689L5512,689L5512,684L5486,684L5486,681L5484,679L5479,679L5477,676L5475,676L5473,674L5479,674L5477,671L5475,671L5475,668L5479,668L5479,666L5473,666L5471,668L5469,668L5469,671L5456,671L5466,663L5469,661L5471,661L5473,658L5477,658L5477,656L5479,656L5482,653L5486,651L5488,651L5490,648L5495,648L5495,646L5497,646L5510,638L5518,628L5521,628L5525,623L5531,617L5533,617L5536,615L5538,615L5542,612L5544,610L5549,607L5551,607L5551,605L5555,600L5555,597L5557,597L5557,595L5559,595L5557,592L5553,589L5549,584L5546,584L5540,579L5533,577L5527,577L5527,574L5525,574L5523,572L5521,572L5514,566L5518,566L5521,564L5523,564L5527,559L5529,559L5531,556L5531,551L5529,551L5525,549L5523,549L5521,546L5516,546L5516,541L5514,541L5514,538L5521,538L5521,536L5518,533L5510,533L5508,531L5505,531L5505,528L5503,526L5503,523L5512,523L5512,521L5510,518L5503,518L5505,515L5508,515L5508,508L5510,508L5510,505L5514,503L5516,503L5518,505L5518,503L5516,500L5516,495L5512,490L5512,487L5508,487L5508,485L5505,482L5503,482L5503,480L5497,472L5497,470L5492,470L5492,467L5490,467L5490,464L5488,464L5488,462L5490,462L5490,459L5512,444L5514,444L5514,442L5516,439L5508,434L5505,434L5501,429L5482,421L5477,421L5475,416L5471,411L5473,408L5477,406L5482,401L5479,398L5475,398L5479,396L5482,393L5492,393L5492,391L5495,391L5495,385L5499,385L5501,383L5505,383L5512,380L5516,380L5516,378L5525,377L5527,375L5529,378L5540,378L5540,370L5549,370L5553,373L5562,373L5562,368L5570,368L5568,365L5568,362L5572,362L5572,365L5577,365L5579,368L5583,368L5583,370L5601,370L5601,375L5581,375L5583,378L5588,378L5592,380L5598,380L5598,383L5603,380L5611,380L5611,383L5607,385L5611,385L5612,392L5614,393L5614,390L5614,385L5637,385L5644,388L5659,388L5657,385L5661,385L5666,388L5676,388L5687,393L5696,393L5696,396L5698,396L5709,398L5713,401L5718,401L5722,403L5726,403L5728,406L5731,406L5735,408L5737,411L5746,413L5748,413L5748,416L5754,416L5763,419L5767,421L5772,421L5778,424L5778,426L5793,426L5796,429L5798,429L5800,431L5804,431L5802,434L5804,434L5804,436L5819,436L5822,439L5822,447L5824,447L5824,454L5830,454L5830,457L5828,462L5828,464L5826,464L5824,467L5822,467L5822,470L5819,470L5804,480L5800,480L5798,482L5796,482L5796,485L5787,485L5780,487L5774,487L5774,490L5759,490L5754,493L5750,493L5741,490L5728,490L5722,487L5720,487L5718,485L5696,485L5692,482L5679,482L5674,480L5663,480L5657,477L5655,477L5655,475L5650,475L5648,472L5646,472L5646,475L5635,475L5635,472L5629,472L5624,470L5620,470L5620,467L5614,467L5614,470L5611,470L5605,467L5603,467L5601,464L5596,462L5592,462L5592,457L5583,457L5579,454L5577,457L5578,460L5583,459L5585,460L5585,462L5583,464L5590,467L5596,467L5596,470L5603,470L5605,472L5609,475L5605,475L5607,477L5616,477L5618,480L5614,480L5609,482L5616,482L5618,485L5631,485L5635,487L5637,490L5642,490L5646,493L5648,498L5650,498L5653,503L5648,503L5648,500L5644,500L5644,503L5646,505L5646,508L5644,510L5640,510L5637,513L5635,513L5640,518L5644,518L5644,523L5646,523L5648,526L5646,526L5650,531L5653,538L5648,538L5648,541L5653,541L5653,544L5661,549L5666,549L5668,546L5676,546L5680,548L5682,548L5682,551L5684,551L5689,554L5689,556L5687,559L5698,559L5702,561L5715,561L5715,564L5718,566L5725,566L5725,563L5729,563L5731,561L5735,561L5737,559L5739,559L5739,554L5737,554L5735,551L5735,549L5731,546L5731,544L5728,544L5724,546L5713,546L5709,541L5707,541L5702,536L5700,536L5700,533L5696,533L5694,531L5694,528L5700,528L5705,526L5705,521L5709,518L5711,518L5711,521L5720,521L5722,523L5728,523L5728,528L5735,528L5735,531L5748,531L5746,533L5763,533L5772,536L5776,538L5778,538L5778,541L5786,540L5787,536L5790,533L5794,533L5796,535L5799,533L5799,530L5801,527L5796,523L5793,523L5793,521L5791,518L5789,518L5787,515L5785,515L5785,508L5787,505L5793,505L5802,500L5804,500L5806,498L5809,498L5809,495L5813,495L5813,493L5828,493L5830,490L5832,490L5839,487L5841,485L5843,485L5848,480L5850,480L5850,477L5852,477L5852,475L5854,475L5858,477L5865,477L5865,480L5884,480L5889,482L5891,482L5893,485L5893,487L5902,487L5904,490L5904,493L5908,498L5908,493L5906,490L5906,482L5908,482L5908,480L5910,480L5910,477L5913,477L5915,475L5915,472L5917,472L5913,467L5917,467L5917,462L5915,459L5913,459L5910,457L5908,457L5908,454L5897,454L5897,450L5899,450L5899,448L5906,440L5908,440L5908,430L5910,425L5910,422L5912,422L5912,420L5910,420L5906,416L5904,416L5900,413L5895,413L5893,411L5891,411L5884,408L5882,406L5893,406L5897,408L5902,408L5904,411L5943,410L5945,412L5956,412L5958,413L5960,416L5967,421L5969,421L5973,424L5973,426L5975,429L5978,429L5978,431L5980,431L5980,434L5962,434L5954,436L5939,436L5939,439L5941,439L5941,442L5932,442L5932,444L5930,444L5930,447L5928,447L5928,449L5930,449L5934,452L5936,452L5941,454L5947,454L5949,457L5949,459L5952,459L5954,464L5960,467L5967,467L5969,464L5975,464L5975,467L5980,467L5984,464L5995,464L5995,462L6006,462L6006,459L6008,459L6008,457L6006,454L6012,447L6012,444L6010,444L6010,442L6014,439L6029,439L6032,436L6034,436L6036,434L6036,431L6038,431L6040,434L6042,434L6042,431L6049,431L6058,429L6062,429L6062,426L6068,426L6071,424L6073,424L6075,421L6081,421L6084,419L6088,419L6090,416L6096,415L6100,412L6127,411L6131,408L6131,411L6136,411L6136,413L6131,413L6131,416L6129,416L6131,419L6133,419L6138,416L6140,416L6140,413L6146,413L6146,411L6140,411L6140,408L6142,408L6142,406L6144,403L6151,403L6153,401L6159,401L6162,398L6166,398L6172,396L6185,396L6181,398L6179,398L6181,401L6179,401L6177,403L6177,406L6172,406L6172,408L6175,408L6177,411L6179,411L6179,413L6182,416L6162,417L6160,420L6178,421L6185,419L6185,421L6188,421L6192,419L6198,419L6198,421L6207,421L6207,419L6205,419L6207,416L6207,413L6209,413L6216,411L6218,411L6222,408L6233,408L6235,406L6237,406L6240,408L6250,408L6253,406L6255,406L6255,408L6261,408L6266,411L6268,411L6272,408L6276,408L6276,406L6281,403L6283,403L6285,401L6289,401L6289,403L6292,403L6292,401L6296,398L6298,398L6298,401L6300,403L6300,398L6305,398L6309,396L6320,396L6318,398L6322,398L6326,401L6328,401L6331,403L6331,406L6324,406L6322,408L6322,413L6324,413L6324,416L6344,416L6346,413L6346,411L6344,408L6341,408L6341,406L6344,406L6344,403L6346,403L6348,406L6359,406L6361,403L6363,403L6365,401L6367,401L6370,398L6374,398L6374,391L6363,391L6363,385L6359,383L6357,380L6354,380L6354,378L6352,375L6354,373L6365,373L6365,370L6367,370L6367,368L6385,368L6387,370L6422,370L6424,373L6443,373L6463,378L6469,378L6471,380L6476,380L6478,383L6484,383L6484,385L6489,385L6491,388L6497,388L6499,391L6504,391L6506,393L6512,393L6512,391L6516,391L6515,406L6489,432L6449,448L6429,476L6407,486L6373,516L6347,516L6339,532L6353,542L6339,566L6341,614L6332,648L6296,645L6252,655L6193,668L6160,665L6131,674L6131,696C6131,696 6085,711 6081,711C6078,711 6064,721 6064,721L6047,715L6031,702L6031,672L6000,668L5988,678L5990,705L5981,718L5961,729L5898,729L5856,728L5838,734L5821,749L5807,751L5775,740L5769,745L5749,756L5735,759L5722,743L5674,759L5627,764L5611,786L5585,798L5550,808L5557,837zM6127,315L6139,310L6145,312L6132,320L6143,322L6154,329L6160,324L6170,324L6168,331L6170,336L6192,336L6201,338L6219,340L6222,339L6250,345L6263,345L6273,345L6277,340L6270,335L6242,324L6229,310L6220,298L6221,288L6222,282L6230,277L6245,266L6261,254L6280,244L6288,238L6288,232L6303,228L6310,220L6309,216L6317,217L6326,218L6326,210L6336,212L6346,210L6359,205L6368,200L6362,197L6375,195L6385,188L6390,191L6404,185L6416,183L6436,178L6449,177L6464,174L6473,165L6471,158L6453,155L6439,156L6432,159L6421,158L6410,158L6394,158L6379,158L6374,161L6363,161L6349,161L6352,166L6342,166L6333,166L6321,166L6309,176L6294,176L6293,178L6283,180L6284,186L6276,185L6269,185L6258,188L6260,190L6258,194L6244,191L6236,191L6232,194L6240,199L6248,199L6247,202L6235,204L6250,207L6241,207L6232,207L6225,209L6232,215L6222,218L6217,221L6212,224L6202,230L6197,230L6183,237L6173,237L6174,242L6186,244L6198,242L6186,251L6178,254L6160,256L6159,264L6145,267L6138,271L6145,276L6146,280L6137,293L6118,293L6110,300L6112,310L6127,315zM5313,855L5310,855L5306,850L5297,850L5297,852L5293,852L5284,850L5284,847L5280,847L5276,844L5271,844L5271,847L5269,847L5271,852L5271,855L5267,857L5261,857L5258,855L5252,855L5252,852L5248,855L5235,855L5235,860L5238,862L5250,862L5250,864L5240,867L5236,867L5236,870L5237,872L5248,872L5256,875L5313,875L5315,872L5313,872L5313,870L5310,870L5310,867L5313,867L5313,862L5315,860L5317,860L5317,857L5315,857L5313,855zM6335,370L6337,373L6350,373L6354,370L6362,369L6363,368L6361,365L6357,365L6357,362L6354,362L6350,360L6344,360L6341,357L6333,352L6331,352L6331,350L6326,350L6322,347L6315,347L6313,350L6309,352L6311,352L6313,355L6309,355L6305,352L6305,355L6302,355L6307,357L6309,357L6309,360L6311,362L6320,368L6328,365L6333,365L6337,368L6337,370L6335,370zM6029,403L6021,398L6021,393L6021,388L6023,388L6023,385L6025,385L6025,383L6027,383L6029,380L6032,380L6038,378L6051,378L6051,380L6058,380L6066,385L6073,385L6075,388L6079,391L6075,396L6073,396L6073,393L6075,393L6075,391L6073,391L6068,393L6066,396L6064,396L6062,398L6060,398L6055,401L6053,401L6047,403L6029,403z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5948,986L5925,971L5883,974L5856,969L5835,980L5841,996L5810,1014L5784,1029L5787,1031L5791,1031L5791,1028L5793,1028L5796,1031L5793,1031L5793,1033L5796,1036L5796,1038L5798,1038L5798,1041L5793,1043L5791,1043L5791,1048L5783,1048L5783,1051L5787,1051L5787,1056L5785,1056L5785,1059L5783,1061L5783,1064L5789,1064L5789,1069L5791,1071L5791,1074L5789,1074L5789,1077L5787,1082L5787,1087L5759,1087L5759,1092L5757,1092L5754,1094L5746,1094L5746,1097L5744,1097L5744,1102L5746,1105L5744,1107L5741,1107L5741,1110L5759,1110L5763,1107L5765,1105L5772,1105L5772,1115L5770,1115L5767,1112L5765,1115L5763,1115L5761,1117L5759,1117L5757,1120L5748,1120L5752,1126L5744,1125L5744,1122L5739,1125L5737,1128L5733,1128L5732,1126L5731,1125L5728,1125L5731,1130L5735,1135L5741,1135L5744,1138L5744,1140L5746,1140L5748,1143L5752,1143L5752,1145L5746,1145L5746,1143L5741,1143L5741,1146L5739,1145L5735,1145L5735,1148L5733,1150L5733,1156L5731,1156L5728,1158L5728,1171L5726,1168L5715,1168L5715,1171L5711,1171L5711,1168L5707,1166L5701,1166L5701,1168L5707,1168L5707,1171L5705,1171L5705,1173L5698,1173L5698,1176L5705,1176L5713,1181L5715,1181L5718,1184L5720,1189L5722,1191L5731,1191L5731,1189L5733,1189L5741,1199L5744,1199L5746,1201L5754,1201L5757,1204L5759,1204L5759,1207L5763,1207L5765,1209L5772,1214L5774,1217L5776,1217L5776,1219L5778,1219L5787,1230L5789,1230L5789,1232L5793,1232L5793,1227L5802,1227L5806,1230L5809,1230L5809,1227L5813,1227L5813,1230L5817,1230L5819,1232L5826,1232L5832,1235L5835,1237L5837,1237L5848,1240L5850,1240L5852,1237L5861,1237L5863,1240L5871,1240L5874,1242L5876,1242L5880,1247L5887,1247L5889,1250L5893,1250L5893,1252L5900,1252L5900,1255L5897,1255L5895,1258L5910,1258L5910,1255L5913,1255L5917,1252L5921,1252L5923,1255L5926,1255L5928,1252L5930,1252L5930,1255L5936,1255L5941,1260L5952,1260L5952,1265L5949,1268L5949,1270L5958,1278L5967,1278L5969,1281L5975,1281L5975,1283L5980,1283L5980,1286L5982,1286L5988,1293L5988,1291L5991,1291L5991,1293L5995,1298L5993,1298L5995,1301L5997,1301L6001,1303L6012,1303L6012,1298L6016,1296L6019,1296L6019,1293L6021,1293L6025,1291L6027,1291L6029,1286L6029,1281L6025,1281L6023,1278L6023,1275L6016,1268L6016,1265L6014,1265L6012,1263L6012,1260L6010,1260L6010,1258L6006,1258L6006,1250L6003,1250L6003,1247L6001,1247L5999,1245L5999,1237L6001,1237L6003,1235L5999,1235L5999,1230L6002,1226L6006,1214L6002,1218L5999,1219L5995,1207L5991,1207L5988,1204L5988,1201L5986,1201L5982,1199L5978,1199L5978,1194L5980,1191L5980,1189L5984,1189L5984,1186L5988,1186L5991,1184L5991,1181L5997,1173L5999,1168L5999,1166L6001,1163L5999,1161L6001,1161L6003,1160L6003,1161L6006,1161L6006,1159L6010,1158L6010,1156L6021,1156L6025,1150L6027,1150L6029,1148L6032,1148L6032,1150L6034,1153L6036,1153L6034,1148L6034,1145L6032,1145L6034,1143L6040,1143L6042,1140L6047,1138L6049,1138L6049,1135L6047,1135L6040,1130L6038,1133L6038,1130L6034,1130L6034,1128L6032,1130L6029,1130L6029,1128L6027,1125L6027,1122L6034,1122L6036,1125L6040,1125L6042,1122L6042,1120L6034,1112L6032,1105L6025,1097L6023,1097L6021,1094L6021,1092L6019,1089L6003,1089L6001,1087L5997,1087L5997,1092L5993,1089L5991,1089L5991,1074L5986,1071L5982,1071L5978,1069L5973,1069L5973,1064L5975,1061L5980,1051L5982,1051L5984,1048L5986,1048L5986,1046L5988,1046L5988,1041L5984,1041L5984,1038L5982,1038L5982,1031L5984,1020L5988,1020L5988,1018L5993,1018L5993,1015L5995,1015L5997,1013L5995,1013L5995,1008L5997,1005L5999,1005L5999,1004L5988,987L5948,986z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6389,969L6378,969L6376,967L6374,967L6374,964L6363,964L6359,962L6359,959L6361,959L6361,957L6354,954L6352,954L6352,957L6350,957L6350,954L6348,954L6348,952L6354,952L6359,946L6367,946L6367,944L6372,944L6351,938L6325,931L6323,902L6336,878L6327,868L6293,882L6280,859L6287,854L6309,860L6331,844L6321,824L6279,822L6279,800L6297,792L6299,778L6317,776L6317,764L6327,747L6323,730L6315,722L6317,712L6332,648L6296,645L6252,655L6193,668L6160,665L6131,674L6131,696C6131,696 6085,711 6081,711C6078,711 6064,721 6064,721L6047,715L6031,702L6031,672L6000,668L5988,678L5990,705L5986,711L5994,717L6002,737L5984,747L5969,767L5931,770L5921,782L5883,783L5885,804L5871,813L5879,827L5846,851L5862,861L5862,882L5858,906L5880,932L5871,959L5876,972L5883,974L5925,971L5948,986L5988,987L5999,1004L5999,1003L6003,1003L6012,1008L6016,1013L6019,1013L6019,1018L6021,1020L6025,1023L6027,1023L6027,1020L6034,1020L6036,1018L6038,1018L6040,1015L6036,1010L6036,1008L6034,1005L6034,997L6038,997L6042,995L6042,992L6045,992L6045,990L6053,990L6053,985L6051,985L6053,982L6053,980L6066,980L6068,977L6071,977L6071,975L6079,975L6079,969L6086,969L6086,962L6088,962L6090,964L6092,964L6092,962L6090,959L6094,959L6094,962L6107,962L6110,964L6105,964L6105,967L6110,969L6112,967L6116,967L6116,969L6118,969L6120,967L6120,964L6123,962L6129,962L6129,959L6136,959L6138,964L6138,967L6140,967L6140,969L6144,969L6144,967L6149,967L6151,969L6153,969L6155,967L6166,967L6170,972L6170,975L6172,977L6179,977L6185,980L6185,985L6188,985L6190,987L6194,987L6194,992L6192,992L6192,997L6194,997L6194,1000L6196,1000L6198,997L6201,997L6201,995L6198,992L6201,990L6201,987L6196,987L6196,982L6201,982L6209,987L6216,995L6224,995L6224,997L6227,997L6227,1000L6229,1000L6229,997L6231,997L6233,995L6237,995L6240,992L6240,990L6242,987L6246,987L6248,985L6248,982L6253,982L6253,985L6257,985L6257,980L6259,980L6259,982L6268,982L6268,980L6270,982L6272,982L6274,987L6285,987L6285,980L6287,980L6296,982L6298,982L6298,980L6302,980L6307,982L6309,982L6309,985L6307,987L6309,987L6311,990L6318,992L6318,995L6333,995L6335,997L6333,997L6333,1000L6341,1000L6341,997L6344,997L6344,995L6346,992L6346,990L6348,990L6348,987L6352,987L6352,992L6354,992L6357,995L6370,995L6374,992L6383,992L6385,990L6387,990L6389,987L6389,982L6391,977L6391,975L6389,969z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5880,932L5858,906L5862,882L5862,861L5846,851L5879,827L5871,813L5885,804L5883,783L5921,782L5931,770L5969,767L5984,747L6002,737L5994,717L5986,711L5981,718L5961,729L5898,729L5856,728L5838,734L5821,749L5807,751L5775,740L5769,745L5749,756L5735,759L5722,743L5674,759L5627,764L5611,786L5585,798L5550,808L5557,837L5540,847L5542,847L5542,852L5540,855L5538,855L5536,857L5536,860L5540,860L5546,867L5544,867L5544,870L5549,870L5551,875L5551,878L5562,883L5566,883L5566,890L5564,890L5564,893L5570,893L5572,890L5583,895L5581,898L5581,901L5583,901L5588,903L5590,903L5590,906L5588,908L5583,911L5581,911L5577,916L5568,916L5564,913L5564,911L5553,911L5553,916L5551,916L5549,918L5553,921L5555,921L5555,924L5557,924L5559,926L5557,929L5555,929L5557,931L5559,931L5560,941L5562,944L5564,944L5564,945L5564,946L5566,946L5566,948L5566,949L5577,949L5577,946L5579,946L5579,941L5581,941L5581,939L5585,941L5592,941L5594,944L5596,944L5596,941L5598,941L5603,939L5609,939L5611,941L5614,939L5620,939L5627,944L5629,946L5627,946L5627,949L5629,949L5629,952L5633,954L5635,957L5637,957L5637,959L5635,959L5633,962L5629,962L5631,964L5631,967L5633,967L5633,969L5635,975L5637,975L5642,977L5657,977L5657,982L5663,982L5661,985L5663,985L5663,987L5666,990L5666,992L5668,995L5663,995L5666,1000L5670,1005L5672,1005L5674,1003L5687,1003L5687,1005L5689,1008L5692,1008L5692,1005L5694,1008L5696,1008L5696,1010L5698,1010L5702,1005L5715,1005L5715,1003L5722,1003L5726,1010L5728,1013L5731,1013L5731,1015L5735,1015L5735,1018L5737,1018L5737,1020L5741,1015L5746,1013L5746,1015L5748,1018L5757,1018L5759,1020L5761,1020L5763,1023L5767,1023L5767,1020L5770,1020L5772,1023L5772,1026L5776,1026L5776,1023L5778,1023L5778,1026L5780,1026L5780,1028L5783,1028L5784,1029L5810,1014L5841,996L5835,980L5856,969L5876,972L5871,959L5880,932z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7821,3494L7820,3486L7817,3484L7818,3495L7821,3502L7825,3504L7826,3502L7821,3494zM8261,3136L8282,3685L8271,3685L8265,3688L8263,3688L8258,3690L8256,3690L8237,3701L8232,3701L8228,3703L8224,3703L8217,3706L8215,3706L8213,3708L8191,3708L8189,3706L8180,3706L8169,3713L8167,3713L8167,3716L8161,3716L8159,3718L8152,3721L8150,3724L8150,3726L8143,3726L8143,3729L8133,3729L8128,3734L8128,3736L8124,3744L8124,3749L8122,3749L8122,3752L8120,3752L8117,3754L8117,3757L8115,3757L8113,3759L8107,3759L8107,3762L8104,3762L8102,3764L8100,3762L8100,3759L8085,3759L8081,3762L8076,3762L8076,3764L8072,3764L8072,3759L8070,3759L8070,3757L8065,3757L8065,3759L8061,3759L8057,3757L8048,3757L8044,3759L8029,3759L8026,3762L8020,3762L8016,3759L8013,3762L8007,3762L8007,3764L8005,3764L8005,3767L8003,3767L8000,3772L7998,3772L7998,3775L7996,3777L7992,3780L7990,3780L7987,3777L7983,3777L7979,3780L7979,3785L7974,3785L7972,3787L7970,3787L7970,3790L7968,3790L7966,3792L7956,3799L7948,3800L7940,3798L7935,3795L7929,3795L7929,3798L7925,3798L7922,3795L7920,3798L7916,3795L7914,3795L7912,3792L7909,3792L7907,3790L7903,3790L7901,3787L7901,3785L7896,3782L7892,3777L7888,3775L7886,3775L7883,3772L7879,3772L7879,3775L7877,3775L7875,3772L7875,3759L7873,3754L7873,3752L7875,3747L7877,3749L7877,3752L7886,3752L7894,3741L7894,3729L7892,3729L7893,3714L7895,3712L7894,3708L7894,3706L7896,3706L7896,3693L7894,3688L7894,3685L7892,3685L7886,3670L7886,3668L7881,3662L7881,3660L7879,3657L7877,3652L7877,3647L7875,3642L7875,3634L7873,3634L7873,3619L7875,3619L7875,3616L7873,3611L7873,3606L7866,3599L7866,3596L7864,3596L7864,3588L7862,3583L7855,3576L7855,3573L7853,3573L7853,3571L7851,3571L7851,3565L7849,3563L7849,3560L7851,3560L7851,3553L7849,3550L7849,3545L7845,3540L7842,3532L7840,3532L7838,3527L7834,3522L7834,3520L7832,3520L7827,3514L7826,3511L7827,3507L7829,3504L7834,3509L7834,3517L7838,3522L7842,3522L7842,3509L7839,3510L7834,3504L7834,3497L7832,3494L7832,3492L7829,3492L7832,3489L7832,3486L7834,3486L7834,3489L7840,3497L7840,3502L7838,3502L7838,3504L7840,3507L7842,3507L7842,3504L7845,3502L7845,3509L7847,3512L7849,3517L7853,3514L7853,3509L7851,3507L7853,3502L7855,3499L7855,3497L7849,3489L7847,3484L7845,3484L7845,3479L7842,3476L7842,3474L7838,3474L7838,3469L7836,3466L7836,3458L7834,3458L7834,3456L7832,3456L7832,3451L7829,3451L7829,3443L7832,3441L7832,3435L7834,3433L7834,3428L7836,3425L7836,3423L7838,3423L7840,3420L7840,3407L7842,3405L7842,3400L7840,3397L7840,3395L7838,3395L7838,3387L7840,3387L7842,3382L7842,3377L7845,3372L7845,3369L7847,3367L7849,3367L7849,3364L7851,3364L7851,3367L7849,3377L7851,3379L7851,3387L7853,3387L7858,3384L7858,3382L7860,3377L7862,3374L7864,3369L7864,3367L7866,3367L7866,3364L7868,3364L7870,3361L7875,3361L7877,3359L7879,3359L7881,3356L7883,3356L7888,3354L7894,3346L7899,3346L7899,3341L7901,3341L7901,3339L7907,3339L7907,3336L7909,3333L7912,3333L7916,3331L7918,3328L7920,3328L7922,3326L7925,3326L7925,3328L7929,3328L7931,3326L7935,3326L7935,3328L7951,3328L7951,3326L7955,3326L7955,3323L7957,3323L7959,3321L7959,3318L7961,3318L7964,3316L7964,3318L7966,3318L7970,3316L7981,3316L7981,3313L7985,3308L7985,3305L7987,3305L7992,3303L7996,3305L7998,3305L8000,3308L8003,3308L8005,3305L8007,3305L8013,3303L8020,3303L8022,3300L8024,3300L8029,3298L8037,3295L8039,3293L8042,3293L8044,3290L8046,3290L8050,3285L8050,3282L8055,3277L8055,3275L8057,3272L8059,3267L8063,3262L8063,3254L8070,3254L8070,3252L8072,3249L8078,3244L8078,3242L8081,3242L8078,3239L8076,3239L8076,3237L8074,3231L8074,3216L8076,3211L8076,3208L8078,3208L8081,3206L8085,3206L8085,3201L8087,3201L8089,3198L8091,3193L8094,3193L8094,3188L8098,3188L8098,3191L8096,3191L8096,3196L8098,3196L8098,3198L8100,3198L8100,3201L8102,3206L8107,3211L8107,3216L8111,3221L8111,3224L8113,3224L8113,3219L8115,3214L8113,3211L8113,3206L8115,3206L8117,3208L8117,3211L8120,3211L8120,3206L8122,3203L8117,3203L8117,3201L8113,3196L8113,3193L8111,3193L8109,3191L8115,3191L8117,3188L8117,3186L8113,3186L8113,3180L8117,3178L8120,3180L8120,3186L8122,3188L8122,3186L8124,3183L8128,3183L8130,3186L8130,3188L8135,3188L8135,3180L8137,3178L8139,3178L8139,3180L8141,3178L8141,3173L8139,3173L8137,3170L8135,3165L8135,3163L8137,3157L8143,3157L8143,3150L8146,3150L8156,3143L8160,3143L8159,3140L8159,3137L8156,3135L8156,3132L8161,3127L8167,3127L8169,3125L8169,3117L8172,3117L8173,3122L8176,3124L8176,3129L8178,3129L8180,3127L8182,3127L8182,3119L8185,3117L8182,3109L8182,3106L8185,3106L8187,3109L8187,3114L8189,3117L8189,3112L8193,3109L8193,3112L8195,3117L8198,3117L8200,3114L8202,3109L8202,3101L8208,3101L8211,3104L8211,3109L8213,3109L8213,3106L8219,3106L8230,3119L8232,3124L8241,3129L8243,3135L8240,3142L8239,3146L8244,3144L8250,3133L8257,3133L8261,3136z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8523,3199L8522,3198L8518,3198L8518,3196L8516,3196L8514,3193L8514,3191L8512,3191L8509,3188L8509,3186L8507,3186L8507,3183L8503,3180L8499,3180L8496,3178L8494,3178L8494,3175L8490,3173L8488,3173L8483,3170L8481,3173L8479,3170L8477,3170L8477,3168L8475,3165L8470,3163L8466,3163L8466,3157L8464,3155L8460,3152L8457,3150L8455,3150L8455,3147L8453,3147L8449,3145L8447,3142L8444,3142L8444,3140L8442,3140L8442,3137L8440,3132L8444,3132L8444,3127L8447,3127L8447,3124L8451,3117L8455,3117L8455,3109L8457,3104L8460,3101L8460,3099L8455,3099L8453,3096L8455,3091L8455,3086L8457,3083L8464,3083L8466,3081L8466,3078L8468,3078L8468,3083L8470,3083L8473,3081L8473,3068L8475,3071L8479,3061L8481,3058L8486,3055L8483,3053L8483,3050L8479,3050L8479,3053L8477,3053L8475,3050L8473,3043L8470,3043L8466,3045L8464,3048L8464,3050L8468,3050L8468,3053L8466,3058L8457,3058L8457,3055L8458,3051L8456,3048L8454,3050L8451,3051L8450,3050L8454,3041L8458,3038L8457,3035L8446,3046L8442,3048L8440,3048L8436,3053L8434,3053L8429,3050L8425,3045L8425,3043L8421,3043L8418,3045L8408,3045L8408,3043L8403,3038L8403,3040L8399,3040L8399,3038L8401,3035L8397,3035L8392,3038L8390,3038L8386,3035L8384,3035L8379,3035L8379,3033L8377,3030L8377,3027L8373,3022L8371,3022L8371,3025L8369,3027L8364,3027L8362,3022L8362,3020L8360,3020L8360,3017L8356,3015L8356,3017L8353,3017L8351,3015L8353,3021L8347,3015L8343,3017L8340,3020L8340,3022L8347,3022L8347,3025L8349,3027L8351,3027L8358,3025L8360,3025L8360,3027L8364,3033L8364,3048L8360,3048L8349,3053L8330,3053L8330,3050L8323,3050L8323,3048L8319,3048L8319,3050L8321,3050L8321,3055L8315,3055L8315,3058L8312,3058L8310,3055L8308,3055L8308,3063L8306,3063L8302,3066L8302,3073L8295,3073L8295,3081L8299,3086L8293,3094L8289,3094L8289,3091L8286,3094L8286,3101L8284,3109L8282,3109L8273,3119L8273,3122L8279,3124L8282,3128L8282,3132L8283,3135L8278,3136L8283,3140L8281,3144L8275,3137L8271,3137L8272,3144L8269,3144L8268,3137L8263,3136L8261,3136L8275,3498L8527,3494L8523,3199zM8475,3101L8475,3104L8470,3104L8470,3112L8468,3117L8475,3119L8477,3117L8479,3117L8481,3119L8483,3119L8486,3114L8483,3114L8481,3115L8479,3114L8477,3114L8477,3112L8479,3106L8481,3106L8483,3104L8483,3101L8481,3101L8481,3104L8477,3104L8477,3099L8475,3101zM8297,3038L8293,3038L8293,3033L8295,3033L8295,3035L8297,3033L8297,3027L8299,3022L8302,3022L8302,3025L8303,3028L8304,3029L8304,3025L8302,3020L8302,3017L8304,3017L8310,3025L8315,3022L8317,3022L8317,3020L8319,3022L8321,3022L8321,3020L8323,3020L8323,3022L8325,3022L8325,3017L8327,3017L8330,3020L8332,3020L8334,3025L8334,3027L8327,3035L8325,3035L8319,3043L8317,3040L8315,3040L8315,3038L8310,3038L8302,3038L8299,3035L8297,3038z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8945,3583L8945,3581L8947,3581L8947,3573L8945,3573L8945,3571L8943,3571L8943,3563L8940,3560L8940,3558L8938,3555L8938,3550L8936,3548L8932,3545L8932,3537L8934,3537L8934,3514L8932,3514L8932,3509L8934,3507L8934,3504L8936,3502L8936,3499L8932,3499L8932,3497L8930,3494L8927,3494L8927,3486L8930,3484L8927,3479L8925,3479L8923,3476L8921,3476L8919,3471L8917,3471L8917,3463L8914,3463L8914,3461L8910,3461L8910,3458L8908,3458L8904,3453L8904,3451L8901,3448L8901,3443L8899,3443L8897,3438L8893,3435L8893,3438L8891,3438L8888,3438L8891,3438L8888,3435L8886,3435L8884,3430L8880,3428L8883,3427L8882,3418L8875,3420L8871,3420L8869,3415L8869,3395L8867,3392L8867,3384L8865,3382L8862,3382L8862,3390L8860,3387L8858,3387L8856,3384L8852,3384L8852,3379L8849,3377L8849,3374L8846,3374L8845,3377L8846,3388L8842,3385L8839,3382L8836,3382L8836,3379L8832,3367L8832,3356L8830,3356L8828,3351L8828,3349L8826,3346L8826,3341L8823,3339L8819,3336L8817,3333L8815,3333L8813,3328L8810,3328L8810,3323L8813,3321L8817,3321L8813,3313L8810,3313L8806,3308L8804,3308L8804,3313L8802,3313L8800,3310L8800,3305L8797,3303L8789,3303L8789,3300L8787,3300L8787,3298L8785,3298L8785,3300L8782,3300L8780,3298L8780,3293L8778,3290L8776,3285L8772,3288L8767,3280L8765,3280L8763,3282L8761,3282L8759,3280L8754,3280L8754,3277L8752,3277L8748,3275L8748,3272L8746,3272L8743,3270L8743,3262L8746,3262L8744,3249L8737,3249L8737,3239L8739,3239L8739,3226L8733,3208L8733,3206L8735,3203L8730,3203L8722,3193L8722,3191L8720,3191L8720,3183L8722,3178L8722,3175L8720,3175L8720,3173L8717,3173L8717,3160L8715,3157L8715,3142L8717,3142L8717,3140L8713,3137L8711,3135L8707,3135L8707,3129L8702,3129L8696,3122L8696,3114L8694,3114L8694,3117L8691,3117L8691,3119L8689,3119L8685,3122L8683,3124L8674,3124L8674,3119L8672,3119L8672,3109L8670,3109L8670,3106L8668,3101L8668,3094L8670,3094L8670,3091L8668,3089L8668,3086L8665,3078L8668,3078L8668,3071L8665,3071L8663,3073L8663,3066L8665,3063L8661,3063L8661,3058L8659,3055L8655,3055L8655,3048L8659,3043L8657,3040L8650,3040L8648,3038L8648,3017L8646,3015L8646,3010L8642,3007L8642,3002L8637,3002L8637,3004L8635,3004L8635,3007L8633,3007L8631,3010L8629,3010L8629,3025L8626,3027L8626,3030L8624,3038L8624,3043L8620,3043L8620,3045L8618,3050L8618,3053L8616,3055L8618,3058L8618,3063L8620,3066L8620,3068L8618,3068L8618,3071L8616,3073L8613,3073L8613,3076L8616,3081L8616,3086L8613,3091L8613,3094L8611,3094L8611,3101L8609,3101L8609,3106L8611,3106L8611,3109L8613,3112L8613,3119L8611,3122L8611,3124L8613,3135L8613,3140L8616,3140L8616,3147L8613,3150L8609,3157L8609,3178L8607,3183L8607,3186L8605,3186L8605,3193L8603,3196L8603,3198L8596,3206L8596,3211L8594,3219L8594,3221L8592,3221L8587,3226L8583,3226L8583,3229L8579,3229L8572,3231L8568,3231L8568,3229L8566,3226L8561,3226L8559,3224L8557,3224L8557,3221L8553,3219L8548,3219L8548,3216L8546,3216L8546,3208L8542,3203L8538,3203L8533,3201L8527,3201L8523,3199L8527,3493L8529,3494L8610,3496L8610,3590L8816,3596L8821,3599L8833,3592L8843,3587L8862,3588L8874,3593L8880,3592L8884,3598L8887,3606L8893,3603L8901,3601L8912,3595L8909,3591L8916,3585L8923,3584L8939,3585L8947,3585L8947,3583L8945,3583zM8932,3494L8934,3494L8934,3492L8932,3492L8932,3489L8934,3486L8936,3481L8936,3479L8938,3476L8938,3474L8940,3469L8938,3469L8938,3458L8936,3458L8936,3461L8934,3463L8936,3463L8936,3471L8934,3471L8934,3474L8932,3474L8932,3481L8930,3481L8930,3484L8930,3494L8932,3494zM8553,3196L8555,3196L8555,3193L8557,3191L8559,3193L8561,3191L8561,3188L8555,3188L8551,3191L8548,3191L8546,3193L8546,3198L8551,3198L8553,3196zM8927,3486L8930,3484L8930,3494L8927,3494L8927,3486z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8611,3590L8610,3590L8610,3496L8529,3494L8527,3493L8527,3494L8275,3498L8282,3685L8291,3685L8295,3683L8299,3683L8310,3685L8315,3685L8319,3683L8321,3683L8321,3680L8325,3680L8327,3683L8332,3683L8334,3685L8338,3688L8340,3688L8343,3690L8351,3696L8351,3698L8360,3698L8360,3696L8369,3696L8371,3698L8375,3701L8377,3701L8377,3703L8382,3703L8386,3706L8388,3706L8388,3703L8395,3703L8399,3708L8399,3716L8401,3716L8401,3713L8408,3713L8410,3716L8410,3724L8408,3724L8408,3721L8405,3721L8405,3726L8408,3729L8410,3734L8410,3736L8414,3736L8418,3734L8421,3736L8423,3736L8425,3741L8425,3744L8427,3747L8427,3749L8425,3752L8429,3754L8431,3754L8431,3757L8436,3759L8438,3762L8438,3769L8440,3772L8440,3777L8435,3777L8435,3781L8444,3787L8447,3792L8449,3795L8449,3792L8453,3792L8455,3795L8457,3795L8460,3790L8460,3787L8457,3787L8455,3790L8454,3788L8455,3785L8455,3780L8460,3780L8462,3775L8464,3775L8464,3772L8466,3772L8466,3769L8468,3767L8468,3764L8470,3764L8475,3762L8477,3759L8481,3757L8483,3757L8483,3754L8490,3754L8494,3749L8496,3744L8496,3739L8499,3736L8499,3734L8503,3731L8507,3731L8507,3716L8509,3716L8509,3721L8512,3724L8512,3731L8514,3731L8514,3736L8509,3736L8509,3741L8512,3744L8512,3749L8509,3749L8507,3754L8503,3759L8503,3762L8501,3764L8501,3767L8499,3767L8499,3780L8501,3785L8499,3792L8499,3795L8496,3795L8494,3792L8486,3792L8486,3795L8483,3798L8483,3803L8481,3803L8481,3805L8486,3805L8486,3803L8492,3803L8499,3800L8503,3800L8503,3803L8505,3803L8507,3800L8507,3798L8509,3792L8509,3787L8512,3785L8512,3777L8514,3775L8514,3772L8516,3767L8520,3772L8520,3780L8522,3780L8527,3785L8527,3792L8529,3795L8529,3798L8527,3798L8527,3808L8525,3808L8520,3813L8518,3813L8516,3815L8518,3818L8529,3818L8529,3815L8531,3815L8531,3813L8535,3813L8540,3812L8544,3818L8555,3827L8560,3834L8564,3846L8564,3849L8566,3849L8566,3856L8564,3856L8564,3859L8561,3859L8561,3861L8564,3864L8564,3866L8561,3866L8564,3869L8564,3872L8566,3872L8570,3877L8572,3877L8572,3879L8579,3887L8579,3889L8583,3894L8585,3894L8587,3897L8592,3897L8592,3894L8595,3894L8610,3595L8611,3590zM8503,3821L8516,3821L8516,3826L8512,3826L8509,3825L8507,3825L8503,3826L8503,3831L8496,3831L8496,3828L8492,3828L8490,3828L8490,3831L8477,3831L8477,3828L8475,3828L8475,3826L8473,3826L8475,3821L8483,3818L8490,3818L8492,3815L8501,3815L8503,3818L8503,3821z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8939,3585L8923,3584L8916,3585L8909,3591L8912,3595L8901,3601L8893,3603L8887,3606L8884,3598L8880,3592L8874,3593L8862,3588L8843,3587L8833,3592L8821,3599L8816,3596L8611,3590L8610,3595L8602,3755L8609,3754L8620,3758L8630,3756L8640,3766L8641,3774L8647,3774L8659,3774L8661,3785L8671,3796L8679,3796L8688,3816L8695,3822L8708,3816L8717,3820L8736,3820L8749,3825L8769,3822L8778,3832L8781,3850L8789,3857L8812,3867L8840,3883L8841,3882L8841,3879L8845,3879L8847,3877L8845,3874L8845,3869L8847,3869L8847,3866L8845,3864L8845,3854L8847,3854L8847,3843L8849,3843L8849,3838L8852,3838L8852,3826L8856,3815L8858,3813L8860,3808L8860,3805L8862,3803L8865,3803L8867,3800L8867,3798L8869,3798L8869,3790L8871,3790L8871,3782L8873,3775L8873,3772L8875,3769L8878,3769L8880,3764L8878,3764L8878,3762L8882,3762L8882,3759L8886,3747L8888,3744L8888,3741L8886,3741L8888,3739L8891,3739L8893,3736L8893,3731L8897,3726L8901,3724L8906,3724L8906,3721L8908,3718L8910,3718L8912,3716L8912,3713L8914,3713L8917,3711L8917,3701L8919,3698L8919,3696L8921,3696L8921,3693L8925,3688L8925,3685L8927,3685L8927,3683L8930,3678L8930,3673L8932,3665L8932,3660L8930,3660L8930,3652L8932,3650L8934,3639L8936,3637L8938,3632L8938,3624L8940,3616L8940,3609L8943,3601L8943,3599L8945,3599L8945,3596L8947,3596L8947,3585L8939,3585z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8789,3857L8781,3850L8778,3832L8769,3822L8749,3825L8736,3820L8717,3820L8708,3816L8695,3822L8688,3816L8679,3796L8671,3796L8661,3785L8659,3774L8647,3774L8641,3774L8640,3766L8630,3756L8620,3758L8609,3754L8602,3755L8595,3894L8596,3894L8596,3897L8600,3897L8605,3902L8607,3902L8607,3905L8609,3905L8609,3907L8616,3907L8616,3902L8624,3902L8624,3905L8626,3905L8629,3907L8633,3907L8635,3905L8639,3907L8642,3910L8646,3912L8648,3912L8652,3915L8657,3915L8657,3917L8663,3917L8663,3920L8665,3920L8668,3923L8672,3920L8672,3917L8676,3917L8690,3904L8695,3904L8701,3902L8703,3897L8696,3897L8694,3896L8702,3892L8702,3889L8707,3889L8711,3894L8711,3900L8709,3905L8707,3905L8704,3907L8702,3907L8704,3910L8709,3910L8715,3902L8722,3902L8724,3905L8724,3907L8722,3907L8720,3910L8720,3912L8724,3915L8724,3917L8726,3917L8726,3915L8730,3915L8733,3917L8730,3917L8733,3923L8737,3923L8737,3920L8743,3925L8744,3930L8748,3932L8752,3926L8750,3921L8746,3922L8741,3917L8750,3917L8754,3915L8761,3915L8763,3912L8767,3910L8769,3907L8769,3905L8774,3902L8778,3897L8780,3897L8782,3894L8785,3894L8785,3892L8791,3892L8791,3889L8800,3889L8800,3887L8832,3887L8834,3884L8839,3884L8840,3883L8812,3867L8789,3857zM8791,3951L8789,3951L8785,3953L8785,3956L8787,3956L8789,3958L8791,3963L8793,3966L8793,3968L8795,3968L8800,3966L8800,3958L8795,3958L8795,3956L8791,3951zM8800,3989L8797,3986L8793,3984L8791,3984L8789,3986L8789,3989L8787,3989L8782,3986L8780,3986L8780,3989L8778,3989L8778,3991L8765,3991L8761,3994L8754,3994L8752,3996L8741,3996L8717,3986L8711,3986L8709,3984L8700,3984L8700,3989L8698,3989L8698,3994L8700,3996L8700,4002L8702,4004L8709,4019L8713,4022L8715,4025L8715,4030L8722,4035L8724,4035L8724,4037L8722,4042L8722,4040L8720,4040L8720,4037L8717,4035L8715,4035L8715,4032L8713,4032L8713,4035L8715,4040L8715,4045L8717,4045L8717,4047L8720,4050L8720,4053L8722,4055L8724,4055L8724,4058L8728,4063L8730,4068L8735,4068L8735,4070L8737,4073L8743,4073L8743,4076L8752,4076L8754,4078L8763,4078L8763,4070L8765,4070L8767,4068L8770,4067L8770,4071L8774,4073L8776,4069L8773,4065L8775,4062L8776,4052L8782,4052L8786,4056L8781,4058L8785,4067L8791,4066L8793,4064L8793,4054L8790,4049L8791,4042L8794,4046L8796,4043L8793,4039L8793,4027L8795,4022L8797,4022L8797,4025L8800,4030L8800,4032L8802,4032L8802,4027L8800,4027L8800,3989zM8683,3953L8685,3956L8685,3958L8681,3963L8678,3963L8676,3963L8676,3961L8678,3961L8678,3958L8676,3958L8676,3951L8678,3948L8678,3945L8683,3945L8683,3953z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7629,1884L7625,1875L7606,1875L7598,1873L7595,1866L7584,1869L7576,1860L7582,1854L7593,1852L7607,1857L7613,1852L7625,1850L7632,1840L7645,1836L7659,1828L7671,1831L7685,1835L7688,1824L7700,1825L7713,1816L7721,1807L7721,1795L7719,1784L7721,1773L7708,1776L7703,1773L7713,1767L7723,1758L7719,1743L7717,1732L7711,1726L7714,1713L7716,1702L7709,1698L7701,1693L7693,1683L7692,1672L7701,1667L7707,1672L7717,1671L7724,1664L7732,1661L7735,1654L7731,1648L7729,1640L7717,1635L7707,1637L7697,1632L7683,1625L7675,1623L7666,1624L7654,1614L7645,1617L7640,1612C7640,1612 7631,1609 7625,1607C7620,1605 7611,1608 7611,1608L7600,1602L7592,1610L7579,1612L7566,1606L7563,1597C7563,1597 7554,1599 7552,1599C7550,1599 7544,1597 7544,1597L7538,1586L7529,1580L7522,1573L7511,1578L7493,1583L7494,1592L7487,1599L7476,1602L7463,1604L7458,1611L7446,1608L7447,1598L7436,1603L7428,1602C7428,1602 7421,1598 7419,1599C7417,1600 7411,1604 7411,1604L7394,1598L7373,1602L7369,1614L7362,1617L7364,1622L7360,1632L7355,1639L7346,1639L7340,1643C7340,1643 7332,1645 7330,1645C7328,1645 7316,1637 7316,1637L7305,1627L7298,1621L7289,1614L7285,1612L7278,1617L7259,1610L7253,1607L7236,1607L7221,1602L7209,1599L7197,1595L7186,1595L7176,1587L7175,1578L7169,1571L7172,1558L7171,1552L7168,1547L7171,1532L7171,1522L7178,1512L7176,1502L7178,1496L7171,1494L7159,1494L7151,1493L7137,1487L7123,1484L7109,1484L7102,1489L7090,1487L7075,1490L7065,1495L7051,1496L7039,1503L7027,1505L7013,1501L6994,1493L6982,1489L6967,1491C6967,1491 6960,1499 6957,1499C6953,1499 6942,1492 6942,1492L6931,1487L6923,1488L6918,1496L6916,1504L6914,1511L6896,1512L6893,1518L6890,1523L6881,1528L6874,1529L6874,1530L6876,1530L6876,1533L6874,1533L6872,1536L6868,1536L6868,1541L6870,1546L6870,1556L6872,1556L6872,1558L6874,1558L6874,1561L6876,1561L6879,1564L6881,1564L6881,1566L6883,1566L6885,1569L6885,1574L6887,1574L6887,1576L6889,1579L6889,1584L6887,1584L6887,1587L6883,1589L6879,1589L6874,1594L6868,1587L6870,1587L6870,1584L6866,1584L6866,1587L6859,1587L6859,1589L6861,1592L6861,1597L6863,1599L6863,1602L6866,1602L6866,1604L6870,1604L6870,1607L6868,1607L6868,1615L6870,1615L6870,1620L6868,1620L6868,1627L6872,1627L6876,1625L6876,1622L6879,1622L6881,1625L6881,1627L6883,1630L6883,1632L6885,1632L6885,1635L6887,1635L6889,1640L6894,1640L6894,1638L6900,1638L6900,1640L6902,1640L6902,1643L6909,1645L6911,1645L6909,1650L6911,1653L6913,1653L6918,1655L6920,1655L6924,1658L6924,1661L6931,1661L6931,1663L6933,1666L6933,1668L6935,1671L6935,1668L6937,1671L6937,1668L6939,1668L6941,1666L6941,1658L6946,1658L6948,1655L6950,1658L6961,1658L6961,1661L6963,1666L6963,1668L6965,1668L6976,1673L6976,1676L6980,1678L6982,1681L6987,1681L6989,1683L6993,1683L6998,1689L6998,1691L7002,1696L7002,1699L7004,1699L7006,1696L7011,1694L7017,1694L7019,1696L7019,1699L7021,1701L7021,1706L7026,1706L7026,1712L7032,1712L7034,1714L7034,1717L7037,1717L7041,1719L7043,1717L7043,1714L7045,1714L7047,1717L7047,1719L7045,1719L7045,1727L7063,1727L7063,1729L7067,1729L7067,1732L7069,1734L7069,1740L7071,1740L7073,1737L7073,1734L7071,1732L7076,1729L7076,1734L7080,1737L7082,1740L7084,1737L7084,1732L7091,1732L7091,1734L7095,1737L7099,1737L7099,1740L7102,1740L7102,1742L7106,1742L7108,1740L7112,1742L7119,1742L7119,1740L7128,1740L7130,1737L7136,1737L7138,1734L7141,1734L7143,1732L7145,1734L7149,1734L7149,1747L7147,1747L7147,1755L7149,1757L7151,1757L7151,1752L7156,1752L7156,1747L7158,1747L7158,1742L7160,1742L7162,1740L7164,1740L7164,1734L7167,1734L7171,1729L7175,1729L7175,1727L7177,1727L7180,1724L7182,1724L7186,1727L7193,1727L7193,1729L7190,1729L7190,1732L7193,1734L7195,1732L7197,1734L7199,1734L7200,1736L7201,1734L7208,1734L7208,1737L7212,1737L7212,1734L7214,1734L7214,1732L7216,1732L7216,1734L7221,1734L7221,1737L7227,1737L7227,1742L7232,1742L7234,1745L7238,1745L7238,1742L7242,1742L7242,1740L7245,1740L7245,1742L7249,1742L7251,1740L7253,1740L7253,1737L7255,1737L7255,1732L7258,1729L7262,1729L7262,1727L7266,1727L7268,1724L7271,1724L7271,1722L7273,1719L7273,1717L7275,1714L7290,1714L7292,1712L7292,1709L7294,1706L7297,1706L7297,1704L7303,1696L7307,1696L7307,1694L7310,1691L7312,1691L7318,1699L7323,1699L7329,1701L7333,1701L7333,1699L7338,1694L7342,1691L7346,1691L7349,1689L7351,1689L7351,1691L7353,1691L7353,1694L7355,1696L7355,1699L7353,1699L7351,1701L7351,1706L7353,1706L7355,1704L7355,1701L7362,1701L7362,1706L7364,1709L7364,1712L7359,1717L7357,1717L7357,1722L7359,1724L7359,1722L7364,1719L7366,1719L7366,1722L7368,1722L7368,1724L7381,1724L7381,1727L7383,1727L7383,1729L7385,1729L7385,1727L7388,1727L7388,1724L7390,1722L7390,1717L7392,1717L7394,1719L7396,1719L7396,1724L7400,1724L7403,1727L7403,1729L7407,1729L7407,1734L7409,1742L7409,1745L7411,1747L7411,1752L7413,1752L7413,1750L7416,1750L7416,1747L7418,1747L7420,1750L7422,1750L7422,1757L7424,1757L7422,1757L7422,1765L7424,1768L7424,1788L7422,1788L7422,1798L7420,1798L7420,1796L7418,1796L7418,1798L7420,1801L7420,1803L7422,1803L7422,1806L7420,1808L7420,1806L7418,1806L7416,1808L7416,1811L7413,1814L7413,1816L7411,1816L7409,1814L7407,1816L7407,1821L7405,1824L7400,1826L7398,1826L7398,1829L7396,1829L7396,1836L7392,1842L7390,1842L7390,1844L7392,1844L7390,1847L7390,1852L7394,1852L7394,1854L7396,1857L7396,1862L7394,1862L7394,1865L7390,1867L7390,1870L7396,1870L7398,1867L7400,1867L7400,1865L7405,1865L7407,1862L7418,1862L7420,1865L7426,1862L7429,1862L7429,1865L7426,1865L7424,1867L7422,1867L7422,1872L7424,1875L7426,1875L7426,1877L7424,1880L7424,1882L7426,1882L7429,1885L7429,1893L7433,1895L7444,1895L7444,1898L7446,1898L7446,1903L7444,1903L7439,1908L7442,1913L7442,1916L7439,1918L7435,1926L7435,1928L7450,1928L7455,1931L7457,1931L7459,1933L7457,1933L7457,1941L7461,1941L7463,1944L7461,1946L7461,1949L7463,1949L7463,1951L7465,1949L7468,1949L7468,1946L7470,1946L7472,1949L7478,1949L7481,1946L7481,1944L7489,1938L7491,1944L7491,1946L7494,1951L7494,1959L7496,1959L7496,1956L7502,1956L7504,1959L7509,1959L7509,1956L7507,1954L7507,1949L7509,1944L7507,1941L7507,1938L7502,1926L7504,1923L7504,1916L7509,1916L7511,1918L7520,1918L7526,1910L7526,1908L7528,1905L7528,1908L7537,1913L7539,1913L7539,1916L7541,1918L7543,1918L7546,1916L7546,1913L7550,1905L7552,1905L7552,1908L7554,1908L7554,1913L7556,1913L7559,1910L7556,1910L7556,1908L7559,1905L7561,1905L7563,1910L7567,1916L7569,1916L7569,1910L7572,1908L7572,1905L7576,1905L7576,1908L7580,1910L7582,1908L7582,1905L7589,1905L7593,1900L7593,1895L7595,1893L7604,1890L7606,1887L7606,1890L7608,1890L7613,1893L7613,1898L7617,1898L7624,1894L7629,1884z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7936,1426L7920,1423L7908,1431L7901,1439L7884,1448L7884,1455L7872,1465L7871,1473L7877,1477L7880,1486L7890,1492L7892,1498L7885,1506L7872,1518L7880,1524L7894,1527L7906,1522L7907,1531L7903,1542L7892,1543L7883,1541L7879,1546L7882,1553L7880,1561L7877,1566L7872,1572L7883,1583L7892,1587L7900,1595L7906,1598L7904,1612L7903,1620L7898,1615L7898,1626L7905,1643C7905,1643 7905,1650 7905,1652C7904,1654 7909,1655 7909,1655L7909,1665L7915,1672L7907,1675L7901,1675L7895,1671L7884,1677L7875,1685L7867,1687L7860,1693L7857,1700L7861,1706L7861,1715L7858,1721L7852,1730L7855,1739L7859,1742L7865,1757L7865,1768L7869,1777L7874,1785L7872,1793L7875,1804L7881,1809L7890,1813L7893,1819L7892,1829L7899,1839L7913,1837L7924,1837L7921,1840L7925,1839L7933,1841L7941,1841L7943,1846L7953,1846L7954,1849L7956,1852L7959,1852L7959,1849L7957,1849L7957,1847L7959,1847L7964,1844L7964,1847L7966,1849L7968,1847L7974,1847L7974,1849L7977,1847L7979,1842L7979,1839L7985,1836L7987,1836L7983,1831L7985,1831L7985,1829L7983,1826L7985,1824L7987,1824L7987,1831L7990,1831L7990,1829L7994,1829L7996,1826L7994,1824L7992,1824L7990,1821L7990,1819L7994,1819L7994,1814L7996,1814L8003,1821L8003,1824L8005,1821L8003,1816L8000,1816L7998,1811L8003,1811L8003,1805L8007,1804L8009,1802L8005,1798L8005,1794L8014,1790L8011,1787L8011,1782L8007,1782L8003,1780L8006,1777L8016,1774L8018,1770L8020,1770L8020,1765L8024,1765L8029,1763L8029,1757L8031,1755L8031,1757L8033,1755L8031,1752L8031,1750L8033,1747L8033,1745L8035,1740L8037,1740L8037,1737L8039,1737L8044,1729L8044,1727L8046,1724L8048,1724L8048,1729L8050,1729L8050,1732L8052,1729L8052,1727L8055,1724L8057,1724L8057,1727L8059,1724L8059,1722L8057,1719L8057,1717L8055,1717L8055,1714L8057,1714L8059,1712L8059,1704L8061,1706L8061,1701L8059,1699L8052,1699L8057,1694L8059,1694L8059,1696L8063,1696L8065,1699L8070,1694L8065,1694L8065,1691L8068,1689L8070,1683L8061,1683L8068,1676L8072,1676L8072,1673L8063,1673L8061,1671L8059,1671L8057,1666L8055,1666L8055,1663L8052,1663L8052,1661L8044,1661L8044,1663L8037,1666L8035,1668L8033,1668L8029,1663L8029,1661L8024,1661L8022,1663L8018,1663L8024,1658L8035,1658L8035,1661L8037,1661L8037,1658L8039,1658L8039,1653L8042,1653L8042,1650L8048,1648L8052,1648L8052,1645L8055,1645L8055,1643L8065,1643L8065,1638L8063,1632L8063,1630L8061,1630L8061,1627L8059,1627L8055,1625L8052,1622L8050,1622L8048,1620L8048,1617L8044,1615L8042,1612L8035,1612L8035,1607L8033,1604L8033,1602L8035,1602L8035,1604L8037,1604L8037,1607L8039,1607L8039,1610L8044,1610L8047,1611L8053,1616L8065,1623L8068,1622L8067,1619L8057,1616L8053,1611L8056,1611L8061,1615L8065,1615L8065,1607L8061,1604L8059,1602L8055,1602L8052,1597L8052,1592L8050,1592L8050,1589L8044,1589L8039,1587L8037,1584L8037,1579L8039,1576L8039,1574L8035,1569L8035,1564L8033,1561L8033,1558L8031,1558L8031,1556L8029,1553L8029,1551L8026,1548L8024,1541L8024,1536L8020,1530L8020,1528L8013,1525L8009,1525L8007,1523L8005,1523L8000,1520L7998,1518L7998,1515L7992,1515L7992,1505L7996,1505L7996,1500L8003,1492L8003,1490L8005,1490L8005,1487L8009,1487L8011,1485L8011,1482L8016,1479L8016,1477L8018,1477L8020,1474L8018,1474L8016,1472L8016,1467L8024,1467L8024,1469L8022,1472L8026,1472L8033,1469L8033,1459L8037,1459L8037,1462L8039,1462L8039,1456L8037,1454L8046,1454L8046,1451L8052,1451L8055,1449L8059,1449L8061,1446L8068,1444L8068,1441L8070,1441L8074,1444L8074,1446L8078,1446L8083,1444L8085,1444L8085,1441L8081,1441L8081,1436L8085,1436L8085,1428L8074,1428L8074,1423L8072,1423L8070,1426L8061,1426L8061,1428L8057,1428L8052,1423L8046,1423L8046,1421L8039,1416L8037,1413L8033,1413L8033,1416L8029,1416L8024,1418L8020,1423L8020,1426L8018,1426L8016,1428L8009,1428L8009,1431L8011,1431L8011,1434L8009,1434L8007,1436L7998,1436L7998,1439L7996,1439L7994,1436L7990,1436L7985,1434L7985,1421L7987,1421L7987,1411L7981,1403L7979,1403L7974,1405L7968,1405L7965,1404L7952,1416L7936,1426zM8077,1667L8078,1671L8078,1673L8076,1673L8076,1671L8070,1671L8068,1668L8068,1666L8074,1666L8077,1667z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7841,1484L7826,1486L7810,1491L7815,1498L7813,1506L7812,1513L7801,1522L7790,1522L7780,1529L7769,1531L7767,1537L7757,1541L7743,1546L7733,1546L7732,1555L7736,1563L7740,1570L7741,1582L7746,1586L7749,1592L7740,1599L7731,1600L7723,1598L7722,1603L7732,1611L7735,1618L7727,1620L7724,1629L7722,1637L7729,1640L7731,1648L7735,1654L7732,1661L7724,1664L7717,1671L7707,1672L7701,1667L7692,1672L7693,1683L7701,1693L7709,1698L7716,1702L7714,1713L7711,1726L7717,1732L7719,1743L7723,1758L7713,1767L7703,1773L7708,1776L7721,1773L7719,1784L7721,1795L7721,1807L7713,1816L7700,1825L7688,1824L7685,1835L7671,1831L7659,1828L7645,1836L7632,1840L7625,1850L7613,1852L7607,1857L7593,1852L7582,1854L7576,1860L7584,1869L7595,1866L7598,1873L7606,1875L7625,1875L7629,1884L7624,1894L7617,1898L7619,1898L7619,1900L7621,1900L7621,1903L7624,1900L7632,1900L7632,1903L7639,1903L7639,1900L7641,1903L7645,1903L7645,1905L7647,1905L7647,1908L7643,1913L7641,1913L7641,1921L7643,1921L7645,1926L7643,1926L7645,1931L7650,1933L7654,1933L7654,1938L7658,1941L7663,1941L7663,1946L7667,1946L7671,1944L7678,1944L7678,1946L7686,1946L7686,1949L7689,1946L7689,1941L7691,1941L7693,1944L7691,1946L7695,1946L7697,1944L7695,1941L7695,1938L7693,1936L7693,1933L7697,1936L7697,1938L7699,1941L7699,1944L7702,1946L7702,1944L7710,1944L7710,1946L7712,1946L7712,1949L7710,1949L7710,1951L7715,1951L7717,1949L7723,1949L7723,1946L7725,1946L7725,1949L7734,1949L7734,1951L7732,1954L7730,1954L7728,1959L7728,1972L7732,1982L7736,1982L7736,1984L7732,1984L7734,1989L7736,1988L7738,1987L7738,1989L7745,1989L7747,1987L7749,1987L7749,1984L7751,1984L7751,1982L7749,1979L7747,1979L7747,1977L7745,1977L7745,1974L7745,1972L7745,1974L7747,1974L7747,1969L7741,1969L7741,1964L7743,1964L7748,1959L7750,1960L7751,1963L7753,1964L7753,1959L7755,1955L7757,1953L7762,1953L7767,1949L7773,1949L7775,1946L7777,1949L7782,1949L7782,1946L7784,1944L7788,1944L7788,1941L7790,1941L7790,1936L7793,1938L7799,1941L7803,1941L7806,1938L7810,1938L7810,1936L7812,1933L7814,1933L7816,1936L7819,1936L7819,1928L7821,1928L7821,1926L7823,1926L7823,1928L7825,1931L7827,1931L7827,1926L7829,1926L7829,1923L7832,1926L7836,1926L7836,1921L7834,1918L7836,1916L7836,1913L7834,1913L7834,1910L7832,1908L7834,1908L7829,1903L7834,1903L7834,1900L7836,1900L7836,1905L7840,1908L7842,1910L7842,1916L7849,1916L7847,1918L7845,1918L7845,1921L7853,1921L7855,1923L7855,1921L7858,1921L7858,1918L7855,1916L7853,1918L7853,1913L7860,1913L7860,1916L7864,1916L7864,1913L7862,1913L7862,1908L7866,1905L7870,1905L7868,1908L7866,1908L7866,1910L7868,1913L7873,1913L7873,1908L7877,1905L7881,1905L7886,1910L7890,1910L7890,1903L7894,1903L7896,1905L7896,1908L7899,1905L7905,1903L7905,1905L7907,1905L7907,1903L7909,1900L7912,1900L7912,1903L7914,1903L7916,1900L7918,1900L7918,1898L7916,1893L7925,1893L7922,1890L7922,1887L7925,1887L7925,1885L7927,1885L7927,1880L7929,1877L7931,1877L7931,1880L7935,1880L7938,1877L7938,1875L7940,1875L7940,1872L7948,1872L7948,1870L7951,1865L7953,1865L7953,1867L7960,1858L7958,1854L7955,1854L7953,1852L7956,1852L7954,1849L7953,1846L7943,1846L7941,1841L7933,1841L7925,1839L7921,1840L7924,1837L7913,1837L7899,1839L7892,1829L7893,1819L7890,1813L7881,1809L7875,1804L7872,1793L7874,1785L7869,1777L7865,1768L7865,1757L7859,1742L7855,1739L7852,1730L7858,1721L7861,1715L7861,1706L7857,1700L7860,1693L7867,1687L7875,1685L7884,1677L7895,1671L7901,1675L7907,1675L7915,1672L7909,1665L7909,1655C7909,1655 7904,1654 7905,1652C7905,1650 7905,1643 7905,1643L7898,1626L7898,1615L7903,1620L7904,1612L7906,1598L7900,1595L7892,1587L7883,1583L7872,1572L7877,1566L7880,1561L7882,1553L7879,1546L7883,1541L7892,1543L7903,1542L7907,1531L7906,1522L7894,1527L7880,1524L7872,1518L7885,1506L7892,1498L7890,1492L7880,1486L7877,1477L7873,1474L7861,1477L7841,1484zM7762,2000L7764,2010L7762,2010L7760,2012L7758,2012L7751,2025L7749,2025L7751,2025L7751,2028L7749,2033L7749,2035L7751,2035L7747,2040L7743,2040L7743,2043L7738,2046L7738,2051L7736,2051L7734,2048L7730,2051L7728,2053L7730,2053L7730,2056L7728,2056L7725,2056L7723,2058L7723,2053L7715,2053L7710,2051L7708,2051L7704,2048L7702,2046L7699,2046L7699,2033L7697,2028L7697,2020L7699,2020L7699,2018L7702,2018L7708,2010L7712,2010L7717,2005L7715,2005L7712,2007L7712,2005L7715,2000L7717,2000L7721,2002L7723,2002L7723,1997L7734,1997L7736,2000L7738,1997L7741,1997L7741,1995L7747,1995L7751,1997L7751,1995L7754,1995L7754,1992L7758,1997L7762,1997L7762,2000z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7739,1520L7743,1508L7742,1489L7741,1471L7749,1456L7751,1438L7752,1418L7759,1402L7763,1379L7756,1376L7750,1375L7744,1383L7738,1390L7729,1396L7719,1408L7713,1418L7708,1424L7695,1423L7689,1413L7680,1413L7673,1409L7662,1404L7650,1402L7648,1395L7656,1388L7651,1376L7650,1368L7638,1367L7628,1376L7623,1392L7623,1406L7617,1417L7599,1422L7589,1424L7576,1426L7566,1415L7559,1409L7559,1400L7565,1393L7566,1372L7554,1367L7538,1375L7528,1384L7509,1381L7496,1386L7486,1382L7470,1376L7451,1369L7439,1358L7441,1350C7441,1350 7446,1344 7449,1342C7452,1340 7456,1330 7456,1330L7445,1325L7431,1324L7418,1325L7401,1333L7391,1329L7385,1320L7380,1314L7373,1299L7378,1293L7378,1282L7376,1274L7375,1261L7374,1252L7364,1252L7359,1255L7357,1255L7357,1247L7351,1242L7346,1237L7344,1237L7344,1232L7342,1230L7342,1227L7340,1227L7340,1224L7338,1222L7338,1217L7336,1212L7329,1212L7329,1204L7320,1204L7312,1201L7312,1199L7307,1199L7307,1196L7303,1196L7299,1191L7290,1186L7288,1186L7286,1184L7284,1184L7281,1181L7271,1181L7268,1179L7245,1179L7238,1176L7236,1176L7232,1179L7223,1179L7223,1176L7214,1176L7214,1173L7208,1173L7201,1166L7201,1163L7199,1163L7199,1161L7203,1150L7206,1150L7208,1148L7210,1148L7210,1143L7208,1143L7208,1140L7206,1138L7206,1135L7208,1135L7210,1130L7210,1122L7208,1117L7206,1117L7206,1115L7201,1115L7201,1112L7197,1107L7195,1107L7195,1105L7193,1097L7188,1092L7184,1092L7184,1087L7182,1084L7180,1084L7180,1087L7175,1087L7171,1084L7169,1082L7169,1079L7164,1079L7162,1082L7154,1082L7154,1079L7149,1079L7143,1077L7143,1074L7141,1071L7141,1069L7138,1069L7134,1066L7130,1066L7125,1064L7123,1064L7123,1061L7125,1061L7128,1059L7125,1056L7121,1056L7119,1054L7119,1051L7121,1051L7123,1048L7121,1046L7121,1043L7117,1043L7112,1046L7093,1046L7091,1048L7091,1054L7093,1054L7091,1059L7089,1059L7089,1061L7086,1061L7086,1064L7082,1066L7078,1066L7076,1069L7073,1069L7073,1066L7069,1066L7067,1069L7063,1069L7058,1077L7058,1082L7056,1082L7056,1087L7058,1087L7058,1099L7060,1099L7060,1107L7056,1112L7047,1112L7047,1115L7045,1117L7041,1117L7041,1120L7034,1120L7034,1115L7006,1115L7006,1112L7002,1112L7000,1110L6993,1110L6993,1107L6987,1107L6987,1117L6985,1117L6985,1120L6982,1120L6982,1125L6980,1125L6980,1133L6978,1135L6978,1138L6976,1138L6976,1140L6974,1140L6974,1150L6972,1150L6972,1153L6969,1156L6967,1161L6967,1163L6974,1163L6974,1166L6976,1166L6976,1173L6974,1173L6974,1176L6972,1176L6967,1173L6967,1171L6965,1171L6965,1173L6959,1173L6959,1176L6956,1173L6952,1173L6952,1168L6948,1168L6948,1171L6937,1171L6937,1173L6931,1173L6928,1176L6918,1176L6915,1179L6905,1179L6900,1184L6902,1186L6911,1186L6915,1189L6918,1189L6913,1191L6913,1209L6918,1214L6918,1219L6920,1222L6920,1224L6924,1230L6924,1237L6926,1240L6924,1242L6922,1242L6922,1240L6920,1240L6913,1245L6915,1247L6920,1247L6920,1250L6911,1250L6911,1252L6909,1252L6907,1258L6909,1265L6911,1268L6911,1270L6909,1270L6909,1273L6911,1275L6909,1275L6909,1278L6898,1278L6898,1281L6894,1281L6879,1288L6876,1288L6874,1291L6868,1293L6866,1293L6861,1296L6859,1298L6857,1298L6857,1303L6855,1303L6855,1306L6853,1306L6853,1309L6842,1309L6840,1311L6831,1311L6831,1309L6829,1309L6827,1311L6822,1311L6822,1309L6818,1309L6816,1311L6814,1311L6814,1314L6809,1319L6809,1324L6807,1324L6807,1329L6805,1329L6801,1332L6798,1329L6794,1332L6792,1332L6790,1334L6783,1334L6783,1332L6781,1326L6781,1321L6779,1321L6779,1324L6777,1324L6775,1326L6772,1326L6770,1329L6764,1329L6764,1326L6759,1326L6759,1332L6757,1332L6753,1334L6749,1339L6742,1339L6738,1342L6736,1342L6731,1349L6731,1352L6733,1352L6733,1354L6736,1357L6733,1360L6731,1360L6727,1362L6727,1367L6725,1367L6729,1372L6729,1375L6731,1375L6731,1377L6729,1377L6729,1383L6731,1388L6731,1390L6738,1390L6740,1388L6746,1388L6755,1390L6757,1390L6759,1393L6759,1408L6762,1408L6762,1416L6764,1416L6762,1418L6762,1423L6766,1423L6766,1426L6770,1428L6762,1434L6751,1434L6746,1436L6751,1439L6753,1441L6755,1439L6759,1441L6770,1441L6770,1444L6775,1444L6777,1446L6777,1451L6779,1451L6779,1449L6785,1449L6785,1451L6788,1451L6790,1454L6794,1467L6792,1469L6790,1469L6790,1474L6796,1474L6796,1479L6805,1479L6807,1477L6807,1482L6811,1482L6811,1485L6814,1485L6816,1487L6822,1490L6827,1490L6831,1492L6837,1492L6839,1490L6842,1490L6844,1492L6846,1492L6846,1490L6850,1490L6850,1492L6848,1492L6848,1500L6850,1502L6853,1507L6853,1510L6855,1510L6855,1518L6857,1518L6857,1520L6866,1520L6866,1523L6868,1523L6874,1528L6874,1529L6881,1528L6890,1523L6893,1518L6896,1512L6914,1511L6916,1504L6918,1496L6923,1488L6931,1487L6942,1492C6942,1492 6953,1499 6957,1499C6960,1499 6967,1491 6967,1491L6982,1489L6994,1493L7013,1501L7027,1505L7039,1503L7051,1496L7065,1495L7075,1490L7090,1487L7102,1489L7109,1484L7123,1484L7137,1487L7151,1493L7159,1494L7171,1494L7178,1496L7176,1502L7178,1512L7171,1522L7171,1532L7168,1547L7171,1552L7172,1558L7169,1571L7175,1578L7176,1587L7186,1595L7197,1595L7209,1599L7221,1602L7236,1607L7253,1607L7259,1610L7278,1617L7285,1612L7289,1614L7298,1621L7305,1627L7316,1637C7316,1637 7328,1645 7330,1645C7332,1645 7340,1643 7340,1643L7346,1639L7355,1639L7360,1632L7364,1622L7362,1617L7369,1614L7373,1602L7394,1598L7411,1604C7411,1604 7417,1600 7419,1599C7421,1598 7428,1602 7428,1602L7436,1603L7447,1598L7446,1608L7458,1611L7463,1604L7476,1602L7487,1599L7494,1592L7493,1583L7511,1578L7522,1573L7529,1580L7538,1586L7544,1597C7544,1597 7550,1599 7552,1599C7554,1599 7563,1597 7563,1597L7566,1606L7579,1612L7592,1610L7600,1602L7611,1608C7611,1608 7620,1605 7625,1607C7631,1609 7640,1612 7640,1612L7645,1617L7654,1614L7666,1624L7675,1623L7683,1625L7697,1632L7707,1637L7717,1635L7722,1637L7724,1629L7727,1620L7735,1618L7732,1611L7722,1603L7723,1598L7731,1600L7740,1599L7749,1592L7746,1586L7741,1582L7740,1570L7736,1563L7732,1555L7733,1546L7736,1546L7735,1541L7739,1520z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7998,1323L7981,1320L7972,1308L7977,1298L7987,1290L7989,1271L7992,1256L8001,1256L8004,1271L8011,1272L8029,1262L8053,1259L8059,1251L8074,1251L8095,1248L8107,1244L8094,1230L8098,1224L8091,1206L8085,1196L8074,1200L8064,1193L8077,1187L8080,1178L8080,1169L8073,1160L8085,1157L8095,1151L8094,1139L8101,1130L8080,1119L8074,1107L8086,1095L8088,1079L8104,1071L8115,1052L8125,1041L8119,1016L8128,998L8133,977L8128,962L8113,962L8086,962L8068,963L8056,954L8056,939L8041,929L8024,921L8024,921L8022,921L8022,924L8018,924L8013,929L8013,931L8026,931L8033,934L8033,939L8031,939L8031,941L8033,941L8033,944L8035,944L8035,946L8033,952L8033,954L8026,954L8022,959L8020,959L8020,962L8016,962L8016,964L8013,967L8013,972L8011,975L8009,975L8007,977L8007,982L8005,982L8005,985L8003,985L8000,987L8000,992L7998,992L7998,995L7996,995L7994,997L7994,1000L7992,1003L7990,1003L7990,1005L7996,1005L7996,1013L7994,1013L7992,1015L7990,1015L7990,1018L7974,1018L7972,1020L7972,1023L7968,1023L7964,1026L7964,1028L7959,1028L7959,1031L7955,1033L7953,1033L7951,1031L7946,1031L7946,1028L7935,1028L7925,1023L7922,1023L7916,1031L7914,1036L7912,1038L7907,1051L7905,1054L7905,1056L7901,1059L7901,1061L7896,1064L7899,1069L7899,1074L7892,1077L7890,1077L7892,1084L7901,1092L7903,1092L7903,1089L7905,1089L7905,1087L7925,1087L7927,1084L7933,1087L7933,1089L7940,1092L7942,1092L7948,1087L7948,1084L7953,1082L7972,1082L7979,1089L7981,1089L7985,1092L7990,1092L7990,1097L7992,1097L7996,1099L7996,1102L7998,1102L8003,1107L8005,1107L8007,1110L8007,1115L8009,1115L8009,1117L8011,1117L8011,1125L8009,1125L8007,1128L8000,1128L7998,1125L7998,1128L7994,1128L7990,1125L7987,1125L7987,1122L7981,1122L7981,1125L7970,1125L7970,1122L7966,1122L7957,1128L7955,1128L7955,1130L7948,1130L7946,1128L7942,1128L7942,1135L7920,1135L7918,1138L7918,1140L7916,1143L7914,1143L7914,1145L7912,1145L7912,1148L7909,1148L7909,1156L7907,1156L7907,1158L7901,1158L7894,1166L7879,1166L7875,1168L7873,1168L7870,1166L7868,1166L7862,1168L7860,1173L7858,1176L7853,1179L7851,1181L7845,1181L7838,1189L7834,1189L7834,1186L7823,1186L7808,1181L7803,1176L7801,1179L7795,1179L7795,1176L7790,1176L7788,1179L7786,1179L7786,1181L7782,1186L7780,1191L7780,1194L7775,1199L7775,1201L7780,1207L7782,1212L7786,1212L7790,1217L7790,1222L7788,1224L7784,1224L7782,1227L7773,1232L7771,1232L7767,1235L7764,1235L7760,1240L7756,1242L7756,1245L7754,1247L7751,1247L7751,1250L7749,1250L7749,1252L7747,1252L7741,1255L7738,1258L7734,1258L7730,1260L7728,1260L7723,1263L7708,1263L7704,1265L7699,1265L7695,1263L7686,1263L7678,1265L7669,1265L7667,1263L7654,1268L7647,1268L7613,1281L7611,1283L7606,1286L7604,1286L7598,1291L7595,1288L7593,1288L7589,1291L7585,1288L7585,1283L7572,1283L7565,1286L7554,1281L7552,1281L7533,1273L7526,1273L7515,1270L7515,1268L7513,1268L7509,1260L7498,1260L7491,1258L7485,1258L7483,1255L7468,1255L7465,1258L7444,1260L7439,1258L7409,1258L7405,1255L7392,1255L7390,1252L7374,1252L7375,1261L7376,1274L7378,1282L7378,1293L7373,1299L7380,1314L7385,1320L7391,1329L7401,1333L7418,1325L7431,1324L7445,1325L7456,1330C7456,1330 7452,1340 7449,1342C7446,1344 7441,1350 7441,1350L7439,1358L7451,1369L7470,1376L7486,1382L7496,1386L7509,1381L7528,1384L7538,1375L7554,1367L7566,1372L7565,1393L7559,1400L7559,1409L7566,1415L7576,1426L7589,1424L7599,1422L7617,1417L7623,1406L7623,1392L7628,1376L7638,1367L7650,1368L7651,1376L7656,1388L7648,1395L7650,1402L7662,1404L7673,1409L7680,1413L7689,1413L7695,1423L7708,1424L7713,1418L7719,1408L7729,1396L7738,1390L7744,1383L7750,1375L7756,1376L7763,1379L7759,1402L7752,1418L7751,1438L7749,1456L7741,1471L7742,1489L7743,1508L7739,1520L7735,1541L7736,1546L7743,1546L7757,1541L7767,1537L7769,1531L7780,1529L7790,1522L7801,1522L7812,1513L7813,1506L7815,1498L7810,1491L7826,1486L7841,1484L7861,1477L7873,1474L7871,1473L7872,1465L7884,1455L7884,1448L7901,1439L7908,1431L7920,1423L7936,1426L7952,1416L7965,1404L7964,1403L7959,1403L7955,1400L7953,1400L7948,1395L7948,1393L7946,1390L7946,1383L7948,1380L7951,1375L7951,1372L7953,1370L7964,1370L7964,1372L7966,1372L7966,1375L7970,1375L7972,1372L7972,1370L7979,1370L7979,1372L7981,1370L7985,1370L7990,1365L7992,1365L7992,1362L7994,1362L7994,1357L7996,1352L8000,1347L8005,1347L8009,1344L8009,1344L8004,1331L7998,1323z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8421,1089L8418,1084L8418,1079L8421,1079L8421,1074L8423,1074L8421,1071L8416,1071L8416,1069L8414,1069L8408,1071L8403,1071L8399,1074L8395,1074L8392,1077L8390,1077L8390,1079L8377,1079L8371,1082L8366,1087L8364,1087L8364,1089L8362,1089L8362,1092L8358,1092L8358,1089L8356,1089L8353,1092L8334,1092L8334,1089L8327,1089L8327,1092L8317,1092L8317,1089L8319,1089L8317,1087L8317,1084L8315,1084L8315,1082L8312,1082L8310,1079L8310,1077L8312,1077L8315,1071L8306,1061L8308,1059L8308,1056L8310,1056L8310,1054L8297,1054L8295,1051L8289,1048L8289,1046L8284,1043L8284,1041L8280,1041L8280,1038L8278,1038L8278,1036L8269,1036L8267,1038L8265,1038L8265,1036L8263,1036L8258,1031L8230,1031L8228,1028L8228,1026L8226,1026L8226,1023L8221,1023L8221,1013L8224,1013L8224,1008L8217,1008L8217,995L8215,995L8217,992L8213,990L8213,987L8211,985L8206,982L8206,977L8204,977L8204,975L8202,975L8204,972L8206,972L8206,969L8202,969L8200,964L8200,959L8198,957L8193,954L8193,949L8195,949L8195,946L8193,946L8191,944L8189,944L8191,941L8191,939L8189,939L8189,936L8187,936L8187,934L8185,934L8182,931L8182,934L8180,934L8180,929L8182,929L8182,926L8180,926L8176,924L8174,921L8174,918L8169,916L8163,916L8163,913L8161,913L8156,911L8154,911L8152,913L8143,913L8143,911L8139,911L8139,913L8137,911L8135,911L8135,908L8133,908L8133,906L8128,906L8128,908L8126,906L8124,906L8124,903L8122,903L8115,901L8102,901L8102,903L8076,903L8072,906L8057,906L8057,908L8037,908L8037,911L8029,916L8024,921L8041,929L8056,939L8056,954L8068,963L8086,962L8113,962L8128,962L8133,977L8128,998L8119,1016L8125,1041L8115,1052L8104,1071L8088,1079L8086,1095L8074,1107L8080,1119L8101,1130L8094,1139L8095,1151L8085,1157L8073,1160L8080,1169L8080,1178L8077,1187L8064,1193L8074,1200L8085,1196L8091,1206L8098,1224L8094,1230L8107,1244L8095,1248L8074,1251L8059,1251L8053,1259L8029,1262L8011,1272L8004,1271L8001,1256L7992,1256L7989,1271L7987,1290L7977,1298L7972,1308L7981,1320L7998,1323L8004,1331L8009,1344L8011,1342L8013,1342L8018,1339L8022,1339L8026,1337L8029,1337L8029,1329L8033,1326L8037,1321L8042,1321L8042,1319L8039,1319L8042,1316L8044,1316L8044,1314L8057,1314L8057,1316L8063,1316L8068,1319L8072,1319L8072,1321L8076,1326L8078,1326L8072,1334L8070,1339L8065,1342L8065,1344L8063,1347L8057,1347L8055,1349L8055,1354L8050,1357L8048,1360L8055,1360L8055,1365L8063,1365L8059,1370L8061,1372L8059,1372L8059,1374L8057,1375L8055,1375L8048,1377L8044,1377L8044,1380L8046,1383L8046,1385L8048,1383L8055,1383L8061,1380L8061,1377L8059,1377L8060,1376L8061,1375L8068,1375L8072,1372L8076,1367L8076,1365L8078,1365L8081,1362L8083,1362L8085,1360L8091,1357L8096,1357L8098,1354L8104,1354L8104,1352L8102,1352L8104,1349L8107,1349L8109,1352L8113,1352L8115,1349L8128,1349L8133,1347L8135,1344L8135,1339L8137,1339L8141,1337L8141,1334L8146,1334L8150,1329L8154,1329L8154,1326L8156,1324L8161,1321L8165,1321L8167,1319L8169,1319L8172,1316L8178,1314L8180,1314L8185,1309L8189,1306L8189,1303L8193,1298L8195,1298L8198,1293L8198,1291L8195,1291L8198,1288L8202,1288L8204,1286L8206,1286L8211,1288L8211,1291L8213,1291L8213,1293L8215,1296L8228,1296L8232,1298L8232,1296L8237,1296L8237,1298L8241,1298L8241,1296L8243,1296L8243,1293L8245,1291L8243,1291L8243,1288L8241,1288L8239,1286L8239,1281L8237,1278L8243,1275L8245,1275L8247,1278L8263,1278L8263,1275L8265,1275L8267,1273L8269,1273L8269,1270L8271,1265L8273,1263L8276,1263L8278,1265L8282,1263L8284,1263L8284,1255L8286,1250L8286,1247L8289,1245L8291,1245L8293,1247L8299,1247L8299,1250L8297,1252L8297,1255L8299,1255L8302,1258L8306,1260L8308,1263L8308,1258L8306,1255L8304,1255L8304,1252L8306,1252L8310,1250L8321,1250L8323,1247L8323,1245L8325,1240L8327,1237L8327,1230L8325,1230L8325,1212L8327,1212L8327,1209L8325,1207L8323,1194L8321,1189L8321,1186L8319,1186L8319,1184L8321,1184L8323,1181L8323,1184L8325,1184L8327,1181L8332,1181L8336,1176L8338,1176L8338,1173L8343,1168L8345,1168L8345,1171L8347,1171L8351,1173L8358,1173L8369,1179L8375,1179L8377,1176L8377,1166L8379,1166L8379,1163L8382,1163L8386,1161L8388,1161L8388,1150L8392,1150L8392,1148L8395,1145L8395,1143L8397,1140L8399,1140L8399,1138L8401,1135L8401,1133L8399,1133L8399,1128L8403,1128L8403,1120L8405,1115L8405,1112L8408,1112L8410,1110L8408,1110L8408,1105L8412,1099L8418,1099L8423,1092L8425,1092L8425,1089L8421,1089z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1,5301L2,5301L3302,5301L3305,5301L3362,5301L3365,5301L6634,5301L6638,5301L6695,5301L6698,5301L10000,5301L10000,5209L9497,5183L9329,5174L9347,5090L9383,5066L9431,4994L9149,4922L8747,4835L8702,4835L8258,4787L8186,4781L8108,4805L8048,4793L7970,4832L7943,4814L7946,4781L7763,4808L7721,4826L7454,4757L7373,4739L7298,4811L7187,4805L7100,4790L7022,4814L6956,4799L6875,4826L6863,4874L6760,4925L6721,4901L6698,4899L6695,4898L6649,4895L6638,4880L6636,4878L6622,4862L6337,4847L6169,4790L5752,4889L5614,4886L5401,4940L5116,4919L4675,4931L4621,4934L4405,4952L4318,4991L4183,5012L4102,5066L3985,5072L3913,5141L3502,5186L3365,5161L3362,5160L3305,5150L3302,5150L3034,5102L3049,5045L3010,4946L3067,4877L3031,4865L3049,4787L3094,4769L3163,4712L3115,4706L3019,4724L2890,4742L2887,4781L2824,4796L2728,4883L2698,4880L2527,4955L2536,5012L2419,5036L2125,5018L1825,4994L1759,5078L1573,5030L1567,5075L1144,5042L1105,5075L841,5084L424,5150L3,5221L1,5222L1,5301L1,5301zM2,1L3301,1L3305,1L3361,1L3365,1L6634,1L6638,1L6695,1L6698,1L10000,1L10000,333L9970,339L9934,323L9880,296L9850,296L9822,312L9774,350L9714,359L9697,341L9711,297L9645,294L9537,315L9460,309L9420,288L9327,261L9159,249L9004,248L8935,188L8800,156L8734,102L8602,102L8263,155L8184,180L8038,195L7996,176L7923,161L7918,125L7753,104L7650,72L7576,90L7552,126L7497,155L7410,168L7189,188L7113,218L7104,249L7059,248L6979,248L6873,206L6759,186L6700,190L6694,190L6638,193L6635,193L6576,197L6501,234L6443,206L6434,123L6320,47L6179,35L6044,35L5927,48L5894,84L5814,95L5642,48L5450,45L5367,65L5307,81L5367,113L5316,129L5261,125L5229,98L5180,150L5147,155L5079,135L5064,110L4959,81L4859,95L4649,90L4494,168L4382,204L4248,243L4148,204L4137,162L4167,119L3366,110L3361,110L3305,110L3302,110L3146,108L2943,117L2804,166L2665,168L2614,170L2551,172L2506,197L2466,214L2417,217L2386,215L2271,216L2202,213L2173,238L2139,264L2135,243L2065,236L2033,254L2045,292L2021,326L2033,369L2024,379L1995,384L1971,414L1963,442L1893,438L1862,442L1825,435L1771,426L1742,407L1697,414L1690,437L1637,442L1561,440L1517,434L1511,416L1483,401L1433,400L1371,388L1329,374L1273,373L1219,370L1172,380L1129,366L1057,387L996,383L917,380L923,404L849,393L763,377L698,363L635,362L567,355L535,351L489,351L457,346L445,339L411,334L393,337L387,334L367,332L350,333L330,321L305,334L249,337L227,328L191,326L185,314L163,304L97,306L93,316L63,318L23,335L3,337L2,337L1,4L1,1L2,1z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5752,2061L5752,2058L5748,2058L5746,2056L5741,2056L5741,2053L5739,2053L5739,2051L5737,2048L5737,2046L5735,2046L5728,2038L5728,2040L5724,2040L5724,2038L5722,2035L5720,2035L5718,2028L5718,2015L5715,2012L5715,2000L5713,1997L5713,1982L5715,1982L5715,1977L5713,1974L5713,1967L5711,1959L5715,1960L5715,1965L5719,1965L5720,1964L5717,1959L5713,1956L5709,1951L5705,1938L5705,1931L5555,1931L5557,1926L5555,1926L5555,1923L5553,1923L5553,1926L5551,1928L5551,1931L5375,1931L5375,1997L5347,1997L5347,2137L5343,2137L5339,2135L5336,2135L5336,2137L5323,2137L5319,2142L5317,2142L5317,2145L5319,2145L5319,2158L5315,2158L5315,2160L5313,2160L5310,2165L5310,2168L5313,2171L5306,2173L5304,2173L5304,2183L5306,2186L5308,2186L5308,2188L5304,2191L5302,2193L5300,2193L5297,2196L5295,2201L5295,2204L5300,2209L5300,2216L5297,2219L5295,2219L5295,2222L5293,2222L5289,2227L5287,2232L5287,2234L5289,2237L5297,2237L5297,2234L5306,2239L5304,2242L5304,2247L5306,2255L5308,2257L5308,2273L5310,2275L5315,2278L5319,2278L5319,2285L5317,2293L5317,2295L5321,2301L5321,2303L5328,2308L5328,2311L5330,2311L5339,2329L5339,2339L5336,2339L5339,2341L5339,2345L5344,2344L5355,2346L5365,2341L5369,2329L5384,2325L5394,2326L5406,2326L5413,2338L5414,2344L5422,2349L5428,2359L5441,2361L5456,2359L5471,2352L5488,2353L5491,2337L5512,2328L5535,2335L5553,2329L5568,2315L5571,2304L5564,2297L5561,2269L5553,2260L5578,2257L5590,2254L5590,2242L5615,2243L5612,2267L5609,2295L5609,2312L5607,2320L5621,2328L5620,2341L5620,2348L5629,2349L5629,2331L5631,2326L5631,2324L5635,2321L5635,2313L5633,2306L5635,2303L5637,2298L5642,2295L5644,2298L5646,2298L5646,2301L5650,2301L5653,2295L5650,2293L5653,2288L5653,2280L5655,2275L5655,2265L5657,2265L5657,2262L5661,2262L5661,2260L5663,2255L5663,2252L5672,2239L5672,2237L5681,2234L5683,2234L5683,2237L5685,2237L5685,2224L5687,2214L5692,2209L5692,2204L5694,2204L5694,2196L5696,2186L5694,2155L5696,2153L5696,2150L5698,2148L5698,2145L5700,2140L5700,2137L5702,2135L5707,2122L5707,2120L5709,2120L5707,2114L5707,2104L5709,2104L5709,2094L5720,2094L5724,2089L5724,2086L5722,2084L5728,2084L5733,2081L5735,2081L5735,2079L5737,2079L5737,2076L5739,2076L5739,2079L5744,2079L5746,2074L5750,2069L5750,2066L5752,2063L5754,2063L5752,2061z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5620,2341L5621,2328L5607,2320L5609,2312L5609,2295L5612,2267L5615,2243L5590,2242L5590,2254L5578,2257L5553,2260L5561,2269L5564,2297L5571,2304L5568,2315L5553,2329L5535,2335L5512,2328L5491,2337L5488,2353L5471,2352L5456,2359L5441,2361L5428,2359L5422,2349L5414,2344L5413,2338L5406,2326L5394,2326L5384,2325L5369,2329L5365,2341L5355,2346L5344,2344L5339,2345L5339,2349L5336,2352L5332,2352L5332,2357L5336,2357L5336,2362L5334,2362L5334,2367L5354,2367L5356,2369L5352,2375L5352,2380L5354,2380L5358,2382L5371,2382L5371,2385L5378,2392L5380,2392L5384,2398L5384,2403L5380,2403L5382,2405L5382,2408L5384,2408L5384,2410L5386,2410L5388,2413L5393,2415L5395,2418L5399,2418L5406,2426L5406,2428L5410,2431L5410,2433L5414,2433L5414,2436L5412,2438L5412,2443L5414,2443L5419,2449L5417,2449L5417,2451L5414,2451L5414,2454L5421,2454L5421,2456L5423,2454L5425,2456L5425,2459L5430,2459L5434,2461L5436,2461L5436,2464L5438,2466L5438,2479L5440,2479L5440,2482L5443,2482L5443,2484L5445,2484L5445,2489L5453,2494L5453,2502L5458,2502L5464,2510L5473,2510L5473,2507L5477,2507L5477,2505L5479,2502L5482,2502L5482,2505L5488,2505L5492,2510L5495,2507L5497,2507L5499,2502L5499,2500L5501,2497L5503,2500L5505,2500L5510,2502L5510,2510L5514,2510L5514,2512L5516,2515L5516,2517L5518,2517L5518,2520L5521,2522L5525,2522L5527,2525L5529,2525L5531,2530L5531,2533L5536,2533L5538,2535L5540,2535L5540,2530L5542,2530L5546,2528L5553,2528L5557,2533L5562,2530L5564,2528L5566,2528L5568,2530L5568,2533L5570,2533L5572,2535L5575,2535L5575,2533L5581,2528L5594,2528L5596,2525L5598,2525L5601,2528L5611,2528L5624,2512L5629,2510L5635,2502L5635,2500L5679,2500L5674,2494L5674,2484L5676,2484L5676,2482L5674,2479L5676,2479L5676,2477L5674,2477L5668,2474L5666,2474L5663,2477L5661,2477L5661,2471L5657,2466L5655,2461L5653,2459L5653,2451L5650,2451L5650,2449L5648,2446L5648,2443L5646,2436L5644,2433L5644,2431L5640,2431L5640,2426L5637,2426L5635,2423L5631,2423L5631,2418L5629,2415L5627,2415L5627,2410L5618,2400L5616,2400L5611,2398L5598,2398L5598,2390L5603,2385L5603,2377L5605,2375L5616,2375L5616,2377L5620,2377L5622,2375L5624,2375L5627,2372L5629,2372L5629,2349L5620,2348L5620,2341z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2991,2285L2991,2288L2993,2288L2993,2285L2997,2285L2999,2283L2999,2280L2997,2283L2993,2283L2991,2285L2991,2285zM2986,2319L2986,2301L2988,2301L2988,2298L2986,2296L2986,2298L2975,2298L2971,2298L2971,2301L2971,2303L2973,2303L2973,2306L2975,2314L2975,2316L2973,2316L2969,2319L2962,2320L2961,2321L2984,2321L2986,2319L2986,2319z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6278,3305L6276,3311L6274,3313L6272,3318L6272,3321L6274,3321L6276,3323L6278,3323L6281,3323L6283,3321L6285,3321L6285,3316L6287,3313L6283,3305L6278,3305L6278,3305z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8129,2955L8133,2951L8141,2951L8141,2953L8136,2954L8133,2958L8130,2958L8128,2956L8129,2955zM8208,2923L8206,2925L8204,2925L8202,2928L8187,2928L8187,2930L8180,2930L8180,2928L8176,2928L8174,2930L8165,2930L8158,2933L8156,2933L8156,2935L8154,2938L8154,2943L8156,2943L8158,2940L8161,2946L8156,2946L8156,2948L8160,2952L8161,2953L8162,2954L8163,2953L8167,2953L8174,2951L8178,2951L8182,2946L8189,2946L8193,2943L8195,2943L8195,2940L8197,2940L8197,2938L8202,2938L8204,2935L8208,2935L8215,2928L8217,2928L8217,2925L8213,2923L8208,2923L8208,2923z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6086,1793L6082,1793L6082,1796L6084,1798L6084,1803L6086,1809L6086,1806L6088,1803L6088,1798L6086,1796L6086,1793L6086,1793z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3996,2164L3994,2166L3993,2163L3996,2164zM3985,2098L3990,2098L3990,2101L3985,2101L3985,2098zM4038,2150L4040,2153L4039,2156L4035,2156L4036,2151L4038,2150zM4045,2101L4046,2108L4044,2108C4044,2108 4043,2102 4043,2101L4045,2101zM4013,2107L4013,2110L4007,2110L4006,2111L4004,2107L4013,2107zM3977,2094L3979,2097L3979,2099L3982,2099L3983,2097L3985,2097L3985,2094L3987,2094L3987,2089L3981,2089L3977,2094L3977,2094zM4000,2166L4002,2166L4003,2168L4005,2168L4006,2167L4007,2166L4007,2160L4001,2161L4000,2166L4000,2166zM4050,2120L4048,2120L4044,2125L4044,2127L4046,2130L4048,2130L4050,2127L4052,2126L4051,2125L4050,2122L4050,2120L4050,2120zM4022,2150L4022,2153L4020,2158L4024,2163L4029,2163L4031,2160L4024,2153L4024,2150L4022,2150z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5074,1472L5076,1470L5078,1471L5078,1473L5077,1474L5075,1474L5074,1472zM5083,1474L5079,1474L5078,1476L5081,1479L5083,1481L5086,1480L5086,1478L5085,1475L5084,1475L5083,1474z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9042,2888L9051,2893L9055,2893L9057,2893L9057,2890L9053,2890L9049,2888L9049,2885L9046,2885L9046,2880L9044,2878L9042,2878L9038,2872L9036,2872L9036,2870L9033,2870L9031,2867L9029,2867L9027,2870L9033,2878L9036,2878L9038,2883L9040,2885L9040,2888L9042,2888L9042,2888zM9029,2900L9029,2903L9036,2911L9036,2908L9038,2908L9038,2903L9033,2900L9029,2900L9029,2900zM9049,2911L9046,2908L9044,2908L9042,2911L9042,2916L9044,2918L9049,2918L9049,2911L9049,2911zM9189,3002L9189,3000L9185,2995L9183,2995L9178,2992L9174,2992L9174,2990L9170,2987L9166,2987L9166,2985L9163,2985L9161,2990L9168,2990L9170,2995L9170,2997L9172,3000L9176,3002L9178,3005L9185,3005L9191,3008L9194,3008L9194,3005L9189,3005L9189,3002L9189,3002zM9066,2921L9062,2921L9059,2918L9059,2913L9053,2913L9053,2918L9051,2920L9047,2921L9049,2923L9053,2923L9057,2921L9059,2923L9059,2926L9059,2929L9062,2929L9062,2931L9066,2931L9068,2931L9068,2926L9066,2921L9066,2921zM9122,2931L9122,2923L9105,2911L9101,2911L9101,2908L9096,2906L9092,2900L9090,2900L9085,2898L9082,2899L9085,2903L9088,2903L9088,2906L9090,2908L9094,2911L9094,2913L9114,2923L9114,2926L9116,2931L9118,2926L9122,2931L9122,2931zM9146,2969L9144,2967L9144,2964L9137,2959L9131,2959L9127,2962L9124,2959L9122,2959L9122,2957L9120,2957L9120,2954L9118,2954L9118,2957L9116,2957L9116,2964L9122,2972L9127,2972L9129,2974L9131,2972L9135,2972L9144,2977L9148,2974L9150,2974L9148,2969L9146,2969L9146,2969zM9068,2936L9070,2939L9072,2939L9072,2936L9075,2936L9075,2931L9068,2931L9068,2936L9068,2936zM9161,2964L9163,2964L9166,2967L9166,2962L9163,2957L9159,2951L9161,2951L9161,2949L9159,2946L9159,2944L9157,2944L9155,2941L9153,2941L9153,2936L9155,2936L9155,2934L9150,2929L9150,2926L9148,2926L9148,2923L9142,2923L9142,2926L9144,2926L9144,2929L9146,2931L9146,2934L9144,2934L9148,2944L9148,2949L9150,2951L9153,2951L9159,2959L9161,2959L9161,2964L9161,2964z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9332,3114L9335,3114L9336,3117L9336,3119L9332,3119L9330,3116L9332,3114zM9351,3139L9353,3143L9353,3148L9353,3155L9354,3159L9354,3164L9352,3166L9350,3165L9351,3157L9351,3155L9351,3150L9350,3139L9351,3139zM9352,3196L9356,3199L9359,3199L9360,3197L9357,3192L9358,3189L9358,3186L9358,3183L9355,3180L9352,3175L9349,3179L9347,3184L9353,3185L9356,3188L9353,3190L9352,3196L9352,3196zM9389,3287L9386,3282L9384,3282L9382,3284L9382,3289L9384,3292L9386,3292L9389,3294L9391,3289L9389,3287L9389,3287zM9343,3192L9345,3190L9339,3182L9332,3177L9332,3174L9328,3169L9326,3169L9326,3180L9328,3180L9328,3177L9330,3177L9332,3180L9332,3192L9334,3192L9337,3190L9341,3190L9341,3192L9343,3192L9343,3192zM9356,3223L9356,3225L9354,3228L9355,3229L9356,3231L9358,3233L9365,3233L9365,3228L9360,3223L9356,3223L9356,3223zM9384,3271L9385,3271L9386,3269L9384,3269L9384,3266L9382,3266L9382,3261L9381,3261L9380,3259L9378,3259L9377,3260L9376,3261L9376,3269L9380,3269L9382,3271L9384,3271L9384,3271zM9311,3154L9315,3162L9317,3162L9319,3159L9321,3159L9324,3162L9325,3161L9326,3159L9328,3159L9328,3157L9326,3154L9326,3146L9324,3144L9321,3139L9319,3139L9319,3146L9315,3146L9315,3136L9313,3136L9313,3134L9311,3131L9311,3129L9308,3129L9308,3141L9311,3149L9311,3154L9311,3154zM9350,3152L9347,3149L9347,3152L9343,3152L9341,3154L9339,3154L9339,3157L9345,3157L9350,3152L9350,3152z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9348,3351L9344,3349L9344,3353L9344,3356L9346,3358L9348,3358L9351,3358L9351,3353L9348,3353L9348,3351L9348,3351zM9314,3368L9309,3366L9307,3366L9305,3363L9305,3361L9303,3361L9301,3358L9299,3358L9292,3351L9286,3348L9283,3348L9281,3345L9281,3343L9279,3340L9277,3340L9275,3338L9273,3333L9270,3330L9266,3330L9266,3328L9260,3325L9260,3322L9257,3320L9255,3320L9251,3315L9247,3312L9244,3312L9244,3315L9242,3315L9242,3312L9238,3307L9236,3307L9236,3310L9240,3315L9240,3317L9242,3320L9242,3322L9244,3322L9247,3328L9247,3330L9249,3333L9251,3333L9257,3340L9260,3340L9260,3343L9262,3345L9262,3348L9268,3353L9270,3356L9273,3356L9279,3361L9283,3361L9288,3366L9292,3368L9295,3370L9296,3373L9299,3373L9301,3376L9303,3376L9305,3379L9309,3379L9312,3381L9314,3381L9315,3381L9316,3381L9318,3381L9319,3383L9320,3381L9320,3379L9318,3373L9314,3368L9314,3368zM9329,3334L9327,3332L9329,3330L9329,3328L9324,3326L9323,3330L9324,3330L9324,3332L9322,3333L9322,3335L9321,3337L9322,3339L9322,3340L9325,3340L9329,3343L9331,3343L9333,3340L9333,3338L9331,3335L9329,3335L9329,3334z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3240,2500L3238,2500L3229,2489L3227,2489L3223,2484L3220,2484L3216,2479L3214,2479L3214,2477L3210,2472L3201,2472L3199,2469L3194,2469L3192,2466L3188,2464L3184,2464L3181,2466L3181,2472L3175,2479L3173,2479L3173,2482L3168,2487L3168,2500L3171,2500L3171,2502L3168,2502L3168,2507L3171,2507L3171,2520L3173,2520L3173,2523L3177,2528L3179,2528L3181,2533L3181,2538L3179,2543L3177,2545L3177,2548L3175,2548L3177,2551L3177,2561L3175,2561L3175,2563L3173,2566L3173,2568L3171,2568L3171,2571L3168,2574L3164,2576L3166,2576L3166,2579L3168,2579L3173,2581L3179,2581L3184,2579L3184,2576L3188,2574L3190,2574L3190,2576L3194,2579L3197,2579L3201,2574L3201,2576L3203,2576L3203,2579L3207,2579L3210,2581L3212,2581L3212,2579L3216,2576L3220,2571L3220,2568L3223,2568L3223,2563L3225,2558L3227,2556L3227,2548L3229,2545L3231,2545L3233,2543L3233,2538L3238,2533L3238,2530L3242,2525L3242,2523L3244,2523L3244,2520L3246,2520L3246,2510L3244,2510L3244,2502L3242,2500L3240,2500L3240,2500L3240,2500z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2649,1920L2647,1917L2651,1916L2658,1916L2662,1919L2662,1922L2658,1921L2651,1920L2649,1920zM2623,1904L2628,1905L2631,1908L2632,1915L2629,1917L2627,1921L2624,1921L2621,1926L2618,1925L2617,1922L2622,1917L2626,1914L2626,1911L2624,1909L2618,1909L2617,1905L2623,1904zM2590,1856L2589,1860L2587,1859L2584,1853L2590,1856zM2597,1891L2601,1894L2603,1900L2600,1899L2597,1895L2593,1893L2597,1891zM2612,1861L2615,1862L2615,1867L2611,1868L2610,1866L2608,1863L2612,1861zM2591,1877L2594,1884L2591,1883L2588,1878L2591,1877zM2573,1876L2577,1880L2580,1883L2583,1882L2582,1884L2579,1885L2573,1883L2571,1881L2568,1878L2570,1876L2573,1876zM2566,1834L2568,1839L2566,1842L2564,1842C2564,1842 2564,1837 2564,1837L2566,1834zM2552,1813L2553,1817L2551,1818C2551,1818 2549,1817 2549,1816L2552,1813zM2533,1829L2536,1832L2531,1834L2529,1831L2533,1829zM2536,1780L2535,1780L2530,1772L2530,1775L2534,1780L2534,1782L2536,1782L2537,1783L2538,1785L2536,1785L2536,1795L2532,1800L2534,1800L2534,1803L2536,1803L2536,1805L2538,1805L2538,1792L2540,1790L2543,1790L2543,1782L2538,1782L2536,1780L2536,1780zM2525,1859L2525,1856L2523,1855L2515,1858L2523,1876L2526,1876L2526,1860L2525,1859L2525,1859zM2519,1854L2519,1851L2523,1851L2523,1846L2521,1841L2519,1841L2519,1838L2514,1828L2510,1826L2510,1838L2508,1838L2507,1840L2505,1841L2502,1844L2502,1847L2504,1848L2506,1850L2510,1851L2512,1854L2514,1854L2514,1856L2519,1854L2519,1854zM2517,1780L2519,1777L2517,1777L2499,1777L2497,1780L2496,1781L2495,1781L2494,1781L2493,1780L2491,1780L2488,1777L2488,1780L2493,1785L2497,1785L2499,1782L2506,1780L2517,1780L2517,1780z\"/>\r\n    </Canvas>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/MapTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class MapTest : UserControl\r\n    {\r\n        public MapTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/PathTest.xaml",
    "content": "﻿<UserControl \r\n    x:Class=\"LitmusTests.Tests.PathTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n    <Grid ShowGridLines=\"True\" Background=\"White\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"100\" />\r\n            <RowDefinition Height=\"*\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"Auto\" />\r\n            <ColumnDefinition Width=\"Auto\" />\r\n            <ColumnDefinition Width=\"100\" />\r\n            <ColumnDefinition Width=\"*\" />\r\n        </Grid.ColumnDefinitions>\r\n\r\n        <TextBlock Grid.Row=\"1\" Text=\"Auto\" />\r\n        <TextBlock Grid.Row=\"2\" Text=\"100\" />\r\n        <TextBlock Grid.Row=\"3\" Text=\"*\" />\r\n\r\n        <TextBlock Grid.Column=\"1\" Text=\"Auto\" />\r\n        <TextBlock Grid.Column=\"2\" Text=\"100\" />\r\n\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"1\" Grid.Row=\"1\" />\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"1\" Grid.Row=\"2\" />\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"1\" Grid.Row=\"3\" />\r\n\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"2\" Grid.Row=\"1\" />\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"2\" Grid.Row=\"2\" />\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"2\" Grid.Row=\"3\" />\r\n    </Grid>\r\n</UserControl>"
  },
  {
    "path": "litmus/LitmusTests/Tests/PathTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class PathTest : UserControl\r\n    {\r\n        public PathTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/RectangleTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.RectangleTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n    <Grid ShowGridLines=\"True\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"100\" />\r\n            <RowDefinition Height=\"*\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"Auto\" />\r\n            <ColumnDefinition Width=\"Auto\" />\r\n            <ColumnDefinition Width=\"100\" />\r\n            <ColumnDefinition Width=\"*\" />\r\n        </Grid.ColumnDefinitions>\r\n\r\n        <TextBlock Grid.Row=\"1\" Text=\"Auto\" />\r\n        <TextBlock Grid.Row=\"2\" Text=\"100\" />\r\n        <TextBlock Grid.Row=\"3\" Text=\"*\" />\r\n\r\n        <TextBlock Grid.Column=\"1\" Text=\"Auto\" />\r\n        <TextBlock Grid.Column=\"2\" Text=\"100\" />\r\n\r\n        <Rectangle Grid.Column=\"1\" Grid.Row=\"1\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"2\" Grid.Row=\"1\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"1\" Grid.Row=\"2\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"2\" Grid.Row=\"2\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"1\" Grid.Row=\"3\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"2\" Grid.Row=\"3\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/RectangleTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class RectangleTest : UserControl\r\n    {\r\n        public RectangleTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ResourceTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ResourceTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    <UserControl.Resources>\r\n        <SolidColorBrush x:Key=\"TheBrush\" Color=\"Yellow\" />\r\n    </UserControl.Resources>\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Border x:Name=\"LeftBorder\" Background=\"{StaticResource TheBrush}\">\r\n\r\n        </Border>\r\n        <Border x:Name=\"RightBorder\" Grid.Column=\"1\" Background=\"{StaticResource TheBrush}\">\r\n\r\n        </Border>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ResourceTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ResourceTest : UserControl\r\n    {\r\n        public ResourceTest()\r\n        {\r\n            InitializeComponent();\r\n\r\n            var brush = Resources[\"TheBrush\"] as SolidColorBrush;\r\n            brush.Color = Colors.Black;\r\n            //Changes both borders\r\n\r\n            (LeftBorder.Background as SolidColorBrush).Color = Colors.Blue;\r\n            //Changes both borders\r\n\r\n            var sb = new Storyboard();\r\n            Storyboard.SetTarget(sb, LeftBorder);\r\n            Storyboard.SetTargetProperty(sb, new PropertyPath(\"(Border.Background).(SolidColorBrush.Color)\"));\r\n            sb.Children.Add(new ColorAnimation\r\n            {\r\n                To = Colors.Cyan,\r\n            });\r\n            sb.Begin();\r\n            //Changes only LeftBorder\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ScrollBarTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ScrollBarTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    \r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <ScrollBar x:Name=\"TheScrollBar\" Orientation=\"Vertical\" Height=\"200\" Width=\"20\" />\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ScrollBarTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Controls.Primitives;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ScrollBarTest : UserControl\r\n    {\r\n        public ScrollBarTest()\r\n        {\r\n            InitializeComponent();\r\n            LayoutUpdated += ScrollBarTest_LayoutUpdated;\r\n        }\r\n\r\n        void ScrollBarTest_LayoutUpdated(object sender, EventArgs e)\r\n        {\r\n            if (VisualTreeHelper.GetChildrenCount(TheScrollBar) < 1)\r\n                return;\r\n            LayoutUpdated -= ScrollBarTest_LayoutUpdated;\r\n            var child = VisualTreeHelper.GetChild(TheScrollBar, 0) as FrameworkElement;\r\n            var thumb = child.FindName(\"VerticalThumb\") as Thumb;\r\n            thumb.MouseLeave += thumb_MouseLeave;\r\n            thumb.MouseEnter += thumb_MouseEnter;\r\n        }\r\n\r\n        //These will occur like normal even if mouse is capture on the item\r\n\r\n        void thumb_MouseEnter(object sender, MouseEventArgs e)\r\n        {\r\n            Debug.WriteLine(\"Mouse Enter\");\r\n        }\r\n\r\n        private void thumb_MouseLeave(object sender, MouseEventArgs e)\r\n        {\r\n            Debug.WriteLine(\"Mouse Leave\");\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ScrollViewerTest.xaml",
    "content": "﻿<UserControl \r\n    x:Class=\"LitmusTests.Tests.ScrollViewerTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:controls=\"clr-namespace:LitmusTests.Controls\">\r\n    <Grid>\r\n        <ScrollViewer Width=\"300\" Height=\"300\">\r\n            <controls:PanelMonitor Width=\"600\" Height=\"480\">\r\n                <controls:PanelMonitor.Background>\r\n                    <LinearGradientBrush>\r\n                        <GradientStop Offset=\"0\" Color=\"Red\" />\r\n                        <GradientStop Offset=\"0.2\" Color=\"Orange\" />\r\n                        <GradientStop Offset=\"0.4\" Color=\"Yellow\" />\r\n                        <GradientStop Offset=\"0.6\" Color=\"Green\" />\r\n                        <GradientStop Offset=\"0.8\" Color=\"Blue\" />\r\n                        <GradientStop Offset=\"1.0\" Color=\"Violet\" />\r\n                    </LinearGradientBrush>\r\n                </controls:PanelMonitor.Background>\r\n            </controls:PanelMonitor>\r\n            <!--\r\n            <Image Width=\"600\" Height=\"480\" Stretch=\"UniformToFill\" Source=\"/LitmusTests;component/testing.jpg\" />\r\n            -->\r\n        </ScrollViewer>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ScrollViewerTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ScrollViewerTest : UserControl\r\n    {\r\n        public ScrollViewerTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ShapeStretch.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.ShapeStretch\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"800\" d:DesignWidth=\"800\">\r\n    <Grid Background=\"AntiqueWhite\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition />\r\n            <RowDefinition />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Polygon Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" Stretch=\"Uniform\">\r\n        </Polygon>\r\n        <Polygon Grid.Column=\"1\" Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" Stretch=\"Fill\">\r\n        </Polygon>\r\n        <Polygon Grid.Row=\"1\" Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" Stretch=\"UniformToFill\">\r\n        </Polygon>\r\n        <Polygon Grid.Row=\"1\" Grid.Column=\"1\" Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" Stretch=\"None\">\r\n        </Polygon>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/ShapeStretch.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class ShapeStretch : UserControl\r\n    {\r\n        public ShapeStretch()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/TextBoxTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.TextBoxTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    \r\n    <StackPanel x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <TextBox x:Name=\"TestTextBox\" Text=\"{Binding SomeText, Mode=TwoWay}\" />\r\n        <Button />\r\n        <TextBlock Text=\"{Binding ElementName=TestTextBox, Path=Text}\" />\r\n        <TextBlock Text=\"{Binding SomeText}\" />\r\n    </StackPanel>\r\n</UserControl>"
  },
  {
    "path": "litmus/LitmusTests/Tests/TextBoxTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class TextBoxTest : UserControl\r\n    {\r\n        public TextBoxTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/TooltipTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.TooltipTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <StackPanel HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\r\n            <Border Background=\"Green\">\r\n                <ToolTipService.ToolTip>\r\n                    <ToolTip>\r\n                        <Border Width=\"200\" Height=\"200\" Background=\"Silver\" BorderBrush=\"Black\" BorderThickness=\"1\"\r\n                                CornerRadius=\"5\">\r\n                            <TextBlock Foreground=\"White\" Text=\"Infinitely extensible tooltip!\"/>\r\n                        </Border>\r\n                    </ToolTip>\r\n                </ToolTipService.ToolTip>\r\n                <TextBlock Text=\"Mouse over me!\"></TextBlock>\r\n            </Border>\r\n            <Border Background=\"Orange\" ToolTipService.ToolTip=\"I am a normal tooltip\">\r\n                <TextBlock Text=\"Me too!\"></TextBlock>\r\n            </Border>\r\n        </StackPanel>\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/TooltipTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class TooltipTest : UserControl\r\n    {\r\n        public TooltipTest()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/TransformTest.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.TransformTest\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    \r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n\r\n    </Grid>\r\n</UserControl>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/TransformTest.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class TransformTest : UserControl\r\n    {\r\n        public TransformTest()\r\n        {\r\n            InitializeComponent();\r\n            Test();\r\n        }\r\n\r\n        private void Test()\r\n        {\r\n            var test = new TransformGroup\r\n            {\r\n                Children = new TransformCollection\r\n                {\r\n                    new TranslateTransform { X = 10, Y = 20 },\r\n                    new RotateTransform { Angle = 45 }\r\n                }\r\n            };\r\n            var v = test.Value;\r\n\r\n\r\n            var st = new TransformGroup { Children = new TransformCollection { new SkewTransform { AngleX = 45 } } };\r\n            var tt = new TranslateTransform { X = 1 };\r\n\r\n            var tg1 = new TransformGroup { Children = new TransformCollection { st, tt } };\r\n            var tg2 = new TransformGroup { Children = new TransformCollection { tt, st } };\r\n\r\n            var tg3 = new TransformGroup { Children = new TransformCollection { st } };\r\n            var tg4 = new TransformGroup { Children = new TransformCollection { tt } };\r\n\r\n            var tg5 = new TransformGroup();\r\n            tg5.Children.Add(new TranslateTransform { X = 1, Y = 2 });\r\n            tg5.Children.Add(new RotateTransform { Angle = -90 });\r\n\r\n            var tg6 = new TransformGroup();\r\n            tg6.Children.Add(new RotateTransform { Angle = -90 });\r\n            tg6.Children.Add(new TranslateTransform { X = 1, Y = 2 });\r\n\r\n            var p = new RotateTransform { Angle = 90 }.Transform(new Point(1, 2));\r\n\r\n            var m3 = new Matrix3DProjection();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Tests/nfldraft.xaml",
    "content": "﻿<UserControl x:Class=\"LitmusTests.Tests.nfldraft\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"300\" d:DesignWidth=\"400\">\r\n    <UserControl.Resources>\r\n        <Color x:Key=\"DarkGray\">#2B2F33</Color>\r\n        <Color x:Key=\"MediumGray\">#4F5459</Color>\r\n        <Color x:Key=\"LightMediumGray\">#D4D4D4</Color>\r\n        <SolidColorBrush x:Key=\"DarkGrayBrush\" Color=\"{StaticResource DarkGray}\"/>\r\n        <SolidColorBrush x:Key=\"MediumGrayBrush\" Color=\"{StaticResource MediumGray}\"/>\r\n        <SolidColorBrush x:Key=\"LightMediumGrayBrush\" Color=\"{StaticResource LightMediumGray}\"/>\r\n        <LinearGradientBrush x:Key=\"GrayGradient\" StartPoint=\"0, 0\" EndPoint=\"0, 1\">\r\n            <GradientStop Color=\"#272A2D\" Offset=\"1\"/>\r\n            <GradientStop Color=\"#393E43\" Offset=\"0\"/>\r\n        </LinearGradientBrush>\r\n        <LinearGradientBrush x:Key=\"BlueGradient\" StartPoint=\"0, 0\" EndPoint=\"0, 1\">\r\n            <GradientStop Color=\"#094897\" Offset=\"1\"/>\r\n            <GradientStop Color=\"#0D6AB9\" Offset=\"0\"/>\r\n        </LinearGradientBrush>\r\n        <LinearGradientBrush x:Key=\"WhiteGradient\" StartPoint=\".5, 0\" EndPoint=\".5, 1\">\r\n            <GradientStop Color=\"#AAFFFFFF\" Offset=\"0\"/>\r\n            <GradientStop Color=\"#20FFFFFF\" Offset=\".4\"/>\r\n            <GradientStop Color=\"Transparent\" Offset=\"1\"/>\r\n        </LinearGradientBrush>\r\n        <LinearGradientBrush x:Key=\"SilverGradient\" StartPoint=\".5, 0\" EndPoint=\".5, 1\">\r\n            <GradientStop Color=\"#44D4D4D4\" Offset=\"0\"/>\r\n            <GradientStop Color=\"Transparent\" Offset=\"1\"/>\r\n        </LinearGradientBrush>\r\n        <LinearGradientBrush x:Key=\"FadedGradient\" StartPoint=\"0, 0\" EndPoint=\"1, 0\">\r\n            <GradientStop Color=\"{StaticResource DarkGray}\" Offset=\"0\"/>\r\n            <GradientStop Color=\"Transparent\" Offset=\".2\"/>\r\n            <GradientStop Color=\"Transparent\" Offset=\".8\"/>\r\n            <GradientStop Color=\"{StaticResource DarkGray}\" Offset=\"1\"/>\r\n        </LinearGradientBrush>\r\n    </UserControl.Resources>\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"{StaticResource DarkGrayBrush}\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"*\" MaxWidth=\"250\"/>\r\n            <ColumnDefinition Width=\"3*\"/>\r\n            <ColumnDefinition Width=\"*\" MaxWidth=\"300\"/>\r\n        </Grid.ColumnDefinitions>\r\n        <StackPanel Orientation=\"Vertical\">\r\n            <Border Margin=\"5\" BorderBrush=\"Black\" BorderThickness=\"1\" CornerRadius=\"5\">\r\n                <Border Background=\"{StaticResource GrayGradient}\" BorderBrush=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"1, 1, 0, 0\" CornerRadius=\"5\">\r\n                    <StackPanel Orientation=\"Vertical\">\r\n                        <TextBlock Foreground=\"White\" FontSize=\"30\" FontWeight=\"Bold\" TextAlignment=\"Center\" Text=\"{Binding Countdown}\">\r\n                            <TextBlock.Effect>\r\n                                <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"3\"/>\r\n                            </TextBlock.Effect>\r\n                        </TextBlock>\r\n                        <Border Margin=\"5\" BorderBrush=\"Black\" BorderThickness=\"1\" CornerRadius=\"3\">\r\n                            <Border BorderBrush=\"#606572\" BorderThickness=\"1, 1, 0, 0\" Background=\"{StaticResource MediumGrayBrush}\" CornerRadius=\"3\">\r\n                                <Grid Margin=\"5\">\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition/>\r\n                                        <RowDefinition/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition/>\r\n                                        <ColumnDefinition/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <TextBlock FontSize=\"14\" Foreground=\"Silver\" FontWeight=\"Bold\" Text=\"Round: 1\">\r\n                                        <TextBlock.Effect>\r\n                                            <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"/>\r\n                                        </TextBlock.Effect>\r\n                                    </TextBlock>\r\n                                    <TextBlock Grid.Row=\"1\" FontSize=\"14\" Foreground=\"Silver\" FontWeight=\"Bold\" Text=\"Overall: 1\">\r\n                                        <TextBlock.Effect>\r\n                                            <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"/>\r\n                                        </TextBlock.Effect>\r\n                                    </TextBlock>\r\n                                    <TextBlock Grid.RowSpan=\"2\" Grid.Column=\"1\" FontSize=\"14\" Foreground=\"White\" FontWeight=\"Bold\" VerticalAlignment=\"Center\" Text=\"Team 1\">\r\n                                        <TextBlock.Effect>\r\n                                            <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"/>\r\n                                        </TextBlock.Effect>\r\n                                    </TextBlock>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Border>\r\n                        <ListBox x:Name=\"RoundsListBox\" ItemsSource=\"{Binding Rounds}\" BorderThickness=\"1, 1, 1, 0\" BorderBrush=\"Black\" Padding=\"0\" Margin=\"5\" Background=\"{StaticResource DarkGrayBrush}\">\r\n                            <ListBox.ItemContainerStyle>\r\n                                <Style TargetType=\"ListBoxItem\">\r\n                                    <Setter Property=\"Padding\" Value=\"0\"/>\r\n                                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n                                </Style>\r\n                            </ListBox.ItemContainerStyle>\r\n                            <ListBox.ItemTemplate>\r\n                                <DataTemplate>\r\n                                    <StackPanel>\r\n                                        <Border Background=\"{StaticResource BlueGradient}\" BorderBrush=\"Black\" BorderThickness=\"0, 1, 0, 1\" Margin=\"0, -1, 0, 0\">\r\n                                            <TextBlock TextAlignment=\"Center\" Foreground=\"White\" Padding=\"1\" Text=\"{Binding RoundNumber, StringFormat='ROUND {0}'}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect Color=\"Navy\" BlurRadius=\"1\" ShadowDepth=\"1\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                        </Border>\r\n                                        <ListBox x:Name=\"DraftSpotsListBox\" ItemsSource=\"{Binding DraftSpots}\" BorderThickness=\"0\" Padding=\"0\">\r\n                                            <ListBox.ItemContainerStyle>\r\n                                                <Style TargetType=\"ListBoxItem\">\r\n                                                    <Setter Property=\"Padding\" Value=\"0\"/>\r\n                                                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n                                                </Style>\r\n                                            </ListBox.ItemContainerStyle>\r\n                                            <ListBox.ItemTemplate>\r\n                                                <DataTemplate>\r\n                                                    <Border Background=\"Black\" BorderBrush=\"Black\" BorderThickness=\"0, 0, 0, 1\">\r\n                                                        <Border Background=\"{StaticResource GrayGradient}\" BorderBrush=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"1, 1, 0, 0\">\r\n                                                            <StackPanel Orientation=\"Horizontal\">\r\n                                                                <TextBlock FontSize=\"12\" Foreground=\"White\" FontWeight=\"Bold\" Padding=\"3\" Text=\"{Binding Overall, StringFormat='{0}) '}\">\r\n                                                                    <TextBlock.Effect>\r\n                                                                        <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                                                    </TextBlock.Effect>\r\n                                                                </TextBlock>\r\n                                                                <TextBlock FontSize=\"12\" Foreground=\"White\" FontWeight=\"Bold\" Padding=\"3\" Text=\"{Binding Team.Name}\">\r\n                                                                    <TextBlock.Effect>\r\n                                                                        <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                                                    </TextBlock.Effect>\r\n                                                                </TextBlock>\r\n                                                            </StackPanel>\r\n                                                        </Border>\r\n                                                    </Border>\r\n                                                </DataTemplate>\r\n                                            </ListBox.ItemTemplate>\r\n                                        </ListBox>\r\n                                    </StackPanel>\r\n                                </DataTemplate>\r\n                            </ListBox.ItemTemplate>\r\n                        </ListBox>\r\n                    </StackPanel>\r\n                </Border>\r\n            </Border>\r\n        </StackPanel>\r\n        <Grid Grid.Column=\"1\" Margin=\"5\">\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"180\"/>\r\n                <RowDefinition Height=\"Auto\"/>\r\n                <RowDefinition Height=\"Auto\"/>\r\n                <RowDefinition Height=\"*\"/>\r\n                <RowDefinition Height=\"30\"/>\r\n            </Grid.RowDefinitions>\r\n            <Border Margin=\"0, 0, 0, 10\" DataContext=\"{Binding SelectedPlayer}\" BorderThickness=\"0, 0, 0, 1\" BorderBrush=\"Black\">\r\n                <Border.Background>\r\n                    <ImageBrush ImageSource=\"Images/footballfield2.png\" AlignmentY=\"Bottom\" Stretch=\"None\"/>\r\n                </Border.Background>\r\n                <Grid>\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"Auto\"/>\r\n                        <ColumnDefinition Width=\"220\"/>\r\n                        <ColumnDefinition Width=\"*\"/>\r\n                    </Grid.ColumnDefinitions>\r\n                    <Image Grid.Column=\"0\" Margin=\"-20, 0, 0, 0\" Width=\"200\" VerticalAlignment=\"Bottom\" Source=\"{Binding Headshot}\">\r\n                        <Image.Effect>\r\n                            <DropShadowEffect BlurRadius=\"20\" ShadowDepth=\"20\" Color=\"{StaticResource DarkGray}\"/>\r\n                        </Image.Effect>\r\n                    </Image>\r\n                    <Border Grid.Column=\"1\" Margin=\"-20, 10, 0, 10\" Background=\"#66E0E0E0\" BorderBrush=\"#E0E0E0\" BorderThickness=\"1\">\r\n                        <Border.Effect>\r\n                            <DropShadowEffect BlurRadius=\"50\" ShadowDepth=\"10\"/>\r\n                        </Border.Effect>\r\n                        <Grid>\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Image Grid.RowSpan=\"6\" VerticalAlignment=\"Top\" Margin=\"10, 2, 0, 0\" Width=\"60\" Source=\"{Binding Team.Logo}\"/>\r\n                            <TextBlock Grid.Row=\"0\" Grid.Column=\"1\" Grid.ColumnSpan=\"2\" Margin=\"10, 10, 0, 0\" VerticalAlignment=\"Bottom\" FontSize=\"14\" FontWeight=\"Bold\" Foreground=\"White\" Text=\"{Binding Name}\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect Color=\"{StaticResource DarkGray}\" BlurRadius=\"2\" ShadowDepth=\"2\"></DropShadowEffect>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                            <TextBlock Grid.Row=\"1\" Grid.Column=\"1\" Grid.ColumnSpan=\"2\" Margin=\"10, 2, 0, 0\" FontSize=\"14\" Foreground=\"White\" Text=\"{Binding Team.FullName}\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                            <TextBlock Grid.Row=\"2\" Grid.Column=\"1\" Margin=\"10, 2, 0, 0\" FontSize=\"12\" Foreground=\"White\" Text=\"Birthdate:\" HorizontalAlignment=\"Right\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                            <TextBlock Grid.Row=\"2\" Grid.Column=\"2\" Margin=\"5, 2, 0, 0\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding Birthdate}\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                            <TextBlock Grid.Row=\"3\" Grid.Column=\"1\" Margin=\"5, 2, 0, 0\" FontSize=\"12\" Foreground=\"White\" Text=\"Age:\" HorizontalAlignment=\"Right\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                            <TextBlock Grid.Row=\"3\" Grid.Column=\"2\" Margin=\"5, 2, 0, 0\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding Birthdate}\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                            <TextBlock Grid.Row=\"4\" Grid.Column=\"1\" Margin=\"5, 2, 0, 0\" FontSize=\"12\" Foreground=\"White\" Text=\"Height:\" HorizontalAlignment=\"Right\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                            <TextBlock Grid.Row=\"4\" Grid.Column=\"2\" Margin=\"5, 2, 0, 0\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding Height}\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                            <TextBlock Grid.Row=\"5\" Grid.Column=\"1\" Margin=\"5, 2, 0, 0\" FontSize=\"12\" Foreground=\"White\" Text=\"Weight:\" HorizontalAlignment=\"Right\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                            <TextBlock Grid.Row=\"5\" Grid.Column=\"2\" Margin=\"5, 2, 0, 0\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding Weight}\">\r\n                                <TextBlock.Effect>\r\n                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                </TextBlock.Effect>\r\n                            </TextBlock>\r\n                        </Grid>\r\n                    </Border>\r\n                    <Border Grid.Column=\"2\" Margin=\"10, 10, 10, 10\" Background=\"#66E0E0E0\" BorderBrush=\"#E0E0E0\" BorderThickness=\"1\">\r\n                        <Border.Effect>\r\n                            <DropShadowEffect BlurRadius=\"50\" ShadowDepth=\"10\"/>\r\n                        </Border.Effect>\r\n                        <StackPanel Orientation=\"Vertical\">\r\n                            <Grid Margin=\"5, 5, 5, 0\">\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition Width=\"30\"/>\r\n                                    <ColumnDefinition Width=\"40\"/>\r\n                                    <ColumnDefinition Width=\"50\"/>\r\n                                    <ColumnDefinition Width=\"50\"/>\r\n                                    <ColumnDefinition Width=\"30\"/>\r\n                                    <ColumnDefinition Width=\"30\"/>\r\n                                    <ColumnDefinition Width=\"40\"/>\r\n                                    <ColumnDefinition Width=\"40\"/>\r\n                                    <ColumnDefinition Width=\"50\"/>\r\n                                    <ColumnDefinition Width=\"50\"/>\r\n                                    <ColumnDefinition Width=\"30\"/>\r\n                                    <ColumnDefinition Width=\"60\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <TextBlock Grid.Column=\"0\" Text=\"G\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"1\" Text=\"Att\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"2\" Text=\"Yds\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"3\" Text=\"Avg\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"4\" Text=\"TD\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"5\" Text=\"Lost\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"6\" Text=\"Rec\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"7\" Text=\"Tgts\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"8\" Text=\"Yds\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"9\" Text=\"Avg\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"10\" Text=\"TD\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Grid.Column=\"11\" Text=\"Pts\" TextAlignment=\"Right\" FontWeight=\"Bold\" Foreground=\"White\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect BlurRadius=\"1\" ShadowDepth=\"1\" Color=\"{StaticResource DarkGray}\"/>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                            </Grid>\r\n                            <ListBox Margin=\"5\" ItemsSource=\"{Binding Stats}\" Background=\"Transparent\" BorderThickness=\"0\" Padding=\"0\">\r\n                                <ListBox.ItemContainerStyle>\r\n                                    <Style TargetType=\"ListBoxItem\">\r\n                                        <Setter Property=\"Padding\" Value=\"0\"/>\r\n                                        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n                                    </Style>\r\n                                </ListBox.ItemContainerStyle>\r\n                                <ListBox.ItemTemplate>\r\n                                    <DataTemplate>\r\n                                        <StackPanel Orientation=\"Horizontal\">\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"30\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding GamesPlayed}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"40\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding RushingAttempts}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"50\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding RushingYards}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"50\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding RushingAverage}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"30\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding RushingTouchdowns}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"30\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding FumblesLost}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"40\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding Receptions}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"40\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding Targets}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"50\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding ReceivingYards}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"50\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding ReceivingAverage}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"30\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding ReceivingTouchdowns}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                            <TextBlock Grid.Row=\"5\" TextAlignment=\"Right\" Grid.Column=\"1\" Width=\"60\" FontSize=\"12\" Foreground=\"White\" Text=\"{Binding FantasyPoints}\">\r\n                                                <TextBlock.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"2\" ShadowDepth=\"2\" Color=\"{StaticResource DarkGray}\"/>\r\n                                                </TextBlock.Effect>\r\n                                            </TextBlock>\r\n                                        </StackPanel>\r\n                                    </DataTemplate>\r\n                                </ListBox.ItemTemplate>\r\n                            </ListBox>\r\n                        </StackPanel>\r\n                    </Border>\r\n                </Grid>\r\n            </Border>\r\n            <Border Grid.Row=\"1\" Background=\"Silver\" CornerRadius=\"3, 3, 0, 0\">\r\n                <Grid>\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"*\"/>\r\n                        <ColumnDefinition Width=\"Auto\"/>\r\n                    </Grid.ColumnDefinitions>\r\n                    <ListBox Margin=\"3\" ItemsSource=\"{Binding Positions}\" Background=\"Transparent\" BorderThickness=\"0\">\r\n                        <ListBox.ItemContainerStyle>\r\n                            <Style TargetType=\"ListBoxItem\">\r\n                                <Setter Property=\"Padding\" Value=\"0\"/>\r\n                            </Style>\r\n                        </ListBox.ItemContainerStyle>\r\n                        <ListBox.ItemsPanel>\r\n                            <ItemsPanelTemplate>\r\n                                <StackPanel Orientation=\"Horizontal\"/>\r\n                            </ItemsPanelTemplate>\r\n                        </ListBox.ItemsPanel>\r\n                        <ListBox.ItemTemplate>\r\n                            <DataTemplate>\r\n                                <Border CornerRadius=\"3, 0, 0, 3\" BorderBrush=\"Gray\" BorderThickness=\"1, 1, 0, 1\" Background=\"{StaticResource WhiteGradient}\">\r\n                                    <TextBlock Padding=\"5, 2, 5, 2\" Foreground=\"Gray\" FontWeight=\"Bold\" Text=\"{Binding}\">\r\n                                        <TextBlock.Effect>\r\n                                            <DropShadowEffect Color=\"#DFDFDF\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                        </TextBlock.Effect>\r\n                                    </TextBlock>\r\n                                </Border>\r\n                            </DataTemplate>\r\n                        </ListBox.ItemTemplate>\r\n                    </ListBox>\r\n                    <TextBox Grid.Column=\"1\" Margin=\"3\" Width=\"200\"/>\r\n                </Grid>\r\n            </Border>\r\n            <Border Grid.Row=\"2\">\r\n                <StackPanel Orientation=\"Horizontal\">\r\n                    <TextBlock Width=\"230\" Margin=\"2\" Padding=\"2\" FontWeight=\"Bold\" Foreground=\"White\" Text=\"Name\">\r\n                        <TextBlock.Effect>\r\n                            <DropShadowEffect Color=\"#595959\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                        </TextBlock.Effect>\r\n                    </TextBlock>\r\n                    <TextBlock Width=\"45\" Margin=\"2\" Padding=\"2\" FontWeight=\"Bold\" Foreground=\"White\" Text=\"Bye\">\r\n                        <TextBlock.Effect>\r\n                            <DropShadowEffect Color=\"#595959\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                        </TextBlock.Effect>\r\n                    </TextBlock>\r\n                    <TextBlock Width=\"90\" Margin=\"2\" Padding=\"2\" FontWeight=\"Bold\" Foreground=\"White\" Text=\"Projected\">\r\n                        <TextBlock.Effect>\r\n                            <DropShadowEffect Color=\"#595959\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                        </TextBlock.Effect>\r\n                    </TextBlock>\r\n                    <TextBlock Width=\"65\" Margin=\"2\" Padding=\"2\" FontWeight=\"Bold\" Foreground=\"White\" Text=\"2012\">\r\n                        <TextBlock.Effect>\r\n                            <DropShadowEffect Color=\"#595959\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                        </TextBlock.Effect>\r\n                    </TextBlock>\r\n                    <TextBlock Width=\"50\" Margin=\"2\" Padding=\"2\" FontWeight=\"Bold\" Foreground=\"White\" Text=\"ADP\">\r\n                        <TextBlock.Effect>\r\n                            <DropShadowEffect Color=\"#595959\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                        </TextBlock.Effect>\r\n                    </TextBlock>\r\n                </StackPanel>\r\n            </Border>\r\n            <ListBox x:Name=\"PlayerList\" Grid.Row=\"3\" ItemsSource=\"{Binding FantasyPlayers}\" SelectedItem=\"{Binding SelectedPlayer, Mode=TwoWay}\" Background=\"#E0E0E0\" BorderThickness=\"0\" Padding=\"0\">\r\n                <ListBox.ItemContainerStyle>\r\n                    <Style TargetType=\"ListBoxItem\">\r\n                        <Setter Property=\"Padding\" Value=\"0\"/>\r\n                        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n                    </Style>\r\n                </ListBox.ItemContainerStyle>\r\n                <ListBox.ItemTemplate>\r\n                    <DataTemplate>\r\n                        <Border Background=\"{StaticResource WhiteGradient}\" BorderBrush=\"Silver\"\r\n                                Margin=\"1, 1, 1, 0\" BorderThickness=\"1\">\r\n                            <StackPanel Orientation=\"Horizontal\">\r\n                                <StackPanel Margin=\"2\" Width=\"240\" Orientation=\"Horizontal\">\r\n                                    <TextBlock FontSize=\"12\" Foreground=\"{StaticResource DarkGrayBrush}\" FontWeight=\"Bold\" Text=\"{Binding Name}\">\r\n                                        <TextBlock.Effect>\r\n                                            <DropShadowEffect Color=\"White\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                        </TextBlock.Effect>\r\n                                    </TextBlock>\r\n                                    <TextBlock FontSize=\"12\" Margin=\"10, 0, 0, 0\" Foreground=\"{StaticResource DarkGrayBrush}\" Text=\"{Binding Team.Abbreviation}\">\r\n                                        <TextBlock.Effect>\r\n                                            <DropShadowEffect Color=\"White\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                        </TextBlock.Effect>\r\n                                    </TextBlock>\r\n                                    <TextBlock FontSize=\"12\" Foreground=\"{StaticResource DarkGrayBrush}\" Text=\" - \">\r\n                                        <TextBlock.Effect>\r\n                                            <DropShadowEffect Color=\"White\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                        </TextBlock.Effect>\r\n                                    </TextBlock>\r\n                                    <TextBlock FontSize=\"12\" Foreground=\"{StaticResource DarkGrayBrush}\" Text=\"{Binding Positions[0]}\">\r\n                                        <TextBlock.Effect>\r\n                                            <DropShadowEffect Color=\"White\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                        </TextBlock.Effect>\r\n                                    </TextBlock>\r\n                                </StackPanel>\r\n                                <TextBlock FontSize=\"12\" Margin=\"2\" Width=\"50\" Foreground=\"{StaticResource DarkGrayBrush}\" Text=\"{Binding Team.ByeWeek}\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect Color=\"White\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock FontSize=\"12\" Margin=\"2\" Width=\"70\" Foreground=\"{StaticResource DarkGrayBrush}\" Text=\"{Binding Projected.FantasyPoints}\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect Color=\"White\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock FontSize=\"12\" Margin=\"2\" Width=\"70\" Foreground=\"{StaticResource DarkGrayBrush}\" Text=\"{Binding LastSeason.FantasyPoints}\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect Color=\"White\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock FontSize=\"12\" Margin=\"2\" Width=\"50\" Foreground=\"{StaticResource DarkGrayBrush}\" Text=\"{Binding ADP}\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect Color=\"White\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                            </StackPanel>\r\n                        </Border>\r\n                    </DataTemplate>\r\n                </ListBox.ItemTemplate>\r\n            </ListBox>\r\n            <Border Grid.Row=\"4\" Background=\"White\" CornerRadius=\"0, 0, 3, 3\">\r\n                <Grid>\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"Auto\"/>\r\n                        <ColumnDefinition Width=\"Auto\"/>\r\n                        <ColumnDefinition Width=\"*\"/>\r\n                        <ColumnDefinition Width=\"Auto\"/>\r\n                    </Grid.ColumnDefinitions>\r\n                    <CheckBox Margin=\"6\">Autopick</CheckBox>\r\n                    <CheckBox Grid.Column=\"1\" Margin=\"6\">View Drafted Players</CheckBox>\r\n                    <HyperlinkButton Grid.Column=\"2\" HorizontalAlignment=\"Right\" Margin=\"6\">League Rules</HyperlinkButton>\r\n                    <CheckBox Grid.Column=\"3\" Margin=\"6\">Mute</CheckBox>\r\n                </Grid>\r\n            </Border>\r\n        </Grid>\r\n        <Grid Grid.Column=\"2\">\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"*\" MinHeight=\"150\"/>\r\n                <RowDefinition Height=\"*\" MinHeight=\"150\"/>\r\n                <RowDefinition Height=\"*\" MinHeight=\"150\"/>\r\n                <RowDefinition Height=\"*\" MinHeight=\"150\"/>\r\n                <RowDefinition Height=\"Auto\"/>\r\n            </Grid.RowDefinitions>\r\n            <Grid Background=\"Black\" Margin=\"5\">\r\n                <Grid.RowDefinitions>\r\n                    <RowDefinition Height=\"Auto\"/>\r\n                    <RowDefinition Height=\"*\"/>\r\n                </Grid.RowDefinitions>\r\n                <Border Margin=\"1\" Background=\"{StaticResource GrayGradient}\" BorderBrush=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"1, 1, 0, 0\">\r\n                    <TextBlock Foreground=\"White\" FontWeight=\"Bold\" Padding=\"3\" Text=\"Draft Queue\">\r\n                        <TextBlock.Effect>\r\n                            <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"/>\r\n                        </TextBlock.Effect>\r\n                    </TextBlock>\r\n                </Border>\r\n                <ListBox Grid.Row=\"1\" Margin=\"1, 0, 1, 1\" Background=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"0\">\r\n\r\n                </ListBox>\r\n            </Grid>\r\n            <Grid Grid.Row=\"1\" Background=\"Black\" Margin=\"5, 0, 5, 5\">\r\n                <Grid.RowDefinitions>\r\n                    <RowDefinition Height=\"Auto\"/>\r\n                    <RowDefinition Height=\"*\"/>\r\n                </Grid.RowDefinitions>\r\n                <Border Margin=\"1\" Background=\"{StaticResource GrayGradient}\" BorderBrush=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"1, 1, 0, 0\">\r\n                    <TextBlock Foreground=\"White\" FontWeight=\"Bold\" Padding=\"3\" Text=\"Draft History\">\r\n                        <TextBlock.Effect>\r\n                            <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"/>\r\n                        </TextBlock.Effect>\r\n                    </TextBlock>\r\n                </Border>\r\n                <ListBox Grid.Row=\"1\" ItemsSource=\"{Binding DraftSelections}\" SelectedItem=\"{Binding SelectedPlayer}\" Margin=\"1, 0, 1, 1\" Background=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"0\" Padding=\"0\" ScrollViewer.HorizontalScrollBarVisibility=\"Disabled\">\r\n                    <ListBox.ItemContainerStyle>\r\n                        <Style TargetType=\"ListBoxItem\">\r\n                            <Setter Property=\"Padding\" Value=\"0\"/>\r\n                        </Style>\r\n                    </ListBox.ItemContainerStyle>\r\n                    <ListBox.ItemTemplate>\r\n                        <DataTemplate>\r\n                            <StackPanel Orientation=\"Horizontal\">\r\n                                <TextBlock Foreground=\"White\" FontSize=\"12\" Margin=\"2, 0, 0, 0\" Padding=\"2\" Text=\"{Binding DraftSpot.Overall, StringFormat='{0})'}\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Foreground=\"White\" FontSize=\"12\" Padding=\"2\" Text=\"{Binding FantasyPlayer.Name}\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Foreground=\"White\" FontSize=\"12\" Padding=\"2\" Text=\"{Binding DraftSpot.Team.Name, StringFormat=' ({0})'}\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                            </StackPanel>\r\n                        </DataTemplate>\r\n                    </ListBox.ItemTemplate>\r\n                </ListBox>\r\n            </Grid>\r\n            <Grid Grid.Row=\"2\" Background=\"Black\" Margin=\"5, 0, 5, 5\">\r\n                <Grid.RowDefinitions>\r\n                    <RowDefinition Height=\"Auto\"/>\r\n                    <RowDefinition Height=\"*\"/>\r\n                </Grid.RowDefinitions>\r\n                <Border Margin=\"1\" Background=\"{StaticResource GrayGradient}\" BorderBrush=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"1, 1, 0, 0\">\r\n                    <TextBlock Foreground=\"White\" FontWeight=\"Bold\" Padding=\"3\" Text=\"Team Rosters\">\r\n                        <TextBlock.Effect>\r\n                            <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"/>\r\n                        </TextBlock.Effect>\r\n                    </TextBlock>\r\n                </Border>\r\n                <ListBox Grid.Row=\"1\" Margin=\"1, 0, 1, 1\" Background=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"0\">\r\n\r\n                </ListBox>\r\n            </Grid>\r\n            <Grid Grid.Row=\"3\" Background=\"Black\" Margin=\"5, 0, 5, 5\">\r\n                <Grid.RowDefinitions>\r\n                    <RowDefinition Height=\"Auto\"/>\r\n                    <RowDefinition Height=\"*\"/>\r\n                </Grid.RowDefinitions>\r\n                <Border Margin=\"1\" Background=\"{StaticResource GrayGradient}\" BorderBrush=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"1, 1, 0, 0\">\r\n                    <StackPanel Orientation=\"Horizontal\">\r\n                        <TextBlock Margin=\"30, 0, 0, 0\" Foreground=\"White\" FontWeight=\"Bold\" Padding=\"3\" Text=\"{Binding ChatMessages.Count, StringFormat='Chat ({0})'}\">\r\n                            <TextBlock.Effect>\r\n                                <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"/>\r\n                            </TextBlock.Effect>\r\n                        </TextBlock>\r\n                    </StackPanel>\r\n                </Border>\r\n                <ListBox Grid.Row=\"1\" ItemsSource=\"{Binding ChatMessages}\" Margin=\"1, 0, 1, 1\" Background=\"{StaticResource MediumGrayBrush}\" BorderThickness=\"0\">\r\n                    <ListBox.ItemContainerStyle>\r\n                        <Style TargetType=\"ListBoxItem\">\r\n                            <Setter Property=\"Padding\" Value=\"0\"/>\r\n                        </Style>\r\n                    </ListBox.ItemContainerStyle>\r\n                    <ListBox.ItemTemplate>\r\n                        <DataTemplate>\r\n                            <StackPanel Orientation=\"Horizontal\">\r\n                                <TextBlock Foreground=\"White\" FontSize=\"12\" Margin=\"2, 0, 0, 0\" Padding=\"2\" Text=\"{Binding FantasyTeam.Name, StringFormat='{0} - '}\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                                <TextBlock Foreground=\"White\" FontSize=\"12\" Padding=\"2\" Text=\"{Binding Message}\">\r\n                                    <TextBlock.Effect>\r\n                                        <DropShadowEffect Color=\"Black\" BlurRadius=\"1\" ShadowDepth=\"1\"></DropShadowEffect>\r\n                                    </TextBlock.Effect>\r\n                                </TextBlock>\r\n                            </StackPanel>\r\n                        </DataTemplate>\r\n                    </ListBox.ItemTemplate>\r\n                </ListBox>\r\n                <Image HorizontalAlignment=\"Left\" Margin=\"-4, -8, 5, -10\" Width=\"36\" Height=\"36\" Source=\"Images/chat.png\"/>\r\n            </Grid>\r\n            <TextBox x:Name=\"ChatTextbox\" Grid.Row=\"4\" Margin=\"5, 0, 5, 5\" Foreground=\"White\" Background=\"{StaticResource MediumGrayBrush}\" BorderBrush=\"Black\"></TextBox>\r\n        </Grid>\r\n    </Grid>\r\n</UserControl>"
  },
  {
    "path": "litmus/LitmusTests/Tests/nfldraft.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Windows;\r\nusing System.Windows.Controls;\r\nusing System.Windows.Documents;\r\nusing System.Windows.Input;\r\nusing System.Windows.Media;\r\nusing System.Windows.Media.Animation;\r\nusing System.Windows.Shapes;\r\n\r\nnamespace LitmusTests.Tests\r\n{\r\n    public partial class nfldraft : UserControl\r\n    {\r\n        public nfldraft()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "litmus/LitmusTests/Themes/Cosmopolitan/Brushes.xaml",
    "content": "﻿<ResourceDictionary\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n\r\n    <!-- *************COLORS START************* -->\r\n\r\n    <!-- Theme Base Colors -->\r\n\r\n    <!--ACCENT COLORS-->\r\n    <Color x:Key=\"HighlightDarkColor\">#FF119EDA</Color>\r\n    <Color x:Key=\"HighlightLightColor\">#FFB2E0F4</Color>\r\n    <!--80%-->\r\n    <Color x:Key=\"AccentColor\">#CC119EDA</Color>\r\n    <!--60%-->\r\n    <Color x:Key=\"AccentColor2\">#99119EDA</Color>\r\n    <!--40%-->\r\n    <Color x:Key=\"AccentColor3\">#66119EDA</Color>\r\n    <!--20%-->\r\n    <Color x:Key=\"AccentColor4\">#33119EDA</Color>\r\n\r\n    <!--BASE COLORS-->\r\n    <Color x:Key=\"BlackColor\">#FF000000</Color>\r\n    <Color x:Key=\"WhiteColor\">#FFFFFFFF</Color>\r\n    <Color x:Key=\"Gray1\">#FFCCCCCC</Color>\r\n    <Color x:Key=\"Gray2\">#FF7F7F7F</Color>\r\n    <Color x:Key=\"Gray3\">#FF333333</Color>\r\n    <Color x:Key=\"Gray4\">#FFB9B9B9</Color>\r\n    <Color x:Key=\"Gray5\">#FFD8D8D9</Color>\r\n    <Color x:Key=\"Gray6\">#FF9D9D9D</Color>\r\n    <Color x:Key=\"Gray7\">#FFF7F7F7</Color>\r\n    <Color x:Key=\"Gray8\">#FFE0E0E0</Color>\r\n    <Color x:Key=\"Gray9\">#FFA59F93</Color>\r\n    <Color x:Key=\"Gray10\">#7FFFFFFF</Color>\r\n    <Color x:Key=\"Gray11\">#7FA9A9A9</Color>\r\n    <Color x:Key=\"Gray12\">#A5F7F7F7</Color>\r\n    <Color x:Key=\"Gray13\">#5EC9C9C9</Color>\r\n    <Color x:Key=\"TextBoxText\">#FF414141</Color>\r\n    <Color x:Key=\"NormalForegroundColor\">#FF000000</Color>\r\n    <Color x:Key=\"HoverForegroundColor\">#FFFFFFFF</Color>\r\n    <!--Note: For the best design BaseColor2 should be a contrast of BaseColor1-->\r\n    <Color x:Key=\"BaseColor2\">#FFFFFFFF</Color>\r\n    <Color x:Key=\"BaseColor5\">#FFBABABA</Color>\r\n    <Color x:Key=\"BaseColor3\">#FF303030</Color>\r\n\r\n    <!--LIGHT COLOR TRANSPARENCIES-->\r\n    <!--0%-->\r\n    <Color x:Key=\"TransparentWhiteColor\">#00FFFFFF</Color>\r\n    <!--10%-->\r\n    <Color x:Key=\"TransparentWhiteLightColor\">#19FFFFFF</Color>\r\n    <!--25%-->\r\n    <Color x:Key=\"TransparentLightestColor\">#34FFFFFF</Color>\r\n    <!--65%-->\r\n    <Color x:Key=\"TransparentLightLightColor\">#A5FFFFFF</Color>\r\n    <!--85%-->\r\n    <Color x:Key=\"TransparentLightColor\">#D8FFFFFF</Color>\r\n\r\n\r\n    <!--DARK COLOR TRANSPARENCIES-->\r\n    <!--0%-->\r\n    <Color x:Key=\"TransparentBlackColor\">#00000000</Color>\r\n    <!--25%-->\r\n    <Color x:Key=\"TransparentDarkColor\">#3F000000</Color>\r\n    <!--35%-->\r\n    <Color x:Key=\"TransparentDarkDarkColor\">#59000000</Color>\r\n    <!--60%-->\r\n    <Color x:Key=\"TransparentDarkDarkDarkColor\">#99000000</Color>\r\n    <!--80%-->\r\n    <Color x:Key=\"TransparentDarkestColor\">#CC000000</Color>\r\n\r\n    <!-- CORE CONTROL COLORS-->\r\n    <Color x:Key=\"ValidationColor1\">#052A2E31</Color>\r\n    <Color x:Key=\"ValidationColor2\">#152A2E31</Color>\r\n    <Color x:Key=\"ValidationColor3\">#252A2E31</Color>\r\n    <Color x:Key=\"ValidationColor4\">#352A2E31</Color>\r\n    <Color x:Key=\"ValidationColor5\">#FFDC000C</Color>\r\n    <Color x:Key=\"ValidationSummaryColor1\">#FFDC020D</Color>\r\n    <Color x:Key=\"ValidationSummaryColor2\">#FFCA000C</Color>\r\n    <Color x:Key=\"ValidationSummaryColor3\">#FFFF9298</Color>\r\n    <Color x:Key=\"ValidationSummaryColor4\">#FFFDC8C8</Color>\r\n    <Color x:Key=\"ValidationSummaryColor5\">#DDD43940</Color>\r\n    <Color x:Key=\"ValidationSummaryFillColor1\">#59F7D8DB</Color>\r\n    <Color x:Key=\"ValidationSummaryFillColor2\">#FFF7D8DB</Color>\r\n    <Color x:Key=\"ControlsValidationColor\">#FFDB000C</Color>\r\n\r\n    <Color x:Key=\"ProgressIndeterminateColor1\">#33878787</Color>\r\n    <Color x:Key=\"ProgressIndeterminateColor2\">#33959595</Color>\r\n    <Color x:Key=\"ProgressIndeterminateColor3\">#4C000000</Color>\r\n    <Color x:Key=\"ProgressIndeterminateColor4\">#4C000000</Color>\r\n\r\n    <!-- SDK COLORS -->\r\n    <Color x:Key=\"PageOverlayColor\">#7F000000</Color>\r\n\r\n    <!-- TOOLKIT COLORS -->\r\n    <Color x:Key=\"RatingStarsColor\">#F6FF9900</Color>\r\n    <Color x:Key=\"RatingMouseOverColor\">#F6FDFF70</Color>\r\n    <Color x:Key=\"TimeHintIconColor1\">#F6CAA709</Color>\r\n    <Color x:Key=\"TimeHintIconColor2\">#F3F7F34F</Color>\r\n    <Color x:Key=\"TimeHintIconColor3\">#E7CAA709</Color>\r\n    <Color x:Key=\"TimeHintIconColor4\">#E7967C07</Color>\r\n    <Color x:Key=\"TimeHintIconColor5\">#E7625106</Color>\r\n    <Color x:Key=\"TimeHintIconColor6\">#FB8F8873</Color>\r\n    <Color x:Key=\"TimeHintIconColor7\">#F6271A47</Color>\r\n    <Color x:Key=\"TimeHintIconColor8\">#E7271A47</Color>\r\n    <Color x:Key=\"TimeHintIconColor9\">#9A89782B</Color>\r\n    <Color x:Key=\"TimeHintIconColor10\">#4DEBD60F</Color>\r\n    <Color x:Key=\"TimeHintIconColor11\">#FBF6EC20</Color>\r\n    <Color x:Key=\"TimeHintIconColor12\">#FF1B1B54</Color>\r\n    <Color x:Key=\"TimeHintIconColor13\">#FF1C1C50</Color>\r\n\r\n    <Color x:Key=\"OKButtonIconColor1\">#FF67CA0A</Color>\r\n    <Color x:Key=\"OKButtonIconColor2\">#FF498C38</Color>\r\n    <Color x:Key=\"OKButtonIconColor3\">#FF29EE5B</Color>\r\n    <Color x:Key=\"CancelButtonIconColor1\">#FFEA7525</Color>\r\n    <Color x:Key=\"CancelButtonIconColor2\">#FFDA715B</Color>\r\n    <Color x:Key=\"CancelButtonIconColor3\">#FFB72909</Color>\r\n\r\n    <!--CHART COLORS-->\r\n    <Color x:Key=\"ChartBrush1\">#FF0097FC</Color>\r\n    <Color x:Key=\"ChartBrush2\">#FF70BBED</Color>\r\n    <Color x:Key=\"ChartBrush3\">#FF70BBED</Color>\r\n    <Color x:Key=\"ChartBrush4\">#FF4556BA</Color>\r\n    <Color x:Key=\"ChartBrush5\">#FFC84BA4</Color>\r\n    <Color x:Key=\"ChartBrush6\">#FF477ABE</Color>\r\n    <Color x:Key=\"ChartBrush7\">#FF6644B7</Color>\r\n    <Color x:Key=\"ChartBrush8\">#FFA045BA</Color>\r\n    <Color x:Key=\"ChartBrush9\">#FF73C348</Color>\r\n    <Color x:Key=\"ChartBrush10\">#FFDD5279</Color>\r\n    <Color x:Key=\"ChartBrush11\">#FF4999C4</Color>\r\n    <Color x:Key=\"ChartBrush12\">#FFEC8B58</Color>\r\n    <Color x:Key=\"ChartBrush13\">#FFECA058</Color>\r\n    <Color x:Key=\"ChartBrush14\">#FFEC6558</Color>\r\n    <Color x:Key=\"ChartBrush15\">#FFEC8B58</Color>\r\n    <Color x:Key=\"ChartBrush16\">#FFECA058</Color>\r\n\r\n    <!-- Colors Stop -->\r\n\r\n    <!-- *************BRUSHES START************* -->\r\n    <!--PROJECT TEMPLATE BRUSHES -->\r\n\r\n    <!-- UNIVERSAL CONTROL BRUSHES -->\r\n    <SolidColorBrush x:Key=\"ControlBackgroundBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"WhiteBrush\" Color=\"{StaticResource WhiteColor}\" />\r\n    <SolidColorBrush x:Key=\"BlackBrush\" Color=\"{StaticResource BlackColor}\" />\r\n    <SolidColorBrush x:Key=\"TextBrush\" Color=\"{StaticResource BlackColor}\" />\r\n    <SolidColorBrush x:Key=\"LabelTextBrush\" Color=\"{StaticResource BlackColor}\" />\r\n    <SolidColorBrush x:Key=\"WhiteColorBrush\" Color=\"{StaticResource WhiteColor}\" />\r\n    <SolidColorBrush x:Key=\"BlackColorBrush\" Color=\"{StaticResource BlackColor}\" />\r\n\r\n    <SolidColorBrush x:Key=\"HighlightBrush\" Color=\"{StaticResource HighlightDarkColor}\" />\r\n    <SolidColorBrush x:Key=\"HighlightLightBrush\" Color=\"{StaticResource HighlightLightColor}\" />\r\n    <SolidColorBrush x:Key=\"NavigationBorderBrush\" Color=\"#FF9D9492\" />\r\n    <SolidColorBrush x:Key=\"NavigationForegroundBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"PageBorderBrush\" Color=\"#FFB2B2B2\" />\r\n    <SolidColorBrush x:Key=\"BodyTextColorBrush\" Color=\"#FF313131\"/>\r\n    <SolidColorBrush x:Key=\"ControlsDisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n    <SolidColorBrush x:Key=\"ReadOnlyBrush\" Color=\"{StaticResource TransparentLightestColor}\"/>\r\n    <SolidColorBrush x:Key=\"DisabledForegroundBrush\" Color=\"#FFAAAAAA\"/>\r\n    <SolidColorBrush x:Key=\"DisabledControlBrush\" Color=\"#FFAAAAAA\"/>\r\n    <SolidColorBrush x:Key=\"DisabledWhiteColorBrush\" Color=\"{StaticResource WhiteColor}\" />\r\n    <SolidColorBrush x:Key=\"RatingStarsBrush\" Color=\"{StaticResource RatingStarsColor}\" />\r\n    <SolidColorBrush x:Key=\"RatingMouseOverBrush\" Color=\"{StaticResource RatingMouseOverColor}\" />\r\n    <SolidColorBrush x:Key=\"PageOverlayBrush\" Color=\"{StaticResource PageOverlayColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"FuzzBrush1\" Color=\"#1E000000\" />\r\n    <SolidColorBrush x:Key=\"FuzzBrush2\" Color=\"#14000000\" />\r\n    <SolidColorBrush x:Key=\"FuzzBrush3\" Color=\"Black\" />\r\n\r\n    <SolidColorBrush x:Key=\"TransparentWhiteBrush\" Color=\"{StaticResource TransparentWhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentWhiteLightBrush\" Color=\"{StaticResource TransparentWhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentLightestBrush\" Color=\"{StaticResource TransparentLightestColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentLightLightBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentBlackBrush\" Color=\"{StaticResource TransparentBlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentDarkBrush\" Color=\"{StaticResource TransparentDarkColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentDarkDarkDarkBrush\" Color=\"{StaticResource TransparentDarkDarkDarkColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"GrayBrush1\" Color=\"{StaticResource Gray1}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush2\" Color=\"{StaticResource Gray2}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush3\" Color=\"{StaticResource Gray3}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush4\" Color=\"{StaticResource Gray4}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush5\" Color=\"{StaticResource Gray5}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush6\" Color=\"{StaticResource Gray6}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush7\" Color=\"{StaticResource Gray7}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush8\" Color=\"{StaticResource Gray8}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush9\" Color=\"{StaticResource Gray9}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush10\" Color=\"{StaticResource Gray10}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush11\" Color=\"{StaticResource Gray11}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush12\" Color=\"{StaticResource Gray12}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush13\" Color=\"{StaticResource Gray13}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"HoverHyperlinkForegroundBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"HoverHyperlinkBackgroundBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"TextBoxBorderBrush\" Color=\"{StaticResource Gray1}\" />\r\n    <SolidColorBrush x:Key=\"ControlBorderBrush\" Color=\"{StaticResource Gray1}\" />\r\n    <SolidColorBrush x:Key=\"TextBoxMouseOverBorderBrush\" Color=\"{StaticResource HighlightDarkColor}\" />\r\n    <SolidColorBrush x:Key=\"TextBoxMouseOverInnerBorderBrush\" Color=\"{StaticResource HighlightLightColor}\" />\r\n\r\n    <SolidColorBrush x:Key=\"CheckBoxBrush\" Color=\"{StaticResource Gray2}\" />\r\n    <SolidColorBrush x:Key=\"CheckBoxMouseOverBrush\" Color=\"{StaticResource Gray3}\" />\r\n    <LinearGradientBrush x:Key=\"CheckBoxBackgroundBrush\" EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n        <GradientStop Color=\"#FFE5E5E5\" Offset=\"0\"/>\r\n        <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n    </LinearGradientBrush>\r\n\r\n    <LinearGradientBrush x:Key=\"ApplicationNameBrush\" EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n        <GradientStop Color=\"#FF14BBD2\" Offset=\"0\"/>\r\n        <GradientStop Color=\"#FF013C6C\" Offset=\"1\"/>\r\n    </LinearGradientBrush>\r\n\r\n    <SolidColorBrush x:Key=\"ThumbBrush\" Color=\"{StaticResource Gray4}\" />\r\n\r\n    <SolidColorBrush x:Key=\"ItemSelectedBrush\" Color=\"{StaticResource Gray5}\" />\r\n\r\n    <SolidColorBrush x:Key=\"SliderTrackBrush\" Color=\"{StaticResource Gray6}\" />\r\n\r\n    <SolidColorBrush x:Key=\"NormalBrush\" Color=\"{StaticResource Gray7}\" />\r\n\r\n    <SolidColorBrush x:Key=\"ComboBoxPopupBrush\" Color=\"{StaticResource Gray9}\" />\r\n    <LinearGradientBrush x:Key=\"BrandingBrush\" EndPoint=\"0.001,0.5\" StartPoint=\"1.002,0.5\">\r\n        <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0\"/>\r\n        <GradientStop Color=\"#FF5FC316\" Offset=\"1\"/>\r\n    </LinearGradientBrush>\r\n\r\n    <DropShadowEffect x:Key=\"DropShadowBrush\" Direction=\"330\" Opacity=\"0.3\" ShadowDepth=\"0\" BlurRadius=\"6\"/>\r\n\r\n    <SolidColorBrush x:Key=\"WindowBackgroundBrush\" Color=\"{StaticResource WhiteColor}\" />\r\n    <SolidColorBrush x:Key=\"SeperatorBrush\" Color=\"#FFC4C4C5\"/>\r\n\r\n\r\n    <!-- CONTROL VALIDATION BRUSHES -->\r\n    <SolidColorBrush x:Key=\"ControlsValidationBrush\" Color=\"{StaticResource ControlsValidationColor}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush1\" Color=\"{StaticResource ValidationColor1}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush2\" Color=\"{StaticResource ValidationColor2}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush3\" Color=\"{StaticResource ValidationColor3}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush4\" Color=\"{StaticResource ValidationColor4}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush5\" Color=\"{StaticResource ValidationColor5}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush1\" Color=\"{StaticResource ValidationSummaryColor1}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush2\" Color=\"{StaticResource ValidationSummaryColor2}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush3\" Color=\"{StaticResource ValidationSummaryColor3}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush4\" Color=\"{StaticResource ValidationSummaryColor4}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush5\" Color=\"{StaticResource ValidationSummaryColor5}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryFillBrush1\" Color=\"{StaticResource ValidationSummaryFillColor1}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryFillBrush2\" Color=\"{StaticResource ValidationSummaryFillColor2}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryDisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n\r\n    <!--VALIDATION ICON BRUSHES-->\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush1\" Color=\"{StaticResource TimeHintIconColor1}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush2\" Color=\"{StaticResource TimeHintIconColor2}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush3\" Color=\"{StaticResource TimeHintIconColor3}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush4\" Color=\"{StaticResource TimeHintIconColor4}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush5\" Color=\"{StaticResource TimeHintIconColor5}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush6\" Color=\"{StaticResource TimeHintIconColor6}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush7\" Color=\"{StaticResource TimeHintIconColor7}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush8\" Color=\"{StaticResource TimeHintIconColor8}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush9\" Color=\"{StaticResource TimeHintIconColor9}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush10\" Color=\"{StaticResource TimeHintIconColor10}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush11\" Color=\"{StaticResource TimeHintIconColor11}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush12\" Color=\"{StaticResource TimeHintIconColor12}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush13\" Color=\"{StaticResource TimeHintIconColor13}\"/>\r\n\r\n    <!-- Brushes Stop -->\r\n\r\n\r\n    <!-- Brushes End -->\r\n</ResourceDictionary>\r\n\r\n"
  },
  {
    "path": "litmus/LitmusTests/Themes/Cosmopolitan/CoreStyles.xaml",
    "content": "﻿<ResourceDictionary\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:sys=\"clr-namespace:System;assembly=mscorlib\"\r\n    xmlns:controls=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls\" \r\n    xmlns:System_Windows_Controls_Primitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls\"\r\n    xmlns:System=\"clr-namespace:System;assembly=mscorlib\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \r\n    mc:Ignorable=\"d\">\r\n\r\n    <!-- Global Settings-->\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"Brushes.xaml\"/>\r\n        <ResourceDictionary Source=\"Fonts.xaml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n\r\n    <!--SearchButtonStyle-->\r\n    <Style x:Key=\"SearchButtonStyle\" TargetType=\"HyperlinkButton\">\r\n        <Setter Property=\"Margin\" Value=\"-22,0,20,0\" />\r\n        <Setter Property=\"ContentTemplate\">\r\n            <Setter.Value>\r\n                <DataTemplate>\r\n                    <Grid Width=\"14\" Height=\"16\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Margin=\"3,2,0,0\">\r\n                        <Rectangle Fill=\"#FF767676\" HorizontalAlignment=\"Right\" Height=\"8\" Margin=\"0,0,-0.164,-0.334\" RadiusY=\"0.5\" RadiusX=\"0.5\" RenderTransformOrigin=\"0.5,0.5\" Stroke=\"#FF767676\" UseLayoutRounding=\"False\" VerticalAlignment=\"Bottom\" Width=\"4\">\r\n                            <Rectangle.RenderTransform>\r\n                                <RotateTransform Angle=\"-45\"/>\r\n                            </Rectangle.RenderTransform>\r\n                        </Rectangle>\r\n                        <Ellipse Fill=\"Transparent\" Margin=\"0,0,1,3\" Stroke=\"#FF767676\"/>\r\n                    </Grid>\r\n                </DataTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                    <Grid x:Name=\"grid\" Cursor=\"{TemplateBinding Cursor}\" Margin=\"-6,0,0,-4\">\r\n                        <Grid.Background>\r\n                            <SolidColorBrush Color=\"{StaticResource BaseColor2}\"/>\r\n                        </Grid.Background>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HighlightLightColor}\" Storyboard.TargetProperty=\"(SolidColorBrush.Color)\" Storyboard.TargetName=\"ContentPresenterWrapperColor\" d:IsOptimized=\"True\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray5}\" Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\" Storyboard.TargetName=\"grid\" d:IsOptimized=\"True\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray5}\" Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\" Storyboard.TargetName=\"grid\" d:IsOptimized=\"True\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.8\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"grid\" d:IsOptimized=\"True\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"DisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <TextBlock x:Name=\"UnderlineTextBlock\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" TextDecorations=\"Underline\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n\t\t\t\t\t\t\t<TextBlock.Foreground>\r\n\t\t\t\t\t\t\t\t<SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n\t\t\t\t\t\t\t</TextBlock.Foreground>\r\n                        </TextBlock>\r\n                        <TextBlock x:Name=\"DisabledOverlay\" Foreground=\"{StaticResource DisabledForegroundBrush}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Canvas.ZIndex=\"1\"/>\r\n                        <ContentControl>\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource HighlightDarkColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Width=\"21\" Margin=\"2,3,0,0\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightLightColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Control Label Style-->\r\n    <Style x:Key=\"ControlLabelStyle\" TargetType=\"TextBlock\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource LabelTextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource LabelFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n    </Style>\r\n\r\n    <!--ValidationToolTipTemplate Style-->\r\n    <ControlTemplate x:Key=\"ValidationToolTipTemplate\">\r\n        <Grid x:Name=\"Root\" Margin=\"5,0\" Opacity=\"0\" RenderTransformOrigin=\"0,0\">\r\n            <Grid.RenderTransform>\r\n                <TranslateTransform x:Name=\"xform\" X=\"-25\"/>\r\n            </Grid.RenderTransform>\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"OpenStates\">\r\n                    <VisualStateGroup.Transitions>\r\n                        <VisualTransition GeneratedDuration=\"0\"/>\r\n                        <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"Open\">\r\n                            <Storyboard>\r\n                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"xform\">\r\n                                    <SplineDoubleKeyFrame KeyTime=\"0:0:0.2\" Value=\"0\"/>\r\n                                </DoubleAnimationUsingKeyFrames>\r\n                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\">\r\n                                    <SplineDoubleKeyFrame KeyTime=\"0:0:0.2\" Value=\"1\"/>\r\n                                </DoubleAnimationUsingKeyFrames>\r\n                            </Storyboard>\r\n                        </VisualTransition>\r\n                    </VisualStateGroup.Transitions>\r\n                    <VisualState x:Name=\"Closed\">\r\n                        <Storyboard>\r\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\">\r\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                            </DoubleAnimationUsingKeyFrames>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                    <VisualState x:Name=\"Open\">\r\n                        <Storyboard>\r\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"xform\">\r\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                            </DoubleAnimationUsingKeyFrames>\r\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\">\r\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                            </DoubleAnimationUsingKeyFrames>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Border Background=\"{StaticResource ValidationBrush1}\" CornerRadius=\"5\" Margin=\"4,4,-4,-4\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush2}\" CornerRadius=\"4\" Margin=\"3,3,-3,-3\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush3}\" CornerRadius=\"3\" Margin=\"2,2,-2,-2\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush4}\" CornerRadius=\"2\" Margin=\"1,1,-1,-1\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush5}\" CornerRadius=\"2\"/>\r\n            <Border CornerRadius=\"2\">\r\n                <TextBlock Foreground=\"{StaticResource WhiteColorBrush}\" MaxWidth=\"250\" Margin=\"8,4,8,4\" TextWrapping=\"Wrap\" Text=\"{Binding (Validation.Errors)[0].ErrorContent}\" UseLayoutRounding=\"false\"/>\r\n            </Border>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--CommonValidationToolTipTemplate Style-->\r\n    <ControlTemplate x:Key=\"CommonValidationToolTipTemplate\" TargetType=\"ToolTip\">\r\n        <Grid x:Name=\"Root\" Margin=\"5,0\" Opacity=\"0\" RenderTransformOrigin=\"0,0\">\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"OpenStates\">\r\n                    <VisualStateGroup.Transitions>\r\n                        <VisualTransition GeneratedDuration=\"0\" />\r\n                        <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"Open\">\r\n                            <Storyboard>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" Storyboard.TargetName=\"Translation\" Storyboard.TargetProperty=\"X\" To=\"0\">\r\n                                    <DoubleAnimation.EasingFunction>\r\n                                        <BackEase Amplitude=\".3\" EasingMode=\"EaseOut\" />\r\n                                    </DoubleAnimation.EasingFunction>\r\n                                </DoubleAnimation>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                            </Storyboard>\r\n                        </VisualTransition>\r\n                    </VisualStateGroup.Transitions>\r\n                    <VisualState x:Name=\"Closed\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"0\" />\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                    <VisualState x:Name=\"Open\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Translation\" Storyboard.TargetProperty=\"X\" To=\"0\" />\r\n                            <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Grid.RenderTransform>\r\n                <TranslateTransform x:Name=\"Translation\" X=\"-25\" />\r\n            </Grid.RenderTransform>\r\n            <Border Margin=\"4,4,-4,-4\" Background=\"{StaticResource ValidationBrush1}\" CornerRadius=\"5\" />\r\n            <Border Margin=\"3,3,-3,-3\" Background=\"{StaticResource ValidationBrush2}\" CornerRadius=\"4\" />\r\n            <Border Margin=\"2,2,-2,-2\" Background=\"{StaticResource ValidationBrush3}\" CornerRadius=\"3\" />\r\n            <Border Margin=\"1,1,-1,-1\" Background=\"{StaticResource ValidationBrush4}\" CornerRadius=\"2\" />\r\n            <Border Background=\"{StaticResource ValidationBrush5}\" CornerRadius=\"2\">\r\n                <TextBlock Margin=\"8,4,8,4\" MaxWidth=\"250\" UseLayoutRounding=\"false\" Foreground=\"{StaticResource WhiteColorBrush}\" Text=\"{Binding (Validation.Errors)[0].Exception.Message}\" TextWrapping=\"Wrap\" />\r\n            </Border>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--Button Style-->\r\n    <Style TargetType=\"Button\" x:Key=\"DefaultButtonStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\r\n        <Setter Property=\"Padding\" Value=\"5,6\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Button\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.7\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource ControlsDisabledBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"PressedBorder\" Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--HyperlinkButton Style-->\r\n    <Style TargetType=\"HyperlinkButton\" x:Key=\"DefaultHyperlinkButtonStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource HighlightBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource HyperlinkFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Padding\" Value=\"2,0,2,0\"/>\r\n        <Setter Property=\"Cursor\" Value=\"Hand\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" Cursor=\"{TemplateBinding Cursor}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"UnderlineTextBlock\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HighlightLightColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"UnderlineTextBlock\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"DisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <TextBlock x:Name=\"UnderlineTextBlock\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" TextDecorations=\"Underline\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n\t\t\t\t\t\t\t<TextBlock.Foreground>\r\n\t\t\t\t\t\t\t\t<SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n\t\t\t\t\t\t\t</TextBlock.Foreground>\r\n                        </TextBlock>\r\n                        <TextBlock x:Name=\"DisabledOverlay\" Foreground=\"{StaticResource DisabledForegroundBrush}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Canvas.ZIndex=\"1\"/>\r\n                        <ContentControl>\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource HighlightDarkColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightLightColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TextBox Style-->\r\n    <Style TargetType=\"TextBox\" x:Key=\"DefaultTextBoxStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"0\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"TextBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ReadOnlyVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\" />\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"Base\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"1\" Fill=\"{StaticResource ControlBackgroundBrush}\" />\r\n                        <Rectangle x:Name=\"FocusRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                        <Grid Margin=\"0,1,0,0\">\r\n                            <Border x:Name=\"ReadOnlyVisualElement\" Background=\"{StaticResource ReadOnlyBrush}\" Opacity=\"0\"/>\r\n                            <Grid >\r\n                                <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" IsTabStop=\"False\" Margin=\"4,0,2,2\" VerticalAlignment=\"Center\" Background=\"{x:Null}\"/>\r\n                            </Grid>\r\n                        </Grid>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Stroke=\"{StaticResource ControlsDisabledBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{StaticResource ControlsDisabledBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <sys:Boolean>true</sys:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ComboBox Style-->\r\n    <Style TargetType=\"ComboBox\" x:Key=\"DefaultComboBoxStyle\">\r\n        <Setter Property=\"Padding\" Value=\"6,4,25,4\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray7}\" />\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ComboBox\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <Style x:Name=\"comboToggleStyle\" TargetType=\"ToggleButton\">\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"Padding\" Value=\"3\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"ToggleButton\">\r\n                                            <Grid>\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\"/>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"CheckStates\">\r\n                                                        <VisualState x:Name=\"Checked\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedInnerRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unchecked\"/>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                                                <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource WhiteBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                                                <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                                                <Border x:Name=\"PressedBorder\" Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                                                <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                                                <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                                                <Rectangle x:Name=\"CheckedRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" RadiusY=\"4\" RadiusX=\"4\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                                                <Rectangle x:Name=\"CheckedInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" RadiusY=\"4\" RadiusX=\"4\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                                                <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                                <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Margin=\"1\" RadiusY=\"3.5\" RadiusX=\"3.5\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.45\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"FocusedDropDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"PopupBorder\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ContentPresenterBorder\">\r\n                            <Grid>\r\n                                <ToggleButton x:Name=\"DropDownToggle\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" HorizontalAlignment=\"Stretch\" HorizontalContentAlignment=\"Right\" Margin=\"0\" Style=\"{StaticResource comboToggleStyle}\" VerticalAlignment=\"Stretch\">\r\n                                    <Path x:Name=\"BtnArrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"BtnArrowColor\" Color=\"{StaticResource Gray3}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </ToggleButton>\r\n                                <ContentPresenter x:Name=\"ContentPresenter\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                    <TextBlock Text=\" \"/>\r\n                                </ContentPresenter>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" IsHitTestVisible=\"false\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"1\" CornerRadius=\"3\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <sys:Boolean>true</sys:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Popup x:Name=\"Popup\">\r\n                            <Border Effect=\"{StaticResource DropShadowBrush}\" x:Name=\"PopupBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" HorizontalAlignment=\"Stretch\" Height=\"Auto\" BorderBrush=\"{StaticResource ComboBoxPopupBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n\r\n                                <ScrollViewer x:Name=\"ScrollViewer\" BorderThickness=\"0\" Padding=\"1\">\r\n                                    <ItemsPresenter/>\r\n                                </ScrollViewer>\r\n                            </Border>\r\n                        </Popup>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>        \r\n    </Style>\r\n\r\n    <!--ComboBoxItem Style-->\r\n    <Style TargetType=\"ComboBoxItem\" x:Key=\"DefaultComboBoxItemStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"3\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Local\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ComboBoxItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" Margin=\"0,0.5\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\".65\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HoverForegroundColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HoverForegroundColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource HighlightBrush}\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource HighlightBrush}\"/>\r\n                        <ContentControl >\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource NormalForegroundColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TextBlock Style-->\r\n    <Style TargetType=\"TextBlock\" x:Key=\"DefaultTextBlockStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n    </Style>\r\n\r\n    <!--ScrollBar Style-->\r\n    <Style TargetType=\"ScrollBar\" x:Key=\"DefaultScrollBarStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"20\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"20\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ScrollBar\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <ControlTemplate x:Key=\"RepeatButtonTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\" Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalIncrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,1,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,1,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Fill=\"{StaticResource WhiteColorBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalDecrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Path Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\" Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"0,1,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\" Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"0,1,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalIncrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Path Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"ButtonColor\" Color=\"{StaticResource Gray3}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\" Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,0,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\" Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,0,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Fill=\"{StaticResource WhiteColorBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalDecrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Fill=\"{StaticResource ControlBackgroundBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\" StrokeThickness=\"1\"/>\r\n                                    <Rectangle x:Name=\"BackgroundMouseOver\" Fill=\"{StaticResource HighlightBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\" />\r\n                                    <Rectangle x:Name=\"BackgroundPressed\" Fill=\"{StaticResource HighlightBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\" />\r\n                                    <Rectangle x:Name=\"BackgroundGradient\" Fill=\"{StaticResource TransparentWhiteBrush}\" Margin=\"1\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource ControlBackgroundBrush}\" StrokeThickness=\"1\"/>\r\n                                    <Rectangle x:Name=\"Highlight\" IsHitTestVisible=\"false\" Margin=\"1\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\"/>\r\n                                    <Path Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\" Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,0,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\" Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,0,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalThumbTemplate\" TargetType=\"Thumb\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ThumbVisual\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0:0:0\" Value=\"0\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid x:Name=\"ThumbVisual\" Margin=\"1,0,1,0\">\r\n                                        <Rectangle x:Name=\"Background\" StrokeThickness=\"1\" Fill=\"{StaticResource ThumbBrush}\" />\r\n                                        <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"1\" Opacity=\"0\" Fill=\"{StaticResource BlackBrush}\" />\r\n                                        <Rectangle x:Name=\"PressedRectangle\" StrokeThickness=\"1\" Opacity=\"0\" Fill=\"{StaticResource BlackBrush}\" />\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalThumbTemplate\" TargetType=\"Thumb\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ThumbVisual\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0:0:0\" Value=\"0\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid x:Name=\"ThumbVisual\" Margin=\"0,1,0,1\">\r\n                                        <Rectangle x:Name=\"Background\" StrokeThickness=\"1\" Fill=\"{StaticResource ThumbBrush}\" />\r\n                                        <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"1\" Opacity=\"0\" Fill=\"{StaticResource BlackBrush}\" />\r\n                                        <Rectangle x:Name=\"PressedRectangle\" StrokeThickness=\"1\" Opacity=\"0\" Fill=\"{StaticResource BlackBrush}\" />\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"HorizontalRoot\" Height=\"11\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Border BorderThickness=\"0,0,0,1\" Grid.RowSpan=\"1\" Margin=\"0,0,0,-1\" Grid.ColumnSpan=\"5\" Visibility=\"Collapsed\" >\r\n                                <Border.BorderBrush>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray4}\"/>\r\n                                </Border.BorderBrush>\r\n                            </Border>\r\n                            <RepeatButton x:Name=\"HorizontalSmallDecrease\" Grid.Column=\"0\" IsTabStop=\"False\" Interval=\"50\" Margin=\"1\" Template=\"{StaticResource HorizontalDecrementTemplate}\" Width=\"16\"/>\r\n                            <RepeatButton x:Name=\"HorizontalLargeDecrease\" Grid.Column=\"1\" IsTabStop=\"False\" Interval=\"50\" Template=\"{StaticResource RepeatButtonTemplate}\" Width=\"0\"/>\r\n                            <Thumb x:Name=\"HorizontalThumb\" Background=\"{TemplateBinding Background}\" Grid.Column=\"2\" MinWidth=\"18\" Template=\"{StaticResource HorizontalThumbTemplate}\" Width=\"18\"/>\r\n                            <RepeatButton x:Name=\"HorizontalLargeIncrease\" Grid.Column=\"3\" IsTabStop=\"False\" Interval=\"50\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                            <RepeatButton x:Name=\"HorizontalSmallIncrease\" Grid.Column=\"4\" IsTabStop=\"False\" Interval=\"50\" Margin=\"1\" Template=\"{StaticResource HorizontalIncrementTemplate}\" Width=\"16\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"VerticalRoot\" Visibility=\"Collapsed\" Width=\"11\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <Border BorderThickness=\"0,0,1,0\" Margin=\"0,0,-1,0\" Grid.RowSpan=\"5\" Visibility=\"Collapsed\" >\r\n                                <Border.BorderBrush>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray4}\"/>\r\n                                </Border.BorderBrush>\r\n                            </Border>\r\n                            <RepeatButton x:Name=\"VerticalSmallDecrease\" Height=\"16\" IsTabStop=\"False\" Interval=\"50\" Margin=\"1\" Grid.Row=\"0\" Template=\"{StaticResource VerticalDecrementTemplate}\"/>\r\n                            <RepeatButton x:Name=\"VerticalLargeDecrease\" Height=\"0\" IsTabStop=\"False\" Interval=\"50\" Grid.Row=\"1\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                            <Thumb x:Name=\"VerticalThumb\" Height=\"18\" MinHeight=\"18\" Grid.Row=\"2\" Template=\"{StaticResource VerticalThumbTemplate}\"/>\r\n                            <RepeatButton x:Name=\"VerticalLargeIncrease\" IsTabStop=\"False\" Interval=\"50\" Grid.Row=\"3\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                            <RepeatButton x:Name=\"VerticalSmallIncrease\" Height=\"16\" IsTabStop=\"False\" Interval=\"50\" Margin=\"1\" Grid.Row=\"4\" Template=\"{StaticResource VerticalIncrementTemplate}\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ScrollViewer Style-->\r\n    <Style TargetType=\"ScrollViewer\" x:Key=\"DefaultScrollViewerStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"VerticalScrollBarVisibility\" Value=\"Visible\"/>\r\n        <Setter Property=\"Padding\" Value=\"4\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray4}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ScrollViewer\">\r\n                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                        <Grid Background=\"{TemplateBinding Background}\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <ScrollContentPresenter x:Name=\"ScrollContentPresenter\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                            <Rectangle Grid.Column=\"1\" Grid.Row=\"1\" Visibility=\"Collapsed\"/>\r\n                            <ScrollBar x:Name=\"VerticalScrollBar\" Grid.Column=\"1\" IsTabStop=\"False\" Maximum=\"{TemplateBinding ScrollableHeight}\" Margin=\"0,-1,-3,-1\" Minimum=\"0\" Orientation=\"Vertical\" Grid.Row=\"0\" Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\" Value=\"{TemplateBinding VerticalOffset}\" ViewportSize=\"{TemplateBinding ViewportHeight}\" Width=\"18\"/>\r\n                            <ScrollBar x:Name=\"HorizontalScrollBar\" Grid.Column=\"0\" Height=\"18\" IsTabStop=\"False\" Maximum=\"{TemplateBinding ScrollableWidth}\" Margin=\"-1,0,-1,-3\" Minimum=\"0\" Orientation=\"Horizontal\" Grid.Row=\"1\" Visibility=\"{TemplateBinding ComputedHorizontalScrollBarVisibility}\" Value=\"{TemplateBinding HorizontalOffset}\" ViewportSize=\"{TemplateBinding ViewportWidth}\"/>\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ListBox Style -->\r\n    <Style TargetType=\"ListBox\" x:Key=\"DefaultListBoxStyle\">\r\n        <Setter Property=\"Padding\" Value=\"1\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ListBox\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                            <ScrollViewer x:Name=\"ScrollViewer\" BorderBrush=\"Transparent\" BorderThickness=\"0\" Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\" TabNavigation=\"{TemplateBinding TabNavigation}\">\r\n                                <ItemsPresenter/>\r\n                            </ScrollViewer>\r\n                        </Border>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <sys:Boolean>true</sys:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"-1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"-1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n    </Style>\r\n\r\n    <!--ListBoxItem Style-->\r\n    <Style TargetType=\"ListBoxItem\" x:Key=\"DefaultListBoxItemStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Padding\" Value=\"10\"/>\r\n        <Setter Property=\"Margin\" Value=\"0\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Local\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ListBoxItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\".55\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"fillColor\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\" Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"contentControl\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\".55\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"contentPresenter\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\" Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"contentControl\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"fillColor\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"SelectedUnfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"fillColor2\" />\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\" Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"contentControl\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"fillColor\" Fill=\"{StaticResource HighlightBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\"/>\r\n                        <Rectangle x:Name=\"fillColor2\" Fill=\"{StaticResource HighlightBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\"/>\r\n                        <ContentControl x:Name=\"contentControl\">\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"7\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--CheckBox Style-->\r\n    <Style TargetType=\"CheckBox\" x:Key=\"DefaultCheckBoxStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource CheckBoxBackgroundBrush}\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"100\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,1,0,0\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource CheckBoxBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"CheckBox\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"grid\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckIcon\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                                <VisualState x:Name=\"Indeterminate\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"IndeterminateIcon\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"16\"/>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n                            <Grid x:Name=\"grid\" Height=\"14\" Width=\"14\" Opacity=\"0.7\">\r\n                                <Rectangle x:Name=\"Background\" Fill=\"{TemplateBinding Background}\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" />\r\n                                <Rectangle x:Name=\"MouseOverRectangle\" Stroke=\"{StaticResource CheckBoxMouseOverBrush}\" Opacity=\"0\" />\r\n                                <Rectangle x:Name=\"PressedRectangle\" Stroke=\"{StaticResource BlackBrush}\" Opacity=\"0\" />\r\n                                <Path Opacity=\"0\" x:Name=\"CheckIcon\" Data=\"M49.4375,110.4375 L51.4995,112.812 L56.3745,107.24883\" HorizontalAlignment=\"Center\" Height=\"7.6\" Stretch=\"Fill\" Stroke=\"Black\" UseLayoutRounding=\"False\" VerticalAlignment=\"Center\" Width=\"8.9\" StrokeStartLineCap=\"Triangle\" StrokeEndLineCap=\"Triangle\" StrokeThickness=\"2\"/>\r\n                                <Rectangle x:Name=\"IndeterminateIcon\" Height=\"8\" Width=\"8\" Opacity=\"0\">\r\n                                    <Rectangle.Fill>\r\n                                        <SolidColorBrush Color=\"{StaticResource Gray3}\"/>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                                <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\" />\r\n                            </Grid>\r\n                            <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"1\" CornerRadius=\"1\" Margin=\"1\" ToolTipService.PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Visibility=\"Collapsed\">\r\n                                <ToolTipService.ToolTip>\r\n                                    <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                        <ToolTip.Triggers>\r\n                                            <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                                <BeginStoryboard>\r\n                                                    <Storyboard>\r\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                <DiscreteObjectKeyFrame.Value>\r\n                                                                    <sys:Boolean>true</sys:Boolean>\r\n                                                                </DiscreteObjectKeyFrame.Value>\r\n                                                            </DiscreteObjectKeyFrame>\r\n                                                        </ObjectAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </BeginStoryboard>\r\n                                            </EventTrigger>\r\n                                        </ToolTip.Triggers>\r\n                                    </ToolTip>\r\n                                </ToolTipService.ToolTip>\r\n                                <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                    <Path Data=\"M 1,0 L5,0 A 2,2 90 0 1 7,2 L7,6 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"0,3,0,0\"/>\r\n                                    <Path Data=\"M 0,0 L2,0 L 7,5 L7,7\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"0,3,0,0\"/>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Grid>\r\n                        <ContentControl Grid.Column=\"1\">\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        </ContentControl>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--PasswordBox Style-->\r\n    <Style TargetType=\"PasswordBox\" x:Key=\"DefaultPasswordBoxStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource TextBoxText}\" />\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"PasswordBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.8\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\" d:IsOptimized=\"True\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Opacity=\"1\">\r\n                            <Border x:Name=\"ContentElement\" Margin=\"{TemplateBinding Padding}\" Padding=\"4,0,3,2\" VerticalAlignment=\"Center\"/>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"{StaticResource ControlsDisabledBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource ControlsDisabledBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" BorderBrush=\"{StaticResource TextBoxMouseOverBorderBrush}\" BorderThickness=\"1\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource TextBoxMouseOverBorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" IsHitTestVisible=\"False\" Opacity=\"0\">\r\n                            <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                        </Border>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"1\" CornerRadius=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <sys:Boolean>true</sys:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ProgressBar Style-->\r\n    <Style TargetType=\"ProgressBar\" x:Key=\"DefaultProgressBarStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource HighlightBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush4}\"/>\r\n        <Setter Property=\"Maximum\" Value=\"100\"/>\r\n        <Setter Property=\"Height\" Value=\"10\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ProgressBar\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Determinate\"/>\r\n                                <VisualState x:Name=\"Indeterminate\">\r\n                                    <Storyboard RepeatBehavior=\"Forever\">\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"IndeterminateRoot\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"DeterminateRoot\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(Shape.Fill).(LinearGradientBrush.Transform).(TransformGroup.Children)[0].X\" Storyboard.TargetName=\"IndeterminateGradientFill\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:.35\" Value=\"20\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ProgressBarTrack\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\"/>\r\n                        <Grid x:Name=\"ProgressBarRootGrid\">\r\n                            <Grid x:Name=\"IndeterminateRoot\" Visibility=\"Collapsed\">\r\n                                <Rectangle x:Name=\"IndeterminateSolidFill\" Margin=\"{TemplateBinding BorderThickness}\" Opacity=\"1\" RenderTransformOrigin=\"0.5,0.5\" StrokeThickness=\"0\" Fill=\"{StaticResource BrandingBrush}\"/>\r\n                                <Rectangle x:Name=\"IndeterminateGradientFill\" Margin=\"{TemplateBinding BorderThickness}\" Opacity=\"0.7\" StrokeThickness=\"1\">\r\n                                    <Rectangle.Fill>\r\n                                        <LinearGradientBrush EndPoint=\"0,1\" MappingMode=\"Absolute\" SpreadMethod=\"Repeat\" StartPoint=\"20,1\">\r\n                                            <LinearGradientBrush.Transform>\r\n                                                <TransformGroup>\r\n                                                    <TranslateTransform X=\"0\"/>\r\n                                                    <SkewTransform AngleX=\"-30\"/>\r\n                                                </TransformGroup>\r\n                                            </LinearGradientBrush.Transform>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor1}\" Offset=\"0\"/>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor2}\" Offset=\"0.651\"/>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor3}\" Offset=\"0.093\"/>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor4}\" Offset=\"0.548\"/>\r\n                                        </LinearGradientBrush>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                            </Grid>\r\n                            <Grid x:Name=\"DeterminateRoot\" Margin=\"1\">\r\n                                <Border x:Name=\"ProgressBarIndicator\" Background=\"{StaticResource BrandingBrush}\" HorizontalAlignment=\"Left\" Margin=\"-1\">\r\n                                    <Rectangle x:Name=\"GradientFill\" Opacity=\"0.7\" Visibility=\"Collapsed\">\r\n                                        <Rectangle.Fill>\r\n                                            <LinearGradientBrush EndPoint=\"0,1\" MappingMode=\"Absolute\" SpreadMethod=\"Repeat\" StartPoint=\"20,1\">\r\n                                                <LinearGradientBrush.Transform>\r\n                                                    <TransformGroup>\r\n                                                        <TranslateTransform X=\"0\"/>\r\n                                                        <SkewTransform AngleX=\"-30\"/>\r\n                                                    </TransformGroup>\r\n                                                </LinearGradientBrush.Transform>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor1}\" Offset=\"0\"/>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor2}\" Offset=\"0.651\"/>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor3}\" Offset=\"0.093\"/>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor4}\" Offset=\"0.548\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Fill>\r\n                                    </Rectangle>\r\n                                </Border>\r\n                            </Grid>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n    </Style>\r\n\r\n    <!--RadioButton Style-->\r\n    <Style TargetType=\"RadioButton\" x:Key=\"DefaultRadioButtonStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource CheckBoxBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,1,0,0\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource CheckBoxBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"RadioButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverEllipse\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"grid\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckIcon\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"16\"/>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\">\r\n                            <Grid x:Name=\"grid\" Height=\"15\" Width=\"15\" Opacity=\"0.7\">\r\n                                <Ellipse x:Name=\"Background\" Fill=\"{TemplateBinding Background}\" Stroke=\"{TemplateBinding BorderBrush}\" Margin=\"1\" StrokeThickness=\"{TemplateBinding BorderThickness}\" />\r\n                                <Ellipse x:Name=\"MouseOverEllipse\" Stroke=\"{StaticResource CheckBoxMouseOverBrush}\" Margin=\"1\" Opacity=\"0\" />\r\n                                <Ellipse x:Name=\"PressedEllipse\" Stroke=\"{StaticResource BlackBrush}\" Margin=\"1\" Opacity=\"0\" />\r\n                                <Ellipse x:Name=\"CheckIcon\" Fill=\"{StaticResource BlackBrush}\" Height=\"7\" Opacity=\"0\" Width=\"7\"/>\r\n                                <Ellipse x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\"  Opacity=\"0\" />\r\n                                <Grid x:Name=\"ValidationErrorElement\" ToolTipService.PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Visibility=\"Collapsed\">\r\n                                    <ToolTipService.ToolTip>\r\n                                        <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                            <ToolTip.Triggers>\r\n                                                <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                                    <BeginStoryboard>\r\n                                                        <Storyboard>\r\n                                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                                <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                                        <sys:Boolean>true</sys:Boolean>\r\n                                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                                </DiscreteObjectKeyFrame>\r\n                                                            </ObjectAnimationUsingKeyFrames>\r\n                                                        </Storyboard>\r\n                                                    </BeginStoryboard>\r\n                                                </EventTrigger>\r\n                                            </ToolTip.Triggers>\r\n                                        </ToolTip>\r\n                                    </ToolTipService.ToolTip>\r\n                                    <Ellipse Height=\"14\" Stroke=\"{StaticResource ControlsValidationBrush}\" StrokeThickness=\"1\" Width=\"14\"/>\r\n                                    <Ellipse Fill=\"{StaticResource ControlsValidationBrush}\" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,-2,-1,0\" VerticalAlignment=\"Top\" Width=\"4\"/>\r\n                                    <Ellipse Fill=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-5,-4,0\" VerticalAlignment=\"Top\" Width=\"10\"/>\r\n                                </Grid>\r\n                            </Grid>\r\n                        </Grid>\r\n                        <ContentControl Grid.Column=\"1\">\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        </ContentControl>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--RepeatButton Style-->\r\n    <Style TargetType=\"RepeatButton\" x:Key=\"DefaultRepeatButtonStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\r\n        <Setter Property=\"Padding\" Value=\"5,6\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"RepeatButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"PressedBorder\"  Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Thumb Style-->\r\n    <Style x:Key=\"HorizontalSliderThumb\" TargetType=\"Thumb\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Thumb\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border Background=\"{StaticResource BlackBrush}\" BorderThickness=\"0,0,1,0\" BorderBrush=\"{StaticResource ControlBackgroundBrush}\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--VerticalSliderThumb-->\r\n    <Style x:Key=\"VerticalSliderThumb\" TargetType=\"Thumb\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Thumb\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border Background=\"{StaticResource BlackBrush}\" BorderThickness=\"0,1,0,0\" BorderBrush=\"{StaticResource ControlBackgroundBrush}\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <!--RepeatButtonTemplate-->\r\n    <ControlTemplate x:Key=\"RepeatButtonTemplate\">\r\n        <Grid x:Name=\"Root\" Opacity=\"0\"/>\r\n    </ControlTemplate>\r\n    <!--HorizontalTrackLargeDecrease-->\r\n    <ControlTemplate x:Key=\"HorizontalTrackLargeDecrease\" TargetType=\"RepeatButton\">\r\n        <Grid x:Name=\"Root\" Margin=\"0,-1,0,0\">\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"CommonStates\">\r\n                    <VisualState x:Name=\"Normal\"/>\r\n                    <VisualState x:Name=\"MouseOver\"/>\r\n                    <VisualState x:Name=\"Pressed\"/>\r\n                    <VisualState x:Name=\"Disabled\"/>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Rectangle Height=\"3\" Margin=\"0,1,0,0\">\r\n                <Rectangle.Fill>\r\n                    <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                </Rectangle.Fill>\r\n            </Rectangle>\r\n        </Grid>\r\n    </ControlTemplate>\r\n    <!--VerticalTrackLargeDecrease-->\r\n    <ControlTemplate x:Key=\"VerticalTrackLargeDecrease\" TargetType=\"RepeatButton\">\r\n        <Grid x:Name=\"Root\" Margin=\"0,0,0,0\" >\r\n            <Rectangle Width=\"3\">\r\n                <Rectangle.Fill>\r\n                    <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                </Rectangle.Fill>\r\n            </Rectangle>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--Slider Style-->\r\n    <Style TargetType=\"Slider\" x:Key=\"DefaultSliderStyle\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Maximum\" Value=\"10\"/>\r\n        <Setter Property=\"Minimum\" Value=\"0\"/>\r\n        <Setter Property=\"Value\" Value=\"0\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ControlBorderBrush}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Slider\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <ControlTemplate x:Key=\"RepeatButtonTemplate\">\r\n                                <Grid x:Name=\"Root\" Opacity=\"0\"/>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"HorizontalTrackRectangleDisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ThumbDisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"VerticalTrackRectangleDisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"ThumbDisabledOverlayVertical\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"HorizontalTrackRectangleDisabledOverlay_Copy\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"VerticalTrackRectangleDisabledOverlay_Copy\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"HorizontalTemplate\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Rectangle x:Name=\"TrackRectangle\" Grid.ColumnSpan=\"3\" Grid.Column=\"0\" Height=\"3\" Margin=\"5,0\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{StaticResource SliderTrackBrush}\"/>\r\n                            <Rectangle x:Name=\"HorizontalTrackRectangleDisabledOverlay\" Grid.ColumnSpan=\"3\" Grid.Column=\"0\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Height=\"3\" Margin=\"5,0,5,0\" Opacity=\".55\" Visibility=\"Collapsed\"/>\r\n                            <RepeatButton x:Name=\"HorizontalTrackLargeChangeDecreaseRepeatButton\" Grid.Column=\"0\" Height=\"18\" IsTabStop=\"False\" Template=\"{StaticResource HorizontalTrackLargeDecrease}\"/>\r\n                            <Rectangle x:Name=\"HorizontalTrackRectangleDisabledOverlay_Copy\" Grid.ColumnSpan=\"1\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Height=\"4\" Opacity=\"0.7\" Visibility=\"Collapsed\" />\r\n                            <Thumb x:Name=\"HorizontalThumb\" Grid.Column=\"1\" Height=\"10\" IsTabStop=\"True\" Width=\"4\" Style=\"{StaticResource HorizontalSliderThumb}\"/>\r\n                            <Rectangle x:Name=\"ThumbDisabledOverlay\" Grid.Column=\"1\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0.25\" Visibility=\"Collapsed\" Width=\"4\" Height=\"10\"/>\r\n                            <RepeatButton x:Name=\"HorizontalTrackLargeChangeIncreaseRepeatButton\" Grid.Column=\"2\" Height=\"18\" IsTabStop=\"False\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"VerticalTemplate\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <Rectangle x:Name=\"TrackRectangle_Vertical\" Grid.ColumnSpan=\"1\" Margin=\"0,5\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{StaticResource SliderTrackBrush}\" Grid.RowSpan=\"3\" Grid.Row=\"0\" Width=\"3\"/>\r\n                            <Rectangle x:Name=\"VerticalTrackRectangleDisabledOverlay\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Margin=\"0,5,0,5\" Opacity=\".55\" Grid.Row=\"0\" Grid.RowSpan=\"3\" Width=\"3\" Visibility=\"Collapsed\"/>\r\n                            <RepeatButton x:Name=\"VerticalTrackLargeChangeDecreaseRepeatButton\" IsTabStop=\"False\" Grid.Row=\"2\" Width=\"17\"  Template=\"{StaticResource VerticalTrackLargeDecrease}\"/>\r\n                            <Rectangle x:Name=\"VerticalTrackRectangleDisabledOverlay_Copy\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0.7\" Grid.Row=\"2\" Grid.RowSpan=\"1\" Width=\"5\" Visibility=\"Collapsed\"/>\r\n                            <Thumb x:Name=\"VerticalThumb\" Height=\"4\" IsTabStop=\"True\" Grid.Row=\"1\" Width=\"10\" Style=\"{StaticResource VerticalSliderThumb}\"/>\r\n                            <RepeatButton x:Name=\"VerticalTrackLargeChangeIncreaseRepeatButton\" IsTabStop=\"False\" Grid.Row=\"0\" Template=\"{StaticResource RepeatButtonTemplate}\" Width=\"17\"/>\r\n                            <Rectangle x:Name=\"ThumbDisabledOverlayVertical\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0.25\" Width=\"10\" Height=\"4\" Grid.Row=\"1\" Visibility=\"Collapsed\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--ToggleButton Style-->\r\n    <Style TargetType=\"ToggleButton\" x:Key=\"DefaultToggleButtonStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\r\n        <Setter Property=\"Padding\" Value=\"5,6\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ToggleButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource WhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"PressedBorder\"  Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"CheckedBorder\"  Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"CheckedRectangle\" Stroke=\"{StaticResource GrayBrush1}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"CheckedInnerRectangle\" Fill=\"{StaticResource GrayBrush2}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource GrayBrush2}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Tooltip Style-->\r\n    <Style TargetType=\"ToolTip\" x:Key=\"DefaultToolTipStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"3,0,3,0\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ItemSelectedBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ToolTip\">\r\n                    <Border x:Name=\"Root\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource BlackBrush}\" Effect=\"{StaticResource DropShadowBrush}\" Opacity=\"0\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"OpenStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition From=\"Open\" GeneratedDuration=\"0:0:0.3\" To=\"Closed\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Closed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.4\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Open\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.3\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border Padding=\"{TemplateBinding Padding}\">\r\n                            <Border.Resources>\r\n                                <Storyboard x:Key=\"Visible State\"/>\r\n                                <Storyboard x:Key=\"Normal State\"/>\r\n                            </Border.Resources>\r\n                            <Border.Background>\r\n                                <StaticResource ResourceKey=\"BlackBrush\"/>\r\n                            </Border.Background>\r\n                            <ContentPresenter Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                        </Border>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- Implicit Styles -->\r\n    <!-- When defining your own styles, set \"based on\" the same way to keep control theming -->\r\n    <Style TargetType=\"Button\" BasedOn=\"{StaticResource DefaultButtonStyle}\" />\r\n    <Style TargetType=\"HyperlinkButton\" BasedOn=\"{StaticResource DefaultHyperlinkButtonStyle}\" />\r\n    <Style TargetType=\"TextBox\" BasedOn=\"{StaticResource DefaultTextBoxStyle}\" />\r\n    <Style TargetType=\"ComboBox\" BasedOn=\"{StaticResource DefaultComboBoxStyle}\" />\r\n    <Style TargetType=\"ComboBoxItem\" BasedOn=\"{StaticResource DefaultComboBoxItemStyle}\" />\r\n    <Style TargetType=\"TextBlock\" BasedOn=\"{StaticResource DefaultTextBlockStyle}\" />\r\n    <Style TargetType=\"ScrollBar\" BasedOn=\"{StaticResource DefaultScrollBarStyle}\" />\r\n    <Style TargetType=\"ScrollViewer\" BasedOn=\"{StaticResource DefaultScrollViewerStyle}\" />\r\n    <Style TargetType=\"ListBox\" BasedOn=\"{StaticResource DefaultListBoxStyle}\" />\r\n    <Style TargetType=\"ListBoxItem\" BasedOn=\"{StaticResource DefaultListBoxItemStyle}\" />\r\n    <Style TargetType=\"CheckBox\" BasedOn=\"{StaticResource DefaultCheckBoxStyle}\" />\r\n    <Style TargetType=\"PasswordBox\" BasedOn=\"{StaticResource DefaultPasswordBoxStyle}\" />\r\n    <Style TargetType=\"ProgressBar\" BasedOn=\"{StaticResource DefaultProgressBarStyle}\" />\r\n    <Style TargetType=\"RadioButton\" BasedOn=\"{StaticResource DefaultRadioButtonStyle}\" />\r\n    <Style TargetType=\"RepeatButton\" BasedOn=\"{StaticResource DefaultRepeatButtonStyle}\" />\r\n    <Style TargetType=\"Slider\" BasedOn=\"{StaticResource DefaultSliderStyle}\" />\r\n    <Style TargetType=\"ToggleButton\" BasedOn=\"{StaticResource DefaultToggleButtonStyle}\" />\r\n    <Style TargetType=\"ToolTip\" BasedOn=\"{StaticResource DefaultToolTipStyle}\" />\r\n\r\n</ResourceDictionary>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Themes/Cosmopolitan/Fonts.xaml",
    "content": "﻿<ResourceDictionary\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:navigation=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation\" \r\n    xmlns:my=\"clr-namespace:System;assembly=mscorlib\" >\r\n\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"Brushes.xaml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n    \r\n    <FontFamily x:Key=\"HeaderFontFamily\">Segoe UI Light, Lucida Sans Unicode, Verdana</FontFamily>\r\n    <FontFamily x:Key=\"ContentFontFamily\">Segoe UI, Lucida Sans Unicode, Verdana</FontFamily>\r\n\r\n    <my:Double x:Key=\"ApplicationNameFontSize\">50</my:Double>\r\n    <my:Double x:Key=\"HeaderFontSize\">21.333</my:Double>\r\n    <my:Double x:Key=\"NavigationFontSize\">28</my:Double>\r\n    \r\n    <my:Double x:Key=\"ContentFontSize\">14</my:Double>\r\n    <my:Double x:Key=\"HyperlinkFontSize\">14</my:Double>\r\n    <my:Double x:Key=\"LabelFontSize\">12</my:Double>\r\n    <my:Double x:Key=\"ControlTitleFontSize\">16</my:Double>\r\n    <my:Double x:Key=\"ControlTitleBigFontSize\">18</my:Double>\r\n    <my:Double x:Key=\"ControlContentFontSize\">10</my:Double>\r\n\r\n    \r\n</ResourceDictionary>\r\n"
  },
  {
    "path": "litmus/LitmusTests/Themes/Cosmopolitan/SDKStyles.xaml",
    "content": "﻿<ResourceDictionary\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:controls=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls\" \r\n    xmlns:System=\"clr-namespace:System;assembly=mscorlib\"\r\n    xmlns:dataInput=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input\"\r\n    xmlns:input=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input\"\r\n    xmlns:data=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data\"\r\n    xmlns:dataPrimitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data\"         \r\n    xmlns:System_Windows_Controls_Primitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" \r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \r\n    xmlns:toolkit=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit\" \r\n    mc:Ignorable=\"d\">\r\n\r\n    <!-- Global Settings-->\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"Brushes.xaml\"/>\r\n        <ResourceDictionary Source=\"Fonts.xaml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n\r\n    <!--DataGridCell Style-->\r\n    <Style TargetType=\"data:DataGridCell\" x:Key=\"DefaultDataGridCellStyle\">\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"data:DataGridCell\">\r\n                    <Grid x:Name=\"Root\" Background=\"{TemplateBinding Background}\">\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition/>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CurrentStates\">\r\n                                <VisualState x:Name=\"Regular\"/>\r\n                                <VisualState x:Name=\"Current\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisual\" From=\"0.3\"/>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"Invalid\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"InvalidVisualElement\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(Fill).Color\" Storyboard.TargetName=\"FocusVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"FocusVisual\" HorizontalAlignment=\"Stretch\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\" VerticalAlignment=\"Stretch\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" Grid.Column=\"0\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource NormalBrush}\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" Grid.Column=\"0\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <ContentPresenter ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        <Rectangle x:Name=\"InvalidVisualElement\" HorizontalAlignment=\"Stretch\" IsHitTestVisible=\"False\" Opacity=\"0\" Stroke=\"{StaticResource ControlsValidationBrush}\" StrokeThickness=\"1\" VerticalAlignment=\"Stretch\"/>\r\n                        <Rectangle x:Name=\"RightGridLine\" Grid.Column=\"1\" VerticalAlignment=\"Stretch\" Width=\"1\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataGridColumnHeader Style-->\r\n    <Style TargetType=\"dataPrimitives:DataGridColumnHeader\" x:Key=\"DefaultDataGridColumnHeaderStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ControlTitleBigFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"SeparatorBrush\" Value=\"{StaticResource SeperatorBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,5,4,5\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"dataPrimitives:DataGridColumnHeader\">\r\n                    <Border BorderBrush=\"Black\" BorderThickness=\"0,1\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverLeftRightSeperator\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedLeftRightSeperator\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SortStates\">\r\n                                <VisualState x:Name=\"Unsorted\"/>\r\n                                <VisualState x:Name=\"SortAscending\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"SortDescending\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"-.9\" Storyboard.TargetProperty=\"(RenderTransform).ScaleY\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"Root\" Height=\"44\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Rectangle x:Name=\"BackgroundRectangle\" Grid.ColumnSpan=\"2\" Stretch=\"Fill\" Fill=\"{StaticResource WhiteBrush}\"/>\r\n\r\n                            <Rectangle x:Name=\"MouseOverRectangle\" Grid.ColumnSpan=\"2\" Opacity=\"0\">\r\n                                <Rectangle.Fill>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray8}\"/>\r\n                                </Rectangle.Fill>\r\n                            </Rectangle>\r\n                            <Rectangle x:Name=\"PressedRectangle\" Grid.ColumnSpan=\"2\" Opacity=\"0\">\r\n                                <Rectangle.Fill>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray8}\"/>\r\n                                </Rectangle.Fill>\r\n                            </Rectangle>\r\n                            <Grid HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <ContentPresenter Content=\"{TemplateBinding Content}\"/>\r\n                                <Path x:Name=\"SortIcon\" Grid.Column=\"1\" Data=\"F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z \" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Left\" Margin=\"4,0,0,0\" Opacity=\"0\" RenderTransformOrigin=\".5,.5\" Stretch=\"Uniform\" VerticalAlignment=\"Center\" Width=\"8\">\r\n                                    <Path.RenderTransform>\r\n                                        <ScaleTransform ScaleY=\".9\" ScaleX=\".9\"/>\r\n                                    </Path.RenderTransform>\r\n                                </Path>\r\n                            </Grid>\r\n                            <Rectangle x:Name=\"VerticalSeparator\" Grid.Column=\"1\" Fill=\"{TemplateBinding SeparatorBrush}\" Visibility=\"{TemplateBinding SeparatorVisibility}\" VerticalAlignment=\"Stretch\" Width=\"1\" Opacity=\"0\"/>\r\n                            <Border x:Name=\"MouseOverLeftRightSeperator\" Grid.ColumnSpan=\"2\" BorderThickness=\"1,0\" BorderBrush=\"{StaticResource SeperatorBrush}\" Margin=\"-1,0,0,0\" Opacity=\"0\"/>\r\n                            <Border x:Name=\"PressedLeftRightSeperator\" Grid.ColumnSpan=\"2\" Opacity=\"0\" BorderBrush=\"{StaticResource SeperatorBrush}\" BorderThickness=\"1,0\" Margin=\"-1,0,0,0\"/>\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataGridRowHeader Style-->\r\n    <Style TargetType=\"dataPrimitives:DataGridRowHeader\" x:Key=\"DefaultDataGridRowHeaderStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentLightLightBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"SeparatorBrush\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"SeparatorVisibility\" Value=\"Collapsed\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"dataPrimitives:DataGridRowHeader\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                            <ColumnDefinition/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition/>\r\n                            <RowDefinition/>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                        </Grid.RowDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MouseOverCurrentRowSelected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NormalCurrentRow\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NormalSelected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NormalEditingRow\">\r\n                                    <Storyboard>\r\n\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"RowValid\"/>\r\n                                <VisualState x:Name=\"RowInvalid\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"BackgroundRectangle\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"RowInvalidVisualElement\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Fill).(GradientStops)[0].Color\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Fill).(GradientStops)[0].Color\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Fill).(GradientStops)[1].Color\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Fill).(GradientStops)[2].Color\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{StaticResource WhiteBrush}\" BorderThickness=\"1,0,1,0\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"3\">\r\n                            <Grid>\r\n                                <Rectangle x:Name=\"RowInvalidVisualElement\" Grid.ColumnSpan=\"2\" Fill=\"{StaticResource ValidationSummaryFillBrush2}\" Opacity=\"0\" Grid.RowSpan=\"3\" Stretch=\"Fill\"/>\r\n                                <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"3\" Grid.Column=\"0\"/>\r\n                                <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"3\" Grid.Column=\"0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"HorizontalSeparator\" Grid.ColumnSpan=\"2\" Fill=\"{TemplateBinding SeparatorBrush}\" HorizontalAlignment=\"Stretch\" Height=\"1\" Margin=\"1,0,1,0\" Grid.Row=\"2\" Visibility=\"{TemplateBinding SeparatorVisibility}\"/>\r\n                        <ContentPresenter Content=\"{TemplateBinding Content}\" Grid.Column=\"1\" HorizontalAlignment=\"Center\" Grid.RowSpan=\"2\" VerticalAlignment=\"Center\"/>\r\n                        <Path x:Name=\"CurrentRowGlyph\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" HorizontalAlignment=\"Center\" Height=\"10\" Margin=\"8,0,8,0\" Opacity=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\">\r\n                            <Path.Fill>\r\n                                <LinearGradientBrush EndPoint=\"0,1.75\" StartPoint=\"0,-0.150000005960464\">\r\n                                    <LinearGradientBrush.RelativeTransform>\r\n                                        <MatrixTransform/>\r\n                                    </LinearGradientBrush.RelativeTransform>\r\n                                    <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0\"/>\r\n                                    <GradientStop Color=\"{StaticResource HighlightLightColor}\" Offset=\"1\"/>\r\n                                </LinearGradientBrush>\r\n                            </Path.Fill>\r\n                        </Path>\r\n                        <Path x:Name=\"EditingRowGlyph\" Fill=\"{StaticResource HighlightLightBrush}\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" HorizontalAlignment=\"Center\" Height=\"10\" Margin=\"8,0,8,0\" Opacity=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataGridRow Style-->\r\n    <Style TargetType=\"data:DataGridRow\" x:Key=\"DefaultDataGridRowStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"data:DataGridRow\">\r\n                    <dataPrimitives:DataGridFrozenGrid x:Name=\"Root\">\r\n                        <dataPrimitives:DataGridFrozenGrid.Resources>\r\n                            <Storyboard x:Key=\"DetailsVisibleTransition\">\r\n                                <DoubleAnimation Duration=\"00:00:0.1\" Storyboard.TargetProperty=\"ContentHeight\" Storyboard.TargetName=\"DetailsPresenter\"/>\r\n                            </Storyboard>\r\n                        </dataPrimitives:DataGridFrozenGrid.Resources>\r\n                        <dataPrimitives:DataGridFrozenGrid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                            <ColumnDefinition/>\r\n                        </dataPrimitives:DataGridFrozenGrid.ColumnDefinitions>\r\n                        <dataPrimitives:DataGridFrozenGrid.RowDefinitions>\r\n                            <RowDefinition/>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                        </dataPrimitives:DataGridFrozenGrid.RowDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"NormalAlternatingRow\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NormalSelected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MouseOverSelected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"UnfocusedSelected\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"Invalid\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"InvalidVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\" Grid.Column=\"0\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\"/>\r\n                        <dataPrimitives:DataGridRowHeader x:Name=\"RowHeader\" dataPrimitives:DataGridFrozenGrid.IsFrozen=\"True\" Grid.RowSpan=\"3\"/>\r\n                        <dataPrimitives:DataGridCellsPresenter x:Name=\"CellsPresenter\" Grid.Column=\"1\" dataPrimitives:DataGridFrozenGrid.IsFrozen=\"True\"/>\r\n                        <dataPrimitives:DataGridDetailsPresenter x:Name=\"DetailsPresenter\" Grid.Column=\"1\" Grid.Row=\"1\"/>\r\n                        <Rectangle x:Name=\"BottomGridLine\" Grid.Column=\"1\" HorizontalAlignment=\"Stretch\" Height=\"1\" Grid.Row=\"2\"/>\r\n                    </dataPrimitives:DataGridFrozenGrid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataGrid Style-->\r\n    <Style TargetType=\"data:DataGrid\" x:Key=\"DefaultDataGridStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"200\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"RowBackground\" Value=\"Transparent\"/>\r\n        <Setter Property=\"AlternatingRowBackground\" Value=\"Transparent\"/>\r\n        <Setter Property=\"HeadersVisibility\" Value=\"Column\"/>\r\n        <Setter Property=\"HorizontalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"VerticalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"SelectionMode\" Value=\"Extended\"/>\r\n        <Setter Property=\"CanUserReorderColumns\" Value=\"True\"/>\r\n        <Setter Property=\"CanUserResizeColumns\" Value=\"True\"/>\r\n        <Setter Property=\"CanUserSortColumns\" Value=\"True\"/>\r\n        <Setter Property=\"AutoGenerateColumns\" Value=\"True\"/>\r\n        <Setter Property=\"RowDetailsVisibilityMode\" Value=\"VisibleWhenSelected\"/>\r\n        <Setter Property=\"DragIndicatorStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ContentControl\">\r\n                    <Setter Property=\"Foreground\" Value=\"{StaticResource TransparentLightLightBrush}\"/>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"ContentControl\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"SortStates\">\r\n                                            <VisualState x:Name=\"Unsorted\"/>\r\n                                            <VisualState x:Name=\"SortAscending\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"SortDescending\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"-.9\" Storyboard.TargetProperty=\"(RenderTransform).ScaleY\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"BackgroundRectangle\" Grid.ColumnSpan=\"2\" Fill=\"{StaticResource TransparentDarkDarkDarkBrush}\" Stretch=\"Fill\"/>\r\n                                    <Rectangle x:Name=\"BackgroundGradient\" Grid.ColumnSpan=\"2\"  Fill=\"{StaticResource ControlBackgroundBrush}\" Opacity=\"0\" Stretch=\"Fill\"/>\r\n                                    <Grid HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                        <Grid.ColumnDefinitions>\r\n                                            <ColumnDefinition/>\r\n                                            <ColumnDefinition Width=\"Auto\"/>\r\n                                        </Grid.ColumnDefinitions>\r\n                                        <ContentPresenter Content=\"{TemplateBinding Content}\"/>\r\n                                        <Path x:Name=\"SortIcon\" Grid.Column=\"1\" Data=\"F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z \" Fill=\"{StaticResource GrayBrush10}\" HorizontalAlignment=\"Left\" Margin=\"4,0,0,0\" Opacity=\"0\" RenderTransformOrigin=\".5,.5\" Stretch=\"Uniform\" VerticalAlignment=\"Center\" Width=\"8\">\r\n                                            <Path.RenderTransform>\r\n                                                <ScaleTransform ScaleY=\".9\" ScaleX=\".9\"/>\r\n                                            </Path.RenderTransform>\r\n                                        </Path>\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"DropLocationIndicatorStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ContentControl\">\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush3}\"/>\r\n                    <Setter Property=\"Width\" Value=\"2\"/>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"ContentControl\">\r\n                                <Rectangle Fill=\"{TemplateBinding Background}\" Height=\"{TemplateBinding Height}\" Width=\"{TemplateBinding Width}\"/>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"GridLinesVisibility\" Value=\"None\"/>\r\n        <Setter Property=\"HorizontalGridLinesBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"True\"/>\r\n        <Setter Property=\"VerticalGridLinesBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"data:DataGrid\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                            <Grid x:Name=\"Root\" Background=\"{TemplateBinding Background}\">\r\n                                <Grid.Resources>\r\n                                    <ControlTemplate x:Key=\"TopLeftHeaderTemplate\" TargetType=\"dataPrimitives:DataGridColumnHeader\">\r\n                                        <Grid x:Name=\"Root\">\r\n                                            <Grid.RowDefinitions>\r\n                                                <RowDefinition/>\r\n                                                <RowDefinition/>\r\n                                                <RowDefinition Height=\"Auto\"/>\r\n                                            </Grid.RowDefinitions>\r\n                                            <Border BorderBrush=\"{StaticResource SeperatorBrush}\" Background=\"{StaticResource WhiteBrush}\" Grid.RowSpan=\"2\"/>\r\n                                            <Rectangle Fill=\"{StaticResource GrayBrush4}\" Height=\"1\" Grid.RowSpan=\"2\" StrokeThickness=\"1\" VerticalAlignment=\"Bottom\" Width=\"Auto\" Visibility=\"Collapsed\"/>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                    <ControlTemplate x:Key=\"TopRightHeaderTemplate\" TargetType=\"dataPrimitives:DataGridColumnHeader\">\r\n                                        <Grid x:Name=\"RootElement\">\r\n                                            <Grid.RowDefinitions>\r\n                                                <RowDefinition/>\r\n                                                <RowDefinition/>\r\n                                                <RowDefinition Height=\"Auto\"/>\r\n                                            </Grid.RowDefinitions>\r\n                                            <Border Background=\"{StaticResource WhiteBrush}\" Grid.RowSpan=\"2\"/>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                </Grid.Resources>\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                    <ColumnDefinition/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition/>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <dataPrimitives:DataGridColumnHeader x:Name=\"TopLeftCornerHeader\" Template=\"{StaticResource TopLeftHeaderTemplate}\" Width=\"22\"/>\r\n                                <dataPrimitives:DataGridColumnHeadersPresenter x:Name=\"ColumnHeadersPresenter\" Grid.Column=\"1\"/>\r\n                                <dataPrimitives:DataGridColumnHeader x:Name=\"TopRightCornerHeader\" Grid.Column=\"2\" Template=\"{StaticResource TopRightHeaderTemplate}\"/>\r\n                                <Rectangle x:Name=\"ColumnHeadersAndRowsSeparator\" Grid.ColumnSpan=\"3\" Fill=\"{StaticResource GrayBrush2}\" Height=\"1\" StrokeThickness=\"1\" VerticalAlignment=\"Bottom\" Width=\"Auto\" Visibility=\"Collapsed\"/>\r\n                                <dataPrimitives:DataGridRowsPresenter x:Name=\"RowsPresenter\" Grid.ColumnSpan=\"2\" Grid.Row=\"1\"/>\r\n                                <Rectangle x:Name=\"BottomRightCorner\" Grid.Column=\"2\" Fill=\"{TemplateBinding Background}\" Grid.Row=\"2\"/>\r\n                                <Rectangle x:Name=\"BottomLeftCorner\" Grid.ColumnSpan=\"2\" Fill=\"{TemplateBinding Background}\" Grid.Row=\"2\"/>\r\n                                <ScrollBar x:Name=\"VerticalScrollbar\" Grid.Column=\"2\" Margin=\"0,-1,-3,-1\" Orientation=\"Vertical\" Grid.Row=\"1\" Width=\"18\" />\r\n                                <Grid Grid.Column=\"1\" Grid.Row=\"2\">\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <Rectangle x:Name=\"FrozenColumnScrollBarSpacer\"/>\r\n                                    <ScrollBar x:Name=\"HorizontalScrollbar\" Grid.Column=\"1\" Height=\"18\" Margin=\"-1,0,-1,-3\" Orientation=\"Horizontal\" />\r\n                                </Grid>\r\n                                <dataInput:ValidationSummary x:Name=\"ValidationSummary\" Grid.ColumnSpan=\"3\" Filter=\"ObjectErrors\" MaxHeight=\"90\" Grid.Row=\"3\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"2\" HorizontalAlignment=\"Stretch\" Height=\"Auto\" IsHitTestVisible=\"False\" Opacity=\"0\" VerticalAlignment=\"Stretch\" Width=\"Auto\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataPagerPageButton Style-->\r\n    <Style x:Key=\"ImageButton\" TargetType=\"Button\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush3}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"3\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Button\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition From=\"Normal\" GeneratedDuration=\"0:0:0.3\" To=\"MouseOver\"/>\r\n                                    <VisualTransition From=\"MouseOver\" GeneratedDuration=\"0:0:0.3\" To=\"Normal\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ellipse\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.4\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ellipse\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.4\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.2\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ellipse\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.2\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        <Ellipse x:Name=\"ellipse\" Stroke=\"{StaticResource CheckBoxMouseOverBrush}\" Opacity=\"0.3\" Fill=\"Transparent\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--CalendarItem Style-->\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:CalendarItem\" x:Key=\"DefaultCalendarItemStyle\">\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls_Primitives:CalendarItem\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <SolidColorBrush x:Key=\"DisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Margin=\"0\">\r\n                            <Grid Margin=\"2\">\r\n                                <Grid.Resources>\r\n                                    <ControlTemplate x:Key=\"HeaderButtonTemplate\" TargetType=\"Button\">\r\n                                        <Grid Cursor=\"Hand\">\r\n                                            <VisualStateManager.VisualStateGroups>\r\n                                                <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                    <VisualState x:Name=\"Normal\"/>\r\n                                                    <VisualState x:Name=\"MouseOver\">\r\n                                                        <Storyboard>\r\n                                                            <ColorAnimation Duration=\"0\" To=\"{StaticResource HighlightLightColor}\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"Content\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                    <VisualState x:Name=\"Disabled\">\r\n                                                        <Storyboard>\r\n                                                            <DoubleAnimation Duration=\"0\" To=\".5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Content\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                </VisualStateGroup>\r\n                                            </VisualStateManager.VisualStateGroups>\r\n                                            <ContentControl x:Name=\"Content\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Foreground=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Margin=\"1,5,1,9\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                    <DataTemplate x:Name=\"DayTitleTemplate\">\r\n                                        <TextBlock Foreground=\"{StaticResource TextBoxMouseOverBorderBrush}\" FontWeight=\"Bold\" FontSize=\"12\" HorizontalAlignment=\"Center\" Margin=\"0,4,0,4\" Text=\"{Binding}\" VerticalAlignment=\"Center\"/>\r\n                                    </DataTemplate>\r\n                                    <ControlTemplate x:Key=\"PreviousButtonTemplate\" TargetType=\"Button\">\r\n                                        <Grid Cursor=\"Hand\">\r\n                                            <VisualStateManager.VisualStateGroups>\r\n                                                <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                    <VisualState x:Name=\"Normal\"/>\r\n                                                    <VisualState x:Name=\"MouseOver\">\r\n                                                        <Storyboard>\r\n                                                            <ColorAnimation Duration=\"0\" To=\"{StaticResource HighlightLightColor}\" Storyboard.TargetProperty=\"(Path.Fill).(SolidColorBrush.Color)\" Storyboard.TargetName=\"IconPath\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                    <VisualState x:Name=\"Disabled\">\r\n                                                        <Storyboard>\r\n                                                            <DoubleAnimation Duration=\"0\" To=\".5\" Storyboard.TargetProperty=\"(Path.Fill).(SolidColorBrush.Opacity)\" Storyboard.TargetName=\"IconPath\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                </VisualStateGroup>\r\n                                            </VisualStateManager.VisualStateGroups>\r\n                                            <Rectangle Fill=\"{StaticResource TransparentWhiteBrush}\" Opacity=\"1\" Stretch=\"Fill\"/>\r\n                                            <Grid>\r\n                                                <Path x:Name=\"IconPath\" Data=\"M288.75,232.25 L288.75,240.625 L283,236.625 z\" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Left\" Height=\"10\" Margin=\"14,-6,0,0\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\"/>\r\n                                            </Grid>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                    <ControlTemplate x:Key=\"NextButtonTemplate\" TargetType=\"Button\">\r\n                                        <Grid Cursor=\"Hand\">\r\n                                            <VisualStateManager.VisualStateGroups>\r\n                                                <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                    <VisualState x:Name=\"Normal\"/>\r\n                                                    <VisualState x:Name=\"MouseOver\">\r\n                                                        <Storyboard>\r\n                                                            <ColorAnimation Duration=\"0\" To=\"{StaticResource HighlightLightColor}\" Storyboard.TargetProperty=\"(Path.Fill).(SolidColorBrush.Color)\" Storyboard.TargetName=\"IconPath\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                    <VisualState x:Name=\"Disabled\">\r\n                                                        <Storyboard>\r\n                                                            <DoubleAnimation Duration=\"0\" To=\".5\" Storyboard.TargetProperty=\"(Path.Fill).(SolidColorBrush.Opacity)\" Storyboard.TargetName=\"IconPath\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                </VisualStateGroup>\r\n                                            </VisualStateManager.VisualStateGroups>\r\n                                            <Rectangle Fill=\"{StaticResource TransparentWhiteBrush}\" Opacity=\"1\" Stretch=\"Fill\"/>\r\n                                            <Grid>\r\n                                                <Path x:Name=\"IconPath\" Data=\"M282.875,231.875 L282.875,240.375 L288.625,236 z\" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-6,14,0\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\"/>\r\n                                            </Grid>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                </Grid.Resources>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition Height=\"*\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <Button x:Name=\"PreviousButton\" Cursor=\"Hand\" HorizontalAlignment=\"Left\" Height=\"24\" Visibility=\"Collapsed\" Width=\"24\" Margin=\"13,0,0,0\" Style=\"{StaticResource ImageButton}\">\r\n                                    <Grid>\r\n                                        <Path x:Name=\"PreviousIconPath\" Data=\"M288.75,232.25 L288.75,240.625 L283,236.625 z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Left\" Height=\"10\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\" Opacity=\"0.7\"/>\r\n                                    </Grid>\r\n                                </Button>\r\n                                <Button x:Name=\"HeaderButton\" Foreground=\"{StaticResource HighlightBrush}\" Grid.Column=\"1\" FontWeight=\"Bold\" FontSize=\"13.333\" HorizontalAlignment=\"Center\" Cursor=\"Hand\" Height=\"30\" VerticalAlignment=\"Center\" FontFamily=\"Segoe UI\" Width=\"120\"/>\r\n                                <Button x:Name=\"NextButton\" Grid.Column=\"2\" HorizontalAlignment=\"Right\" Height=\"24\" Visibility=\"Collapsed\" Width=\"24\" Cursor=\"Hand\" Margin=\"0,0,13,0\" Style=\"{StaticResource ImageButton}\">\r\n                                    <Path x:Name=\"NextIconPath\" Data=\"M282.875,231.875 L282.875,240.375 L288.625,236 z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Right\" Height=\"10\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\" Opacity=\"0.7\"/>\r\n                                </Button>\r\n                                <Grid x:Name=\"MonthView\" Grid.ColumnSpan=\"3\" Margin=\"15,7,15,6\" Grid.Row=\"1\" Visibility=\"Collapsed\">\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                </Grid>\r\n                                <Grid x:Name=\"YearView\" Grid.ColumnSpan=\"3\" Margin=\"6,7,7,6\" Grid.Row=\"1\" Visibility=\"Collapsed\">\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                </Grid>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"DisabledVisual\" Fill=\"{StaticResource DisabledBrush}\" Margin=\"0,2,0,2\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{StaticResource DisabledBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Calendar Style-->\r\n    <Style TargetType=\"controls:Calendar\" x:Key=\"DefaultCalendarStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Padding\" Value=\"15\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:Calendar\">\r\n                    <StackPanel x:Name=\"Root\" HorizontalAlignment=\"Center\">\r\n                        <System_Windows_Controls_Primitives:CalendarItem x:Name=\"CalendarItem\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Margin=\"0\" Padding=\"0\"/>\r\n                    </StackPanel>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--CalendarDayButton Style-->\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:CalendarDayButton\" x:Key=\"DefaultCalendarDayButtonStyle\">\r\n        <Setter Property=\"Background\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"Bold\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"8\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"8\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls_Primitives:CalendarDayButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n\r\n                                        <DoubleAnimation Duration=\"0\" To=\".35\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Content\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CalendarButtonFocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"CalendarButtonFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisual\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"CalendarButtonUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisual\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ActiveStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Active\"/>\r\n                                <VisualState x:Name=\"Inactive\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray3}\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Storyboard.TargetName=\"Content\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray3}\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Storyboard.TargetName=\"Content\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"DayStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"RegularDay\"/>\r\n                                <VisualState x:Name=\"Today\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"TodayBackground\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(GradientBrush.GradientStops)[1].(GradientStop.Offset)\" Storyboard.TargetName=\"Content\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(GradientBrush.GradientStops)[2].(GradientStop.Offset)\" Storyboard.TargetName=\"Content\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"BlackoutDayStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"NormalDay\"/>\r\n                                <VisualState x:Name=\"BlackoutDay\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\".2\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"BlackoutVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"TodayBackground\" Opacity=\"0\" >\r\n                            <Rectangle.Fill>\r\n                                <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                            </Rectangle.Fill>\r\n                        </Rectangle>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Border x:Name=\"PressedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                            <Border.Background>\r\n                                <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                            </Border.Background>\r\n                        </Border>\r\n                        <ContentControl x:Name=\"Content\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Margin=\"5,1,5,1\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                            <ContentControl.Foreground>\r\n                                <LinearGradientBrush>\r\n                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0\"/>\r\n                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0\"/>\r\n                                    <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"0\"/>\r\n                                    <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"1\"/>\r\n                                </LinearGradientBrush>\r\n                            </ContentControl.Foreground>\r\n                        </ContentControl>\r\n                        <Path x:Name=\"BlackoutVisual\" Data=\"M8.1772461,11.029181 L10.433105,11.029181 L11.700684,12.801641 L12.973633,11.029181 L15.191895,11.029181 L12.844727,13.999395 L15.21875,17.060919 L12.962891,17.060919 L11.673828,15.256231 L10.352539,17.060919 L8.1396484,17.060919 L10.519043,14.042364 z\" Fill=\"{StaticResource BlackColorBrush}\" HorizontalAlignment=\"Stretch\" Margin=\"3\" Opacity=\"0\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" VerticalAlignment=\"Stretch\"/>\r\n                        <Rectangle x:Name=\"FocusVisual\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--CalendarButton Style-->\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:CalendarButton\" x:Key=\"DefaultCalendarButtonStyle\">\r\n        <Setter Property=\"Background\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"40\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"42\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls_Primitives:CalendarButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ActiveStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Active\"/>\r\n                                <VisualState x:Name=\"Inactive\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray3}\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"Content\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CalendarButtonFocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"CalendarButtonFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisual\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"CalendarButtonUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisual\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Border x:Name=\"PressedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                            <Border.Background>\r\n                                <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                            </Border.Background>\r\n                        </Border>\r\n                        <ContentControl x:Name=\"Content\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Foreground=\"{StaticResource GrayBrush3}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Margin=\"1,0,1,1\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        <Rectangle x:Name=\"FocusVisual\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DatePickerTextBox Style-->\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:DatePickerTextBox\" x:Key=\"DefaultDatePickerTextBoxStyle\">\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls_Primitives:DatePickerTextBox\">\r\n                    <Grid x:Name=\"Root\" Background=\"{TemplateBinding Background}\">\r\n                        <Grid.Resources>\r\n                            <SolidColorBrush x:Key=\"WatermarkBrush\" Color=\"{StaticResource Gray2}\"/>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"MouseOver\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"WatermarkStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unwatermarked\"/>\r\n                                <VisualState x:Name=\"Watermarked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ContentElement\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Watermark\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"WatermarkContent\" Background=\"{TemplateBinding Background}\">\r\n                            <Border x:Name=\"ContentElement\" BorderBrush=\"{StaticResource WhiteColorBrush}\" BorderThickness=\"1\" Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\"/>\r\n                            <Border x:Name=\"ContentElement2\" BorderBrush=\"{StaticResource WhiteColorBrush}\" BorderThickness=\"1\">\r\n                                <ContentControl x:Name=\"Watermark\" Background=\"{TemplateBinding Background}\" Content=\"{TemplateBinding Watermark}\" Foreground=\"{StaticResource WatermarkBrush}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Opacity=\"0\" Padding=\"2\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Rectangle x:Name=\"Base\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"1\" />\r\n                        <Rectangle x:Name=\"FocusRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Stroke=\"{StaticResource GrayBrush12}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{StaticResource GrayBrush12}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n    </Style>\r\n\r\n    <!--DatePicker Style-->\r\n    <Style TargetType=\"controls:DatePicker\" x:Key=\"DefaultDatePickerStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"SelectionBackground\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:DatePicker\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <SolidColorBrush x:Key=\"DisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n                            <ControlTemplate x:Key=\"DropDownButtonTemplate\" TargetType=\"Button\">\r\n                                <Grid FlowDirection=\"LeftToRight\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisual\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.595\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid Background=\"{StaticResource TransparentWhiteBrush}\" HorizontalAlignment=\"Center\" Height=\"18\" Margin=\"0\" VerticalAlignment=\"Center\" Width=\"19\">\r\n                                        <Grid.ColumnDefinitions>\r\n                                            <ColumnDefinition Width=\"20*\"/>\r\n                                            <ColumnDefinition Width=\"20*\"/>\r\n                                            <ColumnDefinition Width=\"20*\"/>\r\n                                            <ColumnDefinition Width=\"20*\"/>\r\n                                        </Grid.ColumnDefinitions>\r\n                                        <Grid.RowDefinitions>\r\n                                            <RowDefinition Height=\"23*\"/>\r\n                                            <RowDefinition Height=\"19*\"/>\r\n                                            <RowDefinition Height=\"19*\"/>\r\n                                            <RowDefinition Height=\"19*\"/>\r\n                                        </Grid.RowDefinitions>\r\n                                        <Border x:Name=\"Background\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"4\" Margin=\"0,-1,0,0\" Opacity=\"1\" Grid.Row=\"1\" Grid.RowSpan=\"3\">\r\n                                            <Border.Background>\r\n\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray7}\" />\r\n\r\n                                            </Border.Background>\r\n                                        </Border>\r\n                                        <Rectangle Grid.ColumnSpan=\"4\" Grid.RowSpan=\"1\" StrokeThickness=\"1\" Stroke=\"{StaticResource TextBoxBorderBrush}\" Fill=\"{StaticResource TextBoxMouseOverBorderBrush}\"/>\r\n                                        <Border x:Name=\"MouseOverBorder\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"4\" Margin=\"0,-1,0,0\" Opacity=\"0\" Grid.Row=\"1\" Grid.RowSpan=\"3\">\r\n                                            <Border.Background>\r\n\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray8}\" />\r\n\r\n                                            </Border.Background>\r\n                                        </Border>\r\n                                        <Border x:Name=\"PressedBorder\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"4\" Margin=\"0,-1,0,0\" Opacity=\"0\" Grid.Row=\"1\" Grid.RowSpan=\"3\">\r\n                                            <Border.Background>\r\n\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray5}\" />\r\n\r\n                                            </Border.Background>\r\n                                        </Border>\r\n                                        <Path Grid.ColumnSpan=\"4\" Grid.Column=\"0\" Data=\"M11.426758,8.4305077 L11.749023,8.4305077 L11.749023,16.331387 L10.674805,16.331387 L10.674805,10.299648 L9.0742188,11.298672 L9.0742188,10.294277 C9.4788408,10.090176 9.9094238,9.8090878 10.365967,9.4510155 C10.82251,9.0929432 11.176106,8.7527733 11.426758,8.4305077 z M14.65086,8.4305077 L18.566387,8.4305077 L18.566387,9.3435936 L15.671368,9.3435936 L15.671368,11.255703 C15.936341,11.058764 16.27293,10.960293 16.681133,10.960293 C17.411602,10.960293 17.969301,11.178717 18.354229,11.615566 C18.739157,12.052416 18.931622,12.673672 18.931622,13.479336 C18.931622,15.452317 18.052553,16.438808 16.294415,16.438808 C15.560365,16.438808 14.951641,16.234707 14.468243,15.826504 L14.881817,14.929531 C15.368796,15.326992 15.837872,15.525723 16.289043,15.525723 C17.298809,15.525723 17.803692,14.895514 17.803692,13.635098 C17.803692,12.460618 17.305971,11.873379 16.310528,11.873379 C15.83071,11.873379 15.399232,12.079271 15.016094,12.491055 L14.65086,12.238613 z\" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Center\" Margin=\"4,3,4,3\" Grid.Row=\"1\" Grid.RowSpan=\"3\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" VerticalAlignment=\"Center\"/>\r\n                                        <Ellipse Grid.ColumnSpan=\"4\" Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Center\" Height=\"3\" StrokeThickness=\"0\" VerticalAlignment=\"Center\" Width=\"3\"/>\r\n                                        <Border x:Name=\"DisabledVisual\" BorderBrush=\"{StaticResource TransparentLightLightBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"4\" CornerRadius=\"0,0,.5,.5\" Opacity=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"4\" Background=\"White\"/>\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <System_Windows_Controls_Primitives:DatePickerTextBox x:Name=\"TextBox\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Grid.Column=\"0\" Padding=\"{TemplateBinding Padding}\" SelectionBackground=\"{TemplateBinding SelectionBackground}\"/>\r\n                        <Button x:Name=\"Button\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Grid.Column=\"1\" Foreground=\"{TemplateBinding Foreground}\" Margin=\"2,0,2,0\" Template=\"{StaticResource DropDownButtonTemplate}\" Width=\"20\"/>\r\n                        <Grid x:Name=\"DisabledVisual\" Grid.ColumnSpan=\"2\" IsHitTestVisible=\"False\" Opacity=\"0\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Rectangle Fill=\"{StaticResource TransparentLightLightBrush}\" RadiusY=\"1\" RadiusX=\"1\"/>\r\n                            <Rectangle Grid.Column=\"1\" Fill=\"{StaticResource TransparentLightLightBrush}\" Height=\"18\" Margin=\"2,0,2,0\" RadiusY=\"1\" RadiusX=\"1\" Width=\"19\"/>\r\n                        </Grid>\r\n                        <Popup x:Name=\"Popup\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--AutoCompleteBox Style-->\r\n    <!-- If you use AutoCompleteBoxStyle in a separate project-->\r\n    <!--Be sure to include this ControlTemplate xaml for Validation Ux-->\r\n    <!--AutoCompleteBoxStyle has a dependency on it-->\r\n    <Style TargetType=\"input:AutoCompleteBox\" x:Key=\"DefaultAutoCompleteBoxStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"45\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"input:AutoCompleteBox\">\r\n                    <Grid Opacity=\"{TemplateBinding Opacity}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"PopupStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"PopupOpened\"/>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"PopupClosed\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"PopupOpened\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"PopupBorder\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"PopupClosed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation To=\"0.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"PopupBorder\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <TextBox x:Name=\"Text\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Foreground=\"{TemplateBinding Foreground}\" IsTabStop=\"True\" Margin=\"0\" Padding=\"{TemplateBinding Padding}\" Style=\"{StaticResource AutoCompleteTextBox}\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"1\" CornerRadius=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource CommonValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <System:Boolean>true</System:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Popup x:Name=\"Popup\">\r\n                            <Grid Opacity=\"{TemplateBinding Opacity}\">\r\n                                <Border x:Name=\"PopupBorder\" BorderThickness=\"0\" Background=\"{StaticResource TransparentDarkBrush}\" HorizontalAlignment=\"Stretch\" Opacity=\"0\" Effect=\"{StaticResource DropShadowBrush}\">\r\n                                    <Border.RenderTransform>\r\n                                        <TranslateTransform X=\"1\" Y=\"1\"/>\r\n                                    </Border.RenderTransform>\r\n                                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"0\" HorizontalAlignment=\"Stretch\" Opacity=\"1.0\" Padding=\"0\">\r\n                                        <Border.Background>\r\n                                            <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                <GradientStop Color=\"{StaticResource Gray1}\" Offset=\"0\"/>\r\n                                                <GradientStop Color=\"{StaticResource Gray11}\" Offset=\"1\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Border.Background>\r\n                                        <Border.RenderTransform>\r\n                                            <TransformGroup>\r\n                                                <TranslateTransform X=\"-1\" Y=\"-1\"/>\r\n                                            </TransformGroup>\r\n                                        </Border.RenderTransform>\r\n                                        <ListBox x:Name=\"Selector\" BorderThickness=\"0\" Background=\"{TemplateBinding Background}\" Foreground=\"{TemplateBinding Foreground}\" ScrollViewer.HorizontalScrollBarVisibility=\"Auto\" ItemTemplate=\"{TemplateBinding ItemTemplate}\" ItemContainerStyle=\"{TemplateBinding ItemContainerStyle}\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\"/>\r\n                                    </Border>\r\n                                </Border>\r\n                            </Grid>\r\n                        </Popup>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataPager Style-->\r\n    <Style TargetType=\"data:DataPager\" x:Key=\"DefaultDataPagerStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Right\"/>\r\n        <Setter Property=\"NumericButtonStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ToggleButton\">\r\n                    <Setter Property=\"MinHeight\" Value=\"20\"/>\r\n                    <Setter Property=\"MinWidth\" Value=\"20\"/>\r\n                    <Setter Property=\"HorizontalAlignment\" Value=\"Right\"/>\r\n                    <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n                    <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                    <Setter Property=\"Padding\" Value=\"1\"/>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"ToggleButton\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"OuterBtnBorder\"/>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray1}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"OuterBtnBorder\"/>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray1}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"contentPresenter\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CheckedStateOuterBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border x:Name=\"CheckedStateOuterBorder\" BorderBrush=\"{StaticResource GrayBrush2}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource GrayBrush8}\" CornerRadius=\"1\" Opacity=\"0\"/>\r\n                                    <Border x:Name=\"OuterBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"1\">\r\n                                        <Border x:Name=\"InnerBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"1\" Margin=\"0\">\r\n                                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Margin=\"2\"/>\r\n                                        </Border>\r\n                                    </Border>\r\n                                    <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"1\" Margin=\"1\" Opacity=\"0\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"data:DataPager\">\r\n                    <Grid x:Name=\"Root\" Background=\"Transparent\">\r\n                        <Grid.Resources>\r\n                            <SolidColorBrush x:Key=\"BackgroundColor\" Color=\"{StaticResource TransparentBlackColor}\"/>\r\n                            <SolidColorBrush x:Key=\"ForegroundColor\" Color=\"{StaticResource BlackColor}\"/>\r\n                            <SolidColorBrush x:Key=\"BorderBrushColor\" Color=\"{StaticResource WhiteColor}\"/>\r\n                            <ControlTemplate x:Key=\"ButtonTemplate\" TargetType=\"Button\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray4}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"OuterBtnBorder\"/>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource TransparentWhiteColor}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"path\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border x:Name=\"OuterBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"1\">\r\n                                        <Border x:Name=\"InnerBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2\">\r\n                                            <ContentPresenter x:Name=\"path\" Content=\"{TemplateBinding Content}\"/>\r\n                                        </Border>\r\n                                    </Border>\r\n                                    <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"2\" Margin=\"1\" Opacity=\"0\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <Style x:Key=\"PagingTextBoxStyle\" TargetType=\"TextBox\">\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"Padding\" Value=\"2, 2, 2, -1\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"TextBox\">\r\n                                            <Grid x:Name=\"RootElement\">\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard/>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"ReadOnly\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ReadOnlyVisualElement\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Rectangle x:Name=\"Base\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{TemplateBinding Background}\" Opacity=\"1\" />\r\n                                                <Rectangle x:Name=\"FocusRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                                                <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                                                <Grid>\r\n                                                    <Border x:Name=\"ReadOnlyVisualElement\" Background=\"{StaticResource TransparentLightLightBrush}\" Opacity=\"0\"/>\r\n                                                    <Border x:Name=\"MouseOverBorder\" BorderBrush=\"Transparent\" BorderThickness=\"1\">\r\n                                                        <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" IsTabStop=\"False\" Margin=\"0,0,0,2\" Padding=\"{TemplateBinding Padding}\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\"/>\r\n                                                    </Border>\r\n                                                </Grid>\r\n\r\n                                                <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"{StaticResource GrayBrush12}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource GrayBrush12}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                                                <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" IsHitTestVisible=\"False\" Margin=\"1\" Opacity=\"0\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentPagePrefixTextBlock\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentPageSuffixTextBlock\"/>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.58\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MoveStates\">\r\n                                <VisualState x:Name=\"MoveEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MoveDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MoveFirstStates\">\r\n                                <VisualState x:Name=\"MoveFirstEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MoveFirstDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MovePreviousStates\">\r\n                                <VisualState x:Name=\"MovePreviousEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"PreviousPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MovePreviousDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"PreviousPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MoveNextStates\">\r\n                                <VisualState x:Name=\"MoveNextEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"NextPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MoveNextDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"NextPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MoveLastStates\">\r\n                                <VisualState x:Name=\"MoveLastEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MoveLastDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"DisplayModeStates\">\r\n                                <VisualState x:Name=\"FirstLastNumeric\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"NextPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PreviousPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PageDisplay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"FirstLastPreviousNext\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"NumericButtonPanel\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"FirstLastPreviousNextNumeric\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PageDisplay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Numeric\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"NextPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PreviousPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PageDisplay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Separator1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Separator2\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"PreviousNext\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"NumericButtonPanel\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"PreviousNextNumeric\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PageDisplay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" MinHeight=\"24\" Padding=\"{TemplateBinding Padding}\" VerticalAlignment=\"Bottom\">\r\n                            <StackPanel HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Orientation=\"Horizontal\" VerticalAlignment=\"Stretch\" Margin=\"5\">\r\n                                <Button x:Name=\"FirstPageButton\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Foreground=\"{StaticResource ForegroundColor}\" HorizontalAlignment=\"Right\" Height=\"25\" Padding=\"1\" VerticalAlignment=\"Center\" Width=\"25\" Margin=\"0,0,2,0\" Style=\"{StaticResource ImageButton}\">\r\n                                    <Grid Height=\"9\" Width=\"8\" Opacity=\"0.7\">\r\n                                        <Path Data=\"M0,1 L1,0 L1,2 Z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Right\" Height=\"9\" Stretch=\"Fill\" Width=\"5\"/>\r\n                                        <Rectangle Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Left\" Width=\"2\"/>\r\n                                    </Grid>\r\n                                </Button>\r\n                                <Button Style=\"{StaticResource ImageButton}\" x:Name=\"PreviousPageButton\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Background=\"{StaticResource NormalBrush}\" Foreground=\"{StaticResource ForegroundColor}\" HorizontalAlignment=\"Right\" Height=\"25\" Padding=\"1\" VerticalAlignment=\"Center\" Width=\"25\" Margin=\"0,0,2,0\">\r\n                                    <Path Data=\"M0,1 L1,0 L1,2 Z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Center\" Height=\"9\" Stretch=\"Fill\" Width=\"5\" Opacity=\"0.7\"/>\r\n                                </Button>\r\n                                <Border x:Name=\"Separator1\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"1,0,1,0\" Background=\"{StaticResource GrayBrush4}\" Margin=\"0,3,0,3\" Width=\"1\" Visibility=\"Collapsed\"/>\r\n                                <StackPanel x:Name=\"NumericButtonPanel\" Margin=\"1\" Orientation=\"Horizontal\"/>\r\n                                <StackPanel x:Name=\"PageDisplay\" Orientation=\"Horizontal\">\r\n                                    <TextBlock x:Name=\"CurrentPagePrefixTextBlock\" Foreground=\"{TemplateBinding Foreground}\" Margin=\"4,0,0,0\" VerticalAlignment=\"Center\" Width=\"Auto\" Text=\"PAGE\"/>\r\n                                    <TextBox x:Name=\"CurrentPageTextBox\" Foreground=\"{StaticResource HighlightBrush}\" Height=\"Auto\" Margin=\"4,0\" Style=\"{StaticResource PagingTextBoxStyle}\" TextWrapping=\"Wrap\" Width=\"40\" FontSize=\"16\" HorizontalAlignment=\"Center\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" FontWeight=\"Bold\"/>\r\n                                    <TextBlock x:Name=\"CurrentPageSuffixTextBlock\" Foreground=\"{TemplateBinding Foreground}\" Margin=\"0,0,4,0\" VerticalAlignment=\"Center\" Width=\"Auto\"/>\r\n                                </StackPanel>\r\n                                <Border x:Name=\"Separator2\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"1,0,1,0\" Background=\"{StaticResource GrayBrush4}\" Margin=\"0,3,0,3\" Width=\"1\" Visibility=\"Collapsed\"/>\r\n                                <Button Style=\"{StaticResource ImageButton}\" x:Name=\"NextPageButton\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Background=\"{StaticResource NormalBrush}\" Foreground=\"{StaticResource ForegroundColor}\" HorizontalAlignment=\"Right\" Height=\"25\" Padding=\"1\" VerticalAlignment=\"Center\" Width=\"25\" Margin=\"2,0,0,0\">\r\n                                    <Path Data=\"M0,0 L1,1 L0,2 Z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Center\" Height=\"9\" Stretch=\"Fill\" Width=\"5\" Opacity=\"0.7\"/>\r\n                                </Button>\r\n                                <Button Style=\"{StaticResource ImageButton}\" x:Name=\"LastPageButton\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Background=\"{StaticResource NormalBrush}\" Foreground=\"{StaticResource ForegroundColor}\" HorizontalAlignment=\"Right\" Height=\"25\" Padding=\"1\" VerticalAlignment=\"Center\" Width=\"25\" Margin=\"2,0,0,0\">\r\n                                    <Grid Height=\"9\" Width=\"8\" Opacity=\"0.7\">\r\n                                        <Path Data=\"M0,0 L1,1 L0,2 Z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Left\" Height=\"9\" Stretch=\"Fill\" Width=\"5\"/>\r\n                                        <Rectangle Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Right\" Width=\"2\"/>\r\n                                    </Grid>\r\n                                </Button>\r\n                            </StackPanel>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledBorder\" BorderThickness=\"1\" Background=\"{StaticResource WhiteBrush}\" Opacity=\"0\" IsHitTestVisible=\"False\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n    </Style>\r\n\r\n    <!--Label Style-->\r\n    <Style TargetType=\"dataInput:Label\" x:Key=\"DefaultLabelStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"dataInput:Label\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ControlColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray7}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"Invalid\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0:0:1.5\" Storyboard.TargetProperty=\"Foreground\" Storyboard.TargetName=\"ContentControl\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <SolidColorBrush Color=\"Red\"/>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"RequiredStates\">\r\n                                <VisualState x:Name=\"NotRequired\"/>\r\n                                <VisualState x:Name=\"Required\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"FontWeight\" Storyboard.TargetName=\"ContentControl\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"SemiBold\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                        </Grid.RowDefinitions>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"2\" Padding=\"{TemplateBinding Padding}\">\r\n                            <ContentControl x:Name=\"ContentControl\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                <ContentControl.Foreground>\r\n                                    <SolidColorBrush x:Name=\"ControlColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                </ContentControl.Foreground>\r\n                            </ContentControl>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--GridSplitter Style-->\r\n    <Style TargetType=\"controls:GridSplitter\" x:Key=\"DefaultGridSplitterStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"true\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Right\"/>\r\n        <Setter Property=\"PreviewStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"Control\">\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"Control\">\r\n                                <Grid x:Name=\"Root\" Opacity=\".5\">\r\n                                    <Rectangle Fill=\"{TemplateBinding Background}\"/>\r\n                                    <Grid x:Name=\"HorizontalTemplate\" Height=\"6\"/>\r\n                                    <Grid x:Name=\"VerticalTemplate\" Visibility=\"Collapsed\" Width=\"6\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:GridSplitter\">\r\n                    <Grid x:Name=\"Root\" IsHitTestVisible=\"{TemplateBinding IsEnabled}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle Fill=\"{TemplateBinding Background}\" StrokeThickness=\"0\"/>\r\n                        <Grid x:Name=\"HorizontalTemplate\" Height=\"10\">\r\n                            <Border BorderThickness=\"1\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" >\r\n                                <Canvas Height=\"6\" VerticalAlignment=\"Center\" Width=\"12\">\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"6.845\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\" Canvas.Left=\"5.845\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"6.845\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\" Canvas.Left=\"5.845\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"9.851\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\" Canvas.Left=\"8.851\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"9.851\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\" Canvas.Left=\"8.851\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                </Canvas>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"VerticalTemplate\" Visibility=\"Collapsed\" Width=\"10\">\r\n                            <Border BorderThickness=\"1\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" >\r\n                                <Canvas Width=\"6\" Height=\"12\" >\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"6.302\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"7.537\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"8.974\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"10.209\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"6.302\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"7.537\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"8.974\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"10.209\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                </Canvas>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Rectangle x:Name=\"FocusVisual\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--TabControl Style-->\r\n    <Style TargetType=\"controls:TabControl\" x:Key=\"DefaultTabControlStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Background\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Padding\" Value=\"5\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:TabControl\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualTop\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualBottom\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualLeft\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualRight\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"TemplateTop\" Visibility=\"Collapsed\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"*\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <System_Windows_Controls_Primitives:TabPanel x:Name=\"TabPanelTop\" Margin=\"5,2,2,-1\" Canvas.ZIndex=\"100\"/>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{TemplateBinding Background}\" MinWidth=\"10\" MinHeight=\"10\" Grid.Row=\"1\" BorderThickness=\"0,1,0,0\">\r\n                                <ContentPresenter x:Name=\"ContentTop\" Cursor=\"{TemplateBinding Cursor}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                            <Border x:Name=\"DisabledVisualTop\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"0,0,3,3\" IsHitTestVisible=\"False\" Opacity=\"0\" Grid.Row=\"1\" Grid.RowSpan=\"2\" Canvas.ZIndex=\"1\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateBottom\" Visibility=\"Collapsed\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <System_Windows_Controls_Primitives:TabPanel x:Name=\"TabPanelBottom\" Margin=\"2,-1,2,2\" Grid.Row=\"1\" Canvas.ZIndex=\"1\"/>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3,3,0,0\" MinWidth=\"10\" MinHeight=\"10\">\r\n                                <ContentPresenter x:Name=\"ContentBottom\" Cursor=\"{TemplateBinding Cursor}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                            <Border x:Name=\"DisabledVisualBottom\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"3,3,0,0\" IsHitTestVisible=\"False\" Opacity=\"0\" Canvas.ZIndex=\"1\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateLeft\" Visibility=\"Collapsed\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <System_Windows_Controls_Primitives:TabPanel x:Name=\"TabPanelLeft\" Margin=\"2,2,-1,2\" Canvas.ZIndex=\"1\"/>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Grid.Column=\"1\" CornerRadius=\"0,3,3,0\" MinWidth=\"10\" MinHeight=\"10\">\r\n                                <ContentPresenter x:Name=\"ContentLeft\" Cursor=\"{TemplateBinding Cursor}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                            <Border x:Name=\"DisabledVisualLeft\" Background=\"{StaticResource TransparentLightLightBrush}\" Grid.Column=\"1\" CornerRadius=\"0,3,3,0\" IsHitTestVisible=\"False\" Opacity=\"0\" Canvas.ZIndex=\"1\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateRight\" Visibility=\"Collapsed\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <System_Windows_Controls_Primitives:TabPanel x:Name=\"TabPanelRight\" Grid.Column=\"1\" Margin=\"-1,2,2,2\" Canvas.ZIndex=\"1\"/>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3,0,0,3\" MinWidth=\"10\" MinHeight=\"10\">\r\n                                <ContentPresenter x:Name=\"ContentRight\" Cursor=\"{TemplateBinding Cursor}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                            <Border x:Name=\"DisabledVisualRight\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"3,0,0,3\" IsHitTestVisible=\"False\" Margin=\"0\" Opacity=\"0\" Canvas.ZIndex=\"1\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TabItem Style-->\r\n    <Style TargetType=\"controls:TabItem\" x:Key=\"DefaultTabItemStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ControlTitleFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Padding\" Value=\"6,2,6,2\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"5\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"5\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:TabItem\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"MouseOver\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"TopBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"BottomBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"LeftBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"RightBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderTopUnselected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderTopSelected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderBottomUnselected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderBottomSelected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderLeftUnselected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderLeftSelected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderRightUnselected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderRightSelected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"TemplateTopSelected\" Visibility=\"Collapsed\" Canvas.ZIndex=\"1\">\r\n                            <Border BorderThickness=\"1,0,1,0\" BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n                                <ContentControl x:Name=\"HeaderTopSelected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" FontWeight=\"Bold\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateTopUnselected\" Visibility=\"Collapsed\">\r\n                            <Border x:Name=\"TopBorder\" BorderThickness=\"1,0,1,0\">\r\n                                <ContentControl x:Name=\"HeaderTopUnselected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{StaticResource CheckBoxBrush}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateBottomSelected\" Visibility=\"Collapsed\" Canvas.ZIndex=\"1\">\r\n                            <Border BorderThickness=\"1,0,1,0\" BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n                                <ContentControl x:Name=\"HeaderBottomSelected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" FontWeight=\"Bold\"/>\r\n                            </Border>\r\n\r\n\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateBottomUnselected\" Visibility=\"Collapsed\">\r\n                            <Border x:Name=\"BottomBorder\" BorderThickness=\"1,0,1,0\">\r\n                                <ContentControl x:Name=\"HeaderBottomUnselected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateLeftSelected\" Visibility=\"Collapsed\" Canvas.ZIndex=\"1\">\r\n                            <Border BorderThickness=\"0,1,0,1\" BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n                                <ContentControl x:Name=\"HeaderLeftSelected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" FontWeight=\"Bold\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateLeftUnselected\" Visibility=\"Collapsed\">\r\n                            <Border x:Name=\"LeftBorder\" BorderThickness=\"0,1,0,1\">\r\n                                <ContentControl x:Name=\"HeaderLeftUnselected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateRightSelected\" Visibility=\"Collapsed\" Canvas.ZIndex=\"1\">\r\n                            <Border BorderThickness=\"0,1,0,1\" BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n                                <ContentControl x:Name=\"HeaderRightSelected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" FontWeight=\"Bold\"/>\r\n                            </Border>\r\n\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateRightUnselected\" Visibility=\"Collapsed\">\r\n                            <Border x:Name=\"RightBorder\" BorderThickness=\"0,1,0,1\">\r\n                                <ContentControl x:Name=\"HeaderRightUnselected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"1\" CornerRadius=\"3,3,0,0\" IsHitTestVisible=\"false\" Margin=\"-1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--ChildWindow Style-->\r\n    <Style x:Key=\"ChildWindowStyle\" TargetType=\"controls:ChildWindow\">\r\n        <Setter Property=\"IsTabStop\" Value=\"false\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Cycle\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Value=\"{StaticResource ThumbBrush}\" Property=\"BorderBrush\"/>\r\n        <Setter Property=\"OverlayBrush\" Value=\"{StaticResource PageOverlayBrush}\"/>\r\n        <Setter Property=\"OverlayOpacity\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:ChildWindow\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <Style x:Key=\"ButtonStyle\" TargetType=\"Button\">\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"Padding\" Value=\"3\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"Button\">\r\n                                            <Grid x:Name=\"grid\" Background=\"{StaticResource TransparentWhiteBrush}\" HorizontalAlignment=\"Center\" Height=\"14\" VerticalAlignment=\"Center\" Width=\"15\">\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz2\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz1\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz0\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"0.95\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"X\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"0.85\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"X\"/>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz2\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz1\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz0\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"X\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Path x:Name=\"X_Fuzz2\" Data=\"F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z\" Fill=\"{StaticResource FuzzBrush2}\" HorizontalAlignment=\"Center\" Height=\"8\" Margin=\"0,-1,0,0\" Opacity=\"1\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" Stroke=\"{StaticResource FuzzBrush2}\" Visibility=\"Collapsed\" VerticalAlignment=\"Center\" Width=\"9\">\r\n                                                    <Path.RenderTransform>\r\n                                                        <TransformGroup>\r\n                                                            <ScaleTransform ScaleY=\"1.3\" ScaleX=\"1.3\"/>\r\n                                                        </TransformGroup>\r\n                                                    </Path.RenderTransform>\r\n                                                </Path>\r\n                                                <Path x:Name=\"X_Fuzz1\" Data=\"F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z\" Fill=\"{StaticResource FuzzBrush1}\" HorizontalAlignment=\"Center\" Height=\"8\" Margin=\"0,-1,0,0\" Opacity=\"1\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" Stroke=\"{StaticResource FuzzBrush1}\" Visibility=\"Collapsed\" VerticalAlignment=\"Center\" Width=\"9\">\r\n                                                    <Path.RenderTransform>\r\n                                                        <TransformGroup>\r\n                                                            <ScaleTransform ScaleY=\"1.1\" ScaleX=\"1.1\"/>\r\n                                                        </TransformGroup>\r\n                                                    </Path.RenderTransform>\r\n                                                </Path>\r\n                                                <Path x:Name=\"X_Fuzz0\" Data=\"F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z\" Fill=\"{StaticResource FuzzBrush3}\" HorizontalAlignment=\"Center\" Height=\"8\" Margin=\"0,-1,0,0\" Opacity=\"1\" Stretch=\"Fill\" Stroke=\"{StaticResource FuzzBrush3}\" Visibility=\"Collapsed\" VerticalAlignment=\"Center\" Width=\"9\"/>\r\n                                                <Path x:Name=\"X\" Stroke=\"{StaticResource GrayBrush3}\" Data=\"F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z\" Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Center\" Height=\"8\" Margin=\"0,-1,0,0\" Opacity=\"0.7\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"9\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"WindowStates\">\r\n                                <VisualState x:Name=\"Open\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Overlay\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00.3\" Value=\"1\">\r\n                                                <EasingDoubleKeyFrame.EasingFunction>\r\n                                                    <PowerEase EasingMode=\"EaseInOut\"/>\r\n                                                </EasingDoubleKeyFrame.EasingFunction>\r\n                                            </EasingDoubleKeyFrame>\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.55\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"(RenderTransform).(Children)[0].ScaleX\" Storyboard.TargetName=\"ContentRoot\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.25\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.4\" Value=\"1\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0.5,1\" KeyTime=\"00:00:00.45\" Value=\"1.05\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.55\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"(RenderTransform).(Children)[0].ScaleY\" Storyboard.TargetName=\"ContentRoot\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.25\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.4\" Value=\"1\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0.5,1\" KeyTime=\"00:00:00.45\" Value=\"1.05\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.55\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Closed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Overlay\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00.3\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"(RenderTransform).(Children)[0].ScaleX\" Storyboard.TargetName=\"ContentRoot\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.2\" Value=\"1\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.25\" Value=\"1.05\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.45\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"(RenderTransform).(Children)[0].ScaleY\" Storyboard.TargetName=\"ContentRoot\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.2\" Value=\"1\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.25\" Value=\"1.05\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.45\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"Overlay\" Background=\"{TemplateBinding OverlayBrush}\" HorizontalAlignment=\"Stretch\" Margin=\"0\" Opacity=\"{TemplateBinding OverlayOpacity}\" VerticalAlignment=\"Top\"/>\r\n                        <Grid x:Name=\"ContentRoot\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Height=\"{TemplateBinding Height}\" RenderTransformOrigin=\"0.5,0.5\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" Width=\"{TemplateBinding Width}\">\r\n                            <Grid.RenderTransform>\r\n                                <TransformGroup>\r\n                                    <ScaleTransform/>\r\n                                    <SkewTransform/>\r\n                                    <RotateTransform/>\r\n                                    <TranslateTransform/>\r\n                                </TransformGroup>\r\n                            </Grid.RenderTransform>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteColorBrush}\" Effect=\"{StaticResource DropShadowBrush}\">\r\n                                <Grid>\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <Border x:Name=\"Chrome\" BorderThickness=\"0,0,0,1\" Width=\"Auto\" Background=\"Transparent\">\r\n                                        <Grid Height=\"Auto\" Width=\"Auto\">\r\n                                            <Grid.ColumnDefinitions>\r\n                                                <ColumnDefinition/>\r\n                                                <ColumnDefinition Width=\"30\"/>\r\n                                            </Grid.ColumnDefinitions>\r\n                                            <ContentControl Content=\"{TemplateBinding Title}\" HorizontalAlignment=\"Stretch\" IsTabStop=\"False\" Margin=\"20,21,8,0\" VerticalAlignment=\"Center\" FontSize=\"18.667\"/>\r\n                                            <Button x:Name=\"CloseButton\" Grid.Column=\"1\" HorizontalAlignment=\"Center\" Height=\"14\" IsTabStop=\"False\" Style=\"{StaticResource ButtonStyle}\" VerticalAlignment=\"Top\" Width=\"15\" Margin=\"0,5,0,0\"/>\r\n                                            <Rectangle Fill=\"{StaticResource BrandingBrush}\" Height=\"6\" Margin=\"20,15,0,0\" VerticalAlignment=\"Top\" Width=\"80\" HorizontalAlignment=\"Left\"/>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Border Background=\"{TemplateBinding Background}\" Margin=\"7\" Grid.Row=\"1\">\r\n                                        <ContentPresenter x:Name=\"ContentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                    </Border>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--AutoCompleteBoxTextBox Style-->\r\n    <Style x:Key=\"AutoCompleteTextBox\" TargetType=\"TextBox\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"TextBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ReadOnlyVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"2\" Opacity=\"1\">\r\n                            <Grid>\r\n                                <Border x:Name=\"ReadOnlyVisualElement\" Background=\"{StaticResource GrayBrush13}\" Opacity=\"0\"/>\r\n                                <Grid>\r\n                                    <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" IsTabStop=\"False\" Padding=\"{TemplateBinding Padding}\"/>\r\n                                </Grid>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"FocusedBorder\" BorderBrush=\"{StaticResource CheckBoxBrush}\" BorderThickness=\"1\" CornerRadius=\"2\" Opacity=\"0\" />\r\n                        <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"{StaticResource GrayBrush12}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource GrayBrush12}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"1\" CornerRadius=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <System:Boolean>true</System:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--CommonValidationToolTipTemplate Style-->\r\n    <!-- If you use AutoCompleteBoxStyle in a separate project-->\r\n    <!--Be sure to include this ControlTemplate xaml for Validation Ux-->\r\n    <!--AutoCompleteBoxStyle has a dependency on it-->\r\n    <ControlTemplate x:Key=\"CommonValidationToolTipTemplate\" TargetType=\"ToolTip\">\r\n        <Grid x:Name=\"Root\" Margin=\"5,0\" Opacity=\"0\" RenderTransformOrigin=\"0,0\">\r\n            <Grid.RenderTransform>\r\n                <TranslateTransform x:Name=\"Translation\" X=\"-25\"/>\r\n            </Grid.RenderTransform>\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"OpenStates\">\r\n                    <VisualStateGroup.Transitions>\r\n                        <VisualTransition GeneratedDuration=\"0\"/>\r\n                        <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"Open\">\r\n                            <Storyboard>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" To=\"0\" Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"Translation\">\r\n                                    <DoubleAnimation.EasingFunction>\r\n                                        <BackEase Amplitude=\".3\" EasingMode=\"EaseOut\"/>\r\n                                    </DoubleAnimation.EasingFunction>\r\n                                </DoubleAnimation>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                            </Storyboard>\r\n                        </VisualTransition>\r\n                    </VisualStateGroup.Transitions>\r\n                    <VisualState x:Name=\"Closed\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                    <VisualState x:Name=\"Open\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"Translation\"/>\r\n                            <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Border Background=\"{StaticResource ValidationBrush1}\" CornerRadius=\"5\" Margin=\"4,4,-4,-4\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush2}\" CornerRadius=\"4\" Margin=\"3,3,-3,-3\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush3}\" CornerRadius=\"3\" Margin=\"2,2,-2,-2\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush4}\" CornerRadius=\"2\" Margin=\"1,1,-1,-1\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush5}\" CornerRadius=\"2\">\r\n                <TextBlock Foreground=\"White\" MaxWidth=\"250\" Margin=\"8,4,8,4\" TextWrapping=\"Wrap\" Text=\"{Binding (Validation.Errors)[0].ErrorContent}\" UseLayoutRounding=\"false\"/>\r\n            </Border>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--TreeView Style-->\r\n    <Style TargetType=\"controls:TreeView\" x:Key=\"DefaultTreeViewStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Cursor\" Value=\"Arrow\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"Padding\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"True\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:TreeView\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Validation\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Validation\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"ValidationToolTip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                            <Border Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\">\r\n                                <ScrollViewer x:Name=\"ScrollViewer\" BorderBrush=\"Transparent\" BorderThickness=\"0\" Background=\"{x:Null}\" HorizontalScrollBarVisibility=\"Auto\" IsTabStop=\"False\" TabNavigation=\"Once\" VerticalScrollBarVisibility=\"Auto\">\r\n                                    <ItemsPresenter Margin=\"5\"/>\r\n                                </ScrollViewer>\r\n                            </Border>\r\n                        </Border>\r\n                        <Border x:Name=\"Validation\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Grid.Column=\"1\" CornerRadius=\"2\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"ValidationToolTip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" IsHitTestVisible=\"True\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource CommonValidationToolTipTemplate}\"/>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 Z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"-1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"-1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TreeViewItem Style-->\r\n    <Style TargetType=\"controls:TreeViewItem\" x:Key=\"DefaultTreeViewItemStyle\">\r\n        <Setter Property=\"Padding\" Value=\"3\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Cursor\" Value=\"Arrow\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"True\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"Margin\" Value=\"0 1 0 0\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:TreeViewItem\">\r\n                    <Grid Background=\"{x:Null}\">\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"15\"/>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                            <RowDefinition Height=\"*\"/>\r\n                        </Grid.RowDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"SelectWrapper\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"SelectedInactive\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"HasItemsStates\">\r\n                                <VisualState x:Name=\"HasItems\"/>\r\n                                <VisualState x:Name=\"NoItems\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpansionStates\">\r\n                                <VisualState x:Name=\"Collapsed\"/>\r\n                                <VisualState x:Name=\"Expanded\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ItemsHost\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Validation\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Validation\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"ValidationToolTip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <ToggleButton x:Name=\"ExpanderButton\" HorizontalAlignment=\"Stretch\" IsTabStop=\"False\" TabNavigation=\"Once\" VerticalAlignment=\"Stretch\">\r\n                            <ToggleButton.Template>\r\n                                <ControlTemplate TargetType=\"ToggleButton\">\r\n                                    <Grid x:Name=\"Root\" Background=\"Transparent\">\r\n                                        <VisualStateManager.VisualStateGroups>\r\n                                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                <VisualState x:Name=\"Normal\"/>\r\n                                                <VisualState x:Name=\"MouseOver\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"grid\" d:IsOptimized=\"True\"/>\r\n                                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty=\"(Shape.Fill).(SolidColorBrush.Color)\" Storyboard.TargetName=\"UncheckedVisual\">\r\n                                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"White\"/>\r\n                                                            <EasingColorKeyFrame KeyTime=\"0:0:0.4\" Value=\"{StaticResource AccentColor}\"/>\r\n                                                        </ColorAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                                <VisualState x:Name=\"Disabled\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\".7\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                            </VisualStateGroup>\r\n                                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                                <VisualState x:Name=\"Unchecked\"/>\r\n                                                <VisualState x:Name=\"Checked\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"UncheckedVisual\" d:IsOptimized=\"True\"/>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedVisual\" d:IsOptimized=\"True\"/>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                            </VisualStateGroup>\r\n                                        </VisualStateManager.VisualStateGroups>\r\n                                        <Grid x:Name=\"grid\" HorizontalAlignment=\"Right\" Margin=\"2 2 5 2\" Opacity=\"0.6\">\r\n                                            <Path x:Name=\"OldUncheckedVisual\" Data=\"M5.8535156,2.1822653 L10.195313,2.1822653 L10.195313,6.5152731 L14.537109,6.5152731 L14.537109,10.848281 L10.195313,10.848281 L10.195313,15.181289 L5.8535156,15.181289 L5.8535156,10.848281 L1.5205078,10.848281 L1.5205078,6.5152731 L5.8535156,6.5152731 z\" HorizontalAlignment=\"Right\" Height=\"8\" Margin=\"0\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Center\" Width=\"8\" Visibility=\"Collapsed\" >\r\n                                                <Path.Fill>\r\n                                                    <SolidColorBrush Color=\"{StaticResource Gray3}\"/>\r\n                                                </Path.Fill>\r\n                                            </Path>\r\n                                            <Path x:Name=\"OldCheckedVisual\" Data=\"M10.195313,6.5152731 L14.537109,6.5152731 14.537109,10.848281 10.195313,10.848281 5.8535156,10.848281 1.5205078,10.848281 1.5205078,6.5152731 5.8535156,6.5152731 z\" HorizontalAlignment=\"Right\" Height=\"2\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Center\" Width=\"8\" Visibility=\"Collapsed\" >\r\n                                                <Path.Fill>\r\n                                                    <SolidColorBrush Color=\"{StaticResource Gray3}\"/>\r\n                                                </Path.Fill>\r\n                                            </Path>\r\n                                            <Path x:Name=\"UncheckedVisual\" Data=\"M 0,0 L 0,9 L 5,4.5 Z\" HorizontalAlignment=\"Right\" Height=\"9\" StrokeThickness=\"1\" StrokeLineJoin=\"Miter\" VerticalAlignment=\"Center\" Width=\"6\" Margin=\"0,0,2,0\" UseLayoutRounding=\"False\">\r\n                                                <Path.Fill>\r\n                                                    <SolidColorBrush x:Name=\"BlankBackgroundBrush\" Color=\"{StaticResource BaseColor2}\" />\r\n                                                </Path.Fill>\r\n                                                <Path.Stroke>\r\n                                                    <SolidColorBrush x:Name=\"BaseBrush5\" Color=\"{StaticResource BaseColor5}\" />\r\n                                                </Path.Stroke>\r\n                                            </Path>\r\n                                            <Path x:Name=\"CheckedVisual\" Data=\"M 6,0 L 6,6 L 0,6 Z\" HorizontalAlignment=\"Center\" Height=\"6\" Opacity=\"0\" StrokeLineJoin=\"Miter\" VerticalAlignment=\"Center\" Width=\"6\" Stroke=\"Black\" UseLayoutRounding=\"False\">\r\n                                                <Path.Fill>\r\n                                                    <SolidColorBrush Color=\"{StaticResource BaseColor3}\"/>\r\n                                                </Path.Fill>\r\n                                            </Path>\r\n                                        </Grid>\r\n                                    </Grid>\r\n                                </ControlTemplate>\r\n                            </ToggleButton.Template>\r\n                        </ToggleButton>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" Grid.Column=\"1\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource HighlightBrush}\"/>\r\n                        <Rectangle x:Name=\"Selection\" Grid.Column=\"1\" IsHitTestVisible=\"False\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\" StrokeThickness=\"1\">\r\n                            <Rectangle.Fill>\r\n                                <SolidColorBrush x:Name=\"SelectionFill\" Color=\"{StaticResource HighlightLightColor}\"/>\r\n                            </Rectangle.Fill>\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush x:Name=\"SelectionStroke\" Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                        <Button x:Name=\"Header\" FontWeight=\"Light\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Cursor=\"{TemplateBinding Cursor}\" ClickMode=\"Hover\" Grid.Column=\"1\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" TabNavigation=\"Once\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" >\r\n                            <Button.Foreground>\r\n                                <SolidColorBrush x:Name=\"HeaderWrapper\" Color=\"{StaticResource BlackColor}\" />\r\n                            </Button.Foreground>\r\n                            <Button.Template>\r\n                                <ControlTemplate TargetType=\"Button\">\r\n                                    <Grid Background=\"{TemplateBinding Background}\">\r\n                                        <VisualStateManager.VisualStateGroups>\r\n                                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                <VisualState x:Name=\"Normal\"/>\r\n                                                <VisualState x:Name=\"Pressed\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                        </DoubleAnimationUsingKeyFrames>\r\n                                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                        </ColorAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                                <VisualState x:Name=\"Disabled\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\".55\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Content\"/>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                            </VisualStateGroup>\r\n                                        </VisualStateManager.VisualStateGroups>\r\n                                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource HighlightBrush}\"/>\r\n                                        <ContentControl Margin=\"0,-2\" >\r\n                                            <ContentControl.Foreground>\r\n                                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                            </ContentControl.Foreground>\r\n                                            <ContentPresenter x:Name=\"Content\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Left\" Margin=\"{TemplateBinding Padding}\"/>\r\n                                        </ContentControl>\r\n                                    </Grid>\r\n                                </ControlTemplate>\r\n                            </Button.Template>\r\n                            <ContentControl >\r\n                                <ContentControl.Foreground>\r\n                                    <SolidColorBrush x:Name=\"SelectWrapper\" Color=\"{StaticResource BlackColor}\" />\r\n                                </ContentControl.Foreground>\r\n                                <ContentPresenter ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\"/>\r\n                            </ContentControl>\r\n                        </Button>\r\n                        <Border x:Name=\"Validation\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Grid.Column=\"1\" CornerRadius=\"2\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"ValidationToolTip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" IsHitTestVisible=\"True\" Placement=\"Right\" PlacementTarget=\"{Binding ElementName=Header}\" Template=\"{StaticResource CommonValidationToolTipTemplate}\"/>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 Z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"-1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"-1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <ItemsPresenter x:Name=\"ItemsHost\" Grid.ColumnSpan=\"2\" Grid.Column=\"1\" Grid.Row=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- Implicit Styles -->\r\n    <!-- When defining your own styles, set \"based on\" the same way to keep control theming -->\r\n    <Style TargetType=\"data:DataGridCell\" BasedOn=\"{StaticResource DefaultDataGridCellStyle}\" />\r\n    <Style TargetType=\"dataPrimitives:DataGridColumnHeader\" BasedOn=\"{StaticResource DefaultDataGridColumnHeaderStyle}\" />\r\n    <Style TargetType=\"dataPrimitives:DataGridRowHeader\" BasedOn=\"{StaticResource DefaultDataGridRowHeaderStyle}\" />\r\n    <Style TargetType=\"data:DataGridRow\" BasedOn=\"{StaticResource DefaultDataGridRowStyle}\" />\r\n    <Style TargetType=\"data:DataGrid\" BasedOn=\"{StaticResource DefaultDataGridStyle}\" />\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:CalendarItem\" BasedOn=\"{StaticResource DefaultCalendarItemStyle}\" />\r\n    <Style TargetType=\"controls:Calendar\" BasedOn=\"{StaticResource DefaultCalendarStyle}\" />\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:CalendarDayButton\" BasedOn=\"{StaticResource DefaultCalendarDayButtonStyle}\" />\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:CalendarButton\" BasedOn=\"{StaticResource DefaultCalendarButtonStyle}\" />\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:DatePickerTextBox\" BasedOn=\"{StaticResource DefaultDatePickerTextBoxStyle}\" />\r\n    <Style TargetType=\"controls:DatePicker\" BasedOn=\"{StaticResource DefaultDatePickerStyle}\" />\r\n    <Style TargetType=\"input:AutoCompleteBox\" BasedOn=\"{StaticResource DefaultAutoCompleteBoxStyle}\" />\r\n    <Style TargetType=\"data:DataPager\" BasedOn=\"{StaticResource DefaultDataPagerStyle}\" />\r\n    <Style TargetType=\"dataInput:Label\" BasedOn=\"{StaticResource DefaultLabelStyle}\" />\r\n    <Style TargetType=\"controls:GridSplitter\" BasedOn=\"{StaticResource DefaultGridSplitterStyle}\" />\r\n    <Style TargetType=\"controls:TabControl\" BasedOn=\"{StaticResource DefaultTabControlStyle}\" />\r\n    <Style TargetType=\"controls:TabItem\" BasedOn=\"{StaticResource DefaultTabItemStyle}\" />\r\n    <Style TargetType=\"controls:TreeView\" BasedOn=\"{StaticResource DefaultTreeViewStyle}\" />\r\n    <Style TargetType=\"controls:TreeViewItem\" BasedOn=\"{StaticResource DefaultTreeViewItemStyle}\" />\r\n\r\n</ResourceDictionary>"
  },
  {
    "path": "litmus/LitmusTests/Themes/Cosmopolitan/Styles.xaml",
    "content": "﻿<ResourceDictionary\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:navigation=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation\" \r\n    xmlns:uriMapper=\"clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" mc:Ignorable=\"d\">\r\n\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"Brushes.xaml\"/>\r\n        <ResourceDictionary Source=\"Fonts.xaml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n\r\n    <!-- ******MAIN PAGE STYLES****** -->\r\n    <!-- **************************** -->\r\n\r\n    <Style x:Key=\"LayoutRootGridStyle\" TargetType=\"Grid\">\r\n    </Style>\r\n\r\n    <Style x:Key=\"NavigationGridStyle\" TargetType=\"Grid\">\r\n        <Setter Property=\"Margin\" Value=\"10,10,0,0\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Stretch\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"BrandingBorderStyle\" TargetType=\"Border\">\r\n        <Setter Property=\"Height\" Value=\"Auto\"/>\r\n        <Setter Property=\"Margin\" Value=\"62,0,20,10\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"BrandingStackPanelStyle\" TargetType=\"StackPanel\">\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"Orientation\" Value=\"Vertical\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"LogoIcon\" TargetType=\"ContentControl\">\r\n        <Setter Property=\"Height\" Value=\"45\"/>\r\n        <Setter Property=\"Width\" Value=\"280\"/>\r\n        <Setter Property=\"Margin\" Value=\"0,0,100,0\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Right\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ContentControl\">\r\n                    <Grid>\r\n                        <Rectangle Fill=\"{StaticResource HighlightBrush}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <Style x:Key=\"ApplicationNameStyle\" TargetType=\"TextBlock\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource ApplicationNameBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource HeaderFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ApplicationNameFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n        <Setter Property=\"Margin\" Value=\"43,33,0,0\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"HeaderTextStyle\" TargetType=\"TextBlock\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource HighlightBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource HeaderFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource HeaderFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n        <Setter Property=\"TextWrapping\" Value=\"Wrap\"/>\r\n        <Setter Property=\"Margin\" Value=\"0,15,0,4\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"PageHyperlinkButtonStyle\" TargetType=\"HyperlinkButton\">\r\n        <Setter Property=\"TargetName\" Value=\"_new\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource HyperlinkFontSize}\"/>\r\n\t\t<Setter Property=\"FontFamily\" Value=\"{StaticResource HeaderFontFamily}\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n    </Style>\r\n\r\n    <Style x:Key=\"LinksBorderStyle\" TargetType=\"Border\">\r\n        <Setter Property=\"Height\" Value=\"82\"/>\r\n        <Setter Property=\"Margin\" Value=\"0,156,25,0\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource HighlightBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"30,0,0,0\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"LinksStackPanelStyle\" TargetType=\"StackPanel\">\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"Orientation\" Value=\"Horizontal\"/>\r\n        <Setter Property=\"Margin\" Value=\"65,0,0,0\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"LinkStyle\" TargetType=\"HyperlinkButton\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource NavigationBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource NavigationForegroundBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource HeaderFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource NavigationFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n        <Setter Property=\"Cursor\" Value=\"Hand\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"28\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"78\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"Padding\" Value=\"8,4,18,4\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                    <Grid x:Name=\"ButtonGrid\" Cursor=\"{TemplateBinding Cursor}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.95\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.8\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(FrameworkElement.HorizontalAlignment)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <HorizontalAlignment>Center</HorizontalAlignment>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(FrameworkElement.VerticalAlignment)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <VerticalAlignment>Center</VerticalAlignment>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"(FrameworkElement.HorizontalAlignment)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <HorizontalAlignment>Center</HorizontalAlignment>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"(FrameworkElement.VerticalAlignment)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <VerticalAlignment>Center</VerticalAlignment>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"LinkStates\">\r\n                                <VisualState x:Name=\"ActiveLink\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InactiveLink\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ContentBorder\" MinWidth=\"{TemplateBinding MinWidth}\" MinHeight=\"{TemplateBinding MinHeight}\" Opacity=\"0.4\" Padding=\"0\">\r\n                            <ContentPresenter x:Name=\"ContentPresenter\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" />\r\n                        </Border>\r\n                        <Border x:Name=\"InteractiveBorder\" MinWidth=\"{TemplateBinding MinWidth}\" MinHeight=\"{TemplateBinding MinHeight}\" Background=\"{StaticResource HoverHyperlinkBackgroundBrush}\" BorderThickness=\"1,1,1,1\" Opacity=\"0\" BorderBrush=\"{StaticResource HoverHyperlinkBackgroundBrush}\" CornerRadius=\"0\"/>\r\n                        <Border x:Name=\"InteractiveElementBorder\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Visibility=\"Collapsed\">\r\n                            <TextBlock x:Name=\"InteractiveElement\" Foreground=\"{StaticResource HoverHyperlinkForegroundBrush}\" FontSize=\"{TemplateBinding FontSize}\" FontWeight=\"{TemplateBinding FontWeight}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\"/>\r\n                        </Border>\r\n                        <TextBlock x:Name=\"DisabledOverlay\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" Foreground=\"#FFAAAAAA\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <Style x:Key=\"ContentBorderStyle\" TargetType=\"Border\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource PageBorderBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Margin\" Value=\"10\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\r\n\r\n        <Setter Property=\"Effect\">\r\n            <Setter.Value>\r\n                <DropShadowEffect BlurRadius=\"10\" Opacity=\"0.25\" ShadowDepth=\"0\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <Style x:Key=\"ContentFrameStyle\" TargetType=\"navigation:Frame\">\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Margin\" Value=\"45,195,0,0\"/>\r\n        <Setter Property=\"Padding\" Value=\"58,15,58,15\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"DividerStyle\" TargetType=\"Rectangle\">\r\n        <Setter Property=\"Visibility\" Value=\"Collapsed\"/>\r\n    </Style>\r\n\r\n    <!-- **STYLE UPDATES FOR NAV TEMPLATE** -->\r\n    <!-- ********************************** -->\r\n    <Style x:Key=\"NavContentBorderStyle\" TargetType=\"Border\">\r\n        <Setter Property=\"Margin\" Value=\"45,-42,0,0\" />\r\n        <Setter Property=\"Grid.Row\" Value=\"2\" />\r\n    </Style>\r\n\r\n    <Style x:Key=\"NavContentFrameStyle\" TargetType=\"navigation:Frame\" BasedOn=\"{StaticResource ContentFrameStyle}\">\r\n        <Setter Property=\"Margin\" Value=\"0\"/>\r\n        <Setter Property=\"UriMapper\">\r\n            <Setter.Value>\r\n                <uriMapper:UriMapper>\r\n                    <uriMapper:UriMapping MappedUri=\"/Views/Home.xaml\" Uri=\"\" />\r\n                    <uriMapper:UriMapping MappedUri=\"/Views/{pageName}.xaml\" Uri=\"/{pageName}\" />\r\n                    <uriMapper:UriMapping MappedUri=\"/Views/{pageName}.xaml\" Uri=\"{}{pageName}\" />\r\n                </uriMapper:UriMapper>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <Style x:Key=\"NavBrandingBorderStyle\" TargetType=\"Border\">\r\n        <Setter Property=\"Margin\" Value=\"62,0,10,10\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"NavLinksBorderStyle\" TargetType=\"Border\" BasedOn=\"{StaticResource LinksBorderStyle}\">\r\n        <Setter Property=\"Margin\" Value=\"0,0,10,0\" />\r\n        <Setter Property=\"Grid.Row\" Value=\"1\" />\r\n    </Style>\r\n\r\n    <!-- ******CONTENT PAGE STYLES****** -->\r\n    <!-- ******************************* -->\r\n    <Style x:Key=\"PageStyle\" TargetType=\"navigation:Page\"/>\r\n\r\n    <Style x:Key=\"PageScrollViewerStyle\" TargetType=\"ScrollViewer\">\r\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0,1,0,1\"/>\r\n        <Setter Property=\"Margin\" Value=\"-58,-15,-58,-15\"/>\r\n        <Setter Property=\"Padding\" Value=\"58,0,58,0\"/>\r\n        <Setter Property=\"VerticalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"HorizontalScrollBarVisibility\" Value=\"Auto\"/>\r\n    </Style>\r\n\r\n    <Style x:Key=\"ContentPanelStyle\" TargetType=\"StackPanel\"/>\r\n\r\n    <Style x:Key=\"ContentTextStyle\" TargetType=\"TextBlock\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource BodyTextColorBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource HeaderFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextWrapping\" Value=\"Wrap\"/>\r\n        <Setter Property=\"Margin\" Value=\"0,2,0,2\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n    </Style>\r\n\r\n</ResourceDictionary>"
  },
  {
    "path": "litmus/LitmusTests/Themes/Cosmopolitan/ToolkitStyles.xaml",
    "content": "﻿<!-- This file is not built or included by default as toolkit assemblies are not installed by default -->\r\n<!-- See app.xaml for information on including the toolkit controls and enabling this theming file -->\r\n\r\n<ResourceDictionary\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:toolkit=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit\" \r\n\txmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n\tmc:Ignorable=\"d\"\r\n    xmlns:System=\"clr-namespace:System;assembly=mscorlib\"\r\n    xmlns:System_Windows_Controls=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Layout.Toolkit\"    \r\n    xmlns:sdk=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk\"\r\n    xmlns:layouttoolkit=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Layout.Toolkit\" \r\n    xmlns:inputtoolkit=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit\"\r\n    xmlns:System_Windows_Controls_Primitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Input.Toolkit\"\r\n    xmlns:dataformtoolkit=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit\" \r\n    xmlns:dataInput=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input\"\r\n    xmlns:Charting=\"clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit\" \r\n    xmlns:charttoolkit=\"clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit\" \r\n    xmlns:Charting_Primitives=\"clr-namespace:System.Windows.Controls.DataVisualization.Charting.Primitives;assembly=System.Windows.Controls.DataVisualization.Toolkit\"\r\n\txmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \r\n\txmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n\r\n    <!-- Global Settings-->\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"Brushes.xaml\"/>\r\n        <ResourceDictionary Source=\"Fonts.xaml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n\r\n    <!-- Accordion Style -->\r\n    <Style TargetType=\"System_Windows_Controls:Accordion\" x:Key=\"DefaultAccordionStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Cursor\" Value=\"Arrow\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Padding\" Value=\"0\"/>\r\n        <Setter Property=\"Margin\" Value=\"0\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"ItemsPanel\">\r\n            <Setter.Value>\r\n                <ItemsPanelTemplate>\r\n                    <StackPanel VerticalAlignment=\"Top\"/>\r\n                </ItemsPanelTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls:Accordion\">\r\n                    <Grid x:Name=\"Root\" Background=\"{StaticResource WhiteBrush}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\">\r\n                            <ScrollViewer BorderBrush=\"Transparent\" BorderThickness=\"0\" Background=\"{x:Null}\" HorizontalScrollBarVisibility=\"Disabled\" IsTabStop=\"False\" Margin=\"0\" Padding=\"0\" VerticalScrollBarVisibility=\"Disabled\">\r\n                                <ItemsPresenter/>\r\n                            </ScrollViewer>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--AccordionButton Style-->\r\n    <Style TargetType=\"layouttoolkit:AccordionButton\" x:Key=\"DefaultAccordionButtonStyle\">\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"True\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"layouttoolkit:AccordionButton\">\r\n                    <Grid Background=\"Transparent\" Margin=\"{TemplateBinding Padding}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"ExpandDirectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"ExpandDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Auto\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00\" To=\"-90\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"arrow\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandUp\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Auto\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00\" To=\"90\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"arrow\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandLeft\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Auto\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"LayoutTransform\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <TransformGroup>\r\n                                                        <RotateTransform Angle=\"90\"/>\r\n                                                    </TransformGroup>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00\" To=\"0\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"arrow\"/>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"path\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"path1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandRight\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Auto\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"LayoutTransform\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <TransformGroup>\r\n                                                        <RotateTransform Angle=\"-90\"/>\r\n                                                    </TransformGroup>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00\" To=\"180\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"arrow\"/>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"path1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"path\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpansionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Collapsed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00.3\" To=\"0\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"icon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Expanded\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00.3\" To=\"90\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"icon\"/>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ExpandedBackground\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(Control.FontWeight)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <FontWeight>Bold</FontWeight>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Checked\"/>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                    <VisualTransition From=\"MouseOver\" GeneratedDuration=\"00:00:00.1\" To=\"Normal\"/>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"background\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid>\r\n                                <Border x:Name=\"ExpandedBackground\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"1,1,1,1\" Height=\"Auto\" Margin=\"0,0,0,0\" Opacity=\"0\" VerticalAlignment=\"Stretch\" Visibility=\"Collapsed\">\r\n                                    <Border.Background>\r\n\r\n                                        <SolidColorBrush Color=\"{StaticResource Gray5}\" />\r\n\r\n                                    </Border.Background>\r\n                                </Border>\r\n                                <Border x:Name=\"MouseOverBackground\" CornerRadius=\"1,1,1,1\" Height=\"Auto\" Margin=\"0,0,0,0\" Opacity=\"0\" VerticalAlignment=\"Stretch\">\r\n                                    <Border.Background>\r\n\r\n                                        <SolidColorBrush Color=\"{StaticResource Gray8}\" />\r\n\r\n                                    </Border.Background>\r\n                                </Border>\r\n                                <Grid Background=\"Transparent\">\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition x:Name=\"cd0\" Width=\"Auto\"/>\r\n                                        <ColumnDefinition x:Name=\"cd1\" Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition x:Name=\"rd0\" Height=\"Auto\"/>\r\n                                        <RowDefinition x:Name=\"rd1\" Height=\"Auto\"/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <Grid x:Name=\"icon\" Grid.Column=\"0\" HorizontalAlignment=\"Center\" Height=\"19\" Grid.Row=\"0\" RenderTransformOrigin=\"0.5,0.5\" VerticalAlignment=\"Center\" Width=\"19\">\r\n                                        <Grid.RenderTransform>\r\n                                            <TransformGroup>\r\n                                                <ScaleTransform/>\r\n                                                <SkewTransform/>\r\n                                                <RotateTransform Angle=\"-90\"/>\r\n                                                <TranslateTransform/>\r\n                                            </TransformGroup>\r\n                                        </Grid.RenderTransform>\r\n\r\n\r\n\r\n                                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                            <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                <Rectangle.Stroke>\r\n                                                    <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                </Rectangle.Stroke>\r\n                                            </Rectangle>\r\n\r\n                                            <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Center\" Height=\"5\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\" RenderTransformOrigin=\"0.5,0.5\" VerticalAlignment=\"Center\">\r\n                                                <Path.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <ScaleTransform/>\r\n                                                        <SkewTransform/>\r\n                                                        <RotateTransform Angle=\"90\"/>\r\n                                                        <TranslateTransform/>\r\n                                                    </TransformGroup>\r\n                                                </Path.RenderTransform>\r\n                                            </Path>\r\n                                        </Grid>\r\n\r\n                                    </Grid>\r\n                                    <System_Windows_Controls:LayoutTransformer x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Grid.Column=\"1\" Foreground=\"{TemplateBinding Foreground}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"6,6,6,3\" Grid.Row=\"0\" Grid.RowSpan=\"1\"/>\r\n                                    <Path x:Name=\"path1\" Grid.Column=\"1\" Data=\"M20.859196,0.68390805 L20.859196,32.143585\" HorizontalAlignment=\"Right\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" Grid.RowSpan=\"2\" Visibility=\"Collapsed\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                </Grid>\r\n                                <Path x:Name=\"path\" Grid.ColumnSpan=\"1\" Data=\"M1.5819016,27.355097 L115.98849,27.355097\" Height=\"1\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Bottom\" d:LayoutOverrides=\"HorizontalAlignment\">\r\n                                    <Path.Stroke>\r\n                                        <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                    </Path.Stroke>\r\n                                </Path>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--AccordionItem Style-->\r\n    <Style TargetType=\"System_Windows_Controls:AccordionItem\" x:Key=\"DefaultAccordionItemStyle\">\r\n        <Setter Property=\"BorderBrush\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Margin\" Value=\"0\"/>\r\n        <Setter Property=\"Padding\" Value=\"0\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls:AccordionItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpansionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Collapsed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(ExpandableContentControl.Percentage)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0.2,0,0,1\" KeyTime=\"00:00:00.3\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00.3\" Duration=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Expanded\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(ExpandableContentControl.Percentage)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0.2,0,0,1\" KeyTime=\"00:00:00.3\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"LockedStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Locked\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unlocked\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpandDirectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"ExpandDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandUp\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandLeft\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.ColumnSpan)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.ColumnSpan)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.RowSpan)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"2\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.RowSpan)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"2\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandRight\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.ColumnSpan)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.ColumnSpan)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.RowSpan)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"2\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.RowSpan)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"2\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\">\r\n                            <Grid>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition x:Name=\"rd0\" Height=\"Auto\"/>\r\n                                    <RowDefinition x:Name=\"rd1\" Height=\"Auto\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition x:Name=\"cd0\" Width=\"Auto\"/>\r\n                                    <ColumnDefinition x:Name=\"cd1\" Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <layouttoolkit:AccordionButton x:Name=\"ExpanderButton\" Background=\"{TemplateBinding Background}\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"True\" IsChecked=\"{TemplateBinding IsSelected}\" Margin=\"0,0,0,0\" Padding=\"0,0,0,0\" Grid.Row=\"0\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                <layouttoolkit:ExpandableContentControl x:Name=\"ExpandSite\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Margin=\"0,0,0,0\" Percentage=\"0\" RevealMode=\"{TemplateBinding ExpandDirection}\" Grid.Row=\"1\" Style=\"{TemplateBinding ExpandableContentControlStyle}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!-- ButtonSpinner Style -->\r\n    <Style TargetType=\"inputtoolkit:ButtonSpinner\" x:Key=\"DefaultButtonSpinnerStyle\">\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n\t\t<Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:ButtonSpinner\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <ControlTemplate x:Key=\"IncreaseButtonTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" />\r\n                                    <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource WhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" />\r\n                                    <Border x:Name=\"MouseOverBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                                        <Border.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray8}\"/>\r\n                                        </Border.Background>\r\n                                    </Border>\r\n                                    <Border x:Name=\"PressedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                                        <Border.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                                        </Border.Background>\r\n                                    </Border>\r\n                                    <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" Margin=\"-1\" Opacity=\"0\" />\r\n                                    <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" Opacity=\"0\" />\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                    <Path x:Name=\"path\" Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Stretch\" Margin=\"4,3,4,3\" Stretch=\"Uniform\" VerticalAlignment=\"Stretch\" Width=\"8\" Height=\"4\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"DecreaseButtonTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" />\r\n                                    <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource WhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" />\r\n                                    <Border x:Name=\"MouseOverBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                                        <Border.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray8}\"/>\r\n                                        </Border.Background>\r\n                                    </Border>\r\n                                    <Border x:Name=\"PressedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                                        <Border.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                                        </Border.Background>\r\n                                    </Border>\r\n                                    <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" Margin=\"-1\" Opacity=\"0\" />\r\n                                    <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" Opacity=\"0\" />\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                    <Path x:Name=\"path\" Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Stretch\" Height=\"4\" Margin=\"4,3,4,3\" Stretch=\"Uniform\" VerticalAlignment=\"Stretch\" Width=\"8\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"BorderBrush\" Storyboard.TargetName=\"ElementContainer\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <SolidColorBrush Color=\"Gray\"/>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"IncreaseStates\">\r\n                                <VisualState x:Name=\"IncreaseEnabled\"/>\r\n                                <VisualState x:Name=\"IncreaseDisabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"DecreaseStates\">\r\n                                <VisualState x:Name=\"DecreaseEnabled\"/>\r\n                                <VisualState x:Name=\"DecreaseDisabled\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ElementContainer\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\">\r\n                            <Border x:Name=\"MouseOverBorder\" BorderBrush=\"Transparent\" BorderThickness=\"1\">\r\n                                <Grid>\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"*\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition Height=\"*\"/>\r\n                                        <RowDefinition Height=\"*\"/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <ContentControl x:Name=\"presentationSite\" Content=\"{TemplateBinding Content}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Grid.RowSpan=\"2\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                    <Button Grid.Column=\"1\" IsHitTestVisible=\"True\" IsTabStop=\"False\" Grid.Row=\"0\" Grid.RowSpan=\"2\">\r\n                                        <Button.Template>\r\n                                            <ControlTemplate TargetType=\"Button\">\r\n                                                <Grid Background=\"Transparent\"/>\r\n                                            </ControlTemplate>\r\n                                        </Button.Template>\r\n                                    </Button>\r\n                                    <RepeatButton x:Name=\"IncreaseButton\" ClickMode=\"Press\" Grid.Column=\"1\" IsTabStop=\"False\" Grid.Row=\"0\" Template=\"{StaticResource IncreaseButtonTemplate}\"/>\r\n                                    <RepeatButton x:Name=\"DecreaseButton\" ClickMode=\"Press\" Grid.Column=\"1\" IsTabStop=\"False\" Grid.Row=\"1\" Template=\"{StaticResource DecreaseButtonTemplate}\"/>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" IsHitTestVisible=\"False\" />\r\n                        <Rectangle x:Name=\"MouseOverInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" IsHitTestVisible=\"False\" />\r\n                        <Rectangle x:Name=\"FocusRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" IsHitTestVisible=\"False\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" IsHitTestVisible=\"False\" />\r\n                        <Rectangle x:Name=\"DisabledRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" IsHitTestVisible=\"False\" Fill=\"{StaticResource WhiteBrush}\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--TimeUpDown Style-->\r\n    <Style TargetType=\"inputtoolkit:TimeUpDown\" x:Key=\"DefaultTimeUpDownStyle\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Height\" Value=\"26\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"100\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:TimeUpDown\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"TimeHintStates\">\r\n                                <VisualState x:Name=\"TimeHintOpenedUp\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"-23\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"22\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"TimeHintOpenedDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"22\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"TimeHintClosed\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:20\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"22\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ParsingStates\">\r\n                                <VisualState x:Name=\"ValidTime\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"validicon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidTime\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"invalidicon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"EmptyTime\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"emptyicon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Popup x:Name=\"TimeHintPopup\" VerticalOffset=\"0\">\r\n                            <Border x:Name=\"TimeHintVisualElement\" BorderBrush=\"Gray\" BorderThickness=\"1\" Background=\"White\" HorizontalAlignment=\"Left\" IsHitTestVisible=\"True\" Visibility=\"Collapsed\">\r\n                                <Border.RenderTransform>\r\n                                    <TransformGroup>\r\n                                        <ScaleTransform/>\r\n                                        <SkewTransform/>\r\n                                        <RotateTransform/>\r\n                                        <TranslateTransform/>\r\n                                    </TransformGroup>\r\n                                </Border.RenderTransform>\r\n                                <Grid>\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition/>\r\n                                        <ColumnDefinition MinWidth=\"15\" Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <ContentControl Content=\"{TemplateBinding TimeHintContent}\" Grid.Column=\"0\" Foreground=\"{StaticResource GrayBrush3}\" FontSize=\"10\" HorizontalAlignment=\"Right\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Margin=\"3\" VerticalAlignment=\"Center\"/>\r\n                                    <ContentControl x:Name=\"emptyicon\" Grid.Column=\"1\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Margin=\"3\" Visibility=\"Collapsed\"/>\r\n                                    <ContentControl x:Name=\"validicon\" Grid.Column=\"1\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Margin=\"3\" Visibility=\"Collapsed\"/>\r\n                                    <ContentControl x:Name=\"invalidicon\" Grid.Column=\"1\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Visibility=\"Collapsed\" VerticalAlignment=\"Center\">\r\n                                        <Grid Width=\"15\" Height=\"15\" d:LayoutOverrides=\"HorizontalAlignment, VerticalAlignment, Width, Height\">\r\n                                            <Path Data=\"M15.5,111 L133.5,111 L73.5,40 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"0\" StrokeStartLineCap=\"Round\" Stretch=\"Fill\" StrokeEndLineCap=\"Round\" Stroke=\"Black\" StrokeMiterLimit=\"210\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" StrokeDashCap=\"Round\" StrokeThickness=\"1.5\"/>\r\n                                            <Path Data=\"M7.5,5.4166665 L7.5,9.7496738\" Fill=\"Black\" Margin=\"6.5,5.9,6,4.75\" StrokeStartLineCap=\"Round\" Stretch=\"Fill\" StrokeEndLineCap=\"Round\" Stroke=\"Black\" StrokeMiterLimit=\"10\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" StrokeDashCap=\"Round\" StrokeThickness=\"1.4\"/>\r\n                                            <Ellipse Fill=\"{StaticResource WhiteColorBrush}\" Height=\"1\" Margin=\"7,0,7,3\" StrokeStartLineCap=\"Round\" StrokeEndLineCap=\"Round\" Stroke=\"Black\" StrokeMiterLimit=\"10\" StrokeLineJoin=\"Round\" VerticalAlignment=\"Bottom\" StrokeThickness=\"1.5\"/>\r\n                                        </Grid>\r\n                                    </ContentControl>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Popup>\r\n                        <inputtoolkit:ButtonSpinner x:Name=\"Spinner\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" HorizontalContentAlignment=\"Stretch\" IsTabStop=\"False\" MinWidth=\"35\" Padding=\"{TemplateBinding Padding}\" VerticalContentAlignment=\"Stretch\">\r\n                            <TextBox x:Name=\"Text\" AcceptsReturn=\"False\" BorderThickness=\"0\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" MinWidth=\"20\" TextAlignment=\"Right\" TextWrapping=\"NoWrap\" Text=\"{TemplateBinding Value}\" Margin=\"0,0,5,0\" VerticalAlignment=\"Center\">\r\n                                <TextBox.Style>\r\n                                    <Style TargetType=\"TextBox\">\r\n                                        <Setter Property=\"Template\">\r\n                                            <Setter.Value>\r\n                                                <ControlTemplate TargetType=\"TextBox\">\r\n                                                    <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" Padding=\"0\"/>\r\n                                                </ControlTemplate>\r\n                                            </Setter.Value>\r\n                                        </Setter>\r\n                                    </Style>\r\n                                </TextBox.Style>\r\n                            </TextBox>\r\n                        </inputtoolkit:ButtonSpinner>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>        \r\n    </Style>\r\n\r\n    <!--RangeTimePickerPopup Style-->\r\n    <Style TargetType=\"inputtoolkit:RangeTimePickerPopup\" x:Key=\"DefaultRangeTimePickerPopupStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"PopupMinutesInterval\" Value=\"5\" />\r\n        <Setter Property=\"PopupSecondsInterval\" Value=\"0\" />\r\n        <Setter Property=\"Height\" Value=\"300\" />\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\r\n        <Setter Property=\"Background\" Value=\"White\" />\r\n        <Setter Property=\"SliderStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"Slider\">\r\n                    <Setter Property=\"Orientation\" Value=\"Vertical\" />\r\n                    <Setter Property=\"HorizontalAlignment\" Value=\"Center\" />\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"TimeButtonStyle\">\r\n            <Setter.Value>\r\n                <Style\r\n          TargetType=\"Button\">\r\n                    <Setter\r\n            Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate\r\n                TargetType=\"Button\">\r\n                                <TextBlock x:Name=\"label\"\r\n                  Text=\"{TemplateBinding Content}\"\r\n                  Foreground=\"Black\"\r\n                  Margin=\"0\"\r\n                  Padding=\"0\">\r\n                  <VisualStateManager.VisualStateGroups>\r\n                    <!-- common states -->\r\n                    <VisualStateGroup\r\n                            x:Name=\"CommonStates\">\r\n                      <VisualState\r\n                              x:Name=\"Normal\" />\r\n                      <VisualState\r\n                              x:Name=\"Disabled\">\r\n                        <Storyboard>\r\n\t\t\t\t\t\t              <ColorAnimationUsingKeyFrames\r\n                            BeginTime=\"00:00:00\"\r\n                            Duration=\"00:00:00.0010000\"\r\n                            Storyboard.TargetName=\"label\"\r\n                            Storyboard.TargetProperty=\"(TextBlock.Foreground).(SolidColorBrush.Color)\">\r\n\t\t\t\t\t\t\t              <SplineColorKeyFrame\r\n                              KeyTime=\"00:00:00\"\r\n                              Value=\"Gray\" />\r\n\t\t\t\t\t\t              </ColorAnimationUsingKeyFrames>\r\n                        </Storyboard>\r\n                      </VisualState>\r\n                    </VisualStateGroup>\r\n                  </VisualStateManager.VisualStateGroups>\r\n                                </TextBlock>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:RangeTimePickerPopup\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" >\r\n                        <VisualStateManager.VisualStateGroups>\r\n\r\n                            <!-- Common States -->\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n\r\n                            <!-- Contained States -->\r\n                            <VisualStateGroup x:Name=\"ContainedByPickerStates\">\r\n                                <VisualState x:Name=\"Contained\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NotContained\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetName=\"Commit\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetName=\"Cancel\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n\r\n                            <!-- PopupModeStates -->\r\n                            <VisualStateGroup x:Name=\"PopupModeStates\">\r\n                                <VisualState x:Name=\"AllowSecondsAndDesignatorsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"AllowTimeDesignatorsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"AllowSecondsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"HoursAndMinutesOnly\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames \r\n                      Storyboard.TargetName=\"SecondsPanel\" \r\n                      Storyboard.TargetProperty=\"(UIElement.Visibility)\" \r\n                      Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame \r\n                        KeyTime=\"0\" \r\n                        Value=\"Collapsed\" />\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames \r\n                      Storyboard.TargetName=\"SecondsSlider\" \r\n                      Storyboard.TargetProperty=\"(UIElement.Visibility)\" \r\n                      Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame \r\n                        KeyTime=\"0\" \r\n                        Value=\"Collapsed\" />\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n\r\n                        <Grid.Resources>\r\n                            <Style x:Key=\"CommitButton\" TargetType=\"Button\">\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"Padding\" Value=\"3\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"Button\">\r\n                                            <Grid FlowDirection=\"LeftToRight\">\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HighlightDarkColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightestColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Border x:Name=\"Background\" Background=\"White\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\">\r\n                                                    <Grid Margin=\"1\" Background=\"{TemplateBinding Background}\">\r\n                                                        <Border x:Name=\"BackgroundAnimation\" Opacity=\"0\" Background=\"{StaticResource HighlightBrush}\"/>\r\n                                                        <Rectangle x:Name=\"BackgroundGradient\" Fill=\"{StaticResource WhiteColorBrush}\"/>\r\n                                                        <Grid Margin=\"5.125,3.5,3.125,3.5\">\r\n                                                            <Path Height=\"6\" HorizontalAlignment=\"Left\" Margin=\"0.376,0,0,0\" VerticalAlignment=\"Top\" Width=\"6.861\" Stretch=\"Fill\" StrokeDashCap=\"Round\" StrokeEndLineCap=\"Round\" StrokeStartLineCap=\"Round\" StrokeThickness=\"1.5\" Data=\"M6.0443821,10.103714 L7.7407737,20.549189 M21.739996,1.5 L7.6783452,20.497122\">\r\n                                                                <Path.Stroke>\r\n                                                                    <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                                        <GradientStop Color=\"{StaticResource OKButtonIconColor1}\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource OKButtonIconColor2}\" Offset=\"1\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource OKButtonIconColor3}\" Offset=\"0.375\"/>\r\n                                                                    </LinearGradientBrush>\r\n                                                                </Path.Stroke>\r\n                                                                <Path.Fill>\r\n                                                                    <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                                        <GradientStop Color=\"{StaticResource BlackColor}\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n                                                                    </LinearGradientBrush>\r\n                                                                </Path.Fill>\r\n                                                            </Path>\r\n                                                        </Grid>\r\n                                                    </Grid>\r\n                                                </Border>\r\n                                                <Rectangle x:Name=\"DisabledVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Fill=\"{StaticResource WhiteColorBrush}\" RadiusX=\"3\" RadiusY=\"3\"/>\r\n                                                <Rectangle Margin=\"0.936,0.904,1.064,1.096\" x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" RadiusX=\"2\" RadiusY=\"2\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                            <Style x:Key=\"CancelButton\" TargetType=\"Button\">\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"Padding\" Value=\"3\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"Button\">\r\n                                            <Grid FlowDirection=\"LeftToRight\">\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HighlightDarkColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Border x:Name=\"Background\" Background=\"White\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\">\r\n                                                    <Grid Margin=\"1\" Background=\"{TemplateBinding Background}\">\r\n                                                        <Border x:Name=\"BackgroundAnimation\" Opacity=\"0\" Background=\"{StaticResource HighlightBrush}\"/>\r\n                                                        <Rectangle x:Name=\"BackgroundGradient\">\r\n                                                            <Rectangle.Fill>\r\n                                                                <LinearGradientBrush EndPoint=\".7,1\" StartPoint=\".7,0\">\r\n                                                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0\"/>\r\n                                                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0.375\"/>\r\n                                                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0.625\"/>\r\n                                                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n                                                                </LinearGradientBrush>\r\n                                                            </Rectangle.Fill>\r\n                                                        </Rectangle>\r\n                                                        <Grid Margin=\"5.125,3.5,3.125,3.5\">\r\n                                                            <Path Height=\"6\" HorizontalAlignment=\"Left\" Margin=\"-1.25,0,0,0\" VerticalAlignment=\"Top\" Width=\"7.75\" Fill=\"{StaticResource BlackColorBrush}\" Stretch=\"Fill\" StrokeDashCap=\"Round\" StrokeEndLineCap=\"Round\" StrokeStartLineCap=\"Round\" StrokeThickness=\"1.5\" Data=\"M2.5,1.5000099 L20.5,19.50001 M21.739996,1.5 L1.5,19.883999\">\r\n                                                                <Path.Stroke>\r\n                                                                    <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                                        <GradientStop Color=\"{StaticResource CancelButtonIconColor1}\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource CancelButtonIconColor2}\" Offset=\"0.371\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource CancelButtonIconColor3}\" Offset=\"1\"/>\r\n                                                                    </LinearGradientBrush>\r\n                                                                </Path.Stroke>\r\n                                                            </Path>\r\n                                                        </Grid>\r\n                                                    </Grid>\r\n                                                </Border>\r\n                                                <Rectangle x:Name=\"DisabledVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Fill=\"{StaticResource WhiteColorBrush}\" RadiusX=\"3\" RadiusY=\"3\"/>\r\n                                                <Rectangle Margin=\"0.936,0.904,1.064,1.096\" x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" RadiusX=\"2\" RadiusY=\"2\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition Height=\"*\" />\r\n                            <RowDefinition Height=\"Auto\" />\r\n                        </Grid.RowDefinitions>\r\n                        <Grid HorizontalAlignment=\"Center\" Margin=\"6\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                            </Grid.ColumnDefinitions>\r\n                            <Border BorderBrush=\"{StaticResource ThumbBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"7\" Grid.RowSpan=\"2\" Margin=\"-6\" />\r\n                            <Slider x:Name=\"HoursSlider\" Grid.Column=\"0\"  Orientation=\"Vertical\" HorizontalAlignment=\"Center\" Margin=\"5\" Minimum=\"0\" Maximum=\"23\" />\r\n                            <Grid x:Name=\"HoursPanel\" Margin=\"5\" Grid.Column=\"1\"/>\r\n                            <Slider x:Name=\"MinutesSlider\" Grid.Column=\"2\" Orientation=\"Vertical\" HorizontalAlignment=\"Center\" Margin=\"5\" Minimum=\"0\" Maximum=\"59\" />\r\n                            <Grid x:Name=\"MinutesPanel\" Margin=\"5\" Grid.Column=\"3\" />\r\n                            <Slider x:Name=\"SecondsSlider\" Grid.Column=\"4\" Orientation=\"Vertical\" HorizontalAlignment=\"Center\" Margin=\"5\" Minimum=\"0\" Maximum=\"59\" />\r\n                            <Grid x:Name=\"SecondsPanel\" Margin=\"5\" Grid.Column=\"5\" />\r\n                            <StackPanel Grid.Column=\"6\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Right\" Margin=\"12,0,0,0\">\r\n                                <Button x:Name=\"Commit\" Margin=\"0,15,0,0\" HorizontalAlignment=\"Right\" TabIndex=\"2\" Height=\"20\" Width=\"20\" >\r\n                                    <Path Height=\"6\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"6.861\" Stretch=\"Fill\" StrokeDashCap=\"Round\" StrokeEndLineCap=\"Round\" StrokeStartLineCap=\"Round\" StrokeThickness=\"1.5\" Data=\"M6.0443821,10.103714 L7.7407737,20.549189 M21.739996,1.5 L7.6783452,20.497122\">\r\n                                        <Path.Stroke>\r\n                                            <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                <GradientStop Color=\"{StaticResource OKButtonIconColor1}\"/>\r\n                                                <GradientStop Color=\"{StaticResource OKButtonIconColor2}\" Offset=\"1\"/>\r\n                                                <GradientStop Color=\"{StaticResource OKButtonIconColor3}\" Offset=\"0.375\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Path.Stroke>\r\n                                        <Path.Fill>\r\n                                            <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                <GradientStop Color=\"{StaticResource BlackColor}\"/>\r\n                                                <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </Button>\r\n                                <Button x:Name=\"Cancel\" Margin=\"0,15,0,0\" HorizontalAlignment=\"Right\" TabIndex=\"3\" Height=\"20\" Width=\"20\" >\r\n                                    <Path Height=\"6\" HorizontalAlignment=\"Left\" Margin=\"-1.25,0,0,0\" VerticalAlignment=\"Top\" Width=\"7.75\" Fill=\"{StaticResource BlackColorBrush}\" Stretch=\"Fill\" StrokeDashCap=\"Round\" StrokeEndLineCap=\"Round\" StrokeStartLineCap=\"Round\" StrokeThickness=\"1.5\" Data=\"M2.5,1.5000099 L20.5,19.50001 M21.739996,1.5 L1.5,19.883999\">\r\n                                        <Path.Stroke>\r\n                                            <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                <GradientStop Color=\"{StaticResource CancelButtonIconColor1}\"/>\r\n                                                <GradientStop Color=\"{StaticResource CancelButtonIconColor2}\" Offset=\"0.371\"/>\r\n                                                <GradientStop Color=\"{StaticResource CancelButtonIconColor3}\" Offset=\"1\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                </Button>\r\n                            </StackPanel>\r\n                        </Grid>\r\n\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- ListTimePickerPopup Style-->\r\n    <Style TargetType=\"inputtoolkit:ListTimePickerPopup\" x:Key=\"DefaultListTimePickerPopupStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"PopupMinutesInterval\" Value=\"30\" />\r\n        <Setter Property=\"PopupSecondsInterval\" Value=\"0\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:ListTimePickerPopup\">\r\n                    <Grid Background=\"Transparent\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <!-- Common States -->\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <!-- Contained States -->\r\n                            <VisualStateGroup x:Name=\"ContainedByPickerStates\">\r\n                                <VisualState x:Name=\"Contained\">\r\n                                    <Storyboard />\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NotContained\">\r\n                                    <Storyboard />\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <!-- PopupModeStates -->\r\n                            <VisualStateGroup x:Name=\"PopupModeStates\">\r\n                                <VisualState x:Name=\"AllowSecondsAndDesignatorsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"AllowTimeDesignatorsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"AllowSecondsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"HoursAndMinutesOnly\">\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <ListBox x:Name=\"ListBox\" IsTabStop=\"True\" TabIndex=\"1\" MaxHeight=\"130\" DisplayMemberPath=\"Key\" DataContext=\"{TemplateBinding TimeItemsSelection}\" ItemsSource=\"{Binding Items}\" SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\" >\r\n                        </ListBox>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TimePicker Style-->\r\n    <Style TargetType=\"inputtoolkit:TimePicker\" x:Key=\"DefaultTimePickerStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"MinWidth\" Value=\"125\" />\r\n        <Setter Property=\"Height\" Value=\"26\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Background\"      Value=\"Transparent\" />\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:TimePicker\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <!-- common states -->\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\" />\r\n                                <VisualState x:Name=\"MouseOver\" />\r\n                                <VisualState x:Name=\"Disabled\" />\r\n                                <VisualState x:Name=\"Pressed\" />\r\n                            </VisualStateGroup>\r\n                            <!-- focus states -->\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\" />\r\n                                <VisualState x:Name=\"Unfocused\" />\r\n                            </VisualStateGroup>\r\n                            <!-- Popup states -->\r\n                            <VisualStateGroup x:Name=\"PopupStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"PopupOpened\" />\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"PopupClosed\" />\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"PopupOpened\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation  Storyboard.TargetName=\"PopupRoot\" Storyboard.TargetProperty=\"Opacity\" To=\"1.0\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"PopupClosed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"PopupRoot\" Storyboard.TargetProperty=\"Opacity\" To=\"0.0\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.Resources>\r\n                            <ControlTemplate  x:Key=\"PopupButtonTemplate\" TargetType=\"ToggleButton\">\r\n                                <!-- clock icon -->\r\n                                <Grid FlowDirection=\"LeftToRight\" Height=\"20\" Width=\"20\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition  GeneratedDuration=\"00:00:00.1000000\" />\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\" />\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverEllipse\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState  x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedEllipse\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\" />\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Highlight_Copy\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Highlight\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\" />\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\"></VisualState>\r\n                                            <VisualState  x:Name=\"Unfocused\" />\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid>\r\n                                        <Grid.Resources>\r\n                                            <LinearGradientBrush x:Key=\"Dot\" EndPoint=\"1.025,0.434\" StartPoint=\"-0.025,0.566\">\r\n                                                <GradientStop  Color=\"#FFC8C8C8\" />\r\n                                                <GradientStop  Color=\"#FF19191A\" Offset=\"1\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Grid.Resources>\r\n                                        <Ellipse Margin=\"1,1,1,1\" Stroke=\"{StaticResource ThumbBrush}\" StrokeThickness=\"0.75\" x:Name=\"ellipse\" Fill=\"{StaticResource NormalBrush}\"/>\r\n                                        <Ellipse StrokeThickness=\"1\" x:Name=\"Highlight_Copy\" Opacity=\"0\" >\r\n                                            <Ellipse.Stroke>\r\n                                                <SolidColorBrush Color=\"{StaticResource HighlightLightColor}\"/>\r\n                                            </Ellipse.Stroke>\r\n                                        </Ellipse>\r\n                                        <Ellipse Margin=\"1\" StrokeThickness=\"1\" x:Name=\"Highlight\" Opacity=\"0\">\r\n                                            <Ellipse.Stroke>\r\n                                                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                                            </Ellipse.Stroke>\r\n                                        </Ellipse>\r\n                                        <Ellipse Margin=\"1,1,1,1\" Stroke=\"{StaticResource TextBoxBorderBrush}\" StrokeThickness=\"0.75\" x:Name=\"MouseOverEllipse\" Opacity=\"0\">\r\n                                            <Ellipse.Fill>\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray8}\" />\r\n                                            </Ellipse.Fill>\r\n                                        </Ellipse>  \r\n                                        <Ellipse Margin=\"1,1,1,1\" Stroke=\"{StaticResource TextBoxBorderBrush}\" StrokeThickness=\"0.75\" x:Name=\"PressedEllipse\" Opacity=\"0\">\r\n                                            <Ellipse.Fill>\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                                            </Ellipse.Fill>\r\n                                        </Ellipse>\r\n                                        <Path Fill=\"{x:Null}\" Height=\"8.258\" Margin=\"9,6,5,0\" VerticalAlignment=\"Top\" Stretch=\"Fill\" Data=\"M10.108397,6.5404582 L10.108397,10.415268 L13.538931,13.738435\" HorizontalAlignment=\"Left\" Stroke=\"{StaticResource CheckBoxBrush}\"/>\r\n                                        <!-- disabled visual -->\r\n                                        <Rectangle  x:Name=\"DisabledVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Fill=\"{StaticResource WhiteColorBrush}\" RadiusX=\"3\" RadiusY=\"3\" />\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"*\" />\r\n                            <ColumnDefinition Width=\"Auto\" />\r\n                        </Grid.ColumnDefinitions>\r\n                        <inputtoolkit:TimeUpDown x:Name=\"TimeUpDown\" Height=\"Auto\" Background=\"{TemplateBinding Background}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" SpinnerStyle=\"{TemplateBinding SpinnerStyle}\" Minimum=\"{TemplateBinding Minimum}\" Maximum=\"{TemplateBinding Maximum}\" TimeParsers=\"{TemplateBinding TimeParsers}\" Format=\"{TemplateBinding Format}\" Culture=\"{TemplateBinding Culture}\" TimeGlobalizationInfo=\"{TemplateBinding TimeGlobalizationInfo}\" Grid.Column=\"0\" />\r\n                        <ToggleButton x:Name=\"DropDownToggle\" Template=\"{StaticResource PopupButtonTemplate}\" Margin=\"3,0,0,0\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Grid.Column=\"1\" />\r\n                        <Popup x:Name=\"Popup\">\r\n                            <Border x:Name=\"PopupRoot\" Effect=\"{StaticResource DropShadowBrush}\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"1\">\r\n                                <ContentControl x:Name=\"PopupPlaceHolder\" IsTabStop=\"False\"  HorizontalContentAlignment=\"Stretch\"  VerticalContentAlignment=\"Stretch\" />\r\n                            </Border>\r\n                        </Popup>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--RatingItem Style-->\r\n    <Style TargetType=\"inputtoolkit:RatingItem\" x:Key=\"DefaultRatingItemStyle\">\r\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:RatingItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" Width=\"20\">\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition Height=\"20\"/>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                        </Grid.RowDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.2000000\"/>\r\n                                    <VisualTransition From=\"MouseOver\" GeneratedDuration=\"00:00:00.2000000\" To=\"Normal\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRatingItem\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverHighlight\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.325\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(Shape.Fill).(SolidColorBrush.Color)\" Storyboard.TargetName=\"MouseOverHighlight\">\r\n                                            <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"{StaticResource RatingMouseOverColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRatingItem\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.39\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledRatingItem\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledRatingItemBackground\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ReadOnlyRatingItem\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.1000000\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FillStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.1000000\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Empty\"/>\r\n                                <VisualState x:Name=\"Partial\"/>\r\n                                <VisualState x:Name=\"Filled\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderThickness=\"0\"/>\r\n                        <Path x:Name=\"DefaultRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Opacity=\"1\" Stretch=\"Fill\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"0.4\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <System_Windows_Controls_Primitives:LinearClipper ExpandDirection=\"Right\" RatioVisible=\"{TemplateBinding DisplayValue}\">\r\n                            <Path Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"{TemplateBinding Foreground}\" Opacity=\"1\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        </System_Windows_Controls_Primitives:LinearClipper>\r\n                        <Path x:Name=\"MouseOverRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"{TemplateBinding Foreground}\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <Path x:Name=\"MouseOverHighlight\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\">\r\n                            <Path.Fill>\r\n                                <SolidColorBrush Color=\"{StaticResource RatingMouseOverColor}\"/>\r\n                            </Path.Fill>\r\n                        </Path>\r\n                        <Path x:Name=\"PressedRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\" Fill=\"{StaticResource TransparentDarkDarkDarkBrush}\"/>\r\n                        <Path x:Name=\"FocusRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{StaticResource RatingMouseOverBrush}\" StrokeThickness=\"0.01\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <Path x:Name=\"ReadOnlyRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"#18FFFFFF\" IsHitTestVisible=\"False\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"0.4\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <Path x:Name=\"DisabledRatingItemBackground\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"Gainsboro\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <System_Windows_Controls_Primitives:LinearClipper x:Name=\"DisabledRatingItem\" ExpandDirection=\"Right\" Opacity=\"0\" RatioVisible=\"{TemplateBinding DisplayValue}\">\r\n                            <Path Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"#FF5E5E5E\" Opacity=\"1\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        </System_Windows_Controls_Primitives:LinearClipper>\r\n                        <ContentPresenter x:Name=\"Content\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" HorizontalAlignment=\"Left\" Margin=\"{TemplateBinding Padding}\" Grid.Row=\"1\" Grid.RowSpan=\"2\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Rating Style-->\r\n    <Style TargetType=\"inputtoolkit:Rating\" x:Key=\"DefaultRatingStyle\">     \r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource WhiteBrush}\"/>  \r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource RatingStarsBrush}\"/>\r\n        <Setter Property=\"ItemsPanel\">\r\n            <Setter.Value>\r\n                <ItemsPanelTemplate>\r\n                    <StackPanel Orientation=\"Horizontal\"/>\r\n                </ItemsPanelTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:Rating\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ReadOnlyVisualElement\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.03\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\r\n                            <ItemsPresenter/>\r\n                        </Border>\r\n                        <Border x:Name=\"ReadOnlyVisualElement\" BorderBrush=\"{StaticResource ReadOnlyBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource ReadOnlyBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"{StaticResource DisabledControlBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource DisabledControlBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" RadiusY=\"1\" RadiusX=\"1\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    \r\n    <!--ValidationTooltip-->\r\n    <ControlTemplate x:Key=\"ValidationToolTipTemplate2\">\r\n    \t<Grid x:Name=\"Root\" Margin=\"5,0\" Opacity=\"0\" RenderTransformOrigin=\"0,0\">\r\n    \t\t<Grid.RenderTransform>\r\n    \t\t\t<TranslateTransform x:Name=\"xform\" X=\"-25\"/>\r\n    \t\t</Grid.RenderTransform>\r\n    \t\t<VisualStateManager.VisualStateGroups>\r\n    \t\t\t<VisualStateGroup x:Name=\"OpenStates\">\r\n    \t\t\t\t<VisualStateGroup.Transitions>\r\n    \t\t\t\t\t<VisualTransition GeneratedDuration=\"0\"/>\r\n    \t\t\t\t\t<VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"Open\">\r\n    \t\t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t\t<DoubleAnimation Duration=\"0:0:0.2\" To=\"0\" Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"xform\">\r\n    \t\t\t\t\t\t\t\t<DoubleAnimation.EasingFunction>\r\n    \t\t\t\t\t\t\t\t\t<BackEase Amplitude=\".3\" EasingMode=\"EaseOut\"/>\r\n    \t\t\t\t\t\t\t\t</DoubleAnimation.EasingFunction>\r\n    \t\t\t\t\t\t\t</DoubleAnimation>\r\n    \t\t\t\t\t\t\t<DoubleAnimation Duration=\"0:0:0.2\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n    \t\t\t\t\t\t</Storyboard>\r\n    \t\t\t\t\t</VisualTransition>\r\n    \t\t\t\t</VisualStateGroup.Transitions>\r\n    \t\t\t\t<VisualState x:Name=\"Closed\">\r\n    \t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t<DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n    \t\t\t\t\t</Storyboard>\r\n    \t\t\t\t</VisualState>\r\n    \t\t\t\t<VisualState x:Name=\"Open\">\r\n    \t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t<DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"xform\"/>\r\n    \t\t\t\t\t\t<DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n    \t\t\t\t\t</Storyboard>\r\n    \t\t\t\t</VisualState>\r\n    \t\t\t</VisualStateGroup>\r\n    \t\t</VisualStateManager.VisualStateGroups>\r\n    \t\t<Border Background=\"#052A2E31\" CornerRadius=\"5\" Margin=\"4,4,-4,-4\"/>\r\n    \t\t<Border Background=\"#152A2E31\" CornerRadius=\"4\" Margin=\"3,3,-3,-3\"/>\r\n    \t\t<Border Background=\"#252A2E31\" CornerRadius=\"3\" Margin=\"2,2,-2,-2\"/>\r\n    \t\t<Border Background=\"#352A2E31\" CornerRadius=\"2\" Margin=\"1,1,-1,-1\"/>\r\n    \t\t<Border Background=\"#FFDC000C\" CornerRadius=\"2\"/>\r\n    \t\t<Border CornerRadius=\"2\">\r\n    \t\t\t<TextBlock Foreground=\"White\" MaxWidth=\"250\" Margin=\"8,4,8,4\" TextWrapping=\"Wrap\" Text=\"{Binding (Validation.Errors)[0].ErrorContent}\" UseLayoutRounding=\"false\"/>\r\n    \t\t</Border>\r\n    \t</Grid>\r\n    </ControlTemplate>\r\n\r\n    <!-- NumericUpDownTextBox Style -->\r\n    <Style x:Key=\"NumericUpDownTextBoxStyle\" TargetType=\"TextBox\">\r\n    \t<Setter Property=\"BorderThickness\" Value=\"1\"/>    \r\n    \t<Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n    \t\t<Setter.Value>\r\n    \t\t\t<ControlTemplate TargetType=\"TextBox\">\r\n    \t\t\t\t<Grid x:Name=\"RootElement\">\r\n    \t\t\t\t\t<VisualStateManager.VisualStateGroups>\r\n    \t\t\t\t\t\t<VisualStateGroup x:Name=\"CommonStates\">\r\n    \t\t\t\t\t\t\t<VisualState x:Name=\"Normal\"/>\r\n    \t\t\t\t\t\t\t<VisualState x:Name=\"MouseOver\"/>\r\n    \t\t\t\t\t\t\t<VisualState x:Name=\"Disabled\">\r\n    \t\t\t\t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t\t\t\t<DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n    \t\t\t\t\t\t\t\t</Storyboard>\r\n    \t\t\t\t\t\t\t</VisualState>\r\n    \t\t\t\t\t\t\t<VisualState x:Name=\"ReadOnly\">\r\n    \t\t\t\t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t\t\t\t<DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ReadOnlyVisualElement\"/>\r\n    \t\t\t\t\t\t\t\t</Storyboard>\r\n    \t\t\t\t\t\t\t</VisualState>\r\n    \t\t\t\t\t\t</VisualStateGroup>\r\n    \t\t\t\t\t\t<VisualStateGroup x:Name=\"FocusStates\">\r\n    \t\t\t\t\t\t\t<VisualState x:Name=\"Focused\">\r\n    \t\t\t\t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t\t\t\t<DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n    \t\t\t\t\t\t\t\t</Storyboard>\r\n    \t\t\t\t\t\t\t</VisualState>\r\n    \t\t\t\t\t\t\t<VisualState x:Name=\"Unfocused\">\r\n    \t\t\t\t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t\t\t\t<DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n    \t\t\t\t\t\t\t\t</Storyboard>\r\n    \t\t\t\t\t\t\t</VisualState>\r\n    \t\t\t\t\t\t</VisualStateGroup>\r\n    \t\t\t\t\t\t<VisualStateGroup x:Name=\"ValidationStates\">\r\n    \t\t\t\t\t\t\t<VisualState x:Name=\"Valid\"/>\r\n    \t\t\t\t\t\t\t<VisualState x:Name=\"InvalidUnfocused\">\r\n    \t\t\t\t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n    \t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\">\r\n    \t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame.Value>\r\n    \t\t\t\t\t\t\t\t\t\t\t\t<Visibility>Visible</Visibility>\r\n    \t\t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame.Value>\r\n    \t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame>\r\n    \t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\r\n    \t\t\t\t\t\t\t\t</Storyboard>\r\n    \t\t\t\t\t\t\t</VisualState>\r\n    \t\t\t\t\t\t\t<VisualState x:Name=\"InvalidFocused\">\r\n    \t\t\t\t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n    \t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\">\r\n    \t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame.Value>\r\n    \t\t\t\t\t\t\t\t\t\t\t\t<Visibility>Visible</Visibility>\r\n    \t\t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame.Value>\r\n    \t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame>\r\n    \t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\r\n    \t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n    \t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\">\r\n    \t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame.Value>\r\n    \t\t\t\t\t\t\t\t\t\t\t\t<System:Boolean>True</System:Boolean>\r\n    \t\t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame.Value>\r\n    \t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame>\r\n    \t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\r\n    \t\t\t\t\t\t\t\t</Storyboard>\r\n    \t\t\t\t\t\t\t</VisualState>\r\n    \t\t\t\t\t\t</VisualStateGroup>\r\n    \t\t\t\t\t</VisualStateManager.VisualStateGroups>\r\n    \t\t\t\t\t<Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"1\" Opacity=\"1\">\r\n    \t\t\t\t\t\t<Grid>\r\n    \t\t\t\t\t\t\t<Border x:Name=\"ReadOnlyVisualElement\" Background=\"#5EC9C9C9\" Opacity=\"0\"/>\r\n    \t\t\t\t\t\t\t<Border x:Name=\"MouseOverBorder\" BorderBrush=\"{x:Null}\" BorderThickness=\"1\">\r\n    \t\t\t\t\t\t\t\t<ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" IsTabStop=\"False\" Padding=\"{TemplateBinding Padding}\"/>\r\n    \t\t\t\t\t\t\t</Border>\r\n    \t\t\t\t\t\t</Grid>\r\n    \t\t\t\t\t</Border>\r\n    \t\t\t\t\t<Border x:Name=\"DisabledVisualElement\" BorderBrush=\"#A5F7F7F7\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"#A5F7F7F7\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n    \t\t\t\t\t<Border x:Name=\"FocusVisualElement\" BorderBrush=\"#FF6DBDD1\" BorderThickness=\"{TemplateBinding BorderThickness}\" IsHitTestVisible=\"False\" Margin=\"1\" Opacity=\"0\"/>\r\n    \t\t\t\t\t<Border x:Name=\"ValidationErrorElement\" BorderBrush=\"#FFDB000C\" BorderThickness=\"1\" CornerRadius=\"1\" Visibility=\"Collapsed\">\r\n    \t\t\t\t\t\t<ToolTipService.ToolTip>\r\n    \t\t\t\t\t\t\t<ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate2}\">\r\n    \t\t\t\t\t\t\t\t<ToolTip.Triggers>\r\n    \t\t\t\t\t\t\t\t\t<EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n    \t\t\t\t\t\t\t\t\t\t<BeginStoryboard>\r\n    \t\t\t\t\t\t\t\t\t\t\t<Storyboard>\r\n    \t\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n    \t\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\">\r\n    \t\t\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame.Value>\r\n    \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<System:Boolean>true</System:Boolean>\r\n    \t\t\t\t\t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame.Value>\r\n    \t\t\t\t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame>\r\n    \t\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\r\n    \t\t\t\t\t\t\t\t\t\t\t</Storyboard>\r\n    \t\t\t\t\t\t\t\t\t\t</BeginStoryboard>\r\n    \t\t\t\t\t\t\t\t\t</EventTrigger>\r\n    \t\t\t\t\t\t\t\t</ToolTip.Triggers>\r\n    \t\t\t\t\t\t\t</ToolTip>\r\n    \t\t\t\t\t\t</ToolTipService.ToolTip>\r\n    \t\t\t\t\t\t<Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n    \t\t\t\t\t\t\t<Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"#FFDC000C\" Margin=\"1,3,0,0\"/>\r\n    \t\t\t\t\t\t\t<Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"#ffffff\" Margin=\"1,3,0,0\"/>\r\n    \t\t\t\t\t\t</Grid>\r\n    \t\t\t\t\t</Border>\r\n    \t\t\t\t</Grid>\r\n    \t\t\t</ControlTemplate>\r\n    \t\t</Setter.Value>\r\n    \t</Setter>\r\n    </Style>\r\n\r\n    <!-- NumericUpDown Style -->\r\n    <Style TargetType=\"inputtoolkit:NumericUpDown\" x:Key=\"DefaultNumericUpDownStyle\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"MinHeight\" Value=\"26\" />\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource WhiteColor}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:NumericUpDown\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\" />\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\" />\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualStateGroup.Transitions>\r\n\r\n                                </VisualStateGroup.Transitions>\r\n\r\n                                <VisualState x:Name=\"Valid\" />\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid>\r\n                            <inputtoolkit:ButtonSpinner HorizontalContentAlignment=\"Stretch\" VerticalContentAlignment=\"Stretch\" MinWidth=\"35\" x:Name=\"Spinner\" BorderBrush=\"{StaticResource GrayBrush4}\" >\r\n                                <TextBox BorderThickness=\"0\" FontFamily=\"{TemplateBinding FontFamily}\" FontSize=\"{TemplateBinding FontSize}\" FontStretch=\"{TemplateBinding FontStretch}\" FontStyle=\"{TemplateBinding FontStyle}\" FontWeight=\"{TemplateBinding FontWeight}\" Foreground=\"{TemplateBinding Foreground}\" MinWidth=\"20\" Height=\"Auto\" x:Name=\"Text\" AcceptsReturn=\"False\" Text=\"{TemplateBinding Value}\" TextAlignment=\"Right\" TextWrapping=\"NoWrap\" Margin=\"0\" VerticalAlignment=\"Center\" BorderBrush=\"{x:Null}\" Style=\"{StaticResource NumericUpDownTextBoxStyle}\" />\r\n                            </inputtoolkit:ButtonSpinner>\r\n                        </Grid>\r\n                        <Border x:Name=\"DisabledVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Background=\"{StaticResource WhiteBrush}\" />\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\" />\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"-1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"-1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n\r\n                    </Grid>\r\n\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n\r\n    </Style>\r\n\r\n    <!-- Expander Style-->\r\n    <Style TargetType=\"toolkit:Expander\" x:Key=\"DefaultExpanderStyle\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"50\"/>           \r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"toolkit:Expander\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <LinearGradientBrush x:Key=\"ExpanderArrowFill\" EndPoint=\"0,1\" StartPoint=\"0,0\">\r\n                                <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"0\"/>\r\n                                <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"0.5\"/>\r\n                                <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"1\"/>\r\n                            </LinearGradientBrush>\r\n                            <LinearGradientBrush x:Key=\"ExpanderArrowHoverFill\" EndPoint=\"0,1\" StartPoint=\"0,0\">\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0\"/>\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0.3\"/>\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"1\"/>\r\n                            </LinearGradientBrush>\r\n                            <LinearGradientBrush x:Key=\"ExpanderArrowPressedFill\" EndPoint=\"0,1\" StartPoint=\"0,0\">\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0\"/>\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0.2\"/>\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"1\"/>\r\n                            </LinearGradientBrush>\r\n                            <ControlTemplate x:Key=\"ExpanderDownHeaderTemplate\" TargetType=\"ToggleButton\">\r\n                                <Grid Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Data\" Storyboard.TargetName=\"arrow\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"M 1,4.5 L 4.5,1 L 8,4.5\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                        <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                                    </ColorAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Grid Background=\"Transparent\">\r\n                                            <Grid.ColumnDefinitions>\r\n                                                <ColumnDefinition Width=\"19\"/>\r\n                                                <ColumnDefinition Width=\"*\"/>\r\n                                            </Grid.ColumnDefinitions>\r\n                                            <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                                <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                    <Rectangle.Stroke>\r\n                                                        <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                    </Rectangle.Stroke>\r\n                                                </Rectangle>\r\n                                                <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\"/>\r\n                                            </Grid>\r\n                                            <ContentControl x:Name=\"contentControl\" Grid.Column=\"1\" Margin=\"0,2,0,6\">\r\n                                                <ContentControl.Foreground>\r\n                                                    <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                                </ContentControl.Foreground>\r\n\r\n                                                <ContentPresenter x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\"  HorizontalAlignment=\"Stretch\" Margin=\"4,0,0,0\" VerticalAlignment=\"Center\"/>\r\n                                            </ContentControl>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Path x:Name=\"path\" Grid.ColumnSpan=\"1\" Data=\"M1.5819016,27.355097 L115.98849,27.355097\" Height=\"1\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Bottom\" d:LayoutOverrides=\"HorizontalAlignment\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"ExpanderUpHeaderTemplate\" TargetType=\"ToggleButton\">\r\n                                <Grid Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Data\" Storyboard.TargetName=\"arrow\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"M 1,4.5 L 4.5,1 L 8,4.5\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                        <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                                    </ColorAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Grid Background=\"Transparent\">\r\n                                            <Grid.ColumnDefinitions>\r\n                                                <ColumnDefinition Width=\"19\"/>\r\n                                                <ColumnDefinition Width=\"*\"/>\r\n                                            </Grid.ColumnDefinitions>\r\n                                            <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                                <Grid.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <TransformGroup.Children>\r\n                                                            <TransformCollection>\r\n                                                                <RotateTransform Angle=\"180\" CenterY=\"9.5\" CenterX=\"9.5\"/>\r\n                                                            </TransformCollection>\r\n                                                        </TransformGroup.Children>\r\n                                                    </TransformGroup>\r\n                                                </Grid.RenderTransform>\r\n                                                <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                    <Rectangle.Stroke>\r\n                                                        <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                    </Rectangle.Stroke>\r\n                                                </Rectangle>\r\n                                                <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\"/>\r\n\r\n                                            </Grid>\r\n                                            <ContentControl x:Name=\"contentControl\" Grid.Column=\"1\" Margin=\"0,2,0,6\">\r\n                                                <ContentControl.Foreground>\r\n                                                    <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                                </ContentControl.Foreground>\r\n                                                <ContentPresenter x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Grid.Column=\"1\" HorizontalAlignment=\"Stretch\" Margin=\"4,0,0,0\" VerticalAlignment=\"Center\"/>\r\n                                            </ContentControl>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Path x:Name=\"path\" Grid.ColumnSpan=\"1\" Data=\"M1.5819016,27.355097 L115.98849,27.355097\" Height=\"1\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Bottom\" d:LayoutOverrides=\"HorizontalAlignment\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"ExpanderLeftHeaderTemplate\" TargetType=\"ToggleButton\">\r\n                                <Grid Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Data\" Storyboard.TargetName=\"arrow\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"M 1,4.5 L 4.5,1 L 8,4.5\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                        <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                                    </ColorAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Grid Background=\"Transparent\">\r\n                                            <Grid.RowDefinitions>\r\n                                                <RowDefinition Height=\"19\"/>\r\n                                                <RowDefinition Height=\"*\"/>\r\n                                            </Grid.RowDefinitions>\r\n                                            <Grid HorizontalAlignment=\"Right\" VerticalAlignment=\"Top\">\r\n                                                <Grid.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <TransformGroup.Children>\r\n                                                            <TransformCollection>\r\n                                                                <RotateTransform Angle=\"90\" CenterY=\"9.5\" CenterX=\"9.5\"/>\r\n                                                            </TransformCollection>\r\n                                                        </TransformGroup.Children>\r\n                                                    </TransformGroup>\r\n                                                </Grid.RenderTransform>\r\n                                                <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                                    <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                        <Rectangle.Stroke>\r\n                                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                        </Rectangle.Stroke>\r\n                                                    </Rectangle>\r\n                                                    <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\"/>\r\n                                                </Grid>\r\n                                            </Grid>\r\n                                            <ContentControl x:Name=\"contentControl\" Grid.Row=\"1\" Margin=\"10,4,0,0\">\r\n                                                <ContentControl.Foreground>\r\n                                                    <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                                </ContentControl.Foreground>\r\n                                                <ContentPresenter x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Center\" Grid.Row=\"1\" VerticalAlignment=\"Stretch\"/>\r\n                                            </ContentControl>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Path Data=\"M122.37069,0.14655173 L122.37069,49.680588\" HorizontalAlignment=\"Left\" Margin=\"0\" Stretch=\"Fill\" StrokeThickness=\"1\" Grid.Row=\"0\" UseLayoutRounding=\"False\" Width=\"1\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"ExpanderRightHeaderTemplate\" TargetType=\"ToggleButton\">\r\n                                <Grid Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Data\" Storyboard.TargetName=\"arrow\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"M 1,4.5 L 4.5,1 L 8,4.5\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                        <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                                    </ColorAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Grid Background=\"Transparent\">\r\n                                            <Grid.RowDefinitions>\r\n                                                <RowDefinition Height=\"19\"/>\r\n                                                <RowDefinition Height=\"*\"/>\r\n                                            </Grid.RowDefinitions>\r\n                                            <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n                                                <Grid.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <TransformGroup.Children>\r\n                                                            <TransformCollection>\r\n                                                                <RotateTransform Angle=\"270\" CenterY=\"9.5\" CenterX=\"9.5\"/>\r\n                                                            </TransformCollection>\r\n                                                        </TransformGroup.Children>\r\n                                                    </TransformGroup>\r\n                                                </Grid.RenderTransform>\r\n                                                <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                                    <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                        <Rectangle.Stroke>\r\n                                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                        </Rectangle.Stroke>\r\n                                                    </Rectangle>\r\n                                                    <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\"/>\r\n                                                </Grid>\r\n                                            </Grid>\r\n                                            <ContentControl x:Name=\"contentControl\" Grid.Row=\"1\" Margin=\"0,4,10,0\">\r\n                                                <ContentControl.Foreground>\r\n                                                    <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                                </ContentControl.Foreground>\r\n                                                <ContentPresenter x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Center\"  Grid.Row=\"1\" VerticalAlignment=\"Stretch\"/>\r\n                                            </ContentControl>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Path Data=\"M122.37069,0.14655173 L122.37069,49.680588\" HorizontalAlignment=\"Right\" Margin=\"0\" Stretch=\"Fill\" StrokeThickness=\"1\" UseLayoutRounding=\"False\" Width=\"1\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <Grid.Background>\r\n                            <StaticResource ResourceKey=\"WhiteBrush\"/>\r\n                        </Grid.Background>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpansionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Collapsed\"/>\r\n                                <VisualState x:Name=\"Expanded\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpandDirectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"ExpandDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandUp\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Template\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ExpanderUpHeaderTemplate}\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandLeft\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Template\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ExpanderLeftHeaderTemplate}\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandRight\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Template\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ExpanderRightHeaderTemplate}\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\">\r\n                            <Grid>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition x:Name=\"rd0\" Height=\"Auto\"/>\r\n                                    <RowDefinition x:Name=\"rd1\" Height=\"Auto\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition x:Name=\"cd0\" Width=\"Auto\"/>\r\n                                    <ColumnDefinition x:Name=\"cd1\" Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <ToggleButton x:Name=\"ExpanderButton\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\" Grid.Column=\"0\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsChecked=\"{TemplateBinding IsExpanded}\" Margin=\"1\" MinWidth=\"0\" MinHeight=\"0\" Padding=\"{TemplateBinding Padding}\" Grid.Row=\"0\" Template=\"{StaticResource ExpanderDownHeaderTemplate}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                <ContentControl x:Name=\"ExpandSite\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Grid.Column=\"0\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Grid.Row=\"1\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"3\" IsHitTestVisible=\"false\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource GrayBrush2}\" BorderThickness=\"1\" CornerRadius=\"3\" IsHitTestVisible=\"false\" Visibility=\"Collapsed\"/>                            \r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>        \r\n    </Style>\r\n\r\n    <!-- DomainUpDown Style -->\r\n    <Style TargetType=\"inputtoolkit:DomainUpDown\" x:Key=\"DefaultDomainUpDownStyle\">\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Background\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource WhiteColor}\" />\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Padding\" Value=\"0\" />\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:DomainUpDown\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\" />\r\n                                <VisualState x:Name=\"Pressed\" />\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.7\" />\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\" >\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\" />\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"InteractionModeStates\">\r\n                                <VisualState x:Name=\"Edit\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Text\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\"1\" />\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Visualization\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\"0\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Display\" />\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"DomainStates\">\r\n                                <VisualState x:Name=\"ValidDomain\" />\r\n                                <VisualState x:Name=\"InvalidDomain\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetName=\"ErrorVisualElement\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\" />\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsOpen\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid MinHeight=\"20\">\r\n\r\n                            <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Opacity=\"1\" Grid.ColumnSpan=\"2\" />\r\n                            <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                            <Rectangle x:Name=\"MouseOverInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                            <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource TextBoxMouseOverBorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" IsHitTestVisible=\"False\" Opacity=\"0\" Grid.ColumnSpan=\"2\"/>\r\n\r\n                            <inputtoolkit:ButtonSpinner Grid.Column=\"1\" x:Name=\"Spinner\" VerticalAlignment=\"Stretch\" IsTabStop=\"False\" TabIndex=\"3\" VerticalContentAlignment=\"Stretch\" Background=\"{x:Null}\" BorderBrush=\"{x:Null}\" BorderThickness=\"0\">\r\n                                <Grid>\r\n                                    <ContentControl x:Name=\"Visualization\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"0\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" IsHitTestVisible=\"False\" Opacity=\"1\" FontFamily=\"{TemplateBinding FontFamily}\" FontSize=\"{TemplateBinding FontSize}\" FontStretch=\"{TemplateBinding FontStretch}\" Foreground=\"{TemplateBinding Foreground}\" IsTabStop=\"False\" Padding=\"0\" Content=\"{TemplateBinding Value}\" ContentTemplate=\"{TemplateBinding ItemTemplate}\" />\r\n                                    <TextBox x:Name=\"Text\" Margin=\"0\" HorizontalContentAlignment=\"Left\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" IsHitTestVisible=\"False\" BorderThickness=\"0\" FontFamily=\"{TemplateBinding FontFamily}\" FontSize=\"{TemplateBinding FontSize}\" FontStretch=\"{TemplateBinding FontStretch}\" Foreground=\"{TemplateBinding Foreground}\" IsTabStop=\"True\" Padding=\"0\" AcceptsReturn=\"False\" TextWrapping=\"NoWrap\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\">\r\n                                        <TextBox.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource WhiteColor}\"/>\r\n                                        </TextBox.Background>\r\n                                        <TextBox.Style>\r\n                                            <Style TargetType=\"TextBox\">\r\n                                                <Setter Property=\"Template\">\r\n                                                    <Setter.Value>\r\n                                                        <ControlTemplate TargetType=\"TextBox\">\r\n                                                            <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" Padding=\"0\" />\r\n                                                        </ControlTemplate>\r\n                                                    </Setter.Value>\r\n                                                </Setter>\r\n                                            </Style>\r\n                                        </TextBox.Style>\r\n                                    </TextBox>\r\n                                </Grid>\r\n                            </inputtoolkit:ButtonSpinner>\r\n                        </Grid>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"1\" IsHitTestVisible=\"false\" Opacity=\"0\" Grid.ColumnSpan=\"2\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsHitTestVisible\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <System:Boolean>true</System:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Height=\"12\" HorizontalAlignment=\"Right\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\" Background=\"Transparent\">\r\n                                <Path Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\" Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" />\r\n                                <Path Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\" Data=\"M 0,0 L2,0 L 8,6 L8,8\" />\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"ErrorVisualElement\" IsHitTestVisible=\"False\" BorderBrush=\"Red\" BorderThickness=\"2\" Margin=\"-2\" Visibility=\"Collapsed\" Grid.ColumnSpan=\"2\" />\r\n                        <Border x:Name=\"DisabledBorder\" IsHitTestVisible=\"False\" BorderBrush=\"{StaticResource WhiteBrush}\" BorderThickness=\"1\" Background=\"{StaticResource WhiteBrush}\" Opacity=\"0\" Grid.ColumnSpan=\"2\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DescriptionViewer-->\r\n    <Style TargetType=\"sdk:DescriptionViewer\" x:Key=\"DefaultDescriptionViewerStyle\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"GlyphTemplate\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Button\">\r\n                    <Grid Height=\"15\" Width=\"15\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Icon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Icon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"Icon\" HorizontalAlignment=\"Center\" Height=\"13\" Opacity=\"0.6\" VerticalAlignment=\"Center\" Width=\"13\">\r\n                            <Ellipse Fill=\"White\" Stroke=\"DarkGray\">\r\n                            </Ellipse>\r\n                            <StackPanel HorizontalAlignment=\"Center\" Height=\"Auto\" VerticalAlignment=\"Center\" Width=\"3\">\r\n                                <Path Data=\"M0.5,0.60000002 C0.5,0.54477155 0.54477155,0.5 0.60000002,0.5 L2.4000001,0.5 C2.4552286,0.5 2.5,0.54477155 2.5,0.60000002 L2.5,1.6215254 C2.5,1.6767539 2.4552286,1.7215254 2.4000001,1.7215254 L0.60000002,1.7215254 C0.54477155,1.7215254 0.5,1.6767539 0.5,1.6215254 z M0.50000548,3.3151906 C0.50000548,3.2599623 0.54477704,3.2151906 0.60000551,3.2151906 L2.4000056,3.2151906 C2.4552341,3.2151906 2.5000055,3.2599623 2.5000055,3.3151906 L2.5000055,8.4000092 C2.5000055,8.4552374 2.4552341,8.5000095 2.4000056,8.5000095 L0.60000551,8.5000095 C0.54477704,8.5000095 0.50000548,8.4552374 0.50000548,8.4000092 z\" HorizontalAlignment=\"Center\" Height=\"9\" Margin=\"0,0,0,1\" Stretch=\"Fill\" Stroke=\"#00000000\"  Fill=\"DarkGray\" VerticalAlignment=\"Top\" Width=\"3\">\r\n                                </Path>\r\n                            </StackPanel>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"ToolTipStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ToolTip\">\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n                    <Setter Property=\"Padding\" Value=\"3,0,3,0\"/>\r\n                    <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                    <Setter Property=\"BorderBrush\" Value=\"{StaticResource ItemSelectedBrush}\"/>\r\n                    <Setter Property=\"MaxWidth\" Value=\"250\"/>\r\n                    <Setter Property=\"Margin\" Value=\"5,-3,5,0\"/>\r\n                    <Setter Property=\"ContentTemplate\">\r\n                        <Setter.Value>\r\n                            <DataTemplate>\r\n                                <TextBlock TextWrapping=\"Wrap\" Text=\"{Binding}\"/>\r\n                            </DataTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"ToolTip\">\r\n                                <Border x:Name=\"Root\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"#FF000000\" Effect=\"{StaticResource DropShadowBrush}\" Opacity=\"0\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"OpenStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition From=\"Open\" GeneratedDuration=\"0:0:0.3\" To=\"Closed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Closed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.4\" Value=\"0\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Open\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.3\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Border.Resources>\r\n                                            <Storyboard x:Key=\"Visible State\"/>\r\n                                            <Storyboard x:Key=\"Normal State\"/>\r\n                                        </Border.Resources>\r\n                                        <Border.Background>\r\n                                            <StaticResource ResourceKey=\"BlackBrush\"/>\r\n                                        </Border.Background>\r\n                                        <ContentPresenter Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                                    </Border>\r\n                                </Border>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                    <Setter Property=\"Foreground\" Value=\"{StaticResource WhiteBrush}\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"sdk:DescriptionViewer\">\r\n                    <StackPanel Orientation=\"Horizontal\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"DescriptionStates\">\r\n                                <VisualState x:Name=\"NoDescription\"/>\r\n                                <VisualState x:Name=\"HasDescription\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"DescriptionContent\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Height=\"{TemplateBinding Height}\" Padding=\"{TemplateBinding Padding}\" Width=\"{TemplateBinding Width}\">\r\n                            <Button x:Name=\"DescriptionContent\" BorderBrush=\"#FFFFFFFF\" BorderThickness=\"1\" Background=\"#00000000\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Padding=\"1\" Template=\"{TemplateBinding GlyphTemplate}\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                <ToolTipService.ToolTip>\r\n                                    <ToolTip Content=\"{TemplateBinding Description}\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Style=\"{TemplateBinding ToolTipStyle}\"/>\r\n                                </ToolTipService.ToolTip>\r\n                            </Button>\r\n                        </Border>\r\n                    </StackPanel>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    \r\n    <!-- DataForm Style-->\r\n    <Style TargetType=\"dataformtoolkit:DataForm\" x:Key=\"DefaultDataFormStyle\">\r\n        <Setter Property=\"AutoCommit\" Value=\"True\"/>\r\n        <Setter Property=\"AutoGenerateFields\" Value=\"True\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"DescriptionViewerPosition\" Value=\"Auto\"/>\r\n        <Setter Property=\"LabelPosition\" Value=\"Auto\"/>\r\n        <Setter Property=\"HeaderVisibility\" Value=\"Visible\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"dataformtoolkit:DataForm\">\r\n                    <Grid dataformtoolkit:DataField.IsFieldGroup=\"True\">\r\n                        <Grid.Resources>\r\n                            <Style x:Key=\"ButtonGeneric\" TargetType=\"Button\">\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource TransparentBlackBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"Padding\" Value=\"1\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"Button\">\r\n                                            <Grid>\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Color)\" Storyboard.TargetName=\"OuterBtnBorder\"/>\r\n                                                                <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray10}\" Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Color)\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray10}\" Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Color)\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                                <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray10}\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"0.3\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"contentPresenter\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Border x:Name=\"OuterBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\">\r\n                                                    <Border x:Name=\"InnerBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource TransparentWhiteBrush}\" CornerRadius=\"2\">\r\n                                                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Center\" Height=\"Auto\" VerticalAlignment=\"Center\" Width=\"Auto\"/>\r\n                                                    </Border>\r\n                                                </Border>\r\n                                                <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"2\" Margin=\"1\" Opacity=\"0\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                            <Style x:Key=\"CustomScrollViewerStyle\" TargetType=\"ScrollViewer\">\r\n                                <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n                                <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"0,1\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>                                    \r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"ScrollViewer\">\r\n                                            <Grid>\r\n                                                <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Margin=\"0,-1\" Opacity=\"0.2\" Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\">\r\n                                                    <Border.OpacityMask>\r\n                                                        <LinearGradientBrush EndPoint=\"1.07,0.5\" StartPoint=\"-0.07,0.5\">\r\n                                                            <GradientStop Color=\"{StaticResource BlackColor}\"/>\r\n                                                            <GradientStop Color=\"{StaticResource BlackColor}\" Offset=\"0.5\"/>\r\n                                                            <GradientStop Color=\"{StaticResource BlackColor}\" Offset=\"1\"/>\r\n                                                        </LinearGradientBrush>\r\n                                                    </Border.OpacityMask>\r\n                                                </Border>\r\n                                                <Grid Background=\"{TemplateBinding Background}\">\r\n                                                    <Grid.RowDefinitions>\r\n                                                        <RowDefinition Height=\"*\"/>\r\n                                                        <RowDefinition Height=\"Auto\"/>\r\n                                                    </Grid.RowDefinitions>\r\n                                                    <Grid.ColumnDefinitions>\r\n                                                        <ColumnDefinition Width=\"*\"/>\r\n                                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                                    </Grid.ColumnDefinitions>\r\n                                                    <ScrollContentPresenter x:Name=\"ScrollContentPresenter\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                                                    <Rectangle Grid.Column=\"1\" Fill=\"{StaticResource GrayBrush1}\" Grid.Row=\"1\"/>\r\n                                                    <ScrollBar x:Name=\"VerticalScrollBar\" Grid.Column=\"1\" IsTabStop=\"False\" Maximum=\"{TemplateBinding ScrollableHeight}\" Margin=\"0,-1\" Minimum=\"0\" Orientation=\"Vertical\" Grid.Row=\"0\" Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\" Value=\"{TemplateBinding VerticalOffset}\" ViewportSize=\"{TemplateBinding ViewportHeight}\" Width=\"18\"/>\r\n                                                    <ScrollBar x:Name=\"HorizontalScrollBar\" Grid.Column=\"0\" Height=\"18\" IsTabStop=\"False\" Maximum=\"{TemplateBinding ScrollableWidth}\" Margin=\"-1,0,-1,-1\" Minimum=\"0\" Orientation=\"Horizontal\" Grid.Row=\"1\" Visibility=\"{TemplateBinding ComputedHorizontalScrollBarVisibility}\" Value=\"{TemplateBinding HorizontalOffset}\" ViewportSize=\"{TemplateBinding ViewportWidth}\"/>\r\n                                                </Grid>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ModeStates\">\r\n                                <VisualState x:Name=\"ReadOnly\"/>\r\n                                <VisualState x:Name=\"Empty\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"ContentPresenter\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ContentPresenter\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Edit\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"EditButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"false\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CommitButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CancelButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"Invalid\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CommittedStates\">\r\n                                <VisualState x:Name=\"Committed\"/>\r\n                                <VisualState x:Name=\"Uncommitted\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.9\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ChangeIndicator\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ScopeStates\">\r\n                                <VisualState x:Name=\"Entity\"/>\r\n                                <VisualState x:Name=\"Collection\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"DataFormBorder\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition/>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <Grid MinHeight=\"27\" Visibility=\"{TemplateBinding HeaderVisibility}\">\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"8\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <StackPanel Orientation=\"Horizontal\">\r\n                                        <ContentControl x:Name=\"HeaderElement\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"Bold\" Margin=\"10,0,0,0\" VerticalAlignment=\"Center\"/>\r\n                                        <TextBlock x:Name=\"ChangeIndicator\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"Bold\" Margin=\"3,-2,8,2\" Opacity=\"0\" Text=\"*\" VerticalAlignment=\"Center\"/>\r\n                                    </StackPanel>\r\n                                    <StackPanel Grid.Column=\"2\" Margin=\"0,3,0,2\" Orientation=\"Horizontal\">\r\n                                        <Button x:Name=\"FirstItemButton\" Style=\"{StaticResource ButtonGeneric}\">\r\n                                            <Grid Height=\"9\" Margin=\"6,5,5,5\" Opacity=\"1\" Width=\"8\">\r\n                                                <Grid.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.6,1\" StartPoint=\"0.4,0\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Grid.OpacityMask>\r\n                                                <Grid.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" Opacity=\"1\" ShadowDepth=\"0\"/>\r\n                                                </Grid.Effect>\r\n                                                <Path Data=\"M1,0 L1,2 L0,1 Z\" Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Right\" Height=\"9\" Margin=\"0\" Opacity=\"0.85\" Stretch=\"Fill\" Width=\"5\"/>\r\n                                                <Rectangle Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Left\" Opacity=\"0.85\" Width=\"2\"/>\r\n                                            </Grid>\r\n                                        </Button>\r\n                                        <Button x:Name=\"PreviousItemButton\" Style=\"{StaticResource ButtonGeneric}\">\r\n                                            <Path Data=\"M1,0 L1,2 L0,1 Z\" Fill=\"{TemplateBinding Foreground}\" Height=\"9\" Margin=\"6,5,8,5\" Opacity=\"0.85\" Stretch=\"Fill\" Width=\"5\">\r\n                                                <Path.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Path.Effect>\r\n                                                <Path.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.6,1\" StartPoint=\"0.4,0\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Path.OpacityMask>\r\n                                            </Path>\r\n                                        </Button>\r\n                                        <Button x:Name=\"NextItemButton\" Style=\"{StaticResource ButtonGeneric}\">\r\n                                            <Path Data=\"M0,0 L1,1 L0,2 Z\" Fill=\"{TemplateBinding Foreground}\" Height=\"9\" Margin=\"8,5,6,5\" Opacity=\"0.85\" Stretch=\"Fill\" Width=\"5\">\r\n                                                <Path.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Path.Effect>\r\n                                                <Path.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.6,1\" StartPoint=\"0.4,0\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Path.OpacityMask>\r\n                                            </Path>\r\n                                        </Button>\r\n                                        <Button x:Name=\"LastItemButton\" Style=\"{StaticResource ButtonGeneric}\">\r\n                                            <Grid Height=\"9\" Margin=\"6,5,5,5\" Opacity=\"1\" Width=\"8\">\r\n                                                <Grid.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.6,1\" StartPoint=\"0.4,0\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Grid.OpacityMask>\r\n                                                <Grid.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Grid.Effect>\r\n                                                <Path Data=\"M0,0 L1,1 L0,2 Z\" Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Left\" Height=\"9\" Opacity=\"0.85\" Stretch=\"Fill\" Width=\"5\"/>\r\n                                                <Rectangle Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Right\" Opacity=\"0.85\" Width=\"2\"/>\r\n                                            </Grid>\r\n                                        </Button>\r\n                                        <Border x:Name=\"ButtonSeparator\" BorderBrush=\"{StaticResource TransparentLightestBrush}\" BorderThickness=\"1,0,1,0\" Background=\"{TemplateBinding BorderBrush}\" Margin=\"2,4,2,4\" Opacity=\"0.2\" Width=\"3\"/>\r\n                                        <Button x:Name=\"EditButton\" Style=\"{StaticResource ButtonGeneric}\" ToolTipService.ToolTip=\"Edit\">\r\n                                            <Button.OpacityMask>\r\n                                                <LinearGradientBrush EndPoint=\"0.57,0.76\" StartPoint=\"0.42,0.01\">\r\n                                                    <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                    <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.442\"/>\r\n                                                    <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                </LinearGradientBrush>\r\n                                            </Button.OpacityMask>\r\n                                            <Grid HorizontalAlignment=\"Center\" Height=\"19\" VerticalAlignment=\"Center\" Width=\"19\">\r\n                                                <Canvas HorizontalAlignment=\"Stretch\" Margin=\"2,2,0,0\" VerticalAlignment=\"Stretch\">\r\n                                                    <Path Data=\"F1 M 2.53,9.96L 4.96,11.1L 6.08,13.50L 13.09,6.50L 9.6,3L 2.53,9.96 Z \" Fill=\"{TemplateBinding Foreground}\" Height=\"10.5\" Canvas.Left=\"2.53\" Stretch=\"Fill\" Canvas.Top=\"3.01\" Width=\"10.56\">\r\n                                                        <Path.OpacityMask>\r\n                                                            <LinearGradientBrush EndPoint=\"0.76,0.77\" StartPoint=\"0.21,0.18\">\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0\"/>\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.106\"/>\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.387\"/>\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.703\"/>\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"1\"/>\r\n                                                            </LinearGradientBrush>\r\n                                                        </Path.OpacityMask>\r\n                                                    </Path>\r\n                                                    <Path Data=\"M1.41,1.83 L0.71,2.54 L4.20,6.03 L4.91,5.33 z M3.24,0 L6.81,3.42 L3.5,6.74 L0,3.24 z\" Fill=\"{TemplateBinding Foreground}\" Height=\"6.74\" Canvas.Left=\"7.47\" Stretch=\"Fill\" Canvas.Top=\"1.89\" Width=\"6.81\"/>\r\n                                                    <Path Data=\"F1 M 13.77,4.22L 11.73,2.18C 11.12,1.78 10.46,2.15 10,2.5L 3.04,9.45C 2.65,9.86 2.53,10.47 2.53,10.73L 2.53,13.5L 5.32,13.5C 5.57,13.5 6.33,13.36 6.64,12.93L 13.54,6.03C 13.86,5.72 14.17,4.74 13.77,4.22 Z\" Height=\"12.5\" Canvas.Left=\"2.03\" Stretch=\"Fill\" Stroke=\"{TemplateBinding Foreground}\" StrokeLineJoin=\"Round\" Canvas.Top=\"1.50\" Width=\"12.43\"/>\r\n                                                    <Path Data=\"F1 M 2.033,11.71L 4.33,14L 2.62,14C 2.17,13.93 2.09,13.79 2,13.31L 2.03,11.71 Z\" Fill=\"{TemplateBinding Foreground}\" Height=\"2.29\" Canvas.Left=\"2.58\" Stretch=\"Fill\" Canvas.Top=\"11.18\" Width=\"2.33\"/>\r\n                                                </Canvas>\r\n                                            </Grid>\r\n                                        </Button>\r\n                                        <Button x:Name=\"NewItemButton\" Style=\"{StaticResource ButtonGeneric}\" ToolTipService.ToolTip=\"Add\">\r\n                                            <Path Data=\"F1 M18.41,61.67 L19.56,60.52 L21.92,62.88 L24.22,60.57 L25.36,61.72 L23.06,64.03 L25.43,66.4 L24.22,67.60 L21.87,65.25 L19.56,67.56 L18.41,66.41 L20.73,64.08 L18.41,61.67 z\" Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Center\" Height=\"9\" Margin=\"5\" Opacity=\"0.85\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"9\">\r\n                                                <Path.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <ScaleTransform/>\r\n                                                        <SkewTransform/>\r\n                                                        <RotateTransform Angle=\"45\"/>\r\n                                                        <TranslateTransform X=\"0.18\" Y=\"-0.07\"/>\r\n                                                    </TransformGroup>\r\n                                                </Path.RenderTransform>\r\n                                                <Path.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Path.Effect>\r\n                                                <Path.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.35,0.5\" StartPoint=\"-0.27,0.05\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource BlackColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Path.OpacityMask>\r\n                                            </Path>\r\n                                        </Button>\r\n                                        <Button x:Name=\"DeleteItemButton\" Style=\"{StaticResource ButtonGeneric}\" ToolTipService.ToolTip=\"Delete\">\r\n                                            <Path Data=\"F1 M24.32,60.48 L25.60,61.76 L19.65,67.75 L18.37,66.46 z\" Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Center\" Height=\"9\" Margin=\"5,5,5,5\" Opacity=\"0.85\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"9\">\r\n                                                <Path.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <RotateTransform Angle=\"45\"/>\r\n                                                        <TranslateTransform X=\"0.06\" Y=\"-0.01\"/>\r\n                                                    </TransformGroup>\r\n                                                </Path.RenderTransform>\r\n                                                <Path.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Path.Effect>\r\n                                                <Path.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.74,0.66\" StartPoint=\"-0.44,-0.11\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource BlackColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Path.OpacityMask>\r\n                                            </Path>\r\n                                        </Button>\r\n                                    </StackPanel>\r\n                                </Grid>\r\n                                <ScrollViewer Background=\"{x:Null}\" IsTabStop=\"False\" Padding=\"{TemplateBinding Padding}\" Grid.Row=\"1\" Style=\"{StaticResource CustomScrollViewerStyle}\" VerticalScrollBarVisibility=\"Auto\">\r\n                                    <ContentPresenter x:Name=\"ContentPresenter\" Margin=\"12,12,6,12\"/>\r\n                                </ScrollViewer>\r\n                                <dataInput:ValidationSummary x:Name=\"ValidationSummary\" BorderThickness=\"0\" MaxHeight=\"100\" Grid.Row=\"2\"/>\r\n                                <StackPanel HorizontalAlignment=\"Right\" Orientation=\"Horizontal\" Grid.Row=\"3\">\r\n                                    <Button x:Name=\"CommitButton\" Content=\"OK\" HorizontalContentAlignment=\"Center\" Margin=\"0,5,8,5\" MinWidth=\"71\" MinHeight=\"17\" Visibility=\"Collapsed\" VerticalContentAlignment=\"Center\"/>\r\n                                    <Button x:Name=\"CancelButton\" Content=\"Cancel\" HorizontalContentAlignment=\"Center\" Margin=\"0,5,8,5\" MinWidth=\"71\" MinHeight=\"17\" Visibility=\"Collapsed\" VerticalContentAlignment=\"Center\"/>\r\n                                </StackPanel>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisual\" Background=\"{StaticResource TransparentLightLightBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>     \r\n    </Style>\r\n\r\n    <!-- ContextMenu Style-->\r\n    <Style TargetType=\"inputtoolkit:ContextMenu\" x:Key=\"DefaultContextMenuStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource LabelFontSize}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"200\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:ContextMenu\">\r\n                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Effect=\"{StaticResource DropShadowBrush}\">\r\n                        <Grid>\r\n                            <Rectangle Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Left\" Margin=\"2\" RadiusY=\"2\" RadiusX=\"2\" Width=\"28\"/>\r\n                            <Rectangle Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Left\" Margin=\"30,2,0,2\" Width=\"1\"/>\r\n                            <Rectangle Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Left\" Margin=\"31,2,0,2\" Width=\"1\"/>\r\n                            <ItemsPresenter Margin=\"{TemplateBinding Padding}\"/>\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>    \r\n    </Style>\r\n\r\n    <!--MenuItem Style-->\r\n    <Style TargetType=\"inputtoolkit:MenuItem\" x:Key=\"DefaultMenuItemStyle\">\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,3,2,3\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:MenuItem\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Presenter\"/>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Grid>\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition MinWidth=\"24\" Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"4\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"17\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" Content=\"{TemplateBinding Icon}\" Margin=\"1\" VerticalAlignment=\"Center\"/>\r\n                            <ContentPresenter x:Name=\"Presenter\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\" Grid.Column=\"2\" Margin=\"{TemplateBinding Padding}\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!-- Chart Style -->\r\n    <Style TargetType=\"Charting:Chart\" x:Key=\"DefaultChartStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource LabelTextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource LabelFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource SliderTrackBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Padding\" Value=\"10\"/>\r\n        <Setter Property=\"Palette\">\r\n            <Setter.Value>\r\n                <charttoolkit:ResourceDictionaryCollection>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush1}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush2}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush3}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush4}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush5}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush6}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush7}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush8}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush9}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush10}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush11}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush12}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush13}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush14}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush15}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush16}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                </charttoolkit:ResourceDictionaryCollection>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"TitleStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"charttoolkit:Title\">\r\n                    <Setter Property=\"FontSize\" Value=\"16\"/>\r\n                    <Setter Property=\"HorizontalAlignment\" Value=\"Center\"/>\r\n                    <Setter Property=\"Margin\" Value=\"0,10,0,10\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"LegendStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"charttoolkit:Legend\">\r\n                    <Setter Property=\"Margin\" Value=\"15,0,15,0\"/>\r\n                    <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\r\n                    <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush1}\"/>                        \r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"ChartAreaStyle\">            \r\n            <Setter.Value>\r\n                <Style TargetType=\"Panel\">\r\n                    <Setter Property=\"MinWidth\" Value=\"100\"/>\r\n                    <Setter Property=\"MinHeight\" Value=\"75\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"PlotAreaStyle\">            \r\n            <Setter.Value>\r\n                <Style TargetType=\"Grid\">\r\n                    <Setter Property=\"Background\">\r\n                        <Setter.Value>\r\n                            <LinearGradientBrush EndPoint=\"0.457,0.296\" StartPoint=\"0.459,1.296\">\r\n                                <GradientStop Color=\"{StaticResource WhiteColor}\"/>\r\n                                <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n                            </LinearGradientBrush>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Charting:Chart\">\r\n                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" Background=\"{StaticResource NormalBrush}\">\r\n                        <Grid>\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"*\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <charttoolkit:Title Content=\"{TemplateBinding Title}\" Style=\"{TemplateBinding TitleStyle}\"/>\r\n                            <Grid Margin=\"0,15,0,15\" Grid.Row=\"1\">\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition Width=\"*\"/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <charttoolkit:Legend x:Name=\"Legend\" Grid.Column=\"1\" Header=\"{TemplateBinding LegendTitle}\" Style=\"{TemplateBinding LegendStyle}\" Background=\"{StaticResource WhiteBrush}\" BorderBrush=\"{StaticResource SliderTrackBrush}\" Foreground=\"{StaticResource TextBrush}\"/>\r\n                                <Charting_Primitives:EdgePanel x:Name=\"ChartArea\" Style=\"{TemplateBinding ChartAreaStyle}\">\r\n                                    <Grid Style=\"{TemplateBinding PlotAreaStyle}\" Canvas.ZIndex=\"-1\" Background=\"{StaticResource WhiteBrush}\"/>\r\n                                    <Border BorderBrush=\"{StaticResource SliderTrackBrush}\" BorderThickness=\"1\" Canvas.ZIndex=\"10\"/>\r\n                                </Charting_Primitives:EdgePanel>\r\n                            </Grid>\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>        \r\n    </Style>\r\n\r\n    <!-- Busy Indicator Style -->\r\n    <Style TargetType=\"toolkit:BusyIndicator\" x:Key=\"DefaultBusyIndicatorStyle\">\r\n        <Setter Property=\"BusyContent\" Value=\"Please wait...\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"OverlayStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"Rectangle\">\r\n                    <Setter Property=\"Fill\" Value=\"White\"/>\r\n                    <Setter Property=\"Opacity\" Value=\"0.5\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"ProgressBarStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ProgressBar\">\r\n                    <Setter Property=\"IsIndeterminate\" Value=\"True\"/>\r\n                    <Setter Property=\"Height\" Value=\"15\"/>\r\n                    <Setter Property=\"Margin\" Value=\"8,0,8,8\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"DisplayAfter\" Value=\"00:00:00.1\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"toolkit:BusyIndicator\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"VisibilityStates\">\r\n                                <VisualState x:Name=\"Hidden\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"busycontent\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"overlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Visible\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"busycontent\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"overlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"BusyStatusStates\">\r\n                                <VisualState x:Name=\"Idle\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(Control.IsEnabled)\" Storyboard.TargetName=\"content\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Busy\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(Control.IsEnabled)\" Storyboard.TargetName=\"content\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>False</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <ContentControl x:Name=\"content\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        <Rectangle x:Name=\"overlay\" Style=\"{TemplateBinding OverlayStyle}\"/>\r\n                        <ContentPresenter x:Name=\"busycontent\">\r\n                            <Grid HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\r\n                                <Border Background=\"{StaticResource WindowBackgroundBrush}\" Effect=\"{StaticResource DropShadowBrush}\">\r\n                                    <Grid MinWidth=\"150\">\r\n                                        <Grid.RowDefinitions>\r\n                                            <RowDefinition/>\r\n                                            <RowDefinition Height=\"Auto\"/>\r\n                                        </Grid.RowDefinitions>\r\n                                        <ContentPresenter ContentTemplate=\"{TemplateBinding BusyContentTemplate}\" Content=\"{TemplateBinding BusyContent}\" Margin=\"8\"/>\r\n                                        <ProgressBar Grid.Row=\"1\" IsIndeterminate=\"True\" Height=\"8\" Margin=\"5\"/>\r\n                                    </Grid>\r\n                                </Border>\r\n                            </Grid>\r\n                        </ContentPresenter>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- Implicit Styles -->\r\n    <!-- When defining your own styles, set \"based on\" the same way to keep control theming -->\r\n    <Style TargetType=\"System_Windows_Controls:Accordion\" BasedOn=\"{StaticResource DefaultAccordionStyle}\" />\r\n    <Style TargetType=\"layouttoolkit:AccordionButton\" BasedOn=\"{StaticResource DefaultAccordionButtonStyle}\" />\r\n    <Style TargetType=\"System_Windows_Controls:AccordionItem\" BasedOn=\"{StaticResource DefaultAccordionItemStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:ButtonSpinner\" BasedOn=\"{StaticResource DefaultButtonSpinnerStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:TimeUpDown\" BasedOn=\"{StaticResource DefaultTimeUpDownStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:RangeTimePickerPopup\" BasedOn=\"{StaticResource DefaultRangeTimePickerPopupStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:ListTimePickerPopup\" BasedOn=\"{StaticResource DefaultListTimePickerPopupStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:TimePicker\" BasedOn=\"{StaticResource DefaultTimePickerStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:RatingItem\" BasedOn=\"{StaticResource DefaultRatingItemStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:Rating\" BasedOn=\"{StaticResource DefaultRatingStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:NumericUpDown\" BasedOn=\"{StaticResource DefaultNumericUpDownStyle}\" />\r\n    <Style TargetType=\"toolkit:Expander\" BasedOn=\"{StaticResource DefaultExpanderStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:DomainUpDown\" BasedOn=\"{StaticResource DefaultDomainUpDownStyle}\" />\r\n    <Style TargetType=\"sdk:DescriptionViewer\" BasedOn=\"{StaticResource DefaultDescriptionViewerStyle}\" />\r\n    <Style TargetType=\"dataformtoolkit:DataForm\" BasedOn=\"{StaticResource DefaultDataFormStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:ContextMenu\" BasedOn=\"{StaticResource DefaultContextMenuStyle}\" />\r\n    <Style TargetType=\"inputtoolkit:MenuItem\" BasedOn=\"{StaticResource DefaultMenuItemStyle}\" />\r\n    <Style TargetType=\"System_Windows_Controls_DataVisualization_Charting:Chart\" BasedOn=\"{StaticResource DefaultChartStyle}\" />\r\n    <Style TargetType=\"toolkit:BusyIndicator\" BasedOn=\"{StaticResource DefaultBusyIndicatorStyle}\" />\r\n\r\n</ResourceDictionary>"
  },
  {
    "path": "litmus/LitmusTests/Themes/generic.xaml",
    "content": "﻿<ResourceDictionary\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" \r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:local=\"clr-namespace:WickedSick.LitmusTests\">\r\n    <Style TargetType=\"local:ScrollTestOverride\">\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"local:ScrollTestOverride\">\r\n                    <Button x:Name=\"RawrButton\" Content=\"YOOOOOO\" />\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n</ResourceDictionary>"
  },
  {
    "path": "litmus/LitmusTests.Web/LitmusTests.Web.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProductVersion>\r\n    </ProductVersion>\r\n    <SchemaVersion>2.0</SchemaVersion>\r\n    <ProjectGuid>{5F2E26A9-232C-4F1B-A87F-DF4D60D947D3}</ProjectGuid>\r\n    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>\r\n    <OutputType>Library</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>LitmusTests.Web</RootNamespace>\r\n    <AssemblyName>LitmusTests.Web</AssemblyName>\r\n    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r\n    <UseIISExpress>true</UseIISExpress>\r\n    <IISExpressSSLPort />\r\n    <IISExpressAnonymousAuthentication />\r\n    <IISExpressWindowsAuthentication />\r\n    <IISExpressUseClassicPipelineMode />\r\n    <SilverlightApplicationList>{C66B3310-4ACF-4CFF-B533-14B254F8B649}|..\\LitmusTests\\LitmusTests.csproj|ClientBin|False</SilverlightApplicationList>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <DebugType>pdbonly</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"Microsoft.CSharp\" />\r\n    <Reference Include=\"System.Web.DynamicData\" />\r\n    <Reference Include=\"System.Web.Entity\" />\r\n    <Reference Include=\"System.Web.ApplicationServices\" />\r\n    <Reference Include=\"System.ComponentModel.DataAnnotations\" />\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"System.Web.Extensions\" />\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Drawing\" />\r\n    <Reference Include=\"System.Web\" />\r\n    <Reference Include=\"System.Xml\" />\r\n    <Reference Include=\"System.Configuration\" />\r\n    <Reference Include=\"System.Web.Services\" />\r\n    <Reference Include=\"System.EnterpriseServices\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Content Include=\"ClientBin\\LitmusTests.xap\" />\r\n    <Content Include=\"LitmusTestsTestPage.aspx\" />\r\n    <Content Include=\"LitmusTestsTestPage.html\" />\r\n    <Content Include=\"Silverlight.js\" />\r\n    <Content Include=\"Web.config\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\"Web.Debug.config\">\r\n      <DependentUpon>Web.config</DependentUpon>\r\n    </None>\r\n    <None Include=\"Web.Release.config\">\r\n      <DependentUpon>Web.config</DependentUpon>\r\n    </None>\r\n  </ItemGroup>\r\n  <ItemGroup />\r\n  <PropertyGroup>\r\n    <VisualStudioVersion Condition=\"'$(VisualStudioVersion)' == ''\">10.0</VisualStudioVersion>\r\n    <VSToolsPath Condition=\"'$(VSToolsPath)' == ''\">$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)</VSToolsPath>\r\n  </PropertyGroup>\r\n  <Import Project=\"$(MSBuildBinPath)\\Microsoft.CSharp.targets\" />\r\n  <Import Project=\"$(VSToolsPath)\\WebApplications\\Microsoft.WebApplication.targets\" Condition=\"'$(VSToolsPath)' != ''\" />\r\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v10.0\\WebApplications\\Microsoft.WebApplication.targets\" Condition=\"false\" />\r\n  <ProjectExtensions>\r\n    <VisualStudio>\r\n      <FlavorProperties GUID=\"{349c5851-65df-11da-9384-00065b846f21}\">\r\n        <WebProjectProperties>\r\n          <UseIIS>True</UseIIS>\r\n          <AutoAssignPort>True</AutoAssignPort>\r\n          <DevelopmentServerPort>7760</DevelopmentServerPort>\r\n          <DevelopmentServerVPath>/</DevelopmentServerVPath>\r\n          <IISUrl>http://localhost:7678/</IISUrl>\r\n          <NTLMAuthentication>False</NTLMAuthentication>\r\n          <UseCustomServer>False</UseCustomServer>\r\n          <CustomServerUrl>\r\n          </CustomServerUrl>\r\n          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>\r\n        </WebProjectProperties>\r\n      </FlavorProperties>\r\n    </VisualStudio>\r\n  </ProjectExtensions>\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r\n       Other similar extension points exist, see Microsoft.Common.targets.\r\n  <Target Name=\"BeforeBuild\">\r\n  </Target>\r\n  <Target Name=\"AfterBuild\">\r\n  </Target>\r\n  -->\r\n</Project>"
  },
  {
    "path": "litmus/LitmusTests.Web/LitmusTestsTestPage.aspx",
    "content": "﻿<%@ Page Language=\"C#\" AutoEventWireup=\"true\" %>\r\n\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" >\r\n<head runat=\"server\">\r\n    <title>LitmusTests</title>\r\n    <style type=\"text/css\">\r\n    html, body {\r\n\t    height: 100%;\r\n\t    overflow: auto;\r\n    }\r\n    body {\r\n\t    padding: 0;\r\n\t    margin: 0;\r\n    }\r\n    #silverlightControlHost {\r\n\t    height: 100%;\r\n\t    text-align:center;\r\n    }\r\n    </style>\r\n    <script type=\"text/javascript\" src=\"Silverlight.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        function onSilverlightError(sender, args) {\r\n            var appSource = \"\";\r\n            if (sender != null && sender != 0) {\r\n              appSource = sender.getHost().Source;\r\n            }\r\n            \r\n            var errorType = args.ErrorType;\r\n            var iErrorCode = args.ErrorCode;\r\n\r\n            if (errorType == \"ImageError\" || errorType == \"MediaError\") {\r\n              return;\r\n            }\r\n\r\n            var errMsg = \"Unhandled Error in Silverlight Application \" +  appSource + \"\\n\" ;\r\n\r\n            errMsg += \"Code: \"+ iErrorCode + \"    \\n\";\r\n            errMsg += \"Category: \" + errorType + \"       \\n\";\r\n            errMsg += \"Message: \" + args.ErrorMessage + \"     \\n\";\r\n\r\n            if (errorType == \"ParserError\") {\r\n                errMsg += \"File: \" + args.xamlFile + \"     \\n\";\r\n                errMsg += \"Line: \" + args.lineNumber + \"     \\n\";\r\n                errMsg += \"Position: \" + args.charPosition + \"     \\n\";\r\n            }\r\n            else if (errorType == \"RuntimeError\") {           \r\n                if (args.lineNumber != 0) {\r\n                    errMsg += \"Line: \" + args.lineNumber + \"     \\n\";\r\n                    errMsg += \"Position: \" +  args.charPosition + \"     \\n\";\r\n                }\r\n                errMsg += \"MethodName: \" + args.methodName + \"     \\n\";\r\n            }\r\n\r\n            throw new Error(errMsg);\r\n        }\r\n    </script>\r\n</head>\r\n<body>\r\n    <form id=\"form1\" runat=\"server\" style=\"height:100%\">\r\n    <div id=\"silverlightControlHost\">\r\n        <object data=\"data:application/x-silverlight-2,\" type=\"application/x-silverlight-2\" width=\"100%\" height=\"100%\">\r\n\t\t  <param name=\"source\" value=\"ClientBin/LitmusTests.xap\"/>\r\n\t\t  <param name=\"onError\" value=\"onSilverlightError\" />\r\n\t\t  <param name=\"background\" value=\"white\" />\r\n\t\t  <param name=\"minRuntimeVersion\" value=\"5.0.61118.0\" />\r\n\t\t  <param name=\"autoUpgrade\" value=\"true\" />\r\n\t\t  <a href=\"http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0\" style=\"text-decoration:none\">\r\n \t\t\t  <img src=\"http://go.microsoft.com/fwlink/?LinkId=161376\" alt=\"Get Microsoft Silverlight\" style=\"border-style:none\"/>\r\n\t\t  </a>\r\n\t    </object><iframe id=\"_sl_historyFrame\" style=\"visibility:hidden;height:0px;width:0px;border:0px\"></iframe></div>\r\n    </form>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "litmus/LitmusTests.Web/LitmusTestsTestPage.html",
    "content": "﻿<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" >\r\n\r\n<head>\r\n    <title>LitmusTests</title>\r\n    <style type=\"text/css\">\r\n    html, body {\r\n\t    height: 100%;\r\n\t    overflow: auto;\r\n    }\r\n    body {\r\n\t    padding: 0;\r\n\t    margin: 0;\r\n    }\r\n    #silverlightControlHost {\r\n\t    height: 100%;\r\n\t    text-align:center;\r\n    }\r\n    </style>\r\n    <script type=\"text/javascript\" src=\"Silverlight.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        function onSilverlightError(sender, args) {\r\n            var appSource = \"\";\r\n            if (sender != null && sender != 0) {\r\n              appSource = sender.getHost().Source;\r\n            }\r\n            \r\n            var errorType = args.ErrorType;\r\n            var iErrorCode = args.ErrorCode;\r\n\r\n            if (errorType == \"ImageError\" || errorType == \"MediaError\") {\r\n              return;\r\n            }\r\n\r\n            var errMsg = \"Unhandled Error in Silverlight Application \" +  appSource + \"\\n\" ;\r\n\r\n            errMsg += \"Code: \"+ iErrorCode + \"    \\n\";\r\n            errMsg += \"Category: \" + errorType + \"       \\n\";\r\n            errMsg += \"Message: \" + args.ErrorMessage + \"     \\n\";\r\n\r\n            if (errorType == \"ParserError\") {\r\n                errMsg += \"File: \" + args.xamlFile + \"     \\n\";\r\n                errMsg += \"Line: \" + args.lineNumber + \"     \\n\";\r\n                errMsg += \"Position: \" + args.charPosition + \"     \\n\";\r\n            }\r\n            else if (errorType == \"RuntimeError\") {           \r\n                if (args.lineNumber != 0) {\r\n                    errMsg += \"Line: \" + args.lineNumber + \"     \\n\";\r\n                    errMsg += \"Position: \" +  args.charPosition + \"     \\n\";\r\n                }\r\n                errMsg += \"MethodName: \" + args.methodName + \"     \\n\";\r\n            }\r\n\r\n            throw new Error(errMsg);\r\n        }\r\n    </script>\r\n</head>\r\n<body>\r\n    <form id=\"form1\" runat=\"server\" style=\"height:100%\">\r\n    <div id=\"silverlightControlHost\">\r\n        <object data=\"data:application/x-silverlight-2,\" type=\"application/x-silverlight-2\" width=\"100%\" height=\"100%\">\r\n\t\t  <param name=\"source\" value=\"ClientBin/LitmusTests.xap\"/>\r\n\t\t  <param name=\"onError\" value=\"onSilverlightError\" />\r\n\t\t  <param name=\"background\" value=\"white\" />\r\n\t\t  <param name=\"minRuntimeVersion\" value=\"5.0.61118.0\" />\r\n\t\t  <param name=\"autoUpgrade\" value=\"true\" />\r\n\t\t  <a href=\"http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0\" style=\"text-decoration:none\">\r\n \t\t\t  <img src=\"http://go.microsoft.com/fwlink/?LinkId=161376\" alt=\"Get Microsoft Silverlight\" style=\"border-style:none\"/>\r\n\t\t  </a>\r\n\t    </object><iframe id=\"_sl_historyFrame\" style=\"visibility:hidden;height:0px;width:0px;border:0px\"></iframe></div>\r\n    </form>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "litmus/LitmusTests.Web/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"LitmusTests.Web\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"LitmusTests.Web\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// The following GUID is for the ID of the typelib if this project is exposed to COM\r\n[assembly: Guid(\"e97ea26c-088b-44c3-8fa0-824ad641b0c4\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Revision and Build Numbers \r\n// by using the '*' as shown below:\r\n[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\r\n"
  },
  {
    "path": "litmus/LitmusTests.Web/Silverlight.js",
    "content": "//v2.0.30511.0\r\nif(!window.Silverlight)window.Silverlight={};Silverlight._silverlightCount=0;Silverlight.__onSilverlightInstalledCalled=false;Silverlight.fwlinkRoot=\"http://go2.microsoft.com/fwlink/?LinkID=\";Silverlight.__installationEventFired=false;Silverlight.onGetSilverlight=null;Silverlight.onSilverlightInstalled=function(){window.location.reload(false)};Silverlight.isInstalled=function(b){if(b==undefined)b=null;var a=false,m=null;try{var i=null,j=false;if(window.ActiveXObject)try{i=new ActiveXObject(\"AgControl.AgControl\");if(b===null)a=true;else if(i.IsVersionSupported(b))a=true;i=null}catch(l){j=true}else j=true;if(j){var k=navigator.plugins[\"Silverlight Plug-In\"];if(k)if(b===null)a=true;else{var h=k.description;if(h===\"1.0.30226.2\")h=\"2.0.30226.2\";var c=h.split(\".\");while(c.length>3)c.pop();while(c.length<4)c.push(0);var e=b.split(\".\");while(e.length>4)e.pop();var d,g,f=0;do{d=parseInt(e[f]);g=parseInt(c[f]);f++}while(f<e.length&&d===g);if(d<=g&&!isNaN(d))a=true}}}catch(l){a=false}return a};Silverlight.WaitForInstallCompletion=function(){if(!Silverlight.isBrowserRestartRequired&&Silverlight.onSilverlightInstalled){try{navigator.plugins.refresh()}catch(a){}if(Silverlight.isInstalled(null)&&!Silverlight.__onSilverlightInstalledCalled){Silverlight.onSilverlightInstalled();Silverlight.__onSilverlightInstalledCalled=true}else setTimeout(Silverlight.WaitForInstallCompletion,3e3)}};Silverlight.__startup=function(){navigator.plugins.refresh();Silverlight.isBrowserRestartRequired=Silverlight.isInstalled(null);if(!Silverlight.isBrowserRestartRequired){Silverlight.WaitForInstallCompletion();if(!Silverlight.__installationEventFired){Silverlight.onInstallRequired();Silverlight.__installationEventFired=true}}else if(window.navigator.mimeTypes){var b=navigator.mimeTypes[\"application/x-silverlight-2\"],c=navigator.mimeTypes[\"application/x-silverlight-2-b2\"],d=navigator.mimeTypes[\"application/x-silverlight-2-b1\"],a=d;if(c)a=c;if(!b&&(d||c)){if(!Silverlight.__installationEventFired){Silverlight.onUpgradeRequired();Silverlight.__installationEventFired=true}}else if(b&&a)if(b.enabledPlugin&&a.enabledPlugin)if(b.enabledPlugin.description!=a.enabledPlugin.description)if(!Silverlight.__installationEventFired){Silverlight.onRestartRequired();Silverlight.__installationEventFired=true}}if(!Silverlight.disableAutoStartup)if(window.removeEventListener)window.removeEventListener(\"load\",Silverlight.__startup,false);else window.detachEvent(\"onload\",Silverlight.__startup)};if(!Silverlight.disableAutoStartup)if(window.addEventListener)window.addEventListener(\"load\",Silverlight.__startup,false);else window.attachEvent(\"onload\",Silverlight.__startup);Silverlight.createObject=function(m,f,e,k,l,h,j){var d={},a=k,c=l;d.version=a.version;a.source=m;d.alt=a.alt;if(h)a.initParams=h;if(a.isWindowless&&!a.windowless)a.windowless=a.isWindowless;if(a.framerate&&!a.maxFramerate)a.maxFramerate=a.framerate;if(e&&!a.id)a.id=e;delete a.ignoreBrowserVer;delete a.inplaceInstallPrompt;delete a.version;delete a.isWindowless;delete a.framerate;delete a.data;delete a.src;delete a.alt;if(Silverlight.isInstalled(d.version)){for(var b in c)if(c[b]){if(b==\"onLoad\"&&typeof c[b]==\"function\"&&c[b].length!=1){var i=c[b];c[b]=function(a){return i(document.getElementById(e),j,a)}}var g=Silverlight.__getHandlerName(c[b]);if(g!=null){a[b]=g;c[b]=null}else throw\"typeof events.\"+b+\" must be 'function' or 'string'\";}slPluginHTML=Silverlight.buildHTML(a)}else slPluginHTML=Silverlight.buildPromptHTML(d);if(f)f.innerHTML=slPluginHTML;else return slPluginHTML};Silverlight.buildHTML=function(a){var b=[];b.push('<object type=\"application/x-silverlight\" data=\"data:application/x-silverlight,\"');if(a.id!=null)b.push(' id=\"'+Silverlight.HtmlAttributeEncode(a.id)+'\"');if(a.width!=null)b.push(' width=\"'+a.width+'\"');if(a.height!=null)b.push(' height=\"'+a.height+'\"');b.push(\" >\");delete a.id;delete a.width;delete a.height;for(var c in a)if(a[c])b.push('<param name=\"'+Silverlight.HtmlAttributeEncode(c)+'\" value=\"'+Silverlight.HtmlAttributeEncode(a[c])+'\" />');b.push(\"</object>\");return b.join(\"\")};Silverlight.createObjectEx=function(b){var a=b,c=Silverlight.createObject(a.source,a.parentElement,a.id,a.properties,a.events,a.initParams,a.context);if(a.parentElement==null)return c};Silverlight.buildPromptHTML=function(b){var a=\"\",d=Silverlight.fwlinkRoot,c=b.version;if(b.alt)a=b.alt;else{if(!c)c=\"\";a=\"<a href='javascript:Silverlight.getSilverlight(\\\"{1}\\\");' style='text-decoration: none;'><img src='{2}' alt='Get Microsoft Silverlight' style='border-style: none'/></a>\";a=a.replace(\"{1}\",c);a=a.replace(\"{2}\",d+\"108181\")}return a};Silverlight.getSilverlight=function(e){if(Silverlight.onGetSilverlight)Silverlight.onGetSilverlight();var b=\"\",a=String(e).split(\".\");if(a.length>1){var c=parseInt(a[0]);if(isNaN(c)||c<2)b=\"1.0\";else b=a[0]+\".\"+a[1]}var d=\"\";if(b.match(/^\\d+\\056\\d+$/))d=\"&v=\"+b;Silverlight.followFWLink(\"149156\"+d)};Silverlight.followFWLink=function(a){top.location=Silverlight.fwlinkRoot+String(a)};Silverlight.HtmlAttributeEncode=function(c){var a,b=\"\";if(c==null)return null;for(var d=0;d<c.length;d++){a=c.charCodeAt(d);if(a>96&&a<123||a>64&&a<91||a>43&&a<58&&a!=47||a==95)b=b+String.fromCharCode(a);else b=b+\"&#\"+a+\";\"}return b};Silverlight.default_error_handler=function(e,b){var d,c=b.ErrorType;d=b.ErrorCode;var a=\"\\nSilverlight error message     \\n\";a+=\"ErrorCode: \"+d+\"\\n\";a+=\"ErrorType: \"+c+\"       \\n\";a+=\"Message: \"+b.ErrorMessage+\"     \\n\";if(c==\"ParserError\"){a+=\"XamlFile: \"+b.xamlFile+\"     \\n\";a+=\"Line: \"+b.lineNumber+\"     \\n\";a+=\"Position: \"+b.charPosition+\"     \\n\"}else if(c==\"RuntimeError\"){if(b.lineNumber!=0){a+=\"Line: \"+b.lineNumber+\"     \\n\";a+=\"Position: \"+b.charPosition+\"     \\n\"}a+=\"MethodName: \"+b.methodName+\"     \\n\"}alert(a)};Silverlight.__cleanup=function(){for(var a=Silverlight._silverlightCount-1;a>=0;a--)window[\"__slEvent\"+a]=null;Silverlight._silverlightCount=0;if(window.removeEventListener)window.removeEventListener(\"unload\",Silverlight.__cleanup,false);else window.detachEvent(\"onunload\",Silverlight.__cleanup)};Silverlight.__getHandlerName=function(b){var a=\"\";if(typeof b==\"string\")a=b;else if(typeof b==\"function\"){if(Silverlight._silverlightCount==0)if(window.addEventListener)window.addEventListener(\"onunload\",Silverlight.__cleanup,false);else window.attachEvent(\"onunload\",Silverlight.__cleanup);var c=Silverlight._silverlightCount++;a=\"__slEvent\"+c;window[a]=b}else a=null;return a};Silverlight.onRequiredVersionAvailable=function(){};Silverlight.onRestartRequired=function(){};Silverlight.onUpgradeRequired=function(){};Silverlight.onInstallRequired=function(){};Silverlight.IsVersionAvailableOnError=function(d,a){var b=false;try{if(a.ErrorCode==8001&&!Silverlight.__installationEventFired){Silverlight.onUpgradeRequired();Silverlight.__installationEventFired=true}else if(a.ErrorCode==8002&&!Silverlight.__installationEventFired){Silverlight.onRestartRequired();Silverlight.__installationEventFired=true}else if(a.ErrorCode==5014||a.ErrorCode==2106){if(Silverlight.__verifySilverlight2UpgradeSuccess(a.getHost()))b=true}else b=true}catch(c){}return b};Silverlight.IsVersionAvailableOnLoad=function(b){var a=false;try{if(Silverlight.__verifySilverlight2UpgradeSuccess(b.getHost()))a=true}catch(c){}return a};Silverlight.__verifySilverlight2UpgradeSuccess=function(d){var c=false,b=\"2.0.31005\",a=null;try{if(d.IsVersionSupported(b+\".99\")){a=Silverlight.onRequiredVersionAvailable;c=true}else if(d.IsVersionSupported(b+\".0\"))a=Silverlight.onRestartRequired;else a=Silverlight.onUpgradeRequired;if(a&&!Silverlight.__installationEventFired){a();Silverlight.__installationEventFired=true}}catch(e){}return c}"
  },
  {
    "path": "litmus/LitmusTests.Web/Web.Debug.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->\r\n\r\n<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\r\n  <!--\r\n    In the example below, the \"SetAttributes\" transform will change the value of \r\n    \"connectionString\" to use \"ReleaseSQLServer\" only when the \"Match\" locator \r\n    finds an attribute \"name\" that has a value of \"MyDB\".\r\n    \r\n    <connectionStrings>\r\n      <add name=\"MyDB\" \r\n        connectionString=\"Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True\" \r\n        xdt:Transform=\"SetAttributes\" xdt:Locator=\"Match(name)\"/>\r\n    </connectionStrings>\r\n  -->\r\n  <system.web>\r\n    <!--\r\n      In the example below, the \"Replace\" transform will replace the entire \r\n      <customErrors> section of your web.config file.\r\n      Note that because there is only one customErrors section under the \r\n      <system.web> node, there is no need to use the \"xdt:Locator\" attribute.\r\n      \r\n      <customErrors defaultRedirect=\"GenericError.htm\"\r\n        mode=\"RemoteOnly\" xdt:Transform=\"Replace\">\r\n        <error statusCode=\"500\" redirect=\"InternalError.htm\"/>\r\n      </customErrors>\r\n    -->\r\n  </system.web>\r\n</configuration>"
  },
  {
    "path": "litmus/LitmusTests.Web/Web.Release.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->\r\n\r\n<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\r\n  <!--\r\n    In the example below, the \"SetAttributes\" transform will change the value of \r\n    \"connectionString\" to use \"ReleaseSQLServer\" only when the \"Match\" locator \r\n    finds an attribute \"name\" that has a value of \"MyDB\".\r\n    \r\n    <connectionStrings>\r\n      <add name=\"MyDB\" \r\n        connectionString=\"Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True\" \r\n        xdt:Transform=\"SetAttributes\" xdt:Locator=\"Match(name)\"/>\r\n    </connectionStrings>\r\n  -->\r\n  <system.web>\r\n    <compilation xdt:Transform=\"RemoveAttributes(debug)\" />\r\n    <!--\r\n      In the example below, the \"Replace\" transform will replace the entire \r\n      <customErrors> section of your web.config file.\r\n      Note that because there is only one customErrors section under the \r\n      <system.web> node, there is no need to use the \"xdt:Locator\" attribute.\r\n      \r\n      <customErrors defaultRedirect=\"GenericError.htm\"\r\n        mode=\"RemoteOnly\" xdt:Transform=\"Replace\">\r\n        <error statusCode=\"500\" redirect=\"InternalError.htm\"/>\r\n      </customErrors>\r\n    -->\r\n  </system.web>\r\n</configuration>"
  },
  {
    "path": "litmus/LitmusTests.Web/Web.config",
    "content": "﻿<?xml version=\"1.0\"?>\r\n\r\n<!--\r\n  For more information on how to configure your ASP.NET application, please visit\r\n  http://go.microsoft.com/fwlink/?LinkId=169433\r\n  -->\r\n\r\n<configuration>\r\n    <system.web>\r\n      <compilation debug=\"true\" targetFramework=\"4.0\" />\r\n    </system.web>\r\n\r\n</configuration>\r\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"fayde\",\n  \"version\": \"0.19.19\",\n  \"description\": \"Cross-platform/cross-browser XAML framework\",\n  \"main\": \"Gruntfile.js\",\n  \"directories\": {\n    \"test\": \"test\"\n  },\n  \"scripts\": {\n    \"test\": \"grunt test\"\n  },\n  \"homepage\": \"https://github.com/BSick7/Fayde\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/BSick7/Fayde\"\n  },\n  \"keywords\": [\n    \"xaml\",\n    \"silverlight\",\n    \"fayde\",\n    \"wpf\",\n    \"mvvm\"\n  ],\n  \"author\": \"Brad Sickles <brad.sickles@gmail.com>\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/BSick7/Fayde/issues\"\n  },\n  \"devDependencies\": {\n    \"bower-typings\": \"^0.1.0\",\n    \"connect-livereload\": \"^0.5.0\",\n    \"del\": \"^1.2.0\",\n    \"fayde-unify\": \"^0.4.14\",\n    \"glob\": \"^5.0.5\",\n    \"gulp\": \"^3.8.11\",\n    \"gulp-bower\": \"0.0.10\",\n    \"gulp-bump\": \"^0.3.0\",\n    \"gulp-connect\": \"^2.2.0\",\n    \"gulp-open\": \"^0.3.2\",\n    \"gulp-qunit\": \"^1.2.1\",\n    \"gulp-rename\": \"^1.2.2\",\n    \"gulp-sourcemaps\": \"^1.5.1\",\n    \"gulp-task-listing\": \"^1.0.1\",\n    \"gulp-typescript\": \"2.9.0\",\n    \"gulp-uglify\": \"^1.2.0\",\n    \"merge2\": \"^0.3.3\",\n    \"run-sequence\": \"^1.0.2\",\n    \"version-ts\": \"^0.1.1\",\n    \"vinyl-fs\": \"^2.3.1\"\n  }\n}\n"
  },
  {
    "path": "proto/benchmarks/bitwise/test.html",
    "content": "﻿<!DOCTYPE html>\r\n\r\n<html>\r\n\t<head>\r\n\t\t<title>Bitwise Benchmark</title>\r\n\t\t\r\n\t\t<!-- Common Utilities -->\r\n\t\t\r\n\t\t<!-- Benchmarking utilities -->\r\n\t\t<script type=\"text/javascript\">\r\n\t\t    function log(html) {\r\n\t\t        document.getElementById('logDiv').innerHTML += html + '<br/><br/>'\r\n\t\t    }\r\n\r\n\t\t    function logTitle(title) {\r\n\t\t        document.getElementById('logDiv').innerHTML +=\r\n\t\t\t\t'=============================================<br/>' +\r\n\t\t\t\t'<b>' + title + '</b><br/>' +\r\n\t\t\t\t'=============================================' + '<br/><br/>'\r\n\t\t    }\r\n\r\n\t\t    function test(name, f) {\r\n\t\t        // Repeats each benchmark multiple times to smooth out anomalies\r\n\t\t        // Also tracks min and max times\r\n\r\n\t\t        if (!f) {\r\n\t\t            log('<i>' + name + ': Unsupported</i>');\r\n\t\t            return;\r\n\t\t        }\r\n\r\n\t\t        var runCount = 10;\r\n\t\t        var internalRunCount = 20000;\r\n\t\t        var totalTime = 0;\r\n\t\t        var minTime = 0;\r\n\t\t        var maxTime = 0;\r\n\r\n\t\t        for (var i = 0; i < runCount; ++i) {\r\n\t\t            var time = f(internalRunCount);\r\n\t\t            if (i == 0) {\r\n\t\t                minTime = time;\r\n\t\t                maxTime = time;\r\n\t\t            } else {\r\n\t\t                if (minTime > time) { minTime = time; }\r\n\t\t                if (maxTime < time) { maxTime = time; }\r\n\t\t            }\r\n\t\t            totalTime += time;\r\n\t\t        }\r\n\r\n\t\t        var avg = totalTime / runCount;\r\n\t\t        var avgCycle =  avg / internalRunCount;\r\n\r\n\t\t        log('<i>' + name + '</i> - Avg: <b>' + avg + 'ms</b>, Min: ' + minTime + 'ms, Max: ' + maxTime + 'ms' + '; Avg Op: ' + avgCycle + ' ms');\r\n\t\t    }\r\n\r\n\t\t    function testSet(name, tests) {\r\n\t\t        setTimeout(function () {\r\n\t\t            logTitle(name);\r\n\t\t            for (var i = 0; i < tests.length; ++i) {\r\n\t\t                test(tests[i].name, tests[i].test);\r\n\t\t            }\r\n\t\t        }, 1);\r\n\t\t    }\r\n\t\t</script>\r\n\t\t\r\n\t\t<!-- Benchmarks -->\r\n\t\t<script type=\"text/javascript\">\r\n\t\t    function testMain() {\r\n\r\n\t\t        testSet('Has Flag', [\r\n\t\t\t\t\t{ name: 'Bitwise', test: function (count) {\r\n\t\t\t\t\t    var flags = Math.floor(Math.random() * (1 << 32));\r\n\t\t\t\t\t    var r = Math.random() * 32;\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; i++) {\r\n\t\t\t\t\t        var bit = 1 << r;\r\n\t\t\t\t\t        var has = false;\r\n\t\t\t\t\t        if (flags & bit)\r\n\t\t\t\t\t            has = true;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'Hash', test: function (count) {\r\n\t\t\t\t\t    var hash = [];\r\n\t\t\t\t\t    var flags = Math.floor(Math.random() * (1 << 32));\r\n\t\t\t\t\t    for (var i = 0; i < 32; i++) {\r\n\t\t\t\t\t        var bit = 1 << i;\r\n\t\t\t\t\t        if (flags & bit)\r\n\t\t\t\t\t            hash[bit] = true;\r\n\t\t\t\t\t    }\r\n\r\n\t\t\t\t\t    var r = Math.random() * 32;\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; i++) {\r\n\t\t\t\t\t        var bit = 1 << r;\r\n\t\t\t\t\t        has = hash[bit];\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]);\r\n\r\n\t\t\t\t\ttestSet('Set Flag', [\r\n\t\t\t\t\t{ name: 'Bitwise', test: function (count) {\r\n\t\t\t\t\t    var flags = 0;\r\n\t\t\t\t\t    var r = Math.random() * 32;\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; i++) {\r\n\t\t\t\t\t        var bit = 1 << r;\r\n\t\t\t\t\t        flags |= bit;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'Hash', test: function (count) {\r\n\t\t\t\t\t    var hash = [];\r\n\r\n\t\t\t\t\t    var r = Math.random() * 32;\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; i++) {\r\n\t\t\t\t\t        var bit = 1 << r;\r\n\t\t\t\t\t        hash[bit] = true;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]);\r\n\t\t    }\r\n        </script>\r\n\t\t\r\n\t\t<style type=\"text/css\">\r\n\t\t\tbody {\r\n\t\t\t\tfont: 0.8em Verdana,sans-serif;\r\n\t\t\t}\r\n\t\t</style>\r\n\t</head>\r\n\t<body onload=\"testMain()\">\r\n\t\t<div id=\"logDiv\"></div>\r\n\t</body>\r\n</html>"
  },
  {
    "path": "proto/benchmarks/matrix/CanvasMatrix.js",
    "content": "/*\r\n * Copyright (C) 2009 Apple Inc. All Rights Reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions\r\n * are met:\r\n * 1. Redistributions of source code must retain the above copyright\r\n *    notice, this list of conditions and the following disclaimer.\r\n * 2. Redistributions in binary form must reproduce the above copyright\r\n *    notice, this list of conditions and the following disclaimer in the\r\n *    documentation and/or other materials provided with the distribution.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r\n * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR\r\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\r\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\r\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \r\n */\r\n/*\r\n    CanvasMatrix4 class\r\n    \r\n    This class implements a 4x4 matrix. It has functions which\r\n    duplicate the functionality of the OpenGL matrix stack and\r\n    glut functions.\r\n    \r\n    IDL:\r\n    \r\n    [\r\n        Constructor(in CanvasMatrix4 matrix),           // copy passed matrix into new CanvasMatrix4\r\n        Constructor(in sequence<float> array)           // create new CanvasMatrix4 with 16 floats (row major)\r\n        Constructor()                                   // create new CanvasMatrix4 with identity matrix\r\n    ]\r\n    interface CanvasMatrix4 {\r\n        attribute float m11;\r\n        attribute float m12;\r\n        attribute float m13;\r\n        attribute float m14;\r\n        attribute float m21;\r\n        attribute float m22;\r\n        attribute float m23;\r\n        attribute float m24;\r\n        attribute float m31;\r\n        attribute float m32;\r\n        attribute float m33;\r\n        attribute float m34;\r\n        attribute float m41;\r\n        attribute float m42;\r\n        attribute float m43;\r\n        attribute float m44;\r\n\r\n        void load(in CanvasMatrix4 matrix);                 // copy the values from the passed matrix\r\n        void load(in sequence<float> array);                // copy 16 floats into the matrix\r\n        sequence<float> getAsArray();                       // return the matrix as an array of 16 floats\r\n        WebGLFloatArray getAsCanvasFloatArray();           // return the matrix as a WebGLFloatArray with 16 values\r\n        void makeIdentity();                                // replace the matrix with identity\r\n        void transpose();                                   // replace the matrix with its transpose\r\n        void invert();                                      // replace the matrix with its inverse\r\n        \r\n        void translate(in float x, in float y, in float z); // multiply the matrix by passed translation values on the right\r\n        void scale(in float x, in float y, in float z);     // multiply the matrix by passed scale values on the right\r\n        void rotate(in float angle,                         // multiply the matrix by passed rotation values on the right\r\n                    in float x, in float y, in float z);    // (angle is in degrees)\r\n        void multRight(in CanvasMatrix matrix);             // multiply the matrix by the passed matrix on the right\r\n        void multLeft(in CanvasMatrix matrix);              // multiply the matrix by the passed matrix on the left\r\n        void ortho(in float left, in float right,           // multiply the matrix by the passed ortho values on the right\r\n                   in float bottom, in float top, \r\n                   in float near, in float far);\r\n        void frustum(in float left, in float right,         // multiply the matrix by the passed frustum values on the right\r\n                     in float bottom, in float top, \r\n                     in float near, in float far);\r\n        void perspective(in float fovy, in float aspect,    // multiply the matrix by the passed perspective values on the right\r\n                         in float zNear, in float zFar);\r\n        void lookat(in float eyex, in float eyey, in float eyez,    // multiply the matrix by the passed lookat \r\n                    in float ctrx, in float ctry, in float ctrz,    // values on the right\r\n                    in float upx, in float upy, in float upz);\r\n    }\r\n*/\r\n\r\nCanvasMatrix4 = function(m)\r\n{\r\n    if (typeof m == 'object') {\r\n        if (\"length\" in m && m.length >= 16) {\r\n            this.load(m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], m[12], m[13], m[14], m[15]);\r\n            return;\r\n        }\r\n        else if (m instanceof CanvasMatrix4) {\r\n            this.load(m);\r\n            return;\r\n        }\r\n    }\r\n    this.makeIdentity();\r\n}\r\n\r\nCanvasMatrix4.prototype.load = function()\r\n{\r\n    if (arguments.length == 1 && typeof arguments[0] == 'object') {\r\n        var matrix = arguments[0];\r\n        \r\n        if (\"length\" in matrix && matrix.length == 16) {\r\n            this.m11 = matrix[0];\r\n            this.m12 = matrix[1];\r\n            this.m13 = matrix[2];\r\n            this.m14 = matrix[3];\r\n\r\n            this.m21 = matrix[4];\r\n            this.m22 = matrix[5];\r\n            this.m23 = matrix[6];\r\n            this.m24 = matrix[7];\r\n\r\n            this.m31 = matrix[8];\r\n            this.m32 = matrix[9];\r\n            this.m33 = matrix[10];\r\n            this.m34 = matrix[11];\r\n\r\n            this.m41 = matrix[12];\r\n            this.m42 = matrix[13];\r\n            this.m43 = matrix[14];\r\n            this.m44 = matrix[15];\r\n            return;\r\n        }\r\n            \r\n        if (arguments[0] instanceof CanvasMatrix4) {\r\n        \r\n            this.m11 = matrix.m11;\r\n            this.m12 = matrix.m12;\r\n            this.m13 = matrix.m13;\r\n            this.m14 = matrix.m14;\r\n\r\n            this.m21 = matrix.m21;\r\n            this.m22 = matrix.m22;\r\n            this.m23 = matrix.m23;\r\n            this.m24 = matrix.m24;\r\n\r\n            this.m31 = matrix.m31;\r\n            this.m32 = matrix.m32;\r\n            this.m33 = matrix.m33;\r\n            this.m34 = matrix.m34;\r\n\r\n            this.m41 = matrix.m41;\r\n            this.m42 = matrix.m42;\r\n            this.m43 = matrix.m43;\r\n            this.m44 = matrix.m44;\r\n            return;\r\n        }\r\n    }\r\n    \r\n    this.makeIdentity();\r\n}\r\n\r\nCanvasMatrix4.prototype.getAsArray = function()\r\n{\r\n    return [\r\n        this.m11, this.m12, this.m13, this.m14, \r\n        this.m21, this.m22, this.m23, this.m24, \r\n        this.m31, this.m32, this.m33, this.m34, \r\n        this.m41, this.m42, this.m43, this.m44\r\n    ];\r\n}\r\n\r\nCanvasMatrix4.prototype.getAsWebGLFloatArray = function()\r\n{\r\n    return new WebGLFloatArray(this.getAsArray());\r\n}\r\n\r\nCanvasMatrix4.prototype.makeIdentity = function()\r\n{\r\n    this.m11 = 1;\r\n    this.m12 = 0;\r\n    this.m13 = 0;\r\n    this.m14 = 0;\r\n    \r\n    this.m21 = 0;\r\n    this.m22 = 1;\r\n    this.m23 = 0;\r\n    this.m24 = 0;\r\n    \r\n    this.m31 = 0;\r\n    this.m32 = 0;\r\n    this.m33 = 1;\r\n    this.m34 = 0;\r\n    \r\n    this.m41 = 0;\r\n    this.m42 = 0;\r\n    this.m43 = 0;\r\n    this.m44 = 1;\r\n}\r\n\r\nCanvasMatrix4.prototype.transpose = function()\r\n{\r\n    var tmp = this.m12;\r\n    this.m12 = this.m21;\r\n    this.m21 = tmp;\r\n    \r\n    tmp = this.m13;\r\n    this.m13 = this.m31;\r\n    this.m31 = tmp;\r\n    \r\n    tmp = this.m14;\r\n    this.m14 = this.m41;\r\n    this.m41 = tmp;\r\n    \r\n    tmp = this.m23;\r\n    this.m23 = this.m32;\r\n    this.m32 = tmp;\r\n    \r\n    tmp = this.m24;\r\n    this.m24 = this.m42;\r\n    this.m42 = tmp;\r\n    \r\n    tmp = this.m34;\r\n    this.m34 = this.m43;\r\n    this.m43 = tmp;\r\n}\r\n\r\nCanvasMatrix4.prototype.invert = function()\r\n{\r\n    // Calculate the 4x4 determinant\r\n    // If the determinant is zero, \r\n    // then the inverse matrix is not unique.\r\n    var det = this._determinant4x4();\r\n\r\n    if (Math.abs(det) < 1e-8)\r\n        return null;\r\n\r\n    this._makeAdjoint();\r\n\r\n    // Scale the adjoint matrix to get the inverse\r\n    this.m11 /= det;\r\n    this.m12 /= det;\r\n    this.m13 /= det;\r\n    this.m14 /= det;\r\n    \r\n    this.m21 /= det;\r\n    this.m22 /= det;\r\n    this.m23 /= det;\r\n    this.m24 /= det;\r\n    \r\n    this.m31 /= det;\r\n    this.m32 /= det;\r\n    this.m33 /= det;\r\n    this.m34 /= det;\r\n    \r\n    this.m41 /= det;\r\n    this.m42 /= det;\r\n    this.m43 /= det;\r\n    this.m44 /= det;\r\n}\r\n\r\nCanvasMatrix4.prototype.translate = function(x,y,z)\r\n{\r\n    if (x == undefined)\r\n        x = 0;\r\n        if (y == undefined)\r\n            y = 0;\r\n    if (z == undefined)\r\n        z = 0;\r\n    \r\n    var matrix = new CanvasMatrix4();\r\n    matrix.m41 = x;\r\n    matrix.m42 = y;\r\n    matrix.m43 = z;\r\n\r\n    this.multRight(matrix);\r\n}\r\n\r\nCanvasMatrix4.prototype.scale = function(x,y,z)\r\n{\r\n    if (x == undefined)\r\n        x = 1;\r\n    if (z == undefined) {\r\n        if (y == undefined) {\r\n            y = x;\r\n            z = x;\r\n        }\r\n        else\r\n            z = 1;\r\n    }\r\n    else if (y == undefined)\r\n        y = x;\r\n    \r\n    var matrix = new CanvasMatrix4();\r\n    matrix.m11 = x;\r\n    matrix.m22 = y;\r\n    matrix.m33 = z;\r\n    \r\n    this.multRight(matrix);\r\n}\r\n\r\nCanvasMatrix4.prototype.rotate = function(angle,x,y,z)\r\n{\r\n    // angles are in degrees. Switch to radians\r\n    angle = angle / 180 * Math.PI;\r\n    \r\n    angle /= 2;\r\n    var sinA = Math.sin(angle);\r\n    var cosA = Math.cos(angle);\r\n    var sinA2 = sinA * sinA;\r\n    \r\n    // normalize\r\n    var length = Math.sqrt(x * x + y * y + z * z);\r\n    if (length == 0) {\r\n        // bad vector, just use something reasonable\r\n        x = 0;\r\n        y = 0;\r\n        z = 1;\r\n    } else if (length != 1) {\r\n        x /= length;\r\n        y /= length;\r\n        z /= length;\r\n    }\r\n    \r\n    var mat = new CanvasMatrix4();\r\n\r\n    // optimize case where axis is along major axis\r\n    if (x == 1 && y == 0 && z == 0) {\r\n        mat.m11 = 1;\r\n        mat.m12 = 0;\r\n        mat.m13 = 0;\r\n        mat.m21 = 0;\r\n        mat.m22 = 1 - 2 * sinA2;\r\n        mat.m23 = 2 * sinA * cosA;\r\n        mat.m31 = 0;\r\n        mat.m32 = -2 * sinA * cosA;\r\n        mat.m33 = 1 - 2 * sinA2;\r\n        mat.m14 = mat.m24 = mat.m34 = 0;\r\n        mat.m41 = mat.m42 = mat.m43 = 0;\r\n        mat.m44 = 1;\r\n    } else if (x == 0 && y == 1 && z == 0) {\r\n        mat.m11 = 1 - 2 * sinA2;\r\n        mat.m12 = 0;\r\n        mat.m13 = -2 * sinA * cosA;\r\n        mat.m21 = 0;\r\n        mat.m22 = 1;\r\n        mat.m23 = 0;\r\n        mat.m31 = 2 * sinA * cosA;\r\n        mat.m32 = 0;\r\n        mat.m33 = 1 - 2 * sinA2;\r\n        mat.m14 = mat.m24 = mat.m34 = 0;\r\n        mat.m41 = mat.m42 = mat.m43 = 0;\r\n        mat.m44 = 1;\r\n    } else if (x == 0 && y == 0 && z == 1) {\r\n        mat.m11 = 1 - 2 * sinA2;\r\n        mat.m12 = 2 * sinA * cosA;\r\n        mat.m13 = 0;\r\n        mat.m21 = -2 * sinA * cosA;\r\n        mat.m22 = 1 - 2 * sinA2;\r\n        mat.m23 = 0;\r\n        mat.m31 = 0;\r\n        mat.m32 = 0;\r\n        mat.m33 = 1;\r\n        mat.m14 = mat.m24 = mat.m34 = 0;\r\n        mat.m41 = mat.m42 = mat.m43 = 0;\r\n        mat.m44 = 1;\r\n    } else {\r\n        var x2 = x*x;\r\n        var y2 = y*y;\r\n        var z2 = z*z;\r\n    \r\n        mat.m11 = 1 - 2 * (y2 + z2) * sinA2;\r\n        mat.m12 = 2 * (x * y * sinA2 + z * sinA * cosA);\r\n        mat.m13 = 2 * (x * z * sinA2 - y * sinA * cosA);\r\n        mat.m21 = 2 * (y * x * sinA2 - z * sinA * cosA);\r\n        mat.m22 = 1 - 2 * (z2 + x2) * sinA2;\r\n        mat.m23 = 2 * (y * z * sinA2 + x * sinA * cosA);\r\n        mat.m31 = 2 * (z * x * sinA2 + y * sinA * cosA);\r\n        mat.m32 = 2 * (z * y * sinA2 - x * sinA * cosA);\r\n        mat.m33 = 1 - 2 * (x2 + y2) * sinA2;\r\n        mat.m14 = mat.m24 = mat.m34 = 0;\r\n        mat.m41 = mat.m42 = mat.m43 = 0;\r\n        mat.m44 = 1;\r\n    }\r\n    this.multRight(mat);\r\n}\r\n\r\nCanvasMatrix4.prototype.multRight = function(mat)\r\n{\r\n    var m11 = (this.m11 * mat.m11 + this.m12 * mat.m21\r\n               + this.m13 * mat.m31 + this.m14 * mat.m41);\r\n    var m12 = (this.m11 * mat.m12 + this.m12 * mat.m22\r\n               + this.m13 * mat.m32 + this.m14 * mat.m42);\r\n    var m13 = (this.m11 * mat.m13 + this.m12 * mat.m23\r\n               + this.m13 * mat.m33 + this.m14 * mat.m43);\r\n    var m14 = (this.m11 * mat.m14 + this.m12 * mat.m24\r\n               + this.m13 * mat.m34 + this.m14 * mat.m44);\r\n\r\n    var m21 = (this.m21 * mat.m11 + this.m22 * mat.m21\r\n               + this.m23 * mat.m31 + this.m24 * mat.m41);\r\n    var m22 = (this.m21 * mat.m12 + this.m22 * mat.m22\r\n               + this.m23 * mat.m32 + this.m24 * mat.m42);\r\n    var m23 = (this.m21 * mat.m13 + this.m22 * mat.m23\r\n               + this.m23 * mat.m33 + this.m24 * mat.m43);\r\n    var m24 = (this.m21 * mat.m14 + this.m22 * mat.m24\r\n               + this.m23 * mat.m34 + this.m24 * mat.m44);\r\n\r\n    var m31 = (this.m31 * mat.m11 + this.m32 * mat.m21\r\n               + this.m33 * mat.m31 + this.m34 * mat.m41);\r\n    var m32 = (this.m31 * mat.m12 + this.m32 * mat.m22\r\n               + this.m33 * mat.m32 + this.m34 * mat.m42);\r\n    var m33 = (this.m31 * mat.m13 + this.m32 * mat.m23\r\n               + this.m33 * mat.m33 + this.m34 * mat.m43);\r\n    var m34 = (this.m31 * mat.m14 + this.m32 * mat.m24\r\n               + this.m33 * mat.m34 + this.m34 * mat.m44);\r\n\r\n    var m41 = (this.m41 * mat.m11 + this.m42 * mat.m21\r\n               + this.m43 * mat.m31 + this.m44 * mat.m41);\r\n    var m42 = (this.m41 * mat.m12 + this.m42 * mat.m22\r\n               + this.m43 * mat.m32 + this.m44 * mat.m42);\r\n    var m43 = (this.m41 * mat.m13 + this.m42 * mat.m23\r\n               + this.m43 * mat.m33 + this.m44 * mat.m43);\r\n    var m44 = (this.m41 * mat.m14 + this.m42 * mat.m24\r\n               + this.m43 * mat.m34 + this.m44 * mat.m44);\r\n    \r\n    this.m11 = m11;\r\n    this.m12 = m12;\r\n    this.m13 = m13;\r\n    this.m14 = m14;\r\n    \r\n    this.m21 = m21;\r\n    this.m22 = m22;\r\n    this.m23 = m23;\r\n    this.m24 = m24;\r\n    \r\n    this.m31 = m31;\r\n    this.m32 = m32;\r\n    this.m33 = m33;\r\n    this.m34 = m34;\r\n    \r\n    this.m41 = m41;\r\n    this.m42 = m42;\r\n    this.m43 = m43;\r\n    this.m44 = m44;\r\n}\r\n\r\nCanvasMatrix4.prototype.multLeft = function(mat)\r\n{\r\n    var m11 = (mat.m11 * this.m11 + mat.m12 * this.m21\r\n               + mat.m13 * this.m31 + mat.m14 * this.m41);\r\n    var m12 = (mat.m11 * this.m12 + mat.m12 * this.m22\r\n               + mat.m13 * this.m32 + mat.m14 * this.m42);\r\n    var m13 = (mat.m11 * this.m13 + mat.m12 * this.m23\r\n               + mat.m13 * this.m33 + mat.m14 * this.m43);\r\n    var m14 = (mat.m11 * this.m14 + mat.m12 * this.m24\r\n               + mat.m13 * this.m34 + mat.m14 * this.m44);\r\n\r\n    var m21 = (mat.m21 * this.m11 + mat.m22 * this.m21\r\n               + mat.m23 * this.m31 + mat.m24 * this.m41);\r\n    var m22 = (mat.m21 * this.m12 + mat.m22 * this.m22\r\n               + mat.m23 * this.m32 + mat.m24 * this.m42);\r\n    var m23 = (mat.m21 * this.m13 + mat.m22 * this.m23\r\n               + mat.m23 * this.m33 + mat.m24 * this.m43);\r\n    var m24 = (mat.m21 * this.m14 + mat.m22 * this.m24\r\n               + mat.m23 * this.m34 + mat.m24 * this.m44);\r\n\r\n    var m31 = (mat.m31 * this.m11 + mat.m32 * this.m21\r\n               + mat.m33 * this.m31 + mat.m34 * this.m41);\r\n    var m32 = (mat.m31 * this.m12 + mat.m32 * this.m22\r\n               + mat.m33 * this.m32 + mat.m34 * this.m42);\r\n    var m33 = (mat.m31 * this.m13 + mat.m32 * this.m23\r\n               + mat.m33 * this.m33 + mat.m34 * this.m43);\r\n    var m34 = (mat.m31 * this.m14 + mat.m32 * this.m24\r\n               + mat.m33 * this.m34 + mat.m34 * this.m44);\r\n\r\n    var m41 = (mat.m41 * this.m11 + mat.m42 * this.m21\r\n               + mat.m43 * this.m31 + mat.m44 * this.m41);\r\n    var m42 = (mat.m41 * this.m12 + mat.m42 * this.m22\r\n               + mat.m43 * this.m32 + mat.m44 * this.m42);\r\n    var m43 = (mat.m41 * this.m13 + mat.m42 * this.m23\r\n               + mat.m43 * this.m33 + mat.m44 * this.m43);\r\n    var m44 = (mat.m41 * this.m14 + mat.m42 * this.m24\r\n               + mat.m43 * this.m34 + mat.m44 * this.m44);\r\n    \r\n    this.m11 = m11;\r\n    this.m12 = m12;\r\n    this.m13 = m13;\r\n    this.m14 = m14;\r\n\r\n    this.m21 = m21;\r\n    this.m22 = m22;\r\n    this.m23 = m23;\r\n    this.m24 = m24;\r\n\r\n    this.m31 = m31;\r\n    this.m32 = m32;\r\n    this.m33 = m33;\r\n    this.m34 = m34;\r\n\r\n    this.m41 = m41;\r\n    this.m42 = m42;\r\n    this.m43 = m43;\r\n    this.m44 = m44;\r\n}\r\n\r\nCanvasMatrix4.prototype.ortho = function(left, right, bottom, top, near, far)\r\n{\r\n    var tx = (left + right) / (left - right);\r\n    var ty = (top + bottom) / (top - bottom);\r\n    var tz = (far + near) / (far - near);\r\n    \r\n    var matrix = new CanvasMatrix4();\r\n    matrix.m11 = 2 / (left - right);\r\n    matrix.m12 = 0;\r\n    matrix.m13 = 0;\r\n    matrix.m14 = 0;\r\n    matrix.m21 = 0;\r\n    matrix.m22 = 2 / (top - bottom);\r\n    matrix.m23 = 0;\r\n    matrix.m24 = 0;\r\n    matrix.m31 = 0;\r\n    matrix.m32 = 0;\r\n    matrix.m33 = -2 / (far - near);\r\n    matrix.m34 = 0;\r\n    matrix.m41 = tx;\r\n    matrix.m42 = ty;\r\n    matrix.m43 = tz;\r\n    matrix.m44 = 1;\r\n    \r\n    this.multRight(matrix);\r\n}\r\n\r\nCanvasMatrix4.prototype.frustum = function(left, right, bottom, top, near, far)\r\n{\r\n    var matrix = new CanvasMatrix4();\r\n    var A = (right + left) / (right - left);\r\n    var B = (top + bottom) / (top - bottom);\r\n    var C = -(far + near) / (far - near);\r\n    var D = -(2 * far * near) / (far - near);\r\n    \r\n    matrix.m11 = (2 * near) / (right - left);\r\n    matrix.m12 = 0;\r\n    matrix.m13 = 0;\r\n    matrix.m14 = 0;\r\n    \r\n    matrix.m21 = 0;\r\n    matrix.m22 = 2 * near / (top - bottom);\r\n    matrix.m23 = 0;\r\n    matrix.m24 = 0;\r\n    \r\n    matrix.m31 = A;\r\n    matrix.m32 = B;\r\n    matrix.m33 = C;\r\n    matrix.m34 = -1;\r\n    \r\n    matrix.m41 = 0;\r\n    matrix.m42 = 0;\r\n    matrix.m43 = D;\r\n    matrix.m44 = 0;\r\n    \r\n    this.multRight(matrix);\r\n}\r\n\r\nCanvasMatrix4.prototype.perspective = function(fovy, aspect, zNear, zFar)\r\n{\r\n    var top = Math.tan(fovy * Math.PI / 360) * zNear;\r\n    var bottom = -top;\r\n    var left = aspect * bottom;\r\n    var right = aspect * top;\r\n    this.frustum(left, right, bottom, top, zNear, zFar);\r\n}\r\n\r\nCanvasMatrix4.prototype.lookat = function(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz)\r\n{\r\n    var matrix = new CanvasMatrix4();\r\n    \r\n    // Make rotation matrix\r\n\r\n    // Z vector\r\n    var zx = eyex - centerx;\r\n    var zy = eyey - centery;\r\n    var zz = eyez - centerz;\r\n    var mag = Math.sqrt(zx * zx + zy * zy + zz * zz);\r\n    if (mag) {\r\n        zx /= mag;\r\n        zy /= mag;\r\n        zz /= mag;\r\n    }\r\n\r\n    // Y vector\r\n    var yx = upx;\r\n    var yy = upy;\r\n    var yz = upz;\r\n\r\n    // X vector = Y cross Z\r\n    xx =  yy * zz - yz * zy;\r\n    xy = -yx * zz + yz * zx;\r\n    xz =  yx * zy - yy * zx;\r\n\r\n    // Recompute Y = Z cross X\r\n    yx = zy * xz - zz * xy;\r\n    yy = -zx * xz + zz * xx;\r\n    yx = zx * xy - zy * xx;\r\n\r\n    // cross product gives area of parallelogram, which is < 1.0 for\r\n    // non-perpendicular unit-length vectors; so normalize x, y here\r\n\r\n    mag = Math.sqrt(xx * xx + xy * xy + xz * xz);\r\n    if (mag) {\r\n        xx /= mag;\r\n        xy /= mag;\r\n        xz /= mag;\r\n    }\r\n\r\n    mag = Math.sqrt(yx * yx + yy * yy + yz * yz);\r\n    if (mag) {\r\n        yx /= mag;\r\n        yy /= mag;\r\n        yz /= mag;\r\n    }\r\n\r\n    matrix.m11 = xx;\r\n    matrix.m12 = xy;\r\n    matrix.m13 = xz;\r\n    matrix.m14 = 0;\r\n    \r\n    matrix.m21 = yx;\r\n    matrix.m22 = yy;\r\n    matrix.m23 = yz;\r\n    matrix.m24 = 0;\r\n    \r\n    matrix.m31 = zx;\r\n    matrix.m32 = zy;\r\n    matrix.m33 = zz;\r\n    matrix.m34 = 0;\r\n    \r\n    matrix.m41 = 0;\r\n    matrix.m42 = 0;\r\n    matrix.m43 = 0;\r\n    matrix.m44 = 1;\r\n    matrix.translate(-eyex, -eyey, -eyez);\r\n    \r\n    this.multRight(matrix);\r\n}\r\n\r\n// Support functions\r\nCanvasMatrix4.prototype._determinant2x2 = function(a, b, c, d)\r\n{\r\n    return a * d - b * c;\r\n}\r\n\r\nCanvasMatrix4.prototype._determinant3x3 = function(a1, a2, a3, b1, b2, b3, c1, c2, c3)\r\n{\r\n    return a1 * this._determinant2x2(b2, b3, c2, c3)\r\n         - b1 * this._determinant2x2(a2, a3, c2, c3)\r\n         + c1 * this._determinant2x2(a2, a3, b2, b3);\r\n}\r\n\r\nCanvasMatrix4.prototype._determinant4x4 = function()\r\n{\r\n    var a1 = this.m11;\r\n    var b1 = this.m12; \r\n    var c1 = this.m13;\r\n    var d1 = this.m14;\r\n\r\n    var a2 = this.m21;\r\n    var b2 = this.m22; \r\n    var c2 = this.m23;\r\n    var d2 = this.m24;\r\n\r\n    var a3 = this.m31;\r\n    var b3 = this.m32; \r\n    var c3 = this.m33;\r\n    var d3 = this.m34;\r\n\r\n    var a4 = this.m41;\r\n    var b4 = this.m42; \r\n    var c4 = this.m43;\r\n    var d4 = this.m44;\r\n\r\n    return a1 * this._determinant3x3(b2, b3, b4, c2, c3, c4, d2, d3, d4)\r\n         - b1 * this._determinant3x3(a2, a3, a4, c2, c3, c4, d2, d3, d4)\r\n         + c1 * this._determinant3x3(a2, a3, a4, b2, b3, b4, d2, d3, d4)\r\n         - d1 * this._determinant3x3(a2, a3, a4, b2, b3, b4, c2, c3, c4);\r\n}\r\n\r\nCanvasMatrix4.prototype._makeAdjoint = function()\r\n{\r\n    var a1 = this.m11;\r\n    var b1 = this.m12; \r\n    var c1 = this.m13;\r\n    var d1 = this.m14;\r\n\r\n    var a2 = this.m21;\r\n    var b2 = this.m22; \r\n    var c2 = this.m23;\r\n    var d2 = this.m24;\r\n\r\n    var a3 = this.m31;\r\n    var b3 = this.m32; \r\n    var c3 = this.m33;\r\n    var d3 = this.m34;\r\n\r\n    var a4 = this.m41;\r\n    var b4 = this.m42; \r\n    var c4 = this.m43;\r\n    var d4 = this.m44;\r\n\r\n    // Row column labeling reversed since we transpose rows & columns\r\n    this.m11  =   this._determinant3x3(b2, b3, b4, c2, c3, c4, d2, d3, d4);\r\n    this.m21  = - this._determinant3x3(a2, a3, a4, c2, c3, c4, d2, d3, d4);\r\n    this.m31  =   this._determinant3x3(a2, a3, a4, b2, b3, b4, d2, d3, d4);\r\n    this.m41  = - this._determinant3x3(a2, a3, a4, b2, b3, b4, c2, c3, c4);\r\n        \r\n    this.m12  = - this._determinant3x3(b1, b3, b4, c1, c3, c4, d1, d3, d4);\r\n    this.m22  =   this._determinant3x3(a1, a3, a4, c1, c3, c4, d1, d3, d4);\r\n    this.m32  = - this._determinant3x3(a1, a3, a4, b1, b3, b4, d1, d3, d4);\r\n    this.m42  =   this._determinant3x3(a1, a3, a4, b1, b3, b4, c1, c3, c4);\r\n        \r\n    this.m13  =   this._determinant3x3(b1, b2, b4, c1, c2, c4, d1, d2, d4);\r\n    this.m23  = - this._determinant3x3(a1, a2, a4, c1, c2, c4, d1, d2, d4);\r\n    this.m33  =   this._determinant3x3(a1, a2, a4, b1, b2, b4, d1, d2, d4);\r\n    this.m43  = - this._determinant3x3(a1, a2, a4, b1, b2, b4, c1, c2, c4);\r\n        \r\n    this.m14  = - this._determinant3x3(b1, b2, b3, c1, c2, c3, d1, d2, d3);\r\n    this.m24  =   this._determinant3x3(a1, a2, a3, c1, c2, c3, d1, d2, d3);\r\n    this.m34  = - this._determinant3x3(a1, a2, a3, b1, b2, b3, d1, d2, d3);\r\n    this.m44  =   this._determinant3x3(a1, a2, a3, b1, b2, b3, c1, c2, c3);\r\n}\r\n"
  },
  {
    "path": "proto/benchmarks/matrix/Matrix3D.js",
    "content": "﻿/// <reference path=\"Matrix.js\"/>\r\n\r\nfunction Matrix3D() {\r\n    /// _Elements -> 16 element array\r\n    ///  [  0  1  2  3 ] \r\n    ///  [  4  5  6  7 ]\r\n    ///  [  8  9 10 11 ] \r\n    ///  [ 12 13 14 15 ]\r\n    this._Elements = [\r\n        1, 0, 0, 0,\r\n        0, 1, 0, 0,\r\n        0, 0, 1, 0,\r\n        0, 0, 0, 1\r\n    ];\r\n}\r\nObject.defineProperty(Matrix3D.prototype, \"Inverse\", {\r\n    get: function () {\r\n        if (!this._InverseEls)\r\n            this._InverseEls = Matrix3D._CalculateInverse(this);\r\n        var m3 = new Matrix3D();\r\n        m3._Elements = this._InverseEls;\r\n        m3._InverseEls = this._Elements;\r\n        return m3;\r\n    }\r\n});\r\nMatrix3D.prototype.toString = function () {\r\n    return this._Elements.toString();\r\n};\r\n\r\nMatrix3D.Init = function (A, B) {\r\n    /// <summary>Copies B onto A.</summary>\r\n    /// <param name=\"A\" type=\"Matrix3D\"></param>\r\n    /// <param name=\"B\" type=\"Matrix3D\"></param>\r\n    A._Elements = B._Elements.slice(0);\r\n};\r\nMatrix3D.CreateAffine = function (matrix) {\r\n    /// <param name=\"matrix\" type=\"Matrix\"></param>\r\n    /// <returns type=\"Matrix3D\" />\r\n    var els = matrix._Elements;\r\n    var m = new Matrix3D();\r\n    m._Elements = [\r\n        els[0], els[1], 0, els[2],\r\n        els[3], els[4], 0, els[5],\r\n        0, 0, 1, 0,\r\n        0, 0, 0, 1\r\n    ];\r\n    return m;\r\n};\r\nMatrix3D.Multiply = function (C, A, B) {\r\n    /// <summary>Sets C = A*B</summary>\r\n    /// <param name=\"C\" type=\"Matrix3D\"></param>\r\n    /// <param name=\"A\" type=\"Matrix3D\"></param>\r\n    /// <param name=\"B\" type=\"Matrix3D\"></param>\r\n\r\n    var c = C._Elements;\r\n    var a = A._Elements;\r\n    //if user passed in same in-mem Matrix3D for C and B, we don't want to overwrite values as we're using them\r\n    var b = B._Elements.slice(0);\r\n\r\n    c[0] = a[0] * b[0] + a[4] * b[1] + a[8] * b[2] + a[12] * b[3];\r\n    c[4] = a[0] * b[4] + a[4] * b[5] + a[8] * b[6] + a[12] * b[7];\r\n    c[8] = a[0] * b[8] + a[4] * b[9] + a[8] * b[10] + a[12] * b[11];\r\n    c[12] = a[0] * b[12] + a[4] * b[13] + a[8] * b[14] + a[12] * b[15];\r\n\r\n    c[1] = a[1] * b[0] + a[5] * b[1] + a[9] * b[2] + a[13] * b[3];\r\n    c[5] = a[1] * b[4] + a[5] * b[5] + a[9] * b[6] + a[13] * b[7];\r\n    c[9] = a[1] * b[8] + a[5] * b[9] + a[9] * b[10] + a[13] * b[11];\r\n    c[13] = a[1] * b[12] + a[5] * b[13] + a[9] * b[14] + a[13] * b[15];\r\n    \r\n    c[2] = a[2] * b[0] + a[6] * b[1] + a[10] * b[2] + a[14] * b[3];\r\n    c[6] = a[2] * b[4] + a[6] * b[5] + a[10] * b[6] + a[14] * b[7];\r\n    c[10] = a[2] * b[8] + a[6] * b[9] + a[10] * b[10] + a[14] * b[11];\r\n    c[14] = a[2] * b[12] + a[6] * b[13] + a[10] * b[14] + a[14] * b[15];\r\n    \r\n    c[3] = a[3] * b[0] + a[7] * b[1] + a[11] * b[2] + a[15] * b[3];\r\n    c[7] = a[3] * b[4] + a[7] * b[5] + a[11] * b[6] + a[15] * b[7];\r\n    c[11] = a[3] * b[8] + a[7] * b[9] + a[11] * b[10] + a[15] * b[11];\r\n    c[15] = a[3] * b[12] + a[7] * b[13] + a[11] * b[14] + a[15] * b[15];\r\n};\r\nMatrix3D.TransformPoint = function (c, A, b) {\r\n    /// <param name=\"c\" type=\"Array\">[x, y, z, w]</param>\r\n    /// <param name=\"A\" type=\"Matrix3D\"></param>\r\n    /// <param name=\"b\" type=\"Array\">[x, y, z, w]</param>\r\n    var e = A._Elements;\r\n    //if user passed in same in-mem point for c and b, we don't want to overwrite values as we're using them\r\n    var d = b.slice(0);\r\n    c[0] = e[0] * d[0] + e[1] * d[1] + e[2] * d[2] + e[3];\r\n    c[1] = e[4] * d[0] + e[5] * d[1] + e[6] * d[2] + e[7];\r\n    c[2] = e[8] * d[0] + e[9] * d[1] + e[10] * d[2] + e[11];\r\n    c[3] = e[12] * d[0] + e[13] * d[1] + e[14] * d[2] + e[15];\r\n};\r\nMatrix3D.TransformBounds = function (m3, bounds) {\r\n    /// <param name=\"m3\" type=\"Matrix3D\"></param>\r\n    /// <param name=\"bounds\" type=\"Rect\"></param>\r\n    /// <returns type=\"Rect\" />\r\n    var idels = [\r\n        1, 0, 0, 0,\r\n        0, 1, 0, 0,\r\n        0, 0, 1, 0,\r\n        0, 0, 0, 1\r\n    ];\r\n    if (!(m3._Elements < idels) && !(m3._Elements > idels)) //identity matrix\r\n        return new Rect(bounds.X, bounds.Y, bounds.Width, bounds.Height);\r\n\r\n    var p1 = [bounds.X, bounds.Y, 0.0, 1.0];\r\n    var p2 = [bounds.X + bounds.Width, bounds.Y, 0.0, 1.0];\r\n    var p3 = [bounds.X + bounds.Width, bounds.Y + bounds.Height, 0.0, 1.0];\r\n    var p4 = [bounds.X, bounds.Y + bounds.Height, 0.0, 1.0];\r\n\r\n    var tp = Matrix3D.TransformPoint;\r\n    tp(p1, m3, p1);\r\n    tp(p2, m3, p2);\r\n    tp(p3, m3, p3);\r\n    tp(p4, m3, p4);\r\n\r\n    var vs = 65536.0;\r\n    var vsr = 1.0 / vs;\r\n    p1[0] *= vsr;\r\n    p1[1] *= vsr;\r\n    p2[0] *= vsr;\r\n    p2[1] *= vsr;\r\n    p3[0] *= vsr;\r\n    p3[1] *= vsr;\r\n    p4[0] *= vsr;\r\n    p4[1] *= vsr;\r\n\r\n    var clipmask = Matrix3D._ClipMask;\r\n    var cm1 = clipmask(p1);\r\n    var cm2 = clipmask(p2);\r\n    var cm3 = clipmask(p3);\r\n    var cm4 = clipmask(p4);\r\n\r\n    if ((cm1 | cm2 | cm3 | cm4) !== 0) {\r\n        bounds = new Rect();\r\n        if ((cm1 & cm2 & cm3 & cm4) === 0) {\r\n            NotImplemented(\"Matrix3D.TransformBounds\");\r\n            //var r1 = Matrix3D._ClipToBounds(p1, p2, p3, cm1 | cm2 | cm3);\r\n            //var r2 = Matrix3D._ClipToBounds(p1, p3, p4, cm1 | cm3 | cm4);\r\n            //if (!r1.IsEmpty()) bounds = bounds.Union(r1);\r\n            //if (!r2.IsEmpty()) bounds = bounds.Union(r2);\r\n        }\r\n    } else {\r\n        var p1w = 1.0 / p1[3];\r\n        var p2w = 1.0 / p2[3];\r\n        var p3w = 1.0 / p3[3];\r\n        var p4w = 1.0 / p4[3];\r\n        p1[0] *= p1w * vs;\r\n        p1[1] *= p1w * vs;\r\n        p2[0] *= p2w * vs;\r\n        p2[1] *= p2w * vs;\r\n        p3[0] *= p3w * vs;\r\n        p3[1] *= p3w * vs;\r\n        p4[0] *= p4w * vs;\r\n        p4[1] *= p4w * vs;\r\n\r\n        bounds = new Rect(p1[0], p1[1], 0, 0);\r\n        bounds = bounds.ExtendTo(p2[0], p2[1]);\r\n        bounds = bounds.ExtendTo(p3[0], p3[1]);\r\n        bounds = bounds.ExtendTo(p4[0], p4[1]);\r\n    }\r\n\r\n    return bounds;\r\n};\r\nMatrix3D.Equals = function (A, B) {\r\n    /// <summary>Performs equality test on all items in A & B.</summary>\r\n    /// <param name=\"A\" type=\"Matrix3D\"></param>\r\n    /// <param name=\"B\" type=\"Matrix3D\"></param>\r\n    /// <returns type=\"Boolean\" />\r\n    var elsA = A._Elements;\r\n    var elsB = B._Elements;\r\n    if (elsA.length !== elsB.length)\r\n        return false;\r\n    return !(elsA < elsB) && !(elsA > elsB);\r\n};\r\nMatrix3D.Get2DAffine = function (A) {\r\n    /// <param name=\"A\" type=\"Matrix3D\"></param>\r\n    /// <returns type=\"Matrix\" />\r\n    var els = A._Elements;\r\n    if (els[2] === 0.0 && els[6] === 0.0\r\n        && els[8] === 0.0 && els[9] === 0.0 && els[10] === 1.0 && els[11] === 0.0\r\n        && els[12] === 0.0 && els[13] === 0.0 && els[14] === 0.0 && els[15] === 1.0) {\r\n        var mt = new Matrix();\r\n        mt._Elements = [els[0], els[1], els[3], els[4], els[5], els[7]];\r\n        mt._Type = MatrixTypes.Unknown;\r\n        return mt;\r\n    }\r\n};\r\nMatrix3D._CalculateInverse = function (m) {\r\n    var els = m._Elements;\r\n    var tmp = [];\r\n\r\n    tmp[0] = els[5] * els[10] * els[15] - els[5] * els[14] * els[11] - els[6] * els[9] * els[15] +\r\n\t\tels[6] * els[13] * els[11] + els[7] * els[9] * els[14] - els[7] * els[13] * els[10];\r\n    tmp[1] = -els[1] * els[10] * els[15] + els[1] * els[14] * els[11] + els[2] * els[9] * els[15] -\r\n\t\tels[2] * els[13] * els[11] - els[3] * els[9] * els[14] + els[3] * els[13] * els[10];\r\n    tmp[2] = els[1] * els[6] * els[15] - els[1] * els[14] * els[7] - els[2] * els[5] * els[15] +\r\n\t\tels[2] * els[13] * els[7] + els[3] * els[5] * els[14] - els[3] * els[13] * els[6];\r\n    tmp[3] = -els[1] * els[6] * els[11] + els[1] * els[10] * els[7] + els[2] * els[5] * els[11] -\r\n\t\tels[2] * els[9] * els[7] - els[3] * els[5] * els[10] + els[3] * els[9] * els[6];\r\n    tmp[4] = -els[4] * els[10] * els[15] + els[4] * els[14] * els[11] + els[6] * els[8] * els[15] -\r\n\t\tels[6] * els[12] * els[11] - els[7] * els[8] * els[14] + els[7] * els[12] * els[10];\r\n    tmp[5] = els[0] * els[10] * els[15] - els[0] * els[14] * els[11] - els[2] * els[8] * els[15] +\r\n\t\tels[2] * els[12] * els[11] + els[3] * els[8] * els[14] - els[3] * els[12] * els[10];\r\n    tmp[6] = -els[0] * els[6] * els[15] + els[0] * els[14] * els[7] + els[2] * els[4] * els[15] -\r\n\t\tels[2] * els[12] * els[7] - els[3] * els[4] * els[14] + els[3] * els[12] * els[6];\r\n    tmp[7] = els[0] * els[6] * els[11] - els[0] * els[10] * els[7] - els[2] * els[4] * els[11] +\r\n\t\tels[2] * els[8] * els[7] + els[3] * els[4] * els[10] - els[3] * els[8] * els[6];\r\n    tmp[8] = els[4] * els[9] * els[15] - els[4] * els[13] * els[11] - els[5] * els[8] * els[15] +\r\n\t\tels[5] * els[12] * els[11] + els[7] * els[8] * els[13] - els[7] * els[12] * els[9];\r\n    tmp[9] = -els[0] * els[9] * els[15] + els[0] * els[13] * els[11] + els[1] * els[8] * els[15] -\r\n\t\tels[1] * els[12] * els[11] - els[3] * els[8] * els[13] + els[3] * els[12] * els[9];\r\n    tmp[10] = els[0] * els[5] * els[15] - els[0] * els[13] * els[7] - els[1] * els[4] * els[15] +\r\n\t\tels[1] * els[12] * els[7] + els[3] * els[4] * els[13] - els[3] * els[12] * els[5];\r\n    tmp[11] = -els[0] * els[5] * els[11] + els[0] * els[9] * els[7] + els[1] * els[4] * els[11] -\r\n\t\tels[1] * els[8] * els[7] - els[3] * els[4] * els[9] + els[3] * els[8] * els[5];\r\n    tmp[12] = -els[4] * els[9] * els[14] + els[4] * els[13] * els[10] + els[5] * els[8] * els[14] -\r\n\t\tels[5] * els[12] * els[10] - els[6] * els[8] * els[13] + els[6] * els[12] * els[9];\r\n    tmp[13] = els[0] * els[9] * els[14] - els[0] * els[13] * els[10] - els[1] * els[8] * els[14] +\r\n\t\tels[1] * els[12] * els[10] + els[2] * els[8] * els[13] - els[2] * els[12] * els[9];\r\n    tmp[14] = -els[0] * els[5] * els[14] + els[0] * els[13] * els[6] + els[1] * els[4] * els[14] -\r\n\t\tels[1] * els[12] * els[6] - els[2] * els[4] * els[13] + els[2] * els[12] * els[5];\r\n    tmp[15] = els[0] * els[5] * els[10] - els[0] * els[9] * els[6] - els[1] * els[4] * els[10] +\r\n\t\tels[1] * els[8] * els[6] + els[2] * els[4] * els[9] - els[2] * els[8] * els[5];\r\n\r\n    var det = els[0] * tmp[0] + els[4] * tmp[1] + els[8] * tmp[2] + els[12] * tmp[3];\r\n    if (det === 0)\r\n        return;\r\n    det = 1.0 / det;\r\n    for (var i = 0; i < 16; i++) {\r\n        tmp[i] *= det;\r\n    }\r\n    return tmp;\r\n};\r\n\r\nMatrix3D._ClipMask = function (clip) {\r\n\tvar mask = 0;\r\n\r\n\tif (-clip[0] + clip[3] < 0) mask |= (1 << 0);\r\n\tif ( clip[0] + clip[3] < 0) mask |= (1 << 1);\r\n\tif (-clip[1] + clip[3] < 0) mask |= (1 << 2);\r\n\tif ( clip[1] + clip[3] < 0) mask |= (1 << 3);\r\n\tif ( clip[2] + clip[3] < 0) mask |= (1 << 4);\r\n\tif (-clip[2] + clip[3] < 0) mask |= (1 << 5);\r\n\r\n\treturn mask;\r\n};"
  },
  {
    "path": "proto/benchmarks/matrix/glMatrix-min.js",
    "content": "// glMatrix v0.9.5\r\nglMatrixArrayType=typeof Float32Array!=\"undefined\"?Float32Array:typeof WebGLFloatArray!=\"undefined\"?WebGLFloatArray:Array;var vec3={};vec3.create=function(a){var b=new glMatrixArrayType(3);if(a){b[0]=a[0];b[1]=a[1];b[2]=a[2]}return b};vec3.set=function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];return b};vec3.add=function(a,b,c){if(!c||a==c){a[0]+=b[0];a[1]+=b[1];a[2]+=b[2];return a}c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];return c};\r\nvec3.subtract=function(a,b,c){if(!c||a==c){a[0]-=b[0];a[1]-=b[1];a[2]-=b[2];return a}c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];return c};vec3.negate=function(a,b){b||(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];return b};vec3.scale=function(a,b,c){if(!c||a==c){a[0]*=b;a[1]*=b;a[2]*=b;return a}c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;return c};\r\nvec3.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],g=Math.sqrt(c*c+d*d+e*e);if(g){if(g==1){b[0]=c;b[1]=d;b[2]=e;return b}}else{b[0]=0;b[1]=0;b[2]=0;return b}g=1/g;b[0]=c*g;b[1]=d*g;b[2]=e*g;return b};vec3.cross=function(a,b,c){c||(c=a);var d=a[0],e=a[1];a=a[2];var g=b[0],f=b[1];b=b[2];c[0]=e*b-a*f;c[1]=a*g-d*b;c[2]=d*f-e*g;return c};vec3.length=function(a){var b=a[0],c=a[1];a=a[2];return Math.sqrt(b*b+c*c+a*a)};vec3.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]};\r\nvec3.direction=function(a,b,c){c||(c=a);var d=a[0]-b[0],e=a[1]-b[1];a=a[2]-b[2];b=Math.sqrt(d*d+e*e+a*a);if(!b){c[0]=0;c[1]=0;c[2]=0;return c}b=1/b;c[0]=d*b;c[1]=e*b;c[2]=a*b;return c};vec3.lerp=function(a,b,c,d){d||(d=a);d[0]=a[0]+c*(b[0]-a[0]);d[1]=a[1]+c*(b[1]-a[1]);d[2]=a[2]+c*(b[2]-a[2]);return d};vec3.str=function(a){return\"[\"+a[0]+\", \"+a[1]+\", \"+a[2]+\"]\"};var mat3={};\r\nmat3.create=function(a){var b=new glMatrixArrayType(9);if(a){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9]}return b};mat3.set=function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];return b};mat3.identity=function(a){a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a};\r\nmat3.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[5];a[1]=a[3];a[2]=a[6];a[3]=c;a[5]=a[7];a[6]=d;a[7]=e;return a}b[0]=a[0];b[1]=a[3];b[2]=a[6];b[3]=a[1];b[4]=a[4];b[5]=a[7];b[6]=a[2];b[7]=a[5];b[8]=a[8];return b};mat3.toMat4=function(a,b){b||(b=mat4.create());b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=0;b[4]=a[3];b[5]=a[4];b[6]=a[5];b[7]=0;b[8]=a[6];b[9]=a[7];b[10]=a[8];b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b};\r\nmat3.str=function(a){return\"[\"+a[0]+\", \"+a[1]+\", \"+a[2]+\", \"+a[3]+\", \"+a[4]+\", \"+a[5]+\", \"+a[6]+\", \"+a[7]+\", \"+a[8]+\"]\"};var mat4={};mat4.create=function(a){var b=new glMatrixArrayType(16);if(a){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15]}return b};\r\nmat4.set=function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b};mat4.identity=function(a){a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};\r\nmat4.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[3],g=a[6],f=a[7],h=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=c;a[6]=a[9];a[7]=a[13];a[8]=d;a[9]=g;a[11]=a[14];a[12]=e;a[13]=f;a[14]=h;return a}b[0]=a[0];b[1]=a[4];b[2]=a[8];b[3]=a[12];b[4]=a[1];b[5]=a[5];b[6]=a[9];b[7]=a[13];b[8]=a[2];b[9]=a[6];b[10]=a[10];b[11]=a[14];b[12]=a[3];b[13]=a[7];b[14]=a[11];b[15]=a[15];return b};\r\nmat4.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],g=a[4],f=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],o=a[11],m=a[12],n=a[13],p=a[14];a=a[15];return m*k*h*e-j*n*h*e-m*f*l*e+g*n*l*e+j*f*p*e-g*k*p*e-m*k*d*i+j*n*d*i+m*c*l*i-b*n*l*i-j*c*p*i+b*k*p*i+m*f*d*o-g*n*d*o-m*c*h*o+b*n*h*o+g*c*p*o-b*f*p*o-j*f*d*a+g*k*d*a+j*c*h*a-b*k*h*a-g*c*l*a+b*f*l*a};\r\nmat4.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],g=a[3],f=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=a[9],o=a[10],m=a[11],n=a[12],p=a[13],r=a[14],s=a[15],A=c*h-d*f,B=c*i-e*f,t=c*j-g*f,u=d*i-e*h,v=d*j-g*h,w=e*j-g*i,x=k*p-l*n,y=k*r-o*n,z=k*s-m*n,C=l*r-o*p,D=l*s-m*p,E=o*s-m*r,q=1/(A*E-B*D+t*C+u*z-v*y+w*x);b[0]=(h*E-i*D+j*C)*q;b[1]=(-d*E+e*D-g*C)*q;b[2]=(p*w-r*v+s*u)*q;b[3]=(-l*w+o*v-m*u)*q;b[4]=(-f*E+i*z-j*y)*q;b[5]=(c*E-e*z+g*y)*q;b[6]=(-n*w+r*t-s*B)*q;b[7]=(k*w-o*t+m*B)*q;b[8]=(f*D-h*z+j*x)*q;\r\nb[9]=(-c*D+d*z-g*x)*q;b[10]=(n*v-p*t+s*A)*q;b[11]=(-k*v+l*t-m*A)*q;b[12]=(-f*C+h*y-i*x)*q;b[13]=(c*C-d*y+e*x)*q;b[14]=(-n*u+p*B-r*A)*q;b[15]=(k*u-l*B+o*A)*q;return b};mat4.toRotationMat=function(a,b){b||(b=mat4.create());b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b};\r\nmat4.toMat3=function(a,b){b||(b=mat3.create());b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[4];b[4]=a[5];b[5]=a[6];b[6]=a[8];b[7]=a[9];b[8]=a[10];return b};mat4.toInverseMat3=function(a,b){var c=a[0],d=a[1],e=a[2],g=a[4],f=a[5],h=a[6],i=a[8],j=a[9],k=a[10],l=k*f-h*j,o=-k*g+h*i,m=j*g-f*i,n=c*l+d*o+e*m;if(!n)return null;n=1/n;b||(b=mat3.create());b[0]=l*n;b[1]=(-k*d+e*j)*n;b[2]=(h*d-e*f)*n;b[3]=o*n;b[4]=(k*c-e*i)*n;b[5]=(-h*c+e*g)*n;b[6]=m*n;b[7]=(-j*c+d*i)*n;b[8]=(f*c-d*g)*n;return b};\r\nmat4.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],g=a[2],f=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],o=a[9],m=a[10],n=a[11],p=a[12],r=a[13],s=a[14];a=a[15];var A=b[0],B=b[1],t=b[2],u=b[3],v=b[4],w=b[5],x=b[6],y=b[7],z=b[8],C=b[9],D=b[10],E=b[11],q=b[12],F=b[13],G=b[14];b=b[15];c[0]=A*d+B*h+t*l+u*p;c[1]=A*e+B*i+t*o+u*r;c[2]=A*g+B*j+t*m+u*s;c[3]=A*f+B*k+t*n+u*a;c[4]=v*d+w*h+x*l+y*p;c[5]=v*e+w*i+x*o+y*r;c[6]=v*g+w*j+x*m+y*s;c[7]=v*f+w*k+x*n+y*a;c[8]=z*d+C*h+D*l+E*p;c[9]=z*e+C*i+D*o+E*r;c[10]=z*\r\ng+C*j+D*m+E*s;c[11]=z*f+C*k+D*n+E*a;c[12]=q*d+F*h+G*l+b*p;c[13]=q*e+F*i+G*o+b*r;c[14]=q*g+F*j+G*m+b*s;c[15]=q*f+F*k+G*n+b*a;return c};mat4.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1];b=b[2];c[0]=a[0]*d+a[4]*e+a[8]*b+a[12];c[1]=a[1]*d+a[5]*e+a[9]*b+a[13];c[2]=a[2]*d+a[6]*e+a[10]*b+a[14];return c};\r\nmat4.multiplyVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],g=b[2];b=b[3];c[0]=a[0]*d+a[4]*e+a[8]*g+a[12]*b;c[1]=a[1]*d+a[5]*e+a[9]*g+a[13]*b;c[2]=a[2]*d+a[6]*e+a[10]*g+a[14]*b;c[3]=a[3]*d+a[7]*e+a[11]*g+a[15]*b;return c};\r\nmat4.translate=function(a,b,c){var d=b[0],e=b[1];b=b[2];if(!c||a==c){a[12]=a[0]*d+a[4]*e+a[8]*b+a[12];a[13]=a[1]*d+a[5]*e+a[9]*b+a[13];a[14]=a[2]*d+a[6]*e+a[10]*b+a[14];a[15]=a[3]*d+a[7]*e+a[11]*b+a[15];return a}var g=a[0],f=a[1],h=a[2],i=a[3],j=a[4],k=a[5],l=a[6],o=a[7],m=a[8],n=a[9],p=a[10],r=a[11];c[0]=g;c[1]=f;c[2]=h;c[3]=i;c[4]=j;c[5]=k;c[6]=l;c[7]=o;c[8]=m;c[9]=n;c[10]=p;c[11]=r;c[12]=g*d+j*e+m*b+a[12];c[13]=f*d+k*e+n*b+a[13];c[14]=h*d+l*e+p*b+a[14];c[15]=i*d+o*e+r*b+a[15];return c};\r\nmat4.scale=function(a,b,c){var d=b[0],e=b[1];b=b[2];if(!c||a==c){a[0]*=d;a[1]*=d;a[2]*=d;a[3]*=d;a[4]*=e;a[5]*=e;a[6]*=e;a[7]*=e;a[8]*=b;a[9]*=b;a[10]*=b;a[11]*=b;return a}c[0]=a[0]*d;c[1]=a[1]*d;c[2]=a[2]*d;c[3]=a[3]*d;c[4]=a[4]*e;c[5]=a[5]*e;c[6]=a[6]*e;c[7]=a[7]*e;c[8]=a[8]*b;c[9]=a[9]*b;c[10]=a[10]*b;c[11]=a[11]*b;c[12]=a[12];c[13]=a[13];c[14]=a[14];c[15]=a[15];return c};\r\nmat4.rotate=function(a,b,c,d){var e=c[0],g=c[1];c=c[2];var f=Math.sqrt(e*e+g*g+c*c);if(!f)return null;if(f!=1){f=1/f;e*=f;g*=f;c*=f}var h=Math.sin(b),i=Math.cos(b),j=1-i;b=a[0];f=a[1];var k=a[2],l=a[3],o=a[4],m=a[5],n=a[6],p=a[7],r=a[8],s=a[9],A=a[10],B=a[11],t=e*e*j+i,u=g*e*j+c*h,v=c*e*j-g*h,w=e*g*j-c*h,x=g*g*j+i,y=c*g*j+e*h,z=e*c*j+g*h;e=g*c*j-e*h;g=c*c*j+i;if(d){if(a!=d){d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15]}}else d=a;d[0]=b*t+o*u+r*v;d[1]=f*t+m*u+s*v;d[2]=k*t+n*u+A*v;d[3]=l*t+p*u+B*\r\nv;d[4]=b*w+o*x+r*y;d[5]=f*w+m*x+s*y;d[6]=k*w+n*x+A*y;d[7]=l*w+p*x+B*y;d[8]=b*z+o*e+r*g;d[9]=f*z+m*e+s*g;d[10]=k*z+n*e+A*g;d[11]=l*z+p*e+B*g;return d};mat4.rotateX=function(a,b,c){var d=Math.sin(b);b=Math.cos(b);var e=a[4],g=a[5],f=a[6],h=a[7],i=a[8],j=a[9],k=a[10],l=a[11];if(c){if(a!=c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];c[12]=a[12];c[13]=a[13];c[14]=a[14];c[15]=a[15]}}else c=a;c[4]=e*b+i*d;c[5]=g*b+j*d;c[6]=f*b+k*d;c[7]=h*b+l*d;c[8]=e*-d+i*b;c[9]=g*-d+j*b;c[10]=f*-d+k*b;c[11]=h*-d+l*b;return c};\r\nmat4.rotateY=function(a,b,c){var d=Math.sin(b);b=Math.cos(b);var e=a[0],g=a[1],f=a[2],h=a[3],i=a[8],j=a[9],k=a[10],l=a[11];if(c){if(a!=c){c[4]=a[4];c[5]=a[5];c[6]=a[6];c[7]=a[7];c[12]=a[12];c[13]=a[13];c[14]=a[14];c[15]=a[15]}}else c=a;c[0]=e*b+i*-d;c[1]=g*b+j*-d;c[2]=f*b+k*-d;c[3]=h*b+l*-d;c[8]=e*d+i*b;c[9]=g*d+j*b;c[10]=f*d+k*b;c[11]=h*d+l*b;return c};\r\nmat4.rotateZ=function(a,b,c){var d=Math.sin(b);b=Math.cos(b);var e=a[0],g=a[1],f=a[2],h=a[3],i=a[4],j=a[5],k=a[6],l=a[7];if(c){if(a!=c){c[8]=a[8];c[9]=a[9];c[10]=a[10];c[11]=a[11];c[12]=a[12];c[13]=a[13];c[14]=a[14];c[15]=a[15]}}else c=a;c[0]=e*b+i*d;c[1]=g*b+j*d;c[2]=f*b+k*d;c[3]=h*b+l*d;c[4]=e*-d+i*b;c[5]=g*-d+j*b;c[6]=f*-d+k*b;c[7]=h*-d+l*b;return c};\r\nmat4.frustum=function(a,b,c,d,e,g,f){f||(f=mat4.create());var h=b-a,i=d-c,j=g-e;f[0]=e*2/h;f[1]=0;f[2]=0;f[3]=0;f[4]=0;f[5]=e*2/i;f[6]=0;f[7]=0;f[8]=(b+a)/h;f[9]=(d+c)/i;f[10]=-(g+e)/j;f[11]=-1;f[12]=0;f[13]=0;f[14]=-(g*e*2)/j;f[15]=0;return f};mat4.perspective=function(a,b,c,d,e){a=c*Math.tan(a*Math.PI/360);b=a*b;return mat4.frustum(-b,b,-a,a,c,d,e)};\r\nmat4.ortho=function(a,b,c,d,e,g,f){f||(f=mat4.create());var h=b-a,i=d-c,j=g-e;f[0]=2/h;f[1]=0;f[2]=0;f[3]=0;f[4]=0;f[5]=2/i;f[6]=0;f[7]=0;f[8]=0;f[9]=0;f[10]=-2/j;f[11]=0;f[12]=-(a+b)/h;f[13]=-(d+c)/i;f[14]=-(g+e)/j;f[15]=1;return f};\r\nmat4.lookAt=function(a,b,c,d){d||(d=mat4.create());var e=a[0],g=a[1];a=a[2];var f=c[0],h=c[1],i=c[2];c=b[1];var j=b[2];if(e==b[0]&&g==c&&a==j)return mat4.identity(d);var k,l,o,m;c=e-b[0];j=g-b[1];b=a-b[2];m=1/Math.sqrt(c*c+j*j+b*b);c*=m;j*=m;b*=m;k=h*b-i*j;i=i*c-f*b;f=f*j-h*c;if(m=Math.sqrt(k*k+i*i+f*f)){m=1/m;k*=m;i*=m;f*=m}else f=i=k=0;h=j*f-b*i;l=b*k-c*f;o=c*i-j*k;if(m=Math.sqrt(h*h+l*l+o*o)){m=1/m;h*=m;l*=m;o*=m}else o=l=h=0;d[0]=k;d[1]=h;d[2]=c;d[3]=0;d[4]=i;d[5]=l;d[6]=j;d[7]=0;d[8]=f;d[9]=\r\no;d[10]=b;d[11]=0;d[12]=-(k*e+i*g+f*a);d[13]=-(h*e+l*g+o*a);d[14]=-(c*e+j*g+b*a);d[15]=1;return d};mat4.str=function(a){return\"[\"+a[0]+\", \"+a[1]+\", \"+a[2]+\", \"+a[3]+\", \"+a[4]+\", \"+a[5]+\", \"+a[6]+\", \"+a[7]+\", \"+a[8]+\", \"+a[9]+\", \"+a[10]+\", \"+a[11]+\", \"+a[12]+\", \"+a[13]+\", \"+a[14]+\", \"+a[15]+\"]\"};quat4={};quat4.create=function(a){var b=new glMatrixArrayType(4);if(a){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3]}return b};quat4.set=function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b};\r\nquat4.calculateW=function(a,b){var c=a[0],d=a[1],e=a[2];if(!b||a==b){a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e));return a}b[0]=c;b[1]=d;b[2]=e;b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e));return b};quat4.inverse=function(a,b){if(!b||a==b){a[0]*=1;a[1]*=1;a[2]*=1;return a}b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=a[3];return b};quat4.length=function(a){var b=a[0],c=a[1],d=a[2];a=a[3];return Math.sqrt(b*b+c*c+d*d+a*a)};\r\nquat4.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],g=a[3],f=Math.sqrt(c*c+d*d+e*e+g*g);if(f==0){b[0]=0;b[1]=0;b[2]=0;b[3]=0;return b}f=1/f;b[0]=c*f;b[1]=d*f;b[2]=e*f;b[3]=g*f;return b};quat4.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],g=a[2];a=a[3];var f=b[0],h=b[1],i=b[2];b=b[3];c[0]=d*b+a*f+e*i-g*h;c[1]=e*b+a*h+g*f-d*i;c[2]=g*b+a*i+d*h-e*f;c[3]=a*b-d*f-e*h-g*i;return c};\r\nquat4.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],g=b[2];b=a[0];var f=a[1],h=a[2];a=a[3];var i=a*d+f*g-h*e,j=a*e+h*d-b*g,k=a*g+b*e-f*d;d=-b*d-f*e-h*g;c[0]=i*a+d*-b+j*-h-k*-f;c[1]=j*a+d*-f+k*-b-i*-h;c[2]=k*a+d*-h+i*-f-j*-b;return c};quat4.toMat3=function(a,b){b||(b=mat3.create());var c=a[0],d=a[1],e=a[2],g=a[3],f=c+c,h=d+d,i=e+e,j=c*f,k=c*h;c=c*i;var l=d*h;d=d*i;e=e*i;f=g*f;h=g*h;g=g*i;b[0]=1-(l+e);b[1]=k-g;b[2]=c+h;b[3]=k+g;b[4]=1-(j+e);b[5]=d-f;b[6]=c-h;b[7]=d+f;b[8]=1-(j+l);return b};\r\nquat4.toMat4=function(a,b){b||(b=mat4.create());var c=a[0],d=a[1],e=a[2],g=a[3],f=c+c,h=d+d,i=e+e,j=c*f,k=c*h;c=c*i;var l=d*h;d=d*i;e=e*i;f=g*f;h=g*h;g=g*i;b[0]=1-(l+e);b[1]=k-g;b[2]=c+h;b[3]=0;b[4]=k+g;b[5]=1-(j+e);b[6]=d-f;b[7]=0;b[8]=c-h;b[9]=d+f;b[10]=1-(j+l);b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b};quat4.slerp=function(a,b,c,d){d||(d=a);var e=c;if(a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]<0)e=-1*c;d[0]=1-c*a[0]+e*b[0];d[1]=1-c*a[1]+e*b[1];d[2]=1-c*a[2]+e*b[2];d[3]=1-c*a[3]+e*b[3];return d};\r\nquat4.str=function(a){return\"[\"+a[0]+\", \"+a[1]+\", \"+a[2]+\", \"+a[3]+\"]\"};\r\n"
  },
  {
    "path": "proto/benchmarks/matrix/test.html",
    "content": "﻿<!DOCTYPE html>\r\n\r\n<html>\r\n\t<head>\r\n\t\t<title>Matrix Benchmark</title>\r\n\t\t\r\n\t\t<!-- Common Utilities -->\r\n\t\t<script type=\"text/javascript\" src=\"glMatrix-min.js\"></script>\r\n\t\t<script type=\"text/javascript\" src=\"CanvasMatrix.js\"></script>\r\n\t\t<script type=\"text/javascript\" src=\"Matrix3D.js\"></script>\r\n\t\t\r\n\t\t<!-- Benchmarking utilities -->\r\n\t\t<script type=\"text/javascript\">\r\n\t\t    function log(html) {\r\n\t\t        document.getElementById('logDiv').innerHTML += html + '<br/><br/>'\r\n\t\t    }\r\n\r\n\t\t    function logTitle(title) {\r\n\t\t        document.getElementById('logDiv').innerHTML +=\r\n\t\t\t\t'=============================================<br/>' +\r\n\t\t\t\t'<b>' + title + '</b><br/>' +\r\n\t\t\t\t'=============================================' + '<br/><br/>'\r\n\t\t    }\r\n\r\n\t\t    function test(name, f) {\r\n\t\t        // Repeats each benchmark multiple times to smooth out anomalies\r\n\t\t        // Also tracks min and max times\r\n\r\n\t\t        if (!f) {\r\n\t\t            log('<i>' + name + ': Unsupported</i>');\r\n\t\t            return;\r\n\t\t        }\r\n\r\n\t\t        var runCount = 10;\r\n\t\t        var internalRunCount = 20000;\r\n\t\t        var totalTime = 0;\r\n\t\t        var minTime = 0;\r\n\t\t        var maxTime = 0;\r\n\r\n\t\t        for (var i = 0; i < runCount; ++i) {\r\n\t\t            var time = f(internalRunCount);\r\n\t\t            if (i == 0) {\r\n\t\t                minTime = time;\r\n\t\t                maxTime = time;\r\n\t\t            } else {\r\n\t\t                if (minTime > time) { minTime = time; }\r\n\t\t                if (maxTime < time) { maxTime = time; }\r\n\t\t            }\r\n\t\t            totalTime += time;\r\n\t\t        }\r\n\r\n\t\t        var avg = totalTime / runCount;\r\n\r\n\t\t        log('<i>' + name + '</i> - Avg: <b>' + avg + 'ms</b>, Min: ' + minTime + 'ms, Max: ' + maxTime + 'ms');\r\n\t\t    }\r\n\r\n\t\t    function testSet(name, tests) {\r\n\t\t        setTimeout(function () {\r\n\t\t            logTitle(name);\r\n\t\t            for (var i = 0; i < tests.length; ++i) {\r\n\t\t                test(tests[i].name, tests[i].test);\r\n\t\t            }\r\n\t\t        }, 1);\r\n\t\t    }\r\n\r\n\t\t    function glMatrixRandom() {\r\n\t\t        return mat4.create([\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100,\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100,\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100,\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100\r\n\t\t\t\t]);\r\n\t\t    }\r\n\r\n\t\t    function canvasMatrixRandom() {\r\n\t\t        return new CanvasMatrix4([\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100,\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100,\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100,\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100\r\n\t\t\t\t]);\r\n\t\t    }\r\n\r\n\t\t    function createRandomMatrix3D() {\r\n\t\t        var m3 = new Matrix3D();\r\n\t\t        m3._Elements = [\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100,\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100,\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100,\r\n\t\t\t\t\tMath.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100\r\n\t\t\t\t];\r\n\t\t        return m3;\r\n\t\t    }\r\n\t\t</script>\r\n\t\t\r\n\t\t<!-- Benchmarks -->\r\n\t\t<script type=\"text/javascript\">\r\n\t\t    function testMain() {\r\n\r\n\t\t        testSet('Multiplication', [\r\n\t\t\t\t\t{ name: 'glMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = glMatrixRandom();\r\n\t\t\t\t\t    var m2 = glMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        mat4.multiply(m1, m2);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'CanvasMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = canvasMatrixRandom();\r\n\t\t\t\t\t    var m2 = canvasMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        m1.multRight(m2);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'Matrix3D', test: function (count) {\r\n\t\t\t\t\t    var m1 = createRandomMatrix3D();\r\n\t\t\t\t\t    var m2 = createRandomMatrix3D();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        Matrix3D.Multiply(m1, m2, m1);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t}\r\n\t\t\t\t]);\r\n\r\n\t\t        testSet('Translation', [\r\n\t\t\t\t\t{ name: 'glMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = glMatrixRandom();\r\n\t\t\t\t\t    var v1 = [1, 2, 3];\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        mat4.translate(m1, v1);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'CanvasMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = canvasMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        m1.translate(1, 2, 3);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t}\r\n\t\t\t\t]);\r\n\r\n\t\t        testSet('Scaling', [\r\n\t\t\t\t\t{ name: 'glMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = glMatrixRandom();\r\n\t\t\t\t\t    var v1 = [1, 2, 3];\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        mat4.scale(m1, v1);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'CanvasMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = canvasMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        m1.scale(1, 2, 3);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t}\r\n\t\t\t\t]);\r\n\r\n\t\t        testSet('Rotation (Arbitrary axis)', [\r\n\t\t\t\t\t{ name: 'glMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = glMatrixRandom();\r\n\t\t\t\t\t    var v1 = [1, 2, 3];\r\n\t\t\t\t\t    var a = Math.PI / 2;\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        mat4.rotate(m1, a, v1);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'CanvasMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = canvasMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        m1.rotate(90, 1, 2, 3);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t}\r\n\t\t\t\t]);\r\n\r\n\t\t        testSet('Rotation (X axis)', [\r\n\t\t\t\t\t{ name: 'glMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = glMatrixRandom();\r\n\t\t\t\t\t    var v1 = [1, 0, 0];\r\n\t\t\t\t\t    var a = Math.PI / 2;\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        mat4.rotate(m1, a, v1);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'CanvasMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = canvasMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        m1.rotate(90, 1, 0, 0);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t}\r\n\t\t\t\t]);\r\n\r\n\t\t        testSet('Transpose', [\r\n\t\t\t\t\t{ name: 'glMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = glMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        mat4.transpose(m1);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'CanvasMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = canvasMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        m1.transpose();\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t}\r\n\t\t\t\t]);\r\n\r\n\t\t        testSet('Inverse', [\r\n\t\t\t\t\t{ name: 'glMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = glMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        mat4.inverse(m1);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'CanvasMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = canvasMatrixRandom();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        m1.invert();\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'Matrix3D', test: function (count) {\r\n\t\t\t\t\t    var m1 = createRandomMatrix3D();\r\n\t\t\t\t\t    var m2;\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        m2 = m1.Inverse;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t}\r\n\t\t\t\t]);\r\n\r\n\t\t        testSet('Inverse 3x3', [\r\n\t\t\t\t\t{ name: 'glMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = glMatrixRandom();\r\n\t\t\t\t\t    var res = mat3.create();\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        mat4.toInverseMat3(m1, res);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'CanvasMatrix', test: null },\r\n\t\t\t\t]);\r\n\r\n\t\t        testSet('Vector Transformation', [\r\n\t\t\t\t\t{ name: 'glMatrix', test: function (count) {\r\n\t\t\t\t\t    var m1 = glMatrixRandom();\r\n\t\t\t\t\t    var v1 = [1, 2, 3];\r\n\t\t\t\t\t    var start = Date.now();\r\n\t\t\t\t\t    for (var i = 0; i < count; ++i) {\r\n\t\t\t\t\t        mat4.multiplyVec3(m1, v1);\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    return Date.now() - start;\r\n\t\t\t\t\t} \r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ name: 'CanvasMatrix', test: null },\r\n\t\t\t\t]);\r\n\t\t    }\r\n\t\t</script>\r\n\t\t\r\n\t\t<style type=\"text/css\">\r\n\t\t\tbody {\r\n\t\t\t\tfont: 0.8em Verdana,sans-serif;\r\n\t\t\t}\r\n\t\t</style>\r\n\t</head>\r\n\t<body onload=\"testMain()\">\r\n\t\t<p>\r\n\t\t\tThis page benchmarks the performance of several matrix libraries intended for use with WebGL: \r\n\t\t\tglMatrix, CanvasMatrix, and Matrix3D<br/>\r\n\t\t\tBenchmark times are averaged over 10 runs of 20,000 iterations of the target operation.\r\n\t\t</p>\r\n\t\t<div id=\"logDiv\"></div>\r\n\t</body>\r\n</html>"
  },
  {
    "path": "proto/silo/UnitTestValidation.htm",
    "content": "﻿<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script src=\"../jquery-1.7.js\" type=\"text/javascript\"></script>\r\n    <script src=\"../Fayde.js\" type=\"text/javascript\"></script>\r\n    <script type=\"text/javascript\">\r\n        function test() {\r\n            var MockBase2 = Nullstone.Create(\"MockBase2\");\r\n            Nullstone.AutoProperty(MockBase2, \"IsMetal\");\r\n            Nullstone.FinishCreate(MockBase2);\r\n\r\n            var Mock5 = Nullstone.Create(\"Mock5\", MockBase2);\r\n            Nullstone.AutoProperty(Mock5, \"IsMetal\");\r\n            Nullstone.FinishCreate(Mock5);\r\n        }\r\n        test();\r\n    </script>\r\n</head>\r\n<body>\r\n\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "proto/silo/brush-transform.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script type=\"text/javascript\">\r\n        function load() {\r\n            var canvas1 = document.getElementById('canvas1');\r\n            var ctx1 = canvas1.getContext('2d');\r\n\r\n            var canvas2 = document.getElementById('canvas2');\r\n            var ctx2 = canvas2.getContext('2d');\r\n\r\n            var canvas3 = document.getElementById('canvas2');\r\n            var ctx3 = canvas2.getContext('2d');\r\n\r\n            var stops = [\r\n                { offset: 0, color: \"rgba(135,135,135,0.2)\" },\r\n                { offset: 0.651, color: \"rgba(149,149,149,0.2)\" },\r\n                { offset: 0.093, color: \"rgba(0,0,0,0.29803921568627450980392156862745)\" },\r\n                { offset: 0.548, color: \"rgba(0,0,0,0.29803921568627450980392156862745)\" }\r\n            ];\r\n\r\n            var brush = buildRepeatGradient(ctx1,\r\n                { x: -20, y: 0 },\r\n                { x: 220, y: 1 },\r\n                { x: -20, y: 1 },\r\n                stops);\r\n\r\n            canvas1.width = 198;\r\n            canvas1.height = 8;\r\n            ctx1.transform(1, 0, -0.5773502691896257, 1, 9.771428571428568, 0);\r\n            ctx1.fillStyle = brush;\r\n            ctx1.fillRect(-9.771428571428568, 0, 198, 8);\r\n\r\n            var brush2 = ctx2.createPattern(canvas1, \"no-repeat\");\r\n            ctx2.fillStyle = brush2;\r\n            ctx2.fillRect(0, 0, 198, 8);\r\n        }\r\n\r\n        function buildRepeatGradient(ctx, dir, first, last, stops) {\r\n            var grd = ctx.createLinearGradient(first.x, first.y, last.x, last.y);\r\n            var count = stops.length;\r\n            var steps = (last.x - first.x) / dir.x;\r\n            var curOffset = 0.0;\r\n            for (var i = 0; i < steps; i++) {\r\n                for (var j = 0; j < count; j++) {\r\n                    var stop = stops[j];\r\n                    grd.addColorStop(curOffset + (stop.offset / steps), stop.color);\r\n                }\r\n                curOffset += (1.0 / steps);\r\n            }\r\n            return grd;\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load();\">\r\n    <canvas id=\"canvas1\" width=\"298\" height=\"108\">\r\n\r\n    </canvas>\r\n    <canvas id=\"canvas2\" width=\"298\" height=\"108\">\r\n\r\n    </canvas>\r\n    <canvas id=\"canvas3\" width=\"298\" height=\"108\">\r\n\r\n    </canvas>\r\n</body>\r\n</html>"
  },
  {
    "path": "proto/silo/heightTest.htm",
    "content": "﻿<!DOCTYPE>\r\n<html>\r\n<head>\r\n    <title>Testing Percentage Heights</title>\r\n    <script src=\"../jquery-1.7.js\" type=\"text/javascript\"></script>\r\n    <script type=\"text/javascript\">\r\n        $(document).ready(function () {\r\n            resize_canvas();\r\n        });\r\n        function resize_canvas() {\r\n            canvas = document.getElementById(\"canvas\");\r\n            canvas.width = $(window).width();\r\n            canvas.height = $(window).height();\r\n        }\r\n    </script>\r\n</head>\r\n<body style=\"margin: 0;\" onresize=\"resize_canvas()\">\r\n    <canvas id=\"canvas\" style=\"background: silver;\" />\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "proto/silo/hittest.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script type=\"text/javascript\">\r\n        var message;\r\n        var coordinates;\r\n        function load() {\r\n            message = document.getElementById(\"message\");\r\n            coordinates = document.getElementById(\"coordinates\");\r\n            var canvas1 = document.getElementById('canvas1');\r\n            var ctx1 = canvas1.getContext('2d');\r\n\r\n            canvas1.onmousemove = function (e) {\r\n                var x = e.offsetX;\r\n                var y = e.offsetY;\r\n                renderandcheck(ctx1, x, y);\r\n                coordinates.innerText = \"x:\" + x + \";y:\" + y;\r\n            };\r\n            renderandcheck(ctx1, 0, 0);\r\n        }\r\n        function renderandcheck(ctx, x, y) {\r\n            ctx.clearRect(0, 0, 300, 300)\r\n            ctx.beginPath();\r\n            ctx.moveTo(50, 0);\r\n            ctx.lineTo(100, 100);\r\n            ctx.lineTo(0, 100);\r\n            ctx.closePath();\r\n            ctx.fillStyle = \"#ff0000\";\r\n            ctx.fill();\r\n            ctx.lineWidth = 10;\r\n            \r\n            ctx.strokeStyle = \"#000000\";\r\n            ctx.stroke();\r\n\r\n            if (ctx.isPointInPath(x, y)) {\r\n                message.innerText = \"YES\";\r\n                message.style.color = \"black\";\r\n            } else {\r\n                message.innerText = \"NO\";\r\n                message.style.color = \"red\";\r\n            }\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load();\">\r\n    <canvas id=\"canvas1\" width=\"300\" height=\"300\">\r\n\r\n    </canvas>\r\n    <div id=\"message\">\r\n\r\n    </div>\r\n    <div id=\"coordinates\">\r\n\r\n    </div>\r\n</body>\r\n</html>"
  },
  {
    "path": "proto/silo/image-load.html",
    "content": "﻿<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script type=\"text/javascript\" src=\"../jquery-1.7.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        $(document).ready(function () {\r\n            var img = new Image();\r\n            img.onerror = function (e) {\r\n                alert(\"error loading\");\r\n            };\r\n            img.onload = function (e) {\r\n                var can = document.getElementById(\"testCanvas\");\r\n                var ctx = can.getContext(\"2d\");\r\n                ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);\r\n            };\r\n            img.src = \"../Images/testing.jpg\";\r\n        });\r\n    </script>\r\n</head>\r\n<body>\r\n    <canvas id=\"testCanvas\" width=\"600\" height=\"600\">\r\n    </canvas>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "proto/silo/keyboard.html",
    "content": "<!DOCTYPE html>\r\n<html>\r\n<head lang=\"en\">\r\n    <meta charset=\"UTF-8\">\r\n    <title></title>\r\n    <script src=\"https://code.jquery.com/jquery-2.1.3.js\"></script>\r\n</head>\r\n<body>\r\n<input id=\"focuser\" type=\"text\" style=\"opacity: 0; float: left;\"/>\r\n\r\n<div id=\"m\" style=\"background-color: yellow;\">\r\n    MMMMMMMMMMMMMMMMMMMMMMMMm\r\n    MMMMMMMMMMMMMMMMmmmmmmmMMMMMMMMMMm\r\n</div>\r\n<script type=\"text/javascript\">\r\n    var focuser = document.getElementById('focuser');\r\n\r\n    var m = document.getElementById('m');\r\n    m.addEventListener('mouseup', function () {\r\n        focuser.focus();\r\n    });\r\n    /*\r\n     $('#m').mouseup(function mouseup() {\r\n     $('#focuser').focus();\r\n     });\r\n     */\r\n\r\n    var canvas = document.createElement('canvas');\r\n    document.body.appendChild(canvas);\r\n    var ctx = canvas.getContext('2d');\r\n    ctx.fillStyle = \"green\";\r\n    ctx.fillRect(0, 0, 400, 400);\r\n    canvas.addEventListener('mouseup', function () {\r\n        focuser.focus();\r\n    });\r\n</script>\r\n</body>\r\n</html>"
  },
  {
    "path": "proto/silo/lineargradient-pattern.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script type=\"text/javascript\">\r\n        function load() {\r\n            var start = { x: 0, y: 0 };\r\n            var end = { x: 100, y: 100 };\r\n            var bounds = { x: 100, y: 50, w: 300, h: 200 };\r\n\r\n            var canvas = document.getElementById(\"canvas\");\r\n            var ctx = canvas.getContext('2d');\r\n\r\n            canvas.width = 500;\r\n            canvas.height = 500;\r\n\r\n            ctx.fillStyle = \"yellow\";\r\n            ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n            var grd = createLinearGradient(ctx, start, end, bounds, \"Repeat\");\r\n\r\n            ctx.fillStyle = grd;\r\n            ctx.fillRect(bounds.x, bounds.y, bounds.w, bounds.h);\r\n        }\r\n\r\n        function createLinearGradient(ctx, start, end, bounds, type) {\r\n            var dir = { x: end.x - start.x, y: end.y - start.y };\r\n            var first = { x: start.x, y: start.y };\r\n            var last = { x: end.x, y: end.y };\r\n\r\n            var stops = [\r\n                { offset: 0.0, color: \"#000000\" },\r\n                { offset: 1.0, color: \"#FFFFFF\" }\r\n            ];\r\n\r\n            if (type === \"Pad\") {\r\n                var grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\r\n                for (var i = 0; i < stops.length; i++) {\r\n                    var stop = stops[i];\r\n                    grd.addColorStop(stop.offset, stop.color);\r\n                }\r\n                return grd;\r\n            }\r\n\r\n            var calculator = new GradientMetricsCalculator();\r\n            calculator.Calculate(dir, first, last, bounds);\r\n\r\n            if (type === \"Repeat\") {\r\n                var grd = ctx.createLinearGradient(first.x, first.y, last.x, last.y);\r\n                var steps = (last.x - first.x) / dir.x;\r\n                var curOffset = 0.0;\r\n                for (var i = 0.0; i < steps; i++) {\r\n                    for (var j = 0; j < stops.length; j++) {\r\n                        var stop = stops[j];\r\n                        grd.addColorStop(curOffset + (stop.offset / steps), stop.color);\r\n                    }\r\n                    curOffset += (1.0 / steps);\r\n                }\r\n                return grd;\r\n            }\r\n\r\n            if (type === \"Reflect\") {\r\n                // not implemented\r\n            }\r\n        }\r\n\r\n        function GradientMetricsCalculator() {\r\n            //+x,0y\r\n            this.E = function (dir, first, last, bounds) {\r\n                var maxX = bounds.x + bounds.w;\r\n                while (first.x > bounds.x)\r\n                    first.x -= dir.x;\r\n                while (last.x < maxX)\r\n                    last.x += dir.x;\r\n            };\r\n            //-x,0y\r\n            this.W = function (dir, first, last, bounds) {\r\n                var maxX = bounds.x + bounds.w;\r\n                while (first.x < maxX)\r\n                    first.x -= dir.x;\r\n                while (last.x > bounds.x)\r\n                    last.x += dir.x;\r\n            };\r\n\r\n            //0x,+y\r\n            this.S = function (dir, first, last, bounds) {\r\n                var maxY = bounds.y + bounds.h;\r\n                while (first.y > bounds.y)\r\n                    first.y -= dir.y;\r\n                while (last.y < maxY)\r\n                    last.y += dir.y;\r\n            };\r\n            //0x,-y\r\n            this.N = function (dir, first, last, bounds) {\r\n                var maxY = bounds.y + bounds.h;\r\n                while (first.y < maxY)\r\n                    first.y -= dir.y;\r\n                while (last.y > bounds.y)\r\n                    last.y += dir.y;\r\n            };\r\n\r\n            //-x,-y\r\n            this.NW = function (dir, first, last, bounds) {\r\n                var maxX = bounds.x + bounds.w;\r\n                var maxY = bounds.y + bounds.h;\r\n                while (first.x < maxX && first.y < maxY) {\r\n                    first.x -= dir.x;\r\n                    first.y -= dir.y;\r\n                }\r\n                while (last.x > bounds.x && last.y > bounds.y) {\r\n                    last.x += dir.x;\r\n                    last.y += dir.y;\r\n                }\r\n\r\n            };\r\n            //-x,+y\r\n            this.SW = function (dir, first, last, bounds) {\r\n                var maxX = bounds.x + bounds.w;\r\n                var maxY = bounds.y + bounds.h;\r\n                while (first.x < maxX && first.y > bounds.y) {\r\n                    first.x -= dir.x;\r\n                    first.y -= dir.y;\r\n                }\r\n                while (last.x > bounds.x && last.y < maxY) {\r\n                    last.x += dir.x;\r\n                    last.y += dir.y;\r\n                }\r\n            };\r\n\r\n            //+x,-y\r\n            this.NE = function (dir, first, last, bounds) {\r\n                var maxX = bounds.x + bounds.w;\r\n                var maxY = bounds.y + bounds.h;\r\n                while (first.x > bounds.x && first.y < maxY) {\r\n                    first.x -= dir.x;\r\n                    first.y -= dir.y;\r\n                }\r\n                while (last.x < maxX && last.y > bounds.y) {\r\n                    last.x += dir.x;\r\n                    last.y += dir.y;\r\n                }\r\n            };\r\n            //+x,+y\r\n            this.SE = function (dir, first, last, bounds) {\r\n                var maxX = bounds.x + bounds.w;\r\n                var maxY = bounds.y + bounds.h;\r\n                while (first.x > bounds.x && first.y > bounds.y) {\r\n                    first.x -= dir.x;\r\n                    first.y -= dir.y;\r\n                }\r\n                while (last.x < maxX && last.y < maxY) {\r\n                    last.x += dir.x;\r\n                    last.y += dir.y;\r\n                }\r\n            };\r\n\r\n            this.Calculate = function (dir, first, last, bounds) {\r\n                if (dir.y === 0) {\r\n                    if (dir.x < 0)\r\n                        this.W(dir, first, last, bounds);\r\n                    else\r\n                        this.E(dir, first, last, bounds);\r\n                } else if (dir.x === 0) {\r\n                    if (dir.y < 0)\r\n                        this.N(dir, first, last, bounds);\r\n                    else\r\n                        this.S(dir, first, last, bounds);\r\n                } else if (dir.x < 0 && dir.y < 0) { // e\\s\r\n                    this.NW(dir, first, last, bounds);\r\n                } else if (dir.x < 0 && dir.y > 0) { // e/s\r\n                    this.SW(dir, first, last, bounds);\r\n                } else if (dir.x > 0 && dir.y < 0) { // s/e\r\n                    this.NE(dir, first, last, bounds);\r\n                } else if (dir.x > 0 && dir.y > 0) { // s\\e\r\n                    this.SE(dir, first, last, bounds);\r\n                }\r\n            };\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load();\">\r\n    <canvas id=\"canvas\">\r\n\r\n    </canvas>\r\n</body>\r\n</html>"
  },
  {
    "path": "proto/silo/matrix-multiplypoint.html",
    "content": "﻿<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script src=\"../jquery-1.7.js\" type=\"text/javascript\"></script>\r\n    <script src=\"../Javascript/Runtime/Nullstone.js\" type=\"text/javascript\"></script>\r\n    <script src=\"../Javascript/Primitives/Enums.js\" type=\"text/javascript\"></script>\r\n    <script src=\"../Javascript/Primitives/Matrix.js\" type=\"text/javascript\"></script>\r\n    <script src=\"../Javascript/Primitives/Point.js\" type=\"text/javascript\"></script>\r\n    <script type=\"text/javascript\">\r\n        $(document).ready(function () {\r\n            var ctx = document.getElementById(\"canvas\").getContext(\"2d\");\r\n\r\n            var m = new Matrix([0.6559527714004638, 0, -186.1196142997681, 0, 0.6559527714004638, -85.08589143981453]);\r\n            var p = new Point(511.047, 342.252);\r\n            var f = m.TransformPoint(p);\r\n            var valid = f.X === 149.10308166612475 && f.Y === 139.415256477537;\r\n        });\r\n    </script>\r\n</head>\r\n<body>\r\n    <canvas id=\"canvas\" width=\"600\" height=\"600\" style=\"background: #eeeeee;\">\r\n    </canvas>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "proto/silo/multiple-composite.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script type=\"text/javascript\">\r\n        function load() {\r\n            var canvas = document.getElementById(\"canvas\");\r\n            var ctx = canvas.getContext('2d');\r\n\r\n            canvas.width = 500;\r\n            canvas.height = 500;\r\n\r\n            var colors = [\"red\", \"orange\", \"yellow\", \"green\", \"blue\", \"purple\"];\r\n\r\n            ctx.globalCompositeOperation = \"destination-over\";\r\n            for (var j = 0; j < 2; j++) {\r\n                for (var i = 0; i < colors.length; i++) {\r\n                    ctx.fillStyle = colors[i];\r\n                    ctx.beginPath();\r\n                    ctx.arc(200, 200, ((i + 1) * 10) + (j * 60), 0, 2 * Math.PI, false);\r\n                    ctx.closePath();\r\n                    ctx.fill();\r\n                }\r\n            }\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load();\">\r\n    <canvas id=\"canvas\">\r\n\r\n    </canvas>\r\n</body>\r\n</html>"
  },
  {
    "path": "proto/silo/overrides.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script type=\"text/javascript\">\r\n        var count = 100000;\r\n\r\n        var start = new Date().getTime();\r\n        var arr1 = [];\r\n        for (var i = 0; i < count; i++) {\r\n            arr1.splice(0, 0, i);\r\n        }\r\n        var time1 = new Date().getTime() - start;\r\n\r\n        var _supersplice = Array.prototype.splice;\r\n        Array.prototype.splice = function () {\r\n            //do nothing\r\n            _supersplice.apply(this, arguments);\r\n            //do nothing\r\n        };\r\n\r\n        start = new Date().getTime();\r\n        var arr2 = [];\r\n        for (var i = 0; i < count; i++) {\r\n            arr2.splice(0, 0, i);\r\n        }\r\n        var time2 = new Date().getTime() - start;\r\n\r\n        console.log(time1, time2);\r\n    </script>\r\n</head>\r\n<body>\r\n\r\n</body>\r\n</html>"
  },
  {
    "path": "proto/silo/radial-gradient.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script type=\"text/javascript\">\r\n        function load() {\r\n            var origin = { x: 50, y: 50 };\r\n            var center = { x: 80, y: 80 };\r\n            var rx = 200;\r\n            var ry = 200;\r\n            var bounds = { x: 100, y: 50, w: 300, h: 200 };\r\n\r\n            var canvas = document.getElementById(\"canvas\");\r\n            var ctx = canvas.getContext('2d');\r\n\r\n            canvas.width = 500;\r\n            canvas.height = 500;\r\n\r\n            ctx.fillStyle = \"yellow\";\r\n            ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n            var grd = createRadialGradient(ctx, origin, center, rx, ry, bounds, \"Repeat\");\r\n\r\n            ctx.fillStyle = grd;\r\n            ctx.fillRect(bounds.x, bounds.y, bounds.w, bounds.h);\r\n        }\r\n\r\n        function createRadialGradient(ctx, origin, center, rx, ry, bounds, type) {\r\n            var stops = [\r\n                {offset: 0.2, color: \"#000000\"},\r\n                {offset: 1.0, color: \"#FFFFFF\"}\r\n            ];\r\n\r\n            var grd = ctx.createRadialGradient(50, 50, 100, 100, 100, 0);\r\n            var grd = ctx.createRadialGradient(origin.x + bounds.x, origin.y + bounds.y, 0, center.x + bounds.x, center.y + bounds.y, 150);\r\n            for (var i = 0; i < stops.length; i++) {\r\n                var stop = stops[i];\r\n                grd.addColorStop(stop.offset, stop.color);\r\n            }\r\n            return grd;\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load();\">\r\n    <canvas id=\"canvas\">\r\n\r\n    </canvas>\r\n</body>\r\n</html>"
  },
  {
    "path": "proto/silo/silo1.html",
    "content": "﻿<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script type=\"text/javascript\" src=\"../jquery-1.7.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        $(document).ready(function () {\r\n            var testCanvas = document.getElementById(\"testCanvas\");\r\n            document.onkeypress = function (e) {\r\n                if (window.console && window.console.info)\r\n                    window.console.info(\"keypress: \" + e.keyCode);\r\n            };\r\n            document.onkeydown = function (e) { return test(window.event ? window.event : e); };\r\n        });\r\n        function test(e) {\r\n            if (window.console && window.console.info)\r\n                window.console.info(\"keydown: \" + e.keyCode);\r\n            if ((e.keyCode ? e.keyCode : e.which) === 8)\r\n                return false;\r\n        }\r\n    </script>\r\n</head>\r\n<body>\r\n    <canvas id=\"testCanvas\" tabindex=\"1\" width=\"600\" height=\"600\" style=\"background-color: Black;\">\r\n    </canvas>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "src/Clipboard/BasicClipboard.ts",
    "content": "module Fayde.Clipboard {\n    export class BasicClipboard implements IClipboard {\n        CopyText(text: string) {\n            var res = (<any>window).clipboardData.setData(\"Text\", text);\n            if (!res)\n                alert(\"Your browser do not allow copy to the clipboard.\");\n        }\n\n        GetTextContents(callback: (text: string) => void) {\n            var text = (<any>window).clipboardData.getData(\"Text\");\n            callback(text);\n        }\n    }\n}"
  },
  {
    "path": "src/Clipboard/Create.ts",
    "content": "module Fayde.Clipboard {\n    export function Create(): IClipboard {\n        if ((<any>window).clipboardData)\n            return new BasicClipboard();\n        return new NetscapeClipboard();\n    }\n}"
  },
  {
    "path": "src/Clipboard/IClipboard.ts",
    "content": "module Fayde.Clipboard {\n    export interface IClipboard {\n        CopyText(text: string);\n        GetTextContents(callback: (text: string) => void);\n    }\n\n    var cp = new nullstone.Memoizer((key) => {\n        var div = document.createElement(\"div\");\n        div.id = key;\n        ((style: CSSStyleDeclaration) => {\n            style.opacity = \"0.0\";\n            style.position = \"absolute\";\n            style.left = \"-300px\";\n            //style.top = \"-150px\";\n        })(div.style);\n        document.body.appendChild(div);\n        div.contentEditable = \"true\";\n        return div;\n    });\n\n    export function memoizePlaceholder(key: string): HTMLDivElement {\n        return cp.memoize(key);\n    }\n}"
  },
  {
    "path": "src/Clipboard/NetscapeClipboard.ts",
    "content": "/// <reference path=\"BasicClipboard\" />\n\nmodule Fayde.Clipboard {\n    export class NetscapeClipboard implements IClipboard {\n        private $$fn: (text: string) => void = null;\n\n        constructor() {\n            document.body.contentEditable = \"true\";\n            document.body.style.cursor = \"default\";\n            document.body.addEventListener(\"paste\", this.$$notify);\n        }\n\n        CopyText(text: string) {\n            var div = memoizePlaceholder(\"special_copy\");\n            div.textContent = text;\n            selectContent(div);\n\n            tryRequestPrivilege();\n            // Copy the selected content to the clipboard\n            // Works in Firefox and in Safari before version 5\n            if (!document.execCommand(\"copy\", false, null))\n                alert(\"Your browser does not allow copy to the clipboard. This feature will not function\");\n        }\n\n        GetTextContents(callback: (text: string) => void) {\n            this.$$fn = callback;\n        }\n\n        private $$notify = (e: any) => {\n            if (!this.$$fn)\n                return;\n            var ev = e.originalEvent || e;\n            var dt = ev.clipboardData;\n            this.$$fn(dt.getData('text/plain'));\n            this.$$fn = null;\n        }\n    }\n\n    function selectContent(element: HTMLDivElement) {\n        var rangeToSelect = document.createRange();\n        rangeToSelect.selectNodeContents(element);\n\n        // select the contents\n        var selection = window.getSelection();\n        selection.removeAllRanges();\n        selection.addRange(rangeToSelect);\n    }\n\n    function tryRequestPrivilege() {\n        var netscape = window ? (<any>window).netscape : null;\n        if (netscape && netscape.security) {\n            netscape.security.PrivilegeManager.enablePrivilege(\"UniversalXPConnect\");\n        }\n    }\n}"
  },
  {
    "path": "src/Collections/CollectionChangedEventArgs.ts",
    "content": "module Fayde.Collections {\r\n    export enum CollectionChangedAction {\r\n        Add = 1,\r\n        Remove = 2,\r\n        Replace = 3,\r\n        Reset = 4,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(CollectionChangedAction, \"NotifyCollectionChangedAction\");\r\n\r\n    export class CollectionChangedEventArgs implements nullstone.IEventArgs {\r\n        Action: CollectionChangedAction;\r\n        OldStartingIndex: number;\r\n        NewStartingIndex: number;\r\n        OldItems: any[];\r\n        NewItems: any[];\r\n\r\n        static Reset(allValues: any[]): CollectionChangedEventArgs {\r\n            var args = new CollectionChangedEventArgs();\r\n            Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Reset, writable: false });\r\n            Object.defineProperty(args, \"OldStartingIndex\", { value: 0, writable: false });\r\n            Object.defineProperty(args, \"NewStartingIndex\", { value: -1, writable: false });\r\n            Object.defineProperty(args, \"OldItems\", { value: allValues, writable: false });\r\n            Object.defineProperty(args, \"NewItems\", { value: null, writable: false });\r\n            return args;\r\n        }\r\n        static Replace(newValue: any, oldValue: any, index: number): CollectionChangedEventArgs {\r\n            var args = new CollectionChangedEventArgs();\r\n            Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Replace, writable: false });\r\n            Object.defineProperty(args, \"OldStartingIndex\", { value: -1, writable: false });\r\n            Object.defineProperty(args, \"NewStartingIndex\", { value: index, writable: false });\r\n            Object.defineProperty(args, \"OldItems\", { value: [oldValue], writable: false });\r\n            Object.defineProperty(args, \"NewItems\", { value: [newValue], writable: false });\r\n            return args;\r\n        }\r\n        static Add(newValue: any, index: number): CollectionChangedEventArgs {\r\n            var args = new CollectionChangedEventArgs();\r\n            Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Add, writable: false });\r\n            Object.defineProperty(args, \"OldStartingIndex\", { value: -1, writable: false });\r\n            Object.defineProperty(args, \"NewStartingIndex\", { value: index, writable: false });\r\n            Object.defineProperty(args, \"OldItems\", { value: null, writable: false });\r\n            Object.defineProperty(args, \"NewItems\", { value: [newValue], writable: false });\r\n            return args;\r\n        }\r\n        static AddRange(newValues: any[], index: number): CollectionChangedEventArgs {\r\n            var args = new CollectionChangedEventArgs();\r\n            Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Add, writable: false });\r\n            Object.defineProperty(args, \"OldStartingIndex\", { value: -1, writable: false });\r\n            Object.defineProperty(args, \"NewStartingIndex\", { value: index, writable: false });\r\n            Object.defineProperty(args, \"OldItems\", { value: null, writable: false });\r\n            Object.defineProperty(args, \"NewItems\", { value: newValues, writable: false });\r\n            return args;\r\n        }\r\n        static Remove(oldValue: any, index: number): CollectionChangedEventArgs {\r\n            var args = new CollectionChangedEventArgs();\r\n            Object.defineProperty(args, \"Action\", { value: CollectionChangedAction.Remove, writable: false });\r\n            Object.defineProperty(args, \"OldStartingIndex\", { value: index, writable: false });\r\n            Object.defineProperty(args, \"NewStartingIndex\", { value: -1, writable: false });\r\n            Object.defineProperty(args, \"OldItems\", { value: [oldValue], writable: false });\r\n            Object.defineProperty(args, \"NewItems\", { value: null, writable: false });\r\n            return args;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Collections/DeepObservableCollection.ts",
    "content": "﻿/// <reference path=\"ObservableCollection.ts\" />\r\n\r\nmodule Fayde.Collections {\r\n    export class DeepObservableCollection<T> extends ObservableCollection<T> {\r\n        ItemPropertyChanged = new nullstone.Event<ItemPropertyChangedEventArgs<T>>();\r\n        constructor() {\r\n            super();\r\n            this.CollectionChanged.on(this._OnCollectionChanged, this);\r\n        }\r\n\r\n        private _OnCollectionChanged(sender: any, e: CollectionChangedEventArgs) {\r\n            if (e.NewItems) {\r\n                for (var i = 0; i < e.NewItems.length; i++) {\r\n                    var notify = INotifyPropertyChanged_.as(e.NewItems[i]);\r\n                    if (notify)\r\n                        notify.PropertyChanged.on(this._OnItemPropertyChanged, this);\r\n                }\r\n            }\r\n            if (e.OldItems) {\r\n                for (var i = 0; i < e.OldItems.length; i++) {\r\n                    var notify = INotifyPropertyChanged_.as(e.OldItems[i]);\r\n                    if (notify)\r\n                        notify.PropertyChanged.off(this._OnItemPropertyChanged, this);\r\n                }\r\n            }\r\n        }\r\n        private _OnItemPropertyChanged(sender: T, e: PropertyChangedEventArgs) {\r\n            this.ItemPropertyChanged.raise(this, new ItemPropertyChangedEventArgs<T>(sender, e.PropertyName));\r\n        }\r\n    }\r\n} "
  },
  {
    "path": "src/Collections/FilteredCollection.ts",
    "content": "﻿module Fayde.Collections {\r\n    export interface IFilterItemFunc<T> {\r\n        (item: T): boolean;\r\n    }\r\n    export interface IFilterItemIndexFunc<T> {\r\n        (item: T, index: number): boolean;\r\n    }\r\n\r\n    export class FilteredCollection<T> extends DeepObservableCollection<T> {\r\n        private _Source: DeepObservableCollection<T>;\r\n        get Source () { return this._Source; }\r\n        set Source (value: DeepObservableCollection<T>) { this._SetSource(value); }\r\n\r\n        private _Filter: IFilterItemIndexFunc<T>;\r\n        get Filter () {\r\n            return this._Filter;\r\n        }\r\n\r\n        set Filter (value: IFilterItemIndexFunc<T>) {\r\n            this._Filter = value;\r\n            this.Update();\r\n        }\r\n\r\n        constructor (filter?: IFilterItemFunc<T>, source?: DeepObservableCollection<T>);\r\n        constructor (filter?: IFilterItemIndexFunc<T>, source?: DeepObservableCollection<T>);\r\n        constructor (filter?: IFilterItemIndexFunc<T>, source?: DeepObservableCollection<T>) {\r\n            super();\r\n            this.Filter = filter;\r\n            this._SetSource(source || new DeepObservableCollection<T>());\r\n        }\r\n\r\n        private _SetSource (source: DeepObservableCollection<T>) {\r\n            if (this._Source) {\r\n                this._Source.CollectionChanged.off(this._OnSourceCollectionChanged, this);\r\n                this._Source.ItemPropertyChanged.off(this._OnSourceItemPropertyChanged, this);\r\n            }\r\n            this._Source = source;\r\n            if (source) {\r\n                source.CollectionChanged.on(this._OnSourceCollectionChanged, this);\r\n                source.ItemPropertyChanged.on(this._OnSourceItemPropertyChanged, this);\r\n            }\r\n            this.Update();\r\n        }\r\n\r\n        private _OnSourceCollectionChanged (sender: any, e: CollectionChangedEventArgs) {\r\n            this.Update();\r\n        }\r\n\r\n        private _OnSourceItemPropertyChanged (sender: any, e: ItemPropertyChangedEventArgs<T>) {\r\n            this.Update();\r\n            var index = this.Source.IndexOf(e.Item);\r\n            if (this.Filter && this.Filter(e.Item, index))\r\n                this.ItemPropertyChanged.raise(this, e);\r\n        }\r\n\r\n        Update () {\r\n            if (!this._Source)\r\n                return;\r\n            var filter = this.Filter || ((item: T) => true);\r\n            for (var i = 0, j = 0, enumerator = this._Source.getEnumerator(); enumerator.moveNext(); i++) {\r\n                var isIncluded = filter(enumerator.current, i);\r\n                var isCurrent = j < this.Count && this.GetValueAt(j) === enumerator.current;\r\n                if (isIncluded && !isCurrent)\r\n                    this.Insert(j, enumerator.current);\r\n                else if (!isIncluded && isCurrent)\r\n                    this.RemoveAt(j);\r\n                if (isIncluded)\r\n                    j++;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Collections/INotifyCollectionChanged.ts",
    "content": "module Fayde.Collections {\r\n    export interface INotifyCollectionChanged {\r\n        CollectionChanged: nullstone.Event<CollectionChangedEventArgs>;\r\n    }\r\n    export var INotifyCollectionChanged_ = new nullstone.Interface<INotifyCollectionChanged>(\"INotifyCollectionChanged\");\r\n    INotifyCollectionChanged_.is = (o: any): boolean => {\r\n        return o && o.CollectionChanged instanceof nullstone.Event;\r\n    };\r\n}"
  },
  {
    "path": "src/Collections/ItemPropertyChangedEventArgs.ts",
    "content": "﻿/// <reference path=\"../Core/INotifyPropertyChanged.ts\" />\r\n\r\nmodule Fayde.Collections {\r\n    export class ItemPropertyChangedEventArgs<T> extends PropertyChangedEventArgs {\r\n        Item: T;\r\n        constructor(item: T, propertyName: string) {\r\n            super(propertyName);\r\n            Object.defineProperty(this, \"Item\", { value: item, writable: false });\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Collections/ObservableCollection.ts",
    "content": "/// <reference path=\"INotifyCollectionChanged.ts\" />\r\n/// <reference path=\"../Core/INotifyPropertyChanged.ts\" />\r\n\r\nmodule Fayde.Collections {\r\n    export class ObservableCollection<T> implements nullstone.IEnumerable<T>, nullstone.ICollection<T>, INotifyCollectionChanged, INotifyPropertyChanged {\r\n        private _ht: T[] = [];\r\n\r\n        getEnumerator (): nullstone.IEnumerator<T> {\r\n            return nullstone.IEnumerator_.fromArray(this._ht);\r\n        }\r\n\r\n        CollectionChanged = new nullstone.Event<CollectionChangedEventArgs>();\r\n        PropertyChanged = new nullstone.Event<PropertyChangedEventArgs>();\r\n\r\n        get Count (): number {\r\n            return this._ht.length;\r\n        }\r\n\r\n        ToArray (): T[] {\r\n            return this._ht.slice(0);\r\n        }\r\n\r\n        GetValueAt (index: number): T {\r\n            var ht = this._ht;\r\n            if (index < 0 || index >= ht.length)\r\n                throw new IndexOutOfRangeException(index);\r\n            return ht[index];\r\n        }\r\n\r\n        SetValueAt (index: number, value: T) {\r\n            var ht = this._ht;\r\n            if (index < 0 || index >= ht.length)\r\n                throw new IndexOutOfRangeException(index);\r\n            var oldValue = ht[index];\r\n            ht[index] = value;\r\n            this.CollectionChanged.raise(this, CollectionChangedEventArgs.Replace(value, oldValue, index));\r\n        }\r\n\r\n        Add (value: T) {\r\n            var index = this._ht.push(value) - 1;\r\n            this.CollectionChanged.raise(this, CollectionChangedEventArgs.Add(value, index));\r\n            this._RaisePropertyChanged(\"Count\");\r\n        }\r\n\r\n        AddRange (values: T[]) {\r\n            var index = this._ht.length;\r\n            var len = values.length;\r\n            for (var i = 0; i < len; i++) {\r\n                this._ht.push(values[i]);\r\n            }\r\n            this.CollectionChanged.raise(this, CollectionChangedEventArgs.AddRange(values, index));\r\n            this._RaisePropertyChanged(\"Count\");\r\n        }\r\n\r\n        Insert (index: number, value: T) {\r\n            var ht = this._ht;\r\n            if (index < 0 || index > ht.length)\r\n                throw new IndexOutOfRangeException(index);\r\n            if (index >= ht.length)\r\n                ht.push(value);\r\n            else\r\n                ht.splice(index, 0, value);\r\n            this.CollectionChanged.raise(this, CollectionChangedEventArgs.Add(value, index));\r\n            this._RaisePropertyChanged(\"Count\");\r\n        }\r\n\r\n        IndexOf (value: T): number {\r\n            return this._ht.indexOf(value);\r\n        }\r\n\r\n        Contains (value: T): boolean {\r\n            return this._ht.indexOf(value) > -1;\r\n        }\r\n\r\n        Remove (value: T): boolean {\r\n            var index = this._ht.indexOf(value);\r\n            if (index < 0)\r\n                return false;\r\n            this._ht.splice(index, 1);\r\n            this.CollectionChanged.raise(this, CollectionChangedEventArgs.Remove(value, index));\r\n            this._RaisePropertyChanged(\"Count\");\r\n            return true;\r\n        }\r\n\r\n        RemoveAt (index: number) {\r\n            if (index < 0 || index >= this._ht.length)\r\n                throw new IndexOutOfRangeException(index);\r\n            var item = this._ht.splice(index, 1)[0];\r\n            this.CollectionChanged.raise(this, CollectionChangedEventArgs.Remove(item, index));\r\n            this._RaisePropertyChanged(\"Count\");\r\n        }\r\n\r\n        Clear () {\r\n            var old = this._ht;\r\n            this._ht = [];\r\n            this.CollectionChanged.raise(this, CollectionChangedEventArgs.Reset(old));\r\n            this._RaisePropertyChanged(\"Count\");\r\n        }\r\n\r\n        private _RaisePropertyChanged (propertyName: string) {\r\n            this.PropertyChanged.raise(this, new PropertyChangedEventArgs(propertyName));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ObservableCollection);\r\n    nullstone.ICollection_.mark(ObservableCollection);\r\n}"
  },
  {
    "path": "src/Collections/ReadOnlyObservableCollection.ts",
    "content": "module Fayde.Collections {\r\n    export class ReadOnlyObservableCollection<T> implements nullstone.ICollection<T>, INotifyCollectionChanged, INotifyPropertyChanged {\r\n        get Count (): number {\r\n            return this._Source.Count;\r\n        }\r\n\r\n        private _Source: ObservableCollection<T>;\r\n\r\n        CollectionChanged = new nullstone.Event<CollectionChangedEventArgs>();\r\n        PropertyChanged = new nullstone.Event<PropertyChangedEventArgs>();\r\n\r\n        constructor (source: ObservableCollection<T>) {\r\n            this._Source = source;\r\n            this._Source.CollectionChanged.on(this._OnCollectionChanged, this);\r\n            this._Source.PropertyChanged.on(this._OnPropertyChanged, this);\r\n        }\r\n\r\n        GetValueAt (index: number) {\r\n            return this._Source.GetValueAt(index);\r\n        }\r\n\r\n        getEnumerator (): nullstone.IEnumerator<T> {\r\n            return this._Source.getEnumerator();\r\n        }\r\n\r\n        ToArray (): T[] {\r\n            return this._Source.ToArray();\r\n        }\r\n\r\n        IndexOf (value: T): number {\r\n            return this._Source.IndexOf(value);\r\n        }\r\n\r\n        Contains (value: T): boolean {\r\n            return this._Source.Contains(value);\r\n        }\r\n\r\n        private _OnCollectionChanged (sender: any, args: CollectionChangedEventArgs) {\r\n            this.CollectionChanged.raise(this, args);\r\n        }\r\n\r\n        private _OnPropertyChanged (sender: any, args: PropertyChangedEventArgs) {\r\n            this.PropertyChanged.raise(this, args);\r\n        }\r\n\r\n        SetValueAt (index: number, value: T) {\r\n            throw new Error(\"Collection is read only.\");\r\n        }\r\n\r\n        Insert (index: number, value: T) {\r\n            throw new Error(\"Collection is read only.\");\r\n        }\r\n\r\n        Add (value: T) {\r\n            throw new Error(\"Collection is read only.\");\r\n        }\r\n\r\n        Remove (value: T): boolean {\r\n            throw new Error(\"Collection is read only.\");\r\n        }\r\n\r\n        RemoveAt (index: number) {\r\n            throw new Error(\"Collection is read only.\");\r\n        }\r\n\r\n        Clear () {\r\n            throw new Error(\"Collection is read only.\");\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ObservableCollection);\r\n    nullstone.addTypeInterfaces(ReadOnlyObservableCollection, nullstone.ICollection_, INotifyCollectionChanged_, INotifyPropertyChanged_);\r\n}"
  },
  {
    "path": "src/Controls/Border.ts",
    "content": "/// <reference path=\"../Core/FrameworkElement.ts\" />\r\n/// <reference path=\"../Markup/ContentAnnotation.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class Border extends FrameworkElement {\r\n        CreateLayoutUpdater (): minerva.controls.border.BorderUpdater {\r\n            return new minerva.controls.border.BorderUpdater();\r\n        }\r\n\r\n        static BackgroundProperty = DependencyProperty.RegisterCore(\"Background\", () => Media.Brush, Border);\r\n        static BorderBrushProperty = DependencyProperty.RegisterCore(\"BorderBrush\", () => Media.Brush, Border);\r\n        static BorderThicknessProperty = DependencyProperty.Register(\"BorderThickness\", () => Thickness, Border); //TODO: Validator\r\n        static ChildProperty = DependencyProperty.Register(\"Child\", () => UIElement, Border);\r\n        static CornerRadiusProperty = DependencyProperty.Register(\"CornerRadius\", () => CornerRadius, Border); //TODO: Validator\r\n        static PaddingProperty = DependencyProperty.Register(\"Padding\", () => Thickness, Border); //TODO: Validator\r\n        Background: Media.Brush;\r\n        BorderBrush: Media.Brush;\r\n        BorderThickness: minerva.Thickness;\r\n        Child: UIElement;\r\n        CornerRadius: CornerRadius;\r\n        Padding: Thickness;\r\n\r\n        constructor () {\r\n            super();\r\n            this.DefaultStyleKey = Border;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Border);\r\n    Markup.Content(Border, Border.ChildProperty);\r\n\r\n    UIReaction<minerva.IBrush>(Border.BackgroundProperty, (upd, ov, nv) => {\r\n        upd.invalidate();\r\n    });\r\n    UIReaction<minerva.IBrush>(Border.BorderBrushProperty, (upd, ov, nv) => {\r\n        upd.invalidate();\r\n    });\r\n    UIReaction<Thickness>(Border.BorderThicknessProperty, (upd, ov, nv) => upd.invalidateMeasure(), false, (src, dest) => !!src && !!dest && minerva.Thickness.copyTo(src, dest));\r\n    UIReaction<Thickness>(Border.PaddingProperty, (upd, ov, nv) => upd.invalidateMeasure(), false, (src, dest) => !!src && !!dest && minerva.Thickness.copyTo(src, dest));\r\n    UIReaction<minerva.CornerRadius>(Border.CornerRadiusProperty, (upd, ov, nv) => upd.invalidate(), false, (src, dest) => !!src && !!dest && minerva.CornerRadius.copyTo(src, dest));\r\n    UIReaction<UIElement>(Border.ChildProperty, (upd, ov, nv, border?: Border) => {\r\n        var node = border.XamlNode;\r\n        var error = new BError();\r\n        if (ov instanceof UIElement)\r\n            node.DetachVisualChild(ov, error);\r\n        if (nv instanceof UIElement)\r\n            node.AttachVisualChild(nv, error);\r\n        if (error.Message)\r\n            error.ThrowException();\r\n        upd.updateBounds();\r\n        upd.invalidateMeasure();\r\n    }, false, false);\r\n}"
  },
  {
    "path": "src/Controls/Button.ts",
    "content": "/// <reference path=\"Primitives/ButtonBase.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class Button extends Primitives.ButtonBase {\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = Button;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs) {\r\n            super.OnIsEnabledChanged(e);\r\n            this.IsTabStop = e.NewValue;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Button);\r\n    TemplateVisualStates(Button, \r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Pressed\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" });\r\n}"
  },
  {
    "path": "src/Controls/Canvas.ts",
    "content": "/// <reference path=\"Panel.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class Canvas extends Panel {\r\n        CreateLayoutUpdater() { return new minerva.controls.canvas.CanvasUpdater(); }\r\n\r\n        static TopProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"Top\", () => Number, Canvas, 0.0);\r\n        static GetTop(d: DependencyObject): number { return d.GetValue(Canvas.TopProperty); }\r\n        static SetTop(d: DependencyObject, value: number) { d.SetValue(Canvas.TopProperty, value); }\r\n        static LeftProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"Left\", () => Number, Canvas, 0.0);\r\n        static GetLeft(d: DependencyObject): number { return d.GetValue(Canvas.LeftProperty); }\r\n        static SetLeft(d: DependencyObject, value: number) { d.SetValue(Canvas.LeftProperty, value); }\r\n    }\r\n    Fayde.CoreLibrary.add(Canvas);\r\n\r\n    module reactions {\r\n        UIReactionAttached<number>(Canvas.TopProperty, minerva.controls.canvas.reactTo.top);\r\n        UIReactionAttached<number>(Canvas.LeftProperty, minerva.controls.canvas.reactTo.left);\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/CheckBox.ts",
    "content": "/// <reference path=\"Primitives/ToggleButton.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class CheckBox extends Primitives.ToggleButton {\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = CheckBox;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(CheckBox);\r\n    TemplateVisualStates(CheckBox, \r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Pressed\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" },\r\n        { GroupName: \"CheckStates\", Name: \"Checked\" },\r\n        { GroupName: \"CheckStates\", Name: \"Unchecked\" },\r\n        { GroupName: \"CheckStates\", Name: \"Indeterminate\" },\r\n        { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" },\r\n        { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" },\r\n        { GroupName: \"ValidationStates\", Name: \"Valid\" });\r\n}"
  },
  {
    "path": "src/Controls/ColumnDefinition.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ColumnDefinition extends DependencyObject implements minerva.controls.grid.IColumnDefinition {\r\n        //NOTE: Will not receive property changes from GridLength\r\n        static WidthProperty = DependencyProperty.Register(\"Width\", () => GridLength, ColumnDefinition, undefined, Incite);\r\n        static MaxWidthProperty = DependencyProperty.Register(\"MaxWidth\", () => Number, ColumnDefinition, Number.POSITIVE_INFINITY, Incite);\r\n        static MinWidthProperty = DependencyProperty.Register(\"MinWidth\", () => Number, ColumnDefinition, 0.0, Incite);\r\n        static ActualWidthProperty = DependencyProperty.RegisterReadOnly(\"ActualWidth\", () => Number, ColumnDefinition, 0.0);\r\n        Width: GridLength;\r\n        MaxWidth: number;\r\n        MinWidth: number;\r\n        ActualWidth: number;\r\n\r\n        setActualWidth (value: number) {\r\n            this.SetCurrentValue(ColumnDefinition.ActualWidthProperty, value);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ColumnDefinition);\r\n\r\n    import GridUnitType = minerva.controls.grid.GridUnitType;\r\n    function ConvertColumnDefinition (o: any): ColumnDefinition {\r\n        if (!o || o instanceof ColumnDefinition)\r\n            return <ColumnDefinition>o;\r\n        var s: string = o.toString();\r\n        var cd = new ColumnDefinition();\r\n        if (s.toLowerCase() === \"auto\") {\r\n            cd.Width = new GridLength(0, GridUnitType.Auto);\r\n            return cd;\r\n        }\r\n        if (s === \"*\") {\r\n            cd.Width = new GridLength(1, GridUnitType.Star);\r\n            return cd;\r\n        }\r\n        var v = parseFloat(s);\r\n        if (isNaN(v))\r\n            throw new XamlParseException(\"Invalid ColumnDefinition: '\" + s + \"'.\");\r\n        cd.Width = new GridLength(v, s[s.length - 1] === \"*\" ? GridUnitType.Star : GridUnitType.Pixel);\r\n        return cd;\r\n    }\r\n\r\n    nullstone.registerTypeConverter(ColumnDefinition, ConvertColumnDefinition);\r\n\r\n    export class ColumnDefinitionCollection extends XamlObjectCollection<ColumnDefinition> {\r\n        _RaiseItemAdded (value: ColumnDefinition, index: number) {\r\n            Incite(this, {\r\n                item: value,\r\n                index: index,\r\n                add: true\r\n            });\r\n        }\r\n\r\n        _RaiseItemRemoved (value: ColumnDefinition, index: number) {\r\n            Incite(this, {\r\n                item: value,\r\n                index: index,\r\n                add: false\r\n            });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ColumnDefinitionCollection);\r\n\r\n    function ConvertColumnDefinitionCollection (o: any): ColumnDefinitionCollection {\r\n        if (!o || o instanceof ColumnDefinitionCollection)\r\n            return <ColumnDefinitionCollection>o;\r\n        if (typeof o === \"string\") {\r\n            var tokens = (<string>o).split(\" \");\r\n            var len = tokens.length;\r\n            var cdc = new ColumnDefinitionCollection();\r\n            var cd: ColumnDefinition;\r\n            for (var i = 0; i < len; i++) {\r\n                if (cd = ConvertColumnDefinition(tokens[i]))\r\n                    cdc.Add(cd);\r\n            }\r\n            return cdc;\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    nullstone.registerTypeConverter(ColumnDefinitionCollection, ConvertColumnDefinitionCollection);\r\n}"
  },
  {
    "path": "src/Controls/ComboBox.ts",
    "content": "/// <reference path=\"Primitives/Selector.ts\" />\r\n/// <reference path=\"ContentPresenter.ts\" />\r\n/// <reference path=\"Primitives/Popup.ts\" />\r\n/// <reference path=\"Primitives/ToggleButton.ts\" />\r\n/// <reference path=\"ScrollViewer.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ComboBox extends Primitives.Selector {\r\n        DropDownOpened = new nullstone.Event();\r\n        DropDownClosed = new nullstone.Event();\r\n\r\n        static IsDropDownOpenProperty = DependencyProperty.Register(\"IsDropDownOpen\", () => Boolean, ComboBox, false, (d, args) => (<ComboBox>d)._IsDropDownOpenChanged(args));\r\n        static ItemContainerStyleProperty = DependencyProperty.Register(\"ItemContainerStyle\", () => Style, ComboBox, undefined, (d, args) => (<ListBox>d).OnItemContainerStyleChanged(args));\r\n        static MaxDropDownHeightProperty = DependencyProperty.Register(\"MaxDropDownHeight\", () => Number, ComboBox, Number.POSITIVE_INFINITY, (d, args) => (<ComboBox>d)._MaxDropDownHeightChanged(args));\r\n        static IsSelectionActiveProperty = Primitives.Selector.IsSelectionActiveProperty;\r\n        static WatermarkProperty = DependencyProperty.Register(\"Watermark\", () => String, ComboBox, \"\");\r\n        IsDropDownOpen: boolean;\r\n        ItemContainerStyle: Style;\r\n        MaxDropDownHeight: number;\r\n        Watermark: String;\r\n\r\n        private $ContentPresenter: ContentPresenter;\r\n        private $Popup: Primitives.Popup;\r\n        private $DropDownToggle: Primitives.ToggleButton;\r\n        private $DisplayedItem: ComboBoxItem = null;\r\n        private $SelectionBoxItem: any = null;\r\n        private $SelectionBoxItemTemplate: DataTemplate = null;\r\n        private $WatermarkElement: FrameworkElement;\r\n        private _NullSelFallback: any;\r\n        private _FocusedIndex: number = -1;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = ComboBox;\r\n        }\r\n\r\n        private _IsDropDownOpenChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            var open = args.NewValue;\r\n\r\n            if (this.$Popup != null)\r\n                this.$Popup.IsOpen = open;\r\n            if (this.$DropDownToggle != null)\r\n                this.$DropDownToggle.IsChecked = open;\r\n\r\n            if (open) {\r\n                this._FocusedIndex = this.Items.Count > 0 ? Math.max(this.SelectedIndex, 0) : -1;\r\n                if (this._FocusedIndex > -1) {\r\n                    var focusedItem = this.ItemContainersManager.ContainerFromIndex(this._FocusedIndex);\r\n                    if (focusedItem instanceof ComboBoxItem)\r\n                        (<ComboBoxItem>focusedItem).Focus();\r\n                }\r\n\r\n                this.LayoutUpdated.on(this._UpdatePopupSizeAndPosition, this);\r\n                this.DropDownOpened.raise(this, null);\r\n            } else {\r\n                this.Focus();\r\n                this.LayoutUpdated.off(this._UpdatePopupSizeAndPosition, this);\r\n                this.DropDownClosed.raise(this, null);\r\n            }\r\n\r\n            var selectedItem = this.SelectedItem;\r\n            this._UpdateDisplayedItem(open && selectedItem instanceof Fayde.UIElement ? null : selectedItem);\r\n            this.UpdateVisualState(true);\r\n            this._CheckWatermarkVisibility();\r\n        }\r\n        private _MaxDropDownHeightChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._UpdatePopupMaxHeight(args.NewValue);\r\n        }\r\n        \r\n        private _GetChildOfType(name: string, type: Function): any {\r\n            var temp = this.GetTemplateChild(name);\r\n            if (temp instanceof type)\r\n                return temp;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.UpdateVisualState(false);\r\n\r\n            this.$ContentPresenter = this._GetChildOfType(\"ContentPresenter\", ContentPresenter);\r\n            this.$Popup = this._GetChildOfType(\"Popup\", Primitives.Popup);\r\n            this.$DropDownToggle = this._GetChildOfType(\"DropDownToggle\", Primitives.ToggleButton);\r\n            this.$WatermarkElement = <FrameworkElement>this.GetTemplateChild(\"WatermarkElement\", FrameworkElement);\r\n\r\n            if (this.$ContentPresenter != null)\r\n                this._NullSelFallback = this.$ContentPresenter.Content;\r\n\r\n            if (this.$Popup != null) {\r\n                this._UpdatePopupMaxHeight(this.MaxDropDownHeight);\r\n                this.$Popup.WatchOutsideClick(this._PopupClickedOutside, this);\r\n\r\n                var child = this.$Popup.Child;\r\n                if (child != null) {\r\n                    child.KeyDown.on(this._OnChildKeyDown, this);\r\n                    (<FrameworkElement>child).SizeChanged.on(this._UpdatePopupSizeAndPosition, this);\r\n                }\r\n            }\r\n\r\n            if (this.$DropDownToggle != null) {\r\n                this.$DropDownToggle.Checked.on(this._OnToggleChecked, this);\r\n                this.$DropDownToggle.Unchecked.on(this._OnToggleUnchecked, this);\r\n            }\r\n\r\n            this.UpdateVisualState(false);\r\n            this._UpdateDisplayedItem(this.SelectedItem);\r\n        }\r\n\r\n        OnItemContainerStyleChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            var newStyle = <Style>args.NewValue;\r\n            var enumerator = this.ItemContainersManager.GetEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                var container = <FrameworkElement>enumerator.current;\r\n                if (container && container !== enumerator.CurrentItem)\r\n                    container.Style = newStyle;\r\n            }\r\n        }\r\n        IsItemItsOwnContainer(item: any): boolean {\r\n            return item instanceof ComboBoxItem;\r\n        }\r\n        GetContainerForItem(): UIElement {\r\n            return new ComboBoxItem();\r\n        }\r\n        PrepareContainerForItem(container: UIElement, item: any) {\r\n            super.PrepareContainerForItem(container, item);\r\n            var cbi = <ComboBoxItem>container;\r\n            if (cbi !== item) {\r\n                var ics = this.ItemContainerStyle;\r\n                if (!cbi.Style && ics)\r\n                    cbi.Style = ics;\r\n            }\r\n        }\r\n\r\n        GoToStateFocus(gotoFunc: (state: string) => boolean): boolean {\r\n            var isEnabled = this.IsEnabled;\r\n            if (this.IsDropDownOpen && isEnabled)\r\n                return gotoFunc(\"FocusedDropDown\");\r\n            else if (this.IsFocused && isEnabled)\r\n                return gotoFunc(\"Focused\");\r\n            return gotoFunc(\"Unfocused\");\r\n        }\r\n\r\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs) {\r\n            super.OnIsEnabledChanged(e);\r\n            if (!this.IsEnabled)\r\n                this.IsDropDownOpen = false;\r\n        }\r\n\r\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs) {\r\n            super.OnMouseLeftButtonDown(e);\r\n            if (!e.Handled) {\r\n                e.Handled = true;\r\n                this.SetValueInternal(ComboBox.IsSelectionActiveProperty, true);\r\n                this.IsDropDownOpen = !this.IsDropDownOpen;\r\n            }\r\n        }\r\n        OnMouseEnter(e: Input.MouseEventArgs) {\r\n            super.OnMouseEnter(e);\r\n            this.UpdateVisualState(true);\r\n        }\r\n        OnMouseLeave(e: Input.MouseEventArgs) {\r\n            super.OnMouseLeave(e);\r\n            this.UpdateVisualState(true);\r\n        }\r\n\r\n        OnTouchMove(e: Input.TouchEventArgs) {\r\n            super.OnTouchMove(e);\r\n            this.UpdateVisualState(true);\r\n        }\r\n        OnTouchDown(e: Input.TouchEventArgs) {\r\n            super.OnTouchDown(e);\r\n            if (!e.Handled) {\r\n                e.Handled = true;\r\n                this.SetValueInternal(ComboBox.IsSelectionActiveProperty, true);\r\n                this.IsDropDownOpen = !this.IsDropDownOpen;\r\n            }\r\n        }\r\n        OnTouchLeave(e: Input.TouchEventArgs) {\r\n            super.OnTouchLeave(e);\r\n            this.UpdateVisualState(true);\r\n        }\r\n\t\t\r\n        OnKeyDown(e: Input.KeyEventArgs) {\r\n            super.OnKeyDown(e);\r\n            if (e.Handled)\r\n                return;\r\n            e.Handled = true;\r\n\r\n            var key = e.Key;\r\n            if (this.FlowDirection === FlowDirection.RightToLeft) {\r\n                if (key === Input.Key.Left)\r\n                    key = Input.Key.Right;\r\n                else if (key === Input.Key.Right)\r\n                    key = Input.Key.Left;\r\n            }\r\n            switch (key) {\r\n                case Input.Key.Escape:\r\n                    this.IsDropDownOpen = false;\r\n                    break;\r\n                case Input.Key.Enter:\r\n                case Input.Key.Space:\r\n                    if (this.IsDropDownOpen && this._FocusedIndex !== this.SelectedIndex) {\r\n                        this.SelectedIndex = this._FocusedIndex;\r\n                        this.IsDropDownOpen = false;\r\n                    } else {\r\n                        this.IsDropDownOpen = true;\r\n                    }\r\n                    break;\r\n                case Input.Key.Right:\r\n                case Input.Key.Down:\r\n                    if (this.IsDropDownOpen) {\r\n                        if (this._FocusedIndex < (this.Items.Count - 1)) {\r\n                            this._FocusedIndex++;\r\n                            (<UIElement>this.ItemContainersManager.ContainerFromIndex(this._FocusedIndex)).Focus();\r\n                        }\r\n                    } else {\r\n                        this.SelectedIndex = Math.min(this.SelectedIndex + 1, this.Items.Count - 1);\r\n                    }\r\n                    break;\r\n                case Input.Key.Left:\r\n                case Input.Key.Up:\r\n                    if (this.IsDropDownOpen) {\r\n                        if (this._FocusedIndex > 0) {\r\n                            this._FocusedIndex--;\r\n                            (<UIElement>this.ItemContainersManager.ContainerFromIndex(this._FocusedIndex)).Focus();\r\n                        }\r\n                    } else {\r\n                        this.SelectedIndex = Math.max(this.SelectedIndex - 1, 0);\r\n                    }\r\n                    break;\r\n                default:\r\n                    e.Handled = false;\r\n                    break;\r\n            }\r\n        }\r\n                \r\n        private _CheckWatermarkVisibility() {\r\n            if (this.Watermark.length > 0 && this.$WatermarkElement)\r\n                this.$WatermarkElement.Visibility = this.$SelectionBoxItem != null ? Visibility.Collapsed : Visibility.Visible;\r\n        }\r\n        \r\n        OnGotFocus(e: RoutedEventArgs) {\r\n            super.OnGotFocus(e);\r\n            this.UpdateVisualState(true);\r\n        }\r\n        OnLostFocus(e: RoutedEventArgs) {\r\n            super.OnLostFocus(e);\r\n            this.SetValueInternal(ComboBox.IsSelectionActiveProperty, this.$Popup == null ? false : this.$Popup.IsOpen);\r\n            this.UpdateVisualState(true);\r\n        }\r\n\r\n        private _OnChildKeyDown(sender, e: Input.KeyEventArgs) {\r\n            this.OnKeyDown(e);\r\n        }\r\n        OnSelectionChanged(e: Primitives.SelectionChangedEventArgs) {\r\n            if (!this.IsDropDownOpen)\r\n                this._UpdateDisplayedItem(this.SelectedItem);\r\n            this._CheckWatermarkVisibility();\r\n        }\r\n        private _OnToggleChecked(sender, e) { this.IsDropDownOpen = true; }\r\n        private _OnToggleUnchecked(sender, e) { this.IsDropDownOpen = false; }\r\n\r\n        private _PopupClickedOutside() {\r\n            this.IsDropDownOpen = false;\r\n        }\r\n        private _UpdateDisplayedItem(selectedItem: any) {\r\n            if (!this.$ContentPresenter)\r\n                return;\r\n\r\n            if (this.$DisplayedItem != null) {\r\n                this.$DisplayedItem.Content = this.$ContentPresenter.Content;\r\n                this.$DisplayedItem = null;\r\n            }\r\n            this.$ContentPresenter.Content = null;\r\n\r\n            if (selectedItem == null) {\r\n                this.$ContentPresenter.Content = this._NullSelFallback;\r\n                this.$ContentPresenter.ContentTemplate = null;\r\n                this.$SelectionBoxItem = null;\r\n                this.$SelectionBoxItemTemplate = null;\r\n                return;\r\n            }\r\n\r\n            var content = selectedItem;\r\n            if (content instanceof ComboBoxItem)\r\n                content = content.Content;\r\n\r\n            var icm = this.ItemContainersManager;\r\n            var selectedIndex = this.SelectedIndex;\r\n            var temp = icm.ContainerFromIndex(selectedIndex);\r\n            if (temp instanceof ComboBoxItem) this.$DisplayedItem = <ComboBoxItem>temp;\r\n\r\n            this.$SelectionBoxItem = content;\r\n            this.$SelectionBoxItemTemplate = this.ItemTemplate;\r\n\r\n            if (this.$DisplayedItem != null) {\r\n                this.$SelectionBoxItemTemplate = this.$DisplayedItem.ContentTemplate;\r\n                if (content instanceof Fayde.UIElement)\r\n                    this.$DisplayedItem.Content = null;\r\n                else\r\n                    this.$DisplayedItem = null;\r\n            } else {\r\n                temp = icm.ContainerFromIndex(selectedIndex);\r\n                var container: ComboBoxItem;\r\n                if (temp instanceof ComboBoxItem) container = <ComboBoxItem>temp;\r\n                if (!container) {\r\n                    var generator = icm.CreateGenerator(selectedIndex, 1);\r\n                    if (generator.Generate() && generator.Current instanceof ComboBoxItem) {\r\n                        container = <ComboBoxItem>generator.Current;\r\n                        this.PrepareContainerForItem(container, generator.CurrentItem);\r\n                    }\r\n                }\r\n                if (container)\r\n                    this.$SelectionBoxItemTemplate = container.ContentTemplate;\r\n            }\r\n\r\n            this.$ContentPresenter.Content = this.$SelectionBoxItem;\r\n            this.$ContentPresenter.ContentTemplate = this.$SelectionBoxItemTemplate;\r\n        }\r\n        private _UpdatePopupSizeAndPosition(sender, e: nullstone.IEventArgs) {\r\n            var popup = this.$Popup;\r\n            if (!popup)\r\n                return;\r\n            var child = <FrameworkElement>popup.Child;\r\n            if (!(child instanceof FrameworkElement))\r\n                return;\r\n\r\n            child.MinWidth = this.ActualWidth;\r\n\r\n            var root = <FrameworkElement>VisualTreeHelper.GetRoot(this);\r\n            if (!root)\r\n                return;\r\n\r\n            try {\r\n                var xform = this.TransformToVisual(null);\r\n            } catch (err) {\r\n                //Ignore ComboBox being detached\r\n                return;\r\n            }\r\n\r\n            var offset = new Point(0, this.ActualHeight);\r\n            var bottomRight = new Point(offset.x + child.ActualWidth, offset.y + child.ActualHeight);\r\n\r\n            var topLeft = xform.Transform(offset);\r\n            bottomRight = xform.Transform(bottomRight);\r\n\r\n            var isRightToLeft = (this.FlowDirection === FlowDirection.RightToLeft);\r\n            if (isRightToLeft) {\r\n                var left = bottomRight.x;\r\n                bottomRight.x = topLeft.x;\r\n                topLeft.x = left;\r\n            }\r\n\r\n            var finalOffset = new Point();\r\n            var raw = root.ActualWidth;\r\n            if (bottomRight.x > raw) {\r\n                finalOffset.x = raw - bottomRight.x;\r\n            } else if (topLeft.x < 0) {\r\n                finalOffset.x = offset.x - topLeft.x;\r\n            } else {\r\n                finalOffset.x = offset.x;\r\n            }\r\n\r\n            if (isRightToLeft)\r\n                finalOffset.x = -finalOffset.x;\r\n\r\n            var rah = root.ActualHeight;\r\n            if (bottomRight.y > rah) {\r\n                finalOffset.y = -child.ActualHeight;\r\n            } else {\r\n                finalOffset.y = this.RenderSize.height;\r\n            }\r\n\r\n            popup.HorizontalOffset = finalOffset.x;\r\n            popup.VerticalOffset = finalOffset.y;\r\n\r\n            this._UpdatePopupMaxHeight(this.MaxDropDownHeight);\r\n        }\r\n        private _UpdatePopupMaxHeight(height: number) {\r\n            var child: FrameworkElement;\r\n            if (this.$Popup && (child = <FrameworkElement>this.$Popup.Child) && child instanceof FrameworkElement) {\r\n                if (height === Number.POSITIVE_INFINITY) {\r\n                    var surface = this.XamlNode.LayoutUpdater.tree.surface;\r\n                    if (surface)\r\n                        height = surface.height / 2.0;\r\n                }\r\n                child.MaxHeight = height;\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ComboBox);\r\n    TemplateParts(ComboBox, \r\n        { Name: \"ContentPresenter\", Type: ContentPresenter },\r\n        { Name: \"Popup\", Type: Primitives.Popup },\r\n        { Name: \"ContentPresenterBorder\", Type: FrameworkElement },\r\n        { Name: \"DropDownToggle\", Type: Primitives.ToggleButton },\r\n        { Name: \"ScrollViewer\", Type: ScrollViewer },\r\n        { Name: \"WatermarkElement\", Type: FrameworkElement });\r\n    TemplateVisualStates(ComboBox, \r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" },\r\n        { GroupName: \"FocusStates\", Name: \"FocusedDropDown\" },\r\n        { GroupName: \"ValidationStates\", Name: \"Valid\" },\r\n        { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" },\r\n        { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" });\r\n}\r\n"
  },
  {
    "path": "src/Controls/ComboBoxItem.ts",
    "content": "/// <reference path=\"ListBoxItem.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ComboBoxItem extends ListBoxItem {\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = ComboBoxItem;\r\n        }\r\n\r\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs) {\r\n            super.OnMouseLeftButtonUp(e);\r\n            if (this.ParentSelector instanceof ComboBox)\r\n                (<ComboBox>this.ParentSelector).IsDropDownOpen = false;\r\n        }\r\n\r\n        OnTouchUp(e: Input.TouchEventArgs) {\r\n            super.OnTouchUp(e);\r\n            if (this.ParentSelector instanceof ComboBox)\r\n                (<ComboBox>this.ParentSelector).IsDropDownOpen = false;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ComboBoxItem);\r\n    TemplateVisualStates(ComboBoxItem, \r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" },\r\n        { GroupName: \"SelectionStates\", Name: \"Unselected\" },\r\n        { GroupName: \"SelectionStates\", Name: \"Selected\" },\r\n        { GroupName: \"SelectionStates\", Name: \"SelectedUnfocused\" });\r\n}\r\n"
  },
  {
    "path": "src/Controls/ContentControl.ts",
    "content": "/// <reference path=\"Control.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ContentControlNode extends ControlNode {\r\n        private _DefaultPresenter: ContentPresenter = null;\r\n\r\n        XObject: ContentControl;\r\n\r\n        constructor (xobj: ContentControl) {\r\n            super(xobj);\r\n        }\r\n\r\n        GetDefaultVisualTree (): UIElement {\r\n            var xobj = this.XObject;\r\n            var content = xobj.Content;\r\n            if (content instanceof UIElement)\r\n                return <UIElement>content;\r\n\r\n            var presenter = this._DefaultPresenter;\r\n            if (!presenter) {\r\n                presenter = this._DefaultPresenter = new ContentPresenter();\r\n                presenter.TemplateOwner = this.XObject;\r\n            }\r\n            presenter.SetValue(ContentPresenter.ContentProperty, new TemplateBindingExpression(\"Content\"));\r\n            presenter.SetValue(ContentPresenter.ContentTemplateProperty, new TemplateBindingExpression(\"ContentTemplate\"));\r\n            return presenter;\r\n        }\r\n\r\n        OnContentChanged (o: any, n: any) {\r\n            if (o instanceof UIElement || n instanceof UIElement)\r\n                this.CleanOldContent(o);\r\n        }\r\n\r\n        OnTemplateChanged (oldTemplate: ControlTemplate, newTemplate: ControlTemplate) {\r\n            if (oldTemplate)\r\n                this.CleanOldContent(this.XObject.Content);\r\n            super.OnTemplateChanged(oldTemplate, newTemplate);\r\n        }\r\n\r\n        private CleanOldContent (content: any) {\r\n            if (content instanceof UIElement) {\r\n                FENode.DetachFromVisualParent(content);\r\n                this.LayoutUpdater.invalidateMeasure();\r\n            } else {\r\n                var presenter = this._DefaultPresenter;\r\n                if (presenter) {\r\n                    presenter.ClearValue(ContentPresenter.ContentProperty);\r\n                    presenter.ClearValue(ContentPresenter.ContentTemplateProperty);\r\n                    FENode.DetachFromVisualParent(presenter);\r\n                    this.LayoutUpdater.invalidateMeasure();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    export class ContentControl extends Control {\r\n        XamlNode: ContentControlNode;\r\n\r\n        CreateNode (): ContentControlNode {\r\n            return new ContentControlNode(this);\r\n        }\r\n\r\n        static ContentProperty = DependencyProperty.Register(\"Content\", () => Object, ContentControl, undefined, (d: ContentControl, args) => d.OnContentPropertyChanged(args));\r\n        static ContentTemplateProperty = DependencyProperty.Register(\"ContentTemplate\", () => DataTemplate, ContentControl, undefined, (d: ContentControl, args) => d.OnContentTemplateChanged(args.OldValue, args.NewValue));\r\n        static ContentUriProperty = DependencyProperty.Register(\"ContentUri\", () => Uri, ContentControl, undefined, (d: ContentControl, args) => d.OnContentUriPropertyChanged(args));\r\n        Content: any;\r\n        ContentTemplate: DataTemplate;\r\n        ContentUri: Uri;\r\n\r\n        private OnContentPropertyChanged (args: DependencyPropertyChangedEventArgs) {\r\n            this.XamlNode.OnContentChanged(args.OldValue, args.NewValue);\r\n            this.OnContentChanged(args.OldValue, args.NewValue);\r\n        }\r\n\r\n        private OnContentUriPropertyChanged (args: DependencyPropertyChangedEventArgs) {\r\n            var oldUri: Uri;\r\n            if (args.OldValue instanceof Uri) {\r\n                this.Content = undefined;\r\n                oldUri = <Uri>args.OldValue;\r\n            }\r\n            var newUri: Uri;\r\n            if (args.NewValue instanceof Uri) {\r\n                newUri = <Uri>args.NewValue;\r\n                Markup.Resolve(newUri)\r\n                    .then(m => this._OnLoadedUri(m), err => this._OnErroredUri(err, newUri))\r\n            }\r\n            this.OnContentUriChanged(oldUri, newUri);\r\n        }\r\n\r\n        constructor () {\r\n            super();\r\n            this.DefaultStyleKey = ContentControl;\r\n        }\r\n\r\n        OnContentChanged (oldContent: any, newContent: any) {\r\n        }\r\n\r\n        OnContentTemplateChanged (oldContentTemplate: DataTemplate, newContentTemplate: DataTemplate) {\r\n        }\r\n\r\n        OnContentUriChanged (oldSourceUri: Uri, newSourceUri: Uri) {\r\n        }\r\n\r\n        private _OnLoadedUri (xm: nullstone.markup.Markup<any>) {\r\n            this.Content = Markup.Load(this.App, xm);\r\n        }\r\n\r\n        private _OnErroredUri (err: any, src: Uri) {\r\n            console.warn(\"Error resolving XamlResource: '\" + src.toString() + \"'.\");\r\n            //TODO: Set content to error message?\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ContentControl);\r\n    Markup.Content(ContentControl, ContentControl.ContentProperty);\r\n}"
  },
  {
    "path": "src/Controls/ContentPresenter.ts",
    "content": "/// <reference path=\"../Core/FrameworkElement.ts\" />\r\n/// <reference path=\"../Markup/Creator.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    var fmd = Markup.CreateXaml(\"<DataTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\"><Grid><TextBlock Text=\\\"{Binding}\\\" /></Grid></DataTemplate>\"\r\n        , Fayde.XMLNS + \"/contentpresenter/default\");\r\n    var fallbackTemplate: DataTemplate;\r\n    function getFallbackTemplate (app: Application): DataTemplate {\r\n        return fallbackTemplate = fallbackTemplate || Markup.Load<DataTemplate>(app, fmd);\r\n    }\r\n\r\n    export class ContentPresenterNode extends FENode {\r\n        private _ContentRoot: UIElement;\r\n        get ContentRoot(): UIElement { return this._ContentRoot; }\r\n\r\n        XObject: ContentPresenter;\r\n        constructor(xobj: ContentPresenter) {\r\n            super(xobj);\r\n        }\r\n\r\n        DoApplyTemplateWithError(error: BError): boolean {\r\n            if (this._ContentRoot)\r\n                return false;\r\n\r\n            var xobj = this.XObject;\r\n            // This is meant to create {TemplateBinding ...} as a convenience when user doesn't\r\n            // This really should check for a value or an expression\r\n            if (xobj.TemplateOwner instanceof ContentControl) {\r\n                if (!xobj.HasValueOrExpression(ContentPresenter.ContentProperty)) {\r\n                    xobj.SetValue(ContentPresenter.ContentProperty, new TemplateBindingExpression(\"Content\"));\r\n                }\r\n                if (!xobj.HasValueOrExpression(ContentPresenter.ContentTemplateProperty)) {\r\n                    xobj.SetValue(ContentPresenter.ContentTemplateProperty, new TemplateBindingExpression(\"ContentTemplate\"));\r\n                }\r\n            }\r\n\r\n            var content = xobj.Content;\r\n            if (content instanceof UIElement) {\r\n                this._ContentRoot = content;\r\n                xobj.DataContext = undefined;\r\n            } else {\r\n                xobj.DataContext = content == null ? null : content;\r\n                this._ContentRoot = this._GetContentTemplate(content ? content.constructor : null).GetVisualTree(xobj);\r\n            }\r\n\r\n            if (!this._ContentRoot)\r\n                return false;\r\n\r\n            return this.AttachVisualChild(this._ContentRoot, error);\r\n        }\r\n\r\n        ClearRoot() {\r\n            if (this._ContentRoot)\r\n                this.DetachVisualChild(this._ContentRoot, null);\r\n            this._ContentRoot = null;\r\n        }\r\n\r\n        _ContentChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            var isUIContent = args.NewValue instanceof UIElement;\r\n            if (isUIContent || args.OldValue instanceof UIElement) {\r\n                this.ClearRoot();\r\n            } else if (!isUIContent) {\r\n                if (this._ShouldInvalidateImplicitTemplate(args.OldValue, args.NewValue))\r\n                    this.ClearRoot();\r\n                this.XObject.DataContext = args.NewValue == null ? null : args.NewValue;\r\n            }\r\n            this.LayoutUpdater.invalidateMeasure();\r\n        }\r\n        _ContentTemplateChanged() {\r\n            this.ClearRoot();\r\n            this.LayoutUpdater.invalidateMeasure();\r\n        }\r\n\r\n        private _ShouldInvalidateImplicitTemplate(oldValue: any, newValue: any): boolean {\r\n            //NOTE: If we are using an implicit data template, we need to make sure we invalidate when Content changes\r\n            var octor = oldValue ? oldValue.constructor : null;\r\n            var nctor = newValue ? newValue.constructor : null;\r\n            if (octor !== nctor)\r\n                return true;\r\n            if (octor === Object)\r\n                return true;\r\n            return false;\r\n        }\r\n\r\n        private _GetContentTemplate(type: Function): DataTemplate {\r\n            var dt = this.XObject.ContentTemplate;\r\n            if (dt)\r\n                return dt;\r\n\r\n            if (type && typeof type === \"function\") {\r\n                //Traverse logical tree looking in Resources for implicitly typed DataTemplate\r\n                var node = <XamlNode>this;\r\n                var rd: ResourceDictionary;\r\n                while (node) {\r\n                    var xobj = node.XObject;\r\n                    if (xobj instanceof FrameworkElement && (rd = (<FrameworkElement>xobj).Resources)) {\r\n                        dt = rd.Get(type);\r\n                        if (dt instanceof DataTemplate)\r\n                            return dt;\r\n                    }\r\n                    node = node.ParentNode;\r\n                }\r\n                var surface = <Surface>this.LayoutUpdater.tree.surface;\r\n                var app = surface ? surface.App : null;\r\n                if (app) {\r\n                    dt = app.Resources.Get(type);\r\n                    if (dt instanceof DataTemplate)\r\n                        return dt;\r\n                }\r\n            }\r\n\r\n            return getFallbackTemplate(this.XObject.App);\r\n        }\r\n    }\r\n\r\n    export class ContentPresenter extends FrameworkElement {\r\n        XamlNode: ContentPresenterNode;\r\n        CreateNode(): ContentPresenterNode { return new ContentPresenterNode(this); }\r\n\r\n        static ContentProperty = DependencyProperty.Register(\"Content\", () => Object, ContentPresenter, undefined, (d: ContentPresenter, args) => d.XamlNode._ContentChanged(args));\r\n        static ContentTemplateProperty = DependencyProperty.Register(\"ContentTemplate\", () => DataTemplate, ContentPresenter, undefined, (d: ContentPresenter, args) => d.XamlNode._ContentTemplateChanged());\r\n        Content: any;\r\n        ContentTemplate: DataTemplate;\r\n    }\r\n    Fayde.CoreLibrary.add(ContentPresenter);\r\n    Markup.Content(ContentPresenter, ContentPresenter.ContentProperty);\r\n}"
  },
  {
    "path": "src/Controls/Control.ts",
    "content": "/// <reference path=\"../Core/FrameworkElement.ts\" />\r\n/// <reference path=\"../Core/Providers/IsEnabledStore.ts\" />\r\n/// <reference path=\"../Input/Keyboard.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export interface IIsEnabledListener {\r\n        Callback: (newIsEnabled: boolean) => void;\r\n        Detach();\r\n    }\r\n\r\n    export class ControlNode extends FENode {\r\n        XObject: Control;\r\n        TemplateRoot: FrameworkElement;\r\n        IsFocused: boolean = false;\r\n        LayoutUpdater: minerva.controls.control.ControlUpdater;\r\n\r\n        constructor(xobj: Control) {\r\n            super(xobj);\r\n        }\r\n\r\n        TabTo() {\r\n            var xobj = this.XObject;\r\n            return xobj.IsEnabled && xobj.IsTabStop && this.Focus();\r\n        }\r\n\r\n        ApplyTemplateWithError(error: BError): boolean {\r\n            if (!super.ApplyTemplateWithError(error))\r\n                return false;\r\n            this.XObject.UpdateValidationState();\r\n            return true;\r\n        }\r\n        DoApplyTemplateWithError(error: BError): boolean {\r\n            var xobj = this.XObject;\r\n            var t = xobj.Template;\r\n            var root: UIElement;\r\n            if (t) root = t.GetVisualTree(xobj);\r\n            if (!root && !(root = this.GetDefaultVisualTree()))\r\n                return false;\r\n\r\n            if (this.TemplateRoot && this.TemplateRoot !== root)\r\n                this.DetachVisualChild(this.TemplateRoot, error)\r\n            this.TemplateRoot = <FrameworkElement>root;\r\n            if (this.TemplateRoot)\r\n                this.AttachVisualChild(this.TemplateRoot, error);\r\n            if (error.Message)\r\n                return false;\r\n\r\n            //TODO: Deployment Loaded Event (Async)\r\n\r\n            return true;\r\n        }\r\n        GetDefaultVisualTree(): UIElement { return undefined; }\r\n\r\n        OnIsAttachedChanged(newIsAttached: boolean) {\r\n            super.OnIsAttachedChanged(newIsAttached);\r\n            if (!newIsAttached)\r\n                Media.VSM.VisualStateManager.Deactivate(this.XObject, this.TemplateRoot);\r\n            else\r\n                Media.VSM.VisualStateManager.Activate(this.XObject, this.TemplateRoot);\r\n        }\r\n\r\n        OnParentChanged(oldParentNode: XamlNode, newParentNode: XamlNode) {\r\n            super.OnParentChanged(oldParentNode, newParentNode);\r\n            this.IsEnabled = newParentNode ? newParentNode.IsEnabled : true;\r\n        }\r\n\r\n        OnTemplateChanged(oldTemplate: ControlTemplate, newTemplate: ControlTemplate) {\r\n            var subtree = this.SubtreeNode;\r\n            if (subtree) {\r\n                var error = new BError();\r\n                if (!this.DetachVisualChild(<UIElement>subtree.XObject, error))\r\n                    error.ThrowException();\r\n            }\r\n            this.LayoutUpdater.invalidateMeasure();\r\n        }\r\n\r\n        get IsEnabled(): boolean { return this.XObject.IsEnabled; }\r\n        set IsEnabled(value: boolean) {\r\n            Providers.IsEnabledStore.EmitInheritedChanged(this, value);\r\n            this.OnIsEnabledChanged(undefined, value);\r\n        }\r\n        OnIsEnabledChanged(oldValue: boolean, newValue: boolean) {\r\n            if (!newValue) {\r\n                this.IsMouseOver = false;\r\n                if (Surface.RemoveFocusFrom(this.XObject)) {\r\n                    TabNavigationWalker.Focus(this, true);\r\n                }\r\n                this.ReleaseMouseCapture();\r\n            }\r\n            super.OnIsEnabledChanged(oldValue, newValue);\r\n        }\r\n\r\n        Focus(recurse?: boolean): boolean {\r\n            return Surface.Focus(this.XObject, recurse);\r\n        }\r\n\r\n        CanCaptureMouse(): boolean { return this.XObject.IsEnabled; }\r\n    }\r\n\r\n    export class Control extends FrameworkElement implements Providers.IIsPropertyInheritable {\r\n        XamlNode: ControlNode;\r\n        CreateNode(): ControlNode { return new ControlNode(this); }\r\n        CreateLayoutUpdater() { return new minerva.controls.control.ControlUpdater(); }\r\n\r\n        constructor() {\r\n            super();\r\n            UIReaction<boolean>(Control.IsEnabledProperty, (upd, nv, ov, control?: Control) => {\r\n                var args = {\r\n                    Property: Control.IsEnabledProperty,\r\n                    OldValue: ov,\r\n                    NewValue: nv\r\n                };\r\n                control.OnIsEnabledChanged(args);\r\n                if (nv !== true)\r\n                    control.XamlNode.IsMouseOver = false;\r\n                control.UpdateVisualState();\r\n                control.IsEnabledChanged.raiseAsync(control, args);\r\n            }, false, true, this);\r\n            //TODO: Do these make sense? These properties are usually bound to child visuals which will invalidate\r\n            UIReaction<minerva.Thickness>(Control.PaddingProperty, (upd, nv, ov) => upd.invalidateMeasure(), false, true, this);\r\n            UIReaction<minerva.Thickness>(Control.BorderThicknessProperty, (upd, nv, ov) => upd.invalidateMeasure(), false, true, this);\r\n            UIReaction<HorizontalAlignment>(Control.HorizontalContentAlignmentProperty, (upd, nv, ov) => upd.invalidateArrange(), false, true, this);\r\n            UIReaction<VerticalAlignment>(Control.VerticalContentAlignmentProperty, (upd, nv, ov) => upd.invalidateArrange(), false, true, this);\r\n        }\r\n\r\n        static BackgroundProperty = DependencyProperty.RegisterCore(\"Background\", () => Media.Brush, Control);\r\n        static BorderBrushProperty = DependencyProperty.RegisterCore(\"BorderBrush\", () => Media.Brush, Control);\r\n        static BorderThicknessProperty = DependencyProperty.RegisterCore(\"BorderThickness\", () => Thickness, Control);\r\n        static FontFamilyProperty = InheritableOwner.FontFamilyProperty.ExtendTo(Control);\r\n        static FontSizeProperty = InheritableOwner.FontSizeProperty.ExtendTo(Control);\r\n        static FontStretchProperty = InheritableOwner.FontStretchProperty.ExtendTo(Control);\r\n        static FontStyleProperty = InheritableOwner.FontStyleProperty.ExtendTo(Control);\r\n        static FontWeightProperty = InheritableOwner.FontWeightProperty.ExtendTo(Control);\r\n        static ForegroundProperty = InheritableOwner.ForegroundProperty.ExtendTo(Control);\r\n        static HorizontalContentAlignmentProperty: DependencyProperty = DependencyProperty.Register(\"HorizontalContentAlignment\", () => new Enum(HorizontalAlignment), Control, HorizontalAlignment.Center);\r\n        static IsEnabledProperty = DependencyProperty.Register(\"IsEnabled\", () => Boolean, Control, true);\r\n        static IsTabStopProperty = DependencyProperty.Register(\"IsTabStop\", () => Boolean, Control, true);\r\n        static PaddingProperty = DependencyProperty.RegisterCore(\"Padding\", () => Thickness, Control);\r\n        static TabIndexProperty = DependencyProperty.Register(\"TabIndex\", () => Number, Control);\r\n        static TabNavigationProperty = DependencyProperty.Register(\"TabNavigation\", () => new Enum(Input.KeyboardNavigationMode), Control, Input.KeyboardNavigationMode.Local);\r\n        static TemplateProperty = DependencyProperty.Register(\"Template\", () => ControlTemplate, Control, undefined, (d, args) => (<Control>d).XamlNode.OnTemplateChanged(args.OldValue, args.NewValue));\r\n        static VerticalContentAlignmentProperty = DependencyProperty.Register(\"VerticalContentAlignment\", () => new Enum(VerticalAlignment), Control, VerticalAlignment.Center);\r\n\r\n        IsInheritable(propd: DependencyProperty): boolean {\r\n            if (ControlInheritedProperties.indexOf(propd) > -1)\r\n                return true;\r\n            return super.IsInheritable(propd);\r\n        }\r\n\r\n        Background: Media.Brush;\r\n        BorderBrush: Media.Brush;\r\n        BorderThickness: Thickness;\r\n        FontFamily: string;\r\n        FontSize: number;\r\n        FontStretch: string;\r\n        FontStyle: string;\r\n        FontWeight: FontWeight;\r\n        Foreground: Media.Brush;\r\n        HorizontalContentAlignment: HorizontalAlignment;\r\n        IsEnabled: boolean;\r\n        IsTabStop: boolean;\r\n        Padding: Thickness;\r\n        TabIndex: number;\r\n        TabNavigation: Input.KeyboardNavigationMode;\r\n        Template: ControlTemplate;\r\n        VerticalContentAlignment: VerticalAlignment;\r\n\r\n        get IsFocused() { return this.XamlNode.IsFocused; }\r\n\r\n        GetTemplateChild(childName: string, type?: Function): DependencyObject {\r\n            var root = this.XamlNode.TemplateRoot;\r\n            if (!root)\r\n                return;\r\n            var n = root.XamlNode.FindName(childName);\r\n            if (!n)\r\n                return;\r\n            var xobj = n.XObject;\r\n            if (!type || (xobj instanceof type))\r\n                return <DependencyObject>xobj;\r\n        }\r\n\r\n        ApplyTemplate(): boolean {\r\n            var error = new BError();\r\n            var result = this.XamlNode.ApplyTemplateWithError(error);\r\n            if (error.Message)\r\n                error.ThrowException();\r\n            return result;\r\n        }\r\n\r\n        GetDefaultStyle(): Style {\r\n            return undefined;\r\n        }\r\n\r\n        IsEnabledChanged = new nullstone.Event<DependencyPropertyChangedEventArgs>();\r\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs) { }\r\n\r\n        OnGotFocus(e: RoutedEventArgs) {\r\n            this.XamlNode.IsFocused = true;\r\n            this.UpdateValidationState();\r\n        }\r\n        OnLostFocus(e: RoutedEventArgs) {\r\n            this.XamlNode.IsFocused = false;\r\n            this.UpdateValidationState();\r\n        }\r\n\r\n        UpdateVisualState(useTransitions?: boolean) {\r\n            useTransitions = useTransitions !== false;\r\n            var gotoFunc = (state: string) => Media.VSM.VisualStateManager.GoToState(this, state, useTransitions);\r\n            this.GoToStates(gotoFunc);\r\n        }\r\n        GoToStates(gotoFunc: (state: string) => boolean) {\r\n            this.GoToStateCommon(gotoFunc);\r\n            this.GoToStateFocus(gotoFunc);\r\n            this.GoToStateSelection(gotoFunc);\r\n        }\r\n        GoToStateCommon(gotoFunc: (state: string) => boolean): boolean {\r\n            if (!this.IsEnabled)\r\n                return gotoFunc(\"Disabled\");\r\n            if (this.IsMouseOver)\r\n                return gotoFunc(\"MouseOver\");\r\n            return gotoFunc(\"Normal\");\r\n        }\r\n        GoToStateFocus(gotoFunc: (state: string) => boolean): boolean {\r\n            if (this.IsFocused && this.IsEnabled)\r\n                return gotoFunc(\"Focused\");\r\n            return gotoFunc(\"Unfocused\");\r\n        }\r\n        GoToStateSelection(gotoFunc: (state: string) => boolean): boolean {\r\n            return false;\r\n        }\r\n\r\n        UpdateValidationState (valid?: boolean) {\r\n            if (valid === undefined) {\r\n                var errors = Validation.GetErrors(this);\r\n                valid = errors.Count < 1;\r\n            }\r\n            var gotoFunc = (state: string) => Media.VSM.VisualStateManager.GoToState(this, state, true);\r\n            this.GoToStateValidation(valid, gotoFunc);\r\n        }\r\n\r\n        GoToStateValidation (valid: boolean, gotoFunc: (state: string) => boolean) {\r\n            if (valid)\r\n                return gotoFunc(\"Valid\");\r\n            else if (this.IsFocused)\r\n                return gotoFunc(\"InvalidFocused\");\r\n            return gotoFunc(\"InvalidUnfocused\");\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Control);\r\n\r\n    Control.IsEnabledProperty.Store = Providers.IsEnabledStore.Instance;\r\n\r\n    var ControlInheritedProperties = [\r\n        Control.FontFamilyProperty,\r\n        Control.FontSizeProperty,\r\n        Control.FontStretchProperty,\r\n        Control.FontStyleProperty,\r\n        Control.FontWeightProperty,\r\n        Control.ForegroundProperty\r\n    ];\r\n\r\n    export interface ITemplateVisualStateDefinition {\r\n        Name: string;\r\n        GroupName: string;\r\n    }\r\n    export var TemplateVisualStates = nullstone.CreateTypedAnnotation<ITemplateVisualStateDefinition>(\"TemplateVisualState\");\r\n\r\n    export interface ITemplatePartDefinition {\r\n        Name: string;\r\n        Type: Function;\r\n    }\r\n    export var TemplateParts = nullstone.CreateTypedAnnotation<ITemplatePartDefinition>(\"TemplatePart\");\r\n}"
  },
  {
    "path": "src/Controls/ControlTemplate.ts",
    "content": "/// <reference path=\"../Markup/Loader\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ControlTemplate extends Markup.FrameworkTemplate {\r\n        static TargetTypeProperty = DependencyProperty.Register(\"TargetType\", () => IType_, ControlTemplate);\r\n        TargetType: Function;\r\n\r\n        Validate(): string {\r\n            if (!this.TargetType)\r\n                return \"ControlTemplate must have a TargetType.\";\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ControlTemplate);\r\n}"
  },
  {
    "path": "src/Controls/Dialog.ts",
    "content": "/// <reference path=\"ContentControl\" />\r\n\r\nmodule Fayde.Controls {\r\n    function clickResultPropertyChanged (dobj: DependencyObject, args: IDependencyPropertyChangedEventArgs) {\r\n        var btn = (dobj instanceof Primitives.ButtonBase) ? <Primitives.ButtonBase>dobj : null;\r\n        if (!btn)\r\n            return;\r\n        if (args.OldValue !== undefined)\r\n            btn.Click.off(buttonClicked, btn);\r\n        if (args.NewValue !== undefined)\r\n            btn.Click.on(buttonClicked, btn);\r\n    }\r\n\r\n    function buttonClicked (sender: Primitives.ButtonBase, args) {\r\n        var dialog = VisualTreeHelper.GetParentOfType<Dialog>(sender, Dialog);\r\n        if (dialog)\r\n            dialog.DialogResult = Dialog.GetClickResult(sender);\r\n    }\r\n\r\n    export class Dialog extends ContentControl {\r\n        static DialogResultProperty = DependencyProperty.Register(\"DialogResult\", () => Boolean, Dialog, undefined, (d: Dialog, args) => d.OnDialogResultChanged(args));\r\n        static ClickResultProperty = DependencyProperty.RegisterAttached(\"ClickResult\", () => Boolean, Dialog, undefined, clickResultPropertyChanged);\r\n        DialogResult: boolean;\r\n\r\n        private _IgnoreResult = false;\r\n\r\n        private OnDialogResultChanged (args: IDependencyPropertyChangedEventArgs) {\r\n            if (this._IgnoreResult === true)\r\n                return;\r\n            var overlay = Primitives.Overlay.FindOverlay(this);\r\n            if (overlay) {\r\n                overlay.Close(args.NewValue);\r\n                this._IgnoreResult = true;\r\n                try {\r\n                    this.SetCurrentValue(Dialog.DialogResultProperty, undefined);\r\n                } finally {\r\n                    this._IgnoreResult = false;\r\n                }\r\n            }\r\n        }\r\n\r\n        static GetClickResult (dobj: DependencyObject): boolean {\r\n            return dobj.GetValue(Dialog.ClickResultProperty);\r\n        }\r\n\r\n        static SetClickResult (dobj: DependencyObject, value: boolean) {\r\n            dobj.SetValue(Dialog.ClickResultProperty, value);\r\n        }\r\n\r\n        constructor () {\r\n            super();\r\n            this.DefaultStyleKey = Dialog;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Dialog);\r\n}"
  },
  {
    "path": "src/Controls/Enums.ts",
    "content": "\r\nmodule Fayde.Controls {\r\n    export enum TextWrapping {\r\n        NoWrap = 0,\r\n        Wrap = 1,\r\n        WrapWithOverflow = 2,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(TextWrapping, \"TextWrapping\");\r\n\r\n    export enum ScrollBarVisibility {\r\n        Disabled = 0,\r\n        Auto = 1,\r\n        Hidden = 2,\r\n        Visible = 3,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(ScrollBarVisibility, \"ScrollBarVisibility\");\r\n\r\n    export enum TextTrimming {\r\n        None = 0,\r\n        WordEllipsis = 1,\r\n        CharacterEllipsis = 2,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(TextTrimming, \"TextTrimming\");\r\n\r\n    export enum ClickMode {\r\n        Release = 0,\r\n        Press = 1,\r\n        Hover = 2,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(ClickMode, \"ClickMode\");\r\n\r\n    export enum PlacementMode {\r\n        Bottom = 0,\r\n        Right = 1,\r\n        Mouse = 2,\r\n        Left = 3,\r\n        Top = 4,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(PlacementMode, \"PlacementMode\");\r\n\r\n    export enum SelectionMode {\r\n        Single = 0,\r\n        Multiple = 1,\r\n        Extended = 2,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(SelectionMode, \"SelectionMode\");\r\n\r\n    export enum MediaElementState {\r\n        Closed = 0,\r\n        Opening = 1,\r\n        //Individualizing = 2,\r\n        //AcquiringLicense = 3,\r\n        Buffering = 4,\r\n        Playing = 5,\r\n        Paused = 6,\r\n        Stopped = 7\r\n    }\r\n    Fayde.CoreLibrary.addEnum(MediaElementState, \"MediaElementState\");\r\n\r\n    export enum SelectionOnFocus {\r\n        Unchanged = 0,          // Selcetion will not be modified\r\n        SelectAll = 1,          // The whole text will be selected\r\n        CaretToBeginning = 2,   // The caret will be moved to the start to the text\r\n        CaretToEnd = 3,         // The caret will be moved to the end of the text\r\n        Default = 4,            // The default (Nothing happens)\r\n        DefaultSelectAll = 5    // Default will be used when focusing the control with the mouse click. SelectAll will be use when focusing the control with the Tab key\r\n    }\r\n\r\n    Fayde.CoreLibrary.addEnum(SelectionOnFocus, \"SelectionOnFocus\");\r\n}"
  },
  {
    "path": "src/Controls/Frame.ts",
    "content": "/// <reference path=\"ContentControl.ts\" />\r\n/// <reference path=\"Page.ts\" />\r\n/// <reference path=\"../Navigation/INavigate.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    import RedirectRoute = Fayde.Navigation.RedirectRoute;\r\n    function createErrorDoc(error: any): nullstone.markup.xaml.XamlMarkup {\r\n        var safe = (error || '').toString()\r\n            .replace(/&/g, '&amp;')\r\n            .replace(/</g, '&lt;')\r\n            .replace(/>/g, '&gt;')\r\n            .replace(/\"/g, '&quot;')\r\n            .replace(/'/g, '&apos;');\r\n        var xaml = '<Page xmlns=\"' + Fayde.XMLNS + '\" xmlns:x=\"' + Fayde.XMLNSX + '\" Title=\"Error\">';\r\n        xaml += '<TextBlock Text=\"' + safe + '\" />';\r\n        xaml += '</Page>';\r\n        return Markup.CreateXaml(xaml, Fayde.XMLNS + \"/frame/error\");\r\n    }\r\n\r\n    function getErrorPage(app: Application, error: string): Page {\r\n        return Markup.Load<Page>(app, createErrorDoc(error));\r\n    }\r\n\r\n    export class Frame extends ContentControl implements Navigation.INavigate {\r\n        static IsDeepLinkedProperty = DependencyProperty.Register(\"IsDeepLinked\", () => Boolean, Frame, true);\r\n        static CurrentSourceProperty = DependencyProperty.RegisterReadOnly(\"CurrentSource\", () => Uri, Frame);\r\n        static SourceProperty = DependencyProperty.Register(\"Source\", () => Uri, Frame, undefined, (d, args) => (<Frame>d).SourcePropertyChanged(args));\r\n        static UriMapperProperty = DependencyProperty.Register(\"UriMapper\", () => Navigation.UriMapper, Frame);\r\n        static RouteMapperProperty = DependencyProperty.RegisterCore(\"RouteMapper\", () => Navigation.RouteMapper, Frame);\r\n        static IsLoadingProperty = DependencyProperty.RegisterReadOnly(\"IsLoading\", () => Boolean, Frame, false, (d: Frame, args) => d.OnIsLoadingChanged(args.OldValue, args.NewValue));\r\n        IsDeepLinked: boolean;\r\n        CurrentSource: Uri;\r\n        Source: Uri;\r\n        UriMapper: Navigation.UriMapper;\r\n        RouteMapper: Navigation.RouteMapper;\r\n        IsLoading: boolean;\r\n\r\n        private _NavService = new Navigation.NavigationService();\r\n        private _CurrentRoute: Fayde.Navigation.Route = undefined;\r\n\r\n        OnIsLoadingChanged(oldIsLoading: boolean, newIsLoading: boolean) {\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        //Navigated = new MulticastEvent();\r\n        //Navigating = new MulticastEvent();\r\n        //NavigationFailed = new MulticastEvent();\r\n        //NavigationStopped = new MulticastEvent();\r\n        //FragmentNavigation = new MulticastEvent();\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = Frame;\r\n            this.Loaded.on(this._FrameLoaded, this);\r\n        }\r\n\r\n        GoToStates(gotoFunc: (state: string) => boolean) {\r\n            this.GoToStateLoading(gotoFunc);\r\n        }\r\n\r\n        GoToStateLoading(gotoFunc: (state: string) => boolean): boolean {\r\n            return gotoFunc(this.IsLoading ? \"Loading\" : \"Idle\");\r\n        }\r\n\r\n        Navigate(uri: Uri): boolean {\r\n            return this._NavService.Navigate(uri);\r\n        }\r\n\r\n        GoForward() {\r\n            //TODO: Implement\r\n        }\r\n\r\n        GoBackward() {\r\n            //TODO: Implement\r\n        }\r\n\r\n        StopLoading() {\r\n            //TODO: Implement\r\n        }\r\n\r\n        private _FrameLoaded(sender, e: RoutedEventArgs) {\r\n            if (this.IsDeepLinked) {\r\n                this._NavService.LocationChanged.on(this._HandleDeepLink, this);\r\n                this._HandleDeepLink();\r\n            }\r\n        }\r\n\r\n        private _HandleDeepLink() {\r\n            this._LoadContent(this._NavService.CurrentUri);\r\n        }\r\n\r\n        private _LoadContent(source: Uri) {\r\n            this.SetCurrentValue(Frame.CurrentSourceProperty, source);\r\n            this.StopLoading();\r\n            this.SetCurrentValue(Frame.IsLoadingProperty, true);\r\n\r\n            var fragment = source.fragment;\r\n            if (fragment[0] === \"#\")\r\n                fragment = fragment.substr(1);\r\n            TimelineProfile.Navigate(true, fragment);\r\n\r\n            var targetUri = new Uri(fragment, nullstone.UriKind.Relative);\r\n            var target: string = undefined;\r\n            if (this.RouteMapper) {\r\n                var route = this.RouteMapper.MapUri(targetUri);\r\n                if (route instanceof Navigation.RedirectRoute) {\r\n                    this.Navigate(route.NewUri);\r\n                    return;\r\n                }\r\n                this._CurrentRoute = route;\r\n                if (!this._CurrentRoute)\r\n                    throw new InvalidOperationException(\"Route could not be mapped.\" + targetUri.toString());\r\n                target = this._CurrentRoute.View.toString();\r\n            } else if (this.UriMapper) {\r\n                var mapped = this.UriMapper.MapUri(targetUri);\r\n                if (!mapped)\r\n                    throw new InvalidOperationException(\"Uri could not be mapped.\" + targetUri.toString());\r\n                target = mapped.toString();\r\n            }\r\n\r\n            Page.GetAsync(this, target)\r\n                .then(page => this._HandleSuccess(page),\r\n                    err => this._HandleError(err));\r\n        }\r\n\r\n        private _HandleSuccess(page: Page) {\r\n            this._SetPage(page);\r\n            this.SetCurrentValue(Frame.IsLoadingProperty, false);\r\n            TimelineProfile.Navigate(false);\r\n            TimelineProfile.IsNextLayoutPassProfiled = true;\r\n        }\r\n\r\n        private _HandleError(error: any) {\r\n            this._SetPage(getErrorPage(this.App, error));\r\n            this.SetCurrentValue(Frame.IsLoadingProperty, false);\r\n            TimelineProfile.Navigate(false);\r\n        }\r\n\r\n        private _SetPage(page: Page) {\r\n            document.title = page.Title;\r\n            this.Content = page;\r\n            if (this._CurrentRoute)\r\n                page.DataContext = this._CurrentRoute.DataContext;\r\n            if (page.DataContext == null)\r\n                page.DataContext = this.DataContext;\r\n        }\r\n\r\n        private SourcePropertyChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            //TODO: Ignore in design mode\r\n            if (true)//if loaded and not updating source from nav service\r\n                this.Navigate(args.NewValue);\r\n\r\n            //TODO: Show default content uri in Content when in design mode\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Frame);\r\n    nullstone.addTypeInterfaces(Frame, Navigation.INavigate_);\r\n    TemplateVisualStates(Frame,\r\n        {GroupName: \"LoadingStates\", Name: \"Idle\"},\r\n        {GroupName: \"LoadingStates\", Name: \"Loading\"});\r\n}"
  },
  {
    "path": "src/Controls/Grid.ts",
    "content": "/// <reference path=\"Panel.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class GridNode extends PanelNode {\r\n        LayoutUpdater: minerva.controls.grid.GridUpdater;\r\n\r\n        ColumnDefinitionsChanged (coldef: ColumnDefinition, index: number, add: boolean) {\r\n            var updater = this.LayoutUpdater;\r\n            var coldefs = updater.assets.columnDefinitions;\r\n\r\n            if (add) {\r\n                coldefs.splice(index, 0, coldef);\r\n                ReactTo(coldef, this, () => updater.invalidateMeasure());\r\n            } else {\r\n                UnreactTo(coldef, this);\r\n                coldefs.splice(index, 1);\r\n            }\r\n\r\n            updater.invalidateMeasure();\r\n        }\r\n\r\n        RowDefinitionsChanged (rowdef: RowDefinition, index: number, add: boolean) {\r\n            var updater = this.LayoutUpdater;\r\n            var rowdefs = updater.assets.rowDefinitions;\r\n\r\n            if (add) {\r\n                rowdefs.splice(index, 0, rowdef);\r\n                ReactTo(rowdef, this, () => updater.invalidateMeasure());\r\n            } else {\r\n                UnreactTo(rowdef, this);\r\n                rowdefs.splice(index, 1);\r\n            }\r\n\r\n            updater.invalidateMeasure();\r\n        }\r\n    }\r\n\r\n    export class Grid extends Panel {\r\n        XamlNode: GridNode;\r\n        CreateNode(): GridNode { return new GridNode(this); }\r\n        CreateLayoutUpdater () { return new minerva.controls.grid.GridUpdater(); }\r\n\r\n        static ColumnProperty = DependencyProperty.RegisterAttached(\"Column\", () => Number, Grid, 0);\r\n        static GetColumn (d: DependencyObject): number { return d.GetValue(Grid.ColumnProperty); }\r\n        static SetColumn (d: DependencyObject, value: number) { d.SetValue(Grid.ColumnProperty, value); }\r\n\r\n        static ColumnSpanProperty = DependencyProperty.RegisterAttached(\"ColumnSpan\", () => Number, Grid, 1);\r\n        static GetColumnSpan (d: DependencyObject): number { return d.GetValue(Grid.ColumnSpanProperty); }\r\n        static SetColumnSpan (d: DependencyObject, value: number) { d.SetValue(Grid.ColumnSpanProperty, value); }\r\n\r\n        static RowProperty = DependencyProperty.RegisterAttached(\"Row\", () => Number, Grid, 0);\r\n        static GetRow (d: DependencyObject): number { return d.GetValue(Grid.RowProperty); }\r\n        static SetRow (d: DependencyObject, value: number) { d.SetValue(Grid.RowProperty, value); }\r\n\r\n        static RowSpanProperty = DependencyProperty.RegisterAttached(\"RowSpan\", () => Number, Grid, 1);\r\n        static GetRowSpan (d: DependencyObject): number { return d.GetValue(Grid.RowSpanProperty); }\r\n        static SetRowSpan (d: DependencyObject, value: number) { d.SetValue(Grid.RowSpanProperty, value); }\r\n\r\n        static ColumnDefinitionsProperty = DependencyProperty.RegisterImmutable<ColumnDefinitionCollection>(\"ColumnDefinitions\", () => ColumnDefinitionCollection, Grid);\r\n        static RowDefinitionsProperty = DependencyProperty.RegisterImmutable<RowDefinitionCollection>(\"RowDefinitions\", () => RowDefinitionCollection, Grid);\r\n        static ShowGridLinesProperty = DependencyProperty.Register(\"ShowGridLines\", () => Boolean, Grid, false);\r\n        ShowGridLines: boolean;\r\n        ColumnDefinitions: ColumnDefinitionCollection;\r\n        RowDefinitions: RowDefinitionCollection;\r\n\r\n        constructor () {\r\n            super();\r\n            var coldefs = Grid.ColumnDefinitionsProperty.Initialize(this);\r\n            ReactTo(coldefs, this, (obj?) => this.XamlNode.ColumnDefinitionsChanged(obj.item, obj.index, obj.add));\r\n            var rowdefs = Grid.RowDefinitionsProperty.Initialize(this);\r\n            ReactTo(rowdefs, this, (obj?) => this.XamlNode.RowDefinitionsChanged(obj.item, obj.index, obj.add));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Grid);\r\n\r\n    module reactions {\r\n        UIReaction<boolean>(Grid.ShowGridLinesProperty, minerva.controls.grid.reactTo.showGridLines, false);\r\n        UIReactionAttached<number>(Grid.ColumnProperty, minerva.controls.grid.reactTo.column);\r\n        UIReactionAttached<number>(Grid.ColumnSpanProperty, minerva.controls.grid.reactTo.columnSpan);\r\n        UIReactionAttached<number>(Grid.RowProperty, minerva.controls.grid.reactTo.row);\r\n        UIReactionAttached<number>(Grid.RowSpanProperty, minerva.controls.grid.reactTo.rowSpan);\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/GridLength.ts",
    "content": "module Fayde.Controls {\r\n    import GridUnitType = minerva.controls.grid.GridUnitType;\r\n    Fayde.CoreLibrary.addEnum(GridUnitType, \"GridUnitType\");\r\n\r\n    export class GridLength implements minerva.controls.grid.IGridLength, ICloneable {\r\n        Value: number;\r\n        Type: GridUnitType;\r\n        constructor(value?: number, unitType?: GridUnitType) {\r\n            this.Value = value == null ? 0 : value;\r\n            this.Type = unitType || GridUnitType.Auto;\r\n        }\r\n        static Equals(gl1: GridLength, gl2: GridLength): boolean {\r\n            return Math.abs(gl1.Value - gl2.Value) < 0.001 && gl1.Type == gl2.Type;\r\n        }\r\n        Clone(): GridLength {\r\n            return new Controls.GridLength(this.Value, this.Type);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(GridLength);\r\n\r\n    nullstone.registerTypeConverter(GridLength, (val: any): GridLength => {\r\n        if (val instanceof GridLength)\r\n            return <GridLength>val;\r\n        if (!val || val.toLowerCase() === \"auto\")\r\n            return new GridLength();\r\n        var type = GridUnitType.Pixel;\r\n        if (val[val.length - 1] === \"*\") {\r\n            val = val.substr(0, val.length - 1);\r\n            type = GridUnitType.Star;\r\n        }\r\n        var v = parseFloat(val);\r\n        if (isNaN(v)) v = 1;\r\n        return new GridLength(v, type);\r\n    });\r\n}"
  },
  {
    "path": "src/Controls/HeaderedContentControl.ts",
    "content": "/// <reference path=\"ContentControl.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class HeaderedContentControl extends ContentControl {\r\n        static HeaderProperty = DependencyProperty.Register(\"Header\", () => Object, HeaderedContentControl, undefined, (d, args) => (<HeaderedContentControl>d).OnHeaderChanged(args.OldValue, args.NewValue));\r\n        Header: any;\r\n        static HeaderTemplateProperty = DependencyProperty.Register(\"HeaderTemplate\", () => DataTemplate, HeaderedContentControl, undefined, (d, args) => (<HeaderedContentControl>d).OnHeaderTemplateChanged(args.OldValue, args.NewValue));\r\n        HeaderTemplate: DataTemplate;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = HeaderedContentControl;\r\n        }\r\n\r\n        OnHeaderChanged(oldHeader: any, newHeader: any) { }\r\n        OnHeaderTemplateChanged(oldHeaderTemplate: DataTemplate, newHeaderTemplate: DataTemplate) { }\r\n    }\r\n    Fayde.CoreLibrary.add(HeaderedContentControl);\r\n}"
  },
  {
    "path": "src/Controls/HyperlinkButton.ts",
    "content": "/// <reference path=\"Primitives/ButtonBase.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    type Target = string|Frame;\r\n\r\n    export class HyperlinkButton extends Primitives.ButtonBase {\r\n        static NavigateUriProperty = DependencyProperty.Register(\"NavigateUri\", () => Uri, HyperlinkButton);\r\n        static TargetNameProperty = DependencyProperty.Register(\"TargetName\", () => String, HyperlinkButton);\r\n        NavigateUri: Uri;\r\n        TargetName: string;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = HyperlinkButton;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        OnClick() {\r\n            super.OnClick();\r\n            var navUri = this.NavigateUri;\r\n            if (navUri)\r\n                Navigation.Navigate(this, this.TargetName, navUri);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(HyperlinkButton);\r\n    TemplateVisualStates(HyperlinkButton,\r\n        {GroupName: \"CommonStates\", Name: \"Normal\"},\r\n        {GroupName: \"CommonStates\", Name: \"MouseOver\"},\r\n        {GroupName: \"CommonStates\", Name: \"Pressed\"},\r\n        {GroupName: \"CommonStates\", Name: \"Disabled\"},\r\n        {GroupName: \"FocusStates\", Name: \"Unfocused\"},\r\n        {GroupName: \"FocusStates\", Name: \"Focused\"});\r\n}"
  },
  {
    "path": "src/Controls/Image.ts",
    "content": "/// <reference path=\"../Core/FrameworkElement.ts\" />\r\n/// <reference path=\"../Media/Enums.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    import ImageUpdater = minerva.controls.image.ImageUpdater;\r\n    export class Image extends FrameworkElement {\r\n        CreateLayoutUpdater() {\r\n            return new ImageUpdater();\r\n        }\r\n\r\n        private static _SourceCoercer(d: DependencyObject, propd: DependencyProperty, value: any): any {\r\n            if (typeof value === \"string\")\r\n                return new Media.Imaging.BitmapImage(new Uri(value));\r\n            if (value instanceof Uri)\r\n                return new Media.Imaging.BitmapImage(value);\r\n            return value;\r\n        }\r\n\r\n        static SourceProperty = DependencyProperty.RegisterFull(\"Source\", () => Media.Imaging.ImageSource, Image, undefined, undefined, Image._SourceCoercer);\r\n        // http: //msdn.microsoft.com/en-us/library/system.windows.media.stretch(v=vs.95).aspx\r\n        static StretchProperty = DependencyProperty.RegisterCore(\"Stretch\", () => new Enum(Media.Stretch), Image, Media.Stretch.Uniform);\r\n        Source: Media.Imaging.ImageSource;\r\n        Stretch: Media.Stretch;\r\n\r\n        ImageOpened = new nullstone.Event();\r\n        ImageFailed = new nullstone.Event();\r\n\r\n        private $watcher: nullstone.IDisposable = null;\r\n\r\n        OnImageErrored(source: Media.Imaging.BitmapSource, error: Error) {\r\n            this.ImageFailed.raise(this, null);\r\n        }\r\n\r\n        OnImageLoaded(source: Media.Imaging.BitmapSource) {\r\n            this.ImageOpened.raise(this, null);\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n            lu.invalidateMeasure();\r\n        }\r\n\r\n        OnImageChanged(source: Media.Imaging.BitmapSource) {\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n            lu.invalidateMeasure();\r\n            lu.invalidate();\r\n        }\r\n\r\n        OnSourceChanged(oldSource: Media.Imaging.ImageSource, newSource: Media.Imaging.ImageSource) {\r\n            if (this.$watcher) {\r\n                this.$watcher.dispose();\r\n                this.$watcher = null;\r\n            }\r\n            if (newSource instanceof Media.Imaging.BitmapSource) {\r\n                this.$watcher = newSource.watch({\r\n                    onErrored: (source, error) => this.OnImageErrored(source, error),\r\n                    onLoaded: (source) => this.OnImageLoaded(source),\r\n                    onChanged: (source) => this.OnImageChanged(source)\r\n                });\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Image);\r\n\r\n    UIReaction<Media.Imaging.ImageSource>(Image.SourceProperty, (upd: ImageUpdater, ov, nv, image?: Image) => {\r\n        image.OnSourceChanged(ov, nv);\r\n        if (!nv) {\r\n            upd.updateBounds();\r\n            upd.invalidate();\r\n        }\r\n        upd.invalidateMeasure();\r\n        upd.invalidateMetrics();\r\n    }, false);\r\n    UIReaction<minerva.Stretch>(Image.StretchProperty, (upd: ImageUpdater, ov, nv) => {\r\n        upd.invalidateMeasure();\r\n        upd.invalidateMetrics();\r\n    }, false);\r\n}"
  },
  {
    "path": "src/Controls/Internal/CursorAdvancer.ts",
    "content": "module Fayde.Controls.Internal {\r\n    export interface ICursorAdvancer {\r\n        CursorDown(cursor: number, isPage: boolean): number;\r\n        CursorUp(cursor: number, isPage: boolean): number;\r\n        CursorNextWord(cursor: number): number;\r\n        CursorPrevWord(cursor: number): number;\r\n        CursorNextChar(cursor: number): number;\r\n        CursorPrevChar(cursor: number): number;\r\n        CursorLineBegin(cursor: number): number;\r\n        CursorLineEnd(cursor: number): number;\r\n        CursorBegin(cursor: number): number;\r\n        CursorEnd(cursor: number): number;\r\n    }\r\n\r\n    export class TextBoxCursorAdvancer implements ICursorAdvancer {\r\n        constructor (private $textOwner: Text.ITextOwner) {\r\n        }\r\n\r\n        CursorDown (cursor: number, isPage: boolean): number {\r\n            //TODO:\r\n            return cursor;\r\n        }\r\n\r\n        CursorUp (cursor: number, isPage: boolean): number {\r\n            //TODO:\r\n            return cursor;\r\n        }\r\n\r\n        CursorNextWord (cursor: number): number {\r\n            //TODO:\r\n            return cursor;\r\n        }\r\n\r\n        CursorPrevWord (cursor: number): number {\r\n            //TODO:\r\n            return cursor;\r\n        }\r\n\r\n        CursorNextChar (cursor: number): number {\r\n            var text = this.$textOwner.text;\r\n            if (text && text.charAt(cursor) === '\\r' && text.charAt(cursor + 1) === '\\n')\r\n                return cursor + 2;\r\n            return Math.min(text.length, cursor + 1);\r\n        }\r\n\r\n        CursorPrevChar (cursor: number): number {\r\n            var text = this.$textOwner.text;\r\n            if (cursor >= 2 && text && text.charAt(cursor - 2) === '\\r' && text.charAt(cursor - 1) === '\\n')\r\n                return cursor - 2;\r\n            return Math.max(0, cursor - 1);\r\n        }\r\n\r\n        CursorLineBegin (cursor: number): number {\r\n            var text = this.$textOwner.text;\r\n            var r = text.lastIndexOf(\"\\r\", cursor);\r\n            var n = text.lastIndexOf(\"\\n\", cursor);\r\n            return Math.max(r, n, 0);\r\n        }\r\n\r\n        CursorLineEnd (cursor: number): number {\r\n            var text = this.$textOwner.text;\r\n            var len = text.length;\r\n            var r = text.indexOf(\"\\r\", cursor);\r\n            if (r < 0) r = len;\r\n            var n = text.indexOf(\"\\n\", cursor);\r\n            if (n < 0) n = len;\r\n            return Math.min(r, n);\r\n        }\r\n\r\n        CursorBegin (cursor: number): number {\r\n            return 0;\r\n        }\r\n\r\n        CursorEnd (cursor: number): number {\r\n            return this.$textOwner.text.length;\r\n        }\r\n    }\r\n\r\n    export class PasswordBoxCursorAdvancer implements ICursorAdvancer {\r\n        constructor (private $textOwner: Text.ITextOwner) {\r\n        }\r\n\r\n        CursorDown (cursor: number, isPage: boolean): number {\r\n            return this.CursorEnd(cursor);\r\n        }\r\n\r\n        CursorUp (cursor: number, isPage: boolean): number {\r\n            return this.CursorBegin(cursor);\r\n        }\r\n\r\n        CursorNextWord (cursor: number): number {\r\n            return this.CursorEnd(cursor);\r\n        }\r\n\r\n        CursorPrevWord (cursor: number): number {\r\n            return this.CursorBegin(cursor);\r\n        }\r\n\r\n        CursorNextChar (cursor: number): number {\r\n            var text = this.$textOwner.text;\r\n            if (text && text.charAt(cursor) === '\\r' && text.charAt(cursor + 1) === '\\n')\r\n                return cursor + 2;\r\n            return Math.min(text.length - 1, cursor + 1);\r\n        }\r\n\r\n        CursorPrevChar (cursor: number): number {\r\n            var text = this.$textOwner.text;\r\n            if (cursor >= 2 && text && text.charAt(cursor - 2) === '\\r' && text.charAt(cursor - 1) === '\\n')\r\n                return cursor - 2;\r\n            return Math.max(0, cursor - 1);\r\n        }\r\n\r\n        CursorLineBegin (cursor: number): number {\r\n            return this.CursorBegin(cursor);\r\n        }\r\n\r\n        CursorLineEnd (cursor: number): number {\r\n            return this.CursorEnd(cursor);\r\n        }\r\n\r\n        CursorBegin (cursor: number): number {\r\n            return this.$textOwner.text.length;\r\n        }\r\n\r\n        CursorEnd (cursor: number): number {\r\n            return 0;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Internal/ItemContainersManager.ts",
    "content": "module Fayde.Controls.Internal {\r\n    import NotifyCollectionChangedEventArgs = Collections.CollectionChangedEventArgs;\r\n    import NotifyCollectionChangedAction = Collections.CollectionChangedAction;\r\n    import INotifyCollectionChanged_ = Collections.INotifyCollectionChanged_;\r\n\r\n    export interface IItemContainersOwner {\r\n        PrepareContainerForItem(container: UIElement, item: any);\r\n        ClearContainerForItem(container: UIElement, item: any);\r\n        GetContainerForItem(): UIElement;\r\n        IsItemItsOwnContainer(item: any): boolean;\r\n    }\r\n    export interface IItemContainersManager {\r\n        IsRecycling: boolean;\r\n\r\n        IndexFromContainer(container: UIElement): number;\r\n        ContainerFromIndex(index: number): UIElement;\r\n        ItemFromContainer(container: UIElement): any;\r\n        ContainerFromItem(item: any): UIElement;\r\n\r\n        OnItemsAdded(index: number, newItems: any[]);\r\n        OnItemsRemoved(index: number, oldItems: any[]);\r\n        DisposeContainers(index?: number, count?: number): UIElement[];\r\n\r\n        CreateGenerator(index: number, count: number): IContainerGenerator;\r\n        GetEnumerator(index?: number, count?: number): IContainerEnumerator;\r\n    }\r\n    export class ItemContainersManager implements IItemContainersManager {\r\n        private _Items: any[] = [];\r\n        private _Containers: UIElement[] = [];\r\n        private _Cache: UIElement[] = [];\r\n\r\n        get IsRecycling (): boolean {\r\n            var dobj = this.Owner;\r\n            if (dobj instanceof DependencyObject)\r\n                return VirtualizingPanel.GetVirtualizationMode(<DependencyObject><any>dobj) === VirtualizationMode.Recycling;\r\n            return false;\r\n        }\r\n\r\n        constructor(public Owner: IItemContainersOwner) { }\r\n\r\n        IndexFromContainer(container: UIElement): number { return this._Containers.indexOf(container); }\r\n        ContainerFromIndex(index: number): UIElement { return this._Containers[index]; }\r\n        ItemFromContainer(container: UIElement): any {\r\n            var index = this._Containers.indexOf(container);\r\n            if (index < 0)\r\n                return null;\r\n            return this._Items[index];\r\n        }\r\n        ContainerFromItem(item: any): UIElement {\r\n            if (item == null)\r\n                return null;\r\n            var index = this._Items.indexOf(item);\r\n            if (index < 0)\r\n                return null;\r\n            return this._Containers[index];\r\n        }\r\n\r\n        OnItemsAdded(index: number, newItems: any[]) {\r\n            var items = this._Items;\r\n            var containers = this._Containers;\r\n            for (var i = 0, len = newItems.length; i < len; i++) {\r\n                items.splice(index + i, 0, newItems[i]);\r\n                containers.splice(index + i, 0, null);\r\n            }\r\n        }\r\n        OnItemsRemoved(index: number, oldItems: any[]) {\r\n            this.DisposeContainers(index, oldItems.length);\r\n            this._Items.splice(index, oldItems.length);\r\n            this._Containers.splice(index, oldItems.length);\r\n        }\r\n        DisposeContainers(index?: number, count?: number): UIElement[] {\r\n            var containers = this._Containers;\r\n            var items = this._Items;\r\n            if (index == null) index = 0;\r\n            if (count == null) count = containers.length;\r\n\r\n            if (this.IsRecycling) {\r\n                for (var i = 0, cache = this._Cache, recycling = containers.slice(index, index + count), len = recycling.length; i < len; i++) {\r\n                    var container = recycling[i];\r\n                    if (container)\r\n                        cache.push(container);\r\n                }\r\n            }\r\n\r\n            var disposed: UIElement[] = [];\r\n\r\n            var ic = this.Owner;\r\n            for (var i = index; i < index + count; i++) {\r\n                var container = containers[i];\r\n                if (!container)\r\n                    continue;\r\n                disposed.push(container);\r\n                var item = items[i];\r\n                ic.ClearContainerForItem(container, item);\r\n                containers[i] = null;\r\n            }\r\n\r\n            return disposed;\r\n        }\r\n\r\n        CreateGenerator(index: number, count: number): IContainerGenerator {\r\n            var generator: IContainerGenerator = {\r\n                IsCurrentNew: false,\r\n                Current: undefined,\r\n                CurrentItem: undefined,\r\n                CurrentIndex: index - 1,\r\n                GenerateIndex: -1,\r\n                Generate: function (): boolean { return false; }\r\n            };\r\n\r\n            var ic = this.Owner;\r\n            var icm = this;\r\n            var containers = this._Containers;\r\n            var items = this._Items;\r\n            var cache = this._Cache;\r\n            generator.Generate = function (): boolean {\r\n                generator.GenerateIndex++;\r\n                generator.CurrentIndex++;\r\n                generator.IsCurrentNew = false;\r\n                if (generator.CurrentIndex < 0 || generator.GenerateIndex >= count || generator.CurrentIndex >= containers.length) {\r\n                    generator.Current = undefined;\r\n                    generator.CurrentItem = undefined;\r\n                    return false;\r\n                }\r\n                generator.CurrentItem = items[generator.CurrentIndex];\r\n                if ((generator.Current = containers[generator.CurrentIndex]) == null) {\r\n                    if (ic.IsItemItsOwnContainer(generator.CurrentItem)) {\r\n                        if (generator.CurrentItem instanceof UIElement)\r\n                            generator.Current = <UIElement>generator.CurrentItem;\r\n                        generator.IsCurrentNew = true;\r\n                    } else if (cache.length > 0) {\r\n                        generator.Current = cache.pop();\r\n                        generator.IsCurrentNew = true;\r\n                    } else {\r\n                        generator.Current = ic.GetContainerForItem();\r\n                        generator.IsCurrentNew = true;\r\n                    }\r\n                    containers[generator.CurrentIndex] = generator.Current;\r\n                }\r\n\r\n                return true;\r\n            };\r\n\r\n            return generator;\r\n        }\r\n        GetEnumerator(start?: number, count?: number): IContainerEnumerator {\r\n            var carr = this._Containers;\r\n            var iarr = this._Items;\r\n\r\n            var index = (start || 0) - 1;\r\n            var len = count == null ? carr.length : count;\r\n\r\n            var i = 0;\r\n            var e = <IContainerEnumerator>{ moveNext: undefined, current: undefined, CurrentItem: undefined, CurrentIndex: -1 };\r\n            e.moveNext = function () {\r\n                i++;\r\n                index++;\r\n                e.CurrentIndex = index;\r\n                if (i > len || index >= carr.length) {\r\n                    e.current = undefined;\r\n                    e.CurrentItem = undefined;\r\n                    return false;\r\n                }\r\n                e.current = carr[index];\r\n                e.CurrentItem = iarr[index];\r\n                return true;\r\n            };\r\n            return e;\r\n        }\r\n    }\r\n\r\n    export interface IContainerGenerator {\r\n        IsCurrentNew: boolean;\r\n        Current: UIElement;\r\n        CurrentItem: any;\r\n        CurrentIndex: number;\r\n        GenerateIndex: number;\r\n        Generate(): boolean;\r\n    }\r\n    export interface IContainerEnumerator extends nullstone.IEnumerator<UIElement> {\r\n        CurrentItem: any;\r\n        CurrentIndex: number;\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Internal/RangeCoercer.ts",
    "content": "module Fayde.Controls.Internal {\r\n    export interface IRange {\r\n        Minimum: number;\r\n        Maximum: number;\r\n        Value: number;\r\n        OnMinimumChanged(oldMin: number, newMin: number);\r\n        OnMaximumChanged(oldMax: number, newMax: number);\r\n        OnValueChanged(oldVal: number, newVal: number);\r\n    }\r\n\r\n    export interface IRangeCoercer {\r\n        OnMinimumChanged(oldMinimum: number, newMinimum: number);\r\n        OnMaximumChanged(oldMaximum: number, newMaximum: number);\r\n        OnValueChanged(oldValue: number, newValue: number);\r\n    }\r\n    export class RangeCoercer implements IRangeCoercer {\r\n        InitialMax: number = 1;\r\n        InitialVal: number = 0;\r\n        RequestedMax: number = 1;\r\n        RequestedVal: number = 0;\r\n        PreCoercedMax: number = 1;\r\n        PreCoercedVal: number = 0;\r\n        CoerceDepth = 0;\r\n\r\n        get Minimum(): number { return this.Range.Minimum; }\r\n        get Maximum(): number { return this.Range.Maximum; }\r\n        get Value(): number { return this.Range.Value; }\r\n\r\n        constructor(public Range: IRange, public OnCoerceMaximum: (val: any) => void, public OnCoerceValue: (val: any) => void) {\r\n            this.PreCoercedMax = this.RequestedMax = this.InitialMax = Range.Maximum;\r\n            this.PreCoercedVal = this.RequestedVal = this.InitialVal = Range.Value;\r\n        }\r\n\r\n        OnMinimumChanged(oldMinimum: number, newMinimum: number) {\r\n            if (this.CoerceDepth === 0) {\r\n                this.InitialMax = this.Maximum;\r\n                this.InitialVal = this.Value;\r\n            }\r\n            this.CoerceDepth++;\r\n            this.CoerceMaximum();\r\n            this.CoerceValue();\r\n            this.CoerceDepth--;\r\n            if (this.CoerceDepth > 0)\r\n                return;\r\n\r\n            this.Range.OnMinimumChanged(oldMinimum, newMinimum);\r\n            var max = this.Maximum;\r\n            if (!NumberEx.AreClose(this.InitialMax, max))\r\n                this.Range.OnMaximumChanged(this.InitialMax, max);\r\n            var val = this.Value;\r\n            if (!NumberEx.AreClose(this.InitialVal, val))\r\n                this.Range.OnValueChanged(this.InitialVal, val);\r\n        }\r\n        OnMaximumChanged(oldMaximum: number, newMaximum: number) {\r\n            if (this.CoerceDepth === 0) {\r\n                this.RequestedMax = newMaximum;\r\n                this.InitialMax = oldMaximum;\r\n                this.InitialVal = this.Value;\r\n            }\r\n            this.CoerceDepth++;\r\n            this.CoerceMaximum();\r\n            this.CoerceValue();\r\n            this.CoerceDepth--;\r\n            if (this.CoerceDepth !== 0)\r\n                return;\r\n\r\n            this.PreCoercedMax = newMaximum;\r\n            var max = this.Maximum;\r\n            if (!NumberEx.AreClose(this.InitialMax, max))\r\n                this.Range.OnMaximumChanged(this.InitialMax, max);\r\n            var val = this.Value;\r\n            if (!NumberEx.AreClose(this.InitialVal, val))\r\n                this.Range.OnValueChanged(this.InitialVal, val);\r\n        }\r\n        OnValueChanged(oldValue: number, newValue: number) {\r\n            if (this.CoerceDepth === 0) {\r\n                this.RequestedVal = newValue;\r\n                this.InitialVal = oldValue;\r\n            }\r\n            this.CoerceDepth++;\r\n            this.CoerceValue();\r\n            this.CoerceDepth--;\r\n            if (this.CoerceDepth !== 0)\r\n                return;\r\n\r\n            this.PreCoercedVal = newValue;\r\n            var val = this.Value;\r\n            if (!NumberEx.AreClose(this.InitialVal, val))\r\n                this.Range.OnValueChanged(this.InitialVal, val);\r\n        }\r\n\r\n        CoerceMaximum() {\r\n            var min = this.Minimum;\r\n            var max = this.Maximum;\r\n            if (!NumberEx.AreClose(this.RequestedMax, max) && this.RequestedMax >= min)\r\n                this.OnCoerceMaximum(this.RequestedMax);\r\n            else if (max < min)\r\n                this.OnCoerceMaximum(min);\r\n        }\r\n        CoerceValue() {\r\n            var min = this.Minimum;\r\n            var max = this.Maximum;\r\n            var val = this.Value;\r\n            if (!NumberEx.AreClose(this.RequestedVal, val) && this.RequestedVal >= min && this.RequestedVal <= max)\r\n                this.OnCoerceValue(this.RequestedVal);\r\n            else if (val < min)\r\n                this.OnCoerceValue(min);\r\n            else if (val > max)\r\n                this.OnCoerceValue(max);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Internal/TextBoxContentProxy.ts",
    "content": "module Fayde.Controls.Internal {\r\n    export class TextBoxContentProxy {\r\n        private $$element: FrameworkElement = null;\r\n\r\n        setElement(fe: FrameworkElement, view: TextBoxView) {\r\n            this.$$element = fe;\r\n            if (!fe)\r\n                return;\r\n\r\n            if (fe instanceof ContentPresenter) {\r\n                (<ContentPresenter>fe).SetValue(ContentPresenter.ContentProperty, view);\r\n            } else if (fe instanceof ContentControl) {\r\n                (<ContentControl>fe).SetValue(ContentControl.ContentProperty, view);\r\n            } else if (fe instanceof Border) {\r\n                (<Border>fe).SetValue(Border.ChildProperty, view);\r\n            } else if (fe instanceof Panel) {\r\n                (<Panel>fe).Children.Add(view);\r\n            } else {\r\n                console.warn(\"TextBox does not have a valid content element.\");\r\n            }\r\n        }\r\n\r\n        setHorizontalScrollBar(sbvis: ScrollBarVisibility) {\r\n            var ce = this.$$element;\r\n            if (!ce)\r\n                return;\r\n            var ceType = (<any>ce).constructor;\r\n            var propd = DependencyProperty.GetDependencyProperty(ceType, \"HorizontalScrollBarVisibility\", true);\r\n            if (!propd)\r\n                return;\r\n            ce.SetValueInternal(propd, sbvis);\r\n        }\r\n\r\n        setVerticalScrollBar(sbvis: ScrollBarVisibility) {\r\n            var ce = this.$$element;\r\n            if (!ce)\r\n                return;\r\n            var ceType = (<any>ce).constructor;\r\n            var propd = DependencyProperty.GetDependencyProperty(ceType, \"VerticalScrollBarVisibility\", true);\r\n            if (!propd)\r\n                return;\r\n            ce.SetValueInternal(propd, sbvis);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Internal/TextBoxView.ts",
    "content": "/// <reference path=\"../../Core/FrameworkElement.ts\" />\r\n\r\nmodule Fayde.Controls.Internal {\r\n    import TextBoxViewUpdater = minerva.controls.textboxview.TextBoxViewUpdater;\r\n\r\n    export class TextBoxViewNode extends FENode {\r\n        LayoutUpdater: TextBoxViewUpdater;\r\n    }\r\n\r\n    export class TextBoxView extends FrameworkElement {\r\n        XamlNode: TextBoxViewNode;\r\n\r\n        CreateLayoutUpdater () {\r\n            return new TextBoxViewUpdater();\r\n        }\r\n\r\n        private _AutoRun = new Documents.Run();\r\n\r\n        constructor () {\r\n            super();\r\n            this.XamlNode.LayoutUpdater.tree.onTextAttached(this._AutoRun.TextUpdater);\r\n            ReactTo(this._AutoRun, this, this._InlineChanged);\r\n        }\r\n\r\n        private _InlineChanged (obj?: any) {\r\n            var updater = this.XamlNode.LayoutUpdater;\r\n            switch (obj.type) {\r\n                case 'font':\r\n                    updater.invalidateFont(obj.full);\r\n                    break;\r\n                case 'text':\r\n                    updater.invalidateTextMetrics();\r\n                    break;\r\n            }\r\n        }\r\n\r\n        setFontProperty (propd: DependencyProperty, value: any) {\r\n            this._AutoRun.SetValue(propd, value);\r\n        }\r\n\r\n        setFontAttr (attrName: string, value: any) {\r\n            var runUpdater = this._AutoRun;\r\n            var tu = runUpdater.TextUpdater;\r\n            tu.assets[attrName] = value;\r\n        }\r\n\r\n        setCaretBrush (value: Media.Brush) {\r\n            var updater = this.XamlNode.LayoutUpdater;\r\n            updater.assets.caretBrush = value;\r\n            updater.invalidateCaret();\r\n        }\r\n\r\n        setIsFocused (isFocused: boolean) {\r\n            var updater = <TextBoxViewUpdater>this.XamlNode.LayoutUpdater;\r\n            if (updater.assets.isFocused === isFocused)\r\n                return;\r\n            updater.assets.isFocused = isFocused;\r\n            updater.resetCaretBlinker(false);\r\n        }\r\n\r\n        setIsReadOnly (isReadOnly: boolean) {\r\n            var updater = this.XamlNode.LayoutUpdater;\r\n            if (updater.assets.isReadOnly === isReadOnly)\r\n                return;\r\n            updater.assets.isReadOnly = isReadOnly;\r\n            updater.resetCaretBlinker(false);\r\n        }\r\n\r\n        setTextAlignment (textAlignment: TextAlignment) {\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n            if (lu.assets.textAlignment === <number>textAlignment)\r\n                return;\r\n            lu.assets.textAlignment = <number>textAlignment;\r\n            lu.invalidateMeasure();\r\n            lu.updateBounds(true);\r\n            lu.invalidate();\r\n        }\r\n\r\n        setTextWrapping (textWrapping: TextWrapping) {\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n            if (lu.assets.textWrapping === <number>textWrapping)\r\n                return;\r\n            lu.assets.textWrapping = <number>textWrapping;\r\n            lu.invalidateMeasure();\r\n            lu.updateBounds(true);\r\n            lu.invalidate();\r\n        }\r\n\r\n        setSelectionStart (selectionStart: number) {\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n            if (lu.assets.selectionStart === selectionStart)\r\n                return;\r\n            lu.assets.selectionStart = selectionStart;\r\n            lu.invalidateSelectionStart();\r\n        }\r\n\r\n        setSelectionLength (selectionLength: number) {\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n            if (lu.assets.selectionLength === selectionLength)\r\n                return;\r\n            var switching = (lu.assets.selectionLength === 0) !== (selectionLength === 0);\r\n            lu.assets.selectionLength = selectionLength;\r\n            lu.invalidateSelectionLength(switching);\r\n        }\r\n\r\n        setText (text: string) {\r\n            this._AutoRun.Text = text || \"\";\r\n        }\r\n\r\n        /*\r\n         private _UpdateCursor (invalidate: boolean) {\r\n         var cur = this._TextBox.SelectionCursor;\r\n         var current = this._Cursor;\r\n\r\n         if (invalidate && this._CursorVisible)\r\n         this._InvalidateCursor();\r\n\r\n         this._Cursor = this._Layout.GetSelectionCursor(null, cur);\r\n         //TODO: ...\r\n         // var irect = rect.copyTo(this._Cursor);\r\n         // rect.transform(irect, this._Xformer.AbsoluteXform);\r\n         // this._TextBox._ImCtx.SetCursorLocation(irect);\r\n\r\n         if (!minerva.Rect.isEqual(this._Cursor, current))\r\n         this._TextBox._EmitCursorPositionChanged(this._Cursor.height, this._Cursor.x, this._Cursor.y);\r\n\r\n         if (invalidate && this._CursorVisible)\r\n         this._InvalidateCursor();\r\n         }\r\n         */\r\n\r\n        GetCursorFromPoint (point: Point): number {\r\n            return this.XamlNode.LayoutUpdater.getCursorFromPoint(point);\r\n        }\r\n    }\r\n    Fayde.RegisterType(TextBoxView, Fayde.XMLNSINTERNAL);\r\n}"
  },
  {
    "path": "src/Controls/Internal/VirtualizingPanelContainerOwner.ts",
    "content": "module Fayde.Controls.Internal {\r\n    var NO_GENERATOR: minerva.IVirtualizingGenerator = {\r\n        current: undefined,\r\n        generate: function (): boolean {\r\n            return false;\r\n        }\r\n    };\r\n\r\n    export class VirtualizingPanelContainerOwner implements minerva.IVirtualizingContainerOwner {\r\n        constructor (private $$panel: VirtualizingPanel) {\r\n        }\r\n\r\n        get itemCount (): number {\r\n            var panel = this.$$panel;\r\n            var ic = panel ? panel.ItemsControl : null;\r\n            return ic ? ic.Items.Count : 0;\r\n        }\r\n\r\n        createGenerator (index: number, count: number): minerva.IVirtualizingGenerator {\r\n            var panel = this.$$panel;\r\n            var ic = panel ? panel.ItemsControl : null;\r\n            var icm = ic ? ic.ItemContainersManager : null;\r\n            if (!icm)\r\n                return NO_GENERATOR;\r\n            var icgen = icm.CreateGenerator(index, count);\r\n            var children = panel.Children;\r\n            return {\r\n                current: undefined,\r\n                generate: function (): boolean {\r\n                    this.current = undefined;\r\n                    if (!icgen.Generate())\r\n                        return false;\r\n                    var child = icgen.Current;\r\n                    if (icgen.IsCurrentNew) {\r\n                        children.Insert(icgen.GenerateIndex, child);\r\n                        ic.PrepareContainerForItem(child, icgen.CurrentItem);\r\n                    }\r\n                    this.current = child.XamlNode.LayoutUpdater;\r\n                    return true;\r\n                }\r\n            };\r\n        }\r\n\r\n        remove (index: number, count: number) {\r\n            var panel = this.$$panel;\r\n            var ic = panel ? panel.ItemsControl : null;\r\n            var icm = ic ? ic.ItemContainersManager : null;\r\n            if (!icm)\r\n                return;\r\n            var old = icm.DisposeContainers(index, count);\r\n            var children = panel.Children;\r\n            for (var i = 0, len = old.length; i < len; i++) {\r\n                children.Remove(old[i]);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/ItemCollection.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export interface IItemCollection extends nullstone.ICollection<any> {\r\n        ItemsChanged: nullstone.Event<Collections.CollectionChangedEventArgs>;\r\n        ToArray(): any[];\r\n\r\n        GetRange(startIndex: number, endIndex: number): any[];\r\n        Contains(value: any): boolean;\r\n        IndexOf(value: any): number;\r\n        AddRange(values: any[]);\r\n    }\r\n\r\n    export class ItemCollection extends XamlObjectCollection<any> implements IItemCollection {\r\n        ItemsChanged = new nullstone.Event<Collections.CollectionChangedEventArgs>();\r\n\r\n        ToArray (): any[] {\r\n            return this._ht.slice(0);\r\n        }\r\n\r\n        get Count (): number {\r\n            return this._ht.length;\r\n        }\r\n\r\n        IsReadOnly: boolean = false;\r\n\r\n        GetValueAt (index: number): XamlObject {\r\n            var ht = this._ht;\r\n            if (index < 0 || index >= ht.length)\r\n                throw new IndexOutOfRangeException(index);\r\n            return ht[index];\r\n        }\r\n\r\n        GetRange (startIndex: number, endIndex: number): XamlObject[] {\r\n            return this._ht.slice(startIndex, endIndex + 1);\r\n        }\r\n\r\n        SetValueAt (index: number, value: XamlObject): boolean {\r\n            this._ValidateReadOnly();\r\n            this.SetValueAtImpl(index, value);\r\n            return true;\r\n        }\r\n\r\n        SetValueAtImpl (index: number, value: any) {\r\n            var ht = this._ht;\r\n            if (index < 0 || index >= ht.length)\r\n                throw new IndexOutOfRangeException(index);\r\n            var oldValue = ht[index];\r\n            ht[index] = value;\r\n            this.ItemsChanged.raise(this, Collections.CollectionChangedEventArgs.Replace(value, oldValue, index));\r\n        }\r\n\r\n        Add (value: XamlObject): number {\r\n            this._ValidateReadOnly();\r\n            if (value == null)\r\n                throw new ArgumentException(\"value\");\r\n            return this.AddImpl(value);\r\n        }\r\n\r\n        AddImpl (value: any): number {\r\n            var index = this._ht.push(value) - 1;\r\n            this.ItemsChanged.raise(this, Collections.CollectionChangedEventArgs.Add(value, index));\r\n            return index;\r\n        }\r\n\r\n        AddRange (values: any[]) {\r\n            this._ValidateReadOnly();\r\n            if (!values) return;\r\n            for (var i = 0; i < values.length; i++) {\r\n                if (values[i] == null) throw new ArgumentException(\"value\");\r\n            }\r\n            this.AddRangeImpl(values);\r\n        }\r\n\r\n        AddRangeImpl (values: any[]) {\r\n            var index = this._ht.length;\r\n            this._ht = this._ht.concat(values);\r\n            this.ItemsChanged.raise(this, Collections.CollectionChangedEventArgs.AddRange(values, index));\r\n        }\r\n\r\n        Insert (index: number, value: XamlObject): boolean {\r\n            this._ValidateReadOnly();\r\n            if (value == null)\r\n                throw new ArgumentException(\"value\");\r\n            this.InsertImpl(index, value);\r\n            return true;\r\n        }\r\n\r\n        InsertImpl (index: number, value: XamlObject) {\r\n            var ht = this._ht;\r\n            if (index < 0 || index > ht.length)\r\n                throw new IndexOutOfRangeException(index);\r\n            if (index >= ht.length)\r\n                ht.push(value);\r\n            else\r\n                ht.splice(index, 0, value);\r\n            this.ItemsChanged.raise(this, Collections.CollectionChangedEventArgs.Add(value, index));\r\n        }\r\n\r\n        IndexOf (value: XamlObject): number {\r\n            return this._ht.indexOf(value);\r\n        }\r\n\r\n        Contains (value: XamlObject): boolean {\r\n            return this._ht.indexOf(value) > -1;\r\n        }\r\n\r\n        Remove (value: XamlObject): boolean {\r\n            this._ValidateReadOnly();\r\n            this.RemoveImpl(value);\r\n            return true;\r\n        }\r\n\r\n        RemoveImpl (value: XamlObject) {\r\n            var index = this._ht.indexOf(value);\r\n            if (index < 0)\r\n                return;\r\n            this._ht.splice(index, 1);\r\n            this.ItemsChanged.raise(this, Collections.CollectionChangedEventArgs.Remove(value, index));\r\n        }\r\n\r\n        RemoveAt (index: number): boolean {\r\n            this._ValidateReadOnly();\r\n            if (index < 0 || index >= this._ht.length)\r\n                throw new IndexOutOfRangeException(index);\r\n            this.RemoveAtImpl(index);\r\n            return true;\r\n        }\r\n\r\n        RemoveAtImpl (index: number) {\r\n            var item = this._ht.splice(index, 1)[0];\r\n            this.ItemsChanged.raise(this, Collections.CollectionChangedEventArgs.Remove(item, index));\r\n        }\r\n\r\n        Clear (): boolean {\r\n            this._ValidateReadOnly();\r\n            this.ClearImpl();\r\n            return true;\r\n        }\r\n\r\n        ClearImpl () {\r\n            var old = this._ht;\r\n            this._ht = [];\r\n            this.ItemsChanged.raise(this, Collections.CollectionChangedEventArgs.Reset(old));\r\n        }\r\n\r\n        private _ValidateReadOnly () {\r\n            if (this.IsReadOnly)\r\n                throw new InvalidOperationException(\"The collection is readonly.\");\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ItemCollection);\r\n}"
  },
  {
    "path": "src/Controls/ItemsControl.ts",
    "content": "/// <reference path=\"Control.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ItemsControlNode extends ControlNode {\r\n        XObject: ItemsControl;\r\n        constructor(xobj: ItemsControl) {\r\n            super(xobj);\r\n        }\r\n\r\n        ItemsPresenter: ItemsPresenter = null;\r\n        GetDefaultVisualTree(): UIElement {\r\n            var presenter = this.ItemsPresenter;\r\n            if (!presenter)\r\n                (presenter = new ItemsPresenter()).TemplateOwner = this.XObject;\r\n            return presenter;\r\n        }\r\n    }\r\n\r\n    export class ItemsControl extends Control {\r\n        XamlNode: ItemsControlNode;\r\n        CreateNode(): ItemsControlNode { return new ItemsControlNode(this); }\r\n\r\n        get IsItemsControl(): boolean { return true; }\r\n\r\n        static DisplayMemberPathProperty = DependencyProperty.Register(\"DisplayMemberPath\", () => String, ItemsControl, null, (d, args) => (<ItemsControl>d).OnDisplayMemberPathChanged(args));\r\n        static ItemsPanelProperty = DependencyProperty.Register(\"ItemsPanel\", () => ItemsPanelTemplate, ItemsControl);\r\n        static ItemsSourceProperty = DependencyProperty.RegisterFull(\"ItemsSource\", () => nullstone.IEnumerable_, ItemsControl, null, (d, args) => (<ItemsControl>d).OnItemsSourceChanged(args));\r\n        static ItemsProperty = DependencyProperty.RegisterImmutable<ItemCollection>(\"Items\", () => ItemCollection, ItemsControl);\r\n        static ItemTemplateProperty = DependencyProperty.Register(\"ItemTemplate\", () => DataTemplate, ItemsControl, undefined, (d, args) => (<ItemsControl>d).OnItemTemplateChanged(args));\r\n\r\n        static IsItemsHostProperty = DependencyProperty.RegisterAttached(\"IsItemsHost\", () => Boolean, ItemsControl, false);\r\n        static GetIsItemsHost(d: DependencyObject): boolean { return d.GetValue(ItemsControl.IsItemsHostProperty) === true; }\r\n        static SetIsItemsHost(d: DependencyObject, value: boolean) { d.SetValue(ItemsControl.IsItemsHostProperty, value === true); }\r\n\r\n        DisplayMemberPath: string;\r\n        ItemsPanel: ItemsPanelTemplate;\r\n        ItemsSource: nullstone.IEnumerable<any>;\r\n        Items: ItemCollection;\r\n        ItemTemplate: DataTemplate;\r\n\r\n        OnDisplayMemberPathChanged(e: IDependencyPropertyChangedEventArgs) {\r\n            for (var en = this.ItemContainersManager.GetEnumerator(); en.moveNext();) {\r\n                this.UpdateContainerTemplate(en.current, en.CurrentItem);\r\n            }\r\n        }\r\n        OnItemsSourceChanged(e: IDependencyPropertyChangedEventArgs) {\r\n            //Unsubscribe from old\r\n            var nc = Collections.INotifyCollectionChanged_.as(e.OldValue);\r\n            if (nc)\r\n                nc.CollectionChanged.off(this._OnItemsSourceUpdated, this);\r\n            var items = this.Items;\r\n            var resetargs = Collections.CollectionChangedEventArgs.Reset(items.ToArray());\r\n\r\n            //Reset old\r\n            try {\r\n                this._SuspendItemsChanged = true;\r\n                items.Clear();\r\n            } finally {\r\n                this._SuspendItemsChanged = false;\r\n            }\r\n            this.OnItemsChanged(resetargs);\r\n\r\n            //Notify new\r\n            this._IsDataBound = !!e.NewValue;\r\n            var arr = toArray(e.NewValue);\r\n            try {\r\n                this._SuspendItemsChanged = true;\r\n                if (arr)\r\n                    items.AddRange(arr);\r\n            } finally {\r\n                this._SuspendItemsChanged = false;\r\n            }\r\n            if (arr)\r\n                this.OnItemsChanged(Collections.CollectionChangedEventArgs.AddRange(arr, 0));\r\n\r\n            //Subscribe to new\r\n            var nc = Collections.INotifyCollectionChanged_.as(e.NewValue);\r\n            if (nc)\r\n                nc.CollectionChanged.on(this._OnItemsSourceUpdated, this);\r\n        }\r\n\r\n        OnItemTemplateChanged (e: IDependencyPropertyChangedEventArgs) {\r\n            for (var en = this.ItemContainersManager.GetEnumerator(); en.moveNext();) {\r\n                this.UpdateContainerTemplate(en.current, en.CurrentItem);\r\n            }\r\n        }\r\n\r\n        private _ItemContainersManager: Internal.IItemContainersManager;\r\n        get ItemContainersManager(): Internal.IItemContainersManager { return this._ItemContainersManager; }\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = ItemsControl;\r\n            var coll = <ItemCollection>ItemsControl.ItemsProperty.Initialize(this);\r\n            coll.ItemsChanged.on(this._OnItemsUpdated, this);\r\n\r\n            this._ItemContainersManager = new Internal.ItemContainersManager(this);\r\n        }\r\n\r\n        PrepareContainerForItem(container: UIElement, item: any) {\r\n            if (this.DisplayMemberPath != null && this.ItemTemplate != null)\r\n                throw new InvalidOperationException(\"Cannot set 'DisplayMemberPath' and 'ItemTemplate' simultaneously\");\r\n            this.UpdateContainerTemplate(container, item);\r\n        }\r\n        ClearContainerForItem(container: UIElement, item: any) {\r\n            if (container instanceof ContentPresenter) {\r\n                var cp = <ContentPresenter>container;\r\n                if (cp.Content === item)\r\n                    cp.Content = null;\r\n            } else if (container instanceof ContentControl) {\r\n                var cc = <ContentControl>container;\r\n                if (cc.Content === item)\r\n                    cc.Content = null;\r\n            }\r\n        }\r\n        GetContainerForItem(): UIElement { return new ContentPresenter(); }\r\n        IsItemItsOwnContainer(item: any): boolean { return item instanceof UIElement; }\r\n\r\n        private _IsDataBound = false;\r\n        private _SuspendItemsChanged = false;\r\n        private _OnItemsUpdated(sender: any, e: Collections.CollectionChangedEventArgs) {\r\n            if (this._SuspendItemsChanged) //Ignore OnItemsSourceChanged operations\r\n                return;\r\n            if (this._IsDataBound)\r\n                throw new InvalidOperationException(\"Cannot modify Items while bound to ItemsSource.\");\r\n            this.OnItemsChanged(e);\r\n        }\r\n        private _OnItemsSourceUpdated(sender: any, e: Collections.CollectionChangedEventArgs) {\r\n            var items = this.Items;\r\n            try {\r\n                this._SuspendItemsChanged = true;\r\n                switch (e.Action) {\r\n                    case Collections.CollectionChangedAction.Add:\r\n                        for (var i = 0, len = e.NewItems.length; i < len; i++) {\r\n                            items.Insert(e.NewStartingIndex + i, e.NewItems[i]);\r\n                        }\r\n                        break;\r\n                    case Collections.CollectionChangedAction.Remove:\r\n                        for (var i = 0, len = e.OldItems.length; i < len; i++) {\r\n                            items.RemoveAt(e.OldStartingIndex);\r\n                        }\r\n                        break;\r\n                    case Collections.CollectionChangedAction.Replace:\r\n                        items.SetValueAt(e.NewStartingIndex, e.NewItems[0]);\r\n                        break;\r\n                    case Collections.CollectionChangedAction.Reset:\r\n                        items.Clear();\r\n                        break;\r\n                }\r\n            } finally {\r\n                this._SuspendItemsChanged = false;\r\n            }\r\n            this.OnItemsChanged(e);\r\n        }\r\n        OnItemsChanged(e: Collections.CollectionChangedEventArgs) {\r\n            switch (e.Action) {\r\n                case Collections.CollectionChangedAction.Add:\r\n                    this.OnItemsAdded(e.NewStartingIndex, e.NewItems);\r\n                    break;\r\n                case Collections.CollectionChangedAction.Remove:\r\n                    this.OnItemsRemoved(e.OldStartingIndex, e.OldItems);\r\n                    break;\r\n                case Collections.CollectionChangedAction.Replace:\r\n                    this.OnItemsRemoved(e.NewStartingIndex, e.OldItems);\r\n                    this.OnItemsAdded(e.NewStartingIndex, e.NewItems);\r\n                    break;\r\n                case Collections.CollectionChangedAction.Reset:\r\n                    this.OnItemsRemoved(0, e.OldItems);\r\n                    break;\r\n            }\r\n        }\r\n        OnItemsAdded(index: number, newItems: any[]) {\r\n            this._ItemContainersManager.OnItemsAdded(index, newItems);\r\n            var presenter = this.XamlNode.ItemsPresenter;\r\n            if (presenter)\r\n                presenter.OnItemsAdded(index, newItems);\r\n        }\r\n        OnItemsRemoved(index: number, oldItems: any[]) {\r\n            var presenter = this.XamlNode.ItemsPresenter;\r\n            if (presenter)\r\n                presenter.OnItemsRemoved(index, oldItems);\r\n            this._ItemContainersManager.OnItemsRemoved(index, oldItems);\r\n        }\r\n\r\n        private UpdateContainerTemplate(container: UIElement, item: any) {\r\n            if (!container || container === item)\r\n                return;\r\n\r\n            var template: DataTemplate;\r\n            if (!(item instanceof UIElement))\r\n                template = this.ItemTemplate || this._GetDisplayMemberTemplate();\r\n\r\n            if (container instanceof ContentPresenter) {\r\n                var cp = <ContentPresenter>container;\r\n                cp.ContentTemplate = template;\r\n                cp.Content = item;\r\n            } else if (container instanceof ContentControl) {\r\n                var cc = <ContentControl>container;\r\n                cc.ContentTemplate = template;\r\n                cc.Content = item;\r\n            }\r\n        }\r\n        private _DisplayMemberTemplate: DataTemplate = null;\r\n        private _GetDisplayMemberTemplate(): DataTemplate {\r\n            if (!this._DisplayMemberTemplate) {\r\n                var xm = DisplayTemplate.create(this.DisplayMemberPath || \"\");\r\n                this._DisplayMemberTemplate = Markup.Load<DataTemplate>(this.App, xm);\r\n            }\r\n            return this._DisplayMemberTemplate;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ItemsControl);\r\n    Markup.Content(ItemsControl, ItemsControl.ItemsProperty);\r\n\r\n    function toArray(value: any): any[] {\r\n        if (value instanceof Array)\r\n            return <any[]>value;\r\n        var enu = nullstone.IEnumerable_.as(value);\r\n        if (enu) {\r\n            var arr = [];\r\n            for (var en = enu.getEnumerator(); en.moveNext();) {\r\n                arr.push(en.current);\r\n            }\r\n            return arr;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    module DisplayTemplate {\r\n        export function create (dmp: string) {\r\n            return Fayde.Markup.CreateXaml(\"<DataTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\"><Grid><TextBlock Text=\\\"{Binding \" + dmp + \"}\\\" /></Grid></DataTemplate>\"\r\n                , Fayde.XMLNS + \"/itemscontrol/displaymember/\" + dmp);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/ItemsPanelTemplate.ts",
    "content": "/// <reference path=\"../Markup/Loader\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ItemsPanelTemplate extends Markup.FrameworkTemplate {\r\n        GetVisualTree(bindingSource: DependencyObject): Panel {\r\n            var panel = <Panel>super.GetVisualTree(bindingSource);\r\n            if (!(panel instanceof Panel))\r\n                throw new XamlParseException(\"The root element of an ItemsPanelTemplate must be a Panel subclass.\");\r\n            return panel;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ItemsPanelTemplate);\r\n}"
  },
  {
    "path": "src/Controls/ItemsPresenter.ts",
    "content": "/// <reference path=\"../Core/FrameworkElement.ts\" />\r\n/// <reference path=\"../Markup/Creator.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    var spxd = Markup.CreateXaml(\"<ItemsPanelTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\"><StackPanel /></ItemsPanelTemplate>\"\r\n        , Fayde.XMLNS + \"/itemspresenter/stackpanel/default\");\r\n    var spft: ItemsPanelTemplate;\r\n\r\n    var vspxd = Markup.CreateXaml(\"<ItemsPanelTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\"><VirtualizingStackPanel /></ItemsPanelTemplate>\"\r\n        , Fayde.XMLNS + \"/itemspresenter/virtualizingstackpanel/default\");\r\n    var vspft: ItemsPanelTemplate;\r\n\r\n    function getFallbackTemplate(ic: ItemsControl): ItemsPanelTemplate {\r\n        if (ic instanceof ListBox)\r\n            return vspft = vspft || Markup.Load<ItemsPanelTemplate>(ic.App, vspxd);\r\n        return spft = spft || Markup.Load<ItemsPanelTemplate>(ic.App, spxd);\r\n    }\r\n\r\n    export class ItemsPresenterNode extends FENode {\r\n        XObject: ItemsPresenter;\r\n        constructor(xobj: ItemsPresenter) {\r\n            super(xobj);\r\n        }\r\n\r\n        private _ElementRoot: Panel;\r\n        get ElementRoot(): Panel { return this._ElementRoot; }\r\n\r\n        DoApplyTemplateWithError(error: BError): boolean {\r\n            if (this._ElementRoot)\r\n                return false;\r\n\r\n            var xobj = this.XObject;\r\n            var ic = xobj.TemplateOwner;\r\n            if (!(ic instanceof ItemsControl))\r\n                return false;\r\n\r\n            var er: Panel;\r\n            if (ic.ItemsPanel)\r\n                er = this._ElementRoot = ic.ItemsPanel.GetVisualTree(xobj);\r\n            if (!er)\r\n                er = this._ElementRoot = getFallbackTemplate(ic).GetVisualTree(xobj);\r\n\r\n            ItemsControl.SetIsItemsHost(er, true);\r\n            if (!this.FinishApplyTemplateWithError(er, error))\r\n                return false;\r\n            ic.XamlNode.ItemsPresenter = xobj;\r\n            xobj.OnItemsAdded(0, ic.Items.ToArray());\r\n            return true;\r\n        }\r\n    }\r\n\r\n    export class ItemsPresenter extends FrameworkElement {\r\n        TemplateOwner: ItemsControl;\r\n        XamlNode: ItemsPresenterNode;\r\n        CreateNode(): ItemsPresenterNode { return new ItemsPresenterNode(this); }\r\n\r\n        get ItemsControl(): ItemsControl {\r\n            return this.TemplateOwner instanceof ItemsControl ? this.TemplateOwner : null;\r\n        }\r\n        get Panel(): Panel {\r\n            var er = this.XamlNode.ElementRoot;\r\n            return er instanceof Panel ? er : undefined;\r\n        }\r\n\r\n        static Get(panel: Panel): ItemsPresenter {\r\n            if (!(panel instanceof Panel))\r\n                return null;\r\n            if (!ItemsControl.GetIsItemsHost(panel))\r\n                return null;\r\n            return panel.TemplateOwner instanceof ItemsPresenter ? <ItemsPresenter>panel.TemplateOwner : null;\r\n        }\r\n\r\n        OnItemsAdded(index: number, newItems: any[]) {\r\n            var panel = this.Panel;\r\n            if (!panel)\r\n                return;\r\n            if (panel instanceof VirtualizingPanel) {\r\n                (<VirtualizingPanel>panel).OnItemsAdded(index, newItems);\r\n            } else {\r\n                for (var ic = this.ItemsControl, children = panel.Children, generator = ic.ItemContainersManager.CreateGenerator(index, newItems.length); generator.Generate();) {\r\n                    var container = generator.Current;\r\n                    children.Insert(index + generator.GenerateIndex, <UIElement>container);\r\n                    ic.PrepareContainerForItem(container, generator.CurrentItem);\r\n                }\r\n            }\r\n        }\r\n        OnItemsRemoved(index: number, oldItems: any[]) {\r\n            var panel = this.Panel;\r\n            if (!panel)\r\n                return;\r\n            if (panel instanceof VirtualizingPanel) {\r\n                (<VirtualizingPanel>panel).OnItemsRemoved(index, oldItems);\r\n            } else {\r\n                var icm = this.ItemsControl.ItemContainersManager;\r\n                var children = panel.Children;\r\n                var count = oldItems ? oldItems.length : null;\r\n                if (count == null || count === children.Count) {\r\n                    children.Clear();\r\n                } else {\r\n                    while (count > 0) {\r\n                        children.RemoveAt(index);\r\n                        count--;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ItemsPresenter);\r\n}"
  },
  {
    "path": "src/Controls/ListBox.ts",
    "content": "/// <reference path=\"Primitives/Selector.ts\" />\r\n/// <reference path=\"ScrollViewer.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    import Rect = minerva.Rect;\r\n    interface IOutValue {\r\n        Value: any;\r\n    }\r\n    export class ListBox extends Primitives.Selector {\r\n        private _FocusedIndex: number = 0;\r\n        static ItemContainerStyleProperty = DependencyProperty.Register(\"ItemContainerStyle\", () => Style, ListBox, undefined, (d, args) => (<ListBox>d).OnItemContainerStyleChanged(args));\r\n        static IsSelectionActiveProperty = Primitives.Selector.IsSelectionActiveProperty;\r\n        ItemContainerStyle: Style;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = ListBox;\r\n        }\r\n\r\n        ScrollIntoView(item: any) {\r\n            var tsv = this.$TemplateScrollViewer;\r\n            if (!tsv)\r\n                return;\r\n            var items = this.Items;\r\n            if (!items.Contains(item))\r\n                return;\r\n\r\n            var ihro = {Value: <Rect>null};\r\n            var lbiro = {Value: <Rect>null};\r\n            var virtualizing = VirtualizingStackPanel.GetIsVirtualizing(this);\r\n            if (this._IsOnCurrentPage(item, ihro, lbiro))\r\n                return;\r\n            var ihr = ihro.Value;\r\n            var lbir = lbiro.Value;\r\n\r\n            if (this._GetIsVerticalOrientation()) {\r\n                if (virtualizing) {\r\n                    tsv.ScrollToVerticalOffset(this.SelectedIndex);\r\n                    return;\r\n                }\r\n                var verticalOffset = tsv.VerticalOffset;\r\n                var verticalDelta = 0;\r\n                if (Rect.getBottom(ihr) < Rect.getBottom(lbir)) {\r\n                    verticalDelta = Rect.getBottom(lbir) - Rect.getBottom(ihr);\r\n                    verticalOffset += verticalDelta;\r\n                }\r\n                if ((lbir.y - verticalDelta) < ihr.y) {\r\n                    verticalOffset -= ihr.y - (lbir.y - verticalDelta);\r\n                }\r\n                tsv.ScrollToVerticalOffset(verticalOffset);\r\n            } else {\r\n                if (virtualizing) {\r\n                    tsv.ScrollToHorizontalOffset(this.SelectedIndex);\r\n                    return;\r\n                }\r\n                var horizontalOffset = tsv.HorizontalOffset;\r\n                var horizontalDelta = 0;\r\n                if (Rect.getRight(ihr) < Rect.getRight(lbir)) {\r\n                    horizontalDelta = Rect.getRight(lbir) - Rect.getRight(ihr);\r\n                    horizontalOffset += horizontalDelta;\r\n                }\r\n                if ((ihr.x - horizontalDelta) < ihr.x) {\r\n                    horizontalOffset -= ihr.x - (lbir.x - horizontalDelta);\r\n                }\r\n                tsv.ScrollToHorizontalOffset(horizontalOffset);\r\n            }\r\n        }\r\n\r\n        private _NavigateByPage(forward: boolean) {\r\n            var tsv = this.$TemplateScrollViewer;\r\n            var newFocusedIndex = -1;\r\n            var item = (this._FocusedIndex !== -1) ? this.Items.GetValueAt(this._FocusedIndex) : null;\r\n            if (item != null && !this._IsOnCurrentPage(item)) {\r\n                this.ScrollIntoView(item);\r\n                if (tsv != null)\r\n                    tsv.UpdateLayout();\r\n            }\r\n            if (item == null) {\r\n                newFocusedIndex = this._GetFirstItemOnCurrentPage(this._FocusedIndex, forward);\r\n            } else {\r\n                var firstItemOnCurrentPage = this._GetFirstItemOnCurrentPage(this._FocusedIndex, forward);\r\n                if (firstItemOnCurrentPage !== this._FocusedIndex) {\r\n                    newFocusedIndex = firstItemOnCurrentPage;\r\n                } else {\r\n                    if (tsv != null) {\r\n                        if (this._GetIsVerticalOrientation()) {\r\n                            tsv.ScrollToVerticalOffset(Math.max(0, Math.min(tsv.ScrollableHeight,\r\n                                tsv.VerticalOffset + (tsv.ViewportHeight * (forward ? 1 : -1)))));\r\n                        } else {\r\n                            tsv.ScrollToHorizontalOffset(Math.max(0, Math.min(tsv.ScrollableWidth,\r\n                                tsv.HorizontalOffset + (tsv.ViewportWidth * (forward ? 1 : -1)))));\r\n\r\n                        }\r\n                        tsv.UpdateLayout();\r\n                    }\r\n                    newFocusedIndex = this._GetFirstItemOnCurrentPage(this._FocusedIndex, forward);\r\n                }\r\n            }\r\n            return newFocusedIndex;\r\n        }\r\n\r\n        private _ScrollInDirection(key: Input.Key) {\r\n            if (this.$TemplateScrollViewer)\r\n                this.$TemplateScrollViewer.ScrollInDirection(key);\r\n        }\r\n\r\n        private _IsOnCurrentPage(item: any, itemsHostRectOut?: IOutValue, listBoxItemsRectOut?: IOutValue) {\r\n            if (!itemsHostRectOut) itemsHostRectOut = {Value: null};\r\n            if (!listBoxItemsRectOut) listBoxItemsRectOut = {Value: null};\r\n\r\n            var itemsHost: UIElement = <UIElement>VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(this, 0), 0);\r\n\r\n            var tsv = this.$TemplateScrollViewer;\r\n            if (tsv != null) {\r\n                itemsHost = tsv;\r\n                if (tsv.$ScrollContentPresenter != null)\r\n                    itemsHost = tsv.$ScrollContentPresenter;\r\n            }\r\n            if (!(itemsHost instanceof FrameworkElement))\r\n                itemsHost = null;\r\n\r\n            var ihro = itemsHostRectOut.Value = new minerva.Rect();\r\n            var lbiro = listBoxItemsRectOut.Value = new minerva.Rect();\r\n            if (!itemsHost)\r\n                return false;\r\n            minerva.Size.copyTo(itemsHost.RenderSize, ihro);\r\n\r\n            var lbi = <ListBoxItem>this.ItemContainersManager.ContainerFromItem(item);\r\n            if (!lbi)\r\n                return false;\r\n\r\n            minerva.Size.copyTo(lbi.RenderSize, lbiro);\r\n\r\n            if (itemsHost instanceof Control) {\r\n                var padding = (<Control>itemsHost).Padding;\r\n                if (padding) {\r\n                    ihro.x = ihro.x + padding.left;\r\n                    ihro.y = ihro.y + padding.top;\r\n                    ihro.width = ihro.width - padding.left - padding.right;\r\n                    ihro.height = ihro.height - padding.top - padding.bottom;\r\n                }\r\n            }\r\n\r\n            var genXform = lbi.TransformToVisual(itemsHost);\r\n            if (genXform != null) {\r\n                var ptl = genXform.Transform(new Point());\r\n                var pbr = genXform.Transform(new Point(lbi.RenderSize.width, lbi.RenderSize.height));\r\n                lbiro.x = Math.min(ptl.x, pbr.x);\r\n                lbiro.y = Math.min(ptl.y, pbr.y);\r\n                lbiro.width = Math.abs(ptl.x - pbr.x);\r\n                lbiro.height = Math.abs(ptl.y - pbr.y);\r\n            }\r\n\r\n            return this._GetIsVerticalOrientation()\r\n                ? ihro.y <= lbiro.y && minerva.Rect.getBottom(ihro) >= minerva.Rect.getBottom(lbiro)\r\n                : ihro.x <= lbiro.x && minerva.Rect.getRight(ihro) >= minerva.Rect.getRight(lbiro);\r\n        }\r\n\r\n        private _GetFirstItemOnCurrentPage(startingIndex: number, forward: boolean): number {\r\n            var delta = forward ? 1 : -1;\r\n            var fiocp = -1;\r\n            var probeIndex = startingIndex;\r\n            var items = this.Items;\r\n            var itemsCount = items.Count;\r\n            while (probeIndex >= 0 && probeIndex < itemsCount && !this._IsOnCurrentPage(items.GetValueAt(probeIndex))) {\r\n                fiocp = probeIndex;\r\n                probeIndex += delta;\r\n            }\r\n            while (probeIndex >= 0 && probeIndex < itemsCount && this._IsOnCurrentPage(items.GetValueAt(probeIndex))) {\r\n                fiocp = probeIndex;\r\n                probeIndex += delta;\r\n            }\r\n            return fiocp;\r\n        }\r\n\r\n        OnItemContainerStyleChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            var oldStyle = <Style>args.OldValue;\r\n            var newStyle = <Style>args.NewValue;\r\n            var enumerator = this.ItemContainersManager.GetEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                var lbi = <ListBoxItem>enumerator.current;\r\n                if (lbi instanceof ListBoxItem && lbi.Style === oldStyle)\r\n                    lbi.Style = newStyle;\r\n            }\r\n        }\r\n\r\n        OnKeyDown(args: Input.KeyEventArgs) {\r\n            if (args.Handled)\r\n                return;\r\n\r\n            var newFocusedIndex = -1;\r\n            switch (args.Key) {\r\n                case Input.Key.Space:\r\n                case Input.Key.Enter:\r\n                    if (Input.Key.Enter !== args.Key || Input.KeyboardNavigation.GetAcceptsReturn(this)) {\r\n                        if (!Input.Keyboard.HasAlt()) {\r\n                            var focusedEl = Surface.GetFocusedElement(this);\r\n                            var lbi: ListBoxItem;\r\n                            if (focusedEl instanceof ListBoxItem) lbi = <ListBoxItem>focusedEl;\r\n                            if (lbi) {\r\n                                if (Input.Keyboard.HasControl() && lbi.IsSelected) {\r\n                                    this.SelectedItem = null;\r\n                                } else {\r\n                                    this.SelectedItem = this.ItemContainersManager.ItemFromContainer(lbi);\r\n                                }\r\n                                args.Handled = true;\r\n                            }\r\n                        }\r\n                    }\r\n                    break;\r\n                case Input.Key.Home:\r\n                    newFocusedIndex = 0;\r\n                    break;\r\n                case Input.Key.End:\r\n                    newFocusedIndex = this.Items.Count - 1;\r\n                    break;\r\n                case Input.Key.PageUp:\r\n                    newFocusedIndex = this._NavigateByPage(false);\r\n                    break;\r\n                case Input.Key.PageDown:\r\n                    newFocusedIndex = this._NavigateByPage(true);\r\n                    break;\r\n                case Input.Key.Left:\r\n                    if (this._GetIsVerticalOrientation()) {\r\n                        this._ScrollInDirection(Input.Key.Left);\r\n                    } else {\r\n                        newFocusedIndex = this._FocusedIndex - 1;\r\n                    }\r\n                    break;\r\n                case Input.Key.Up:\r\n                    if (this._GetIsVerticalOrientation()) {\r\n                        newFocusedIndex = this._FocusedIndex - 1;\r\n                    } else {\r\n                        this._ScrollInDirection(Input.Key.Up);\r\n                    }\r\n                    break;\r\n                case Input.Key.Right:\r\n                    if (this._GetIsVerticalOrientation()) {\r\n                        this._ScrollInDirection(Input.Key.Right);\r\n                    } else {\r\n                        newFocusedIndex = this._FocusedIndex + 1;\r\n                    }\r\n                    break;\r\n                case Input.Key.Down:\r\n                    if (this._GetIsVerticalOrientation()) {\r\n                        newFocusedIndex = this._FocusedIndex + 1;\r\n                    } else {\r\n                        this._ScrollInDirection(Input.Key.Down);\r\n                    }\r\n                    break;\r\n            }\r\n\r\n            if (newFocusedIndex !== -1 && this._FocusedIndex !== -1 && newFocusedIndex !== this._FocusedIndex && newFocusedIndex >= 0 && newFocusedIndex < this.Items.Count) {\r\n                // A key press changes the focused ListBoxItem\r\n                var icm = this.ItemContainersManager;\r\n                var lbi = <ListBoxItem>icm.ContainerFromIndex(newFocusedIndex);\r\n                var item = icm.ItemFromContainer(lbi);\r\n                this.ScrollIntoView(item);\r\n                if (Fayde.Input.Keyboard.HasControl()) {\r\n                    lbi.Focus();\r\n                } else {\r\n                    this.SelectedItem = item;\r\n                }\r\n                args.Handled = true;\r\n            }\r\n        }\r\n\r\n        private _GetIsVerticalOrientation(): boolean {\r\n            var presenter = this.XamlNode.ItemsPresenter;\r\n            if (!presenter)\r\n                return true;\r\n            var p = presenter.Panel;\r\n            if (p instanceof StackPanel)\r\n                return (<StackPanel>p).Orientation === Orientation.Vertical;\r\n            if (p instanceof VirtualizingStackPanel)\r\n                return (<VirtualizingStackPanel>p).Orientation === Orientation.Vertical;\r\n            return true;\r\n        }\r\n\r\n        IsItemItsOwnContainer(item: any): boolean {\r\n            return item instanceof ListBoxItem;\r\n        }\r\n\r\n        GetContainerForItem(): UIElement {\r\n            var item = new ListBoxItem();\r\n            var ics = this.ItemContainerStyle;\r\n            if (ics != null)\r\n                item.Style = ics;\r\n            return item;\r\n        }\r\n\r\n        PrepareContainerForItem(element: UIElement, item: any) {\r\n            super.PrepareContainerForItem(element, item);\r\n            var ics = this.ItemContainerStyle;\r\n            var lbi = <ListBoxItem>element;\r\n            if (!lbi.Style && ics)\r\n                lbi.Style = ics;\r\n        }\r\n\r\n        OnGotFocus(e: RoutedEventArgs) {\r\n            super.OnGotFocus(e);\r\n            this.SetValueInternal(ListBox.IsSelectionActiveProperty, true);\r\n        }\r\n\r\n        OnLostFocus(e: RoutedEventArgs) {\r\n            super.OnLostFocus(e);\r\n            this.SetValueInternal(ListBox.IsSelectionActiveProperty, false);\r\n        }\r\n\r\n        NotifyListItemGotFocus(lbi: ListBoxItem) {\r\n            this._FocusedIndex = this.ItemContainersManager.IndexFromContainer(lbi);\r\n        }\r\n\r\n        NotifyListItemLostFocus(lbi: ListBoxItem) {\r\n            this._FocusedIndex = -1;\r\n        }\r\n\r\n        OnItemsSourceChanged(e: IDependencyPropertyChangedEventArgs) {\r\n            super.OnItemsSourceChanged(e);\r\n            var tsv = this.$TemplateScrollViewer;\r\n            if (tsv) {\r\n                tsv.ScrollToVerticalOffset(0);\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ListBox);\r\n    TemplateVisualStates(ListBox,\r\n        {GroupName: \"ValidationStates\", Name: \"Valid\"},\r\n        {GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\"},\r\n        {GroupName: \"ValidationStates\", Name: \"InvalidFocused\"});\r\n    TemplateParts(ListBox,\r\n        {Name: \"ScrollViewer\", Type: ScrollViewer});\r\n}"
  },
  {
    "path": "src/Controls/ListBoxItem.ts",
    "content": "/// <reference path=\"ContentControl.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ListBoxItem extends ContentControl {\r\n        private _ParentSelector: Primitives.Selector;\r\n        get ParentSelector(): Primitives.Selector { return this._ParentSelector; }\r\n        set ParentSelector(value: Primitives.Selector) {\r\n            if (this._ParentSelector === value)\r\n                return;\r\n            this._ParentSelector = value;\r\n            this.ParentSelectorChanged.raise(this, null);\r\n        }\r\n        ParentSelectorChanged = new nullstone.Event();\r\n\r\n        static IsSelectedProperty: DependencyProperty = DependencyProperty.RegisterCore(\"IsSelected\", () => Boolean, ListBoxItem, null, (d, args) => (<ListBoxItem>d).OnIsSelectedChanged(args));\r\n        IsSelected: boolean;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = ListBoxItem;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs) {\r\n            if (e.Handled)\r\n                return;\r\n            e.Handled = true;\r\n            if (!this.XamlNode.Focus(true))\r\n                return;\r\n            if (this._ParentSelector != null)\r\n                this._ParentSelector.NotifyListItemClicked(this);\r\n        }\r\n        OnMouseEnter(e: Input.MouseEventArgs) {\r\n            super.OnMouseEnter(e);\r\n            this.UpdateVisualState();\r\n        }\r\n        OnMouseLeave(e: Input.MouseEventArgs) {\r\n            super.OnMouseLeave(e);\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnTouchMove(e: Input.TouchEventArgs) {\r\n            super.OnTouchMove(e);\r\n            this.UpdateVisualState();\r\n        }\r\n        OnTouchDown(e: Input.TouchEventArgs) {\r\n            if (e.Handled)\r\n                return;\r\n            e.Handled = true;\r\n            if (!this.XamlNode.Focus(true))\r\n                return;\r\n            if (this._ParentSelector != null)\r\n                this._ParentSelector.NotifyListItemClicked(this);\r\n        }\r\n        OnTouchUp(e: Input.TouchEventArgs) {\r\n            super.OnTouchUp(e);\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnGotFocus(e: RoutedEventArgs) {\r\n            super.OnGotFocus(e);\r\n            this.UpdateVisualState();\r\n            if (this._ParentSelector != null) {\r\n                this._ParentSelector.NotifyListItemGotFocus(this);\r\n            }\r\n        }\r\n        OnLostFocus(e: RoutedEventArgs) {\r\n            super.OnLostFocus(e);\r\n            this.UpdateVisualState();\r\n            if (this._ParentSelector != null) {\r\n                this._ParentSelector.NotifyListItemLostFocus(this);\r\n            }\r\n        }\r\n\r\n        GoToStateSelection(gotoFunc: (state: string) => boolean): boolean {\r\n            if (!this.IsSelected)\r\n                return gotoFunc(\"Unselected\");\r\n            if (gotoFunc(\"SelectedUnfocused\"))\r\n                return true;\r\n            return gotoFunc(\"Selected\");\r\n        }\r\n        \r\n        private OnIsSelectedChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this.UpdateVisualState();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ListBoxItem);\r\n    TemplateVisualStates(ListBoxItem, \r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" },\r\n        { GroupName: \"SelectionStates\", Name: \"Unselected\" },\r\n        { GroupName: \"SelectionStates\", Name: \"Selected\" },\r\n        { GroupName: \"SelectionStates\", Name: \"SelectedUnfocused\" });\r\n}\r\n"
  },
  {
    "path": "src/Controls/MediaElement.ts",
    "content": "/// <reference path=\"../Core/FrameworkElement.ts\" />\r\n/// <reference path=\"../Media/Enums.ts\"/>\r\n\r\nmodule Fayde.Controls {\r\n    import VideoUpdater = minerva.controls.video.VideoUpdater;\r\n\r\n    export class MediaElement extends FrameworkElement {\r\n        CreateLayoutUpdater() {\r\n            return new VideoUpdater();\r\n        }\r\n\r\n        private static _SourceCoercer(d: DependencyObject, propd: DependencyProperty, value: any): any {\r\n            if (typeof value === \"string\")\r\n                return new Media.Videos.VideoSource(new Uri(value));\r\n            if (value instanceof Uri)\r\n                return new Media.Videos.VideoSource(value);\r\n            return value;\r\n        }\r\n\r\n        static AutoPlayProperty = DependencyProperty.Register(\"AutoPlay\", () => Boolean, MediaElement, true, (d: MediaElement, args) => d.OnAutoPlayChanged(args.OldValue, args.NewValue));\r\n        static SourceProperty = DependencyProperty.RegisterFull(\"Source\", () => Media.Videos.VideoSource, MediaElement, undefined, undefined, MediaElement._SourceCoercer);\r\n        static StretchProperty = DependencyProperty.RegisterCore(\"Stretch\", () => new Enum(Media.Stretch), MediaElement, Media.Stretch.Uniform);\r\n        AutoPlay: boolean;\r\n        Source: Media.Videos.VideoSource;\r\n        Stretch: Media.Stretch;\r\n\r\n        VideoOpened = new nullstone.Event();\r\n        VideoFailed = new nullstone.Event();\r\n\r\n        private $watcher: nullstone.IDisposable = null;\r\n\r\n        protected OnAutoPlayChanged(oldValue: boolean, newValue: boolean) {\r\n            var source = this.Source;\r\n            if (source instanceof Media.Videos.VideoSourceBase)\r\n                source.setAutoPlay(newValue);\r\n        }\r\n\r\n        OnSourceChanged(oldSource: Media.Videos.VideoSourceBase, newSource: Media.Videos.VideoSourceBase) {\r\n            if (this.$watcher) {\r\n                this.$watcher.dispose();\r\n                this.$watcher = null;\r\n            }\r\n            if (newSource instanceof Media.Videos.VideoSourceBase) {\r\n                newSource.setAutoPlay(this.AutoPlay);\r\n                this.$watcher = newSource.watch({\r\n                    onErrored: (source, error) => this.OnVideoErrored(source, error),\r\n                    onCanPlay: (source) => this.OnVideoCanPlay(source),\r\n                    onChanged: (source) => this.OnVideoChanged(source)\r\n                });\r\n            }\r\n        }\r\n\r\n        OnVideoErrored(source: Media.Videos.VideoSourceBase, error: Error) {\r\n            this.VideoFailed.raise(this, null);\r\n        }\r\n\r\n        OnVideoCanPlay(source: Media.Videos.VideoSourceBase) {\r\n            this.VideoOpened.raise(this, null);\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n            lu.invalidateMeasure();\r\n        }\r\n\r\n        OnVideoChanged(source: Media.Videos.VideoSourceBase) {\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n            lu.invalidateMeasure();\r\n            lu.invalidate();\r\n        }\r\n\r\n        Play() {\r\n            this.Source.Play();\r\n        }\r\n\r\n        Pause() {\r\n            this.Source.Pause();\r\n        }\r\n    }\r\n\r\n    Fayde.CoreLibrary.add(MediaElement);\r\n\r\n    UIReaction<Media.Videos.VideoSource>(MediaElement.SourceProperty, (upd: VideoUpdater, ov, nv, video?: MediaElement) => {\r\n        video.OnSourceChanged(ov, nv);\r\n        if (!nv) {\r\n            upd.updateBounds();\r\n            upd.invalidate();\r\n        }\r\n        upd.invalidateMeasure();\r\n        upd.invalidateMetrics();\r\n    }, false);\r\n    UIReaction<minerva.Stretch>(MediaElement.StretchProperty, (upd: VideoUpdater, ov, nv) => {\r\n        upd.invalidateMeasure();\r\n        upd.invalidateMetrics();\r\n    }, false);\r\n}"
  },
  {
    "path": "src/Controls/Page.ts",
    "content": "/// <reference path=\"UserControl.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class Page extends UserControl {\r\n        static TitleProperty = DependencyProperty.Register(\"Title\", () => String, Page);\r\n        Title: string;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = Page;\r\n        }\r\n\r\n        static GetAsync(initiator: DependencyObject, url: string): Promise<Page> {\r\n            return Markup.Resolve(url)\r\n                .then(xm => {\r\n                    TimelineProfile.Parse(true, \"Page\");\r\n                    var page = Markup.Load<Page>(initiator.App, xm);\r\n                    TimelineProfile.Parse(false, \"Page\");\r\n                    if (!(page instanceof Controls.Page))\r\n                        throw new Error(\"Markup must be a Page.\");\r\n                    return page;\r\n                });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Page);\r\n}"
  },
  {
    "path": "src/Controls/Panel.ts",
    "content": "/// <reference path=\"../Core/FrameworkElement.ts\" />\r\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n/// <reference path=\"../Core/Providers/ImmutableStore.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    class PanelChildrenCollection extends XamlObjectCollection<UIElement> {\r\n        $$updaters: minerva.core.Updater[] = [];\r\n        AddingToCollection(value: UIElement, error: BError): boolean {\r\n            var panelNode = <PanelNode>this.XamlNode.ParentNode;\r\n            if (!panelNode.AttachVisualChild(value, error))\r\n                return false;\r\n            return super.AddingToCollection(value, error);\r\n        }\r\n        RemovedFromCollection(value: UIElement, isValueSafe: boolean) {\r\n            var panelNode = <PanelNode>this.XamlNode.ParentNode;\r\n            panelNode.DetachVisualChild(value, null);\r\n            super.RemovedFromCollection(value, isValueSafe);\r\n        }\r\n        _RaiseCleared (values: UIElement[]) {\r\n            this.$$updaters.length = 0;\r\n        }\r\n        _RaiseItemAdded(value: UIElement, index: number) {\r\n            this.$$updaters.splice(index, 0, value.XamlNode.LayoutUpdater);\r\n        }\r\n        _RaiseItemRemoved(value: UIElement, index: number) {\r\n            this.$$updaters.splice(index, 1);\r\n        }\r\n        _RaiseItemReplaced(removed: UIElement, added: UIElement, index: number) {\r\n            this.$$updaters.splice(index, 1, added.XamlNode.LayoutUpdater);\r\n        }\r\n    }\r\n\r\n    export class PanelNode extends FENode {\r\n        LayoutUpdater: minerva.controls.panel.PanelUpdater;\r\n        XObject: Panel;\r\n        constructor(xobj: Panel) {\r\n            super(xobj);\r\n        }\r\n        AttachVisualChild(uie: UIElement, error: BError): boolean {\r\n            this.OnVisualChildAttached(uie);\r\n            uie.XamlNode.SetIsLoaded(this.IsLoaded);\r\n            return true;\r\n        }\r\n        DetachVisualChild(uie: UIElement, error: BError): boolean {\r\n            this.OnVisualChildDetached(uie);\r\n            uie.XamlNode.SetIsLoaded(false);\r\n            return true;\r\n        }\r\n    }\r\n\r\n    export class Panel extends FrameworkElement {\r\n        XamlNode: PanelNode;\r\n        CreateNode(): PanelNode { return new PanelNode(this); }\r\n        CreateLayoutUpdater() { return new minerva.controls.panel.PanelUpdater(); }\r\n\r\n        static BackgroundProperty = DependencyProperty.Register(\"Background\", () => Media.Brush, Panel);\r\n        static ChildrenProperty = DependencyProperty.RegisterImmutable<XamlObjectCollection<UIElement>>(\"Children\", () => PanelChildrenCollection, Panel);\r\n        static ZIndexProperty = DependencyProperty.RegisterAttached(\"ZIndex\", () => Number, Panel, 0);\r\n        static GetZIndex(uie: UIElement): number { return uie.GetValue(Panel.ZIndexProperty); }\r\n        static SetZIndex(uie: UIElement, value: number) { uie.SetValue(Panel.ZIndexProperty, value); }\r\n        Background: Media.Brush;\r\n        Children: XamlObjectCollection<UIElement>;\r\n\r\n        constructor() {\r\n            super();\r\n            var coll = <PanelChildrenCollection>Panel.ChildrenProperty.Initialize(this);\r\n            this.XamlNode.LayoutUpdater.setChildren(coll.$$updaters);\r\n            var error = new BError();\r\n            this.XamlNode.SetSubtreeNode(coll.XamlNode, error);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Panel);\r\n    Markup.Content(Panel, Panel.ChildrenProperty);\r\n\r\n    module reactions {\r\n        UIReaction<minerva.IBrush>(Panel.BackgroundProperty, (upd, ov, nv) => {\r\n            if (nv !== ov) //nv === ov when child properties update\r\n                upd.updateBounds();\r\n            upd.invalidate();\r\n        });\r\n        UIReactionAttached<number>(Panel.ZIndexProperty, minerva.controls.panel.reactTo.zIndex);\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/PasswordBox.ts",
    "content": "/// <reference path=\"TextBoxBase.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class PasswordBox extends TextBoxBase {\r\n        static PasswordCharProperty = DependencyProperty.Register(\"PasswordChar\", () => String, PasswordBox, String.fromCharCode(9679));\r\n        static PasswordProperty = DependencyProperty.Register(\"Password\", () => String, PasswordBox);\r\n        PasswordChar: string;\r\n        Password: string;\r\n\r\n        constructor () {\r\n            super(Text.EmitChangedType.TEXT);\r\n            this.DefaultStyleKey = PasswordBox;\r\n\r\n            var proxy = this.$Proxy;\r\n            proxy.SyncSelectionStart = (value) => this.SetCurrentValue(PasswordBox.SelectionStartProperty, value);\r\n            proxy.SyncSelectionLength = (value) => this.SetCurrentValue(PasswordBox.SelectionLengthProperty, value);\r\n            proxy.SyncText = (value) => this.SetCurrentValue(PasswordBox.PasswordProperty, value);\r\n            this.$Advancer = new Internal.PasswordBoxCursorAdvancer(this.$Proxy);\r\n        }\r\n\r\n        get DisplayText (): string {\r\n            var result = \"\";\r\n            var count = this.$Proxy.text.length;\r\n            var pattern = this.PasswordChar;\r\n            while (count > 0) {\r\n                if (count & 1) result += pattern;\r\n                count >>= 1, pattern += pattern;\r\n            }\r\n            return result;\r\n        }\r\n\r\n    }\r\n    Fayde.CoreLibrary.add(PasswordBox);\r\n    TemplateVisualStates(PasswordBox,\r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" },\r\n        { GroupName: \"ValidationStates\", Name: \"Valid\" },\r\n        { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" },\r\n        { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" });\r\n\r\n    module reactions {\r\n        DPReaction<string>(PasswordBox.PasswordCharProperty, (pb: PasswordBox, ov, nv) => {\r\n            pb.$View.setText(pb.DisplayText);\r\n        }, false);\r\n        DPReaction<string>(PasswordBox.PasswordProperty, (pb: PasswordBox, ov, nv) => {\r\n            pb.$Proxy.setText(nv);\r\n            pb.$View.setText(pb.DisplayText);\r\n        }, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Primitives/ButtonBase.ts",
    "content": "/// <reference path=\"../ContentControl.ts\" />\r\n/// <reference path=\"../Enums.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export class ButtonBase extends ContentControl {\r\n        static ClickModeProperty = DependencyProperty.Register(\"ClickMode\", () => new Enum(ClickMode), ButtonBase, ClickMode.Release);\r\n        static IsPressedProperty = DependencyProperty.RegisterReadOnly(\"IsPressed\", () => Boolean, ButtonBase, false, (d, args) => (<ButtonBase>d).OnIsPressedChanged(args));\r\n        static IsFocusedProperty = DependencyProperty.RegisterReadOnly(\"IsFocused\", () => Boolean, ButtonBase, false);\r\n        static CommandProperty = DependencyProperty.RegisterCore(\"Command\", () => Input.ICommand_, ButtonBase, undefined, (d, args) => (<ButtonBase>d).OnCommandChanged(args));\r\n        static CommandParameterProperty = DependencyProperty.RegisterCore(\"CommandParameter\", () => Object, ButtonBase, undefined, (d, args) => (<ButtonBase>d).OnCommandParameterChanged(args));\r\n        ClickMode: ClickMode;\r\n        IsPressed: boolean;\r\n        IsFocused: boolean;\r\n        Command: Input.ICommand;\r\n        CommandParameter: any;\r\n        Click = new RoutedEvent<RoutedEventArgs>();\r\n\r\n        private _IsMouseCaptured: boolean = false;\r\n        private _TouchCaptures: number[];\r\n        private _IsMouseLeftButtonDown: boolean = false;\r\n        private _IsSpaceKeyDown: boolean = false;\r\n        _MousePosition: Point = new Point();\r\n        private _SuspendStateChanges: boolean = false;\r\n\r\n        constructor() {\r\n            super();\r\n            this.IsTabStop = true;\r\n        }\r\n\r\n        OnIsPressedChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs) {\r\n            if (!!e.NewValue)\r\n                return;\r\n            this._DoWithSuspend(() => {\r\n                this.SetCurrentValue(ButtonBase.IsFocusedProperty, false);\r\n                this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\r\n                this._IsMouseCaptured = false;\r\n                this._IsSpaceKeyDown = false;\r\n                this._IsMouseLeftButtonDown = false;\r\n            });\r\n        }\r\n        OnMouseEnter(e: Input.MouseEventArgs) {\r\n            super.OnMouseEnter(e);\r\n            this.UpdateVisualState();\r\n\r\n            if (this.ClickMode !== ClickMode.Hover || !this.IsEnabled)\r\n                return;\r\n\r\n            this._DoWithSuspend(() => {\r\n                this.SetCurrentValue(ButtonBase.IsPressedProperty, true);\r\n                this.OnClick();\r\n            });\r\n        }\r\n        OnMouseLeave(e: Input.MouseEventArgs) {\r\n            super.OnMouseLeave(e);\r\n            this.UpdateVisualState();\r\n\r\n            if (this.ClickMode !== ClickMode.Hover || !this.IsEnabled)\r\n                return;\r\n\r\n            this._DoWithSuspend(() => {\r\n                this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\r\n            });\r\n        }\r\n        OnMouseMove(e: Input.MouseEventArgs) {\r\n            super.OnMouseMove(e);\r\n\r\n            this._MousePosition = e.GetPosition(this);\r\n\r\n            if (this._IsMouseLeftButtonDown && this.IsEnabled && this.ClickMode !== ClickMode.Hover && this._IsMouseCaptured && !this._IsSpaceKeyDown) {\r\n                this.SetCurrentValue(ButtonBase.IsPressedProperty, this._IsValidPosition(this._MousePosition));\r\n            }\r\n        }\r\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs) {\r\n            super.OnMouseLeftButtonDown(e);\r\n\r\n            this._IsMouseLeftButtonDown = true;\r\n            if (!this.IsEnabled)\r\n                return;\r\n            var clickMode = this.ClickMode;\r\n            if (clickMode === ClickMode.Hover)\r\n                return;\r\n\r\n            e.Handled = true;\r\n            this._DoWithSuspend(() => {\r\n                this.Focus();\r\n                this._CaptureMouseInternal();\r\n                if (this._IsMouseCaptured)\r\n                    this.SetCurrentValue(ButtonBase.IsPressedProperty, true);\r\n            });\r\n\r\n            if (clickMode === ClickMode.Press)\r\n                this.OnClick();\r\n        }\r\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs) {\r\n            super.OnMouseLeftButtonDown(e);\r\n\r\n            this._IsMouseLeftButtonDown = false;\r\n            if (!this.IsEnabled)\r\n                return;\r\n            var clickMode = this.ClickMode;\r\n            if (clickMode === ClickMode.Hover)\r\n                return;\r\n\r\n            e.Handled = true;\r\n            if (!this._IsSpaceKeyDown && this.IsPressed && clickMode === ClickMode.Release)\r\n                this.OnClick();\r\n\r\n            if (!this._IsSpaceKeyDown) {\r\n                this._ReleaseMouseCaptureInternal();\r\n                this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\r\n            }\r\n        }\r\n\r\n        OnGotFocus(e: RoutedEventArgs) {\r\n            super.OnGotFocus(e);\r\n            this.SetCurrentValue(ButtonBase.IsFocusedProperty, true);\r\n            this.UpdateVisualState();\r\n        }\r\n        OnLostFocus(e: RoutedEventArgs) {\r\n            super.OnLostFocus(e);\r\n            this.SetCurrentValue(ButtonBase.IsFocusedProperty, false);\r\n\r\n            if (this.ClickMode === ClickMode.Hover)\r\n                return;\r\n\r\n            this._DoWithSuspend(() => {\r\n                this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\r\n                this._ReleaseMouseCaptureInternal();\r\n                this._IsSpaceKeyDown = false;\r\n            });\r\n        }\r\n\r\n        OnTouchMove(e: Input.TouchEventArgs) {\r\n            super.OnTouchMove(e);\r\n            if (!this.IsEnabled || e.Device.Captured !== this)\r\n                return;\r\n            var tp = e.GetTouchPoint(this);\r\n            this.SetCurrentValue(ButtonBase.IsPressedProperty, this._IsValidPosition(tp.Position));\r\n        }\r\n        OnTouchDown(e: Input.TouchEventArgs) {\r\n            super.OnTouchDown(e);\r\n            if (!this.IsEnabled)\r\n                return;\r\n            e.Handled = true;\r\n            this._DoWithSuspend(() => {\r\n                this.Focus();\r\n                if (e.Device.Capture(this))\r\n                    this.SetCurrentValue(ButtonBase.IsPressedProperty, true);\r\n            });\r\n\r\n            if (this.ClickMode === ClickMode.Press)\r\n                this.OnClick();\r\n        }\r\n        OnTouchUp(e: Input.TouchEventArgs) {\r\n            super.OnTouchUp(e);\r\n            if (!this.IsEnabled)\r\n                return;\r\n            e.Handled = true;\r\n            if (this.IsPressed && this.ClickMode === ClickMode.Release)\r\n                this.OnClick();\r\n            e.Device.ReleaseCapture(this);\r\n            this.SetCurrentValue(ButtonBase.IsPressedProperty, false);\r\n        }\r\n\r\n        OnClick() {\r\n            var cmd = this.Command;\r\n            var par = this.CommandParameter;\r\n            if (cmd != null) {\r\n                var canf = cmd.CanExecute;\r\n                if ((canf == null || typeof canf !== \"function\" || canf(par)) && (cmd.Execute && typeof cmd.Execute === \"function\"))\r\n                    cmd.Execute(par);\r\n            }\r\n\r\n            this.Click.raise(this, new RoutedEventArgs());\r\n        }\r\n\r\n        private _DoWithSuspend(action: () => void) {\r\n            this._SuspendStateChanges = true;\r\n            try {\r\n                action();\r\n            } finally {\r\n                this._SuspendStateChanges = false;\r\n                this.UpdateVisualState();\r\n            }\r\n        }\r\n\r\n        UpdateVisualState(useTransitions?: boolean) {\r\n            if (this._SuspendStateChanges)\r\n                return;\r\n            super.UpdateVisualState(useTransitions);\r\n        }\r\n        GoToStateCommon(gotoFunc: (state: string) => boolean): boolean {\r\n            if (!this.IsEnabled)\r\n                return gotoFunc(\"Disabled\");\r\n            if (this.IsPressed)\r\n                return gotoFunc(\"Pressed\");\r\n            if (this.IsMouseOver)\r\n                return gotoFunc(\"MouseOver\");\r\n            return gotoFunc(\"Normal\");\r\n        }\r\n\r\n        private _CaptureMouseInternal() {\r\n            if (!this._IsMouseCaptured)\r\n                this._IsMouseCaptured = this.CaptureMouse();\r\n        }\r\n        private _ReleaseMouseCaptureInternal() {\r\n            this.ReleaseMouseCapture();\r\n            this._IsMouseCaptured = false;\r\n        }\r\n        private _IsValidPosition(pos: Point): boolean {\r\n            return pos.x >= 0.0 && pos.x <= this.ActualWidth\r\n                && pos.y >= 0.0 && pos.y <= this.ActualHeight;\r\n        }\r\n\r\n        private OnCommandChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            var cmd = Input.ICommand_.as(args.OldValue);\r\n            if (cmd)\r\n                cmd.CanExecuteChanged.off(this.OnCommandCanExecuteChanged, this);\r\n\r\n            cmd = Input.ICommand_.as(args.NewValue);\r\n            if (cmd) {\r\n                cmd.CanExecuteChanged.on(this.OnCommandCanExecuteChanged, this);\r\n                this.IsEnabled = cmd.CanExecute(this.CommandParameter);\r\n            }\r\n        }\r\n        private OnCommandCanExecuteChanged(sender, e) {\r\n            this.IsEnabled = this.Command.CanExecute(this.CommandParameter);\r\n        }\r\n        private OnCommandParameterChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            var cmd = this.Command;\r\n            if (cmd)\r\n                this.IsEnabled = cmd.CanExecute(args.NewValue);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ButtonBase);\r\n}"
  },
  {
    "path": "src/Controls/Primitives/DragEventArgs.ts",
    "content": "/// <reference path=\"../../Core/RoutedEventArgs.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export class DragCompletedEventArgs extends RoutedEventArgs {\r\n        HorizontalChange: number;\r\n        VerticalChange: number;\r\n        Canceled: boolean;\r\n        constructor(horizontal: number, vertical: number, canceled: boolean) {\r\n            super();\r\n            Object.defineProperty(this, \"HorizontalChange\", { value: horizontal, writable: false });\r\n            Object.defineProperty(this, \"VerticalChange\", { value: vertical, writable: false });\r\n            Object.defineProperty(this, \"Canceled\", { value: canceled, writable: false });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DragCompletedEventArgs);\r\n\r\n    export class DragDeltaEventArgs extends RoutedEventArgs {\r\n        HorizontalChange: number;\r\n        VerticalChange: number;\r\n        constructor(horizontal: number, vertical: number) {\r\n            super();\r\n            Object.defineProperty(this, \"HorizontalChange\", { value: horizontal, writable: false });\r\n            Object.defineProperty(this, \"VerticalChange\", { value: vertical, writable: false });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DragDeltaEventArgs);\r\n\r\n    export class DragStartedEventArgs extends RoutedEventArgs {\r\n        HorizontalOffset: number;\r\n        VerticalOffset: number;\r\n        constructor(horizontal: number, vertical: number) {\r\n            super();\r\n            Object.defineProperty(this, \"HorizontalOffset\", { value: horizontal, writable: false });\r\n            Object.defineProperty(this, \"VerticalOffset\", { value: vertical, writable: false });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DragStartedEventArgs);\r\n}"
  },
  {
    "path": "src/Controls/Primitives/IScrollInfo.ts",
    "content": "module Fayde.Controls.Primitives {\r\n    export interface IScrollInfo {\r\n        ScrollOwner: ScrollViewer;\r\n\r\n        LineUp(): boolean;\r\n        LineDown(): boolean;\r\n        LineLeft(): boolean;\r\n        LineRight(): boolean;\r\n\r\n        MouseWheelUp(): boolean;\r\n        MouseWheelDown(): boolean;\r\n        MouseWheelLeft(): boolean;\r\n        MouseWheelRight(): boolean;\r\n\r\n        PageUp(): boolean;\r\n        PageDown(): boolean;\r\n        PageLeft(): boolean;\r\n        PageRight(): boolean;\r\n\r\n        MakeVisible(uie: UIElement, rectangle: minerva.Rect): minerva.Rect;\r\n\r\n        SetHorizontalOffset(offset: number): boolean;\r\n        SetVerticalOffset(offset: number): boolean;\r\n\r\n        CanHorizontallyScroll: boolean;\r\n        CanVerticallyScroll: boolean;\r\n        ExtentHeight: number;\r\n        ExtentWidth: number;\r\n        HorizontalOffset: number;\r\n        VerticalOffset: number;\r\n        ViewportHeight: number;\r\n        ViewportWidth: number;\r\n    }\r\n    export var IScrollInfo_ = new nullstone.Interface<IScrollInfo>(\"IScrollInfo\");\r\n}"
  },
  {
    "path": "src/Controls/Primitives/Overlay.ts",
    "content": "/// <reference path=\"../../Core/FrameworkElement\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    import OverlayUpdater = minerva.controls.overlay.OverlayUpdater;\r\n    var DEFAULT_MASK_BRUSH = \"#33000000\";\r\n\r\n    export class OverlayNode extends FENode {\r\n        LayoutUpdater: OverlayUpdater;\r\n        XObject: Overlay;\r\n\r\n        private _Layer: Panel = null;\r\n        private _Mask: Border = null;\r\n\r\n        EnsureLayer () {\r\n            if (!this._Layer) {\r\n                this._Layer = new Panel();\r\n                this.LayoutUpdater.setLayer(this._Layer.XamlNode.LayoutUpdater);\r\n            }\r\n            return this._Layer;\r\n        }\r\n\r\n        EnsureMask () {\r\n            if (!this._Mask) {\r\n                this._Mask = new Border();\r\n                this._Mask.MouseLeftButtonDown.on(this._OnMaskMouseDown, this);\r\n                this.UpdateMask();\r\n            }\r\n            return this._Mask;\r\n        }\r\n\r\n        private _OnMaskMouseDown (sender, args: Input.MouseButtonEventArgs) {\r\n            this.XObject.SetCurrentValue(Overlay.IsOpenProperty, false);\r\n        }\r\n\r\n        UpdateMask () {\r\n            var mask = this._Mask;\r\n            if (mask) {\r\n                var mb = this.XObject.MaskBrush;\r\n                if (mb === undefined)\r\n                    mb = nullstone.convertAnyToType(DEFAULT_MASK_BRUSH, Media.Brush);\r\n                this._Mask.Background = mb;\r\n            }\r\n        }\r\n\r\n        OnIsAttachedChanged (newIsAttached: boolean) {\r\n            super.OnIsAttachedChanged(newIsAttached);\r\n            this.RegisterInitiator(this.VisualParentNode.XObject);\r\n            if (newIsAttached) {\r\n                this.EnsureLayer().Children.Insert(0, this.EnsureMask());\r\n            }\r\n            if (!newIsAttached && this.XObject.IsOpen)\r\n                this.XObject.IsOpen = false;\r\n        }\r\n\r\n        RegisterInitiator (initiator: UIElement) {\r\n            if (!(initiator instanceof UIElement))\r\n                return;\r\n            this.LayoutUpdater.setInitiator(initiator.XamlNode.LayoutUpdater);\r\n        }\r\n    }\r\n\r\n    export class Overlay extends FrameworkElement {\r\n        XamlNode: OverlayNode;\r\n\r\n        CreateNode (): OverlayNode {\r\n            return new OverlayNode(this);\r\n        }\r\n\r\n        CreateLayoutUpdater (): OverlayUpdater {\r\n            return new OverlayUpdater();\r\n        }\r\n\r\n        static VisualProperty = DependencyProperty.Register(\"Visual\", () => UIElement, Overlay, undefined, (d: Overlay, args) => d._OnVisualChanged(args));\r\n        static VisualUriProperty = DependencyProperty.Register(\"VisualUri\", () => Uri, Overlay, undefined, (d: Overlay, args) => d._OnVisualUriChanged(args));\r\n        static VisualViewModelProperty = DependencyProperty.Register(\"VisualViewModel\", () => Object, Overlay, undefined, (d: Overlay, args) => d._OnVisualViewModelChanged(args));\r\n        static IsOpenProperty = DependencyProperty.Register(\"IsOpen\", () => Boolean, Overlay, undefined, (d: Overlay, args) => d._OnIsOpenChanged(args));\r\n        static MaskBrushProperty = DependencyProperty.Register(\"MaskBrush\", () => Media.Brush, Overlay);\r\n        static ClosedCommandProperty = DependencyProperty.Register(\"ClosedCommand\", () => Input.ICommand_, Overlay);\r\n        Visual: UIElement;\r\n        VisualUri: Uri;\r\n        VisualViewModel: any;\r\n        IsOpen: boolean;\r\n        MaskBrush: Media.Brush;\r\n        ClosedCommand: Input.ICommand;\r\n\r\n        Opened = new nullstone.Event<nullstone.IEventArgs>();\r\n        Closed = new nullstone.Event<OverlayClosedEventArgs>();\r\n\r\n        constructor () {\r\n            super();\r\n            this.DefaultStyleKey = Overlay;\r\n            this.InitBindings();\r\n        }\r\n\r\n        InitBindings () {\r\n            this.SetBinding(Overlay.VisualViewModelProperty, new Data.Binding(\"OverlayDataContext\"));\r\n            var binding = new Data.Binding(\"IsOpen\");\r\n            binding.Mode = Data.BindingMode.TwoWay;\r\n            this.SetBinding(Overlay.IsOpenProperty, binding);\r\n            this.SetBinding(Overlay.ClosedCommandProperty, new Data.Binding(\"ClosedCommand\"));\r\n        }\r\n\r\n        private _ContentControlForUri: ContentControl = null;\r\n        private _IgnoreClose = false;\r\n\r\n        private _OnVisualChanged (args: IDependencyPropertyChangedEventArgs) {\r\n            if (this.VisualUri != null)\r\n                throw new Error(\"Cannot set Visual if VisualUri is set.\");\r\n            var layer = this.XamlNode.EnsureLayer();\r\n            if (args.OldValue)\r\n                layer.Children.Remove(args.OldValue);\r\n            if (args.NewValue)\r\n                layer.Children.Add(args.NewValue);\r\n        }\r\n\r\n        private _OnVisualUriChanged (args: IDependencyPropertyChangedEventArgs) {\r\n            if (this.Visual != null)\r\n                throw new Error(\"Cannot set VisualUri if Visual is set.\");\r\n            if (args.NewValue)\r\n                this._SetVisualUri(args.NewValue);\r\n            else\r\n                this._ClearVisualUri();\r\n        }\r\n\r\n        private _OnVisualViewModelChanged (args: IDependencyPropertyChangedEventArgs) {\r\n            var cc: ContentControl;\r\n            var visual: UIElement;\r\n            if (!!(cc = this._ContentControlForUri))\r\n                cc.DataContext = args.NewValue;\r\n            else if (!!(visual = this.Visual))\r\n                visual.DataContext = args.NewValue;\r\n        }\r\n\r\n        private _SetVisualUri (uri: Uri) {\r\n            var cc = this._ContentControlForUri;\r\n            if (!cc) {\r\n                var layer = this.XamlNode.EnsureLayer();\r\n                cc = this._ContentControlForUri = new ContentControl();\r\n                cc.SetValue(OverlayOwnerProperty, this);\r\n                layer.Children.Add(cc);\r\n            }\r\n            cc.ContentUri = uri;\r\n            var vm = this.VisualViewModel;\r\n            if (vm !== undefined)\r\n                cc.DataContext = vm;\r\n        }\r\n\r\n        private _ClearVisualUri () {\r\n            var cc = this._ContentControlForUri;\r\n            if (!cc)\r\n                return;\r\n            var layer = this.XamlNode.EnsureLayer();\r\n            layer.Children.Remove(cc);\r\n            cc.ContentUri = null;\r\n            cc.DataContext = undefined;\r\n        }\r\n\r\n        private _OnIsOpenChanged (args: IDependencyPropertyChangedEventArgs) {\r\n            var ov = args.OldValue || false;\r\n            var nv = args.NewValue || false;\r\n            if (ov === nv)\r\n                return;\r\n            if (nv === true) {\r\n                this._DoOpen();\r\n            } else {\r\n                this._DoClose();\r\n            }\r\n        }\r\n\r\n        private _DoOpen () {\r\n            var upd = this.XamlNode.LayoutUpdater;\r\n            minerva.controls.overlay.reactTo.isOpen(upd, false, true);\r\n            this.Opened.raise(this, null);\r\n        }\r\n\r\n        private _DoClose (result?: boolean) {\r\n            if (this._IgnoreClose)\r\n                return;\r\n            var upd = this.XamlNode.LayoutUpdater;\r\n            minerva.controls.overlay.reactTo.isOpen(upd, true, false);\r\n            if (result === undefined)\r\n                result = this._GetDialogResult();\r\n            var parameter: MVVM.IOverlayCompleteParameters = {\r\n                Result: result,\r\n                Data: this.VisualViewModel\r\n            };\r\n            var cmd = this.ClosedCommand;\r\n            if (cmd && (!cmd.CanExecute || cmd.CanExecute(parameter)))\r\n                cmd.Execute(parameter);\r\n            this.Closed.raise(this, new OverlayClosedEventArgs(parameter.Result, parameter.Data));\r\n        }\r\n\r\n        Open () {\r\n            this.IsOpen = true;\r\n        }\r\n\r\n        Close (result?: boolean) {\r\n            if (this.IsOpen !== true)\r\n                return;\r\n            this._IgnoreClose = true;\r\n            try {\r\n                this.SetCurrentValue(Overlay.IsOpenProperty, false);\r\n            } finally {\r\n                this._IgnoreClose = false;\r\n            }\r\n            this._DoClose(result);\r\n        }\r\n\r\n        private _GetDialogResult (): boolean {\r\n            var visual = this.Visual || this._ContentControlForUri;\r\n            if (!visual)\r\n                return undefined;\r\n            var dialog = VisualTreeHelper.GetChildrenCount(visual) > 0 ? VisualTreeHelper.GetChild(visual, 0) : null;\r\n            return (dialog instanceof Dialog) ? (<Dialog>dialog).DialogResult : null;\r\n        }\r\n\r\n        static FindOverlay (visual: UIElement): Overlay {\r\n            for (var en = VisualTreeEnum.GetAncestors(visual).getEnumerator(); en.moveNext();) {\r\n                var owner = en.current.GetValue(OverlayOwnerProperty);\r\n                if (owner instanceof Overlay)\r\n                    return owner;\r\n            }\r\n            return undefined;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Overlay);\r\n    Markup.Content(Overlay, Overlay.VisualProperty);\r\n\r\n    module reactions {\r\n        DPReaction<Media.Brush>(Overlay.MaskBrushProperty, (overlay: Overlay, ov, nv) => {\r\n            overlay.XamlNode.UpdateMask();\r\n        });\r\n    }\r\n\r\n    var OverlayOwnerProperty = DependencyProperty.RegisterAttached(\"OverlayOwner\", () => Overlay, Overlay);\r\n}"
  },
  {
    "path": "src/Controls/Primitives/OverlayClosedEventArgs.ts",
    "content": "module Fayde.Controls.Primitives {\r\n    export class OverlayClosedEventArgs implements nullstone.IEventArgs {\r\n        Result: boolean;\r\n        Data: any;\r\n\r\n        constructor (result: boolean, data: any) {\r\n            Object.defineProperties(this, {\r\n                \"Result\": {\r\n                    value: result,\r\n                    writable: false\r\n                },\r\n                \"Data\": {\r\n                    value: data,\r\n                    writable: false\r\n                }\r\n            });\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Primitives/Popup.ts",
    "content": "/// <reference path=\"../../Core/FrameworkElement.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    import PopupUpdater = minerva.controls.popup.PopupUpdater;\r\n\r\n    export class PopupNode extends FENode {\r\n        LayoutUpdater: PopupUpdater;\r\n        XObject: Popup;\r\n\r\n        ClickedOutside = new nullstone.Event<nullstone.IEventArgs>();\r\n\r\n        OnIsAttachedChanged (newIsAttached: boolean) {\r\n            super.OnIsAttachedChanged(newIsAttached);\r\n            this.RegisterInitiator(this.VisualParentNode.XObject);\r\n            if (!newIsAttached && this.XObject.IsOpen)\r\n                this.XObject.IsOpen = false;\r\n        }\r\n\r\n        private _Overlay: Canvas = null;\r\n        private _Catcher: Canvas = null;\r\n\r\n        EnsureOverlay (): Canvas {\r\n            if (!this._Overlay) {\r\n                this._Overlay = new Canvas();\r\n                this.LayoutUpdater.setLayer(this._Overlay.XamlNode.LayoutUpdater);\r\n            }\r\n            return this._Overlay;\r\n        }\r\n\r\n        EnsureCatcher (): Canvas {\r\n            var catcher = this._Catcher;\r\n            if (this.ClickedOutside.has && !catcher) {\r\n                catcher = this._Catcher = new Canvas();\r\n                catcher.Background = Media.SolidColorBrush.FromColor(Color.FromRgba(255, 255, 255, 0));\r\n                catcher.LayoutUpdated.on(this.UpdateCatcher, this);\r\n                catcher.MouseLeftButtonDown.on(this._RaiseClickedOutside, this);\r\n                this.EnsureOverlay().Children.Insert(0, catcher);\r\n            }\r\n            return catcher;\r\n        }\r\n\r\n        UpdateCatcher () {\r\n            var root = this._Overlay;\r\n            if (!root)\r\n                return;\r\n            var surface = this.LayoutUpdater.tree.initiatorSurface;\r\n            if (!surface)\r\n                return;\r\n            root.Width = surface.width;\r\n            root.Height = surface.height;\r\n            var catcher = this._Catcher;\r\n            if (!catcher)\r\n                return;\r\n            catcher.Width = root.Width;\r\n            catcher.Height = root.Height;\r\n        }\r\n\r\n        private _RaiseClickedOutside (sender, e) {\r\n            this.ClickedOutside.raise(this, null);\r\n        }\r\n\r\n        RegisterInitiator (initiator: UIElement) {\r\n            if (!(initiator instanceof UIElement))\r\n                return;\r\n            this.LayoutUpdater.setInitiator(initiator.XamlNode.LayoutUpdater);\r\n        }\r\n    }\r\n\r\n    export class Popup extends FrameworkElement {\r\n        XamlNode: PopupNode;\r\n        CreateNode (): PopupNode { return new PopupNode(this); }\r\n        CreateLayoutUpdater () { return new PopupUpdater(); }\r\n\r\n        static ChildProperty = DependencyProperty.Register(\"Child\", () => UIElement, Popup);\r\n        static HorizontalOffsetProperty = DependencyProperty.Register(\"HorizontalOffset\", () => Number, Popup, 0.0);\r\n        static VerticalOffsetProperty = DependencyProperty.Register(\"VerticalOffset\", () => Number, Popup, 0.0);\r\n        static IsOpenProperty = DependencyProperty.Register(\"IsOpen\", () => Boolean, Popup, false);\r\n        Child: UIElement;\r\n        HorizontalOffset: number;\r\n        VerticalOffset: number;\r\n        IsOpen: boolean;\r\n\r\n        Opened = new nullstone.Event<nullstone.IEventArgs>();\r\n        Closed = new nullstone.Event<nullstone.IEventArgs>();\r\n\r\n        WatchOutsideClick (callback: () => void, closure: any) {\r\n            this.XamlNode.ClickedOutside.on(callback, closure);\r\n            this.XamlNode.EnsureCatcher();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Popup);\r\n    Markup.Content(Popup, Popup.ChildProperty);\r\n\r\n    module reactions {\r\n        UIReaction<boolean>(Popup.IsOpenProperty, (upd, ov, nv, popup?: Popup) => {\r\n            if (nv === true) {\r\n                popup.Opened.raiseAsync(popup, null);\r\n                popup.XamlNode.UpdateCatcher();\r\n            } else {\r\n                popup.Closed.raiseAsync(popup, null);\r\n            }\r\n            minerva.controls.popup.reactTo.isOpen(upd, ov, nv);\r\n        }, false);\r\n        UIReaction<UIElement>(Popup.ChildProperty, (upd, ov, nv, popup?: Popup) => {\r\n            var overlay = popup.XamlNode.EnsureOverlay();\r\n            if (ov) {\r\n                Providers.InheritedStore.ClearInheritedOnRemove(popup, ov.XamlNode);\r\n                overlay.Children.Remove(ov);\r\n            }\r\n            upd.setChild(nv ? nv.XamlNode.LayoutUpdater : null);\r\n            if (nv) {\r\n                popup.XamlNode.EnsureCatcher();\r\n                overlay.Children.Add(nv);\r\n                Providers.InheritedStore.PropagateInheritedOnAdd(popup, nv.XamlNode);\r\n            }\r\n        }, false, false);\r\n        UIReaction<number>(Popup.HorizontalOffsetProperty, minerva.controls.popup.reactTo.horizontalOffset, false);\r\n        UIReaction<number>(Popup.VerticalOffsetProperty, minerva.controls.popup.reactTo.verticalOffset, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Primitives/RangeBase.ts",
    "content": "/// <reference path=\"../Control.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export class RangeBase extends Controls.Control {\r\n        static MinimumProperty = DependencyProperty.RegisterFull(\"Minimum\", () => Number, RangeBase, 0, (d, args) => (<RangeBase>d)._Coercer.OnMinimumChanged(args.OldValue, args.NewValue), undefined, false, numberValidator);\r\n        static MaximumProperty = DependencyProperty.RegisterFull(\"Maximum\", () => Number, RangeBase, 1, (d, args) => (<RangeBase>d)._Coercer.OnMaximumChanged(args.OldValue, args.NewValue), undefined, false, numberValidator);\r\n        static LargeChangeProperty = DependencyProperty.RegisterFull(\"LargeChange\", () => Number, RangeBase, 1, undefined, undefined, false, changeValidator);\r\n        static SmallChangeProperty = DependencyProperty.RegisterFull(\"SmallChange\", () => Number, RangeBase, 0.1, undefined, undefined, false, changeValidator);\r\n        static ValueProperty = DependencyProperty.RegisterFull(\"Value\", () => Number, RangeBase, 0, (d, args) => (<RangeBase>d)._Coercer.OnValueChanged(args.OldValue, args.NewValue), undefined, false, numberValidator);\r\n\r\n        Minimum: number;\r\n        Maximum: number;\r\n        SmallChange: number;\r\n        LargeChange: number;\r\n        Value: number;\r\n        \r\n        OnMinimumChanged(oldMin: number, newMin: number) { }\r\n        OnMaximumChanged(oldMax: number, newMax: number) { }\r\n        OnValueChanged(oldVal: number, newVal: number) {\r\n            this.ValueChanged.raise(this, new RoutedPropertyChangedEventArgs(oldVal, newVal));\r\n        }\r\n        ValueChanged = new RoutedPropertyChangedEvent<number>();\r\n\r\n        private _Coercer: Internal.IRangeCoercer;\r\n\r\n        constructor() {\r\n            super();\r\n            this._Coercer = new Internal.RangeCoercer(this, \r\n                (val) => this.SetCurrentValue(RangeBase.MaximumProperty, val),\r\n                (val) => this.SetCurrentValue(RangeBase.ValueProperty, val));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RangeBase);\r\n\r\n    function numberValidator(d: DependencyObject, propd: DependencyProperty, value: any): boolean {\r\n        if (typeof value !== \"number\")\r\n            return false;\r\n        if (isNaN(value))\r\n            return false;\r\n        if (!isFinite(value))\r\n            return false;\r\n        return true;\r\n    }\r\n    function changeValidator(d: DependencyObject, propd: DependencyProperty, value: any): boolean {\r\n        if (!numberValidator(d, propd, value))\r\n            return false;\r\n        return value >= 0;\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Primitives/RepeatButton.ts",
    "content": "/// <reference path=\"ButtonBase.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export class RepeatButton extends ButtonBase {\r\n        static DelayProperty = DependencyProperty.Register(\"Delay\", () => Number, RepeatButton, 500, (d: RepeatButton, args) => d.OnDelayChanged(args));\r\n        static IntervalProperty = DependencyProperty.Register(\"Interval\", () => Number, RepeatButton, 33, (d: RepeatButton, args) => d.OnIntervalChanged(args));\r\n        Delay: number;\r\n        Interval: number;\r\n\r\n        private _KeyboardCausingRepeat: boolean = false;\r\n        private _MouseCausingRepeat: boolean = false;\r\n        _MousePosition: Point = null;\r\n        private _IntervalID: number = null;\r\n        private _NewInterval: number = null;\r\n\r\n        constructor() {\r\n            super();\r\n            this.ClickMode = ClickMode.Press;\r\n            this.DefaultStyleKey = RepeatButton;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        OnDelayChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            if (args.NewValue < 0)\r\n                throw new ArgumentException(\"Delay Property cannot be negative.\");\r\n        }\r\n        OnIntervalChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            if (args.NewValue < 0)\r\n                throw new ArgumentException(\"Interval Property cannot be negative.\");\r\n            this._NewInterval = args.NewValue;\r\n        }\r\n\r\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs) {\r\n            super.OnIsEnabledChanged(e);\r\n            this._KeyboardCausingRepeat = false;\r\n            this._MouseCausingRepeat = false;\r\n            this._UpdateRepeatState();\r\n        }\r\n        OnKeyDown(e: Input.KeyEventArgs) {\r\n            if (e.Key === Input.Key.Space && this.ClickMode !== ClickMode.Hover) {\r\n                this._KeyboardCausingRepeat = true;\r\n                this._UpdateRepeatState();\r\n            }\r\n            super.OnKeyDown(e);\r\n        }\r\n        OnKeyUp(e: Input.KeyEventArgs) {\r\n            super.OnKeyUp(e);\r\n            if (e.Key === Input.Key.Space && this.ClickMode !== ClickMode.Hover) {\r\n                this._KeyboardCausingRepeat = false;\r\n                this._UpdateRepeatState();\r\n            }\r\n            this.UpdateVisualState();\r\n        }\r\n        OnLostFocus(e: RoutedEventArgs) {\r\n            super.OnLostFocus(e);\r\n            if (this.ClickMode !== ClickMode.Hover) {\r\n                this._KeyboardCausingRepeat = false;\r\n                this._MouseCausingRepeat = false;\r\n                this._UpdateRepeatState();\r\n            }\r\n        }\r\n        OnMouseEnter(e: Input.MouseEventArgs) {\r\n            super.OnMouseEnter(e);\r\n            if (this.ClickMode === ClickMode.Hover) {\r\n                this._MouseCausingRepeat = true;\r\n                this._UpdateRepeatState();\r\n            }\r\n            this.UpdateVisualState();\r\n            this._UpdateMousePosition(e);\r\n        }\r\n        OnMouseLeave(e: Input.MouseEventArgs) {\r\n            super.OnMouseLeave(e);\r\n            if (this.ClickMode === ClickMode.Hover) {\r\n                this._MouseCausingRepeat = false;\r\n                this._UpdateRepeatState();\r\n            }\r\n            this.UpdateVisualState();\r\n        }\r\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs) {\r\n            if (e.Handled)\r\n                return;\r\n            super.OnMouseLeftButtonDown(e);\r\n            if (this.ClickMode !== ClickMode.Hover) {\r\n                this._MouseCausingRepeat = true;\r\n                this._UpdateRepeatState();\r\n            }\r\n        }\r\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs) {\r\n            if (e.Handled)\r\n                return;\r\n            super.OnMouseLeftButtonUp(e);\r\n            if (this.ClickMode !== ClickMode.Hover) {\r\n                this._MouseCausingRepeat = false;\r\n                this._UpdateRepeatState();\r\n            }\r\n            this.UpdateVisualState();\r\n        }\r\n        OnMouseMove(e: Input.MouseEventArgs) {\r\n            this._UpdateMousePosition(e);\r\n        }\r\n\r\n        private _UpdateMousePosition(e: Input.MouseEventArgs) {\r\n            var curNode: XamlNode = this.XamlNode;\r\n            var parentNode: FENode = <FENode>curNode;\r\n            while (curNode instanceof FENode) {\r\n                parentNode = <FENode>curNode;\r\n                curNode = curNode.ParentNode;\r\n            }\r\n            this._MousePosition = e.GetPosition(parentNode.XObject);\r\n        }\r\n\r\n        private _UpdateRepeatState() {\r\n            if (this._MouseCausingRepeat || this._KeyboardCausingRepeat) {\r\n                if (this._IntervalID == null)\r\n                    this._IntervalID = window.setInterval(() => this._StartRepeatingAfterDelay(), this.Delay);\r\n            } else {\r\n                if (this._IntervalID != null)\r\n                    window.clearInterval(this._IntervalID);\r\n                this._IntervalID = null;\r\n            }\r\n        }\r\n\r\n        private _StartRepeatingAfterDelay() {\r\n            window.clearInterval(this._IntervalID);\r\n            this._IntervalID = window.setInterval(() => this._OnTimeout(), this.Interval);\r\n        }\r\n        private _OnTimeout() {\r\n            if (this._NewInterval != null) {\r\n                window.clearInterval(this._IntervalID);\r\n                this._IntervalID = window.setInterval(() => this._OnTimeout(), this._NewInterval);\r\n                this._NewInterval = null;\r\n            }\r\n\r\n            if (!this.IsPressed)\r\n                return;\r\n\r\n            if (this._KeyboardCausingRepeat) {\r\n                this.OnClick();\r\n                return;\r\n            }\r\n\r\n            var els = VisualTreeHelper.FindElementsInHostCoordinates(this._MousePosition, this);\r\n            if (els.indexOf(this) > -1) {\r\n                this.OnClick();\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RepeatButton);\r\n    TemplateVisualStates(RepeatButton, \r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Pressed\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" });\r\n}"
  },
  {
    "path": "src/Controls/Primitives/ScrollBar.ts",
    "content": "/// <reference path=\"RangeBase.ts\" />\r\n/// <reference path=\"RepeatButton.ts\" />\r\n/// <reference path=\"Thumb.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export class ScrollBar extends RangeBase {\r\n        private _DragValue: number = 0;\r\n\r\n        Scroll = new RoutedEvent<ScrollEventArgs>();\r\n\r\n        static OrientationProperty = DependencyProperty.Register(\"Orientation\", () => new Enum(Orientation), ScrollBar, Orientation.Horizontal, (d, args) => (<ScrollBar>d)._OnOrientationChanged());\r\n        static ViewportSizeProperty = DependencyProperty.Register(\"ViewportSize\", () => Number, ScrollBar, 0, (d, args) => (<ScrollBar>d)._UpdateTrackLayout());\r\n        Orientation: Orientation;\r\n        ViewportSize: number;\r\n\r\n        get IsDragging(): boolean {\r\n            if (this.$HorizontalThumb)\r\n                return this.$HorizontalThumb.IsDragging;\r\n            if (this.$VerticalThumb)\r\n                return this.$VerticalThumb.IsDragging;\r\n            return false;\r\n        }\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = ScrollBar;\r\n            this.SizeChanged.on(this._HandleSizeChanged, this);\r\n        }\r\n\r\n        private $HorizontalTemplate: FrameworkElement;\r\n        private $HorizontalSmallIncrease: RepeatButton;\r\n        private $HorizontalSmallDecrease: RepeatButton;\r\n        private $HorizontalLargeIncrease: RepeatButton;\r\n        private $HorizontalLargeDecrease: RepeatButton;\r\n        private $HorizontalThumb: Thumb;\r\n\r\n        private $VerticalTemplate: FrameworkElement;\r\n        private $VerticalSmallIncrease: RepeatButton;\r\n        private $VerticalSmallDecrease: RepeatButton;\r\n        private $VerticalLargeIncrease: RepeatButton;\r\n        private $VerticalLargeDecrease: RepeatButton;\r\n        private $VerticalThumb: Thumb;\r\n        \r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.$HorizontalTemplate = <FrameworkElement>this.GetTemplateChild(\"HorizontalRoot\", FrameworkElement);\r\n            this.$HorizontalLargeIncrease = <RepeatButton>this.GetTemplateChild(\"HorizontalLargeIncrease\", RepeatButton);\r\n            this.$HorizontalLargeDecrease = <RepeatButton>this.GetTemplateChild(\"HorizontalLargeDecrease\", RepeatButton);\r\n            this.$HorizontalSmallIncrease = <RepeatButton>this.GetTemplateChild(\"HorizontalSmallIncrease\", RepeatButton);\r\n            this.$HorizontalSmallDecrease = <RepeatButton>this.GetTemplateChild(\"HorizontalSmallDecrease\", RepeatButton);\r\n            this.$HorizontalThumb = <Thumb>this.GetTemplateChild(\"HorizontalThumb\", Thumb);\r\n            this.$VerticalTemplate = <FrameworkElement>this.GetTemplateChild(\"VerticalRoot\", FrameworkElement);\r\n            this.$VerticalLargeIncrease = <RepeatButton>this.GetTemplateChild(\"VerticalLargeIncrease\", RepeatButton);\r\n            this.$VerticalLargeDecrease = <RepeatButton>this.GetTemplateChild(\"VerticalLargeDecrease\", RepeatButton);\r\n            this.$VerticalSmallIncrease = <RepeatButton>this.GetTemplateChild(\"VerticalSmallIncrease\", RepeatButton);\r\n            this.$VerticalSmallDecrease = <RepeatButton>this.GetTemplateChild(\"VerticalSmallDecrease\", RepeatButton);\r\n            this.$VerticalThumb = <Thumb>this.GetTemplateChild(\"VerticalThumb\", Thumb);\r\n\r\n            if (this.$HorizontalThumb) {\r\n                this.$HorizontalThumb.DragStarted.on(this._OnThumbDragStarted, this);\r\n                this.$HorizontalThumb.DragDelta.on(this._OnThumbDragDelta, this);\r\n                this.$HorizontalThumb.DragCompleted.on(this._OnThumbDragCompleted, this);\r\n            }\r\n            if (this.$HorizontalLargeIncrease) {\r\n                this.$HorizontalLargeIncrease.Click.on(this._LargeIncrement, this);\r\n            }\r\n            if (this.$HorizontalLargeDecrease) {\r\n                this.$HorizontalLargeDecrease.Click.on(this._LargeDecrement, this);\r\n            }\r\n            if (this.$HorizontalSmallIncrease) {\r\n                this.$HorizontalSmallIncrease.Click.on(this._SmallIncrement, this);\r\n            }\r\n            if (this.$HorizontalSmallDecrease) {\r\n                this.$HorizontalSmallDecrease.Click.on(this._SmallDecrement, this);\r\n            }\r\n            if (this.$VerticalThumb) {\r\n                this.$VerticalThumb.DragStarted.on(this._OnThumbDragStarted, this);\r\n                this.$VerticalThumb.DragDelta.on(this._OnThumbDragDelta, this);\r\n                this.$VerticalThumb.DragCompleted.on(this._OnThumbDragCompleted, this);\r\n            }\r\n            if (this.$VerticalLargeIncrease) {\r\n                this.$VerticalLargeIncrease.Click.on(this._LargeIncrement, this);\r\n            }\r\n            if (this.$VerticalLargeDecrease) {\r\n                this.$VerticalLargeDecrease.Click.on(this._LargeDecrement, this);\r\n            }\r\n            if (this.$VerticalSmallIncrease) {\r\n                this.$VerticalSmallIncrease.Click.on(this._SmallIncrement, this);\r\n            }\r\n            if (this.$VerticalSmallDecrease) {\r\n                this.$VerticalSmallDecrease.Click.on(this._SmallDecrement, this);\r\n            }\r\n\r\n            this._OnOrientationChanged();\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        OnMaximumChanged(oldMax: number, newMax: number) {\r\n            super.OnMaximumChanged(oldMax, newMax);\r\n            this._UpdateTrackLayout();\r\n        }\r\n        OnMinimumChanged(oldMin: number, newMin: number) {\r\n            super.OnMinimumChanged(oldMin, newMin);\r\n            this._UpdateTrackLayout();\r\n        }\r\n        OnValueChanged(oldValue: number, newValue: number) {\r\n            super.OnValueChanged(oldValue, newValue);\r\n            this._UpdateTrackLayout();\r\n        }\r\n\r\n        private _OnThumbDragStarted(sender, e: DragStartedEventArgs) {\r\n            this._DragValue = this.Value;\r\n        }\r\n        private _OnThumbDragDelta(sender, e: DragDeltaEventArgs) {\r\n            var change = 0;\r\n            var zoomFactor = 1; //TODO: FullScreen?\r\n            var num = zoomFactor;\r\n            var max = this.Maximum;\r\n            var min = this.Minimum;\r\n            var diff = max - min;\r\n            var trackLength = this._GetTrackLength();\r\n            var isHorizontal = this.Orientation === Orientation.Horizontal;\r\n            if (this.$VerticalThumb && !isHorizontal) {\r\n                change = num * e.VerticalChange / (trackLength - this.$VerticalThumb.ActualHeight) * diff;\r\n            }\r\n            if (this.$HorizontalThumb && isHorizontal) {\r\n                change = num * e.HorizontalChange / (trackLength - this.$HorizontalThumb.ActualWidth) * diff;\r\n            }\r\n            if (!isNaN(change) && isFinite(change)) {\r\n                this._DragValue += change;\r\n                var num1 = Math.min(max, Math.max(min, this._DragValue));\r\n                if (num1 !== this.Value) {\r\n                    this.Value = num1;\r\n                    this._RaiseScroll(ScrollEventType.ThumbTrack);\r\n                }\r\n            }\r\n        }\r\n        private _OnThumbDragCompleted(sender, e: DragCompletedEventArgs) {\r\n            this._RaiseScroll(ScrollEventType.EndScroll);\r\n        }\r\n\r\n        private _SmallDecrement(sender, e: RoutedEventArgs) {\r\n            var curValue = this.Value;\r\n            var num = Math.max(curValue - this.SmallChange, this.Minimum);\r\n            if (curValue !== num) {\r\n                this.SetCurrentValue(RangeBase.ValueProperty, num);\r\n                this._RaiseScroll(ScrollEventType.SmallDecrement);\r\n            }\r\n        }\r\n        private _SmallIncrement(sender, e: RoutedEventArgs) {\r\n            var curValue = this.Value;\r\n            var num = Math.min(curValue + this.SmallChange, this.Maximum);\r\n            if (curValue !== num) {\r\n                this.SetCurrentValue(RangeBase.ValueProperty, num);\r\n                this._RaiseScroll(ScrollEventType.SmallIncrement);\r\n            }\r\n        }\r\n        private _LargeDecrement(sender, e: RoutedEventArgs) {\r\n            var curValue = this.Value;\r\n            var num = Math.max(curValue - this.LargeChange, this.Minimum);\r\n            if (curValue !== num) {\r\n                this.SetCurrentValue(RangeBase.ValueProperty, num);\r\n                this._RaiseScroll(ScrollEventType.LargeDecrement);\r\n            }\r\n        }\r\n        private _LargeIncrement(sender, e: RoutedEventArgs) {\r\n            var curValue = this.Value;\r\n            var num = Math.min(curValue + this.LargeChange, this.Maximum);\r\n            if (curValue !== num) {\r\n                this.SetCurrentValue(RangeBase.ValueProperty, num);\r\n                this._RaiseScroll(ScrollEventType.LargeIncrement);\r\n            }\r\n        }\r\n\r\n        private _HandleSizeChanged(sender, e: nullstone.IEventArgs) {\r\n            this._UpdateTrackLayout();\r\n        }\r\n        private _OnOrientationChanged() {\r\n            var isHorizontal = this.Orientation === Orientation.Horizontal;\r\n            if (this.$HorizontalTemplate) {\r\n                this.$HorizontalTemplate.Visibility = isHorizontal ? Visibility.Visible : Visibility.Collapsed;\r\n            }\r\n            if (this.$VerticalTemplate) {\r\n                this.$VerticalTemplate.Visibility = isHorizontal ? Visibility.Collapsed : Visibility.Visible;\r\n            }\r\n            this._UpdateTrackLayout();\r\n        }\r\n        private _UpdateTrackLayout() {\r\n            var trackLength = this._GetTrackLength();\r\n            var max = this.Maximum;\r\n            var min = this.Minimum;\r\n            var val = this.Value;\r\n            var multiplier = (val - min) / (max - min);\r\n            var thumbSize = this._UpdateThumbSize(trackLength);\r\n\r\n            var isHorizontal = this.Orientation === Orientation.Horizontal;\r\n            if (isHorizontal && this.$HorizontalLargeDecrease && this.$HorizontalThumb) {\r\n                this.$HorizontalLargeDecrease.Width = Math.max(0, multiplier * (trackLength - thumbSize));\r\n            } else if (!isHorizontal && this.$VerticalLargeDecrease && this.$VerticalThumb) {\r\n                this.$VerticalLargeDecrease.Height = Math.max(0, multiplier * (trackLength - thumbSize));\r\n            }\r\n        }\r\n        private _UpdateThumbSize(trackLength: number): number {\r\n            var result = Number.NaN;\r\n            var hideThumb = trackLength <= 0;\r\n            if (trackLength > 0) {\r\n                var isHorizontal = this.Orientation === Orientation.Horizontal;\r\n                var max = this.Maximum;\r\n                var min = this.Minimum;\r\n                if (isHorizontal && this.$HorizontalThumb) {\r\n                    if (max - min !== 0)\r\n                        result = Math.max(this.$HorizontalThumb.MinWidth, this._ConvertViewportSizeToDisplayUnits(trackLength));\r\n                    if (max - min === 0 || result > this.ActualWidth || trackLength <= this.$HorizontalThumb.MinWidth) {\r\n                        hideThumb = true;\r\n                    } else {\r\n                        this.$HorizontalThumb.Visibility = Visibility.Visible;\r\n                        this.$HorizontalThumb.Width = result;\r\n                    }\r\n                } else if (!isHorizontal && this.$VerticalThumb) {\r\n                    if (max - min !== 0)\r\n                        result = Math.max(this.$VerticalThumb.MinHeight, this._ConvertViewportSizeToDisplayUnits(trackLength));\r\n                    if (max - min === 0 || result > this.ActualHeight || trackLength <= this.$VerticalThumb.MinHeight) {\r\n                        hideThumb = true;\r\n                    } else {\r\n                        this.$VerticalThumb.Visibility = Visibility.Visible;\r\n                        this.$VerticalThumb.Height = result;\r\n                    }\r\n                }\r\n            }\r\n            if (hideThumb) {\r\n                if (this.$HorizontalThumb) {\r\n                    this.$HorizontalThumb.Visibility = Visibility.Collapsed;\r\n                }\r\n                if (this.$VerticalThumb) {\r\n                    this.$VerticalThumb.Visibility = Visibility.Collapsed;\r\n                }\r\n            }\r\n            return result;\r\n        }\r\n        private _GetTrackLength(): number {\r\n            var actual = NaN;\r\n            if (this.Orientation === Orientation.Horizontal) {\r\n                actual = this.ActualWidth;\r\n                if (this.$HorizontalSmallDecrease) {\r\n                    var thickness = this.$HorizontalSmallDecrease.Margin;\r\n                    actual = actual - (this.$HorizontalSmallDecrease.ActualWidth + thickness.left + thickness.right);\r\n                }\r\n                if (this.$HorizontalSmallIncrease) {\r\n                    var thickness = this.$HorizontalSmallIncrease.Margin;\r\n                    actual = actual - (this.$HorizontalSmallIncrease.ActualWidth + thickness.left + thickness.right);\r\n                }\r\n            } else {\r\n                actual = this.ActualHeight;\r\n                if (this.$VerticalSmallDecrease) {\r\n                    var thickness = this.$VerticalSmallDecrease.Margin;\r\n                    actual = actual - (this.$VerticalSmallDecrease.ActualHeight + thickness.top + thickness.bottom);\r\n                }\r\n                if (this.$VerticalSmallIncrease) {\r\n                    var thickness = this.$VerticalSmallIncrease.Margin;\r\n                    actual = actual - (this.$VerticalSmallIncrease.ActualHeight + thickness.top + thickness.bottom);\r\n                }\r\n            }\r\n            return actual;\r\n        }\r\n        private _ConvertViewportSizeToDisplayUnits(trackLength: number): number {\r\n            var viewportSize = this.ViewportSize;\r\n            return trackLength * viewportSize / (viewportSize + this.Maximum - this.Minimum);\r\n        }\r\n        private _RaiseScroll(type: Primitives.ScrollEventType) {\r\n            var args = new ScrollEventArgs(type, this.Value);\r\n            args.OriginalSource = this;\r\n            this.Scroll.raise(this, args);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ScrollBar);\r\n    TemplateVisualStates(ScrollBar, \r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" });\r\n    TemplateParts(ScrollBar,\r\n        { Name: \"VerticalRoot\", Type: FrameworkElement },\r\n        { Name: \"VerticalLargeIncrease\", Type: RepeatButton },\r\n        { Name: \"VerticalLargeDecrease\", Type: RepeatButton },\r\n        { Name: \"VerticalSmallIncrease\", Type: RepeatButton },\r\n        { Name: \"VerticalSmallDecrease\", Type: RepeatButton },\r\n        { Name: \"VerticalThumb\", Type: Thumb },\r\n        { Name: \"HorizontalRoot\", Type: FrameworkElement },\r\n        { Name: \"HorizontalLargeIncrease\", Type: RepeatButton },\r\n        { Name: \"HorizontalLargeDecrease\", Type: RepeatButton },\r\n        { Name: \"HorizontalSmallIncrease\", Type: RepeatButton },\r\n        { Name: \"HorizontalSmallDecrease\", Type: RepeatButton },\r\n        { Name: \"HorizontalThumb\", Type: Thumb });\r\n}"
  },
  {
    "path": "src/Controls/Primitives/ScrollData.ts",
    "content": "module Fayde.Controls.Primitives {\r\n    export class ScrollData implements minerva.IScrollData {\r\n        canHorizontallyScroll: boolean = false;\r\n        canVerticallyScroll: boolean = false;\r\n        offsetX: number = 0;\r\n        offsetY: number = 0;\r\n        cachedOffsetX: number = 0;\r\n        cachedOffsetY: number = 0;\r\n        viewportWidth: number = 0;\r\n        viewportHeight: number = 0;\r\n        extentWidth: number = 0;\r\n        extentHeight: number = 0;\r\n        maxDesiredWidth: number = 0;\r\n        maxDesiredHeight: number = 0;\r\n\r\n        scrollOwner: ScrollViewer = null;\r\n\r\n        invalidate () {\r\n            if (this.scrollOwner)\r\n                this.scrollOwner.InvalidateScrollInfo();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Primitives/ScrollEventArgs.ts",
    "content": "/// <reference path=\"../../Core/RoutedEventArgs.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export enum ScrollEventType {\r\n        SmallDecrement = 0,\r\n        SmallIncrement = 1,\r\n        LargeDecrement = 2,\r\n        LargeIncrement = 3,\r\n        ThumbPosition = 4,\r\n        ThumbTrack = 5,\r\n        First = 6,\r\n        Last = 7,\r\n        EndScroll = 8,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(ScrollEventType, \"ScrollEventType\");\r\n\r\n    export class ScrollEventArgs extends RoutedEventArgs {\r\n        ScrollEventType: ScrollEventType;\r\n        Value: number;\r\n        constructor(scrollEventType: ScrollEventType, value: number) {\r\n            super();\r\n            Object.defineProperty(this, \"ScrollEventType\", { value: scrollEventType, writable: false });\r\n            Object.defineProperty(this, \"Value\", { value: value, writable: false });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ScrollEventArgs);\r\n}"
  },
  {
    "path": "src/Controls/Primitives/SelectionChangedEventArgs.ts",
    "content": "/// <reference path=\"../../Core/RoutedEventArgs.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export class SelectionChangedEventArgs extends RoutedEventArgs {\r\n        OldValues: any[];\r\n        NewValues: any[];\r\n        constructor(oldValues: any[], newValues: any[]) {\r\n            super();\r\n            Object.defineProperty(this, \"OldValues\", { value: oldValues.slice(0), writable: false });\r\n            Object.defineProperty(this, \"NewValues\", { value: newValues.slice(0), writable: false });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SelectionChangedEventArgs);\r\n}"
  },
  {
    "path": "src/Controls/Primitives/Selector.ts",
    "content": "/// <reference path=\"../ItemsControl.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export class Selector extends ItemsControl {\r\n        static IsSynchronizedWithCurrentItemProperty = DependencyProperty.Register(\"IsSynchronizedWithCurrentItem\", () => Boolean, Selector, null, (d: Selector, args) => d._OnIsSynchronizedWithCurrentItemChanged(args));\r\n        static SelectedIndexProperty = DependencyProperty.Register(\"SelectedIndex\", () => Number, Selector, -1, (d: Selector, args) => d._OnSelectedIndexChanged(args));\r\n        static SelectedItemProperty = DependencyProperty.Register(\"SelectedItem\", () => Object, Selector, undefined, (d: Selector, args) => d._OnSelectedItemChanged(args));\r\n        static SelectedValueProperty = DependencyProperty.Register(\"SelectedValue\", () => Object, Selector, undefined, (d: Selector, args) => d._OnSelectedValueChanged(args));\r\n        static SelectedValuePathProperty = DependencyProperty.Register(\"SelectedValuePath\", () => String, Selector, \"\", (d: Selector, args) => d._OnSelectedValuePathChanged(args));\r\n        static IsSelectionActiveProperty = DependencyProperty.RegisterReadOnlyCore(\"IsSelectionActive\", () => Boolean, Selector);\r\n        static SelectionModeProperty = DependencyProperty.Register(\"SelectionMode\", () => new Enum(SelectionMode), Selector, undefined, (d: Selector, args) => d._OnSelectionModeChanged(args));\r\n        IsSynchronizedWithCurrentItem: boolean;\r\n        SelectedIndex: number;\r\n        SelectedItem: any;\r\n        SelectedValue: any;\r\n        SelectedValuePath: string;\r\n        IsSelectionActive: boolean;\r\n        SelectionMode: SelectionMode;\r\n\r\n        SelectionChanged: RoutedEvent<SelectionChangedEventArgs> = new RoutedEvent<SelectionChangedEventArgs>();\r\n        private _Selection: SelectorSelection;\r\n        private _SelectedItems: Collections.ObservableCollection<any> = new Collections.ObservableCollection<any>();\r\n        _SelectedItemsIsInvalid: boolean = false;\r\n        $TemplateScrollViewer: ScrollViewer = null;\r\n        private _SelectedValueWalker: Data.PropertyPathWalker = null;\r\n\r\n        private get SynchronizeWithCurrentItem(): boolean {\r\n            if (!Data.ICollectionView_.is(this.ItemsSource))\r\n                return false;\r\n            return this.IsSynchronizedWithCurrentItem !== false;\r\n        }\r\n\r\n        constructor() {\r\n            super();\r\n            this._Selection = new SelectorSelection(this);\r\n        }\r\n\r\n        get SelectedItems(): Collections.ObservableCollection<any> {\r\n            if (this._SelectedItemsIsInvalid)\r\n                this._Selection.RepopulateSelectedItems();\r\n            return this._SelectedItems;\r\n        }\r\n\r\n        private _OnIsSynchronizedWithCurrentItemChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            if (args.NewValue === true)\r\n                throw new ArgumentException(\"Setting IsSynchronizedWithCurrentItem to 'true' is not supported\");\r\n\r\n            if (args.NewValue != null)\r\n                return this.SelectedItem = null;\r\n            var icv = Data.ICollectionView_.as(this.ItemsSource);\r\n            if (icv)\r\n                this.SelectedItem = icv.CurrentItem;\r\n        }\r\n        private _OnSelectedIndexChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            if (this._Selection.IsUpdating)\r\n                return;\r\n\r\n            var items = this.Items;\r\n            if (args.NewValue < 0 || args.NewValue >= items.Count)\r\n                this._Selection.ClearSelection();\r\n            else\r\n                this._Selection.Select(items.GetValueAt(args.NewValue));\r\n        }\r\n        private _OnSelectedItemChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            if (this._Selection.IsUpdating)\r\n                return;\r\n\r\n            if (args.NewValue == null)\r\n                this._Selection.ClearSelection();\r\n            else if (this.Items.IndexOf(args.NewValue) !== -1)\r\n                this._Selection.Select(args.NewValue);\r\n            else if (this.Items.IndexOf(args.OldValue) !== -1)\r\n                this._Selection.Select(args.OldValue);\r\n            else\r\n                this._Selection.ClearSelection();\r\n        }\r\n        private _OnSelectedValueChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            if (this._Selection.IsUpdating)\r\n                return;\r\n            this._SelectItemFromValue(args.NewValue, false);\r\n        }\r\n        private _OnSelectedValuePathChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._SelectedValueWalker = !args.NewValue ? null : new Data.PropertyPathWalker(args.NewValue);\r\n            this._SelectItemFromValue(this.SelectedValue, true);\r\n        }\r\n        private _OnSelectionModeChanged(args: DependencyPropertyChangedEventArgs) {\r\n            this._Selection.Mode = args.NewValue;\r\n            if (args.NewValue !== SelectionMode.Single)\r\n                return;\r\n            var selIndex = this.SelectedIndex;\r\n            if (selIndex === -1)\r\n                return;\r\n            this._Selection.SelectOnly(this.Items.GetValueAt(selIndex));\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            var tsv = this.$TemplateScrollViewer = <ScrollViewer>this.GetTemplateChild(\"ScrollViewer\", ScrollViewer);\r\n            if (tsv) {\r\n                tsv.$TemplatedParentHandlesScrolling = true;\r\n                tsv.HorizontalScrollBarVisibility = Controls.ScrollViewer.GetHorizontalScrollBarVisibility(this);\r\n                tsv.VerticalScrollBarVisibility = Controls.ScrollViewer.GetVerticalScrollBarVisibility(this);\r\n            }\r\n        }\r\n\r\n        OnItemsChanged(e: Collections.CollectionChangedEventArgs) {\r\n            super.OnItemsChanged(e);\r\n            var item: any;\r\n            switch (e.Action) {\r\n                case Collections.CollectionChangedAction.Add:\r\n                    var lbi: ListBoxItem;\r\n                    if (e.NewItems[0] instanceof ListBoxItem) lbi = <ListBoxItem>e.NewItems[0];\r\n                    if (lbi != null && lbi.IsSelected && !this.SelectedItems.Contains(lbi)) {\r\n                        this._Selection.Select(lbi);\r\n                    } else if (this.SelectedItem != null) {\r\n                        this._Selection.Select(this.SelectedItem);\r\n                    }\r\n                    break;\r\n                case Collections.CollectionChangedAction.Reset:\r\n                    var o: any;\r\n                    var icv = Data.ICollectionView_.as(this.ItemsSource);\r\n                    if (icv && this.SynchronizeWithCurrentItem)\r\n                        o = icv.CurrentItem;\r\n                    else\r\n                        o = this.SelectedItem;\r\n                    if (this.Items.Contains(o))\r\n                        this._Selection.Select(o);\r\n                    else\r\n                        this._Selection.ClearSelection();\r\n                    break;\r\n                case Collections.CollectionChangedAction.Remove:\r\n                    item = e.OldItems[0];\r\n                    if (this.SelectedItems.Contains(item))\r\n                        this._Selection.Unselect(item);\r\n                    else if (e.OldStartingIndex <= this.SelectedIndex)\r\n                        this._Selection.Select(this.SelectedItem);\r\n                    break;\r\n                case Collections.CollectionChangedAction.Replace:\r\n                    item = e.OldItems[0];\r\n                    this._Selection.Unselect(item);\r\n                    break;\r\n                default:\r\n                    throw new NotSupportedException(\"Collection changed action '\" + e.Action + \"' not supported\");\r\n            }\r\n        }\r\n        OnItemsSourceChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            super.OnItemsSourceChanged(args);\r\n\r\n            var view = Data.ICollectionView_.as(args.OldValue);\r\n            if (view)\r\n                view.CurrentChanged.off(this._OnCurrentItemChanged, this);\r\n            \r\n            view = Data.ICollectionView_.as(args.NewValue);\r\n            if (view) {\r\n                view.CurrentChanged.on(this._OnCurrentItemChanged, this);\r\n                if (this.SynchronizeWithCurrentItem)\r\n                    this._Selection.SelectOnly(view.CurrentItem);\r\n                else\r\n                    this._Selection.ClearSelection();\r\n            } else {\r\n                this._Selection.ClearSelection();\r\n            }\r\n        }\r\n        OnItemContainerStyleChanged(oldStyle, newStyle) { }\r\n\r\n        ClearContainerForItem(element: UIElement, item: any) {\r\n            super.ClearContainerForItem(element, item);\r\n            var lbi = <ListBoxItem>element;\r\n            lbi.ParentSelector = null;\r\n            if (lbi !== item)\r\n                lbi.Content = null;\r\n        }\r\n        PrepareContainerForItem(element: UIElement, item: any) {\r\n            super.PrepareContainerForItem(element, item);\r\n            var lbi = <ListBoxItem>element;\r\n            lbi.ParentSelector = this;\r\n            if (this.SelectedItems.Contains(item))\r\n                lbi.IsSelected = true;\r\n            if (lbi.IsSelected && !this.SelectedItems.Contains(item))\r\n                this._Selection.Select(item);\r\n        }\r\n\r\n        _GetValueFromItem(item: any) {\r\n            if (this._SelectedValueWalker == null)\r\n                return item;\r\n            if (item == null)\r\n                return item;\r\n            return this._SelectedValueWalker.GetValue(item);\r\n        }\r\n        private _SelectItemFromValue(selectedValue: any, ignoreSelectedValue?: boolean) {\r\n            if (selectedValue == null) {\r\n                this._Selection.ClearSelection(ignoreSelectedValue);\r\n                return;\r\n            }\r\n\r\n            var items = this.Items;\r\n            var count = items.Count;\r\n            for (var i = 0; i < count; i++) {\r\n                var item = items.GetValueAt(i);\r\n                var val = this._GetValueFromItem(item);\r\n                if (nullstone.equals(selectedValue, val)) {\r\n                    if (!this.SelectedItems.Contains(item))\r\n                        this._Selection.Select(item);\r\n                    return;\r\n                }\r\n            }\r\n            this._Selection.ClearSelection(ignoreSelectedValue);\r\n        }\r\n\r\n        SelectAll() {\r\n            this._Selection.SelectAll(this.Items.ToArray());\r\n        }\r\n\r\n        private _OnCurrentItemChanged(sender, e: nullstone.IEventArgs) {\r\n            if (!this._Selection.IsUpdating && this.SynchronizeWithCurrentItem) {\r\n                var icv = <Data.ICollectionView>this.ItemsSource;\r\n                if (!nullstone.equals(icv.CurrentItem, this.SelectedItem))\r\n                    this._Selection.SelectOnly(icv.CurrentItem);\r\n            }\r\n        }\r\n\r\n        _RaiseSelectionChanged(oldVals: any[], newVals: any[]) {\r\n            if (!oldVals) oldVals = [];\r\n            if (!newVals) newVals = [];\r\n\r\n            var lbi: ListBoxItem;\r\n            var oldCount = oldVals.length;\r\n            var oldValue;\r\n            for (var i = 0; i < oldCount; i++) {\r\n                oldValue = oldVals[i];\r\n                if (oldValue == null)\r\n                    continue;\r\n                lbi = null;\r\n                if (oldValue instanceof ListBoxItem) lbi = <ListBoxItem>oldValue;\r\n                lbi = lbi || <ListBoxItem>this.ItemContainersManager.ContainerFromItem(oldValue);\r\n                if (lbi)\r\n                    lbi.IsSelected = false;\r\n            }\r\n\r\n            var newCount = newVals.length;\r\n            var newValue;\r\n            for (var i = 0; i < newCount; i++) {\r\n                newValue = newVals[i];\r\n                if (newValue == null)\r\n                    continue;\r\n                lbi = null;\r\n                if (newValue instanceof ListBoxItem) lbi = <ListBoxItem>newValue;\r\n                lbi = lbi || <ListBoxItem>this.ItemContainersManager.ContainerFromItem(newValue);\r\n                if (lbi) {\r\n                    lbi.IsSelected = true;\r\n                    lbi.Focus();\r\n                }\r\n            }\r\n\r\n            var args = new SelectionChangedEventArgs(oldVals, newVals);\r\n            this.OnSelectionChanged(args);\r\n            this.SelectionChanged.raise(this, args);\r\n        }\r\n        OnSelectionChanged(args: SelectionChangedEventArgs) { }\r\n\r\n        NotifyListItemClicked(lbi: ListBoxItem) {\r\n            this._Selection.Select(this.ItemContainersManager.ItemFromContainer(lbi));\r\n        }\r\n        NotifyListItemLoaded(lbi: ListBoxItem) {\r\n            if (this.ItemContainersManager.ItemFromContainer(lbi) === this.SelectedItem) {\r\n                lbi.IsSelected = true;\r\n                lbi.Focus();\r\n            }\r\n        }\r\n        NotifyListItemGotFocus(lbi: ListBoxItem) { }\r\n        NotifyListItemLostFocus(lbi: ListBoxItem) { }\r\n    }\r\n    Fayde.CoreLibrary.add(Selector);\r\n}"
  },
  {
    "path": "src/Controls/Primitives/SelectorSelection.ts",
    "content": "module Fayde.Controls.Primitives {\r\n    export class SelectorSelection {\r\n        private _Owner: Selector;\r\n        private _SelectedItems: any[] = [];\r\n        private _SelectedItem: any = null;\r\n        private _IsUpdating: boolean = false;\r\n        private _AnchorIndex = -1;\r\n        Mode: SelectionMode = SelectionMode.Single;\r\n\r\n        get IsUpdating(): boolean { return this._IsUpdating; }\r\n\r\n        constructor(owner: Selector) {\r\n            this._Owner = owner;\r\n            this._Owner.SelectedItems.CollectionChanged.on(this._HandleOwnerSelectionChanged, this);\r\n        }\r\n\r\n        private _HandleOwnerSelectionChanged(sender, e: Collections.CollectionChangedEventArgs) {\r\n            if (this._IsUpdating)\r\n                return;\r\n            if (this.Mode === SelectionMode.Single)\r\n                throw new InvalidOperationException(\"SelectedItems cannot be modified directly when in Single select mode\");\r\n            try {\r\n                var items = this._SelectedItems;\r\n                this._IsUpdating = true;\r\n                switch (e.Action) {\r\n                    case Collections.CollectionChangedAction.Add:\r\n                        if (items.indexOf(e.NewItems[0]) < 0)\r\n                            this.AddToSelected(e.NewItems[0]);\r\n                        break;\r\n                    case Collections.CollectionChangedAction.Remove:\r\n                        if (items.indexOf(e.OldItems[0]) > -1)\r\n                            this.RemoveFromSelected(e.OldItems[0]);\r\n                        break;\r\n                    case Collections.CollectionChangedAction.Replace:\r\n                        if (items.indexOf(e.OldItems[0]) > -1)\r\n                            this.RemoveFromSelected(e.OldItems[0]);\r\n                        if (items.indexOf(e.NewItems[0]) < 0)\r\n                            this.AddToSelected(e.NewItems[0]);\r\n                        break;\r\n                    case Collections.CollectionChangedAction.Reset:\r\n                        var ownerItems = this._Owner.SelectedItems;\r\n\r\n                        var item: any;\r\n                        var enumerator = ownerItems.getEnumerator();\r\n                        while (enumerator.moveNext()) {\r\n                            item = enumerator.current;\r\n                            if (ownerItems.Contains(item))\r\n                                continue;\r\n                            if (items.indexOf(item) > -1)\r\n                                this.RemoveFromSelected(item);\r\n                        }\r\n\r\n                        enumerator = ownerItems.getEnumerator();\r\n                        while (enumerator.moveNext()) {\r\n                            item = enumerator.current;\r\n                            if (items.indexOf(item) < 0)\r\n                                this.AddToSelected(item);\r\n                        }\r\n                        break;\r\n                }\r\n\r\n                this._Owner._SelectedItemsIsInvalid = true;\r\n            } finally {\r\n                this._IsUpdating = false;\r\n            }\r\n        }\r\n        RepopulateSelectedItems() {\r\n            if (!this._IsUpdating) {\r\n                try {\r\n                    this._IsUpdating = true;\r\n                    var si = this._Owner.SelectedItems;\r\n                    si.Clear();\r\n                    si.AddRange(this._SelectedItems);\r\n                } finally {\r\n                    this._IsUpdating = false;\r\n                }\r\n            }\r\n        }\r\n        ClearSelection(ignoreSelectedValue?: boolean) {\r\n            if (ignoreSelectedValue === undefined) ignoreSelectedValue = false;\r\n            if (this._SelectedItems.length === 0) {\r\n                this.UpdateSelectorProperties(null, -1, ignoreSelectedValue ? this._Owner.SelectedValue : null);\r\n                return;\r\n            }\r\n\r\n            try {\r\n                this._IsUpdating = true\r\n                var oldSelection = this._SelectedItems.slice(0);\r\n\r\n                this._SelectedItems = [];\r\n                this._SelectedItem = null;\r\n                this.UpdateSelectorProperties(null, -1, ignoreSelectedValue ? this._Owner.SelectedValue : null);\r\n\r\n                this._Owner._SelectedItemsIsInvalid = true;\r\n                this._Owner._RaiseSelectionChanged(oldSelection, []);\r\n            } finally {\r\n                this._IsUpdating = false;\r\n            }\r\n        }\r\n        Select(item: any) {\r\n            if (!this._Owner.Items.Contains(item))\r\n                return;\r\n\r\n            var selIndex = this._SelectedItems.indexOf(item);\r\n            try {\r\n                this._IsUpdating = true;\r\n\r\n                switch (this.Mode) {\r\n                    case SelectionMode.Single:\r\n                        return this._SelectSingle(item, selIndex);\r\n                    case SelectionMode.Extended:\r\n                        return this._SelectExtended(item, selIndex);\r\n                    case SelectionMode.Multiple:\r\n                        return this._SelectMultiple(item, selIndex);\r\n                    default:\r\n                        throw new NotSupportedException(\"SelectionMode \" + this.Mode + \" is not supported.\");\r\n                }\r\n            } finally {\r\n                this._IsUpdating = false;\r\n            }\r\n        }\r\n        private _SelectSingle(item: any, selIndex: number) {\r\n            if (selIndex === -1)\r\n                return this.ReplaceSelection(item);\r\n        }\r\n        private _SelectExtended(item: any, selIndex: number) {\r\n            var itemsIndex = this._Owner.Items.IndexOf(item);\r\n            if (Fayde.Input.Keyboard.HasShift()) {\r\n                var items = this._Owner.Items;\r\n                var aIndex = this._AnchorIndex;\r\n                if (aIndex === -1)\r\n                    aIndex = items.IndexOf(this._SelectedItem);\r\n                aIndex = Math.max(aIndex, 0);\r\n                var oIndex = items.IndexOf(item);\r\n                return this.SelectRange(Math.min(aIndex, oIndex), Math.max(aIndex, oIndex));\r\n            }\r\n\r\n            this._AnchorIndex = selIndex;\r\n            if (Fayde.Input.Keyboard.HasControl()) {\r\n                if (selIndex > -1)\r\n                    return this.RemoveFromSelected(item);\r\n                return this.AddToSelected(item);\r\n            }\r\n            return this.ReplaceSelection(item);\r\n        }\r\n        private _SelectMultiple(item: any, selIndex: number) {\r\n            return (selIndex > -1) ? this.RemoveFromSelected(item) : this.AddToSelected(item);\r\n        }\r\n        SelectRange(startIndex: number, endIndex: number) {\r\n            var ownerItems = this._Owner.Items;\r\n\r\n            var oldSelectedItems = this._SelectedItems;\r\n            this._SelectedItems = ownerItems.GetRange(startIndex, endIndex)\r\n\r\n            var toUnselect = except(oldSelectedItems, this._SelectedItems);\r\n            var toSelect = except(this._SelectedItems, oldSelectedItems);\r\n\r\n            if (this._SelectedItems.indexOf(this._SelectedItem) === -1) {\r\n                this._SelectedItem = this._SelectedItems[0];\r\n                this.UpdateSelectorProperties(this._SelectedItem, this._SelectedItem == null ? -1 : ownerItems.IndexOf(this._SelectedItem), this._Owner._GetValueFromItem(this._SelectedItem));\r\n            }\r\n\r\n            this._Owner._SelectedItemsIsInvalid = true;\r\n            this._Owner._RaiseSelectionChanged(toUnselect, toSelect);\r\n        }\r\n        SelectAll(items: any[]) {\r\n            try {\r\n                this._IsUpdating = true;\r\n                if (this.Mode === SelectionMode.Single)\r\n                    throw new NotSupportedException(\"Cannot call SelectAll when in Single select mode\");\r\n\r\n                var selectedItems = this._SelectedItems;\r\n                var select = except(items, selectedItems);\r\n                if (select.length === 0)\r\n                    return;\r\n\r\n                var owner = this._Owner;\r\n                selectedItems.push(select);\r\n                if (this._SelectedItem == null) {\r\n                    this._SelectedItem = select[0];\r\n                    this.UpdateSelectorProperties(this._SelectedItem, owner.Items.IndexOf(this._SelectedItem), owner._GetValueFromItem(this._SelectedItem));\r\n                }\r\n\r\n                owner._SelectedItemsIsInvalid = true;\r\n                owner._RaiseSelectionChanged([], select);\r\n            } finally {\r\n                this._IsUpdating = false;\r\n            }\r\n        }\r\n        SelectOnly(item: any) {\r\n            if (this._SelectedItem === item && this._SelectedItems.length === 1)\r\n                return;\r\n\r\n            try {\r\n                this._IsUpdating = true;\r\n                this.ReplaceSelection(item);\r\n            } finally {\r\n                this._IsUpdating = false;\r\n            }\r\n        }\r\n        Unselect(item: any) {\r\n            if (this._SelectedItems.indexOf(item) < 0)\r\n                return;\r\n\r\n            try {\r\n                this._IsUpdating = true;\r\n                this.RemoveFromSelected(item);\r\n            } finally {\r\n                this._IsUpdating = false;\r\n            }\r\n        }\r\n        AddToSelected(item: any) {\r\n            this._SelectedItems.push(item);\r\n            var owner = this._Owner;\r\n            if (this._SelectedItems.length === 1) {\r\n                this._SelectedItem = item;\r\n                this.UpdateSelectorProperties(item, owner.Items.IndexOf(item), owner._GetValueFromItem(item));\r\n            }\r\n            owner._SelectedItemsIsInvalid = true;\r\n            owner._RaiseSelectionChanged([], [item]);\r\n        }\r\n        RemoveFromSelected(item: any) {\r\n            var selectedItems = this._SelectedItems;\r\n            var index = selectedItems.indexOf(item);\r\n            if (index > -1) selectedItems.splice(index, 1);\r\n            var owner = this._Owner;\r\n            if (this._SelectedItem === item) {\r\n                var newItem = selectedItems[0];\r\n                this._SelectedItem = newItem;\r\n                this.UpdateSelectorProperties(newItem, newItem == null ? -1 : owner.Items.IndexOf(newItem), owner._GetValueFromItem(item));\r\n            }\r\n            owner._SelectedItemsIsInvalid = true;\r\n            owner._RaiseSelectionChanged([item], []);\r\n        }\r\n        ReplaceSelection(item: any) {\r\n            var owner = this._Owner;\r\n            if (!this.UpdateCollectionView(item)) {\r\n                this.UpdateSelectorProperties(this._SelectedItem, owner.Items.IndexOf(this._SelectedItem), owner._GetValueFromItem(this._SelectedItem));\r\n                return;\r\n            }\r\n\r\n            var oldItems = this._SelectedItems.slice(0);\r\n            var newItems = [];\r\n            var itemIndex = oldItems.indexOf(item);\r\n            if (itemIndex > -1) {\r\n                oldItems.splice(itemIndex, 1);\r\n            } else {\r\n                newItems.push(item);\r\n            }\r\n            this._SelectedItems = [item];\r\n\r\n            this._SelectedItem = item;\r\n            this.UpdateSelectorProperties(item, owner.Items.IndexOf(item), owner._GetValueFromItem(item));\r\n\r\n            if (newItems.length !== 0 || oldItems.length !== 0) {\r\n                owner._SelectedItemsIsInvalid = true;\r\n                owner._RaiseSelectionChanged(oldItems, newItems);\r\n            }\r\n        }\r\n        UpdateSelectorProperties(item: any, index: number, value: any) {\r\n            var owner = this._Owner;\r\n            if (owner.SelectedItem !== item)\r\n                owner.SelectedItem = item;\r\n\r\n            if (owner.SelectedIndex !== index)\r\n                owner.SelectedIndex = index;\r\n\r\n            if (owner.SelectedValue !== value)\r\n                owner.SelectedValue = value;\r\n\r\n            this.UpdateCollectionView(item);\r\n        }\r\n        UpdateCollectionView(item: any) {\r\n            var icv = Data.ICollectionView_.as(this._Owner.ItemsSource);\r\n            if (icv) {\r\n                icv.MoveCurrentTo(item);\r\n                return item === icv.CurrentItem;\r\n            }\r\n            return true;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SelectorSelection);\r\n\r\n    function except<T>(arr1: T[], arr2: T[]): T[] {\r\n        var r = [];\r\n        var c: any;\r\n        for (var i = 0, len = arr1.length; i < len; i++) {\r\n            c = arr1[i];\r\n            if (arr2.indexOf(c) < 0)\r\n                r.push(c);\r\n        }\r\n        return r;\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/Primitives/Thumb.ts",
    "content": "/// <reference path=\"../Control.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export class Thumb extends Control {\r\n        private _PreviousPosition: Point = null;\r\n        private _Origin: Point = null;\r\n\r\n        DragCompleted = new RoutedEvent<DragCompletedEventArgs>();\r\n        DragDelta = new RoutedEvent<DragDeltaEventArgs>();\r\n        DragStarted = new RoutedEvent<DragStartedEventArgs>();\r\n\r\n        static IsDraggingProperty = DependencyProperty.RegisterReadOnly(\"IsDragging\", () => Boolean, Thumb, false, (d, args) => (<Thumb>d).OnDraggingChanged(args));\r\n        static IsFocusedProperty = DependencyProperty.RegisterReadOnly(\"IsFocused\", () => Boolean, Thumb);\r\n        IsDragging: boolean;\r\n        IsFocused: boolean;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = Thumb;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        private OnDraggingChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnGotFocus(e: RoutedEventArgs) {\r\n            super.OnGotFocus(e);\r\n            this._FocusChanged(Surface.HasFocus(this));\r\n        }\r\n        OnLostFocus(e: RoutedEventArgs) {\r\n            super.OnLostFocus(e);\r\n            this._FocusChanged(Surface.HasFocus(this));\r\n        }\r\n        private _FocusChanged(hasFocus: boolean) {\r\n            this.SetCurrentValue(Thumb.IsFocusedProperty, hasFocus);\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnLostMouseCapture(e: Input.MouseEventArgs) {\r\n            if (!this.IsDragging || !this.IsEnabled)\r\n                return;\r\n            this.SetCurrentValue(Thumb.IsDraggingProperty, false);\r\n            this._RaiseDragCompleted(false);\r\n        }\r\n        OnMouseEnter(e: Input.MouseEventArgs) {\r\n            if (this.IsEnabled)\r\n                this.UpdateVisualState();\r\n        }\r\n        OnMouseLeave(e: Input.MouseEventArgs) {\r\n            if (this.IsEnabled)\r\n                this.UpdateVisualState();\r\n        }\r\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs) {\r\n            super.OnMouseLeftButtonDown(e);\r\n            if (e.Handled || this.IsDragging || !this.IsEnabled)\r\n                return;\r\n            e.Handled = true;\r\n            this.CaptureMouse();\r\n            this.SetCurrentValue(Thumb.IsDraggingProperty, true);\r\n\r\n            var vpNode = this.XamlNode.VisualParentNode;\r\n            this._Origin = this._PreviousPosition = e.GetPosition((vpNode) ? vpNode.XObject : undefined);\r\n            var success = false;\r\n            try {\r\n                this._RaiseDragStarted();\r\n                success = true;\r\n            } finally {\r\n                if (!success)\r\n                    this.CancelDrag();\r\n            }\r\n        }\r\n        OnMouseMove(e: Input.MouseEventArgs) {\r\n            if (!this.IsDragging)\r\n                return;\r\n            var vpNode = this.XamlNode.VisualParentNode;\r\n            var p = e.GetPosition((vpNode) ? vpNode.XObject : undefined);\r\n            if (!minerva.Point.isEqual(p, this._PreviousPosition)) {\r\n                this._RaiseDragDelta(p.x - this._PreviousPosition.x, p.y - this._PreviousPosition.y);\r\n                this._PreviousPosition = p;\r\n            }\r\n        }\r\n\r\n        OnLostTouchCapture(e: Input.TouchEventArgs) {\r\n            super.OnLostTouchCapture(e);\r\n            if (!this.IsDragging || !this.IsEnabled)\r\n                return;\r\n            this.SetCurrentValue(Thumb.IsDraggingProperty, false);\r\n            this._RaiseDragCompleted(false);\r\n        }\r\n        OnTouchEnter(e: Input.TouchEventArgs) {\r\n            super.OnTouchEnter(e);\r\n            if (this.IsEnabled)\r\n                this.UpdateVisualState();\r\n        }\r\n        OnTouchLeave(e: Input.TouchEventArgs) {\r\n            super.OnTouchLeave(e);\r\n            if (this.IsEnabled)\r\n                this.UpdateVisualState();\r\n        }\r\n        OnTouchDown(e: Input.TouchEventArgs) {\r\n            super.OnTouchDown(e);\r\n            if (e.Handled || this.IsDragging || !this.IsEnabled)\r\n                return;\r\n            e.Handled = true;\r\n            e.Device.Capture(this);\r\n            this.SetCurrentValue(Thumb.IsDraggingProperty, true);\r\n\r\n            var vpNode = this.XamlNode.VisualParentNode;\r\n            var tp = e.GetTouchPoint(vpNode ? vpNode.XObject : undefined);\r\n            this._Origin = this._PreviousPosition = tp.Position;\r\n            var success = false;\r\n            try {\r\n                this._RaiseDragStarted();\r\n                success = true;\r\n            } finally {\r\n                if (!success)\r\n                    this.CancelDrag();\r\n            }\r\n        }\r\n        OnTouchUp(e: Input.TouchEventArgs) {\r\n            super.OnTouchUp(e);\r\n            if (e.Handled || !this.IsDragging || !this.IsEnabled)\r\n                return;\r\n            e.Handled = true;\r\n            e.Device.ReleaseCapture(this);\r\n        }\r\n        OnTouchMove(e: Input.TouchEventArgs) {\r\n            super.OnTouchMove(e);\r\n            if (!this.IsDragging || e.Device.Captured !== this)\r\n                return;\r\n            var vpNode = this.XamlNode.VisualParentNode;\r\n            var tp = e.Device.GetTouchPoint(vpNode ? vpNode.XObject : undefined);\r\n            var pos = tp.Position;\r\n            if (!minerva.Point.isEqual(pos, this._PreviousPosition)) {\r\n                this._RaiseDragDelta(pos.x - this._PreviousPosition.x, pos.y - this._PreviousPosition.y);\r\n                this._PreviousPosition = pos;\r\n            }\r\n        }\r\n\r\n        CancelDrag() {\r\n            if (!this.IsDragging)\r\n                return;\r\n            this.SetCurrentValue(Thumb.IsDraggingProperty, false);\r\n            this._RaiseDragCompleted(true);\r\n        }\r\n\r\n        private _RaiseDragStarted() {\r\n            this.DragStarted.raise(this, new DragStartedEventArgs(this._Origin.x, this._Origin.y));\r\n        }\r\n        private _RaiseDragDelta(x: number, y: number) {\r\n            this.DragDelta.raise(this, new DragDeltaEventArgs(x, y));\r\n        }\r\n        private _RaiseDragCompleted(canceled: boolean) {\r\n            this.DragCompleted.raise(this, new DragCompletedEventArgs(this._PreviousPosition.x - this._Origin.x, this._PreviousPosition.y - this._Origin.y, canceled));\r\n        }\r\n\r\n        GoToStateCommon(gotoFunc: (state: string) => boolean): boolean {\r\n            if (!this.IsEnabled)\r\n                return gotoFunc(\"Disabled\");\r\n            if (this.IsDragging)\r\n                return gotoFunc(\"Pressed\");\r\n            if (this.IsMouseOver)\r\n                return gotoFunc(\"MouseOver\");\r\n            return gotoFunc(\"Normal\");\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Thumb);\r\n    TemplateVisualStates(Thumb,\r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Pressed\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" });\r\n}"
  },
  {
    "path": "src/Controls/Primitives/ToggleButton.ts",
    "content": "/// <reference path=\"ButtonBase.ts\" />\r\n\r\nmodule Fayde.Controls.Primitives {\r\n    export class ToggleButton extends ButtonBase {\r\n        Checked = new RoutedEvent<RoutedEventArgs>();\r\n        Indeterminate = new RoutedEvent<RoutedEventArgs>();\r\n        Unchecked = new RoutedEvent<RoutedEventArgs>();\r\n\r\n        static IsCheckedProperty: DependencyProperty = DependencyProperty.RegisterCore(\"IsChecked\", () => Boolean, ToggleButton, false, (d, args) => (<ToggleButton>d).OnIsCheckedChanged(args));\r\n        static IsThreeStateProperty: DependencyProperty = DependencyProperty.RegisterCore(\"IsThreeState\", () => Boolean, ToggleButton, false);\r\n        IsChecked: boolean;\r\n        IsThreeState: boolean;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = ToggleButton;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        OnContentChanged(oldContent: any, newContent: any) {\r\n            super.OnContentChanged(oldContent, newContent);\r\n            this.UpdateVisualState();\r\n        }\r\n        OnClick() {\r\n            this.OnToggle();\r\n            super.OnClick();\r\n        }\r\n        UpdateVisualState(useTransitions?: boolean) {\r\n            useTransitions = useTransitions !== false;\r\n            super.UpdateVisualState(useTransitions);\r\n\r\n            var isChecked = this.IsChecked;\r\n            var vsm = Fayde.Media.VSM.VisualStateManager;\r\n            if (isChecked === true) {\r\n                vsm.GoToState(this, \"Checked\", useTransitions);\r\n            } else if (isChecked === false) {\r\n                vsm.GoToState(this, \"Unchecked\", useTransitions);\r\n            } else {\r\n                // isChecked is null\r\n                if (!vsm.GoToState(this, \"Indeterminate\", useTransitions)) {\r\n                    vsm.GoToState(this, \"Unchecked\", useTransitions)\r\n                }\r\n            }\r\n        }\r\n\r\n        OnIsCheckedChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            var isChecked = args.NewValue;\r\n            this.UpdateVisualState();\r\n            var rargs = new RoutedEventArgs();\r\n            if (isChecked === true) {\r\n                this.Checked.raise(this, rargs);\r\n            } else if (isChecked === false) {\r\n                this.Unchecked.raise(this, rargs);\r\n            } else {\r\n                this.Indeterminate.raise(this, rargs);\r\n            }\r\n        }\r\n        OnToggle() {\r\n            var isChecked = this.IsChecked;\r\n            if (isChecked === true) {\r\n                this.SetCurrentValue(ToggleButton.IsCheckedProperty, this.IsThreeState ? null : false);\r\n            } else {\r\n                this.SetCurrentValue(ToggleButton.IsCheckedProperty, isChecked != null);\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ToggleButton);\r\n    TemplateVisualStates(ToggleButton, { GroupName: \"CommonStates\", Name: \"Pressed\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" },\r\n        { GroupName: \"CheckStates\", Name: \"Checked\" },\r\n        { GroupName: \"CheckStates\", Name: \"Unchecked\" },\r\n        { GroupName: \"CheckStates\", Name: \"Indeterminate\" });\r\n}"
  },
  {
    "path": "src/Controls/ProgressBar.ts",
    "content": "/// <reference path=\"Primitives/RangeBase.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ProgressBar extends Primitives.RangeBase {\r\n        private _Track: FrameworkElement;\r\n        private _Indicator: FrameworkElement;\r\n\r\n        static IsIndeterminateProperty = DependencyProperty.Register(\"IsIndeterminate\", () => Boolean, ProgressBar, false, (d, args) => (<ProgressBar>d).OnIsIndeterminateChanged(args));\r\n        IsIndeterminate: boolean;\r\n        private OnIsIndeterminateChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._UpdateIndicator();\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnMinimumChanged(oldMinimum: number, newMinimum: number) {\r\n            super.OnMinimumChanged(oldMinimum, newMinimum);\r\n            this._UpdateIndicator();\r\n        }\r\n        OnMaximumChanged(oldMaximum: number, newMaximum: number) {\r\n            super.OnMaximumChanged(oldMaximum, newMaximum);\r\n            this._UpdateIndicator();\r\n        }\r\n        OnValueChanged(oldValue: number, newValue: number) {\r\n            super.OnValueChanged(oldValue, newValue);\r\n            this._UpdateIndicator();\r\n        }\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = ProgressBar;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n\r\n            var track = this._Track;\r\n            if (track)\r\n                track.SizeChanged.off(this._OnTrackSizeChanged, this);\r\n\r\n            track = this._Track = <FrameworkElement>this.GetTemplateChild(\"ProgressBarTrack\", FrameworkElement);\r\n            this._Indicator = <FrameworkElement>this.GetTemplateChild(\"ProgressBarIndicator\", FrameworkElement);\r\n\r\n            if (track)\r\n                track.SizeChanged.on(this._OnTrackSizeChanged, this);\r\n\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        GoToStates(gotoFunc: (state: string) => boolean) {\r\n            if (this.IsIndeterminate)\r\n                gotoFunc(\"Indeterminate\");\r\n            else\r\n                gotoFunc(\"Determinate\");\r\n        }\r\n\r\n        private _OnTrackSizeChanged(sender, e) {\r\n            this._UpdateIndicator();\r\n        }\r\n        private _UpdateIndicator() {\r\n            var min = this.Minimum;\r\n            var max = this.Maximum;\r\n            var val = this.Value;\r\n\r\n            var indicator = this._Indicator;\r\n            if (!indicator)\r\n                return;\r\n\r\n            var parent = <FrameworkElement>VisualTreeHelper.GetParent(indicator);\r\n            if (!parent)\r\n                return;\r\n\r\n            var margin = indicator.Margin;\r\n            var outerWidth = (margin) ? margin.left + margin.right : 0.0;\r\n            var padding: Thickness = null;\r\n            if (parent instanceof Border)\r\n                padding = (<Border>parent).Padding;\r\n            else if (parent instanceof Control)\r\n                padding = (<Control>parent).Padding;\r\n\r\n            if (padding) {\r\n                outerWidth += padding.left;\r\n                outerWidth += padding.right;\r\n            }\r\n\r\n            var progress = 1.0;\r\n            if (!this.IsIndeterminate && max !== min)\r\n                progress = (val - min) / (max - min);\r\n            var fullWidth = Math.max(0, parent.ActualWidth - outerWidth);\r\n            indicator.Width = fullWidth * progress;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ProgressBar);\r\n    TemplateVisualStates(ProgressBar,\r\n        { GroupName: \"CommonStates\", Name: \"Indeterminate\" },\r\n        { GroupName: \"CommonStates\", Name: \"Determinate\" });\r\n    TemplateParts(ProgressBar,\r\n        { Name: \"ProgressBarIndicator\", Type: FrameworkElement },\r\n        { Name: \"ProgressBarTrack\", Type: FrameworkElement });\r\n}"
  },
  {
    "path": "src/Controls/RadioButton.ts",
    "content": "/// <reference path=\"Primitives/ToggleButton.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class RadioButton extends Primitives.ToggleButton {\r\n        static GroupNameProperty: DependencyProperty = DependencyProperty.Register(\"GroupName\", () => String, RadioButton, false, (d, args) => (<RadioButton>d).OnGroupNameChanged(args));\r\n        GroupName: string;\r\n        OnGroupNameChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            unregister(args.OldValue, this);\r\n            register(args.NewValue, this);\r\n        }\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = RadioButton;\r\n            register(\"\", this);\r\n        }\r\n\r\n        OnIsCheckedChanged(e: IDependencyPropertyChangedEventArgs) {\r\n            if (e.NewValue === true)\r\n                this.UpdateRadioButtonGroup();\r\n            super.OnIsCheckedChanged(e);\r\n        }\r\n        OnToggle() {\r\n            this.IsChecked = true;\r\n        }\r\n\r\n        UpdateRadioButtonGroup() {\r\n            var groupName = this.GroupName || \"\";\r\n            var elements = groupNameToElements[groupName];\r\n            if (!elements)\r\n                return;\r\n\r\n            //if this RadioButton has been assigned a group\r\n            var element: RadioButton = null;\r\n            if (groupName) {\r\n                var rootNode = this.XamlNode.GetVisualRoot();\r\n                for (var i = 0; i < elements.length; i++) {\r\n                    element = elements[i];\r\n                    if (element === this)\r\n                        continue;\r\n                    if (!element.IsChecked)\r\n                        continue;\r\n                    if (rootNode !== element.XamlNode.GetVisualRoot())\r\n                        continue;\r\n                    element.IsChecked = false;\r\n\r\n                }\r\n            } else {\r\n                //no group has been assigned\r\n                //it is automatically groups with all RadioButtons with no group and with the same visual root\r\n                var vpNode = this.XamlNode.VisualParentNode;\r\n                for (var i = 0; i < elements.length; i++) {\r\n                    element = elements[i];\r\n                    if (element === this)\r\n                        continue;\r\n                    if (!element.IsChecked)\r\n                        continue;\r\n                    if (vpNode !== element.XamlNode.VisualParentNode)\r\n                        continue;\r\n                    element.IsChecked = false;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RadioButton);\r\n    TemplateVisualStates(RadioButton, \r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Pressed\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" },\r\n        { GroupName: \"CheckStates\", Name: \"Unchecked\" },\r\n        { GroupName: \"CheckStates\", Name: \"Checked\" },\r\n        { GroupName: \"CheckStates\", Name: \"Indeterminate\" },\r\n        { GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\" },\r\n        { GroupName: \"ValidationStates\", Name: \"InvalidFocused\" },\r\n        { GroupName: \"ValidationStates\", Name: \"Valid\" });\r\n\r\n    var groupNameToElements: RadioButton[][] = [];\r\n    function register(groupName: string, radioButton: RadioButton) {\r\n        // Treat null as being string.Empty\r\n        if (!groupName) groupName = \"\";\r\n\r\n        var list: RadioButton[] = groupNameToElements[groupName];\r\n        if (!list)\r\n            groupNameToElements[groupName] = list = [];\r\n        list.push(radioButton);\r\n    }\r\n    function unregister(groupName: string, radioButton: RadioButton) {\r\n        // Treat null as being string.Empty\r\n        if (!groupName) groupName = \"\";\r\n\r\n        var list: RadioButton[] = groupNameToElements[groupName];\r\n        if (list) {\r\n            var index = list.indexOf(radioButton);\r\n            if (index > -1)\r\n                list.splice(index, 1);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/RichTextBox.ts",
    "content": "/// <reference path=\"Control.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class _RichTextBoxView {\r\n    }\r\n    Fayde.RegisterType(_RichTextBoxView, Fayde.XMLNSINTERNAL);\r\n\r\n    export class RichTextBox extends Control {\r\n        HorizontalScrollBarVisibility: ScrollBarVisibility;\r\n        TextWrapping: TextWrapping;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = RichTextBox;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RichTextBox);\r\n}"
  },
  {
    "path": "src/Controls/RowDefinition.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class RowDefinition extends DependencyObject implements minerva.controls.grid.IRowDefinition {\r\n        //NOTE: Will not receive property changes from GridLength\r\n        static HeightProperty = DependencyProperty.Register(\"Height\", () => GridLength, RowDefinition, undefined, Incite);\r\n        static MaxHeightProperty = DependencyProperty.Register(\"MaxHeight\", () => Number, RowDefinition, Number.POSITIVE_INFINITY, Incite);\r\n        static MinHeightProperty = DependencyProperty.Register(\"MinHeight\", () => Number, RowDefinition, 0.0, Incite);\r\n        static ActualHeightProperty = DependencyProperty.RegisterReadOnly(\"ActualHeight\", () => Number, RowDefinition, 0.0);\r\n        Height: GridLength;\r\n        MaxHeight: number;\r\n        MinHeight: number;\r\n        ActualHeight: number;\r\n\r\n        setActualHeight (value: number) {\r\n            this.SetCurrentValue(RowDefinition.ActualHeightProperty, value);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RowDefinition);\r\n\r\n    import GridUnitType = minerva.controls.grid.GridUnitType;\r\n    function ConvertRowDefinition (o: any): RowDefinition {\r\n        if (!o || o instanceof RowDefinition)\r\n            return <RowDefinition>o;\r\n        var s: string = o.toString();\r\n        var rd = new RowDefinition();\r\n        if (s.toLowerCase() === \"auto\") {\r\n            rd.Height = new GridLength(0, GridUnitType.Auto);\r\n            return rd;\r\n        }\r\n        if (s === \"*\") {\r\n            rd.Height = new GridLength(1, GridUnitType.Star);\r\n            return rd;\r\n        }\r\n        var v = parseFloat(s);\r\n        if (isNaN(v))\r\n            throw new XamlParseException(\"Invalid RowDefinition: '\" + s + \"'.\");\r\n        rd.Height = new GridLength(v, s[s.length - 1] === \"*\" ? GridUnitType.Star : GridUnitType.Pixel);\r\n        return rd;\r\n    }\r\n\r\n    nullstone.registerTypeConverter(RowDefinition, ConvertRowDefinition);\r\n\r\n    export class RowDefinitionCollection extends XamlObjectCollection<RowDefinition> {\r\n        _RaiseItemAdded (value: RowDefinition, index: number) {\r\n            Incite(this, {\r\n                item: value,\r\n                index: index,\r\n                add: true\r\n            });\r\n        }\r\n\r\n        _RaiseItemRemoved (value: RowDefinition, index: number) {\r\n            Incite(this, {\r\n                item: value,\r\n                index: index,\r\n                add: false\r\n            });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RowDefinitionCollection);\r\n\r\n    function ConvertRowDefinitionCollection (o: any): RowDefinitionCollection {\r\n        if (!o || o instanceof RowDefinitionCollection)\r\n            return <RowDefinitionCollection>o;\r\n        if (typeof o === \"string\") {\r\n            var tokens = (<string>o).split(\" \");\r\n            var len = tokens.length;\r\n            var rdc = new RowDefinitionCollection();\r\n            var rd: RowDefinition;\r\n            for (var i = 0; i < len; i++) {\r\n                if (rd = ConvertRowDefinition(tokens[i]))\r\n                    rdc.Add(rd);\r\n            }\r\n            return rdc;\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    nullstone.registerTypeConverter(RowDefinitionCollection, ConvertRowDefinitionCollection);\r\n}"
  },
  {
    "path": "src/Controls/ScrollContentPresenter.ts",
    "content": "/// <reference path=\"ContentPresenter.ts\" />\r\n/// <reference path=\"Primitives/IScrollInfo.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ScrollContentPresenter extends ContentPresenter implements Primitives.IScrollInfo {\r\n        CreateLayoutUpdater() {\r\n            var updater = new minerva.controls.scrollcontentpresenter.ScrollContentPresenterUpdater();\r\n            updater.assets.scrollData = this._ScrollData = new Primitives.ScrollData();\r\n            return updater;\r\n        }\r\n\r\n        private _ScrollData: Primitives.ScrollData;\r\n        private _IsClipPropertySet: boolean = false;\r\n        private _ClippingRectangle: Media.RectangleGeometry = null;\r\n\r\n        get ScrollOwner(): ScrollViewer { return this._ScrollData.scrollOwner; }\r\n        set ScrollOwner(value: ScrollViewer) { this._ScrollData.scrollOwner = value; }\r\n        get CanHorizontallyScroll(): boolean { return this._ScrollData.canHorizontallyScroll;; }\r\n        set CanHorizontallyScroll(value: boolean) {\r\n            var sd = this._ScrollData;\r\n            if (sd.canHorizontallyScroll !== value) {\r\n                sd.canHorizontallyScroll = value;\r\n                this.XamlNode.LayoutUpdater.invalidateMeasure();\r\n            }\r\n        }\r\n        get CanVerticallyScroll(): boolean { return this._ScrollData.canVerticallyScroll; }\r\n        set CanVerticallyScroll(value: boolean) {\r\n            var sd = this._ScrollData;\r\n            if (sd.canVerticallyScroll !== value) {\r\n                sd.canVerticallyScroll = value;\r\n                this.XamlNode.LayoutUpdater.invalidateMeasure();\r\n            }\r\n        }\r\n        get ExtentWidth(): number { return this._ScrollData.extentWidth; }\r\n        get ExtentHeight(): number { return this._ScrollData.extentHeight; }\r\n        get ViewportWidth(): number { return this._ScrollData.viewportWidth; }\r\n        get ViewportHeight(): number { return this._ScrollData.viewportHeight; }\r\n        get HorizontalOffset(): number { return this._ScrollData.offsetX; }\r\n        get VerticalOffset(): number { return this._ScrollData.offsetY; }\r\n        LineUp(): boolean { return this.SetVerticalOffset(this._ScrollData.offsetY - 16); }\r\n        LineDown(): boolean { return this.SetVerticalOffset(this._ScrollData.offsetY + 16); }\r\n        LineLeft(): boolean { return this.SetHorizontalOffset(this._ScrollData.offsetX - 16); }\r\n        LineRight(): boolean { return this.SetHorizontalOffset(this._ScrollData.offsetX + 16); }\r\n        MouseWheelUp(): boolean { return this.SetVerticalOffset(this._ScrollData.offsetY - 48); }\r\n        MouseWheelDown(): boolean { return this.SetVerticalOffset(this._ScrollData.offsetY + 48); }\r\n        MouseWheelLeft(): boolean { return this.SetHorizontalOffset(this._ScrollData.offsetX - 48); }\r\n        MouseWheelRight(): boolean { return this.SetHorizontalOffset(this._ScrollData.offsetX + 48); }\r\n        PageUp(): boolean { return this.SetVerticalOffset(this._ScrollData.offsetY - this._ScrollData.viewportHeight); }\r\n        PageDown(): boolean { return this.SetVerticalOffset(this._ScrollData.offsetY + this._ScrollData.viewportHeight); }\r\n        PageLeft(): boolean { return this.SetHorizontalOffset(this._ScrollData.offsetX - this._ScrollData.viewportWidth); }\r\n        PageRight(): boolean { return this.SetHorizontalOffset(this._ScrollData.offsetX + this._ScrollData.viewportWidth); }\r\n        MakeVisible(uie: UIElement, viewport: minerva.Rect): minerva.Rect {\r\n            var vis = new minerva.Rect();\r\n            if (minerva.Rect.isEmpty(viewport) || !uie || uie === this || !this.XamlNode.IsAncestorOf(uie.XamlNode))\r\n                return vis;\r\n\r\n            var generalTransform = uie.TransformToVisual(this);\r\n            var xpoint = generalTransform.Transform(viewport);\r\n            minerva.Size.copyTo(viewport, vis);\r\n            minerva.Point.copyTo(xpoint, vis);\r\n            return vis;\r\n\r\n            //TODO: Not sure why this was skipped\r\n            /*\r\n            var irect = new minerva.Rect();\r\n            minerva.Rect.set(irect, this.HorizontalOffset, this.VerticalOffset, this.ViewportWidth, this.ViewportHeight);\r\n            viewport.X += irect.X;\r\n            viewport.Y += irect.Y;\r\n            var num = computeScrollOffsetWithMinimalScroll(irect.X, irect.X + irect.Width, viewport.X, viewport.X + viewport.Width);\r\n            var num1 = computeScrollOffsetWithMinimalScroll(irect.Y, irect.Y + irect.Height, viewport.Y, viewport.Y + viewport.Height);\r\n            this.SetHorizontalOffset(num);\r\n            this.SetVerticalOffset(num1);\r\n            irect.X = num;\r\n            irect.Y = num1;\r\n            minerva.Rect.intersection(viewport, irect);\r\n            if (!minerva.Rect.isEmpty(viewport)) {\r\n                viewport.X -= irect.X;\r\n                viewport.Y -= irect.Y;\r\n            }\r\n            return viewport;\r\n            */\r\n        }\r\n        SetHorizontalOffset(offset: number): boolean {\r\n            if (isNaN(offset))\r\n                throw new ArgumentException(\"Offset is not a number.\");\r\n            var sd = this._ScrollData;\r\n            if (!sd.canHorizontallyScroll)\r\n                return false;\r\n            offset = Math.max(0, Math.min(offset, sd.extentWidth - sd.viewportWidth));\r\n            if (NumberEx.AreClose(this._ScrollData.offsetX, offset))\r\n                return false;\r\n\r\n            sd.cachedOffsetX = offset;\r\n            this.XamlNode.LayoutUpdater.invalidateArrange();\r\n            return true;\r\n        }\r\n        SetVerticalOffset(offset: number): boolean {\r\n            if (isNaN(offset))\r\n                throw new ArgumentException(\"Offset is not a number.\");\r\n            var sd = this._ScrollData;\r\n            if (!sd.canVerticallyScroll)\r\n                return false;\r\n            offset = Math.max(0, Math.min(offset, sd.extentHeight - sd.viewportHeight));\r\n            if (NumberEx.AreClose(this._ScrollData.offsetY, offset))\r\n                return false;\r\n\r\n            sd.cachedOffsetY = offset;\r\n            this.XamlNode.LayoutUpdater.invalidateArrange();\r\n            return true;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n\r\n            var sv: ScrollViewer;\r\n            if (this.TemplateOwner instanceof ScrollViewer)\r\n                sv = <ScrollViewer>this.TemplateOwner;\r\n            else\r\n                return;\r\n\r\n            var content = this.Content;\r\n            var info = Primitives.IScrollInfo_.as(content);\r\n            if (!info && content instanceof ItemsPresenter) {\r\n                var ip = <ItemsPresenter>content;\r\n                var err = new BError();\r\n                ip.XamlNode.ApplyTemplateWithError(err);\r\n                if (err.Message)\r\n                    err.ThrowException();\r\n                info = Primitives.IScrollInfo_.as(ip.Panel);\r\n            }\r\n\r\n            if (!info)\r\n                info = this;\r\n\r\n            info.CanHorizontallyScroll = sv.HorizontalScrollBarVisibility !== ScrollBarVisibility.Disabled;\r\n            info.CanVerticallyScroll = sv.VerticalScrollBarVisibility !== ScrollBarVisibility.Disabled;\r\n            info.ScrollOwner = sv;\r\n            sv.ScrollInfo = info;\r\n            sv.InvalidateScrollInfo();\r\n        }\r\n\r\n    }\r\n    Fayde.CoreLibrary.add(ScrollContentPresenter);\r\n    nullstone.addTypeInterfaces(ScrollContentPresenter, Primitives.IScrollInfo_);\r\n\r\n    function computeScrollOffsetWithMinimalScroll(topView, bottomView, topChild, bottomChild) {\r\n        var flag = NumberEx.IsLessThanClose(topChild, topView) && NumberEx.IsLessThanClose(bottomChild, bottomView);\r\n        var flag1 = NumberEx.IsGreaterThanClose(topChild, topView) && NumberEx.IsGreaterThanClose(bottomChild, bottomView);\r\n\r\n        var flag4 = (bottomChild - topChild) > (bottomView - topView);\r\n        if ((!flag || flag4) && (!flag1 || !flag4)) {\r\n            if (flag || flag1)\r\n                return bottomChild - bottomView - topView;\r\n            return topView;\r\n        }\r\n        return topChild;\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/ScrollViewer.ts",
    "content": "/// <reference path=\"ContentControl.ts\" />\r\n/// <reference path=\"ScrollContentPresenter.ts\" />\r\n/// <reference path=\"Primitives/ScrollBar.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ScrollViewer extends ContentControl {\r\n        private static _ScrollBarVisibilityChanged(d: DependencyObject, args: IDependencyPropertyChangedEventArgs) {\r\n            if (!d) return;\r\n            if (d instanceof ScrollViewer) {\r\n                var sv = <ScrollViewer>d;\r\n                sv.XamlNode.LayoutUpdater.invalidateMeasure();\r\n                var scrollInfo = sv.ScrollInfo;\r\n                if (scrollInfo) {\r\n                    scrollInfo.CanHorizontallyScroll = sv.HorizontalScrollBarVisibility !== ScrollBarVisibility.Disabled;\r\n                    scrollInfo.CanVerticallyScroll = sv.VerticalScrollBarVisibility !== ScrollBarVisibility.Disabled;\r\n                }\r\n                sv._UpdateScrollBarVisibility();\r\n                return;\r\n            }\r\n\r\n            if (d instanceof ListBox) {\r\n                var listbox = <ListBox>d;\r\n                if (listbox.$TemplateScrollViewer)\r\n                    listbox.$TemplateScrollViewer.SetValue(args.Property, args.NewValue);\r\n                return;\r\n            }\r\n        }\r\n\r\n        static HorizontalScrollBarVisibilityProperty = DependencyProperty.RegisterAttachedCore(\"HorizontalScrollBarVisibility\", () => new Enum(ScrollBarVisibility), ScrollViewer, ScrollBarVisibility.Disabled, ScrollViewer._ScrollBarVisibilityChanged);\r\n        static GetHorizontalScrollBarVisibility(d: DependencyObject): ScrollBarVisibility { return d.GetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty); }\r\n        static SetHorizontalScrollBarVisibility(d: DependencyObject, value: ScrollBarVisibility) { d.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, value); }\r\n        get HorizontalScrollBarVisibility(): ScrollBarVisibility { return this.GetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty); }\r\n        set HorizontalScrollBarVisibility(value: ScrollBarVisibility) { this.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, value); }\r\n\r\n        static VerticalScrollBarVisibilityProperty = DependencyProperty.RegisterAttachedCore(\"VerticalScrollBarVisibility\", () => new Enum(ScrollBarVisibility), ScrollViewer, ScrollBarVisibility.Disabled, ScrollViewer._ScrollBarVisibilityChanged);\r\n        static GetVerticalScrollBarVisibility(d: DependencyObject): ScrollBarVisibility { return d.GetValue(ScrollViewer.VerticalScrollBarVisibilityProperty); }\r\n        static SetVerticalScrollBarVisibility(d: DependencyObject, value: ScrollBarVisibility) { d.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, value); }\r\n        get VerticalScrollBarVisibility(): ScrollBarVisibility { return this.GetValue(ScrollViewer.VerticalScrollBarVisibilityProperty); }\r\n        set VerticalScrollBarVisibility(value: ScrollBarVisibility) { this.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, value); }\r\n\r\n        static ComputedHorizontalScrollBarVisibilityProperty = DependencyProperty.RegisterReadOnlyCore(\"ComputedHorizontalScrollBarVisibility\", () => new Enum(Visibility), ScrollViewer);\r\n        static ComputedVerticalScrollBarVisibilityProperty = DependencyProperty.RegisterReadOnlyCore(\"ComputedVerticalScrollBarVisibility\", () => new Enum(Visibility), ScrollViewer);\r\n        static HorizontalOffsetProperty = DependencyProperty.RegisterReadOnlyCore(\"HorizontalOffset\", () => Number, ScrollViewer);\r\n        static VerticalOffsetProperty = DependencyProperty.RegisterReadOnlyCore(\"VerticalOffset\", () => Number, ScrollViewer);\r\n        static ScrollableWidthProperty = DependencyProperty.RegisterReadOnlyCore(\"ScrollableWidth\", () => Number, ScrollViewer);\r\n        static ScrollableHeightProperty = DependencyProperty.RegisterReadOnlyCore(\"ScrollableHeight\", () => Number, ScrollViewer);\r\n        static ViewportWidthProperty = DependencyProperty.RegisterReadOnlyCore(\"ViewportWidth\", () => Number, ScrollViewer);\r\n        static ViewportHeightProperty = DependencyProperty.RegisterReadOnlyCore(\"ViewportHeight\", () => Number, ScrollViewer);\r\n        static ExtentWidthProperty = DependencyProperty.RegisterReadOnlyCore(\"ExtentWidth\", () => Number, ScrollViewer);\r\n        static ExtentHeightProperty = DependencyProperty.RegisterReadOnlyCore(\"ExtentHeight\", () => Number, ScrollViewer);\r\n\r\n        ComputedHorizontalScrollBarVisibility: Visibility;\r\n        ComputedVerticalScrollBarVisibility: Visibility;\r\n        HorizontalOffset: number;\r\n        VerticalOffset: number;\r\n        ScrollableWidth: number;\r\n        ScrollableHeight: number;\r\n        ViewportWidth: number;\r\n        ViewportHeight: number;\r\n        ExtentWidth: number;\r\n        ExtentHeight: number;\r\n\r\n        $TemplatedParentHandlesScrolling: boolean = false;\r\n        $ScrollContentPresenter: ScrollContentPresenter;\r\n        private $HorizontalScrollBar: Primitives.ScrollBar;\r\n        private $VerticalScrollBar: Primitives.ScrollBar;\r\n\r\n        constructor() {\r\n            super();\r\n            //this.RequestBringIntoView.Subscribe(this._OnRequestBringIntoView, this);\r\n            this.DefaultStyleKey = ScrollViewer;\r\n        }\r\n\r\n        private _ScrollInfo: Primitives.IScrollInfo;\r\n        get ScrollInfo(): Primitives.IScrollInfo { return this._ScrollInfo; }\r\n        set ScrollInfo(value: Primitives.IScrollInfo) {\r\n            this._ScrollInfo = value;\r\n            if (value) {\r\n                value.CanHorizontallyScroll = this.HorizontalScrollBarVisibility !== ScrollBarVisibility.Disabled;\r\n                value.CanVerticallyScroll = this.VerticalScrollBarVisibility !== ScrollBarVisibility.Disabled;\r\n            }\r\n        }\r\n\r\n        InvalidateScrollInfo() {\r\n            var scrollInfo = this.ScrollInfo;\r\n            if (scrollInfo) {\r\n                this.SetCurrentValue(ScrollViewer.ExtentWidthProperty, scrollInfo.ExtentWidth);\r\n                this.SetCurrentValue(ScrollViewer.ExtentHeightProperty, scrollInfo.ExtentHeight);\r\n                this.SetCurrentValue(ScrollViewer.ViewportWidthProperty, scrollInfo.ViewportWidth);\r\n                this.SetCurrentValue(ScrollViewer.ViewportHeightProperty, scrollInfo.ViewportHeight);\r\n                this._UpdateScrollBar(Orientation.Horizontal, scrollInfo.HorizontalOffset);\r\n                this._UpdateScrollBar(Orientation.Vertical, scrollInfo.VerticalOffset);\r\n                this._UpdateScrollBarVisibility();\r\n            }\r\n\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n\r\n            var w = Math.max(0, this.ExtentWidth - this.ViewportWidth);\r\n            if (w !== this.ScrollableWidth) {\r\n                this.SetCurrentValue(ScrollViewer.ScrollableWidthProperty, w);\r\n                lu.invalidateMeasure();\r\n            }\r\n\r\n            var h = Math.max(0, this.ExtentHeight - this.ViewportHeight);\r\n            if (h !== this.ScrollableHeight) {\r\n                this.SetCurrentValue(ScrollViewer.ScrollableHeightProperty, h);\r\n                lu.invalidateMeasure();\r\n            }\r\n        }\r\n        private _UpdateScrollBarVisibility() {\r\n            var lu = this.XamlNode.LayoutUpdater;\r\n            var scrollInfo = this.ScrollInfo;\r\n\r\n            var horizontalVisibility = Visibility.Visible;\r\n            var hsbv = this.HorizontalScrollBarVisibility;\r\n            switch (hsbv) {\r\n                case ScrollBarVisibility.Visible:\r\n                    break;\r\n                case ScrollBarVisibility.Disabled:\r\n                case ScrollBarVisibility.Hidden:\r\n                    horizontalVisibility = Visibility.Collapsed;\r\n                    break;\r\n                case ScrollBarVisibility.Auto:\r\n                default:\r\n                    horizontalVisibility = (!scrollInfo || scrollInfo.ExtentWidth <= scrollInfo.ViewportWidth) ? Visibility.Collapsed : Visibility.Visible;\r\n                    break;\r\n            }\r\n\r\n            if (horizontalVisibility !== this.ComputedHorizontalScrollBarVisibility) {\r\n                this.SetCurrentValue(ScrollViewer.ComputedHorizontalScrollBarVisibilityProperty, horizontalVisibility);\r\n                lu.invalidateMeasure();\r\n            }\r\n\r\n            var verticalVisibility = Fayde.Visibility.Visible;\r\n            var vsbv = this.VerticalScrollBarVisibility;\r\n            switch (vsbv) {\r\n                case ScrollBarVisibility.Visible:\r\n                    break;\r\n                case ScrollBarVisibility.Disabled:\r\n                case ScrollBarVisibility.Hidden:\r\n                    verticalVisibility = Fayde.Visibility.Collapsed;\r\n                    break;\r\n                case ScrollBarVisibility.Auto:\r\n                default:\r\n                    verticalVisibility = (!scrollInfo || scrollInfo.ExtentHeight <= scrollInfo.ViewportHeight) ? Fayde.Visibility.Collapsed : Fayde.Visibility.Visible;\r\n                    break;\r\n            }\r\n\r\n            if (verticalVisibility !== this.ComputedVerticalScrollBarVisibility) {\r\n                this.SetCurrentValue(ScrollViewer.ComputedVerticalScrollBarVisibilityProperty, verticalVisibility);\r\n                lu.invalidateMeasure();\r\n            }\r\n        }\r\n\r\n        private _UpdateScrollBar (orientation: Orientation, value: number) {\r\n            var propd: DependencyProperty;\r\n            var sb: Primitives.ScrollBar;\r\n            if (orientation === Orientation.Horizontal) {\r\n                propd = ScrollViewer.HorizontalOffsetProperty;\r\n                sb = this.$HorizontalScrollBar;\r\n            } else {\r\n                propd = ScrollViewer.VerticalOffsetProperty;\r\n                sb = this.$VerticalScrollBar;\r\n            }\r\n\r\n            try {\r\n                this.SetCurrentValue(propd, value);\r\n                if (sb)\r\n                    sb.SetCurrentValue(Primitives.RangeBase.ValueProperty, value);\r\n            } finally {\r\n            }\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.$ScrollContentPresenter = <ScrollContentPresenter>this.GetTemplateChild(\"ScrollContentPresenter\", ScrollContentPresenter);\r\n            this.$HorizontalScrollBar = <Primitives.ScrollBar>this.GetTemplateChild(\"HorizontalScrollBar\", Primitives.ScrollBar);\r\n            if (this.$HorizontalScrollBar) {\r\n                this.$HorizontalScrollBar.Scroll.on((sender, e: Primitives.ScrollEventArgs) => this._HandleScroll(Orientation.Horizontal, e), this);\r\n            }\r\n            this.$VerticalScrollBar = <Primitives.ScrollBar>this.GetTemplateChild(\"VerticalScrollBar\", Primitives.ScrollBar);\r\n            if (this.$VerticalScrollBar) {\r\n                this.$VerticalScrollBar.Scroll.on((sender, e: Primitives.ScrollEventArgs) => this._HandleScroll(Orientation.Vertical, e), this);\r\n            }\r\n            this._UpdateScrollBarVisibility();\r\n        }\r\n\r\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs) {\r\n            if (!e.Handled && this.Focus())\r\n                e.Handled = true;\r\n            super.OnMouseLeftButtonDown(e);\r\n        }\r\n        OnMouseWheel(e: Input.MouseWheelEventArgs) {\r\n            super.OnMouseWheel(e);\r\n            if (e.Handled)\r\n                return;\r\n            var scrollInfo = this.ScrollInfo;\r\n            if (!scrollInfo)\r\n                return;\r\n            if ((e.Delta > 0 && scrollInfo.VerticalOffset !== 0) || (e.Delta < 0 && scrollInfo.VerticalOffset < this.ScrollableHeight)) {\r\n                if (e.Delta >= 0)\r\n                    scrollInfo.MouseWheelUp();\r\n                else\r\n                    scrollInfo.MouseWheelDown();\r\n                e.Handled = true;\r\n            }\r\n        }\r\n\r\n        private _TouchOrigin: Point;\r\n        private _Delta = new Point();\r\n        private _TouchInitialOffset = new Point();\r\n        OnTouchDown(e: Input.TouchEventArgs) {\r\n            super.OnTouchDown(e);\r\n            var scrollInfo = this.ScrollInfo;\r\n            if (e.Handled || !this.IsEnabled || !scrollInfo)\r\n                return;\r\n            e.Handled = true;\r\n            this.Focus();\r\n            e.Device.Capture(this);\r\n\r\n            var offset = this._TouchInitialOffset;\r\n            offset.x = scrollInfo.HorizontalOffset;\r\n            offset.y = scrollInfo.VerticalOffset;\r\n\r\n            this._TouchOrigin = e.GetTouchPoint(this).Position;\r\n        }\r\n        OnTouchUp(e: Input.TouchEventArgs) {\r\n            super.OnTouchUp(e);\r\n            if (e.Handled || !this.IsEnabled)\r\n                return;\r\n            e.Handled = true;\r\n            e.Device.ReleaseCapture(this);\r\n        }\r\n        OnTouchMove(e: Input.TouchEventArgs) {\r\n            super.OnTouchMove(e);\r\n            if (e.Handled || e.Device.Captured !== this)\r\n                return;\r\n            var tp = e.GetTouchPoint(this);\r\n            var pos = tp.Position;\r\n            var delta = this._Delta;\r\n            var origin = this._TouchOrigin;\r\n            delta.x = pos.x - origin.x;\r\n            delta.y = pos.y - origin.y;\r\n            this.ScrollToHorizontalOffset(this._TouchInitialOffset.x + delta.x);\r\n            this.ScrollToVerticalOffset(this._TouchInitialOffset.y + delta.y);\r\n        }\r\n\r\n        OnKeyDown(e: Input.KeyEventArgs) {\r\n            super.OnKeyDown(e);\r\n\r\n            if (e.Handled)\r\n                return;\r\n\r\n            if (this.$TemplatedParentHandlesScrolling)\r\n                return;\r\n\r\n            var orientation = Orientation.Vertical;\r\n            var scrollEventType = Primitives.ScrollEventType.ThumbTrack;\r\n            //TODO: FlowDirection\r\n            //var flowDirection = this.FlowDirection === Fayde.FlowDirection.RightToLeft;\r\n            switch (e.Key) {\r\n                case Input.Key.PageUp:\r\n                    scrollEventType = Primitives.ScrollEventType.LargeDecrement;\r\n                    break;\r\n                case Input.Key.PageDown:\r\n                    scrollEventType = Primitives.ScrollEventType.LargeIncrement;\r\n                    break;\r\n                case Input.Key.End:\r\n                    if (!e.Modifiers.Ctrl)\r\n                        orientation = Orientation.Horizontal;\r\n                    scrollEventType = Primitives.ScrollEventType.Last;\r\n                    break;\r\n                case Input.Key.Home:\r\n                    if (!e.Modifiers.Ctrl)\r\n                        orientation = Orientation.Horizontal;\r\n                    scrollEventType = Primitives.ScrollEventType.First;\r\n                    break;\r\n                case Input.Key.Left:\r\n                    orientation = Orientation.Horizontal;\r\n                    scrollEventType = Primitives.ScrollEventType.SmallDecrement;\r\n                case Input.Key.Up:\r\n                    scrollEventType = Primitives.ScrollEventType.SmallDecrement;\r\n                    break;\r\n                case Input.Key.Right:\r\n                    orientation = Orientation.Horizontal;\r\n                    scrollEventType = Primitives.ScrollEventType.SmallIncrement;\r\n                case Input.Key.Down:\r\n                    scrollEventType = Primitives.ScrollEventType.SmallIncrement;\r\n                    break;\r\n            }\r\n            if (scrollEventType !== Primitives.ScrollEventType.ThumbTrack)\r\n                e.Handled = !!this._HandleScroll(orientation, new Primitives.ScrollEventArgs(scrollEventType, 0));\r\n        }\r\n\r\n        ScrollInDirection(key: Input.Key) {\r\n            switch (key) {\r\n                case Input.Key.PageUp:\r\n                    this.PageUp();\r\n                    break;\r\n                case Input.Key.PageDown:\r\n                    this.PageDown();\r\n                    break;\r\n                case Input.Key.End:\r\n                    this.PageEnd();\r\n                    break;\r\n                case Input.Key.Home:\r\n                    this.PageHome();\r\n                    break;\r\n                case Input.Key.Left:\r\n                    this.LineLeft();\r\n                    break;\r\n                case Input.Key.Up:\r\n                    this.LineUp();\r\n                    break;\r\n                case Input.Key.Right:\r\n                    this.LineRight();\r\n                    break;\r\n                case Input.Key.Down:\r\n                    this.LineDown();\r\n                    break;\r\n            }\r\n        }\r\n        ScrollToHorizontalOffset(offset: number) { this._HandleHorizontalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.ThumbPosition, offset)); }\r\n        ScrollToVerticalOffset(offset: number) { this._HandleVerticalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.ThumbPosition, offset)); }\r\n\r\n        LineUp() { this._HandleVerticalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.SmallDecrement, 0)); }\r\n        LineDown() { this._HandleVerticalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.SmallIncrement, 0)); }\r\n        LineLeft() { this._HandleHorizontalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.SmallDecrement, 0)); }\r\n        LineRight() { this._HandleHorizontalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.SmallIncrement, 0)); }\r\n\r\n        PageHome() { this._HandleHorizontalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.First, 0)); }\r\n        PageEnd() { this._HandleHorizontalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.Last, 0)); }\r\n\r\n        PageUp() { this._HandleVerticalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.LargeDecrement, 0)); }\r\n        PageDown() { this._HandleVerticalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.LargeIncrement, 0)); }\r\n        PageLeft() { this._HandleHorizontalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.LargeDecrement, 0)); }\r\n        PageRight() { this._HandleHorizontalScroll(new Primitives.ScrollEventArgs(Primitives.ScrollEventType.LargeIncrement, 0)); }\r\n\r\n        private _HandleScroll(orientation: Orientation, e: Primitives.ScrollEventArgs): boolean {\r\n            if (orientation !== Orientation.Horizontal)\r\n                return this._HandleVerticalScroll(e);\r\n            return this._HandleHorizontalScroll(e);\r\n        }\r\n        private _HandleHorizontalScroll(e: Primitives.ScrollEventArgs): boolean {\r\n            var scrollInfo = this.ScrollInfo;\r\n            if (!scrollInfo)\r\n                return false;\r\n            var offset = scrollInfo.HorizontalOffset;\r\n            var newValue = offset;\r\n            switch (e.ScrollEventType) {\r\n                case Primitives.ScrollEventType.SmallDecrement:\r\n                    return scrollInfo.LineLeft();\r\n                case Primitives.ScrollEventType.SmallIncrement:\r\n                    return scrollInfo.LineRight();\r\n                case Primitives.ScrollEventType.LargeDecrement:\r\n                    return scrollInfo.PageLeft();\r\n                case Primitives.ScrollEventType.LargeIncrement:\r\n                    return scrollInfo.PageRight();\r\n                case Primitives.ScrollEventType.ThumbPosition:\r\n                case Primitives.ScrollEventType.ThumbTrack:\r\n                    newValue = e.Value;\r\n                    break;\r\n                case Primitives.ScrollEventType.First:\r\n                    newValue = Number.NEGATIVE_INFINITY;\r\n                    break;\r\n                case Primitives.ScrollEventType.Last:\r\n                    newValue = Number.POSITIVE_INFINITY;\r\n                    break;\r\n            }\r\n            newValue = Math.max(newValue, 0);\r\n            newValue = Math.min(this.ScrollableWidth, newValue);\r\n            if (NumberEx.AreClose(offset, newValue))\r\n                return false;\r\n            scrollInfo.SetHorizontalOffset(newValue);\r\n            return true;\r\n        }\r\n        private _HandleVerticalScroll(e: Primitives.ScrollEventArgs): boolean {\r\n            var scrollInfo = this.ScrollInfo;\r\n            if (!scrollInfo)\r\n                return false;\r\n            var offset = scrollInfo.VerticalOffset;\r\n            var newValue = offset;\r\n            switch (e.ScrollEventType) {\r\n                case Primitives.ScrollEventType.SmallDecrement:\r\n                    return scrollInfo.LineUp();\r\n                case Primitives.ScrollEventType.SmallIncrement:\r\n                    return scrollInfo.LineDown();\r\n                    break;\r\n                case Primitives.ScrollEventType.LargeDecrement:\r\n                    return scrollInfo.PageUp();\r\n                    break;\r\n                case Primitives.ScrollEventType.LargeIncrement:\r\n                    return scrollInfo.PageDown();\r\n                    break;\r\n                case Primitives.ScrollEventType.ThumbPosition:\r\n                case Primitives.ScrollEventType.ThumbTrack:\r\n                    newValue = e.Value;\r\n                    break;\r\n                case Primitives.ScrollEventType.First:\r\n                    newValue = Number.NEGATIVE_INFINITY;\r\n                    break;\r\n                case Primitives.ScrollEventType.Last:\r\n                    newValue = Number.POSITIVE_INFINITY;\r\n                    break;\r\n            }\r\n            newValue = Math.max(newValue, 0);\r\n            newValue = Math.min(this.ScrollableHeight, newValue);\r\n            if (NumberEx.AreClose(offset, newValue))\r\n                return false;\r\n            return scrollInfo.SetVerticalOffset(newValue);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ScrollViewer);\r\n    TemplateParts(ScrollViewer,\r\n        { Name: \"ScrollContentPresenter\", Type: ScrollContentPresenter },\r\n        { Name: \"HorizontalScrollBar\", Type: Primitives.ScrollBar },\r\n        { Name: \"VerticalScrollBar\", Type: Primitives.ScrollBar });\r\n}\r\n"
  },
  {
    "path": "src/Controls/Slider.ts",
    "content": "/// <reference path=\"Primitives/RangeBase.ts\" />\r\n/// <reference path=\"Primitives/RepeatButton.ts\" />\r\n/// <reference path=\"Primitives/Thumb.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    import GridUnitType = minerva.controls.grid.GridUnitType;\r\n    export class Slider extends Primitives.RangeBase {\r\n        private _DragValue: number = 0;\r\n\r\n        static IsDirectionReversedProperty: DependencyProperty = DependencyProperty.RegisterCore(\"IsDirectionReversed\", () => Boolean, Slider, false, (d, args) => (<Slider>d)._UpdateTrackLayout());\r\n        static IsFocusedProperty: DependencyProperty = DependencyProperty.RegisterReadOnlyCore(\"IsFocused\", () => Boolean, Slider, false, (d, args) => (<Slider>d).UpdateVisualState());\r\n        static OrientationProperty: DependencyProperty = DependencyProperty.RegisterCore(\"Orientation\", () => new Enum(Orientation), Slider, Orientation.Horizontal, (d, args) => (<Slider>d)._OnOrientationChanged());\r\n        IsDirectionReversed: boolean;\r\n        IsFocused: boolean;\r\n        Orientation: Orientation;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = Slider;\r\n            this.SizeChanged.on(this._HandleSizeChanged, this);\r\n        }\r\n\r\n        private $HorizontalTemplate: FrameworkElement;\r\n        private $HorizontalLargeIncrease: Primitives.RepeatButton;\r\n        private $HorizontalLargeDecrease: Primitives.RepeatButton;\r\n        private $HorizontalThumb: Primitives.Thumb;\r\n\r\n        private $VerticalTemplate: FrameworkElement;\r\n        private $VerticalLargeIncrease: Primitives.RepeatButton;\r\n        private $VerticalLargeDecrease: Primitives.RepeatButton;\r\n        private $VerticalThumb: Primitives.Thumb;\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.$HorizontalTemplate = <FrameworkElement>this.GetTemplateChild(\"HorizontalTemplate\", FrameworkElement);\r\n            this.$HorizontalLargeIncrease = <Primitives.RepeatButton>this.GetTemplateChild(\"HorizontalTrackLargeChangeIncreaseRepeatButton\", Primitives.RepeatButton);\r\n            this.$HorizontalLargeDecrease = <Primitives.RepeatButton>this.GetTemplateChild(\"HorizontalTrackLargeChangeDecreaseRepeatButton\", Primitives.RepeatButton);\r\n            this.$HorizontalThumb = <Primitives.Thumb>this.GetTemplateChild(\"HorizontalThumb\", Primitives.Thumb);\r\n            this.$VerticalTemplate = <FrameworkElement>this.GetTemplateChild(\"VerticalTemplate\", FrameworkElement);\r\n            this.$VerticalLargeIncrease = <Primitives.RepeatButton>this.GetTemplateChild(\"VerticalTrackLargeChangeIncreaseRepeatButton\", Primitives.RepeatButton);\r\n            this.$VerticalLargeDecrease = <Primitives.RepeatButton>this.GetTemplateChild(\"VerticalTrackLargeChangeDecreaseRepeatButton\", Primitives.RepeatButton);\r\n            this.$VerticalThumb = <Primitives.Thumb>this.GetTemplateChild(\"VerticalThumb\", Primitives.Thumb);\r\n\r\n            if (this.$HorizontalThumb != null) {\r\n                this.$HorizontalThumb.DragStarted.on(this._OnThumbDragStarted, this);\r\n                this.$HorizontalThumb.DragDelta.on(this._OnThumbDragDelta, this);\r\n            }\r\n            if (this.$HorizontalLargeDecrease != null) {\r\n                this.$HorizontalLargeDecrease.Click.on(function (sender, e) { this.Focus(); this.Value -= this.LargeChange; }, this);\r\n            }\r\n            if (this.$HorizontalLargeIncrease != null) {\r\n                this.$HorizontalLargeIncrease.Click.on(function (sender, e) { this.Focus(); this.Value += this.LargeChange; }, this);\r\n            }\r\n\r\n            if (this.$VerticalThumb != null) {\r\n                this.$VerticalThumb.DragStarted.on(this._OnThumbDragStarted, this);\r\n                this.$VerticalThumb.DragDelta.on(this._OnThumbDragDelta, this);\r\n            }\r\n            if (this.$VerticalLargeDecrease != null) {\r\n                this.$VerticalLargeDecrease.Click.on(function (sender, e) { this.Focus(); this.Value -= this.LargeChange; }, this);\r\n            }\r\n            if (this.$VerticalLargeIncrease != null) {\r\n                this.$VerticalLargeIncrease.Click.on(function (sender, e) { this.Focus(); this.Value += this.LargeChange; }, this);\r\n            }\r\n\r\n            this._OnOrientationChanged();\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        OnIsEnabledChanged(e: IDependencyPropertyChangedEventArgs) {\r\n            super.OnIsEnabledChanged(e);\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnMinimumChanged(oldMin: number, newMin: number) {\r\n            super.OnMinimumChanged(oldMin, newMin);\r\n            this._UpdateTrackLayout();\r\n        }\r\n        OnMaximumChanged(oldMax: number, newMax: number) {\r\n            super.OnMaximumChanged(oldMax, newMax);\r\n            this._UpdateTrackLayout();\r\n        }\r\n        OnValueChanged(oldValue: number, newValue: number) {\r\n            super.OnValueChanged(oldValue, newValue);\r\n            this._UpdateTrackLayout();\r\n        }\r\n\r\n        private _HandleSizeChanged(sender, e: SizeChangedEventArgs) {\r\n            this._UpdateTrackLayout();\r\n        }\r\n        private _OnOrientationChanged() {\r\n            var isHorizontal = this.Orientation === Orientation.Horizontal;\r\n            if (this.$HorizontalTemplate != null)\r\n                this.$HorizontalTemplate.Visibility = isHorizontal ? Visibility.Visible : Visibility.Collapsed;\r\n            if (this.$VerticalTemplate != null)\r\n                this.$VerticalTemplate.Visibility = !isHorizontal ? Visibility.Visible : Visibility.Collapsed;\r\n            this._UpdateTrackLayout();\r\n        }\r\n        private _UpdateTrackLayout() {\r\n            var max = this.Maximum;\r\n            var min = this.Minimum;\r\n            var val = this.Value;\r\n            \r\n            var isHorizontal = this.Orientation === Orientation.Horizontal;\r\n            var temp = isHorizontal ? this.$HorizontalTemplate : this.$VerticalTemplate;\r\n            if (!(temp instanceof Grid))\r\n                return;\r\n            var templateGrid = <Grid>temp;\r\n            \r\n            var isReversed = this.IsDirectionReversed;\r\n            var largeDecrease: Primitives.RepeatButton;\r\n            var largeIncrease: Primitives.RepeatButton;\r\n            var thumb: Primitives.Thumb;\r\n            if (isHorizontal) {\r\n                var coldefs = templateGrid.ColumnDefinitions;\r\n                largeDecrease = this.$HorizontalLargeDecrease;\r\n                largeIncrease = this.$HorizontalLargeIncrease;\r\n                thumb = this.$HorizontalThumb;\r\n\r\n                if (coldefs && coldefs.Count === 3) {\r\n                    (<ColumnDefinition>coldefs.GetValueAt(0)).Width = new GridLength(1, isReversed ? GridUnitType.Star : GridUnitType.Auto);\r\n                    (<ColumnDefinition>coldefs.GetValueAt(2)).Width = new GridLength(1, isReversed ? GridUnitType.Auto : GridUnitType.Star);\r\n\r\n                    if (largeDecrease != null)\r\n                        Grid.SetColumn(largeDecrease, isReversed ? 2 : 0);\r\n                    if (largeIncrease != null)\r\n                        Grid.SetColumn(largeIncrease, isReversed ? 0 : 2);\r\n                }\r\n            } else {\r\n                var rowdefs = templateGrid.RowDefinitions;\r\n                largeDecrease = this.$VerticalLargeDecrease;\r\n                largeIncrease = this.$VerticalLargeIncrease;\r\n                thumb = this.$VerticalThumb;\r\n\r\n                if (rowdefs && rowdefs.Count === 3) {\r\n                    (<RowDefinition>rowdefs.GetValueAt(0)).Height = new GridLength(1, isReversed ? GridUnitType.Auto : GridUnitType.Star);\r\n                    (<RowDefinition>rowdefs.GetValueAt(2)).Height = new GridLength(1, isReversed ? GridUnitType.Star : GridUnitType.Auto);\r\n\r\n                    if (largeDecrease != null)\r\n                        Grid.SetRow(largeDecrease, isReversed ? 0 : 2);\r\n                    if (largeIncrease != null)\r\n                        Grid.SetRow(largeIncrease, isReversed ? 2 : 0);\r\n                }\r\n            }\r\n\r\n            if (max === min)\r\n                return;\r\n            var percent = val / (max - min);\r\n            if (largeDecrease != null && thumb != null) {\r\n                if (isHorizontal)\r\n                    largeDecrease.Width = Math.max(0, percent * (this.ActualWidth - thumb.ActualWidth));\r\n                else\r\n                    largeDecrease.Height = Math.max(0, percent * (this.ActualHeight - thumb.ActualHeight));\r\n            }\r\n\r\n        }\r\n\r\n        private _OnThumbDragStarted(sender, e: Primitives.DragStartedEventArgs) {\r\n            this.Focus();\r\n            this._DragValue = this.Value;\r\n        }\r\n        private _OnThumbDragDelta(sender, e: Primitives.DragDeltaEventArgs) {\r\n            var offset = 0;\r\n            var isHorizontal = this.Orientation === Orientation.Horizontal;\r\n            if (isHorizontal && this.$HorizontalThumb != null) {\r\n                offset = e.HorizontalChange / (this.ActualWidth - this.$HorizontalThumb.ActualWidth) * (this.Maximum - this.Minimum);\r\n            } else if (!isHorizontal && this.$VerticalThumb != null) {\r\n                offset = -e.VerticalChange / (this.ActualHeight - this.$VerticalThumb.ActualHeight) * (this.Maximum - this.Minimum);\r\n            }\r\n            if (!isNaN(offset) && isFinite(offset)) {\r\n                this._DragValue += this.IsDirectionReversed ? -offset : offset;\r\n                var newValue = Math.min(this.Maximum, Math.max(this.Minimum, this._DragValue));\r\n                if (newValue != this.Value)\r\n                    this.Value = newValue;\r\n            }\r\n        }\r\n\r\n        OnMouseEnter(e: Input.MouseEventArgs) {\r\n            super.OnMouseEnter(e);\r\n            if ((this.Orientation === Fayde.Orientation.Horizontal && this.$HorizontalThumb != null && this.$HorizontalThumb.IsDragging) ||\r\n                (this.Orientation === Fayde.Orientation.Vertical && this.$VerticalThumb != null && this.$VerticalThumb.IsDragging)) {\r\n                this.UpdateVisualState();\r\n            }\r\n        }\r\n        OnMouseLeave(e: Input.MouseEventArgs) {\r\n            super.OnMouseLeave(e);\r\n            if ((this.Orientation === Fayde.Orientation.Horizontal && this.$HorizontalThumb != null && this.$HorizontalThumb.IsDragging) ||\r\n                (this.Orientation === Fayde.Orientation.Vertical && this.$VerticalThumb != null && this.$VerticalThumb.IsDragging)) {\r\n                this.UpdateVisualState();\r\n            }\r\n        }\r\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs) {\r\n            super.OnMouseLeftButtonDown(e);\r\n            if (e.Handled)\r\n                return;\r\n            e.Handled = true;\r\n            this.Focus();\r\n            this.CaptureMouse();\r\n        }\r\n        OnLostMouseCapture(e: Input.MouseEventArgs) {\r\n            super.OnLostMouseCapture(e);\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnKeyDown(e: Input.KeyEventArgs) {\r\n            super.OnKeyDown(e);\r\n            if (e.Handled)\r\n                return;\r\n            if (!this.IsEnabled)\r\n                return;\r\n\r\n            switch (e.Key) {\r\n                case Input.Key.Left:\r\n                case Input.Key.Down:\r\n                    this.Value += (this.IsDirectionReversed ? this.SmallChange : -this.SmallChange);\r\n                    break;\r\n                case Input.Key.Right:\r\n                case Input.Key.Up:\r\n                    this.Value += (this.IsDirectionReversed ? -this.SmallChange : this.SmallChange);\r\n                    break;\r\n                case Input.Key.Home:\r\n                    this.Value = this.Minimum;\r\n                    break;\r\n                case Input.Key.End:\r\n                    this.Value = this.Maximum;\r\n                    break;\r\n            }\r\n\r\n        }\r\n\r\n        OnGotFocus(e: RoutedEventArgs) {\r\n            super.OnGotFocus(e);\r\n            this.SetValueInternal(Slider.IsFocusedProperty, true);\r\n        }\r\n        OnLostFocus(e: RoutedEventArgs) {\r\n            super.OnLostFocus(e);\r\n            this.SetValueInternal(Slider.IsFocusedProperty, false);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Slider);\r\n    TemplateVisualStates(Slider, \r\n        { GroupName: \"CommonStates\", Name: \"Normal\" },\r\n        { GroupName: \"CommonStates\", Name: \"MouseOver\" },\r\n        { GroupName: \"CommonStates\", Name: \"Disabled\" },\r\n        { GroupName: \"FocusStates\", Name: \"Unfocused\" },\r\n        { GroupName: \"FocusStates\", Name: \"Focused\" });\r\n    TemplateParts(Slider,\r\n        { Name: \"HorizontalTemplate\", Type: FrameworkElement },\r\n        { Name: \"HorizontalThumb\", Type: Primitives.Thumb },\r\n        { Name: \"HorizontalTrackLargeChangeIncreaseRepeatButton\", Type: Primitives.RepeatButton },\r\n        { Name: \"HorizontalTrackLargeChangeDecreaseRepeatButton\", Type: Primitives.RepeatButton },\r\n        { Name: \"VerticalTemplate\", Type: FrameworkElement },\r\n        { Name: \"VerticalThumb\", Type: Primitives.Thumb },\r\n        { Name: \"VerticalTrackLargeChangeIncreaseRepeatButton\", Type: Primitives.RepeatButton },\r\n        { Name: \"VerticalTrackLargeChangeDecreaseRepeatButton\", Type: Primitives.RepeatButton });\r\n}"
  },
  {
    "path": "src/Controls/StackPanel.ts",
    "content": "/// <reference path=\"Panel.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class StackPanel extends Panel {\r\n        CreateLayoutUpdater () {\r\n            return new minerva.controls.stackpanel.StackPanelUpdater();\r\n        }\r\n\r\n        static OrientationProperty: DependencyProperty = DependencyProperty.Register(\"Orientation\", () => new Enum(Orientation), StackPanel, Orientation.Vertical);\r\n        Orientation: Orientation;\r\n    }\r\n    Fayde.CoreLibrary.add(StackPanel);\r\n\r\n    module reactions {\r\n        UIReaction<minerva.Orientation>(StackPanel.OrientationProperty, (upd, ov, nv) => {\r\n            upd.invalidateMeasure();\r\n            upd.invalidateArrange();\r\n        }, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/TextBlock.ts",
    "content": "/// <reference path=\"Enums.ts\" />\r\n/// <reference path=\"../Core/FrameworkElement.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    import TextBlockUpdater = minerva.controls.textblock.TextBlockUpdater;\r\n    export class TextBlockNode extends FENode {\r\n        XObject: TextBlock;\r\n        LayoutUpdater: TextBlockUpdater;\r\n\r\n        private _IsDocAuto = false;\r\n        private _SettingText = false;\r\n        private _SettingInlines = false;\r\n        private _AutoRun = new Documents.Run();\r\n\r\n        constructor (xobj: TextBlock) {\r\n            super(xobj);\r\n        }\r\n\r\n        GetInheritedEnumerator (): nullstone.IEnumerator<DONode> {\r\n            var xobj = this.XObject;\r\n            var inlines = xobj.Inlines;\r\n            if (inlines)\r\n                return <nullstone.IEnumerator<DONode>>inlines.GetNodeEnumerator();\r\n        }\r\n\r\n        TextChanged (args: IDependencyPropertyChangedEventArgs) {\r\n            if (this._SettingInlines)\r\n                return;\r\n\r\n            this._AutoRun.Text = args.NewValue;\r\n            if (!this._IsDocAuto) {\r\n                this._IsDocAuto = true;\r\n                this.LayoutUpdater.tree.clearText();\r\n                this._SettingText = true;\r\n                var inlines = this.XObject.Inlines;\r\n                inlines.Clear();\r\n                inlines.Add(this._AutoRun);\r\n                this.LayoutUpdater.invalidateTextMetrics();\r\n                this._SettingText = false;\r\n            }\r\n        }\r\n\r\n        InlinesChanged (inline: Documents.Inline, index: number, isAdd: boolean) {\r\n            var xobj = this.XObject;\r\n            if (isAdd)\r\n                Providers.InheritedStore.PropagateInheritedOnAdd(xobj, inline.XamlNode);\r\n\r\n            var updater = this.LayoutUpdater;\r\n            if (isAdd)\r\n                updater.tree.onTextAttached(inline.TextUpdater, index);\r\n            else\r\n                updater.tree.onTextDetached(inline.TextUpdater);\r\n\r\n            if (isAdd)\r\n                ReactTo(inline, this, this.InlineChanged);\r\n            else\r\n                UnreactTo(inline, this);\r\n\r\n            if (this._SettingText)\r\n                return;\r\n\r\n            this._SettingInlines = true;\r\n            var inlines = xobj.Inlines;\r\n            var text = \"\";\r\n            for (var en = inlines.getEnumerator(); en.moveNext();) {\r\n                text += en.current._SerializeText();\r\n            }\r\n            xobj.SetCurrentValue(TextBlock.TextProperty, text);\r\n            this._SettingInlines = false;\r\n\r\n            updater.invalidateTextMetrics();\r\n        }\r\n\r\n        InlineChanged(obj?: any) {\r\n            switch (obj.type) {\r\n                case 'font':\r\n                    this.LayoutUpdater.invalidateFont(obj.full);\r\n                    break;\r\n                case 'text':\r\n                    this.LayoutUpdater.invalidateTextMetrics();\r\n                    break;\r\n            }\r\n        }\r\n    }\r\n\r\n    export class TextBlock extends FrameworkElement {\r\n        XamlNode: TextBlockNode;\r\n\r\n        CreateNode (): TextBlockNode {\r\n            return new TextBlockNode(this);\r\n        }\r\n\r\n        CreateLayoutUpdater () {\r\n            return new TextBlockUpdater();\r\n        }\r\n\r\n        static PaddingProperty = DependencyProperty.RegisterCore(\"Padding\", () => Thickness, TextBlock);\r\n        static FontFamilyProperty = InheritableOwner.FontFamilyProperty.ExtendTo(TextBlock);\r\n        static FontSizeProperty = InheritableOwner.FontSizeProperty.ExtendTo(TextBlock);\r\n        static FontStretchProperty = InheritableOwner.FontStretchProperty.ExtendTo(TextBlock);\r\n        static FontStyleProperty = InheritableOwner.FontStyleProperty.ExtendTo(TextBlock);\r\n        static FontWeightProperty = InheritableOwner.FontWeightProperty.ExtendTo(TextBlock);\r\n        static ForegroundProperty = InheritableOwner.ForegroundProperty.ExtendTo(TextBlock);\r\n        static TextDecorationsProperty = InheritableOwner.TextDecorationsProperty.ExtendTo(TextBlock);\r\n        static TextProperty = DependencyProperty.Register(\"Text\", () => String, TextBlock, \"\", (d, args) => (<TextBlock>d).XamlNode.TextChanged(args));\r\n        static InlinesProperty = DependencyProperty.RegisterImmutable<Documents.InlineCollection>(\"Inlines\", () => Documents.InlineCollection, TextBlock);\r\n        static LineStackingStrategyProperty = DependencyProperty.RegisterCore(\"LineStackingStrategy\", () => new Enum(LineStackingStrategy), TextBlock, LineStackingStrategy.MaxHeight);\r\n        static LineHeightProperty = DependencyProperty.RegisterCore(\"LineHeight\", () => Number, TextBlock, NaN);\r\n        static TextAlignmentProperty = DependencyProperty.RegisterCore(\"TextAlignment\", () => new Enum(TextAlignment), TextBlock, TextAlignment.Left);\r\n        static TextTrimmingProperty = DependencyProperty.RegisterCore(\"TextTrimming\", () => new Enum(TextTrimming), TextBlock, TextTrimming.None);\r\n        static TextWrappingProperty = DependencyProperty.RegisterCore(\"TextWrapping\", () => new Enum(TextWrapping), TextBlock, TextWrapping.NoWrap);\r\n        Padding: Thickness;\r\n        Foreground: Media.Brush;\r\n        FontFamily: string;\r\n        FontStretch: string;\r\n        FontStyle: string;\r\n        FontWeight: FontWeight;\r\n        FontSize: number;\r\n        TextDecorations: TextDecorations;\r\n        Text: string;\r\n        Inlines: Documents.InlineCollection;\r\n        LineStackingStrategy: LineStackingStrategy;\r\n        LineHeight: number;\r\n        TextAlignment: TextAlignment;\r\n        TextTrimming: TextTrimming;\r\n        TextWrapping: TextWrapping;\r\n\r\n        constructor () {\r\n            super();\r\n\r\n            var inlines = TextBlock.InlinesProperty.Initialize(this);\r\n            inlines.AttachTo(this);\r\n            ReactTo(inlines, this, (change?) => this.XamlNode.InlinesChanged(change.item, change.index, change.add));\r\n\r\n            UIReaction<Media.Brush>(TextBlock.ForegroundProperty, (upd, ov, nv) => upd.invalidate(), true, true, this);\r\n            UIReaction<Thickness>(TextBlock.PaddingProperty, (upd: TextBlockUpdater, ov, nv) => upd.invalidateTextMetrics(), false, true, this);\r\n            UIReaction<minerva.LineStackingStrategy>(TextBlock.LineStackingStrategyProperty, (upd: TextBlockUpdater, ov, nv) => upd.invalidateTextMetrics(), false, true, this);\r\n            UIReaction<number>(TextBlock.LineHeightProperty, (upd: TextBlockUpdater, ov, nv) => upd.invalidateTextMetrics(), false, true, this);\r\n            UIReaction<minerva.TextAlignment>(TextBlock.TextAlignmentProperty, (upd: TextBlockUpdater, ov, nv) => upd.invalidateTextMetrics(), false, true, this);\r\n            UIReaction<minerva.TextTrimming>(TextBlock.TextTrimmingProperty, (upd: TextBlockUpdater, ov, nv) => upd.invalidateTextMetrics(), false, true, this);\r\n            UIReaction<minerva.TextWrapping>(TextBlock.TextWrappingProperty, (upd: TextBlockUpdater, ov, nv) => upd.invalidateTextMetrics(), false, true, this);\r\n        }\r\n\r\n        IsInheritable (propd: DependencyProperty): boolean {\r\n            if (TextBlockInheritedProps.indexOf(propd) > -1)\r\n                return true;\r\n            return super.IsInheritable(propd);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TextBlock);\r\n    Markup.Content(TextBlock, TextBlock.InlinesProperty);\r\n    Markup.TextContent(TextBlock, TextBlock.TextProperty);\r\n\r\n    var TextBlockInheritedProps = [\r\n        TextBlock.FontFamilyProperty,\r\n        TextBlock.FontSizeProperty,\r\n        TextBlock.FontStretchProperty,\r\n        TextBlock.FontStyleProperty,\r\n        TextBlock.FontWeightProperty,\r\n        TextBlock.ForegroundProperty\r\n    ];\r\n}"
  },
  {
    "path": "src/Controls/TextBox.ts",
    "content": "/// <reference path=\"TextBoxBase.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class TextBox extends TextBoxBase {\r\n        static AcceptsReturnProperty = DependencyProperty.Register(\"AcceptsReturn\", () => Boolean, TextBox, false);\r\n        static IsReadOnlyProperty = DependencyProperty.Register(\"IsReadOnly\", () => Boolean, TextBox, false);\r\n        static TextProperty = DependencyProperty.Register(\"Text\", () => String, TextBox);\r\n        static TextAlignmentProperty = DependencyProperty.Register(\"TextAlignment\", () => new Enum(TextAlignment), TextBox, TextAlignment.Left);\r\n        static TextWrappingProperty = DependencyProperty.Register(\"TextWrapping\", () => new Enum(TextWrapping), TextBox, TextWrapping.NoWrap);\r\n        static HorizontalScrollBarVisibilityProperty = DependencyProperty.Register(\"HorizontalScrollBarVisibility\", () => new Enum(ScrollBarVisibility), TextBox, ScrollBarVisibility.Hidden);\r\n        static VerticalScrollBarVisibilityProperty = DependencyProperty.Register(\"VerticalScrollBarVisibility\", () => new Enum(ScrollBarVisibility), TextBox, ScrollBarVisibility.Hidden);\r\n        AcceptsReturn: boolean;\r\n        IsReadOnly: boolean;\r\n        Text: string;\r\n        TextAlignment: TextAlignment;\r\n        TextWrapping: TextWrapping;\r\n        HorizontalScrollBarVisibility: ScrollBarVisibility;\r\n        VerticalScrollBarVisibility: ScrollBarVisibility;\r\n\r\n        TextChanged = new RoutedEvent<RoutedEventArgs>();\r\n\r\n        constructor () {\r\n            super(Text.EmitChangedType.TEXT | Text.EmitChangedType.SELECTION);\r\n            this.DefaultStyleKey = TextBox;\r\n\r\n            var proxy = this.$Proxy;\r\n            proxy.SyncSelectionStart = (value) => this.SetCurrentValue(TextBox.SelectionStartProperty, value);\r\n            proxy.SyncSelectionLength = (value) => this.SetCurrentValue(TextBox.SelectionLengthProperty, value);\r\n            proxy.SyncText = (value) => {\r\n                this.SetCurrentValue(TextBox.TextProperty, value);\r\n                var args = new RoutedEventArgs();\r\n                args.Source = this;\r\n                this.TextChanged.raise(this, args);\r\n            };\r\n            this.$Advancer = new Internal.TextBoxCursorAdvancer(this.$Proxy);\r\n        }\r\n\r\n        OnApplyTemplate () {\r\n            super.OnApplyTemplate();\r\n            var vis = (this.TextWrapping === TextWrapping.Wrap) ? ScrollBarVisibility.Disabled : this.HorizontalScrollBarVisibility;\r\n            this.$ContentProxy.setHorizontalScrollBar(vis);\r\n            this.$ContentProxy.setVerticalScrollBar(this.VerticalScrollBarVisibility);\r\n        }\r\n\r\n        get DisplayText (): string {\r\n            return this.Text;\r\n        }\r\n\r\n        OnMouseEnter (e: Input.MouseEventArgs) {\r\n            super.OnMouseEnter(e);\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnMouseLeave (e: Input.MouseEventArgs) {\r\n            super.OnMouseLeave(e);\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnGotFocus (e: RoutedEventArgs) {\r\n            super.OnGotFocus(e);\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        OnLostFocus (e: RoutedEventArgs) {\r\n            super.OnLostFocus(e);\r\n            this.UpdateVisualState();\r\n        }\r\n\r\n        GoToStateCommon (gotoFunc: (state: string) => boolean): boolean {\r\n            if (!this.IsEnabled)\r\n                return gotoFunc(\"Disabled\");\r\n            if (this.IsReadOnly)\r\n                return gotoFunc(\"ReadOnly\");\r\n            if (this.IsMouseOver)\r\n                return gotoFunc(\"MouseOver\");\r\n            return gotoFunc(\"Normal\");\r\n        }\r\n\r\n        SelectAll () {\r\n            this.$Proxy.selectAll();\r\n        }\r\n\r\n        Select (start: number, length: number) {\r\n            this.$Proxy.select(start, length);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TextBox);\r\n    TemplateVisualStates(TextBox,\r\n        {GroupName: \"CommonStates\", Name: \"Normal\"},\r\n        {GroupName: \"CommonStates\", Name: \"MouseOver\"},\r\n        {GroupName: \"CommonStates\", Name: \"Disabled\"},\r\n        {GroupName: \"CommonStates\", Name: \"ReadOnly\"},\r\n        {GroupName: \"FocusStates\", Name: \"Unfocused\"},\r\n        {GroupName: \"FocusStates\", Name: \"Focused\"},\r\n        {GroupName: \"ValidationStates\", Name: \"Valid\"},\r\n        {GroupName: \"ValidationStates\", Name: \"InvalidUnfocused\"},\r\n        {GroupName: \"ValidationStates\", Name: \"InvalidFocused\"});\r\n    TemplateParts(TextBox,\r\n        {Name: \"ContentElement\", Type: FrameworkElement});\r\n\r\n    module reactions {\r\n        DPReaction<boolean>(TextBox.AcceptsReturnProperty, (tb: TextBox, ov, nv) => {\r\n            tb.$Proxy.acceptsReturn = nv === true;\r\n        }, false);\r\n        DPReaction<boolean>(TextBox.IsReadOnlyProperty, (tb: TextBox, ov, nv) => {\r\n            tb.$View.setIsReadOnly(nv === true);\r\n        }, false);\r\n        DPReaction<TextAlignment>(TextBox.TextAlignmentProperty, (tb: TextBox, ov, nv) => tb.$View.setTextAlignment(nv), false);\r\n        DPReaction<TextWrapping>(TextBox.TextWrappingProperty, (tb: TextBox, ov, nv) => {\r\n            var vis = (nv === TextWrapping.Wrap) ? ScrollBarVisibility.Disabled : tb.HorizontalScrollBarVisibility;\r\n            tb.$ContentProxy.setHorizontalScrollBar(vis);\r\n            tb.$View.setTextWrapping(nv);\r\n        }, false);\r\n        DPReaction<ScrollBarVisibility>(TextBox.HorizontalScrollBarVisibilityProperty, (tb: TextBox, ov, nv) => {\r\n            var vis = (tb.TextWrapping === TextWrapping.Wrap) ? ScrollBarVisibility.Disabled : tb.HorizontalScrollBarVisibility;\r\n            tb.$ContentProxy.setHorizontalScrollBar(vis);\r\n        }, false);\r\n        DPReaction<ScrollBarVisibility>(TextBox.VerticalScrollBarVisibilityProperty, (tb: TextBox, ov, nv) => {\r\n            tb.$ContentProxy.setVerticalScrollBar(nv);\r\n        }, false);\r\n        DPReaction<string>(TextBox.TextProperty, (tb: TextBox, ov, nv) => {\r\n            tb.$Proxy.setText(nv);\r\n            tb.$View.setText(tb.DisplayText);\r\n        }, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/TextBoxBase.ts",
    "content": "/// <reference path=\"Control.ts\" />\r\n/// <reference path=\"../Input/KeyEventArgs.ts\" />\r\n/// <reference path=\"Enums.ts\"/>\r\n\r\nmodule Fayde.Controls {\r\n    var Key = Input.Key;\r\n    var MAX_UNDO_COUNT = 10;\r\n    export class TextBoxBase extends Control {\r\n        static CaretBrushProperty = DependencyProperty.RegisterCore(\"CaretBrush\", () => Media.Brush, TextBoxBase);\r\n        static SelectionForegroundProperty = DependencyProperty.RegisterCore(\"SelectionForeground\", () => Media.Brush, TextBoxBase);\r\n        static SelectionBackgroundProperty = DependencyProperty.RegisterCore(\"SelectionBackground\", () => Media.Brush, TextBoxBase);\r\n        static SelectionLengthProperty = DependencyProperty.RegisterFull(\"SelectionLength\", () => Number, TextBoxBase, 0, undefined, undefined, true, positiveIntValidator);\r\n        static SelectionStartProperty = DependencyProperty.RegisterFull(\"SelectionStart\", () => Number, TextBoxBase, 0, undefined, undefined, true, positiveIntValidator);\r\n        static BaselineOffsetProperty = DependencyProperty.Register(\"BaselineOffset\", () => Number, TextBoxBase);\r\n        static MaxLengthProperty = DependencyProperty.RegisterFull(\"MaxLength\", () => Number, TextBoxBase, 0, undefined, undefined, undefined, positiveIntValidator);\r\n        static SelectionOnFocusProperty = DependencyProperty.Register(\"SelectionOnFocus\", () => new Enum(SelectionOnFocus), TextBoxBase, SelectionOnFocus.Default);\r\n\r\n        CaretBrush: Media.Brush;\r\n        SelectionForeground: Media.Brush;\r\n        SelectionBackground: Media.Brush;\r\n        SelectionLength: number;\r\n        SelectionStart: number;\r\n        BaselineOffset: number;\r\n        MaxLength: number;\r\n        SelectionOnFocus: SelectionOnFocus;\r\n\r\n        private _Selecting: boolean = false;\r\n        private _Captured: boolean = false;\r\n\r\n        IsReadOnly = false;\r\n        AcceptsReturn = false;\r\n\r\n        $ContentProxy = new Internal.TextBoxContentProxy();\r\n        $Proxy: Text.Proxy;\r\n        $Advancer: Internal.ICursorAdvancer;\r\n        $View: Internal.TextBoxView;\r\n        $Clipboard = Clipboard.Create();\r\n\r\n        constructor(eventsMask: Text.EmitChangedType) {\r\n            super();\r\n            var view = this.$View = this.CreateView();\r\n            view.MouseLeftButtonDown.on((s, e) => this.OnMouseLeftButtonDown(e), this);\r\n            view.MouseLeftButtonUp.on((s, e) => this.OnMouseLeftButtonUp(e), this);\r\n            this.$Proxy = new Text.Proxy(eventsMask, MAX_UNDO_COUNT);\r\n            this._SyncFont();\r\n        }\r\n\r\n        private _SyncFont() {\r\n            var view = this.$View;\r\n            var propds = [\r\n                Control.ForegroundProperty,\r\n                Control.FontFamilyProperty,\r\n                Control.FontSizeProperty,\r\n                Control.FontStretchProperty,\r\n                Control.FontStyleProperty,\r\n                Control.FontWeightProperty\r\n            ];\r\n            propds.forEach(propd => propd.Store.ListenToChanged(this, propd, (dobj, args) => view.setFontProperty(propd, args.NewValue), this));\r\n        }\r\n\r\n        CreateView(): Internal.TextBoxView {\r\n            return new Internal.TextBoxView();\r\n        }\r\n\r\n        get Cursor(): CursorType {\r\n            var cursor = this.GetValue(FrameworkElement.CursorProperty);\r\n            if (cursor === CursorType.Default)\r\n                return CursorType.IBeam;\r\n            return cursor;\r\n        }\r\n\r\n        private selectBasedonSelectionMode() {\r\n            var proxy = this.$Proxy;\r\n            var anchor = proxy.selAnchor;\r\n            var cursor = proxy.selCursor;\r\n            \r\n            switch (this.SelectionOnFocus) {\r\n                case SelectionOnFocus.Unchanged: // 0\r\n                    break;\r\n\r\n                case SelectionOnFocus.SelectAll: // 1\r\n                    proxy.selectAll();\r\n                    break;\r\n\r\n                case SelectionOnFocus.CaretToBeginning: // 2\r\n                    cursor = this.$Advancer.CursorLineBegin(cursor);\r\n                    proxy.setAnchorCursor(anchor, cursor);\r\n                    break;\r\n\r\n                case SelectionOnFocus.CaretToEnd: // 3\r\n                    cursor = this.$Advancer.CursorLineEnd(cursor);\r\n                    proxy.setAnchorCursor(anchor, cursor);\r\n                    break;\r\n\r\n                case SelectionOnFocus.DefaultSelectAll: // 5\r\n                    proxy.selectAll();\r\n                    break;\r\n\r\n                default: // SelectionOnFocus.Default (4)\r\n                    break;\r\n            }\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.$ContentProxy.setElement(<FrameworkElement>this.GetTemplateChild(\"ContentElement\", FrameworkElement), this.$View);\r\n        }\r\n\r\n        OnLostFocus(e: RoutedEventArgs) {\r\n            super.OnLostFocus(e);\r\n            this.$View.setIsFocused(false);\r\n        }\r\n\r\n        OnGotFocus(e: RoutedEventArgs) {\r\n            super.OnGotFocus(e);\r\n            this.$View.setIsFocused(true);\r\n            this.selectBasedonSelectionMode();\r\n        }\r\n\r\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs) {\r\n            if (e.Handled)\r\n                return;\r\n            e.Handled = true;\r\n            this.Focus();\r\n            this._Captured = this.CaptureMouse();\r\n            this._Selecting = true;\r\n\r\n            var cursor = this.$View.GetCursorFromPoint(e.GetPosition(this.$View));\r\n            this.$Proxy.beginSelect(cursor);\r\n        }\r\n\r\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs) {\r\n            if (e.Handled)\r\n                return;\r\n            if (this._Captured)\r\n                this.ReleaseMouseCapture();\r\n            e.Handled = true;\r\n            this._Selecting = false;\r\n            this._Captured = false;\r\n        }\r\n\r\n        OnMouseMove(e: Input.MouseEventArgs) {\r\n            if (!this._Selecting)\r\n                return;\r\n            e.Handled = true;\r\n            var cursor = this.$View.GetCursorFromPoint(e.GetPosition(this.$View));\r\n            this.$Proxy.adjustSelection(cursor);\r\n        }\r\n\r\n        OnTouchDown(e: Input.TouchEventArgs) {\r\n            super.OnTouchDown(e);\r\n            if (e.Handled)\r\n                return;\r\n            e.Handled = true;\r\n            this.Focus();\r\n            e.Device.Capture(this);\r\n            this._Selecting = true;\r\n\r\n            var pos = e.Device.GetTouchPoint(this.$View).Position;\r\n            var cursor = this.$View.GetCursorFromPoint(pos);\r\n            this.$Proxy.beginSelect(cursor);\r\n        }\r\n\r\n        OnTouchUp(e: Input.TouchEventArgs) {\r\n            super.OnTouchUp(e);\r\n            if (e.Handled)\r\n                return;\r\n            if (e.Device.Captured === this)\r\n                e.Device.ReleaseCapture(this);\r\n            e.Handled = true;\r\n            this._Selecting = false;\r\n        }\r\n\r\n        OnTouchMove(e: Input.TouchEventArgs) {\r\n            super.OnTouchMove(e);\r\n            if (!this._Selecting)\r\n                return;\r\n            e.Handled = true;\r\n            var pos = e.Device.GetTouchPoint(this.$View).Position;\r\n            var cursor = this.$View.GetCursorFromPoint(pos);\r\n            this.$Proxy.adjustSelection(cursor);\r\n        }\r\n\r\n        OnKeyDown(args: Input.KeyEventArgs) {\r\n            switch (args.Key) {\r\n                case Key.Shift: //shift\r\n                case Key.Ctrl: //ctrl\r\n                case Key.Alt: //alt\r\n                    return;\r\n            }\r\n\r\n            var isReadOnly = this.IsReadOnly;\r\n            var handled = false;\r\n            var proxy = this.$Proxy;\r\n            proxy.begin();\r\n\r\n            switch (args.Key) {\r\n                case Key.Back:\r\n                    if (isReadOnly)\r\n                        break;\r\n                    handled = this._KeyDownBackSpace(args.Modifiers);\r\n                    break;\r\n                case Key.Delete:\r\n                    if (isReadOnly)\r\n                        break;\r\n                    if (args.Modifiers.Shift) {\r\n                        //Shift+Delete => Cut\r\n                        handled = true;\r\n                    } else {\r\n                        handled = this._KeyDownDelete(args.Modifiers);\r\n                    }\r\n                    break;\r\n                case Key.Insert:\r\n                    if (args.Modifiers.Shift) {\r\n                        //Shift+Insert => Paste\r\n                        handled = true;\r\n                    } else if (args.Modifiers.Ctrl) {\r\n                        //Ctrl+Insert => Copy\r\n                        handled = true;\r\n                    }\r\n                    break;\r\n                case Key.PageDown:\r\n                    handled = this._KeyDownPageDown(args.Modifiers);\r\n                    break;\r\n                case Key.PageUp:\r\n                    handled = this._KeyDownPageUp(args.Modifiers);\r\n                    break;\r\n                case Key.Home:\r\n                    handled = this._KeyDownHome(args.Modifiers);\r\n                    break;\r\n                case Key.End:\r\n                    handled = this._KeyDownEnd(args.Modifiers);\r\n                    break;\r\n                case Key.Left:\r\n                    handled = this._KeyDownLeft(args.Modifiers);\r\n                    break;\r\n                case Key.Right:\r\n                    handled = this._KeyDownRight(args.Modifiers);\r\n                    break;\r\n                case Key.Down:\r\n                    handled = this._KeyDownDown(args.Modifiers);\r\n                    break;\r\n                case Key.Up:\r\n                    handled = this._KeyDownUp(args.Modifiers);\r\n                    break;\r\n                default:\r\n                    if (args.Modifiers.Ctrl) {\r\n                        switch (args.Key) {\r\n                            case Key.A:\r\n                                //Ctrl+A => Select All\r\n                                handled = true;\r\n                                proxy.selectAll();\r\n                                break;\r\n                            case Key.C:\r\n                                //Ctrl+C => Copy\r\n                                this.$Clipboard.CopyText(this.$Proxy.getSelectedText());\r\n                                handled = true;\r\n                                break;\r\n                            case Key.X:\r\n                                //Ctrl+X => Cut\r\n                                if (isReadOnly)\r\n                                    break;\r\n                                this.$Clipboard.CopyText(this.$Proxy.getSelectedText());\r\n                                proxy.removeText(this.$Proxy.selAnchor, this.$Proxy.selCursor);\r\n                                handled = true;\r\n                                break;\r\n                            case Key.V:\r\n                                //Ctrl+V => Paste\r\n                                if (isReadOnly)\r\n                                    break;\r\n                                this.$Clipboard.GetTextContents((text) => proxy.paste(text));\r\n                                handled = true;\r\n                                break;\r\n                            case Key.Y:\r\n                                //Ctrl+Y => Redo\r\n                                if (!isReadOnly) {\r\n                                    handled = true;\r\n                                    proxy.redo();\r\n                                }\r\n                                break;\r\n                            case Key.Z:\r\n                                //Ctrl+Z => Undo\r\n                                if (!isReadOnly) {\r\n                                    handled = true;\r\n                                    proxy.undo();\r\n                                }\r\n                                break;\r\n                        }\r\n                    }\r\n                    break;\r\n            }\r\n\r\n            if (handled) {\r\n                args.Handled = handled;\r\n            }\r\n            proxy.end();\r\n\r\n            if (!args.Handled && !isReadOnly)\r\n                this.PostOnKeyDown(args);\r\n        }\r\n\r\n        PostOnKeyDown(args: Input.KeyEventArgs) {\r\n            if (args.Handled)\r\n                return;\r\n\r\n            if (args.Modifiers.Alt || args.Modifiers.Ctrl)\r\n                return;\r\n\r\n            var proxy = this.$Proxy;\r\n            proxy.begin();\r\n            if (args.Key === Key.Enter) {\r\n                if (this.AcceptsReturn === true) {\r\n                    proxy.enterText('\\n');\r\n                    args.Handled = true;\r\n                }\r\n            } else if (args.Char != null && !args.Modifiers.Ctrl && !args.Modifiers.Alt) {\r\n                proxy.enterText(args.Char);\r\n                args.Handled = true;\r\n            }\r\n            proxy.end();\r\n        }\r\n\r\n        private _KeyDownBackSpace(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Shift || modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var anchor = proxy.selAnchor;\r\n            var cursor = proxy.selCursor;\r\n            var start = 0;\r\n            var length = 0;\r\n\r\n            if (cursor !== anchor) {\r\n                length = Math.abs(cursor - anchor);\r\n                start = Math.min(anchor, cursor);\r\n            } else if (modifiers.Ctrl) {\r\n                start = this.$Advancer.CursorPrevWord(cursor);\r\n                length = cursor - start;\r\n            } else if (cursor > 0) {\r\n                start = this.$Advancer.CursorPrevChar(cursor);\r\n                length = cursor - start;\r\n            }\r\n\r\n            proxy.removeText(start, length);\r\n            return true;\r\n        }\r\n\r\n        private _KeyDownDelete(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Shift || modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var anchor = proxy.selAnchor;\r\n            var cursor = proxy.selCursor;\r\n            var start = 0;\r\n            var length = 0;\r\n\r\n            if (cursor !== anchor) {\r\n                length = Math.abs(cursor - anchor);\r\n                start = Math.min(anchor, cursor);\r\n            } else if (modifiers.Ctrl) {\r\n                //Ctrl+Delete => delete the word start at the cursor\r\n                length = this.$Advancer.CursorNextWord(cursor) - cursor;\r\n                start = cursor;\r\n            } else {\r\n                length = this.$Advancer.CursorNextChar(cursor) - cursor;\r\n                start = cursor;\r\n            }\r\n\r\n            return proxy.removeText(start, length);\r\n        }\r\n\r\n        private _KeyDownPageDown(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var anchor = proxy.selAnchor;\r\n            var cursor = proxy.selCursor;\r\n\r\n            cursor = this.$Advancer.CursorDown(cursor, true);\r\n\r\n            if (!modifiers.Shift)\r\n                anchor = cursor;\r\n\r\n            return proxy.setAnchorCursor(anchor, cursor);\r\n        }\r\n\r\n        private _KeyDownPageUp(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var anchor = proxy.selAnchor;\r\n            var cursor = proxy.selCursor;\r\n\r\n            cursor = this.$Advancer.CursorUp(cursor, true);\r\n\r\n            if (!modifiers.Shift)\r\n                anchor = cursor;\r\n\r\n            return proxy.setAnchorCursor(anchor, cursor);\r\n        }\r\n\r\n        private _KeyDownHome(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var anchor = proxy.selAnchor;\r\n            var cursor = proxy.selCursor;\r\n\r\n            if (modifiers.Ctrl) {\r\n                cursor = this.$Advancer.CursorBegin(cursor);\r\n            } else {\r\n                cursor = this.$Advancer.CursorLineBegin(cursor);\r\n            }\r\n\r\n            if (!modifiers.Shift)\r\n                anchor = cursor;\r\n\r\n            return proxy.setAnchorCursor(anchor, cursor);\r\n        }\r\n\r\n        private _KeyDownEnd(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var anchor = proxy.selAnchor;\r\n            var cursor = proxy.selCursor;\r\n\r\n            if (modifiers.Ctrl) {\r\n                cursor = this.$Advancer.CursorEnd(cursor);\r\n            } else {\r\n                cursor = this.$Advancer.CursorLineEnd(cursor);\r\n            }\r\n\r\n            if (!modifiers.Shift)\r\n                anchor = cursor;\r\n\r\n            return proxy.setAnchorCursor(anchor, cursor);\r\n        }\r\n\r\n        private _KeyDownLeft(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var anchor = proxy.selAnchor;\r\n            var cursor = proxy.selCursor;\r\n\r\n            if (modifiers.Ctrl) {\r\n                cursor = this.$Advancer.CursorPrevWord(cursor);\r\n            } else if (!modifiers.Shift && anchor !== cursor) {\r\n                cursor = Math.min(anchor, cursor);\r\n            } else {\r\n                cursor = this.$Advancer.CursorPrevChar(cursor);\r\n            }\r\n\r\n            if (!modifiers.Shift)\r\n                anchor = cursor;\r\n\r\n            return proxy.setAnchorCursor(anchor, cursor);\r\n        }\r\n\r\n        private _KeyDownRight(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var anchor = proxy.selAnchor;\r\n            var cursor = proxy.selCursor;\r\n\r\n            if (modifiers.Ctrl) {\r\n                cursor = this.$Advancer.CursorNextWord(cursor);\r\n            } else if (!modifiers.Shift && anchor !== cursor) {\r\n                cursor = Math.max(anchor, cursor);\r\n            } else {\r\n                cursor = this.$Advancer.CursorNextChar(cursor);\r\n            }\r\n\r\n            if (!modifiers.Shift)\r\n                anchor = cursor;\r\n\r\n            return proxy.setAnchorCursor(anchor, cursor);\r\n        }\r\n\r\n        private _KeyDownDown(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var cursor = this.$Advancer.CursorDown(proxy.selCursor, false);\r\n            var anchor = proxy.selAnchor;\r\n            if (!modifiers.Shift)\r\n                anchor = cursor;\r\n            return proxy.setAnchorCursor(anchor, cursor);\r\n        }\r\n\r\n        private _KeyDownUp(modifiers: Input.IModifiersOn): boolean {\r\n            if (modifiers.Alt)\r\n                return false;\r\n\r\n            var proxy = this.$Proxy;\r\n            var cursor = this.$Advancer.CursorUp(proxy.selCursor, false);\r\n            var anchor = proxy.selAnchor;\r\n            if (!modifiers.Shift)\r\n                anchor = cursor;\r\n            return proxy.setAnchorCursor(anchor, cursor);\r\n        }\r\n    }\r\n    Fayde.RegisterType(TextBoxBase, Fayde.XMLNSINTERNAL);\r\n\r\n    module reactions {\r\n        DPReaction<Media.Brush>(TextBoxBase.CaretBrushProperty, (tbb: TextBoxBase, ov, nv) => {\r\n            tbb.$View.setCaretBrush(nv);\r\n        });\r\n        DPReaction<number>(TextBoxBase.SelectionStartProperty, (tbb: TextBoxBase, ov, nv) => {\r\n            tbb.$Proxy.setSelectionStart(nv);\r\n            tbb.$View.setSelectionStart(nv);\r\n        }, false);\r\n        DPReaction<number>(TextBoxBase.SelectionLengthProperty, (tbb: TextBoxBase, ov, nv) => {\r\n            tbb.$Proxy.setSelectionLength(nv);\r\n            tbb.$View.setSelectionLength(nv);\r\n        }, false);\r\n        DPReaction<Media.Brush>(TextBoxBase.SelectionBackgroundProperty, (tbb: TextBoxBase, ov, nv) => {\r\n            tbb.$View.setFontAttr(\"selectionBackground\", nv);\r\n            tbb.XamlNode.LayoutUpdater.invalidate();\r\n        });\r\n        DPReaction<Media.Brush>(TextBoxBase.SelectionForegroundProperty, (tbb: TextBoxBase, ov, nv) => {\r\n            tbb.$View.setFontAttr(\"selectionForeground\", nv);\r\n            tbb.XamlNode.LayoutUpdater.invalidate();\r\n        });\r\n        DPReaction<number>(TextBoxBase.MaxLengthProperty, (tbb: TextBoxBase, ov, nv) => {\r\n            tbb.$Proxy.maxLength = nv;\r\n        }, false);\r\n    }\r\n\r\n    function positiveIntValidator(dobj: DependencyObject, propd: DependencyProperty, value: any): boolean {\r\n        if (typeof value !== 'number')\r\n            return false;\r\n        return value >= 0;\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/ToolTip.ts",
    "content": "/// <reference path=\"ContentControl.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class ToolTip extends ContentControl {\r\n        static HorizontalOffsetProperty = DependencyProperty.Register(\"HorizontalOffset\", () => Number, ToolTip, 0, (d, args) => (<ToolTip>d).OnHorizontalOffsetChanged(args));\r\n        static VerticalOffsetProperty = DependencyProperty.Register(\"VerticalOffset\", () => Number, ToolTip, 0, (d, args) => (<ToolTip>d).OnVerticalOffsetChanged(args));\r\n        static IsOpenProperty = DependencyProperty.Register(\"IsOpen\", () => Boolean, ToolTip, false, (d, args) => (<ToolTip>d).OnIsOpenChanged(args));\r\n        static PlacementProperty = DependencyProperty.Register(\"Placement\", () => new Enum(PlacementMode), ToolTip, PlacementMode.Mouse);\r\n        static PlacementTargetProperty = DependencyProperty.Register(\"PlacementTarget\", () => UIElement, ToolTip);\r\n        HorizontalOffset: number;\r\n        VerticalOffset: number;\r\n        IsOpen: boolean;\r\n        Placement: PlacementMode;\r\n        PlacementTarget: UIElement;\r\n\r\n        private _TooltipParent: FrameworkElement = null;\r\n        private _TooltipParentDCListener: Providers.IPropertyChangedListener = null;\r\n        get TooltipParent(): FrameworkElement { return this._TooltipParent; }\r\n        set TooltipParent(value: FrameworkElement) {\r\n            if (this._TooltipParentDCListener)\r\n                this._TooltipParentDCListener.Detach();\r\n            this._TooltipParent = value;\r\n            if (this._TooltipParent)\r\n                this._TooltipParentDCListener = DependencyObject.DataContextProperty.Store.ListenToChanged(this._TooltipParent, DependencyObject.DataContextProperty, this.OnTooltipParentDataContextChanged, this);\r\n        }\r\n        PlacementOverride: PlacementMode = null;\r\n        PlacementTargetOverride: UIElement = null;\r\n\r\n        Opened = new RoutedEvent<RoutedEventArgs>();\r\n        Closed = new RoutedEvent<RoutedEventArgs>();\r\n\r\n        private _ParentPopup: Primitives.Popup = null;\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = ToolTip;\r\n        }\r\n\r\n        OnApplyTemplate() {\r\n            super.OnApplyTemplate();\r\n            this.UpdateVisualState(false);\r\n        }\r\n\r\n        private OnHorizontalOffsetChanged(args: DependencyPropertyChangedEventArgs) {\r\n            if (args.NewValue !== args.OldValue)\r\n                this.OnOffsetChanged(args.NewValue, 0);\r\n        }\r\n        private OnVerticalOffsetChanged(args: DependencyPropertyChangedEventArgs) {\r\n            if (args.NewValue !== args.OldValue)\r\n                this.OnOffsetChanged(0, args.NewValue);\r\n        }\r\n        private OnIsOpenChanged(args: DependencyPropertyChangedEventArgs) {\r\n            if (args.NewValue) {\r\n                if (!this._ParentPopup)\r\n                    this.HookupParentPopup();\r\n                this._ParentPopup.IsOpen = true;\r\n                this.PerformPlacement(this.HorizontalOffset, this.VerticalOffset);\r\n            } else {\r\n                this._ParentPopup.IsOpen = false;\r\n            }\r\n            this.UpdateVisualState();\r\n        }\r\n        private OnOffsetChanged(horizontalOffset: number, verticalOffset: number) {\r\n            if (!this._ParentPopup || !this.IsOpen)\r\n                return;\r\n            this.PerformPlacement(horizontalOffset, verticalOffset);\r\n        }\r\n        private OnLayoutUpdated(sender: any, e: nullstone.IEventArgs) {\r\n            if (this._ParentPopup)\r\n                this.PerformPlacement(this.HorizontalOffset, this.VerticalOffset);\r\n        }\r\n        private OnTooltipParentDataContextChanged(sender: any, args: IDependencyPropertyChangedEventArgs) {\r\n            if (this._ParentPopup && this.TooltipParent)\r\n                this._ParentPopup.DataContext = this.TooltipParent.DataContext;\r\n        }\r\n\r\n        private HookupParentPopup() {\r\n            console.assert(!this._ParentPopup, \"this._parentPopup should be null, we want to set visual tree once\");\r\n\r\n            var pp = this._ParentPopup = new Primitives.Popup();\r\n            pp.DataContext = !this.TooltipParent ? null : this.TooltipParent.DataContext;\r\n\r\n            pp.Opened.on(this.OnPopupOpened, this);\r\n            pp.Closed.on(this.OnPopupClosed, this);\r\n            this.IsTabStop = false;\r\n\r\n            pp.XamlNode.RegisterInitiator(this._TooltipParent);\r\n            pp.Child = this;\r\n\r\n            pp.IsHitTestVisible = false;\r\n            this.IsHitTestVisible = false;\r\n        }\r\n        private OnPopupOpened(sender: any, e: nullstone.IEventArgs) {\r\n            var args = new RoutedEventArgs();\r\n            args.OriginalSource = this;\r\n            this.Opened.raise(this, args);\r\n            this.LayoutUpdated.on(this.OnLayoutUpdated, this);\r\n        }\r\n        private OnPopupClosed(sender: any, e: nullstone.IEventArgs) {\r\n            var args = new RoutedEventArgs();\r\n            args.OriginalSource = this;\r\n            this.Closed.raise(this, args);\r\n            this.LayoutUpdated.off(this.OnLayoutUpdated, this);\r\n        }\r\n        private PerformPlacement(horizontalOffset: number, verticalOffset: number) {\r\n            if (!this.IsOpen)\r\n                return;\r\n            var root = <FrameworkElement>Application.Current.RootVisual;\r\n            if (!root)\r\n                return;\r\n\r\n            var mode = this.PlacementOverride != null ? this.PlacementOverride : this.Placement;\r\n            var target = <FrameworkElement>(this.PlacementTargetOverride || this.PlacementTarget);\r\n            var targetBounds = new minerva.Rect();\r\n\r\n            var point: Point = ToolTipService.MousePosition;\r\n            if (mode !== PlacementMode.Mouse) {\r\n                point = new Point();\r\n                try {\r\n                    if (target != null) {\r\n                        targetBounds = new minerva.Rect(0, 0, target.ActualWidth, target.ActualHeight);\r\n                        targetBounds = target.TransformToVisual(null).TransformBounds(targetBounds);\r\n                        point.x = targetBounds.x;\r\n                        point.y = targetBounds.y;\r\n                    }\r\n                } catch (err) {\r\n                    console.warn(\"Could not transform the tooltip point.\");\r\n                    return;\r\n                }\r\n            }\r\n\r\n            //TODO: Handle FlowDirection\r\n\r\n            //Move based on PlacementMode\r\n            switch (mode) {\r\n                case PlacementMode.Top:\r\n                    point.y = targetBounds.y - this.ActualHeight;\r\n                    break;\r\n                case PlacementMode.Bottom:\r\n                    point.y = targetBounds.y + targetBounds.height;\r\n                    break;\r\n                case PlacementMode.Left:\r\n                    point.x = targetBounds.x - this.ActualWidth;\r\n                    break;\r\n                case PlacementMode.Right:\r\n                    point.x = targetBounds.x + targetBounds.width;\r\n                    break;\r\n                case PlacementMode.Mouse:\r\n                    point.y += new TextBox().FontSize; // FIXME: Just a guess, it's about right.\r\n                    break;\r\n                default:\r\n                    throw new NotSupportedException(\"PlacementMode '\" + mode + \"' is not supported.\");\r\n            }\r\n\r\n            //Constrain X\r\n            var rootWidth = root.ActualWidth;\r\n            if ((point.x + this.ActualWidth) > rootWidth) {\r\n                if (mode === PlacementMode.Right)\r\n                    point.x = targetBounds.x - this.ActualWidth;\r\n                else\r\n                    point.x = rootWidth - this.ActualWidth;\r\n            } else if (point.x < 0) {\r\n                if (mode === PlacementMode.Left)\r\n                    point.x = targetBounds.x + targetBounds.width;\r\n                else\r\n                    point.x = 0;\r\n            }\r\n\r\n            //Constrain Y\r\n            var rootHeight = root.ActualHeight;\r\n            if ((point.y + this.ActualHeight) > rootHeight) {\r\n                if (mode === PlacementMode.Bottom)\r\n                    point.y = targetBounds.y - this.ActualHeight;\r\n                else\r\n                    point.y = rootHeight - this.ActualHeight;\r\n            } else if (point.y < 0) {\r\n                if (mode === PlacementMode.Top)\r\n                    point.y = targetBounds.y + targetBounds.height;\r\n                else\r\n                    point.y = 0;\r\n            }\r\n\r\n            this._ParentPopup.VerticalOffset = point.y;\r\n            this._ParentPopup.HorizontalOffset = point.x;\r\n        }\r\n\r\n        GoToStates(gotoFunc: (state: string) => boolean) {\r\n            if (this.IsOpen)\r\n                gotoFunc(\"Open\");\r\n            else\r\n                gotoFunc(\"Closed\");\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ToolTip);\r\n    TemplateVisualStates(ToolTip,\r\n        { GroupName: \"OpenStates\", Name: \"Closed\" },\r\n        { GroupName: \"OpenStates\", Name: \"Open\" });\r\n}"
  },
  {
    "path": "src/Controls/ToolTipService.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../Primitives/Point.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    var AssignedToolTipProperty = DependencyProperty.Register(\"AssignedToolTip\", () => ToolTip, UIElement, null);\r\n    \r\n    var betweenShowDelay = 100;\r\n    var initialShowDelay = 400;\r\n    var showDuration = 5000;\r\n\r\n    function toolTipChanged(dobj: DependencyObject, args: DependencyPropertyChangedEventArgs) {\r\n        var owner = <UIElement>dobj;\r\n        var tooltip = args.NewValue;\r\n\r\n        if (args.OldValue)\r\n            slave.UnregisterTooltip(owner);\r\n\r\n        if (!tooltip)\r\n            return;\r\n\r\n        slave.RegisterTooltip(owner, tooltip);\r\n        slave.SetRootVisual(owner);\r\n    }\r\n    export class ToolTipService {\r\n        static ToolTipProperty = DependencyProperty.RegisterAttached(\"ToolTip\", () => DependencyObject, ToolTipService, undefined, toolTipChanged);\r\n        static GetToolTip(dobj: DependencyObject): ToolTip { return dobj.GetValue(ToolTipService.ToolTipProperty); }\r\n        static SetToolTip(dobj: DependencyObject, value: ToolTip) { dobj.SetValue(ToolTipService.ToolTipProperty, value); }\r\n\r\n        static PlacementProperty = DependencyProperty.RegisterAttached(\"Placement\", () => new Enum(PlacementMode), ToolTipService);\r\n        static GetPlacement(dobj: DependencyObject): PlacementMode { return dobj.GetValue(ToolTipService.PlacementProperty); }\r\n        static SetPlacement(dobj: DependencyObject, value: PlacementMode) { dobj.SetValue(ToolTipService.PlacementProperty, value); }\r\n\r\n        static PlacementTargetProperty = DependencyProperty.RegisterAttached(\"PlacementTarget\", () => UIElement, ToolTipService);\r\n        static GetPlacementTarget(dobj: DependencyObject): UIElement { return dobj.GetValue(ToolTipService.PlacementTargetProperty); }\r\n        static SetPlacementTarget(dobj: DependencyObject, value: UIElement) { dobj.SetValue(ToolTipService.PlacementTargetProperty, value); }\r\n\r\n        static get MousePosition(): Point {\r\n            return slave.MousePosition;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ToolTipService);\r\n\r\n\r\n    class ToolTipServiceSlave {\r\n        MousePosition: Point = new Point();\r\n        private _RootVisual: FrameworkElement = null;\r\n        private _CurrentTooltip: ToolTip = null;\r\n        private _LastEnterSource: any = null;\r\n        private _Owner: UIElement;\r\n        private _LastOpened: number = 0;\r\n        private _OpenInterval: number = null;\r\n        private _CloseInterval: number = null;\r\n\r\n        SetRootVisual(owner: UIElement) {\r\n            if (this._RootVisual)\r\n                return;\r\n            var updater = owner.XamlNode.LayoutUpdater;\r\n            var surface = <Surface>updater.tree.surface;\r\n            if (!surface)\r\n                return;\r\n            var rv = this._RootVisual = <FrameworkElement>surface.App.RootVisual;\r\n            if (!rv)\r\n                return;\r\n            // keep caching mouse position because we can't query it from Silverlight \r\n            rv.MouseMove.on(this.OnRootMouseMove, this);\r\n        }\r\n        private OnRootMouseMove(sender: any, e: Input.MouseEventArgs) {\r\n            this.MousePosition = e.GetPosition(null);\r\n        }\r\n\r\n        RegisterTooltip(owner: UIElement, tooltip: any) {\r\n            console.assert(owner != null, \"ToolTip must have an owner\");\r\n            console.assert(tooltip != null, \"ToolTip can not be null\");\r\n\r\n            owner.MouseEnter.on(this.OnOwnerMouseEnter, this);\r\n            owner.MouseLeave.on(this.OnOwnerMouseLeave, this);\r\n            owner.MouseLeftButtonDown.on(this.OnOwnerMouseLeftButtonDown, this);\r\n            owner.KeyDown.on(this.OnOwnerKeyDown, this);\r\n            var converted = this.ConvertToToolTip(tooltip);\r\n            owner.SetValue(AssignedToolTipProperty, converted);\r\n            if (owner instanceof FrameworkElement)\r\n                converted.TooltipParent = <FrameworkElement>owner;\r\n        }\r\n        UnregisterTooltip(owner: UIElement) {\r\n            console.assert(owner != null, \"owner element is required\");\r\n\r\n            var tooltip: ToolTip = owner.GetValue(AssignedToolTipProperty);\r\n            if (!tooltip || !(tooltip instanceof ToolTip))\r\n                return;\r\n\r\n            owner.MouseEnter.off(this.OnOwnerMouseEnter, this);\r\n            owner.MouseLeave.off(this.OnOwnerMouseLeave, this);\r\n            owner.MouseLeftButtonDown.off(this.OnOwnerMouseLeftButtonDown, this);\r\n            owner.KeyDown.off(this.OnOwnerKeyDown, this);\r\n\r\n            tooltip.TooltipParent = null;\r\n            if (tooltip.IsOpen) {\r\n                if (tooltip === this._CurrentTooltip) {\r\n                    window.clearInterval(this._CloseInterval);\r\n                    this._CurrentTooltip = null;\r\n                    this._Owner = null;\r\n                    this._LastEnterSource = null;\r\n                }\r\n\r\n                tooltip.IsOpen = false;\r\n            }\r\n\r\n            owner.ClearValue(AssignedToolTipProperty);\r\n        }\r\n\r\n        private OnOwnerMouseEnter(sender: any, e: Input.MouseEventArgs) {\r\n            this.MousePosition = e.GetPosition(null);\r\n            this.OnOwnerMouseEnterInternal(sender, e.OriginalSource);\r\n        }\r\n        private OnOwnerMouseLeave(sender: any, e: Input.MouseEventArgs) {\r\n            if (!this._CurrentTooltip) {\r\n                window.clearInterval(this._OpenInterval);\r\n                this._Owner = null;\r\n                this._LastEnterSource = null;\r\n                return;\r\n            }\r\n            this.CloseAutomaticToolTip();\r\n        }\r\n        private OnOwnerMouseLeftButtonDown(sender: any, e: Input.MouseButtonEventArgs) {\r\n            if (this._LastEnterSource && this._LastEnterSource === e.OriginalSource)\r\n                return;\r\n            if (this._Owner !== sender)\r\n                return;\r\n\r\n            if (!this._CurrentTooltip) {\r\n                window.clearInterval(this._OpenInterval);\r\n                this._Owner = null;\r\n                this._LastEnterSource = null;\r\n                return;\r\n            }\r\n\r\n            this.CloseAutomaticToolTip();\r\n        }\r\n        private OnOwnerKeyDown(sender: any, e: Input.KeyEventArgs) {\r\n            if (this._LastEnterSource && this._LastEnterSource === e.OriginalSource)\r\n                return;\r\n            if (this._Owner !== sender)\r\n                return;\r\n\r\n            if (!this._CurrentTooltip) {\r\n                window.clearInterval(this._OpenInterval);\r\n                this._Owner = null;\r\n                this._LastEnterSource = null;\r\n                return;\r\n            }\r\n\r\n            if (isSpecialKey(e.Key))\r\n                return;\r\n\r\n            this.CloseAutomaticToolTip();\r\n        }\r\n        private OnOwnerMouseEnterInternal(sender: any, source: any) {\r\n            if (this._LastEnterSource && this._LastEnterSource === source)\r\n                return;\r\n\r\n            if (this._CurrentTooltip) {\r\n                if (sender.GetValue(AssignedToolTipProperty) === this._CurrentTooltip)\r\n                    return;\r\n                this.CloseAutomaticToolTip();\r\n            }\r\n\r\n            this._Owner = sender;\r\n            this._LastEnterSource = source;\r\n\r\n            console.assert(!this._CurrentTooltip);\r\n\r\n            this.SetRootVisual(sender);\r\n\r\n            var sinceLastOpen = new Date().getTime() - this._LastOpened;\r\n            if (sinceLastOpen <= betweenShowDelay) {\r\n                this.OpenAutomaticToolTip();\r\n            } else {\r\n                this._OpenInterval = window.setInterval(() => this.OpenAutomaticToolTip(), initialShowDelay);\r\n            }\r\n        }\r\n\r\n        private ConvertToToolTip(o: any): ToolTip {\r\n            if (o instanceof ToolTip)\r\n                return o;\r\n\r\n            if (o instanceof FrameworkElement) {\r\n                var parent = (<FrameworkElement> o).Parent;\r\n                if (parent instanceof ToolTip)\r\n                    return <ToolTip>parent;\r\n            }\r\n\r\n            var tooltip = new ToolTip();\r\n            tooltip.Content = o;\r\n            return tooltip;\r\n        }\r\n\r\n        private OpenAutomaticToolTip() {\r\n            window.clearInterval(this._OpenInterval);\r\n\r\n            console.assert(this._Owner != null, \"ToolTip owner was not set prior to starting the open timer\");\r\n\r\n            var cur = this._CurrentTooltip = <ToolTip> this._Owner.GetValue(AssignedToolTipProperty);\r\n\r\n            if (cur != null) {\r\n                cur.PlacementOverride = ToolTipService.GetPlacement(this._Owner);\r\n                cur.PlacementTargetOverride = ToolTipService.GetPlacementTarget(this._Owner) || this._Owner;\r\n                cur.IsOpen = true;\r\n\r\n                this._CloseInterval = window.setInterval(() => this.CloseAutomaticToolTip(), showDuration);\r\n            }\r\n        }\r\n        private CloseAutomaticToolTip() {\r\n                window.clearInterval(this._CloseInterval);\r\n\r\n            var cur = this._CurrentTooltip;\r\n            cur.PlacementOverride = null;\r\n            cur.PlacementTargetOverride = null;\r\n            cur.IsOpen = false;\r\n            this._CurrentTooltip = null;\r\n\r\n            this._Owner = null;\r\n            this._LastEnterSource = null;\r\n\r\n            this._LastOpened = new Date().getTime();\r\n        }\r\n    }\r\n    var slave = new ToolTipServiceSlave();\r\n\r\n    var specialKeys: Input.Key[] =\r\n        [\r\n            Input.Key.Alt,\r\n            Input.Key.Back,\r\n            Input.Key.Delete,\r\n            Input.Key.Down,\r\n            Input.Key.End,\r\n            Input.Key.Home,\r\n            Input.Key.Insert,\r\n            Input.Key.Left,\r\n            Input.Key.PageDown,\r\n            Input.Key.PageUp,\r\n            Input.Key.Right,\r\n            Input.Key.Space,\r\n            Input.Key.Up\r\n        ];\r\n    function isSpecialKey(key: Input.Key): boolean {\r\n        return specialKeys.indexOf(key) > -1;\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/UserControl.ts",
    "content": "/// <reference path=\"Control.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export class UserControl extends Control {\r\n        static ContentProperty: DependencyProperty = DependencyProperty.Register(\"Content\", () => UIElement, UserControl);\r\n        Content: UIElement;\r\n\r\n        CreateLayoutUpdater () {\r\n            return new minerva.controls.usercontrol.UserControlUpdater();\r\n        }\r\n\r\n        InitializeComponent () {\r\n            this.ApplyTemplate();\r\n        }\r\n\r\n        constructor() {\r\n            super();\r\n            this.DefaultStyleKey = UserControl;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(UserControl);\r\n    Markup.Content(UserControl, UserControl.ContentProperty);\r\n\r\n    module reactions {\r\n        UIReaction<UIElement>(UserControl.ContentProperty, (updater, ov, nv, uc?: UserControl) => {\r\n            var error = new BError();\r\n            if (ov instanceof UIElement)\r\n                uc.XamlNode.DetachVisualChild(ov, error);\r\n            if (nv instanceof UIElement)\r\n                uc.XamlNode.AttachVisualChild(nv, error);\r\n            if (error.Message)\r\n                error.ThrowException();\r\n            updater.updateBounds();\r\n        }, false, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Controls/VirtualizingPanel.ts",
    "content": "/// <reference path=\"Panel.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    export enum VirtualizationMode {\r\n        Standard = 0,\r\n        Recycling = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(VirtualizationMode, \"VirtualizationMode\");\r\n\r\n    export class VirtualizingPanel extends Panel {\r\n        static VirtualizationModeProperty = DependencyProperty.RegisterAttached(\"VirtualizationMode\", () => new Enum(VirtualizationMode), VirtualizingPanel, VirtualizationMode.Recycling);\r\n        static GetVirtualizationMode(d: DependencyObject): VirtualizationMode { return d.GetValue(VirtualizingPanel.VirtualizationModeProperty); }\r\n        static SetVirtualizationMode(d: DependencyObject, value: VirtualizationMode) { d.SetValue(VirtualizingPanel.VirtualizationModeProperty, value); }\r\n\r\n        static IsVirtualizingProperty = DependencyProperty.RegisterAttached(\"IsVirtualizing\", () => Boolean, VirtualizingPanel, false);\r\n        static GetIsVirtualizing(d: DependencyObject): boolean { return d.GetValue(VirtualizingPanel.IsVirtualizingProperty); }\r\n        static SetIsVirtualizing(d: DependencyObject, value: boolean) { d.SetValue(VirtualizingPanel.IsVirtualizingProperty, value); }\r\n\r\n        get ItemsControl(): ItemsControl {\r\n            var presenter = ItemsPresenter.Get(this);\r\n            return presenter ? presenter.ItemsControl : null;\r\n        }\r\n\r\n        OnItemsAdded(index: number, newItems: any[]) {\r\n            this.XamlNode.LayoutUpdater.invalidateMeasure();\r\n        }\r\n        OnItemsRemoved(index: number, oldItems: any[]) {\r\n            this.XamlNode.LayoutUpdater.invalidateMeasure();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(VirtualizingPanel);\r\n}"
  },
  {
    "path": "src/Controls/VirtualizingStackPanel.ts",
    "content": "/// <reference path=\"VirtualizingPanel.ts\" />\r\n\r\nmodule Fayde.Controls {\r\n    var LineDelta = 14.7;\r\n    var Wheelitude = 3;\r\n\r\n    import VirtualizingStackPanelUpdater = minerva.controls.virtualizingstackpanel.VirtualizingStackPanelUpdater;\r\n\r\n    export class VirtualizingStackPanel extends VirtualizingPanel implements Primitives.IScrollInfo {\r\n        CreateLayoutUpdater() {\r\n            var updater = new VirtualizingStackPanelUpdater();\r\n            updater.assets.scrollData = this._ScrollData = new Primitives.ScrollData();\r\n            updater.tree.containerOwner = new Internal.VirtualizingPanelContainerOwner(this);\r\n            return updater;\r\n        }\r\n\r\n        private _ScrollData: Primitives.ScrollData;\r\n\r\n        get ScrollOwner(): ScrollViewer {\r\n            return this._ScrollData.scrollOwner;\r\n        }\r\n\r\n        set ScrollOwner(value: ScrollViewer) {\r\n            this._ScrollData.scrollOwner = value;\r\n        }\r\n\r\n        get CanHorizontallyScroll(): boolean {\r\n            return this._ScrollData.canHorizontallyScroll;\r\n            ;\r\n        }\r\n\r\n        set CanHorizontallyScroll(value: boolean) {\r\n            var sd = this._ScrollData;\r\n            if (sd.canHorizontallyScroll !== value) {\r\n                sd.canHorizontallyScroll = value;\r\n                this.XamlNode.LayoutUpdater.invalidateMeasure();\r\n            }\r\n        }\r\n\r\n        get CanVerticallyScroll(): boolean {\r\n            return this._ScrollData.canVerticallyScroll;\r\n        }\r\n\r\n        set CanVerticallyScroll(value: boolean) {\r\n            var sd = this._ScrollData;\r\n            if (sd.canVerticallyScroll !== value) {\r\n                sd.canVerticallyScroll = value;\r\n                this.XamlNode.LayoutUpdater.invalidateMeasure();\r\n            }\r\n        }\r\n\r\n        get ExtentWidth(): number {\r\n            return this._ScrollData.extentWidth;\r\n        }\r\n\r\n        get ExtentHeight(): number {\r\n            return this._ScrollData.extentHeight;\r\n        }\r\n\r\n        get ViewportWidth(): number {\r\n            return this._ScrollData.viewportWidth;\r\n        }\r\n\r\n        get ViewportHeight(): number {\r\n            return this._ScrollData.viewportHeight;\r\n        }\r\n\r\n        get HorizontalOffset(): number {\r\n            return this._ScrollData.offsetX;\r\n        }\r\n\r\n        get VerticalOffset(): number {\r\n            return this._ScrollData.offsetY;\r\n        }\r\n\r\n        LineUp(): boolean {\r\n            var sd = this._ScrollData;\r\n            if (this.Orientation === Fayde.Orientation.Horizontal)\r\n                return this.SetVerticalOffset(sd.offsetY - LineDelta);\r\n            return this.SetVerticalOffset(sd.offsetY - 1);\r\n        }\r\n\r\n        LineDown(): boolean {\r\n            var sd = this._ScrollData;\r\n            if (this.Orientation === Fayde.Orientation.Horizontal)\r\n                return this.SetVerticalOffset(sd.offsetY + LineDelta);\r\n            return this.SetVerticalOffset(sd.offsetY + 1);\r\n        }\r\n\r\n        LineLeft(): boolean {\r\n            var sd = this._ScrollData;\r\n            if (this.Orientation === Fayde.Orientation.Vertical)\r\n                return this.SetHorizontalOffset(sd.offsetX - LineDelta);\r\n            return this.SetHorizontalOffset(sd.offsetX - 1);\r\n        }\r\n\r\n        LineRight(): boolean {\r\n            var sd = this._ScrollData;\r\n            if (this.Orientation === Fayde.Orientation.Vertical)\r\n                return this.SetHorizontalOffset(sd.offsetX + LineDelta);\r\n            return this.SetHorizontalOffset(sd.offsetX + 1);\r\n        }\r\n\r\n        MouseWheelUp(): boolean {\r\n            var sd = this._ScrollData;\r\n            if (this.Orientation === Fayde.Orientation.Horizontal)\r\n                return this.SetVerticalOffset(sd.offsetY - LineDelta * Wheelitude);\r\n            return this.SetVerticalOffset(sd.offsetY - Wheelitude);\r\n        }\r\n\r\n        MouseWheelDown(): boolean {\r\n            var sd = this._ScrollData;\r\n            if (this.Orientation === Fayde.Orientation.Horizontal)\r\n                return this.SetVerticalOffset(sd.offsetY + LineDelta * Wheelitude);\r\n            return this.SetVerticalOffset(sd.offsetY + Wheelitude);\r\n        }\r\n\r\n        MouseWheelLeft(): boolean {\r\n            var sd = this._ScrollData;\r\n            if (this.Orientation === Fayde.Orientation.Vertical)\r\n                return this.SetHorizontalOffset(sd.offsetX - LineDelta * Wheelitude);\r\n            return this.SetHorizontalOffset(sd.offsetX - Wheelitude);\r\n        }\r\n\r\n        MouseWheelRight(): boolean {\r\n            var sd = this._ScrollData;\r\n            if (this.Orientation === Fayde.Orientation.Vertical)\r\n                return this.SetHorizontalOffset(sd.offsetX + LineDelta * Wheelitude);\r\n            return this.SetHorizontalOffset(sd.offsetX + Wheelitude);\r\n        }\r\n\r\n        PageUp(): boolean {\r\n            var sd = this._ScrollData;\r\n            return this.SetVerticalOffset(sd.offsetY - sd.viewportHeight);\r\n        }\r\n\r\n        PageDown(): boolean {\r\n            var sd = this._ScrollData;\r\n            return this.SetVerticalOffset(sd.offsetY + sd.viewportHeight);\r\n        }\r\n\r\n        PageLeft(): boolean {\r\n            var sd = this._ScrollData;\r\n            return this.SetHorizontalOffset(sd.offsetX - sd.viewportWidth);\r\n        }\r\n\r\n        PageRight(): boolean {\r\n            var sd = this._ScrollData;\r\n            return this.SetHorizontalOffset(sd.offsetX + sd.viewportWidth);\r\n        }\r\n\r\n        MakeVisible(uie: UIElement, rectangle: minerva.Rect): minerva.Rect {\r\n            var exposed = new minerva.Rect();\r\n            var sd = this._ScrollData;\r\n\r\n            var uin = uie.XamlNode;\r\n            var isVertical = this.Orientation === Orientation.Vertical;\r\n            var enumerator = this.Children.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                var child = enumerator.current;\r\n                var childNode = child.XamlNode;\r\n                var childRenderSize = childNode.LayoutUpdater.assets.renderSize;\r\n                if (uin === childNode) {\r\n                    if (isVertical) {\r\n                        if (rectangle.x !== sd.offsetX)\r\n                            this.SetHorizontalOffset(rectangle.x);\r\n\r\n                        exposed.width = Math.min(childRenderSize.width, sd.viewportWidth);\r\n                        exposed.height = childRenderSize.height;\r\n                        exposed.x = sd.offsetX;\r\n                    } else {\r\n                        if (rectangle.y !== sd.offsetY)\r\n                            this.SetVerticalOffset(rectangle.y);\r\n\r\n                        exposed.height = Math.min(childRenderSize.height, sd.viewportHeight);\r\n                        exposed.width = childRenderSize.width;\r\n                        exposed.y = sd.offsetY;\r\n                    }\r\n                    return exposed;\r\n                }\r\n\r\n                if (isVertical)\r\n                    exposed.y += childRenderSize.height;\r\n                else\r\n                    exposed.x += childRenderSize.width;\r\n            }\r\n\r\n            throw new ArgumentException(\"Visual is not a child of this Panel\");\r\n        }\r\n\r\n        SetHorizontalOffset(offset: number): boolean {\r\n            var sd = this._ScrollData;\r\n            if (offset < 0 || sd.viewportWidth >= sd.extentWidth)\r\n                offset = 0;\r\n            else if ((offset + sd.viewportWidth) >= sd.extentWidth)\r\n                offset = sd.extentWidth - sd.viewportWidth;\r\n\r\n            if (sd.offsetX === offset)\r\n                return false;\r\n            sd.offsetX = offset;\r\n\r\n            if (this.Orientation === Fayde.Orientation.Horizontal)\r\n                this.XamlNode.LayoutUpdater.invalidateMeasure();\r\n            else\r\n                this.XamlNode.LayoutUpdater.invalidateArrange();\r\n\r\n            var scrollOwner = this.ScrollOwner;\r\n            if (scrollOwner)\r\n                scrollOwner.InvalidateScrollInfo();\r\n            return true;\r\n        }\r\n\r\n        SetVerticalOffset(offset: number): boolean {\r\n            var sd = this._ScrollData;\r\n            if (offset < 0 || sd.viewportHeight >= sd.extentHeight)\r\n                offset = 0;\r\n            else if ((offset + sd.viewportHeight) >= sd.extentHeight)\r\n                offset = sd.extentHeight - sd.viewportHeight;\r\n\r\n            if (sd.offsetY === offset)\r\n                return false;\r\n            sd.offsetY = offset;\r\n\r\n            if (this.Orientation === Fayde.Orientation.Vertical)\r\n                this.XamlNode.LayoutUpdater.invalidateMeasure();\r\n            else\r\n                this.XamlNode.LayoutUpdater.invalidateArrange();\r\n\r\n            var scrollOwner = this.ScrollOwner;\r\n            if (scrollOwner)\r\n                scrollOwner.InvalidateScrollInfo();\r\n            return true;\r\n        }\r\n\r\n        static OrientationProperty = DependencyProperty.Register(\"Orientation\", () => new Enum(Orientation), VirtualizingStackPanel, Orientation.Vertical);\r\n        Orientation: Orientation;\r\n\r\n        OnItemsAdded(index: number, newItems: any[]) {\r\n            super.OnItemsAdded(index, newItems);\r\n\r\n            var isHorizontal = this.Orientation === Orientation.Horizontal;\r\n            var offset = isHorizontal ? this.HorizontalOffset : this.VerticalOffset;\r\n            if (index <= offset)\r\n                isHorizontal ? this.SetHorizontalOffset(offset + newItems.length) : this.SetVerticalOffset(offset + newItems.length);\r\n\r\n            var scrollOwner = this.ScrollOwner;\r\n            if (scrollOwner)\r\n                scrollOwner.InvalidateScrollInfo();\r\n        }\r\n\r\n        OnItemsRemoved(index: number, oldItems: any[]) {\r\n            super.OnItemsRemoved(index, oldItems);\r\n\r\n            var ic = this.ItemsControl;\r\n            if (ic) {\r\n                var icm = ic.ItemContainersManager;\r\n                var children = this.Children;\r\n                for (var i = 0, len = oldItems.length; i < len; i++) {\r\n                    var oldItem = oldItems[i];\r\n                    var container = icm.ContainerFromItem(oldItem);\r\n                    if (container)\r\n                        children.Remove(container);\r\n                }\r\n            }\r\n\r\n            var isHorizontal = this.Orientation === Orientation.Horizontal;\r\n            var offset = isHorizontal ? this.HorizontalOffset : this.VerticalOffset;\r\n\r\n            var numBeforeOffset = Math.min(offset, index + oldItems.length) - index;\r\n            if (numBeforeOffset > 0)\r\n                isHorizontal ? this.SetHorizontalOffset(numBeforeOffset) : this.SetVerticalOffset(numBeforeOffset);\r\n\r\n            var scrollOwner = this.ScrollOwner;\r\n            if (scrollOwner)\r\n                scrollOwner.InvalidateScrollInfo();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(VirtualizingStackPanel);\r\n    nullstone.addTypeInterfaces(VirtualizingStackPanel, Primitives.IScrollInfo_);\r\n\r\n    module reactions {\r\n        UIReaction<minerva.Orientation>(VirtualizingStackPanel.OrientationProperty, (upd, ov, nv) => upd.invalidateMeasure(), false);\r\n    }\r\n}"
  },
  {
    "path": "src/Core/Clone.ts",
    "content": "interface ICloneable {\r\n    Clone(): any;\r\n}\r\n\r\nmodule Fayde {\r\n    export function Clone (value: any): any {\r\n        if (value === undefined)\r\n            return undefined;\r\n        if (value === null)\r\n            return null;\r\n        if (value instanceof Array)\r\n            return (<any[]>value).slice(0);\r\n        if (value !== Object(value)) //primitive\r\n            return value;\r\n        if (value.Clone instanceof Function)\r\n            return (<ICloneable>value).Clone();\r\n        return extend(new value.constructor(), value);\r\n    }\r\n\r\n    function extend (obj: any, ...args: any[]): any {\r\n        var s: any;\r\n        for (var i = 0, len = args.length; i < len; i++) {\r\n            if (s = args[i]) {\r\n                for (var prop in s) {\r\n                    obj[prop] = s[prop];\r\n                }\r\n            }\r\n        }\r\n        return obj;\r\n    }\r\n}"
  },
  {
    "path": "src/Core/DPReaction.ts",
    "content": "module Fayde {\r\n    export interface IDPReactionCallback<T> {\r\n        (dobj: DependencyObject, ov: T, nv: T): void;\r\n    }\r\n\r\n    export function DPReaction<TValue>(propd: DependencyProperty, callback?: IDPReactionCallback<TValue>, listen?: boolean) {\r\n        if (listen === false) {\r\n            propd.ChangedCallback = reaction<TValue>(callback);\r\n        } else {\r\n            propd.ChangedCallback = lReaction<TValue>(callback);\r\n        }\r\n    }\r\n\r\n    function reaction<T>(callback: IDPReactionCallback<T>) {\r\n        return (dobj: DependencyObject, args: DependencyPropertyChangedEventArgs) => {\r\n            callback && callback(dobj, args.OldValue, args.NewValue);\r\n        };\r\n    }\r\n\r\n    function lReaction<T>(callback: IDPReactionCallback<T>) {\r\n        return (dobj: DependencyObject, args: DependencyPropertyChangedEventArgs) => {\r\n            var ov = args.OldValue;\r\n            var nv = args.NewValue;\r\n            UnreactTo(ov, dobj);\r\n            callback && callback(dobj, ov, nv);\r\n            ReactTo(nv, dobj, () => callback(dobj, nv, nv));\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Core/DataTemplate.ts",
    "content": "/// <reference path=\"../Markup/Loader\" />\r\n\r\nmodule Fayde {\r\n    export class DataTemplate extends Markup.FrameworkTemplate {\r\n        static DataTypeProperty = DependencyProperty.Register(\"DataType\", () => IType_, DataTemplate);\r\n        DataType: Function;\r\n    }\r\n    Fayde.CoreLibrary.add(DataTemplate);\r\n}"
  },
  {
    "path": "src/Core/DependencyObject.ts",
    "content": "/// <reference path=\"XamlNode.ts\" />\r\n/// <reference path=\"XamlObject.ts\" />\r\n/// <reference path=\"DependencyProperty.ts\" />\r\n/// <reference path=\"Providers/PropertyStore.ts\" />\r\n/// <reference path=\"Providers/DataContextStore.ts\" />\r\n/// <reference path=\"DPReaction.ts\" />\r\n/// <reference path=\"../Runtime/React.ts\" />\r\n\r\nmodule Fayde {\r\n    export class DONode extends XamlNode {\r\n        XObject: DependencyObject;\r\n        constructor(xobj: DependencyObject) {\r\n            super(xobj);\r\n        }\r\n\r\n        OnParentChanged(oldParentNode: XamlNode, newParentNode: XamlNode) {\r\n            super.OnParentChanged(oldParentNode, newParentNode);\r\n            var propd = DependencyObject.DataContextProperty;\r\n            var storage = <Providers.IDataContextStorage>Providers.GetStorage(this.XObject, propd);\r\n            var newInherited = newParentNode ? newParentNode.DataContext : undefined;\r\n            (<Providers.DataContextStore>propd.Store).OnInheritedChanged(storage, newInherited);\r\n        }\r\n\r\n        get DataContext(): any { return this.XObject.DataContext; }\r\n        set DataContext(value: any) {\r\n            var propd = DependencyObject.DataContextProperty;\r\n            var storage = <Providers.IDataContextStorage>Providers.GetStorage(this.XObject, propd);\r\n            (<Providers.DataContextStore>propd.Store).OnInheritedChanged(storage, value);\r\n        }\r\n        OnDataContextChanged(oldDataContext: any, newDataContext: any) {\r\n            var dcpid = DependencyObject.DataContextProperty._ID.toString();\r\n            var exprs = <Expression[]>(<any>this.XObject)._Expressions;\r\n            var expr: Expression;\r\n            for (var id in exprs) {\r\n                expr = exprs[id];\r\n                if (!(expr instanceof Expression))\r\n                    continue;\r\n                //DataContextProperty expressions are updated in DataContextStore\r\n                if (id === dcpid)\r\n                    continue;\r\n                expr.OnDataContextChanged(newDataContext);\r\n            }\r\n            super.OnDataContextChanged(oldDataContext, newDataContext);\r\n        }\r\n    }\r\n\r\n    export class DependencyObject extends XamlObject implements ICloneable, Providers.IPropertyStorageOwner {\r\n        private _Expressions: Expression[] = [];\r\n        _PropertyStorage: Providers.IPropertyStorage[] = [];\r\n\r\n        static DataContextProperty = DependencyProperty.Register(\"DataContext\", () => Object, DependencyObject);\r\n        DataContext: any;\r\n\r\n        constructor() {\r\n            super();\r\n        }\r\n        XamlNode: DONode;\r\n        CreateNode(): DONode { return new DONode(this); }\r\n\r\n        GetValue(propd: DependencyProperty): any {\r\n            if (!propd)\r\n                throw new ArgumentException(\"No property specified.\");\r\n            var storage = Providers.GetStorage(this, propd);\r\n            return propd.Store.GetValue(storage);\r\n        }\r\n        SetValue(propd: DependencyProperty, value: any) {\r\n            if (!propd)\r\n                throw new ArgumentException(\"No property specified.\");\r\n            if (propd.IsReadOnly)\r\n                throw new InvalidOperationException(\"DependencyProperty '\" + (<any>propd.OwnerType).name + \".\" + propd.Name + \"' is read only.\");\r\n            this.SetValueInternal(propd, value);\r\n        }\r\n        SetValueInternal(propd: DependencyProperty, value: any) {\r\n            var expression: Expression;\r\n            if (value instanceof Expression) {\r\n                expression = value;\r\n                expression.Seal(this, propd);\r\n            }\r\n\r\n            var existing = this._Expressions[propd._ID];\r\n\r\n            var updateTwoWay = false;\r\n            var addingExpression = false;\r\n            if (expression) {\r\n                if (expression !== existing) {\r\n                    if (expression.IsAttached)\r\n                        throw new ArgumentException(\"Cannot attach the same Expression to multiple FrameworkElements\");\r\n\r\n                    if (existing)\r\n                        this._RemoveExpression(propd);\r\n                    this._AddExpression(propd, expression);\r\n                }\r\n                addingExpression = true;\r\n                value = expression.GetValue(propd);\r\n            } else if (existing) {\r\n                if (existing instanceof Data.BindingExpressionBase) {\r\n                    var binding = (<Data.BindingExpressionBase>existing).ParentBinding;\r\n                    if (binding.Mode === Data.BindingMode.TwoWay) {\r\n                        updateTwoWay = !existing.IsUpdating && !propd.IsCustom;\r\n                    } else if (!existing.IsUpdating || binding.Mode === Data.BindingMode.OneTime) {\r\n                        this._RemoveExpression(propd);\r\n                    }\r\n                } else if (!existing.IsUpdating) {\r\n                    this._RemoveExpression(propd);\r\n                }\r\n            }\r\n\r\n            var storage = Providers.GetStorage(this, propd);\r\n            try {\r\n                propd.Store.SetLocalValue(storage, value);\r\n                if (updateTwoWay)\r\n                    (<Data.BindingExpressionBase>existing)._TryUpdateSourceObject(value);\r\n            } catch (err) {\r\n                if (!addingExpression)\r\n                    throw err;\r\n                var msg = \"Error setting value: \" + err.toString();\r\n                msg += err.stack;\r\n                console.warn(msg);\r\n                propd.Store.SetLocalValue(storage, propd.DefaultValue);\r\n                if (updateTwoWay)\r\n                    (<Data.BindingExpressionBase>existing)._TryUpdateSourceObject(value);\r\n            }\r\n        }\r\n        SetCurrentValue(propd: DependencyProperty, value: any) {\r\n            var storage = Providers.GetStorage(this, propd);\r\n            propd.Store.SetLocalValue(storage, value);\r\n\r\n            var expr = <Data.BindingExpressionBase>this._Expressions[propd._ID];\r\n            if (expr instanceof Data.BindingExpressionBase)\r\n                expr._TryUpdateSourceObject(value);\r\n        }\r\n        ClearValue(propd: DependencyProperty) {\r\n            if (!propd)\r\n                throw new ArgumentException(\"No dependency property.\");\r\n            if (propd.IsReadOnly && !propd.IsCustom)\r\n                throw new ArgumentException(\"This property is readonly.\");\r\n            this._RemoveExpression(propd);\r\n\r\n            var storage = Providers.GetStorage(this, propd);\r\n            var anims = storage.Animations;\r\n            if (anims && anims.length > 0)\r\n                return;\r\n            propd.Store.ClearValue(storage);\r\n        }\r\n        ReadLocalValue(propd: DependencyProperty): any {\r\n            if (!propd)\r\n                throw new ArgumentException(\"No property specified.\");\r\n            var expr = this._Expressions[propd._ID];\r\n            var val: any;\r\n            if (expr)\r\n                val = expr.GetValue(propd);\r\n            else\r\n                val = this.ReadLocalValueInternal(propd);\r\n            if (val === undefined)\r\n                return DependencyProperty.UnsetValue;\r\n            return val;\r\n        }\r\n        ReadLocalValueInternal(propd: DependencyProperty): any {\r\n            var storage = Providers.GetStorage(this, propd);\r\n            return storage.Local;\r\n        }\r\n\r\n        private _AddExpression(propd: DependencyProperty, expr: Expression) {\r\n            this._Expressions[propd._ID] = expr;\r\n            expr.OnAttached(this);\r\n        }\r\n        private _RemoveExpression(propd: DependencyProperty) {\r\n            var expr = this._Expressions[propd._ID];\r\n            if (expr) {\r\n                this._Expressions[propd._ID] = undefined;\r\n                expr.OnDetached(this);\r\n            }\r\n        }\r\n        _HasDeferredValueExpression(propd: DependencyProperty) {\r\n            var expr = this._Expressions[propd._ID];\r\n            return expr instanceof DeferredValueExpression;\r\n        }\r\n        GetBindingExpression(propd: DependencyProperty): Data.BindingExpressionBase {\r\n            var expr = this._Expressions[propd._ID];\r\n            if (expr instanceof Data.BindingExpressionBase)\r\n                return <Data.BindingExpressionBase>expr;\r\n        }\r\n        HasValueOrExpression(propd: DependencyProperty): boolean {\r\n            if (this._Expressions[propd._ID] instanceof Expression)\r\n                return true;\r\n            return this.ReadLocalValueInternal(propd) !== undefined;\r\n        }\r\n        SetBinding(propd: DependencyProperty, binding: Data.Binding): Data.BindingExpressionBase {\r\n            if (!propd)\r\n                throw new ArgumentException(\"propd\");\r\n            if (!binding)\r\n                throw new ArgumentException(\"binding\");\r\n\r\n            var e = new Data.BindingExpression(binding);\r\n            this.SetValueInternal(propd, e);\r\n            return e;\r\n        }\r\n\r\n        CloneCore(source: DependencyObject) {\r\n            var sarr = source._PropertyStorage;\r\n            var darr = this._PropertyStorage;\r\n            if (!darr)\r\n                darr = this._PropertyStorage = [];\r\n            for (var id in sarr) {\r\n                var storage: Providers.IPropertyStorage = sarr[id];\r\n                darr[id] = storage.Property.Store.Clone(this, storage);\r\n            }\r\n        }\r\n\r\n        ListenToChanged (propd: DependencyProperty, func: (sender, args: IDependencyPropertyChangedEventArgs) => void, closure?: any): Providers.IPropertyChangedListener {\r\n            return propd.Store.ListenToChanged(this, propd, func, closure);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DependencyObject);\r\n\r\n    DependencyObject.DataContextProperty.Store = Fayde.Providers.DataContextStore.Instance;\r\n}"
  },
  {
    "path": "src/Core/DependencyProperty.ts",
    "content": "/// <reference path=\"Providers/ImmutableStore.ts\" />\r\n\r\ninterface IOutIsValid {\r\n    IsValid: boolean;\r\n}\r\n\r\ninterface IType {\r\n}\r\n\r\nclass DependencyProperty {\r\n    static UnsetValue = {};\r\n\r\n    private static _IDs: DependencyProperty[] = [];\r\n    private static _LastID: number = 0;\r\n\r\n    _ID: number;\r\n    Name: string;\r\n    GetTargetType: () => IType;\r\n    OwnerType: any;\r\n    DefaultValue: any;\r\n    IsReadOnly: boolean = false;\r\n    IsCustom: boolean = true;\r\n    IsAttached: boolean = false;\r\n    IsInheritable: boolean = false;\r\n    IsImmutable: boolean = false;\r\n    ChangedCallback: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void;\r\n    AlwaysChange: boolean = false;\r\n    Store: Fayde.Providers.PropertyStore;\r\n    private _Coercer: (dobj: Fayde.DependencyObject, propd: DependencyProperty, value: any) => any = null;\r\n    private _Validator: (dobj: Fayde.DependencyObject, propd: DependencyProperty, value: any, original: any) => boolean = null;\r\n\r\n    static Register (name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void) {\r\n        var propd = new DependencyProperty();\r\n        propd.Name = name;\r\n        propd.GetTargetType = getTargetType;\r\n        propd.OwnerType = ownerType;\r\n        propd.DefaultValue = defaultValue;\r\n        propd.ChangedCallback = changedCallback;\r\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\r\n        propd.FinishRegister();\r\n        return propd;\r\n    }\r\n\r\n    static RegisterReadOnly (name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void) {\r\n        var propd = new DependencyProperty();\r\n        propd.Name = name;\r\n        propd.GetTargetType = getTargetType;\r\n        propd.OwnerType = ownerType;\r\n        propd.DefaultValue = defaultValue;\r\n        propd.ChangedCallback = changedCallback;\r\n        propd.IsReadOnly = true;\r\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\r\n        propd.FinishRegister();\r\n        return propd;\r\n    }\r\n\r\n    static RegisterAttached (name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void) {\r\n        var propd = new DependencyProperty();\r\n        propd.Name = name;\r\n        propd.GetTargetType = getTargetType;\r\n        propd.OwnerType = ownerType;\r\n        propd.DefaultValue = defaultValue;\r\n        propd.ChangedCallback = changedCallback;\r\n        propd.IsAttached = true;\r\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\r\n        propd.FinishRegister();\r\n        return propd;\r\n    }\r\n\r\n    static RegisterCore (name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void) {\r\n        var propd = new DependencyProperty();\r\n        propd.Name = name;\r\n        propd.GetTargetType = getTargetType;\r\n        propd.OwnerType = ownerType;\r\n        propd.DefaultValue = defaultValue;\r\n        propd.ChangedCallback = changedCallback;\r\n        propd.IsCustom = false;\r\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\r\n        propd.FinishRegister();\r\n        return propd;\r\n    }\r\n\r\n    static RegisterReadOnlyCore (name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void) {\r\n        var propd = new DependencyProperty();\r\n        propd.Name = name;\r\n        propd.GetTargetType = getTargetType;\r\n        propd.OwnerType = ownerType;\r\n        propd.DefaultValue = defaultValue;\r\n        propd.ChangedCallback = changedCallback;\r\n        propd.IsCustom = false;\r\n        propd.IsReadOnly = true;\r\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\r\n        propd.FinishRegister();\r\n        return propd;\r\n    }\r\n\r\n    static RegisterAttachedCore (name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void) {\r\n        var propd = new DependencyProperty();\r\n        propd.Name = name;\r\n        propd.GetTargetType = getTargetType;\r\n        propd.OwnerType = ownerType;\r\n        propd.DefaultValue = defaultValue;\r\n        propd.ChangedCallback = changedCallback;\r\n        propd.IsCustom = false;\r\n        propd.IsAttached = true;\r\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\r\n        propd.FinishRegister();\r\n        return propd;\r\n    }\r\n\r\n    static RegisterImmutable<T>(name: string, getTargetType: () => IType, ownerType: any): ImmutableDependencyProperty<T> {\r\n        var propd = new ImmutableDependencyProperty<T>();\r\n        propd.Name = name;\r\n        propd.GetTargetType = getTargetType;\r\n        propd.OwnerType = ownerType;\r\n        propd.DefaultValue = undefined;\r\n        propd.IsImmutable = true;\r\n        propd.Store = Fayde.Providers.ImmutableStore.Instance;\r\n        propd.FinishRegister();\r\n        return propd;\r\n    }\r\n\r\n    static RegisterInheritable (name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void) {\r\n        var propd = new DependencyProperty();\r\n        propd.Name = name;\r\n        propd.GetTargetType = getTargetType;\r\n        propd.OwnerType = ownerType;\r\n        propd.DefaultValue = defaultValue;\r\n        propd.ChangedCallback = changedCallback;\r\n        propd.IsCustom = true;\r\n        propd.IsInheritable = true;\r\n        propd.Store = Fayde.Providers.InheritedStore.Instance;\r\n        propd.FinishRegister();\r\n        return propd;\r\n    }\r\n\r\n    static RegisterFull (name: string, getTargetType: () => IType, ownerType: any, defaultValue?: any, changedCallback?: (dobj: Fayde.DependencyObject, args: DependencyPropertyChangedEventArgs) => void, coercer?: (dobj: Fayde.DependencyObject, propd: DependencyProperty, value: any) => any, alwaysChange?: boolean, validator?: (dobj: Fayde.DependencyObject, propd: DependencyProperty, value: any) => boolean, isCustom?: boolean, isReadOnly?: boolean, isAttached?: boolean): DependencyProperty {\r\n        var propd = new DependencyProperty();\r\n        propd.Name = name;\r\n        propd.GetTargetType = getTargetType;\r\n        propd.OwnerType = ownerType;\r\n        propd.DefaultValue = defaultValue;\r\n        propd.ChangedCallback = changedCallback;\r\n        propd._Coercer = coercer;\r\n        propd.AlwaysChange = alwaysChange;\r\n        propd._Validator = validator;\r\n        propd.IsCustom = isCustom !== false;\r\n        propd.IsReadOnly = isReadOnly === true;\r\n        propd.IsAttached = isAttached === true;\r\n        propd.Store = Fayde.Providers.PropertyStore.Instance;\r\n        propd.FinishRegister();\r\n        return propd;\r\n    }\r\n\r\n    private FinishRegister () {\r\n        var name = this.Name;\r\n        var ownerType = this.OwnerType;\r\n        if (!ownerType || typeof ownerType !== \"function\")\r\n            throw new InvalidOperationException(\"DependencyProperty does not have a valid OwnerType.\");\r\n        var registeredDPs = (<any>ownerType)._RegisteredDPs;\r\n        if (!registeredDPs) {\r\n            var registeredDPs: any = {};\r\n            Object.defineProperty(ownerType, \"_RegisteredDPs\", {\r\n                value: registeredDPs,\r\n                enumerable: false,\r\n                writable: false\r\n            });\r\n        }\r\n        if (registeredDPs[name] !== undefined)\r\n            throw new InvalidOperationException(\"Dependency Property is already registered. [\" + name + \"]\");\r\n        registeredDPs[name] = this;\r\n        this._ID = DependencyProperty._LastID = DependencyProperty._LastID + 1;\r\n        DependencyProperty._IDs[this._ID] = this;\r\n\r\n        if (this.IsImmutable)\r\n            return;\r\n\r\n        var propd = this;\r\n        var getter = function () {\r\n            return (<Fayde.DependencyObject>this).GetValue(propd);\r\n        };\r\n        var setter = function (value) {\r\n            (<Fayde.DependencyObject>this).SetValue(propd, value);\r\n        };\r\n        if (this.IsReadOnly)\r\n            setter = function (value) {\r\n                throw new Exception(\"Property [\" + propd.Name + \"] is readonly.\");\r\n            };\r\n        Object.defineProperty(ownerType.prototype, this.Name, {\r\n            get: getter,\r\n            set: setter,\r\n            configurable: true\r\n        });\r\n    }\r\n\r\n    ExtendTo (type: any): DependencyProperty {\r\n        var registeredDPs = type._RegisteredDPs;\r\n        if (!registeredDPs) {\r\n            var registeredDPs: any = {};\r\n            Object.defineProperty(type, \"_RegisteredDPs\", {\r\n                value: registeredDPs,\r\n                enumerable: false,\r\n                writable: false\r\n            });\r\n        }\r\n        registeredDPs[this.Name] = this;\r\n\r\n        var propd = this;\r\n        var getter = function () {\r\n            return (<Fayde.DependencyObject>this).GetValue(propd);\r\n        };\r\n        var setter = function (value) {\r\n            (<Fayde.DependencyObject>this).SetValue(propd, value);\r\n        };\r\n        Object.defineProperty(type.prototype, this.Name, {\r\n            get: getter,\r\n            set: setter,\r\n            configurable: true\r\n        });\r\n        return this;\r\n    }\r\n\r\n    ValidateSetValue (dobj: Fayde.DependencyObject, value: any, isValidOut: IOutIsValid) {\r\n        var coerced = value;\r\n        if (this._Coercer)\r\n            coerced = this._Coercer(dobj, this, coerced);\r\n        /* TODO: Handle Type Problems\r\n         if (!this._IsValueValid(dobj, coerced))\r\n         return coerced;\r\n         */\r\n        isValidOut.IsValid = true;\r\n        if (this._Validator)\r\n            isValidOut.IsValid = !!this._Validator(dobj, this, coerced, value);\r\n        return coerced;\r\n    }\r\n\r\n    static GetDependencyProperty (ownerType: any, name: string, noError?: boolean): DependencyProperty {\r\n        if (!ownerType)\r\n            return undefined;\r\n        var reg: DependencyProperty[] = (<any>ownerType)._RegisteredDPs;\r\n        var propd: DependencyProperty;\r\n        if (reg)\r\n            propd = reg[name];\r\n        if (!propd)\r\n            propd = DependencyProperty.GetDependencyProperty(nullstone.getTypeParent(ownerType), name, true);\r\n        if (!propd && !noError)\r\n            throw new Exception(\"Cannot locate dependency property [\" + (<any>ownerType).name + \"].[\" + name + \"]\");\r\n        return propd;\r\n    }\r\n}\r\nFayde.CoreLibrary.add(DependencyProperty);\r\n\r\nclass ImmutableDependencyProperty<T> extends DependencyProperty {\r\n    IsImmutable: boolean = true;\r\n\r\n    Initialize (dobj: Fayde.DependencyObject): T {\r\n        var storage = Fayde.Providers.GetStorage(dobj, this);\r\n        storage.Precedence = Fayde.Providers.PropertyPrecedence.LocalValue;\r\n        var type = <any>this.GetTargetType();\r\n        var obj: T = new type();\r\n        Object.defineProperty(dobj, this.Name, {\r\n            value: obj,\r\n            writable: false\r\n        });\r\n        return storage.Local = obj;\r\n    }\r\n}"
  },
  {
    "path": "src/Core/DependencyPropertyChangedEventArgs.ts",
    "content": "interface IDependencyPropertyChangedEventArgs {\r\n    Property: DependencyProperty;\r\n    OldValue: any;\r\n    NewValue: any;\r\n}\r\nclass DependencyPropertyChangedEventArgs implements nullstone.IEventArgs, IDependencyPropertyChangedEventArgs {\r\n    Property: DependencyProperty;\r\n    OldValue: any;\r\n    NewValue: any;\r\n}"
  },
  {
    "path": "src/Core/Enums.ts",
    "content": "module Fayde {\r\n    export enum Orientation {\r\n        Horizontal = 0,\r\n        Vertical = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(Orientation, \"Orientation\");\r\n\r\n    export enum Visibility {\r\n        Visible = 0,\r\n        Collapsed = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(Visibility, \"Visibility\");\r\n    nullstone.registerEnumConverter(Visibility, function (val: any): any {\r\n        if (val === \"true\" || val === true || val === Visibility.Visible || val === \"Visible\")\r\n            return Visibility.Visible;\r\n        return Visibility.Collapsed;\r\n    });\r\n\r\n    export enum CursorType {\r\n        Default,\r\n        Hand,\r\n        IBeam,\r\n        Wait,\r\n        SizeNESW,\r\n        SizeNWSE,\r\n        SizeNS,\r\n        SizeWE\r\n        //TODO: Add cursor types\r\n    }\r\n    Fayde.CoreLibrary.addEnum(CursorType, \"CursorType\");\r\n    export var CursorTypeMappings = {\r\n        Default: \"\",\r\n        Hand: \"pointer\",\r\n        IBeam: \"text\",\r\n        Wait: \"wait\",\r\n        SizeNESW: \"ne-resize\",\r\n        SizeNWSE: \"nw-resize\",\r\n        SizeNS: \"n-resize\",\r\n        SizeWE: \"w-resize\"\r\n        //TODO: Add cursor types\r\n    }\r\n\r\n    export enum HorizontalAlignment {\r\n        Left = 0,\r\n        Center = 1,\r\n        Right = 2,\r\n        Stretch = 3,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(HorizontalAlignment, \"HorizontalAlignment\");\r\n\r\n    export enum VerticalAlignment {\r\n        Top = 0,\r\n        Center = 1,\r\n        Bottom = 2,\r\n        Stretch = 3,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(VerticalAlignment, \"VerticalAlignment\");\r\n\r\n    export enum FlowDirection {\r\n        LeftToRight = 0,\r\n        RightToLeft = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(FlowDirection, \"FlowDirection\");\r\n\r\n    export enum FontWeight {\r\n        Thin = 100,\r\n        ExtraLight = 200,\r\n        Light = 300,\r\n        Normal = 400,\r\n        Medium = 500,\r\n        SemiBold = 600,\r\n        Bold = 700,\r\n        ExtraBold = 800,\r\n        Black = 900,\r\n        ExtraBlack = 950,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(FontWeight, \"FontWeight\");\r\n\r\n    export enum TextAlignment {\r\n        Left = 0,\r\n        Center = 1,\r\n        Right = 2,\r\n        Justify = 3,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(TextAlignment, \"TextAlignment\");\r\n\r\n    //FLAGS\r\n    export enum TextDecorations {\r\n        None = 0,\r\n        Underline = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(TextDecorations, \"TextDecorations\");\r\n\r\n    export enum LineStackingStrategy {\r\n        MaxHeight = 0,\r\n        BlockLineHeight = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(LineStackingStrategy, \"LineStackingStrategy\");\r\n}"
  },
  {
    "path": "src/Core/FrameworkElement.ts",
    "content": "/// <reference path=\"UIElement.ts\" />\r\n/// <reference path=\"Providers/ResourcesStore.ts\" />\r\n/// <reference path=\"Providers/ActualSizeStore.ts\" />\r\n\r\nmodule Fayde {\r\n    export class FENode extends UINode implements Providers.IStyleHolder, Providers.IImplicitStyleHolder {\r\n        _LocalStyle: Style;\r\n        _ImplicitStyles: Style[];\r\n        _StyleMask: number;\r\n\r\n        XObject: FrameworkElement;\r\n        constructor(xobj: FrameworkElement) {\r\n            super(xobj);\r\n            var lu = this.LayoutUpdater;\r\n            lu.tree.setTemplateApplier(() => {\r\n                var error = new BError();\r\n                var result = this.ApplyTemplateWithError(error);\r\n                if (error.Message)\r\n                    error.ThrowException();\r\n                return result;\r\n            });\r\n            lu.setSizeUpdater({\r\n                setActualWidth (value: number) {\r\n                    xobj.SetCurrentValue(FrameworkElement.ActualWidthProperty, value);\r\n                },\r\n                setActualHeight (value: number) {\r\n                    xobj.SetCurrentValue(FrameworkElement.ActualHeightProperty, value);\r\n                },\r\n                onSizeChanged (oldSize: minerva.Size, newSize: minerva.Size) {\r\n                    xobj.SizeChanged.raise(xobj, new SizeChangedEventArgs(oldSize, newSize));\r\n                }\r\n            });\r\n        }\r\n        SubtreeNode: XamlNode;\r\n        SetSubtreeNode(subtreeNode: XamlNode, error: BError): boolean {\r\n            if (this.SubtreeNode) {\r\n                this.SubtreeNode.Detach();\r\n                this.SubtreeNode = null;\r\n            }\r\n            if (subtreeNode && !subtreeNode.AttachTo(this, error))\r\n                return false;\r\n            this.SubtreeNode = subtreeNode;\r\n            return true;\r\n        }\r\n\r\n        GetInheritedEnumerator(): nullstone.IEnumerator<DONode> {\r\n            return this.GetVisualTreeEnumerator();\r\n        }\r\n\r\n        GetVisualTreeEnumerator(): nullstone.IEnumerator<FENode> {\r\n            var walker = this.LayoutUpdater.tree.walk();\r\n            return {\r\n                current: undefined,\r\n                moveNext: function() {\r\n                    if (!walker.step())\r\n                        return false;\r\n                    this.current = walker.current.getAttachedValue(\"$node\");\r\n                    return true;\r\n                }\r\n            };\r\n        }\r\n\r\n        SetIsLoaded(value: boolean) {\r\n            if (this.IsLoaded === value)\r\n                return;\r\n            this.IsLoaded = value;\r\n            this.OnIsLoadedChanged(value);\r\n        }\r\n        OnIsLoadedChanged(newIsLoaded: boolean) {\r\n            var xobj = this.XObject;\r\n            var res = xobj.Resources;\r\n            if (!newIsLoaded) {\r\n                Providers.ImplicitStyleBroker.Clear(xobj, Providers.StyleMask.VisualTree);\r\n                xobj.Unloaded.raise(xobj, new RoutedEventArgs());\r\n                //TODO: Should we set is loaded on resources that are FrameworkElements?\r\n            } else {\r\n                Providers.ImplicitStyleBroker.Set(xobj, Providers.StyleMask.All);\r\n            }\r\n            for (var en = this.GetVisualTreeEnumerator(); en.moveNext();) {\r\n                en.current.SetIsLoaded(newIsLoaded);\r\n            }\r\n            if (newIsLoaded) {\r\n                //TODO: Should we set is loaded on resources that are FrameworkElements?\r\n                xobj.Loaded.raise(xobj, new RoutedEventArgs());\r\n                this.InvokeLoaded();\r\n                //LOOKS USELESS: \r\n                //Providers.DataContextStore.EmitDataContextChanged(xobj);\r\n            }\r\n        }\r\n        InvokeLoaded() { }\r\n\r\n        AttachVisualChild(uie: UIElement, error: BError): boolean {\r\n            this.OnVisualChildAttached(uie);\r\n            if (!this.SetSubtreeNode(uie.XamlNode, error))\r\n                return false;\r\n            uie.XamlNode.SetIsLoaded(this.IsLoaded);\r\n            return true;\r\n        }\r\n        DetachVisualChild(uie: UIElement, error: BError) {\r\n            if (!this.SetSubtreeNode(null, error))\r\n                return false;\r\n            this.OnVisualChildDetached(uie);\r\n            uie.XamlNode.SetIsLoaded(false);\r\n            return true;\r\n        }\r\n\r\n        ApplyTemplateWithError(error: BError): boolean {\r\n            if (this.SubtreeNode)\r\n                return false;\r\n            var result = this.DoApplyTemplateWithError(error);\r\n            var xobj = this.XObject;\r\n            if (result)\r\n                xobj.OnApplyTemplate();\r\n            xobj.TemplateApplied.raise(xobj, null);\r\n            return result;\r\n        }\r\n        DoApplyTemplateWithError(error: BError): boolean { return false; }\r\n        FinishApplyTemplateWithError(uie: UIElement, error: BError): boolean {\r\n            if (!uie || error.Message)\r\n                return false;\r\n            this.AttachVisualChild(uie, error);\r\n            return error.Message == null;\r\n        }\r\n\r\n        UpdateLayout() {\r\n            console.warn(\"FENode.UpdateLayout not implemented\");\r\n        }\r\n\r\n        static DetachFromVisualParent (xobj: UIElement) {\r\n            var vpNode = <FENode>xobj.XamlNode.VisualParentNode;\r\n            if (vpNode instanceof FENode) {\r\n                var err = new BError();\r\n                vpNode.DetachVisualChild(xobj, err);\r\n                if (err.Message)\r\n                    err.ThrowException();\r\n            }\r\n        }\r\n    }\r\n\r\n    export class FrameworkElement extends UIElement implements IResourcable, Providers.IIsPropertyInheritable {\r\n        XamlNode: FENode;\r\n        CreateNode(): FENode { return new FENode(this); }\r\n\r\n        static ActualHeightProperty = DependencyProperty.RegisterReadOnly(\"ActualHeight\", () => Number, FrameworkElement);\r\n        static ActualWidthProperty = DependencyProperty.RegisterReadOnly(\"ActualWidth\", () => Number, FrameworkElement);\r\n        static CursorProperty = DependencyProperty.Register(\"Cursor\", () => new Enum(CursorType), FrameworkElement, CursorType.Default);\r\n        static FlowDirectionProperty = InheritableOwner.FlowDirectionProperty.ExtendTo(FrameworkElement);\r\n        static HeightProperty = DependencyProperty.Register(\"Height\", () => Length, FrameworkElement, NaN);\r\n        static HorizontalAlignmentProperty = DependencyProperty.Register(\"HorizontalAlignment\", () => new Enum(HorizontalAlignment), FrameworkElement, HorizontalAlignment.Stretch);\r\n        static LanguageProperty = InheritableOwner.LanguageProperty.ExtendTo(FrameworkElement);\r\n        static MarginProperty = DependencyProperty.RegisterCore(\"Margin\", () => Thickness, FrameworkElement);\r\n        static MaxHeightProperty = DependencyProperty.Register(\"MaxHeight\", () => Number, FrameworkElement, Number.POSITIVE_INFINITY);\r\n        static MaxWidthProperty = DependencyProperty.Register(\"MaxWidth\", () => Number, FrameworkElement, Number.POSITIVE_INFINITY);\r\n        static MinHeightProperty = DependencyProperty.Register(\"MinHeight\", () => Number, FrameworkElement, 0.0);\r\n        static MinWidthProperty = DependencyProperty.Register(\"MinWidth\", () => Number, FrameworkElement, 0.0);\r\n        static StyleProperty = DependencyProperty.Register(\"Style\", () => Style, FrameworkElement, undefined, (dobj, args) => Providers.LocalStyleBroker.Set(<FrameworkElement>dobj, args.NewValue));\r\n        static VerticalAlignmentProperty = DependencyProperty.Register(\"VerticalAlignment\", () => new Enum(VerticalAlignment), FrameworkElement, VerticalAlignment.Stretch);\r\n        static WidthProperty = DependencyProperty.Register(\"Width\", () => Length, FrameworkElement, NaN);\r\n        static ResourcesProperty = DependencyProperty.Register(\"Resources\", () => ResourceDictionary, FrameworkElement);\r\n        static DefaultStyleKeyProperty = DependencyProperty.Register(\"DefaultStyleKey\", () => Function, FrameworkElement);\r\n\r\n        IsInheritable(propd: DependencyProperty): boolean {\r\n            if (propd === FrameworkElement.FlowDirectionProperty)\r\n                return true;\r\n            if (propd === FrameworkElement.LanguageProperty)\r\n                return true;\r\n            return super.IsInheritable(propd);\r\n        }\r\n\r\n        ActualHeight: number;\r\n        ActualWidth: number;\r\n        FlowDirection: FlowDirection;\r\n        Height: number;\r\n        HorizontalAlignment: HorizontalAlignment;\r\n        Language: string;\r\n        Margin: Thickness;\r\n        MaxWidth: number;\r\n        MaxHeight: number;\r\n        MinWidth: number;\r\n        MinHeight: number;\r\n        Style: Style;\r\n        VerticalAlignment: VerticalAlignment;\r\n        Width: number;\r\n        Resources: ResourceDictionary;\r\n        DefaultStyleKey: Function;\r\n\r\n        SizeChanged = new RoutedEvent<RoutedEventArgs>();\r\n        Loaded = new RoutedEvent<RoutedEventArgs>();\r\n        Unloaded = new RoutedEvent<RoutedEventArgs>();\r\n        LayoutUpdated = new nullstone.Event<nullstone.IEventArgs>();\r\n\r\n        OnApplyTemplate() { }\r\n        TemplateApplied = new nullstone.Event<nullstone.IEventArgs>();\r\n\r\n        OnBindingValidationError (args: Validation.ValidationErrorEventArgs) {\r\n            this.BindingValidationError.raise(this, args);\r\n        }\r\n        BindingValidationError = new nullstone.Event<Validation.ValidationErrorEventArgs>();\r\n\r\n        UpdateLayout() { this.XamlNode.UpdateLayout(); }\r\n    }\r\n    Fayde.CoreLibrary.add(FrameworkElement);\r\n\r\n    FrameworkElement.ActualWidthProperty.Store = Providers.ActualSizeStore.Instance;\r\n    FrameworkElement.ActualHeightProperty.Store = Providers.ActualSizeStore.Instance;\r\n    FrameworkElement.ResourcesProperty.Store = Providers.ResourcesStore.Instance;\r\n\r\n    module reactions {\r\n        UIReaction<number>(FrameworkElement.WidthProperty, minerva.core.reactTo.width, false);\r\n        UIReaction<number>(FrameworkElement.HeightProperty, minerva.core.reactTo.height, false);\r\n        UIReaction<number>(FrameworkElement.MaxWidthProperty, minerva.core.reactTo.maxWidth, false);\r\n        UIReaction<number>(FrameworkElement.MaxHeightProperty, minerva.core.reactTo.maxHeight, false);\r\n        UIReaction<number>(FrameworkElement.MinWidthProperty, minerva.core.reactTo.minWidth, false);\r\n        UIReaction<number>(FrameworkElement.MinHeightProperty, minerva.core.reactTo.minHeight, false);\r\n        UIReaction<Thickness>(FrameworkElement.MarginProperty, minerva.core.reactTo.margin, false, minerva.Thickness.copyTo);\r\n        UIReaction<minerva.HorizontalAlignment>(FrameworkElement.HorizontalAlignmentProperty, minerva.core.reactTo.horizontalAlignment, false);\r\n        UIReaction<minerva.VerticalAlignment>(FrameworkElement.VerticalAlignmentProperty, minerva.core.reactTo.verticalAlignment, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Core/HierarchicalDataTemplate.ts",
    "content": "/// <reference path=\"DataTemplate.ts\" />\r\n\r\nmodule Fayde {\r\n    export class HierarchicalDataTemplate extends DataTemplate {\r\n        static ItemsSourceProperty = DependencyProperty.Register(\"ItemsSource\", () => nullstone.IEnumerable_, HierarchicalDataTemplate);\r\n        static ItemTemplateProperty = DependencyProperty.Register(\"ItemTemplate\", () => DataTemplate, HierarchicalDataTemplate);\r\n        static ItemContainerStyleProperty = DependencyProperty.Register(\"ItemContainerStyle\", () => Style, HierarchicalDataTemplate);\r\n        ItemsSource: nullstone.IEnumerable<any>;\r\n        ItemTemplate: DataTemplate;\r\n        ItemContainerStyle: Style;\r\n    }\r\n    Fayde.CoreLibrary.add(HierarchicalDataTemplate);\r\n}"
  },
  {
    "path": "src/Core/INotifyPropertyChanged.ts",
    "content": "module Fayde {\r\n    export class PropertyChangedEventArgs implements nullstone.IEventArgs {\r\n        PropertyName: string;\r\n        constructor(propertyName: string) {\r\n            Object.defineProperty(this, \"PropertyName\", { value: propertyName, writable: false });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PropertyChangedEventArgs);\r\n\r\n    export interface INotifyPropertyChanged {\r\n        PropertyChanged: nullstone.Event<PropertyChangedEventArgs>;\r\n    }\r\n    export var INotifyPropertyChanged_ = new nullstone.Interface<INotifyPropertyChanged>(\"INotifyPropertyChanged\");\r\n    INotifyPropertyChanged_.is = (o: any): boolean => {\r\n        return o && o.PropertyChanged instanceof nullstone.Event;\r\n    };\r\n}"
  },
  {
    "path": "src/Core/InheritableOwner.ts",
    "content": "/// <reference path=\"UIReaction.ts\" />\r\n/// <reference path=\"Providers/InheritedStore.ts\" />\r\n/// <reference path=\"../Primitives/Font.ts\" />\r\n\r\nmodule Fayde {\r\n    export class InheritableOwner {\r\n        static UseLayoutRoundingProperty = DependencyProperty.RegisterInheritable(\"UseLayoutRounding\", () => Boolean, InheritableOwner, true);\r\n        static FlowDirectionProperty = DependencyProperty.RegisterInheritable(\"FlowDirection\", () => new Enum(minerva.FlowDirection), InheritableOwner, minerva.FlowDirection.LeftToRight);\r\n\r\n        static ForegroundProperty = DependencyProperty.RegisterInheritable(\"Foreground\", () => Media.Brush, InheritableOwner);\r\n        static FontFamilyProperty = DependencyProperty.RegisterInheritable(\"FontFamily\", () => String, InheritableOwner, Font.DEFAULT_FAMILY);\r\n        static FontSizeProperty = DependencyProperty.RegisterInheritable(\"FontSize\", () => Number, InheritableOwner, Font.DEFAULT_SIZE);\r\n        static FontStretchProperty = DependencyProperty.RegisterInheritable(\"FontStretch\", () => String, InheritableOwner, Font.DEFAULT_STRETCH);\r\n        static FontStyleProperty = DependencyProperty.RegisterInheritable(\"FontStyle\", () => String, InheritableOwner, Font.DEFAULT_STYLE);\r\n        static FontWeightProperty = DependencyProperty.RegisterInheritable(\"FontWeight\", () => new Enum(FontWeight), InheritableOwner, Font.DEFAULT_WEIGHT);\r\n        static TextDecorationsProperty = DependencyProperty.RegisterInheritable(\"TextDecorations\", () => new Enum(TextDecorations), InheritableOwner, TextDecorations.None);\r\n        static LanguageProperty = DependencyProperty.RegisterInheritable(\"Language\", () => String, InheritableOwner);\r\n\r\n        static AllInheritedProperties: DependencyProperty[];\r\n    }\r\n    InheritableOwner.AllInheritedProperties = [\r\n        InheritableOwner.ForegroundProperty,\r\n        InheritableOwner.FontFamilyProperty,\r\n        InheritableOwner.FontStretchProperty,\r\n        InheritableOwner.FontStyleProperty,\r\n        InheritableOwner.FontWeightProperty,\r\n        InheritableOwner.FontSizeProperty,\r\n        InheritableOwner.LanguageProperty,\r\n        InheritableOwner.FlowDirectionProperty,\r\n        InheritableOwner.UseLayoutRoundingProperty,\r\n        InheritableOwner.TextDecorationsProperty\r\n    ];\r\n    Fayde.CoreLibrary.add(InheritableOwner);\r\n\r\n    module reactions {\r\n        UIReaction<boolean>(InheritableOwner.UseLayoutRoundingProperty, minerva.core.reactTo.useLayoutRounding, false);\r\n        UIReaction<minerva.FlowDirection>(InheritableOwner.FlowDirectionProperty, minerva.core.reactTo.flowDirection, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Core/LayoutInformation.ts",
    "content": "module Fayde {\r\n    export class LayoutInformation {\r\n        static GetLayoutClip(uie: UIElement): Media.Geometry {\r\n            var rect = new minerva.Rect();\r\n            minerva.Rect.copyTo(uie.XamlNode.LayoutUpdater.assets.layoutClip, rect);\r\n            var geom = new Media.RectangleGeometry();\r\n            geom.Rect = rect;\r\n            return geom;\r\n        }\r\n\r\n        /*\r\n        static GetLayoutExceptionElement(): UIElement {\r\n            var lu = LayoutUpdater.LayoutExceptionUpdater;\r\n            if (lu)\r\n                return lu.Node.XObject;\r\n        }\r\n        */\r\n\r\n        static GetLayoutSlot(uie: UIElement): minerva.Rect {\r\n            var rect = new minerva.Rect();\r\n            minerva.Rect.copyTo(uie.XamlNode.LayoutUpdater.assets.layoutSlot, rect);\r\n            return rect;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(LayoutInformation);\r\n}"
  },
  {
    "path": "src/Core/NameScope.ts",
    "content": "module Fayde {\r\n    export class NameScope {\r\n        IsRoot: boolean = false;\r\n        private XNodes = {};\r\n\r\n        constructor(isRoot?: boolean) {\r\n            if (isRoot)\r\n                this.IsRoot = isRoot;\r\n        }\r\n\r\n        FindName(name: string): XamlNode {\r\n            return this.XNodes[name];\r\n        }\r\n        RegisterName(name: string, xnode: XamlNode) {\r\n            var existing = this.XNodes[name];\r\n            if (existing && existing !== xnode)\r\n                throw new InvalidOperationException(\"Name is already registered.\");\r\n            //TODO: Add Handler - Destroyed Event (xnode)\r\n            this.XNodes[name] = xnode;\r\n        }\r\n        UnregisterName(name: string) {\r\n            //var xnode = this.XNodes[name];\r\n            //TODO: Remove Handler - Destroyed Event (xnode)\r\n            this.XNodes[name] = undefined;\r\n        }\r\n        Absorb(otherNs: NameScope) {\r\n            var on = otherNs.XNodes;\r\n            for (var name in on) {\r\n                this.RegisterName(name, on[name]);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Core/Providers/ActualSizeStore.ts",
    "content": "/// <reference path=\"PropertyStore.ts\" />\r\n\r\nmodule Fayde.Providers {\r\n    export class ActualSizeStore extends PropertyStore {\r\n        static Instance: ActualSizeStore;\r\n\r\n        GetValue(storage: IPropertyStorage): number {\r\n            if (storage.Local !== undefined)\r\n                return storage.Local;\r\n            return 0.0;\r\n        }\r\n        GetValuePrecedence(storage: IPropertyStorage): PropertyPrecedence { return PropertyPrecedence.LocalValue; }\r\n\r\n        SetLocalValue(storage: Providers.IPropertyStorage, newValue: number) {\r\n            var oldValue = storage.Local;\r\n            storage.Local = newValue;\r\n            if (oldValue === newValue)\r\n                return;\r\n            this.OnPropertyChanged(storage, PropertyPrecedence.LocalValue, oldValue, newValue);\r\n        }\r\n        SetLocalStyleValue(storage: IPropertyStorage, newValue: any) { }\r\n        SetImplicitStyle(storage: IPropertyStorage, newValue: any) { }\r\n\r\n        ClearValue(storage: Providers.IPropertyStorage, notifyListeners?: boolean) { }\r\n    }\r\n    ActualSizeStore.Instance = new ActualSizeStore();\r\n}"
  },
  {
    "path": "src/Core/Providers/DataContextStore.ts",
    "content": "/// <reference path=\"PropertyStore.ts\" />\r\n\r\nmodule Fayde.Providers {\r\n    export interface IDataContextStorage extends IPropertyStorage {\r\n        InheritedValue: any;\r\n    }\r\n\r\n    export class DataContextStore extends PropertyStore {\r\n        static Instance: DataContextStore;\r\n        GetValue(storage: IDataContextStorage): any {\r\n            var val = super.GetValue(storage);\r\n            if (val === undefined)\r\n                val = storage.InheritedValue;\r\n            return val;\r\n        }\r\n        GetValuePrecedence(storage: IDataContextStorage): PropertyPrecedence {\r\n            var prec = super.GetValuePrecedence(storage);\r\n            if (prec < PropertyPrecedence.InheritedDataContext)\r\n                return prec;\r\n            if (storage.InheritedValue !== undefined)\r\n                return PropertyPrecedence.InheritedDataContext;\r\n            return PropertyPrecedence.DefaultValue;\r\n        }\r\n        OnInheritedChanged(storage: IDataContextStorage, newInherited?: any) {\r\n            var oldInherited = storage.InheritedValue;\r\n            storage.InheritedValue = newInherited;\r\n            if (storage.Precedence >= PropertyPrecedence.InheritedDataContext && oldInherited !== newInherited)\r\n                this.OnPropertyChanged(storage, PropertyPrecedence.InheritedDataContext, oldInherited, newInherited);\r\n        }\r\n\r\n        CreateStorage(dobj: DependencyObject, propd: DependencyProperty): IDataContextStorage {\r\n            return {\r\n                OwnerNode: dobj.XamlNode,\r\n                Property: propd,\r\n                Precedence: PropertyPrecedence.DefaultValue,\r\n                Animations: undefined,\r\n                Local: undefined,\r\n                LocalStyleValue: undefined,\r\n                ImplicitStyleValue: undefined,\r\n                InheritedValue: undefined,\r\n                PropListeners: undefined,\r\n            };\r\n        }\r\n\r\n        OnPropertyChanged(storage: IDataContextStorage, effectivePrecedence: PropertyPrecedence, oldValue: any, newValue: any): IDependencyPropertyChangedEventArgs {\r\n            var args = super.OnPropertyChanged(storage, effectivePrecedence, oldValue, newValue);\r\n            if (args) {\r\n                if (effectivePrecedence > PropertyPrecedence.LocalValue && this.TryUpdateDataContextExpression(storage, args.NewValue))\r\n                    return;\r\n                storage.OwnerNode.OnDataContextChanged(args.OldValue, args.NewValue);\r\n            }\r\n            return args;\r\n        }\r\n\r\n        private TryUpdateDataContextExpression(storage: IDataContextStorage, newDataContext: any): boolean {\r\n            var val = storage.InheritedValue;\r\n            var exprs = <Expression[]>(<any>storage.OwnerNode.XObject)._Expressions;\r\n            var dcexpr = exprs[storage.Property._ID];\r\n            if (!dcexpr)\r\n                return false;\r\n            dcexpr.OnDataContextChanged(newDataContext);\r\n            return true;\r\n        }\r\n    }\r\n    DataContextStore.Instance = new DataContextStore();\r\n}"
  },
  {
    "path": "src/Core/Providers/ImmutableStore.ts",
    "content": "/// <reference path=\"PropertyStore.ts\" />\r\n\r\nmodule Fayde.Providers {\r\n    export class ImmutableStore extends PropertyStore {\r\n        static Instance: ImmutableStore;\r\n\r\n        GetValue(storage: IPropertyStorage): any {\r\n            return storage.Local;\r\n        }\r\n        GetValuePrecedence(storage: IPropertyStorage): PropertyPrecedence {\r\n            return PropertyPrecedence.LocalValue;\r\n        }\r\n        SetLocalValue(storage: Providers.IPropertyStorage, newValue: any) {\r\n            console.warn(\"Trying to set value for immutable property.\");\r\n        }\r\n        ClearValue(storage: Providers.IPropertyStorage) {\r\n            console.warn(\"Trying to clear value for immutable property.\");\r\n        }\r\n        ListenToChanged(target: DependencyObject, propd: DependencyProperty, func: (sender, args: IDependencyPropertyChangedEventArgs) => void, closure: any): Providers.IPropertyChangedListener {\r\n            return {\r\n                Property: propd,\r\n                OnPropertyChanged: function (sender: DependencyObject, args: IDependencyPropertyChangedEventArgs) { },\r\n                Detach: function () { }\r\n            };\r\n        }\r\n        Clone(dobj: DependencyObject, sourceStorage: IPropertyStorage): IPropertyStorage {\r\n            if (sourceStorage.Local instanceof XamlObjectCollection) {\r\n                var newStorage = Providers.GetStorage(dobj, sourceStorage.Property);\r\n                var newColl = <XamlObjectCollection<any>>newStorage.Local;\r\n                newColl.CloneCore(<XamlObjectCollection<any>>sourceStorage.Local);\r\n                var anims = newStorage.Animations = sourceStorage.Animations;\r\n                if (anims) {\r\n                    for (var i = 0; i < anims.length; i++) {\r\n                        anims[i].PropStorage = newStorage;\r\n                    }\r\n                }\r\n                return newStorage;\r\n            } else {\r\n                console.warn(\"Cloning Immutable improperly\");\r\n                return super.Clone(dobj, sourceStorage);\r\n            }\r\n        }\r\n    }\r\n    ImmutableStore.Instance = new ImmutableStore();\r\n}"
  },
  {
    "path": "src/Core/Providers/ImplicitStyleBroker.ts",
    "content": "module Fayde.Providers {\r\n    export enum StyleIndex {\r\n        VisualTree = 0,\r\n        ApplicationResources = 1,\r\n        Theme = 2,\r\n        Count = 3,\r\n    }\r\n    export enum StyleMask {\r\n        None = 0,\r\n        VisualTree = 1 << StyleIndex.VisualTree,\r\n        ApplicationResources = 1 << StyleIndex.ApplicationResources,\r\n        Theme = 1 << StyleIndex.Theme,\r\n        All = StyleMask.VisualTree | StyleMask.ApplicationResources | StyleMask.Theme,\r\n    }\r\n\r\n    export interface IImplicitStyleHolder {\r\n        _ImplicitStyles: Style[];\r\n        _StyleMask: number;\r\n    }\r\n\r\n    export class ImplicitStyleBroker {\r\n        static Set (fe: FrameworkElement, mask: StyleMask, styles?: Style[]) {\r\n            if (!styles)\r\n                styles = getImplicitStyles(fe, mask);\r\n            if (styles) {\r\n                var error = new BError();\r\n                var len = StyleIndex.Count;\r\n                for (var i = 0; i < len; i++) {\r\n                    var style = styles[i];\r\n                    if (!style)\r\n                        continue;\r\n                    if (!style.Validate(fe, error)) {\r\n                        error.ThrowException();\r\n                        //Warn(\"Style validation failed. [\" + error.Message + \"]\");\r\n                        return;\r\n                    }\r\n                }\r\n            }\r\n            ImplicitStyleBroker.SetImpl(fe, mask, styles);\r\n        }\r\n\r\n        private static SetImpl (fe: FrameworkElement, mask: StyleMask, styles: Style[]) {\r\n            if (!styles)\r\n                return;\r\n\r\n            var oldStyles = (<IImplicitStyleHolder>fe.XamlNode)._ImplicitStyles;\r\n            var newStyles: Style[] = [null, null, null];\r\n            if (oldStyles) {\r\n                newStyles[StyleIndex.Theme] = oldStyles[StyleIndex.Theme];\r\n                newStyles[StyleIndex.ApplicationResources] = oldStyles[StyleIndex.ApplicationResources];\r\n                newStyles[StyleIndex.VisualTree] = oldStyles[StyleIndex.VisualTree];\r\n            }\r\n            if (mask & StyleMask.Theme)\r\n                newStyles[StyleIndex.Theme] = styles[StyleIndex.Theme];\r\n            if (mask & StyleMask.ApplicationResources)\r\n                newStyles[StyleIndex.ApplicationResources] = styles[StyleIndex.ApplicationResources];\r\n            if (mask & StyleMask.VisualTree)\r\n                newStyles[StyleIndex.VisualTree] = styles[StyleIndex.VisualTree];\r\n\r\n            ImplicitStyleBroker.ApplyStyles(fe, mask, styles);\r\n        }\r\n\r\n        static Clear (fe: FrameworkElement, mask: StyleMask) {\r\n            var holder = <IImplicitStyleHolder>fe.XamlNode;\r\n            var oldStyles = holder._ImplicitStyles;\r\n            if (!oldStyles)\r\n                return;\r\n\r\n            var newStyles = oldStyles.slice(0);\r\n            //TODO: Do we need a deep copy?\r\n            if (mask & StyleMask.Theme)\r\n                newStyles[StyleIndex.Theme] = null;\r\n            if (mask & StyleMask.ApplicationResources)\r\n                newStyles[StyleIndex.ApplicationResources] = null;\r\n            if (mask & StyleMask.VisualTree)\r\n                newStyles[StyleIndex.VisualTree] = null;\r\n\r\n            ImplicitStyleBroker.ApplyStyles(fe, holder._StyleMask & ~mask, newStyles);\r\n        }\r\n\r\n        private static ApplyStyles (fe: FrameworkElement, mask: StyleMask, styles: Style[]) {\r\n            var holder = <IImplicitStyleHolder>fe.XamlNode;\r\n\r\n            var oldStyles = holder._ImplicitStyles;\r\n            var isChanged = !oldStyles || mask !== holder._StyleMask;\r\n            if (!isChanged) {\r\n                for (var i = 0; i < StyleIndex.Count; i++) {\r\n                    if (styles[i] !== oldStyles[i]) {\r\n                        isChanged = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            if (!isChanged)\r\n                return;\r\n\r\n            SwapStyles(fe, MultipleStylesWalker(oldStyles), MultipleStylesWalker(styles), true);\r\n\r\n            holder._ImplicitStyles = styles;\r\n            holder._StyleMask = mask;\r\n        }\r\n    }\r\n\r\n    function getImplicitStyles (fe: FrameworkElement, mask: StyleMask): Style[] {\r\n        var styles = [];\r\n        if ((mask & StyleMask.Theme) != 0) {\r\n            styles[StyleIndex.Theme] = getThemeStyle(fe);\r\n        }\r\n\r\n        if ((mask & StyleMask.ApplicationResources) != 0) {\r\n            var app = Application.Current;\r\n            if (app)\r\n                styles[StyleIndex.ApplicationResources] = getAppResourcesStyle(app, fe);\r\n        }\r\n\r\n        if ((mask & StyleMask.VisualTree) != 0)\r\n            styles[StyleIndex.VisualTree] = getVisualTreeStyle(fe);\r\n\r\n        return styles;\r\n    }\r\n\r\n    function getThemeStyle (fe: FrameworkElement): Style {\r\n        if (fe instanceof Controls.Control) {\r\n            var style = (<Controls.Control>fe).GetDefaultStyle();\r\n            if (style)\r\n                return style;\r\n        }\r\n        return ThemeManager.FindStyle(fe.DefaultStyleKey);\r\n    }\r\n\r\n    function getAppResourcesStyle (app: Application, fe: FrameworkElement): Style {\r\n        return <Style>app.Resources.Get(fe.DefaultStyleKey);\r\n    }\r\n\r\n    function getVisualTreeStyle (fe: FrameworkElement): Style {\r\n        var key = fe.DefaultStyleKey;\r\n        var cur = fe;\r\n        var isControl = cur instanceof Controls.Control;\r\n        var curNode = fe.XamlNode;\r\n        var rd: ResourceDictionary;\r\n\r\n        while (curNode) {\r\n            cur = curNode.XObject;\r\n            if (cur.TemplateOwner && !fe.TemplateOwner) {\r\n                cur = <FrameworkElement>cur.TemplateOwner;\r\n                curNode = cur.XamlNode;\r\n                continue;\r\n            }\r\n            if (!isControl && cur === fe.TemplateOwner)\r\n                break;\r\n\r\n            rd = cur.Resources;\r\n            if (rd) {\r\n                var style = <Style>rd.Get(key);\r\n                if (style)\r\n                    return style;\r\n            }\r\n\r\n            curNode = <FENode>curNode.VisualParentNode;\r\n        }\r\n\r\n        return undefined;\r\n    }\r\n}"
  },
  {
    "path": "src/Core/Providers/InheritedStore.ts",
    "content": "/// <reference path=\"PropertyStore.ts\" />\r\n\r\nmodule Fayde.Providers {\r\n    export interface IInheritedStorage extends IPropertyStorage {\r\n        InheritedValue: any;\r\n    }\r\n\r\n    export interface IIsPropertyInheritable {\r\n        IsInheritable(propd: DependencyProperty): boolean;\r\n    }\r\n\r\n    export class InheritedStore extends PropertyStore {\r\n        static Instance: InheritedStore;\r\n        GetValue(storage: IInheritedStorage): any {\r\n            var val: any;\r\n            if ((val = storage.Local) !== undefined)\r\n                return val;\r\n            if ((val = storage.LocalStyleValue) !== undefined)\r\n                return val;\r\n            if ((val = storage.ImplicitStyleValue) !== undefined)\r\n                return val;\r\n            if ((val = storage.InheritedValue) !== undefined)\r\n                return val;\r\n            return storage.Property.DefaultValue;\r\n        }\r\n        GetValuePrecedence(storage: IInheritedStorage): PropertyPrecedence {\r\n            var prec = super.GetValuePrecedence(storage);\r\n            if (prec < PropertyPrecedence.Inherited)\r\n                return prec;\r\n            if (storage.InheritedValue !== undefined)\r\n                return PropertyPrecedence.Inherited;\r\n            return PropertyPrecedence.DefaultValue;\r\n        }\r\n\r\n        OnPropertyChanged(storage: IPropertyStorage, effectivePrecedence: PropertyPrecedence, oldValue: any, newValue: any): IDependencyPropertyChangedEventArgs {\r\n            var args = super.OnPropertyChanged(storage, effectivePrecedence, oldValue, newValue);\r\n            if (effectivePrecedence <= PropertyPrecedence.Inherited)\r\n                this.Propagate(storage.OwnerNode, storage.Property, newValue);\r\n            return args;\r\n        }\r\n\r\n        CreateStorage(dobj: DependencyObject, propd: DependencyProperty): IInheritedStorage {\r\n            return {\r\n                OwnerNode: dobj.XamlNode,\r\n                Property: propd,\r\n                Precedence: PropertyPrecedence.DefaultValue,\r\n                Animations: undefined,\r\n                Local: undefined,\r\n                LocalStyleValue: undefined,\r\n                ImplicitStyleValue: undefined,\r\n                InheritedValue: undefined,\r\n                PropListeners: undefined,\r\n            };\r\n        }\r\n\r\n        static PropagateInheritedOnAdd(dobj: DependencyObject, subtreeNode: DONode) {\r\n            var destination = subtreeNode.XObject;\r\n            var store: InheritedStore = InheritedStore.Instance;\r\n            var arr = (<IPropertyStorageOwner>destination)._PropertyStorage;\r\n            var storage: IPropertyStorage;\r\n\r\n            var allProps = InheritableOwner.AllInheritedProperties;\r\n            var len = allProps.length;\r\n            var propd: DependencyProperty;\r\n            var newValue: any;\r\n            var sourceNode: XamlNode;\r\n            for (var i = 0; i < len; i++) {\r\n                propd = allProps[i];\r\n                sourceNode = dobj.XamlNode;\r\n                while (sourceNode && !((<IIsPropertyInheritable>sourceNode.XObject).IsInheritable(propd))) {\r\n                    sourceNode = sourceNode.ParentNode;\r\n                }\r\n                if (!sourceNode)\r\n                    continue;\r\n                newValue = (<DependencyObject>sourceNode.XObject).GetValue(propd);\r\n                if (newValue === propd.DefaultValue)\r\n                    continue;\r\n\r\n                storage = arr[propd._ID];\r\n                if (!storage) storage = arr[propd._ID] = store.CreateStorage(destination, propd);\r\n                if (!store.SetInheritedValue(subtreeNode, propd, newValue))\r\n                    store.Propagate(subtreeNode, propd, newValue);\r\n            }\r\n        }\r\n        static ClearInheritedOnRemove(dobj: DependencyObject, subtreeNode: DONode) {\r\n            var store: InheritedStore = InheritedStore.Instance;\r\n            var allProps = InheritableOwner.AllInheritedProperties;\r\n            var len = allProps.length;\r\n            var propd: DependencyProperty;\r\n            for (var i = 0; i < len; i++) {\r\n                propd = allProps[i];\r\n                if (!store.SetInheritedValue(subtreeNode, propd, undefined))\r\n                    store.Propagate(subtreeNode, propd, undefined);\r\n            }\r\n        }\r\n        private Propagate(ownerNode: XamlNode, propd: DependencyProperty, newValue: any) {\r\n            var enumerator = ownerNode.GetInheritedEnumerator();\r\n            var uin: UINode;\r\n            while (enumerator.moveNext()) {\r\n                uin = <UINode>enumerator.current;\r\n                if (!this.SetInheritedValue(uin, propd, newValue))\r\n                    this.Propagate(uin, propd, newValue);\r\n            }\r\n        }\r\n        private SetInheritedValue(don: DONode, propd: DependencyProperty, newValue: any): boolean {\r\n            /// Returns false if object doesn't understand this inheritable property\r\n            var dobj = don.XObject;\r\n            if (!(<IIsPropertyInheritable>dobj).IsInheritable(propd))\r\n                return false;\r\n            var storage = <IInheritedStorage>GetStorage(dobj, propd);\r\n            if (storage.Precedence < PropertyPrecedence.Inherited) {\r\n                //Overriden locally, don't propagate\r\n                storage.InheritedValue = newValue;\r\n                return true;\r\n            }\r\n            var oldValue = storage.InheritedValue;\r\n            if (oldValue === undefined) oldValue = propd.DefaultValue;\r\n            storage.InheritedValue = newValue;\r\n            storage.Precedence = PropertyPrecedence.Inherited;\r\n            this.OnPropertyChanged(storage, PropertyPrecedence.Inherited, oldValue, newValue);\r\n            return true;\r\n        }\r\n    }\r\n    InheritedStore.Instance = new InheritedStore();\r\n}"
  },
  {
    "path": "src/Core/Providers/IsEnabledStore.ts",
    "content": "/// <reference path=\"PropertyStore.ts\" />\r\n\r\nmodule Fayde.Providers {\r\n    export interface IIsEnabledStorage extends IPropertyStorage {\r\n        InheritedValue: boolean;\r\n    }\r\n\r\n    export class IsEnabledStore extends PropertyStore {\r\n        static Instance: IsEnabledStore;\r\n        GetValue(storage: IIsEnabledStorage): boolean {\r\n            if (storage.InheritedValue === false)\r\n                return false;\r\n            return super.GetValue(storage);\r\n        }\r\n        GetValuePrecedence(storage: IIsEnabledStorage): PropertyPrecedence {\r\n            if (storage.InheritedValue === false)\r\n                return PropertyPrecedence.IsEnabled;\r\n            return super.GetValuePrecedence(storage);\r\n        }\r\n\r\n        SetLocalValue(storage: IIsEnabledStorage, newValue: boolean) {\r\n            var oldValue = storage.Local;\r\n            storage.Local = newValue;\r\n            if (oldValue === newValue || storage.InheritedValue === false)\r\n                return;\r\n            this.OnPropertyChanged(storage, PropertyPrecedence.LocalValue, oldValue, newValue);\r\n        }\r\n\r\n        OnPropertyChanged(storage: IPropertyStorage, effectivePrecedence: PropertyPrecedence, oldValue: any, newValue: any): IDependencyPropertyChangedEventArgs {\r\n            var args = super.OnPropertyChanged(storage, effectivePrecedence, oldValue, newValue);\r\n            storage.OwnerNode.OnIsEnabledChanged(oldValue, newValue);\r\n            return args;\r\n        }\r\n\r\n        CreateStorage(dobj: DependencyObject, propd: DependencyProperty): IIsEnabledStorage {\r\n            return {\r\n                OwnerNode: dobj.XamlNode,\r\n                Property: propd,\r\n                Precedence: PropertyPrecedence.DefaultValue,\r\n                InheritedValue: true,\r\n                Animations: undefined,\r\n                Local: undefined,\r\n                LocalStyleValue: undefined,\r\n                ImplicitStyleValue: undefined,\r\n                PropListeners: undefined,\r\n            };\r\n        }\r\n        \r\n        EmitInheritedChanged(storage: IIsEnabledStorage, newInherited: boolean) {\r\n            var oldInherited = storage.InheritedValue;\r\n            if (newInherited !== false) {\r\n                storage.Precedence = super.GetValuePrecedence(storage);\r\n                storage.InheritedValue = true;\r\n            } else {\r\n                storage.InheritedValue = false;\r\n            }\r\n            if (oldInherited === newInherited)\r\n                return;\r\n            this.OnPropertyChanged(storage, PropertyPrecedence.IsEnabled, oldInherited, newInherited);\r\n        }\r\n        static EmitInheritedChanged(cn: Controls.ControlNode, value: boolean) {\r\n            var propd = Controls.Control.IsEnabledProperty;\r\n            var storage = <Providers.IIsEnabledStorage>Providers.GetStorage(cn.XObject, propd);\r\n            (<Providers.IsEnabledStore>propd.Store).EmitInheritedChanged(storage, value);\r\n        }\r\n    }\r\n    IsEnabledStore.Instance = new IsEnabledStore();\r\n}"
  },
  {
    "path": "src/Core/Providers/LocalStyleBroker.ts",
    "content": "\r\nmodule Fayde.Providers {\r\n    export interface IStyleHolder {\r\n        _LocalStyle: Style;\r\n    }\r\n\r\n    export class LocalStyleBroker {\r\n        static Set(fe: FrameworkElement, newStyle: Style) {\r\n            var holder = <IStyleHolder>fe.XamlNode;\r\n            if (newStyle)\r\n                newStyle.Seal();\r\n            SwapStyles(fe, SingleStyleWalker(holder._LocalStyle), SingleStyleWalker(newStyle), false);\r\n            holder._LocalStyle = newStyle;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Core/Providers/PropertyStore.ts",
    "content": "\r\nmodule Fayde.Providers {\r\n    export enum PropertyPrecedence {\r\n        IsEnabled = 0,\r\n        LocalValue = 1,\r\n        LocalStyle = 2,\r\n        ImplicitStyle = 3,\r\n        Inherited = 4,\r\n        InheritedDataContext = 5,\r\n        DefaultValue = 6,\r\n\r\n        Lowest = 6,\r\n        Highest = 0,\r\n        Count = 7,\r\n    }\r\n    \r\n    export interface IPropertyChangedListener {\r\n        Property: DependencyProperty;\r\n        OnPropertyChanged(sender: DependencyObject, args: IDependencyPropertyChangedEventArgs);\r\n        Detach();\r\n    }\r\n\r\n    export interface IPropertyStorage {\r\n        OwnerNode: DONode;\r\n        Property: DependencyProperty;\r\n        Precedence: PropertyPrecedence;\r\n        Animations: Media.Animation.IAnimationStorage[];\r\n        Local: any;\r\n        LocalStyleValue: any;\r\n        ImplicitStyleValue: any;\r\n        PropListeners: IPropertyChangedListener[];\r\n    }\r\n\r\n    export interface IPropertyStorageOwner {\r\n        _PropertyStorage: IPropertyStorage[];\r\n    }\r\n\r\n    export function GetStorage(dobj: DependencyObject, propd: DependencyProperty): IPropertyStorage {\r\n        var arr = (<IPropertyStorageOwner>dobj)._PropertyStorage;\r\n        var storage = arr[propd._ID];\r\n        if (!storage) arr[propd._ID] = storage = propd.Store.CreateStorage(dobj, propd);\r\n        return storage;\r\n    }\r\n\r\n    export class PropertyStore {\r\n        static Instance: PropertyStore;\r\n        GetValue(storage: IPropertyStorage): any {\r\n            var val: any;\r\n            if ((val = storage.Local) !== undefined)\r\n                return val;\r\n            if ((val = storage.LocalStyleValue) !== undefined)\r\n                return val;\r\n            if ((val = storage.ImplicitStyleValue) !== undefined)\r\n                return val;\r\n            return storage.Property.DefaultValue;\r\n        }\r\n        GetValuePrecedence(storage: IPropertyStorage): PropertyPrecedence {\r\n            if (storage.Local !== undefined)\r\n                return PropertyPrecedence.LocalValue;\r\n            if (storage.LocalStyleValue !== undefined)\r\n                return PropertyPrecedence.LocalStyle;\r\n            if (storage.ImplicitStyleValue !== undefined)\r\n                return PropertyPrecedence.ImplicitStyle;\r\n            return PropertyPrecedence.DefaultValue;\r\n        }\r\n\r\n        SetLocalValue(storage: Providers.IPropertyStorage, newValue: any) {\r\n            if (newValue === undefined || newValue === DependencyProperty.UnsetValue) {\r\n                this.ClearValue(storage);\r\n                return;\r\n            }\r\n\r\n            var propd = storage.Property;\r\n            if (newValue && propd.GetTargetType() === String) {\r\n                if (typeof newValue !== \"string\")\r\n                    newValue = newValue.toString();\r\n                //TODO: More type checks\r\n            }\r\n\r\n            var isValidOut = { IsValid: false };\r\n            newValue = propd.ValidateSetValue(storage.OwnerNode.XObject, newValue, isValidOut);\r\n            if (!isValidOut.IsValid)\r\n                return;\r\n\r\n                \r\n            var precDiff = storage.Precedence - PropertyPrecedence.LocalValue;\r\n            if (!propd.AlwaysChange && precDiff < 0) {\r\n                storage.Local = newValue;\r\n                return;\r\n            }\r\n\r\n            var oldValue = undefined;\r\n            if (precDiff > 0)\r\n                oldValue = this.GetValue(storage);\r\n            else\r\n                oldValue = storage.Local;\r\n            storage.Local = newValue;\r\n            this.OnPropertyChanged(storage, PropertyPrecedence.LocalValue, oldValue, newValue);\r\n        }\r\n        SetLocalStyleValue(storage: IPropertyStorage, newValue: any) {\r\n            var precDiff = storage.Precedence - PropertyPrecedence.LocalStyle;\r\n            if (precDiff < 0) {\r\n                storage.LocalStyleValue = newValue;\r\n                return;\r\n            }\r\n\r\n            var oldValue = undefined;\r\n            if (precDiff > 0)\r\n                oldValue = this.GetValue(storage);\r\n            else\r\n                oldValue = storage.LocalStyleValue;\r\n            storage.LocalStyleValue = newValue;\r\n            this.OnPropertyChanged(storage, PropertyPrecedence.LocalStyle, oldValue, newValue);\r\n        }\r\n        SetImplicitStyle(storage: IPropertyStorage, newValue: any) {\r\n            var precDiff = storage.Precedence - PropertyPrecedence.ImplicitStyle;\r\n            if (precDiff < 0) {\r\n                storage.ImplicitStyleValue = newValue;\r\n                return;\r\n            }\r\n\r\n            var oldValue = undefined;\r\n            if (precDiff > 0)\r\n                oldValue = this.GetValue(storage);\r\n            else\r\n                oldValue = storage.ImplicitStyleValue;\r\n            storage.ImplicitStyleValue = newValue;\r\n            this.OnPropertyChanged(storage, PropertyPrecedence.ImplicitStyle, oldValue, newValue);\r\n        }\r\n\r\n        ClearValue(storage: Providers.IPropertyStorage) {\r\n            var oldLocal = storage.Local;\r\n            if (oldLocal === undefined)\r\n                return;\r\n            storage.Local = undefined;\r\n            this.OnPropertyChanged(storage, PropertyPrecedence.LocalValue, oldLocal, undefined);\r\n        }\r\n\r\n        OnPropertyChanged(storage: IPropertyStorage, effectivePrecedence: PropertyPrecedence, oldValue: any, newValue: any): IDependencyPropertyChangedEventArgs {\r\n            var propd = storage.Property;\r\n            if (newValue === undefined) {\r\n                effectivePrecedence = this.GetValuePrecedence(storage);\r\n                newValue = this.GetValue(storage);\r\n            }\r\n            \r\n            storage.Precedence = effectivePrecedence;\r\n            if (!propd.AlwaysChange && oldValue === newValue)\r\n                return undefined;\r\n\r\n            if (!storage.Property.IsCustom) {\r\n                if (oldValue instanceof XamlObject)\r\n                    (<XamlObject>oldValue).XamlNode.Detach();\r\n                if (newValue instanceof XamlObject) {\r\n                    var error = new BError();\r\n                    if (!(<XamlObject>newValue).XamlNode.AttachTo(storage.OwnerNode, error))\r\n                        error.ThrowException();\r\n                }\r\n            }\r\n\r\n            var args = {\r\n                Property: propd,\r\n                OldValue: oldValue,\r\n                NewValue: newValue\r\n            };\r\n            var sender = storage.OwnerNode.XObject;\r\n            if (propd.ChangedCallback)\r\n                propd.ChangedCallback(sender, args);\r\n            var listeners = storage.PropListeners;\r\n            if (listeners) {\r\n                var len = listeners.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    listeners[i].OnPropertyChanged(sender, args);\r\n                }\r\n            }\r\n            return args;\r\n        }\r\n        ListenToChanged(target: DependencyObject, propd: DependencyProperty, func: (sender, args: IDependencyPropertyChangedEventArgs) => void , closure: any): Providers.IPropertyChangedListener {\r\n            var storage = GetStorage(target, propd);\r\n            var listeners = storage.PropListeners;\r\n            if (!listeners) listeners = storage.PropListeners = [];\r\n\r\n            var listener = {\r\n                Detach: function () {\r\n                    var index = listeners.indexOf(listener);\r\n                    if (index > -1)\r\n                        listeners.splice(index, 1);\r\n                },\r\n                Property: propd,\r\n                OnPropertyChanged: function (sender: DependencyObject, args: IDependencyPropertyChangedEventArgs) { func.call(closure, sender, args); }\r\n            };\r\n            listeners.push(listener);\r\n            return listener;\r\n        }\r\n\r\n        CreateStorage(dobj: DependencyObject, propd: DependencyProperty): IPropertyStorage {\r\n            return {\r\n                OwnerNode: dobj.XamlNode,\r\n                Property: propd,\r\n                Precedence: PropertyPrecedence.DefaultValue,\r\n                Animations: undefined,\r\n                Local: undefined,\r\n                LocalStyleValue: undefined,\r\n                ImplicitStyleValue: undefined,\r\n                PropListeners: undefined,\r\n            };\r\n        }\r\n        Clone(dobj: DependencyObject, sourceStorage: IPropertyStorage): IPropertyStorage {\r\n            var newStorage = this.CreateStorage(dobj, sourceStorage.Property);\r\n            newStorage.Precedence = sourceStorage.Precedence;\r\n            //newStorage.ImplicitStyleValue = undefined;\r\n            //newStorage.LocalStyleValue = undefined;\r\n            newStorage.Local = Fayde.Clone(sourceStorage.Local);\r\n            var anims = newStorage.Animations = sourceStorage.Animations;\r\n            if (anims) {\r\n                for (var i = 0; i < anims.length; i++) {\r\n                    anims[i].PropStorage = newStorage;\r\n                }\r\n            }\r\n            //TODO: Copy over property listeners?\r\n            return newStorage;\r\n        }\r\n    }\r\n    PropertyStore.Instance = new PropertyStore();\r\n}"
  },
  {
    "path": "src/Core/Providers/ResourcesStore.ts",
    "content": "/// <reference path=\"PropertyStore.ts\" />\r\n\r\nmodule Fayde.Providers {\r\n    export class ResourcesStore extends PropertyStore {\r\n        static Instance: ResourcesStore;\r\n\r\n        GetValue (storage: IPropertyStorage): ResourceDictionary {\r\n            if (storage.Local !== undefined)\r\n                return storage.Local;\r\n            var rd = storage.Local = new ResourceDictionary();\r\n            rd.AttachTo(storage.OwnerNode.XObject);\r\n            return rd;\r\n        }\r\n\r\n        GetValuePrecedence (storage: IPropertyStorage): PropertyPrecedence {\r\n            return PropertyPrecedence.LocalValue;\r\n        }\r\n\r\n        SetLocalValue (storage: Providers.IPropertyStorage, newValue: number) {\r\n            console.warn(\"Cannot set Resources.\");\r\n        }\r\n\r\n        SetLocalStyleValue (storage: IPropertyStorage, newValue: any) {\r\n        }\r\n\r\n        SetImplicitStyle (storage: IPropertyStorage, newValue: any) {\r\n        }\r\n\r\n        ClearValue (storage: Providers.IPropertyStorage, notifyListeners?: boolean) {\r\n        }\r\n    }\r\n    ResourcesStore.Instance = new ResourcesStore();\r\n}"
  },
  {
    "path": "src/Core/Providers/StyleSwapper.ts",
    "content": "module Fayde.Providers {\r\n    export function SwapStyles(fe: FrameworkElement, oldWalker: IStyleWalker, newWalker: IStyleWalker, isImplicit: boolean) {\r\n        var arr = (<IPropertyStorageOwner>fe)._PropertyStorage;\r\n        var oldSetter = oldWalker.Step();\r\n        var newSetter = newWalker.Step();\r\n\r\n        var storage: IPropertyStorage;\r\n        var value: any;\r\n        var propd: DependencyProperty;\r\n        while (oldSetter || newSetter) {\r\n            if (oldSetter && newSetter) {\r\n                switch (Setter.Compare(oldSetter, newSetter)) {\r\n                    case 0:\r\n                        value = newSetter.ConvertedValue;\r\n                        propd = newSetter.Property;\r\n                        oldSetter = oldWalker.Step();\r\n                        newSetter = newWalker.Step();\r\n                        break;\r\n                    case -1:\r\n                        value = undefined;\r\n                        propd = oldSetter.Property;\r\n                        oldSetter = oldWalker.Step();\r\n                        break;\r\n                    case 1:\r\n                        value = newSetter.ConvertedValue;\r\n                        propd = newSetter.Property;\r\n                        newSetter = newWalker.Step();\r\n                        break;\r\n                }\r\n            } else if (newSetter) {\r\n                value = newSetter.ConvertedValue;\r\n                propd = newSetter.Property;\r\n                newSetter = newWalker.Step();\r\n            } else /*if (oldSetter)*/ {\r\n                value = undefined;\r\n                propd = oldSetter.Property;\r\n                oldSetter = oldWalker.Step();\r\n            }\r\n\r\n            storage = arr[propd._ID];\r\n            if (!storage)\r\n                storage = arr[propd._ID] = propd.Store.CreateStorage(fe, propd);\r\n            if (isImplicit)\r\n                propd.Store.SetImplicitStyle(storage, value);\r\n            else\r\n                propd.Store.SetLocalStyleValue(storage, value);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Core/ResourceDictionary.ts",
    "content": "/// <reference path=\"DependencyObject.ts\" />\r\n/// <reference path=\"XamlObjectCollection.ts\" />\r\n\r\n// http://msdn.microsoft.com/en-us/library/cc903952(v=vs.95).aspx\r\nmodule Fayde {\r\n    export interface IResourcable {\r\n        Resources: Fayde.ResourceDictionary;\r\n    }\r\n\r\n    export class ResourceDictionaryCollection extends XamlObjectCollection<ResourceDictionary> {\r\n        Get (key: any): any {\r\n            for (var en = this.getEnumerator(); en.moveNext();) {\r\n                var cur = en.current.Get(key);\r\n                if (cur !== undefined)\r\n                    return cur;\r\n            }\r\n            return undefined;\r\n        }\r\n\r\n        AddingToCollection (value: ResourceDictionary, error: BError): boolean {\r\n            if (!super.AddingToCollection(value, error))\r\n                return false;\r\n            return this._AssertNoCycles(value, value.XamlNode.ParentNode, error);\r\n        }\r\n\r\n        private _AssertNoCycles (subtreeRoot: ResourceDictionary, firstAncestorNode: XamlNode, error: BError) {\r\n            var curNode = firstAncestorNode;\r\n            while (curNode) {\r\n                var rd = <ResourceDictionary>curNode.XObject;\r\n                if (rd instanceof ResourceDictionary) {\r\n                    var cycleFound = false;\r\n                    if (rd === subtreeRoot)\r\n                        cycleFound = true;\r\n                    else if (rd.Source && nullstone.equals(rd.Source, subtreeRoot.Source))\r\n                        cycleFound = true;\r\n\r\n                    if (cycleFound) {\r\n                        error.Message = \"Cycle found in resource dictionaries.\";\r\n                        error.Number = BError.InvalidOperation;\r\n                        return false;\r\n                    }\r\n                }\r\n                curNode = curNode.ParentNode;\r\n            }\r\n\r\n            for (var en = subtreeRoot.MergedDictionaries.getEnumerator(); en.moveNext();) {\r\n                if (!this._AssertNoCycles(en.current, firstAncestorNode, error))\r\n                    return false;\r\n            }\r\n\r\n            return true;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ResourceDictionaryCollection);\r\n\r\n    export class ResourceDictionary extends XamlObject implements nullstone.IEnumerable<any> {\r\n        private _Keys: any[] = [];\r\n        private _Values: any[] = [];\r\n\r\n        private _IsSourceLoaded: boolean = false;\r\n        private _SourceBacking: ResourceDictionary = null;\r\n\r\n        private _MergedDictionaries: ResourceDictionaryCollection;\r\n        get MergedDictionaries (): ResourceDictionaryCollection {\r\n            var md = this._MergedDictionaries;\r\n            if (!md) {\r\n                md = this._MergedDictionaries = new ResourceDictionaryCollection();\r\n                md.AttachTo(this);\r\n            }\r\n            return md;\r\n        }\r\n\r\n        Source: Uri;\r\n        App: Application;\r\n\r\n        get Count (): number {\r\n            return this._Values.length;\r\n        }\r\n\r\n        AttachTo (xobj: XamlObject) {\r\n            var error = new BError();\r\n            if (!this.XamlNode.AttachTo(xobj.XamlNode, error))\r\n                error.ThrowException();\r\n        }\r\n\r\n        Contains (key: any): boolean {\r\n            return this._Keys.indexOf(key) > -1;\r\n        }\r\n\r\n        Get (key: any): any {\r\n            if (!!this.Source) {\r\n                return this._GetFromSource(key);\r\n            }\r\n            var index = this._Keys.indexOf(key);\r\n            if (index > -1)\r\n                return this._Values[index];\r\n            var md = this._MergedDictionaries;\r\n            if (md)\r\n                return md.Get(key);\r\n            return undefined;\r\n        }\r\n\r\n        Set (key: any, value: any): boolean {\r\n            if (key === undefined)\r\n                return false;\r\n            if (value === undefined)\r\n                return this.Remove(key);\r\n\r\n            var index = this._Keys.indexOf(key);\r\n            var error = new BError();\r\n            if (value instanceof XamlObject && !(<XamlObject>value).XamlNode.AttachTo(this.XamlNode, error)) {\r\n                if (error.Message)\r\n                    throw new Exception(error.Message);\r\n                return false;\r\n            }\r\n\r\n            if (index < 0) {\r\n                this._Keys.push(key);\r\n                this._Values.push(value);\r\n            } else {\r\n                var oldValue = this._Values[index];\r\n                this._Keys[index] = key;\r\n                this._Values[index] = value;\r\n                if (oldValue instanceof XamlObject)\r\n                    (<XamlObject>oldValue).XamlNode.Detach();\r\n            }\r\n            return true;\r\n        }\r\n\r\n        Remove (key: any): boolean {\r\n            var index = this._Keys.indexOf(key);\r\n            if (index < 0)\r\n                return false;\r\n            this._Keys.splice(index, 1);\r\n            var oldvalue = this._Values.splice(index, 1)[0];\r\n            if (oldvalue instanceof XamlObject)\r\n                (<XamlObject>oldvalue).XamlNode.Detach();\r\n        }\r\n\r\n        getEnumerator (reverse?: boolean): nullstone.IEnumerator<any> {\r\n            return nullstone.IEnumerator_.fromArray(this._Values, reverse);\r\n        }\r\n\r\n        GetNodeEnumerator<U extends XamlNode>(reverse?: boolean): nullstone.IEnumerator<U> {\r\n            var prev = this.getEnumerator(reverse);\r\n            return {\r\n                current: undefined,\r\n                moveNext: function (): boolean {\r\n                    if (prev.moveNext()) {\r\n                        this.current = undefined;\r\n                        return false;\r\n                    }\r\n                    var xobj = prev.current;\r\n                    this.current = xobj.XamlNode;\r\n                    return true;\r\n                }\r\n            };\r\n        }\r\n\r\n        private _GetFromSource (key: any): any {\r\n            if (!this._IsSourceLoaded) {\r\n                this._SourceBacking = Markup.Load<ResourceDictionary>(this.App, nullstone.markup.xaml.XamlMarkup.create(this.Source));\r\n                this._IsSourceLoaded = true;\r\n            }\r\n            return this._SourceBacking.Get(key);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ResourceDictionary);\r\n}"
  },
  {
    "path": "src/Core/RoutedEvent.ts",
    "content": "module Fayde {\r\n    export class RoutedEvent<T extends RoutedEventArgs> extends nullstone.Event<T> {\r\n    }\r\n    Fayde.CoreLibrary.add(RoutedEvent);\r\n}"
  },
  {
    "path": "src/Core/RoutedEventArgs.ts",
    "content": "module Fayde {\r\n    export class RoutedEventArgs implements nullstone.IEventArgs {\r\n        Handled: boolean = false;\r\n        Source: any = null;\r\n        OriginalSource: any = null;\r\n    }\r\n    Fayde.CoreLibrary.add(RoutedEventArgs);\r\n}"
  },
  {
    "path": "src/Core/RoutedPropertyChangedEvent.ts",
    "content": "/// <reference path=\"RoutedEvent.ts\" />\r\n/// <reference path=\"RoutedEventArgs.ts\" />\r\n\r\nmodule Fayde {\r\n    export class RoutedPropertyChangedEvent<T> extends RoutedEvent<RoutedPropertyChangedEventArgs<T>> {\r\n    }\r\n    Fayde.CoreLibrary.add(RoutedPropertyChangedEvent);\r\n\r\n    export class RoutedPropertyChangedEventArgs<T> extends RoutedEventArgs {\r\n        OldValue: T;\r\n        NewValue: T;\r\n        constructor(oldValue: T, newValue: T) {\r\n            super();\r\n            Object.defineProperty(this, \"OldValue\", { value: oldValue, writable: false });\r\n            Object.defineProperty(this, \"NewValue\", { value: newValue, writable: false });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RoutedPropertyChangedEventArgs);\r\n}"
  },
  {
    "path": "src/Core/RoutedPropertyChangingEvent.ts",
    "content": "/// <reference path=\"RoutedEvent.ts\" />\r\n/// <reference path=\"RoutedEventArgs.ts\" />\r\n\r\nmodule Fayde {\r\n    export class RoutedPropertyChangingEvent<T> extends RoutedEvent<RoutedPropertyChangingEventArgs<T>> {\r\n    }\r\n    Fayde.CoreLibrary.add(RoutedPropertyChangingEvent);\r\n\r\n    export class RoutedPropertyChangingEventArgs<T> extends RoutedEventArgs {\r\n        Property: DependencyProperty;\r\n        OldValue: T;\r\n        NewValue: T;\r\n        private _IsCancelable: boolean;\r\n        get IsCancellable() { return this._IsCancelable; }\r\n        private _Cancel: boolean = false;\r\n        get Cancel(): boolean { return this._Cancel; }\r\n        set Cancel(value: boolean) {\r\n            if (this._IsCancelable)\r\n                this._Cancel = value;\r\n            else if (value)\r\n                throw new InvalidOperationException(\"Not cancelable.\");\r\n        }\r\n        InCoercion: boolean = false;\r\n        constructor(propd: DependencyProperty, oldValue: T, newValue: T, isCancelable: boolean) {\r\n            super();\r\n            this.Property = propd;\r\n            this.OldValue = oldValue;\r\n            this.NewValue = newValue;\r\n            this._IsCancelable = isCancelable;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RoutedPropertyChangingEventArgs);\r\n}"
  },
  {
    "path": "src/Core/Setter.ts",
    "content": "/// <reference path=\"DependencyObject.ts\" />\r\n/// <reference path=\"XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde {\r\n    export class SetterCollection extends XamlObjectCollection<Setter> {\r\n        private _IsSealed: boolean = false;\r\n        XamlNode: XamlNode;\r\n\r\n        Seal () {\r\n            if (this._IsSealed)\r\n                return;\r\n            for (var en = this.getEnumerator(); en.moveNext();) {\r\n                en.current.Seal();\r\n            }\r\n            this._IsSealed = true;\r\n        }\r\n\r\n        AddingToCollection (value: Setter, error: BError): boolean {\r\n            if (!value || !this._ValidateSetter(<Setter>value, error))\r\n                return false;\r\n            return super.AddingToCollection(value, error);\r\n        }\r\n\r\n        private _ValidateSetter (setter: Setter, error: BError) {\r\n            if (!(setter.Property instanceof DependencyProperty)) {\r\n                error.Message = \"Setter.Property must be a DependencyProperty.\";\r\n                return false;\r\n            }\r\n            if (setter.Value === undefined) {\r\n                if (!setter._HasDeferredValueExpression(Setter.ValueProperty)) {\r\n                    error.Message = \"Setter must have a Value.\";\r\n                    return false;\r\n                }\r\n            }\r\n            if (this._IsSealed) {\r\n                error.Message = \"Setter is sealed.\";\r\n                return false;\r\n            }\r\n            return true;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SetterCollection);\r\n\r\n    export class Setter extends DependencyObject {\r\n        private _IsSealed: boolean = false;\r\n        static PropertyProperty = DependencyProperty.Register(\"Property\", () => DependencyProperty, Setter);\r\n        static ValueProperty = DependencyProperty.Register(\"Value\", () => Object, Setter);\r\n        static ConvertedValueProperty = DependencyProperty.RegisterReadOnly(\"ConvertedValue\", () => Object, Setter);\r\n        Property: DependencyProperty;\r\n        Value: any;\r\n        ConvertedValue: any;\r\n\r\n        Seal () {\r\n            var propd = this.Property;\r\n            var val = this.Value;\r\n\r\n            var propTargetType = <Function>propd.GetTargetType();\r\n            this.SetCurrentValue(Setter.ConvertedValueProperty, nullstone.convertAnyToType(val, propTargetType));\r\n            this._IsSealed = true;\r\n        }\r\n\r\n        static Compare (setter1: Setter, setter2: Setter): number {\r\n            var a = setter1.Property;\r\n            var b = setter2.Property;\r\n            return (a === b) ? 0 : ((a._ID > b._ID) ? 1 : -1);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Setter);\r\n}"
  },
  {
    "path": "src/Core/SizeChangedEventArgs.ts",
    "content": "/// <reference path=\"RoutedEventArgs.ts\" />\r\n\r\nmodule Fayde {\r\n    export class SizeChangedEventArgs extends RoutedEventArgs {\r\n        PreviousSize: minerva.Size;\r\n        NewSize: minerva.Size;\r\n\r\n        constructor(previousSize: minerva.Size, newSize: minerva.Size) {\r\n            super();\r\n\r\n            Object.defineProperty(this, \"PreviousSize\", { value: new minerva.Size(), writable: false });\r\n            Object.defineProperty(this, \"NewSize\", { value: new minerva.Size(), writable: false });\r\n\r\n            minerva.Size.copyTo(previousSize, this.PreviousSize);\r\n            minerva.Size.copyTo(newSize, this.NewSize);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SizeChangedEventArgs);\r\n}"
  },
  {
    "path": "src/Core/Style.ts",
    "content": "/// <reference path=\"DependencyObject\" />\r\n/// <reference path=\"../Markup/ContentAnnotation\" />\r\n\r\nmodule Fayde {\r\n    export class Style extends DependencyObject {\r\n        private _IsSealed: boolean = false;\r\n\r\n        static SettersProperty = DependencyProperty.RegisterImmutable<SetterCollection>(\"Setters\", () => SetterCollection, Style);\r\n        static BasedOnProperty = DependencyProperty.Register(\"BasedOn\", () => Style, Style);\r\n        static TargetTypeProperty = DependencyProperty.Register(\"TargetType\", () => IType_, Style);\r\n        Setters: SetterCollection;\r\n        BasedOn: Style;\r\n        TargetType: Function;\r\n\r\n        constructor () {\r\n            super();\r\n            var coll = Style.SettersProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n        }\r\n\r\n        Seal () {\r\n            if (this._IsSealed)\r\n                return;\r\n            this.Setters.Seal();\r\n            this._IsSealed = true;\r\n\r\n            var base = this.BasedOn;\r\n            if (base)\r\n                base.Seal();\r\n        }\r\n\r\n        Validate (instance: DependencyObject, error: BError): boolean {\r\n            var targetType = this.TargetType;\r\n            var parentType = <Function>(<any>instance).constructor;\r\n\r\n            if (this._IsSealed) {\r\n                if (!(instance instanceof targetType)) {\r\n                    error.Number = BError.XamlParse;\r\n                    error.Message = \"Style.TargetType (\" + (<any>targetType).name + \") is not a subclass of (\" + (<any>parentType).name + \")\";\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n\r\n            // 1 Check for circular references in the BasedOn tree\r\n            var cycles = [];\r\n            var root = this;\r\n            while (root) {\r\n                if (cycles.indexOf(root) > -1) {\r\n                    error.Number = BError.InvalidOperation;\r\n                    error.Message = \"Circular reference in Style.BasedOn\";\r\n                    return false;\r\n                }\r\n                cycles.push(root);\r\n                root = root.BasedOn;\r\n            }\r\n            cycles = null;\r\n\r\n            // 2 Check that the instance is a subclass of Style::TargetType and also all the styles TargetTypes are\r\n            //   subclasses of their BasedOn styles TargetType.\r\n            root = this;\r\n            var targetType: Function;\r\n            while (root) {\r\n                targetType = root.TargetType;\r\n                if (root === this) {\r\n                    if (!targetType) {\r\n                        error.Number = BError.InvalidOperation;\r\n                        error.Message = \"TargetType cannot be null\";\r\n                        return false;\r\n                    } else if (!nullstone.doesInheritFrom(parentType, targetType)) {\r\n                        error.Number = BError.XamlParse;\r\n                        error.Message = \"Style.TargetType (\" + (<any>targetType).name + \") is not a subclass of (\" + (<any>parentType).name + \")\";\r\n                        return false;\r\n                    }\r\n                } else if (!targetType || !nullstone.doesInheritFrom(parentType, targetType)) {\r\n                    error.Number = BError.InvalidOperation;\r\n                    error.Message = \"Style.TargetType (\" + (targetType ? (<any>targetType).name : \"<Not Specified>\") + \") is not a subclass of (\" + (<any>parentType).name + \")\";\r\n                    return false;\r\n                }\r\n                parentType = targetType;\r\n                root = root.BasedOn;\r\n            }\r\n\r\n            // 3 This style is now OK and never needs to be checked again.\r\n            this.Seal();\r\n            return true;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Style);\r\n    Markup.Content(Style, Style.SettersProperty);\r\n}"
  },
  {
    "path": "src/Core/TemplateBinding.ts",
    "content": "module Fayde {\r\n    export class TemplateBinding implements nullstone.markup.IMarkupExtension {\r\n        SourceProperty: string;\r\n\r\n        init (val: string) {\r\n            this.SourceProperty = val;\r\n        }\r\n\r\n        transmute (os: any[]): any {\r\n            return new TemplateBindingExpression(this.SourceProperty);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TemplateBinding);\r\n}"
  },
  {
    "path": "src/Core/Triggers.ts",
    "content": "/// <reference path=\"DependencyObject.ts\" />\r\n/// <reference path=\"XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde {\r\n    export class TriggerAction extends DependencyObject {\r\n        Fire() { }\r\n    }\r\n    Fayde.CoreLibrary.add(TriggerAction);\r\n    \r\n    export class TriggerActionCollection extends XamlObjectCollection<TriggerAction> {\r\n        Fire() {\r\n            var enumerator = this.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                (<TriggerAction>enumerator.current).Fire();\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TriggerActionCollection);\r\n\r\n    \r\n    export class TriggerBase extends DependencyObject {\r\n        Attach(target: XamlObject) { }\r\n        Detach(target: XamlObject) { }\r\n    }\r\n    Fayde.CoreLibrary.add(TriggerBase);\r\n    \r\n    export class EventTrigger extends TriggerBase {\r\n        static ActionsProperty = DependencyProperty.RegisterImmutable<TriggerActionCollection>(\"Actions\", () => TriggerActionCollection, EventTrigger);\r\n        static RoutedEventProperty = DependencyProperty.Register(\"RoutedEvent\", () => String, EventTrigger);\r\n        Actions: TriggerActionCollection;\r\n        RoutedEvent: string;\r\n        \r\n        private _IsAttached: boolean = false;\r\n        \r\n        constructor() {\r\n            super();\r\n            var coll = EventTrigger.ActionsProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n        }\r\n\r\n        Attach(target: XamlObject) {\r\n            if (this._IsAttached)\r\n                return;\r\n            var evt = this._ParseEventName(target);\r\n            if (evt) {\r\n                this._IsAttached = true;\r\n                evt.on(this._FireActions, this);\r\n                return;\r\n            }\r\n            console.warn(\"Could not attach to RoutedEvent: \" + this.RoutedEvent);\r\n        }\r\n        Detach(target: XamlObject) {\r\n            var evt = this._ParseEventName(target);\r\n            if (evt) evt.off(this._FireActions, this);\r\n            this._IsAttached = false;\r\n        }\r\n\r\n        private _FireActions(sender, e: RoutedEventArgs) {\r\n            var actions = this.Actions;\r\n            if (actions)\r\n                actions.Fire();\r\n        }\r\n\r\n        private _ParseEventName(target: XamlObject): RoutedEvent<RoutedEventArgs> {\r\n            //Usually comes in \"FrameworkElement.Loaded\"\r\n            var routedEventName = this.RoutedEvent;\r\n            var tokens = routedEventName.split(\".\");\r\n            if (tokens.length === 1)\r\n                routedEventName = tokens[0];\r\n            else if (tokens.length === 2)\r\n                routedEventName = tokens[1];\r\n            else\r\n                return undefined;\r\n\r\n            var evt: RoutedEvent<RoutedEventArgs> = target[routedEventName];\r\n            if (evt instanceof RoutedEvent)\r\n                return evt;\r\n            return undefined;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(EventTrigger);\r\n    Markup.Content(EventTrigger, EventTrigger.ActionsProperty);\r\n\r\n    export class TriggerCollection extends XamlObjectCollection<TriggerBase> {\r\n        XamlNode: XamlNode;\r\n        private get ParentXamlObject(): XamlObject {\r\n            var parentNode = this.XamlNode.ParentNode;\r\n            if (!parentNode)\r\n                return undefined;\r\n            return parentNode.XObject;\r\n        }\r\n\r\n        AddingToCollection(value: TriggerBase, error: BError): boolean {\r\n            if (!super.AddingToCollection(value, error))\r\n                return false;\r\n            var parent = this.ParentXamlObject;\r\n            if (parent) value.Attach(parent);\r\n            return true;\r\n        }\r\n        RemovedFromCollection(value: TriggerBase, isValueSafe: boolean) {\r\n            super.RemovedFromCollection(value, isValueSafe);\r\n            var parent = this.ParentXamlObject;\r\n            if (parent) value.Detach(parent);\r\n        }\r\n\r\n        AttachTarget(target: XamlObject) {\r\n            var enumerator = this.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                (<TriggerBase>enumerator.current).Attach(target);\r\n            }\r\n        }\r\n        DetachTarget(target: XamlObject) {\r\n            var enumerator = this.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                (<TriggerBase>enumerator.current).Detach(target);\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TriggerCollection);\r\n}"
  },
  {
    "path": "src/Core/UIElement.ts",
    "content": "/// <reference path=\"DependencyObject.ts\" />\r\n/// <reference path=\"UIReaction.ts\" />\r\n/// <reference path=\"UIReactionAttached.ts\" />\r\n/// <reference path=\"Providers/InheritedStore.ts\" />\r\n/// <reference path=\"Enums.ts\" />\r\n/// <reference path=\"InheritableOwner.ts\" />\r\n\r\nmodule Fayde {\r\n    export class UINode extends DONode {\r\n        XObject: UIElement;\r\n        LayoutUpdater: minerva.core.Updater;\r\n        IsMouseOver: boolean = false;\r\n\r\n        constructor(xobj: UIElement) {\r\n            super(xobj);\r\n            var upd = this.LayoutUpdater = xobj.CreateLayoutUpdater();\r\n            upd.setAttachedValue(\"$node\", this);\r\n            upd.setAttachedValue(\"$id\", (<any>this.XObject)._ID);\r\n        }\r\n\r\n        VisualParentNode: UINode;\r\n        GetVisualRoot(): UINode {\r\n            var curNode = this;\r\n            var vpNode: UINode;\r\n            while (vpNode = curNode.VisualParentNode) {\r\n                curNode = vpNode;\r\n            }\r\n            return curNode;\r\n        }\r\n\r\n        IsLoaded: boolean = false;\r\n        SetIsLoaded(value: boolean) { }\r\n\r\n        OnVisualChildAttached(uie: UIElement) {\r\n            var un = uie.XamlNode;\r\n            Providers.InheritedStore.PropagateInheritedOnAdd(this.XObject, un);\r\n            un.SetVisualParentNode(this);\r\n        }\r\n        OnVisualChildDetached(uie: UIElement) {\r\n            var un = uie.XamlNode;\r\n            un.SetVisualParentNode(null);\r\n            Providers.InheritedStore.ClearInheritedOnRemove(this.XObject, un);\r\n        }\r\n\r\n        private SetVisualParentNode(visualParentNode: UINode) {\r\n            if (this.VisualParentNode === visualParentNode)\r\n                return;\r\n            this.VisualParentNode = visualParentNode;\r\n            this.LayoutUpdater.setVisualParent(visualParentNode ? visualParentNode.LayoutUpdater : null);\r\n        }\r\n\r\n        Focus(recurse?: boolean): boolean { return false; }\r\n\r\n        _EmitFocusChange(type: string) {\r\n            if (type === \"got\")\r\n                this._EmitGotFocus();\r\n            else if (type === \"lost\")\r\n                this._EmitLostFocus();\r\n        }\r\n        private _EmitLostFocus() {\r\n            var e = new Fayde.RoutedEventArgs();\r\n            var x = this.XObject;\r\n            x.OnLostFocus(e);\r\n            x.LostFocus.raise(x, e);\r\n        }\r\n        private _EmitGotFocus() {\r\n            var e = new Fayde.RoutedEventArgs();\r\n            var x = this.XObject;\r\n            x.OnGotFocus(e);\r\n            x.GotFocus.raise(x, e);\r\n        }\r\n        _EmitKeyDown(args: Fayde.Input.KeyEventArgs) {\r\n            var x = this.XObject;\r\n            x.OnKeyDown(args);\r\n            x.KeyDown.raise(x, args);\r\n        }\r\n        _EmitKeyUp(args: Fayde.Input.KeyEventArgs) {\r\n            var x = this.XObject;\r\n            x.OnKeyUp(args);\r\n            x.KeyUp.raise(x, args);\r\n        }\r\n        _EmitLostMouseCapture(pos: Point) {\r\n            var x = this.XObject;\r\n            var e = new Input.MouseEventArgs(pos);\r\n            x.OnLostMouseCapture(e);\r\n            x.LostMouseCapture.raise(x, e);\r\n        }\r\n        _EmitMouseEvent(type: Input.MouseInputType, isLeftButton: boolean, isRightButton: boolean, args: Input.MouseEventArgs): boolean {\r\n            var x = this.XObject;\r\n            switch (type) {\r\n                case Input.MouseInputType.MouseUp:\r\n                    if (isLeftButton) {\r\n                        x.OnMouseLeftButtonUp(<Input.MouseButtonEventArgs>args);\r\n                        x.MouseLeftButtonUp.raise(x, args);\r\n                    } else if (isRightButton) {\r\n                        x.OnMouseRightButtonUp(<Input.MouseButtonEventArgs>args);\r\n                        x.MouseRightButtonUp.raise(x, args);\r\n                    }\r\n                    break;\r\n                case Input.MouseInputType.MouseDown:\r\n                    if (isLeftButton) {\r\n                        x.OnMouseLeftButtonDown(<Input.MouseButtonEventArgs>args);\r\n                        x.MouseLeftButtonDown.raise(x, args);\r\n                    } else if (isRightButton) {\r\n                        x.OnMouseRightButtonDown(<Input.MouseButtonEventArgs>args);\r\n                        x.MouseRightButtonDown.raise(x, args);\r\n                    }\r\n                    break;\r\n                case Input.MouseInputType.MouseLeave:\r\n                    this.IsMouseOver = false;\r\n                    x.OnMouseLeave(args);\r\n                    x.MouseLeave.raise(x, args);\r\n                    break;\r\n                case Input.MouseInputType.MouseEnter:\r\n                    this.IsMouseOver = true;\r\n                    x.OnMouseEnter(args);\r\n                    x.MouseEnter.raise(x, args);\r\n                    break;\r\n                case Input.MouseInputType.MouseMove:\r\n                    x.OnMouseMove(args);\r\n                    x.MouseMove.raise(x, args);\r\n                    break;\r\n                case Input.MouseInputType.MouseWheel:\r\n                    x.OnMouseWheel(<Input.MouseWheelEventArgs>args);\r\n                    x.MouseWheel.raise(x, <Input.MouseWheelEventArgs>args);\r\n                    break;\r\n                default:\r\n                    return false;\r\n            }\r\n            return args.Handled;\r\n        }\r\n        _EmitTouchEvent(type: Input.TouchInputType, args: Input.TouchEventArgs) {\r\n            var x = this.XObject;\r\n            switch (type) {\r\n                case Input.TouchInputType.TouchDown:\r\n                    x.OnTouchDown(args);\r\n                    x.TouchDown.raise(x, args);\r\n                    break;\r\n                case Input.TouchInputType.TouchUp:\r\n                    x.OnTouchUp(args);\r\n                    x.TouchUp.raise(x, args);\r\n                    break;\r\n                case Input.TouchInputType.TouchMove:\r\n                    x.OnTouchMove(args);\r\n                    x.TouchMove.raise(x, args);\r\n                    break;\r\n                case Input.TouchInputType.TouchEnter:\r\n                    x.OnTouchEnter(args);\r\n                    x.TouchEnter.raise(x, args);\r\n                    break;\r\n                case Input.TouchInputType.TouchLeave:\r\n                    x.OnTouchLeave(args);\r\n                    x.TouchLeave.raise(x, args);\r\n                    break;\r\n                default:\r\n                    return false;\r\n            }\r\n            return args.Handled;\r\n        }\r\n        _EmitGotTouchCapture(e: Input.TouchEventArgs) {\r\n            var x = this.XObject;\r\n            x.OnGotTouchCapture(e);\r\n            x.GotTouchCapture.raise(this, e);\r\n        }\r\n        _EmitLostTouchCapture(e: Input.TouchEventArgs) {\r\n            var x = this.XObject;\r\n            x.OnLostTouchCapture(e);\r\n            x.LostTouchCapture.raise(this, e);\r\n        }\r\n\r\n        CanCaptureMouse(): boolean { return true; }\r\n        CaptureMouse(): boolean {\r\n            if (!this.IsAttached)\r\n                return false;\r\n            Surface.SetMouseCapture(this);\r\n            return true;\r\n        }\r\n        ReleaseMouseCapture() {\r\n            if (!this.IsAttached)\r\n                return;\r\n            Surface.ReleaseMouseCapture(this);\r\n        }\r\n\r\n        IsAncestorOf(uin: UINode) {\r\n            var vpNode = uin;\r\n            while (vpNode && vpNode !== this)\r\n                vpNode = vpNode.VisualParentNode;\r\n            return vpNode === this;\r\n        }\r\n\r\n        TransformToVisual (uin?: UINode): Media.GeneralTransform {\r\n            var raw = minerva.core.Updater.transformToVisual(this.LayoutUpdater, uin ? uin.LayoutUpdater : null);\r\n            if (!raw)\r\n                throw new ArgumentException(\"UIElement not attached.\");\r\n            var mt = new Media.MatrixTransform();\r\n            mt.SetCurrentValue(Media.MatrixTransform.MatrixProperty, new Media.Matrix(raw));\r\n            return mt;\r\n        }\r\n    }\r\n\r\n    export class UIElement extends DependencyObject implements Providers.IIsPropertyInheritable {\r\n        XamlNode: UINode;\r\n        CreateNode(): UINode { return new UINode(this); }\r\n        CreateLayoutUpdater(): minerva.core.Updater { return new minerva.core.Updater(); }\r\n\r\n        get IsItemsControl(): boolean { return false; }\r\n\r\n        get VisualParent() {\r\n            var vpNode = this.XamlNode.VisualParentNode;\r\n            if (vpNode) return vpNode.XObject;\r\n            return undefined;\r\n        }\r\n\r\n        static AllowDropProperty: DependencyProperty;\r\n        static CacheModeProperty: DependencyProperty;\r\n        static ClipProperty = DependencyProperty.RegisterCore(\"Clip\", () => Media.Geometry, UIElement);\r\n        static EffectProperty = DependencyProperty.Register(\"Effect\", () => Media.Effects.Effect, UIElement);\r\n        static IsHitTestVisibleProperty = DependencyProperty.RegisterCore(\"IsHitTestVisible\", () => Boolean, UIElement, true);\r\n        static OpacityMaskProperty = DependencyProperty.RegisterCore(\"OpacityMask\", () => Media.Brush, UIElement);\r\n        static OpacityProperty = DependencyProperty.RegisterCore(\"Opacity\", () => Number, UIElement, 1.0);\r\n        static RenderTransformProperty = DependencyProperty.RegisterCore(\"RenderTransform\", () => Media.Transform, UIElement);\r\n        static RenderTransformOriginProperty = DependencyProperty.Register(\"RenderTransformOrigin\", () => Point, UIElement);\r\n        static TagProperty = DependencyProperty.Register(\"Tag\", () => Object, UIElement);\r\n        static TriggersProperty: DependencyProperty = DependencyProperty.RegisterCore(\"Triggers\", () => TriggerCollection, UIElement, undefined, (d, args) => (<UIElement>d)._TriggersChanged(args));\r\n        static UseLayoutRoundingProperty = InheritableOwner.UseLayoutRoundingProperty.ExtendTo(UIElement);\r\n        static VisibilityProperty = DependencyProperty.RegisterCore(\"Visibility\", () => new Enum(Visibility), UIElement, Visibility.Visible);\r\n\r\n        IsInheritable(propd: DependencyProperty): boolean {\r\n            return propd === UIElement.UseLayoutRoundingProperty;\r\n        }\r\n\r\n        get IsMouseOver() { return this.XamlNode.IsMouseOver; }\r\n        get DesiredSize(): minerva.Size {\r\n            var ds = this.XamlNode.LayoutUpdater.assets.desiredSize;\r\n            return new minerva.Size(ds.width, ds.height);\r\n        }\r\n        get RenderSize(): minerva.Size {\r\n            var ds = this.XamlNode.LayoutUpdater.assets.renderSize;\r\n            return new minerva.Size(ds.width, ds.height);\r\n        }\r\n\r\n        //AllowDrop: boolean;\r\n        //CacheMode;\r\n        Clip: Media.Geometry;\r\n        Effect: Media.Effects.Effect;\r\n        IsHitTestVisible: boolean;\r\n        Cursor: CursorType;\r\n        OpacityMask: Media.Brush;\r\n        Opacity: number;\r\n        //Projection: Media.Projection;\r\n        RenderTransform: Media.Transform;\r\n        RenderTransformOrigin: Point;\r\n        Tag: any;\r\n        Triggers: TriggerCollection;\r\n        UseLayoutRounding: boolean;\r\n        Visibility: Visibility;\r\n\r\n        Focus(): boolean { return this.XamlNode.Focus(); }\r\n        CaptureMouse():boolean { return this.XamlNode.CaptureMouse(); }\r\n        ReleaseMouseCapture() { this.XamlNode.ReleaseMouseCapture(); }\r\n\r\n        IsAncestorOf(uie: UIElement): boolean {\r\n            if (!uie) return false;\r\n            return this.XamlNode.IsAncestorOf(uie.XamlNode);\r\n        }\r\n        TransformToVisual(uie: UIElement): Media.GeneralTransform {\r\n            var uin = (uie) ? uie.XamlNode : null;\r\n            return this.XamlNode.TransformToVisual(uin);\r\n        }\r\n\r\n        InvalidateMeasure() { this.XamlNode.LayoutUpdater.invalidateMeasure(); }\r\n        Measure(availableSize: minerva.Size) {\r\n            this.XamlNode.LayoutUpdater.measure(availableSize);\r\n        }\r\n        InvalidateArrange() { this.XamlNode.LayoutUpdater.invalidateArrange(); }\r\n        Arrange(finalRect: minerva.Rect) {\r\n            this.XamlNode.LayoutUpdater.arrange(finalRect);\r\n        }\r\n\r\n        LostFocus = new RoutedEvent<RoutedEventArgs>();\r\n        GotFocus = new RoutedEvent<RoutedEventArgs>();\r\n        LostMouseCapture = new RoutedEvent<Input.MouseEventArgs>();\r\n        KeyDown = new RoutedEvent<Input.KeyEventArgs>();\r\n        KeyUp = new RoutedEvent<Input.KeyEventArgs>();\r\n        MouseLeftButtonUp = new RoutedEvent<Input.MouseButtonEventArgs>();\r\n        MouseRightButtonUp = new RoutedEvent<Input.MouseButtonEventArgs>();\r\n        MouseLeftButtonDown = new RoutedEvent<Input.MouseButtonEventArgs>();\r\n        MouseRightButtonDown = new RoutedEvent<Input.MouseButtonEventArgs>();\r\n        MouseLeave = new RoutedEvent<Input.MouseEventArgs>();\r\n        MouseEnter = new RoutedEvent<Input.MouseEventArgs>();\r\n        MouseMove = new RoutedEvent<Input.MouseEventArgs>();\r\n        MouseWheel = new RoutedEvent<Input.MouseWheelEventArgs>();\r\n        TouchDown = new RoutedEvent<Input.TouchEventArgs>();\r\n        TouchUp = new RoutedEvent<Input.TouchEventArgs>();\r\n        TouchEnter = new RoutedEvent<Input.TouchEventArgs>();\r\n        TouchLeave = new RoutedEvent<Input.TouchEventArgs>();\r\n        TouchMove = new RoutedEvent<Input.TouchEventArgs>();\r\n        GotTouchCapture = new RoutedEvent<Input.TouchEventArgs>();\r\n        LostTouchCapture = new RoutedEvent<Input.TouchEventArgs>();\r\n\r\n        OnGotFocus(e: RoutedEventArgs) { }\r\n        OnLostFocus(e: RoutedEventArgs) { }\r\n        OnLostMouseCapture(e: Input.MouseEventArgs) { }\r\n        OnKeyDown(e: Input.KeyEventArgs) { }\r\n        OnKeyUp(e: Input.KeyEventArgs) { }\r\n        OnMouseEnter(e: Input.MouseEventArgs) { }\r\n        OnMouseLeave(e: Input.MouseEventArgs) { }\r\n        OnMouseLeftButtonDown(e: Input.MouseButtonEventArgs) { }\r\n        OnMouseLeftButtonUp(e: Input.MouseButtonEventArgs) { }\r\n        OnMouseMove(e: Input.MouseEventArgs) { }\r\n        OnMouseRightButtonDown(e: Input.MouseButtonEventArgs) { }\r\n        OnMouseRightButtonUp(e: Input.MouseButtonEventArgs) { }\r\n        OnMouseWheel(e: Input.MouseWheelEventArgs) { }\r\n        OnTouchDown(e: Input.TouchEventArgs) { }\r\n        OnTouchUp(e: Input.TouchEventArgs) { }\r\n        OnTouchEnter(e: Input.TouchEventArgs) { }\r\n        OnTouchLeave(e: Input.TouchEventArgs) { }\r\n        OnTouchMove(e: Input.TouchEventArgs) { }\r\n        OnGotTouchCapture(e: Input.TouchEventArgs) { }\r\n        OnLostTouchCapture(e: Input.TouchEventArgs) { }\r\n\r\n        private _TriggersChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            var oldTriggers = <TriggerCollection>args.OldValue;\r\n            var newTriggers = <TriggerCollection>args.NewValue;\r\n            if (oldTriggers instanceof TriggerCollection)\r\n                oldTriggers.DetachTarget(this);\r\n            if (newTriggers instanceof TriggerCollection)\r\n                newTriggers.AttachTarget(this);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(UIElement);\r\n\r\n    module reactions {\r\n        UIReaction<minerva.IGeometry>(UIElement.ClipProperty, minerva.core.reactTo.clip);\r\n        UIReaction<minerva.IEffect>(UIElement.EffectProperty, minerva.core.reactTo.effect);\r\n        UIReaction<boolean>(UIElement.IsHitTestVisibleProperty, minerva.core.reactTo.isHitTestVisible, false);\r\n        UIReaction<number>(UIElement.OpacityProperty, minerva.core.reactTo.opacity, false);\r\n        UIReaction<Media.Transform>(UIElement.RenderTransformProperty, minerva.core.reactTo.renderTransform);\r\n        UIReaction<minerva.Point>(UIElement.RenderTransformOriginProperty, minerva.core.reactTo.renderTransformOrigin, false, minerva.Point.copyTo);\r\n        UIReaction<minerva.Visibility>(UIElement.VisibilityProperty, (upd, ov, nv, uie?) => {\r\n            minerva.core.reactTo.visibility(upd, ov, nv);\r\n            Surface.RemoveFocusFrom(uie);\r\n        }, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Core/UIReaction.ts",
    "content": "module Fayde {\r\n    export interface IUIReactionCallback<T> {\r\n        (updater: minerva.core.Updater, ov: T, nv: T, uie?: UIElement): void;\r\n    }\r\n\r\n    export function UIReaction<TValue>(propd: DependencyProperty, callback?: IUIReactionCallback<TValue>, listen?: boolean, sync?: (src: TValue, dest: TValue) => void, instance?: any);\r\n\r\n    export function UIReaction<TValue>(propd: DependencyProperty, callback?: IUIReactionCallback<TValue>, listen?: boolean, sync?: boolean, instance?: any);\r\n\r\n    export function UIReaction<TValue>(propd: DependencyProperty, callback?: IUIReactionCallback<TValue>, listen?: boolean, sync?: any, instance?: any) {\r\n        var changed: Function;\r\n        if (sync === false) {\r\n            changed = (listen === false) ? reaction<TValue>(callback) : lReaction<TValue>(callback);\r\n        } else {\r\n            var name = propd.Name;\r\n            name = name.charAt(0).toLowerCase() + name.substr(1);\r\n            if (typeof sync !== \"function\")\r\n                changed = (listen === false) ? sReaction<TValue>(callback, name) : slReaction<TValue>(callback, name);\r\n            else\r\n                changed = (listen === false) ? sReaction<TValue>(callback, name, sync) : slReaction<TValue>(callback, name, sync);\r\n        }\r\n        if (instance)\r\n            propd.Store.ListenToChanged(instance, propd, <any>changed, instance);\r\n        else\r\n            propd.ChangedCallback = <any>changed;\r\n    }\r\n\r\n    function reaction<T>(callback: IUIReactionCallback<T>) {\r\n        return (uie: UIElement, args: DependencyPropertyChangedEventArgs) => {\r\n            callback && callback(uie.XamlNode.LayoutUpdater, args.OldValue, args.NewValue, uie);\r\n        };\r\n    }\r\n\r\n    function sReaction<T>(callback: IUIReactionCallback<T>, name: string, syncer?: (src: T, dest: T) => void) {\r\n        return (uie: UIElement, args: DependencyPropertyChangedEventArgs) => {\r\n            var ov = args.OldValue;\r\n            var nv = args.NewValue;\r\n            var upd = uie.XamlNode.LayoutUpdater;\r\n            if (!syncer)\r\n                upd.assets[name] = nv;\r\n            else\r\n                syncer(nv, upd.assets[name]);\r\n            callback && callback(upd, ov, nv, uie);\r\n        };\r\n    }\r\n\r\n    function lReaction<T>(callback: IUIReactionCallback<T>) {\r\n        return (uie: UIElement, args: DependencyPropertyChangedEventArgs) => {\r\n            var ov = args.OldValue;\r\n            var nv = args.NewValue;\r\n            var upd = uie.XamlNode.LayoutUpdater;\r\n            UnreactTo(ov, uie);\r\n            callback && callback(upd, ov, nv, uie);\r\n            ReactTo(nv, uie, () => callback(upd, nv, nv, uie));\r\n        };\r\n    }\r\n\r\n    function slReaction<T>(callback: IUIReactionCallback<T>, name: string, syncer?: (src: T, dest: T) => void) {\r\n        return (uie: UIElement, args: DependencyPropertyChangedEventArgs) => {\r\n            var ov = args.OldValue;\r\n            var nv = args.NewValue;\r\n            var upd = uie.XamlNode.LayoutUpdater;\r\n            UnreactTo(ov, uie);\r\n            if (!syncer)\r\n                upd.assets[name] = nv;\r\n            else\r\n                syncer(nv, upd.assets[name]);\r\n            callback && callback(upd, ov, nv, uie);\r\n            ReactTo(nv, uie, () => callback && callback(upd, nv, nv, uie));\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Core/UIReactionAttached.ts",
    "content": "module Fayde {\r\n    export function UIReactionAttached<TValue>(propd: DependencyProperty, callback?: IUIReactionCallback<TValue>) {\r\n        propd.ChangedCallback = reaction<TValue>(nullstone.getTypeName(propd.OwnerType) + '.' + propd.Name, callback);\r\n    }\r\n\r\n    function reaction<T>(name: string, callback?: IUIReactionCallback<T>) {\r\n        return (uie: UIElement, args: DependencyPropertyChangedEventArgs) => {\r\n            var ov = args.OldValue;\r\n            var nv = args.NewValue;\r\n            var upd = uie.XamlNode.LayoutUpdater;\r\n            upd.setAttachedValue(name, nv);\r\n            callback && callback(upd, ov, nv, uie);\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Core/VisualTreeEnum.ts",
    "content": "module Fayde {\r\n    export class VisualTreeEnum {\r\n        static GetAncestors (uie: UIElement): nullstone.IEnumerable<UIElement> {\r\n            return new AncestorsEnumerable(uie);\r\n        }\r\n    }\r\n\r\n    class AncestorsEnumerable implements nullstone.IEnumerable<UIElement> {\r\n        constructor (private uie: UIElement) {\r\n        }\r\n\r\n        getEnumerator (): nullstone.IEnumerator<UIElement> {\r\n            var curNode: UINode = this.uie ? this.uie.XamlNode : null;\r\n            var e = {\r\n                current: undefined,\r\n                moveNext (): boolean {\r\n                    curNode = curNode ? curNode.VisualParentNode : undefined;\r\n                    e.current = curNode ? curNode.XObject : undefined;\r\n                    return e.current !== undefined;\r\n                }\r\n            };\r\n            return e;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Core/VisualTreeHelper.ts",
    "content": "module Fayde {\r\n    export class VisualTreeHelper {\r\n        static GetParent (d: DependencyObject): DependencyObject {\r\n            if (!(d instanceof FrameworkElement))\r\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\r\n            var parentNode = (<UIElement>d).XamlNode.VisualParentNode;\r\n            if (parentNode)\r\n                return parentNode.XObject;\r\n        }\r\n\r\n        static GetParentOfType<T extends DependencyObject>(d: DependencyObject, type: any): T {\r\n            if (!(d instanceof FrameworkElement))\r\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\r\n            var curNode = (<UIElement>d).XamlNode;\r\n            while ((curNode = curNode.VisualParentNode)) {\r\n                if (curNode.XObject instanceof type)\r\n                    return <T><any>curNode.XObject;\r\n            }\r\n            return undefined;\r\n        }\r\n\r\n        static GetRoot (d: DependencyObject): DependencyObject {\r\n            if (!(d instanceof FrameworkElement))\r\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\r\n            var rootNode = (<UIElement>d).XamlNode.GetVisualRoot();\r\n            if (rootNode)\r\n                return rootNode.XObject;\r\n        }\r\n\r\n        static GetChild (d: DependencyObject, childIndex: number): DependencyObject {\r\n            if (!(d instanceof FrameworkElement))\r\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\r\n\r\n            var feNode = <FENode>d.XamlNode;\r\n            var subtreeNode = feNode.SubtreeNode;\r\n            if (!subtreeNode)\r\n                throw new IndexOutOfRangeException(childIndex);\r\n\r\n            var subtree = subtreeNode.XObject;\r\n            if (subtree instanceof XamlObjectCollection)\r\n                return <DependencyObject>(<XamlObjectCollection<DependencyObject>>subtree).GetValueAt(childIndex);\r\n\r\n            if ((subtree instanceof UIElement) && childIndex === 0)\r\n                return <UIElement>subtree;\r\n\r\n            throw new IndexOutOfRangeException(childIndex);\r\n        }\r\n\r\n        static GetChildrenCount (d: DependencyObject): number {\r\n            if (!(d instanceof FrameworkElement))\r\n                throw new InvalidOperationException(\"Reference is not a valid visual DependencyObject\");\r\n\r\n            var feNode = <FENode>d.XamlNode;\r\n            var subtreeNode = feNode.SubtreeNode;\r\n            if (!subtreeNode)\r\n                return 0;\r\n\r\n            var subtree = subtreeNode.XObject;\r\n            if (subtreeNode.XObject instanceof XamlObjectCollection)\r\n                return (<XamlObjectCollection<DependencyObject>>subtree).Count;\r\n\r\n            if (subtree instanceof UIElement)\r\n                return 1;\r\n\r\n            return 0;\r\n        }\r\n\r\n        static FindElementsInHostCoordinates (pos: Point, uie: UIElement): UIElement[] {\r\n            return minerva.findElementsInHostSpace(pos, uie.XamlNode.LayoutUpdater)\r\n                .map(upd => upd.getAttachedValue(\"$node\").XObject);\r\n        }\r\n\r\n        static __Debug (ui: any, func?: (uin: UINode, tabIndex: number) => string): string {\r\n            var uin: UINode;\r\n            if (ui instanceof UIElement) {\r\n                uin = (<UIElement>ui).XamlNode;\r\n            } else if (ui instanceof UINode) {\r\n                uin = <UINode>ui;\r\n            } else if (ui instanceof minerva.core.Updater) {\r\n                uin = (<minerva.core.Updater>ui).getAttachedValue(\"$node\");\r\n            }\r\n\r\n            //Find top level\r\n            var topNode: UINode;\r\n            if (!uin) {\r\n                var rv = Application.Current.RootVisual;\r\n                topNode = (rv) ? rv.XamlNode : null;\r\n            } else {\r\n                topNode = uin.GetVisualRoot();\r\n            }\r\n            if (!topNode)\r\n                return \"[No top node.]\";\r\n\r\n            if (!func)\r\n                func = VisualTreeHelper.__DebugUIElement;\r\n            return VisualTreeHelper.__DebugTree(topNode, uin, 1, func);\r\n        }\r\n\r\n        private static __DebugTree (curNode: UINode, matchNode: UINode, tabIndex: number, func: (uin: UINode, tabIndex: number) => string) {\r\n            var str = \"\";\r\n            if (curNode === matchNode) {\r\n                for (var i = 0; i < tabIndex; i++) {\r\n                    str += \">>>>>>>>\";\r\n                }\r\n            } else {\r\n                for (var i = 0; i < tabIndex; i++) {\r\n                    str += \"\\t\";\r\n                }\r\n            }\r\n\r\n            var cur = curNode.XObject;\r\n            str += (<any>cur).constructor.name;\r\n            var id = (<any>cur)._ID;\r\n            if (id) str += \"[\" + id + \"]\";\r\n            var name = curNode.Name;\r\n            str += \" [\";\r\n            var ns = curNode.NameScope;\r\n            if (!ns)\r\n                str += \"^\";\r\n            else if (ns.IsRoot)\r\n                str += \"+\";\r\n            else\r\n                str += \"-\";\r\n            str += name + \"]\";\r\n            if (func)\r\n                str += func(curNode, tabIndex);\r\n            str += \"\\n\";\r\n\r\n            var enumerator = (<FENode>curNode).GetVisualTreeEnumerator();\r\n            if (!enumerator)\r\n                return str;\r\n\r\n            var childNode: UINode;\r\n            while (enumerator.moveNext()) {\r\n                childNode = enumerator.current;\r\n                str += VisualTreeHelper.__DebugTree(childNode, matchNode, tabIndex + 1, func);\r\n            }\r\n\r\n            return str;\r\n        }\r\n\r\n        private static __DebugUIElement (uin: UINode, tabIndex: number): string {\r\n            if (!uin)\r\n                return \"\";\r\n            var uie = uin.XObject;\r\n            var str = \"(\";\r\n            if (uie.Visibility === Fayde.Visibility.Visible)\r\n                str += \"Visible\";\r\n            else\r\n                str += \"Collapsed\";\r\n\r\n            var lu = uin.LayoutUpdater;\r\n            if (lu) {\r\n                str += \" \";\r\n                var ls = lu.assets.layoutSlot;\r\n                str += \"(\" + ls.x + \",\" + ls.y + \")(\" + ls.width + \",\" + ls.height + \")\";\r\n            }\r\n            str += \")\";\r\n\r\n            var t = uie.TemplateOwner;\r\n            str += \"$TO=\" + (t ? (<any>t).constructor.name : \"(null)\");\r\n\r\n            var gridStr = VisualTreeHelper.__DebugGrid(uin, tabIndex);\r\n            if (gridStr)\r\n                str += \"\\n\" + gridStr;\r\n            return str;\r\n        }\r\n\r\n        private static __DebugGrid (uin: UINode, tabIndex: number): string {\r\n            var grid: Controls.Grid;\r\n            if (uin.XObject instanceof Controls.Grid)\r\n                grid = <Controls.Grid>uin.XObject;\r\n            if (!grid)\r\n                return \"\";\r\n            var rds = grid.RowDefinitions;\r\n            var rcount = rds.Count;\r\n            var cds = grid.ColumnDefinitions;\r\n            var ccount = cds.Count;\r\n\r\n            var tabs = \"\";\r\n            for (var i = 0; i < tabIndex; i++) {\r\n                tabs += \"\\t\";\r\n            }\r\n\r\n            var str = \"\";\r\n            if (rcount > 0) {\r\n                str += tabs;\r\n                str += \"  Rows (\" + rcount + \"):\\n\";\r\n                var rowdef: Controls.RowDefinition;\r\n                for (var en = rds.getEnumerator(), i = 0; en.moveNext(); i++) {\r\n                    rowdef = en.current;\r\n                    str += tabs;\r\n                    str += \"\\t[\" + i + \"] -> \" + rowdef.ActualHeight + \"\\n\";\r\n                }\r\n            }\r\n            var enumerator2: nullstone.IEnumerator<Controls.ColumnDefinition>;\r\n            if (ccount > 0) {\r\n                str += tabs;\r\n                str += \"  Columns (\" + ccount + \"):\\n\";\r\n                var coldef: Controls.ColumnDefinition;\r\n                for (var en2 = cds.getEnumerator(), i = 0; en2.moveNext(); i++) {\r\n                    coldef = en2.current;\r\n                    str += tabs;\r\n                    str += \"\\t[\" + i + \"] -> \" + coldef.ActualWidth + \"\\n\";\r\n                }\r\n            }\r\n            return str;\r\n        }\r\n\r\n        private static __DebugUIElementLayout (uin: UINode, tabIndex: number): string {\r\n            if (!uin)\r\n                return \"\";\r\n            return (<any>uin.LayoutUpdater)._DebugLayout();\r\n        }\r\n\r\n        static __DebugLayout (ui: any): string {\r\n            return VisualTreeHelper.__Debug(ui, VisualTreeHelper.__DebugUIElementLayout);\r\n        }\r\n\r\n        private static __GetById (id: number): UIElement {\r\n            //Find top level\r\n            var rv = Application.Current.RootVisual;\r\n            var topNode = (rv) ? rv.XamlNode : null;\r\n            if (!topNode)\r\n                return;\r\n\r\n            var walker = DeepTreeWalker(topNode);\r\n            var curNode: UINode;\r\n            while (curNode = walker.Step()) {\r\n                if ((<any>curNode.XObject)._ID === id)\r\n                    return curNode.XObject;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Core/Walkers.ts",
    "content": "\r\nmodule Fayde {\r\n    export enum VisualTreeDirection {\r\n        Logical,\r\n        Reverse,\r\n        ZForward,\r\n        ZReverse\r\n    }\r\n\r\n    export interface IWalker {\r\n        Step(): any;\r\n    }\r\n    export interface IStyleWalker extends IWalker {\r\n        Step(): Setter;\r\n    }\r\n    export interface IDeepTreeWalker extends IWalker {\r\n        Step(): UINode;\r\n        SkipBranch();\r\n    }\r\n    export interface ITabNavigationWalker {\r\n        FocusChild(): boolean;\r\n    }\r\n\r\n    function mergeSetters(arr: any[], dps: any[], style: Style) {\r\n        var enumerator = style.Setters.getEnumerator(true);\r\n        var setter: Setter;\r\n        while (enumerator.moveNext()) {\r\n            setter = <Setter>enumerator.current;\r\n            if (!(setter instanceof Fayde.Setter))\r\n                continue;\r\n            var propd = setter.Property;\r\n            if (!propd)\r\n                continue;\r\n            if (dps[propd._ID])\r\n                continue;\r\n            dps[propd._ID] = setter;\r\n            arr.push(setter);\r\n        }\r\n    }\r\n    export function SingleStyleWalker(style: Style): IStyleWalker {\r\n        var dps = [];\r\n        var flattenedSetters = [];\r\n        var cur = style;\r\n        while (cur) {\r\n            mergeSetters(flattenedSetters, dps, cur);\r\n            cur = cur.BasedOn;\r\n        }\r\n        flattenedSetters.sort(Setter.Compare);\r\n\r\n        return {\r\n            Step: function () {\r\n                return flattenedSetters.shift();\r\n            }\r\n        };\r\n    }\r\n    export function MultipleStylesWalker(styles: Style[]): IStyleWalker {\r\n        var flattenedSetters = [];\r\n        if (styles) {\r\n            var dps = [];\r\n            var stylesSeen = [];\r\n            var len = styles.length;\r\n            for (var i = 0; i < len; i++) {\r\n                var style = styles[i];\r\n                while (style) {\r\n                    if (stylesSeen.indexOf(style) > -1)\r\n                        continue;\r\n                    mergeSetters(flattenedSetters, dps, style);\r\n                    stylesSeen.push(style);\r\n                    style = style.BasedOn;\r\n                }\r\n            }\r\n            flattenedSetters.sort(Setter.Compare);\r\n        }\r\n\r\n        return {\r\n            Step: function () {\r\n                return flattenedSetters.shift();\r\n            }\r\n        };\r\n    }\r\n\r\n    //TODO: Remove this after adjusting TabNavigationWalker\r\n    export function DeepTreeWalker(topNode: UINode, direction?: VisualTreeDirection): IDeepTreeWalker {\r\n        var last: UINode = undefined;\r\n        var dir = VisualTreeDirection.Logical;\r\n        var walkList: UINode[] = [topNode];\r\n        if (direction)\r\n            dir = direction;\r\n\r\n        return {\r\n            Step: function () {\r\n                if (last) {\r\n                    var enumerator = (<FENode>last).GetVisualTreeEnumerator();\r\n                    var insertIndex = 0;\r\n                    while (enumerator.moveNext()) {\r\n                        walkList.splice(insertIndex, 0, enumerator.current);\r\n                        insertIndex++;\r\n                    }\r\n                }\r\n\r\n                var next = walkList.shift();\r\n                if (!next) {\r\n                    last = undefined;\r\n                    return;\r\n                }\r\n                return (last = next);\r\n            },\r\n            SkipBranch: function () {\r\n                last = undefined;\r\n            }\r\n        };\r\n    }\r\n    \r\n    function compare(left: Controls.ControlNode, right: Controls.ControlNode) {\r\n        if (!left)\r\n            return !right ? 0 : -1;\r\n        if (!right)\r\n            return 1;\r\n\r\n        var v1 = left.XObject.TabIndex;\r\n        var v2 = right.XObject.TabIndex;\r\n\r\n        if (v1 == null) {\r\n            return v2 != null ? -1 : 0;\r\n        } else if (v2 == null) {\r\n            return 1;\r\n        }\r\n        if (v1 > v2)\r\n            return 1;\r\n        return v1 === v2 ? 0 : -1;\r\n    }\r\n    function getParentNavigationMode(uin: UINode): Input.KeyboardNavigationMode {\r\n        while (uin) {\r\n            if (uin instanceof Controls.ControlNode)\r\n                return (<Controls.ControlNode>uin).XObject.TabNavigation;\r\n            return Input.KeyboardNavigationMode.Local;\r\n        }\r\n        return Input.KeyboardNavigationMode.Local;\r\n    }\r\n    function getActiveNavigationMode(uin: UINode): Input.KeyboardNavigationMode {\r\n        while (uin) {\r\n            if (uin instanceof Controls.ControlNode)\r\n                return (<Controls.ControlNode>uin).XObject.TabNavigation;\r\n            uin = uin.VisualParentNode;\r\n        }\r\n        return Input.KeyboardNavigationMode.Local;\r\n    }\r\n    function walkChildren(root: UINode, cur?: UINode, forwards?: boolean) {\r\n        var walker = new TabNavigationWalker(root, cur, forwards);\r\n        return walker.FocusChild();\r\n    }\r\n    export class TabNavigationWalker implements ITabNavigationWalker {\r\n        private _Root: UINode;\r\n        private _Current: UINode;\r\n        private _Forwards: boolean;\r\n        private _TabSorted: UINode[];\r\n\r\n        constructor(root: UINode, cur: UINode, forwards: boolean) {\r\n            this._Root = root;\r\n            this._Current = cur;\r\n            this._Forwards = forwards;\r\n            this._TabSorted = [];\r\n        }\r\n        \r\n        FocusChild(): boolean {\r\n            var childNode: UINode;\r\n            var childIsControl;\r\n            var curIndex = -1;\r\n\r\n            var childWalker = DeepTreeWalker(this._Root);\r\n            while (childNode = childWalker.Step()) {\r\n                if (childNode === this._Root || !(childNode instanceof Controls.ControlNode))\r\n                    continue;\r\n                this._TabSorted.push(childNode);\r\n                childWalker.SkipBranch();\r\n            }\r\n\r\n            if (this._TabSorted.length > 1) {\r\n                this._TabSorted.sort(compare);\r\n                if (!this._Forwards)\r\n                    this._TabSorted = this._TabSorted.reverse();\r\n            }\r\n\r\n            var len = this._TabSorted.length;\r\n            for (var i = 0; i < len; i++) {\r\n                if (this._TabSorted[i] === this._Current)\r\n                    curIndex = i;\r\n            }\r\n\r\n            if (curIndex !== -1 && getActiveNavigationMode(this._Root) === Input.KeyboardNavigationMode.Once) {\r\n                if (!this._Forwards && this._Root instanceof Controls.ControlNode)\r\n                    return (<Controls.ControlNode>this._Root).TabTo();\r\n                return false;\r\n            }\r\n\r\n            var len = this._TabSorted.length;\r\n            if (len > 0) {\r\n                for (var j = 0; j < len; j++) {\r\n                    if ((j + curIndex + 1) === len && getActiveNavigationMode(this._Root) !== Input.KeyboardNavigationMode.Cycle)\r\n                        break;\r\n                    childNode = this._TabSorted[(j + curIndex + 1) % len];\r\n                    childIsControl = childNode instanceof Controls.ControlNode;\r\n\r\n                    if (childIsControl && !(<Controls.ControlNode>childNode).XObject.IsEnabled)\r\n                        continue;\r\n\r\n                    if (!this._Forwards && walkChildren(childNode))\r\n                        return true;\r\n\r\n                    if (childIsControl && (<Controls.ControlNode>childNode).TabTo())\r\n                        return true;\r\n\r\n                    if (this._Forwards && walkChildren(childNode))\r\n                        return true;\r\n                }\r\n            }\r\n\r\n            if (curIndex !== -1 && !this._Forwards) {\r\n                if (this._Root instanceof Controls.ControlNode)\r\n                    return (<Controls.ControlNode>this._Root).TabTo();\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        static Focus(uin: UINode, forwards?: boolean): boolean {\r\n            var focused = false;\r\n            var cur = uin;\r\n            var root = uin;\r\n\r\n            if ((root.VisualParentNode && getParentNavigationMode(root.VisualParentNode) === Input.KeyboardNavigationMode.Once)\r\n                || (!forwards && root && root.VisualParentNode)) {\r\n                while (root = root.VisualParentNode)\r\n                    if (root instanceof Controls.ControlNode || !root.VisualParentNode)\r\n                        break;\r\n            }\r\n\r\n            do {\r\n                focused = focused || walkChildren(root, cur, forwards);\r\n\r\n                if (!focused && getActiveNavigationMode(root) === Input.KeyboardNavigationMode.Cycle)\r\n                    return true;\r\n\r\n                cur = root;\r\n                root = root.VisualParentNode;\r\n                while (root && !(root instanceof Controls.ControlNode) && root.VisualParentNode)\r\n                    root = root.VisualParentNode\r\n            } while (!focused && root);\r\n\r\n            if (!focused)\r\n                focused = focused || walkChildren(cur, null, forwards);\r\n            return focused;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Core/XamlNode.ts",
    "content": "module Fayde {\r\n    export interface IIsAttachedMonitor {\r\n        Callback: (newIsAttached: boolean) => void;\r\n        Detach();\r\n    }\r\n\r\n    export class XamlNode {\r\n        XObject: XamlObject;\r\n        ParentNode: XamlNode = null;\r\n        Name: string = \"\";\r\n        NameScope: NameScope = null;\r\n        DocNameScope: NameScope = null;\r\n        private IsShareable: boolean = false;\r\n        private _OwnerNameScope: NameScope = null;\r\n        private _LogicalChildren: XamlNode[] = [];\r\n\r\n        private _IAMonitors: IIsAttachedMonitor[] = null;\r\n\r\n        constructor(xobj: XamlObject) {\r\n            this.XObject = xobj;\r\n        }\r\n\r\n        private _DataContext: any = undefined;\r\n        get DataContext(): any { return this._DataContext; }\r\n        set DataContext(value: any) {\r\n            var old = this._DataContext;\r\n            if (old === value)\r\n                return;\r\n            this._DataContext = value;\r\n            this.OnDataContextChanged(old, value);\r\n        }\r\n        OnDataContextChanged(oldDataContext: any, newDataContext: any) {\r\n            var childNodes = this._LogicalChildren;\r\n            var len = childNodes.length;\r\n            var childNode: XamlNode = null;\r\n            for (var i = 0; i < len; i++) {\r\n                childNode = childNodes[i];\r\n                childNode.DataContext = newDataContext;\r\n            }\r\n        }\r\n\r\n        private _IsEnabled: boolean = true;\r\n        get IsEnabled(): boolean { return this._IsEnabled; }\r\n        set IsEnabled(value: boolean) {\r\n            value = value !== false;\r\n            var old = this._IsEnabled;\r\n            if (old === value)\r\n                return;\r\n            this._IsEnabled = value;\r\n            this.OnIsEnabledChanged(old, value);\r\n        }\r\n        OnIsEnabledChanged(oldValue: boolean, newValue: boolean) {\r\n            var childNodes = this._LogicalChildren;\r\n            var len = childNodes.length;\r\n            var childNode: XamlNode = null;\r\n            for (var i = 0; i < len; i++) {\r\n                childNode = childNodes[i];\r\n                childNode.IsEnabled = newValue;\r\n            }\r\n        }\r\n\r\n        FindName(name: string, doc?: boolean): XamlNode {\r\n            var scope = this.FindNameScope();\r\n            var node: XamlNode;\r\n            if (scope)\r\n                node = scope.FindName(name);\r\n            var docscope: NameScope;;\r\n            if (!node && doc && (docscope = this.DocNameScope))\r\n                node = docscope.FindName(name);\r\n            return node;\r\n        }\r\n        SetName(name: string) {\r\n            this.Name = name;\r\n            var ns = this.FindNameScope();\r\n            if (ns)\r\n                ns.RegisterName(name, this);\r\n        }\r\n        FindNameScope(): NameScope {\r\n            if (this._OwnerNameScope)\r\n                return this._OwnerNameScope;\r\n\r\n            var curNode = this;\r\n            var ns;\r\n            while (curNode) {\r\n                ns = curNode.NameScope;\r\n                if (ns) {\r\n                    this._OwnerNameScope = ns;\r\n                    return ns;\r\n                }\r\n                curNode = curNode.ParentNode;\r\n            }\r\n            return undefined;\r\n        }\r\n\r\n        IsAttached: boolean = false;\r\n        SetIsAttached(value: boolean) {\r\n            if (this.IsAttached === value)\r\n                return;\r\n            this.IsAttached = value;\r\n            this.OnIsAttachedChanged(value);\r\n        }\r\n        OnIsAttachedChanged(newIsAttached: boolean) {\r\n            var xobj = this.XObject;\r\n            if (newIsAttached && this.ParentNode && !xobj.App) {\r\n                xobj.App = this.ParentNode.XObject.App;\r\n            }\r\n\r\n            var childNodes = this._LogicalChildren;\r\n            var len = childNodes.length;\r\n            var childNode: XamlNode = null;\r\n            for (var i = 0; i < len; i++) {\r\n                childNode = childNodes[i];\r\n                childNode.SetIsAttached(newIsAttached);\r\n            }\r\n\r\n            for (var i = 0, monitors = (this._IAMonitors || []).slice(0), len = monitors.length; i < len; i++) {\r\n                monitors[i].Callback(newIsAttached);\r\n            }\r\n\r\n            if (!newIsAttached)\r\n                this._OwnerNameScope = undefined;\r\n        }\r\n        MonitorIsAttached(func: (newIsAttached: boolean) => void ): IIsAttachedMonitor {\r\n            var monitors = this._IAMonitors;\r\n            if (!monitors) this._IAMonitors = monitors = [];\r\n            var monitor: IIsAttachedMonitor = {\r\n                Callback: func,\r\n                Detach: null\r\n            };\r\n            monitor.Detach = function () {\r\n                var index = monitors.indexOf(monitor);\r\n                if (index > -1) monitors.splice(index, 1);\r\n            };\r\n            this._IAMonitors.push(monitor);\r\n            return monitor;\r\n        }\r\n\r\n        AttachTo(parentNode: XamlNode, error: BError): boolean {\r\n            if (this.ParentNode && this.IsShareable)\r\n                return true;\r\n            var data = {\r\n                ParentNode: parentNode,\r\n                ChildNode: this,\r\n                Name: \"\"\r\n            };\r\n            var curNode = parentNode;\r\n            while (curNode) {\r\n                if (curNode === this) {\r\n                    error.Message = \"Cycle found.\";\r\n                    error.Data = data;\r\n                    error.Number = BError.Attach;\r\n                    return false;\r\n                }\r\n                curNode = curNode.ParentNode;\r\n            }\r\n\r\n            if (this.ParentNode) {\r\n                if (this.ParentNode === parentNode)\r\n                    return true;\r\n                error.Message = \"Element is already a child of another element.\";\r\n                error.Data = data;\r\n                error.Number = BError.Attach;\r\n                return false;\r\n            }\r\n\r\n            var parentScope = parentNode.FindNameScope();\r\n            var thisScope = this.NameScope;\r\n            if (thisScope) {\r\n                if (!thisScope.IsRoot) {\r\n                    parentScope.Absorb(thisScope);\r\n                    this.NameScope = null;\r\n                    this._OwnerNameScope = parentScope;\r\n                }\r\n            } else if (parentScope) {\r\n                var name = this.Name;\r\n                if (name) {\r\n                    var existing = parentScope.FindName(name);\r\n                    if (existing && existing !== this) {\r\n                        error.Message = \"Name is already registered in parent namescope.\";\r\n                        data.Name = name;\r\n                        error.Data = data;\r\n                        error.Number = BError.Attach;\r\n                        return false;\r\n                    }\r\n                    parentScope.RegisterName(name, this);\r\n                }\r\n                this._OwnerNameScope = parentScope;\r\n            }\r\n\r\n            var old = this.ParentNode;\r\n            this.ParentNode = parentNode;\r\n            this.OnParentChanged(old, parentNode);\r\n            \r\n            parentNode._LogicalChildren.push(this);\r\n            this.SetIsAttached(parentNode.IsAttached);\r\n\r\n            return true;\r\n        }\r\n        Detach() {\r\n            var name = this.Name;\r\n            if (name && !this.NameScope) {\r\n                var ns = this.FindNameScope();\r\n                if (ns) ns.UnregisterName(this.Name);\r\n            }\r\n            this._OwnerNameScope = null;\r\n            this.SetIsAttached(false);\r\n            var old = this.ParentNode;\r\n            this.ParentNode = null;\r\n            if (old) {\r\n                var index = old._LogicalChildren.indexOf(this);\r\n                if (index > -1) old._LogicalChildren.splice(index, 1);\r\n                this.OnParentChanged(old, null);\r\n            }\r\n        }\r\n        OnParentChanged(oldParentNode: XamlNode, newParentNode: XamlNode) { }\r\n\r\n        GetInheritedEnumerator(): nullstone.IEnumerator<DONode> { return undefined; }\r\n\r\n        static SetShareable(xn: XamlNode) {\r\n            xn.IsShareable = true;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Core/XamlObject.ts",
    "content": "module Fayde {\r\n    export class XamlObject implements Providers.IIsPropertyInheritable {\r\n        private static _LastID: number = 0;\r\n        private _ID: number;\r\n        XamlNode: Fayde.XamlNode;\r\n        TemplateOwner: DependencyObject = null;\r\n        App: Application = null;\r\n\r\n        constructor() {\r\n            this._ID = XamlObject._LastID++;\r\n            this.XamlNode = this.CreateNode();\r\n        }\r\n        CreateNode(): XamlNode {\r\n            return new XamlNode(this);\r\n        }\r\n        get Name() { return this.XamlNode.Name; }\r\n        get Parent(): XamlObject {\r\n            var pn = this.XamlNode.ParentNode;\r\n            if (!pn) return;\r\n            return pn.XObject;\r\n        }\r\n\r\n        FindName(name: string, doc?: boolean): XamlObject {\r\n            var n = this.XamlNode.FindName(name, doc);\r\n            return n ? n.XObject : undefined;\r\n        }\r\n\r\n        Clone(): XamlObject {\r\n            var xobj: XamlObject = new (<any>this).constructor();\r\n            xobj.CloneCore(this);\r\n            return xobj;\r\n        }\r\n        CloneCore(source: XamlObject) { }\r\n\r\n        IsInheritable(propd: DependencyProperty): boolean { return false; }\r\n    }\r\n    Fayde.CoreLibrary.add(XamlObject);\r\n}"
  },
  {
    "path": "src/Core/XamlObjectCollection.ts",
    "content": "/// <reference path=\"XamlObject.ts\" />\r\n\r\nmodule Fayde {\r\n    export class XamlObjectCollection<T extends XamlObject> extends XamlObject implements nullstone.ICollection<T> {\r\n        _ht: Array<T> = [];\r\n\r\n        AttachTo (xobj: XamlObject) {\r\n            var error = new BError();\r\n            if (!this.XamlNode.AttachTo(xobj.XamlNode, error))\r\n                error.ThrowException();\r\n        }\r\n\r\n        get Count () {\r\n            return this._ht.length;\r\n        }\r\n\r\n        GetRange (startIndex: number, endIndex: number): T[] {\r\n            return this._ht.slice(startIndex, endIndex);\r\n        }\r\n\r\n        GetValueAt (index: number): T {\r\n            return this._ht[index];\r\n        }\r\n\r\n        SetValueAt (index: number, value: T): boolean {\r\n            if (!this.CanAdd(value))\r\n                return false;\r\n\r\n            if (index < 0 || index >= this._ht.length)\r\n                return false;\r\n\r\n            var removed = this._ht[index];\r\n            var added = value;\r\n\r\n            var error = new BError();\r\n            if (this.AddingToCollection(added, error)) {\r\n                this._ht[index] = added;\r\n                this.RemovedFromCollection(removed, true);\r\n                this._RaiseItemReplaced(removed, added, index);\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n\r\n        Add (value: T): number {\r\n            var rv = this.Insert(this._ht.length, value);\r\n            return rv ? this._ht.length - 1 : -1;\r\n        }\r\n\r\n        Insert (index: number, value: T): boolean {\r\n            if (!this.CanAdd(value))\r\n                return false;\r\n            if (index < 0)\r\n                return false;\r\n            var count = this._ht.length;\r\n            if (index > count)\r\n                index = count;\r\n\r\n            var error = new BError();\r\n            if (this.AddingToCollection(value, error)) {\r\n                this._ht.splice(index, 0, value);\r\n                this._RaiseItemAdded(value, index);\r\n                return true;\r\n            }\r\n            if (error.Message)\r\n                throw new Exception(error.Message);\r\n            return false;\r\n        }\r\n\r\n        Remove (value: T): boolean {\r\n            var index = this.IndexOf(value);\r\n            if (index === -1)\r\n                return false;\r\n            return this.RemoveAt(index);\r\n        }\r\n\r\n        RemoveAt (index: number): boolean {\r\n            if (index < 0 || index >= this._ht.length)\r\n                return false;\r\n            var value = this._ht[index];\r\n            this._ht.splice(index, 1);\r\n            this.RemovedFromCollection(value, true);\r\n            this._RaiseItemRemoved(value, index);\r\n            return true;\r\n        }\r\n\r\n        Clear (): boolean {\r\n            var old = this._ht;\r\n            //LOOKS USELESS: this._RaiseClearing(old);\r\n            this._ht = [];\r\n            var len = old.length;\r\n            for (var i = 0; i < len; i++) {\r\n                this.RemovedFromCollection(old[i], true);\r\n            }\r\n            this._RaiseCleared(old);\r\n            return true;\r\n        }\r\n\r\n        IndexOf (value: T): number {\r\n            return this._ht.indexOf(value);\r\n        }\r\n\r\n        Contains (value: T): boolean {\r\n            return this.IndexOf(value) > -1;\r\n        }\r\n\r\n        CanAdd (value: T): boolean {\r\n            return true;\r\n        }\r\n\r\n        AddingToCollection (value: T, error: BError): boolean {\r\n            if (value instanceof XamlObject)\r\n                return value.XamlNode.AttachTo(this.XamlNode, error);\r\n            return true;\r\n        }\r\n\r\n        RemovedFromCollection (value: T, isValueSafe: boolean) {\r\n            if (value instanceof XamlObject)\r\n                value.XamlNode.Detach();\r\n        }\r\n\r\n        getEnumerator (reverse?: boolean): nullstone.IEnumerator<T> {\r\n            return nullstone.IEnumerator_.fromArray(this._ht, reverse);\r\n        }\r\n\r\n        GetNodeEnumerator<U extends XamlNode>(reverse?: boolean): nullstone.IEnumerator<U> {\r\n            var prev = this.getEnumerator(reverse);\r\n            return {\r\n                current: undefined,\r\n                moveNext: function (): boolean {\r\n                    if (!prev.moveNext()) {\r\n                        this.current = undefined;\r\n                        return false;\r\n                    }\r\n                    var xobj = prev.current;\r\n                    this.current = xobj.XamlNode;\r\n                    return true;\r\n                }\r\n            };\r\n        }\r\n\r\n        _RaiseItemAdded (value: T, index: number) {\r\n        }\r\n\r\n        _RaiseItemRemoved (value: T, index: number) {\r\n        }\r\n\r\n        _RaiseItemReplaced (removed: T, added: T, index: number) {\r\n        }\r\n\r\n        //_RaiseClearing(arr: T[]) { }\r\n        _RaiseCleared (old: T[]) {\r\n        }\r\n\r\n        CloneCore (source: XamlObjectCollection<T>) {\r\n            for (var en = source.getEnumerator(); en.moveNext();) {\r\n                this.Add(Fayde.Clone(en.current));\r\n            }\r\n        }\r\n\r\n        ToArray (): T[] {\r\n            return this._ht.slice(0);\r\n        }\r\n    }\r\n    nullstone.ICollection_.mark(XamlObjectCollection);\r\n}"
  },
  {
    "path": "src/Data/Binding.ts",
    "content": "module Fayde.Data {\r\n    import convert = nullstone.convertAnyToType;\r\n\r\n    export var WarnBrokenPath = false;\r\n\r\n    export class Binding implements nullstone.markup.IMarkupExtension, ICloneable {\r\n        StringFormat: string;\r\n        FallbackValue: any;\r\n        TargetNullValue: any;\r\n        BindsDirectlyToSource: boolean = false;\r\n        Converter: IValueConverter;\r\n        ConverterParameter: any;\r\n        ConverterCulture: any;\r\n        ElementName: string;\r\n        Mode: BindingMode;\r\n        NotifyOnValidationError: boolean = false;\r\n        RelativeSource: RelativeSource;\r\n        Path: Data.PropertyPath;\r\n        Source: any;\r\n        UpdateSourceTrigger: UpdateSourceTrigger;\r\n        ValidatesOnExceptions: boolean = false;\r\n        ValidatesOnDataErrors: boolean = false;\r\n        ValidatesOnNotifyDataErrors: boolean = true;\r\n\r\n        constructor ();\r\n        constructor (path: string|Data.PropertyPath);\r\n        constructor (binding: Binding);\r\n        constructor (obj?: any) {\r\n            if (obj instanceof Binding) {\r\n                var binding = <Binding>obj;\r\n                this.StringFormat = binding.StringFormat;\r\n                this.FallbackValue = binding.FallbackValue;\r\n                this.TargetNullValue = binding.TargetNullValue;\r\n                this.BindsDirectlyToSource = binding.BindsDirectlyToSource;\r\n                this.Converter = binding.Converter;\r\n                this.ConverterParameter = binding.ConverterParameter;\r\n                this.ConverterCulture = binding.ConverterCulture;\r\n                this.ElementName = binding.ElementName;\r\n                this.Mode = binding.Mode;\r\n                this.NotifyOnValidationError = binding.NotifyOnValidationError;\r\n                this.RelativeSource = binding.RelativeSource ? binding.RelativeSource.Clone() : null;\r\n                this.Path = binding.Path;\r\n                this.Source = binding.Source;\r\n                this.UpdateSourceTrigger = binding.UpdateSourceTrigger;\r\n                this.ValidatesOnExceptions = binding.ValidatesOnExceptions;\r\n                this.ValidatesOnDataErrors = binding.ValidatesOnDataErrors;\r\n                this.ValidatesOnNotifyDataErrors = binding.ValidatesOnNotifyDataErrors;\r\n            } else if (typeof obj === \"string\") {\r\n                this.Path = new Data.PropertyPath(<string>obj);\r\n            } else if (obj instanceof Data.PropertyPath) {\r\n                this.Path = obj;\r\n            } else {\r\n                this.Path = new Data.PropertyPath(\"\");\r\n            }\r\n        }\r\n\r\n        init (val: string) {\r\n            this.Path = new Data.PropertyPath(val);\r\n        }\r\n\r\n        transmute (os: any[]): any {\r\n            this.$$coerce();\r\n            Object.freeze(this);\r\n            return new Data.BindingExpression(this);\r\n        }\r\n\r\n        private $$coerce () {\r\n            this.StringFormat = this.StringFormat ? this.StringFormat.toString() : undefined;\r\n            this.BindsDirectlyToSource = convert(this.BindsDirectlyToSource, Boolean) || false;\r\n            this.Mode = Enum.fromAny(BindingMode, this.Mode);\r\n            this.NotifyOnValidationError = convert(this.NotifyOnValidationError, Boolean) || false;\r\n            this.Path = convert(this.Path, Data.PropertyPath);\r\n            this.UpdateSourceTrigger = Enum.fromAny(UpdateSourceTrigger, this.UpdateSourceTrigger);\r\n            this.ValidatesOnExceptions = convert(this.ValidatesOnExceptions, Boolean) || false;\r\n            this.ValidatesOnDataErrors = convert(this.ValidatesOnDataErrors, Boolean) || false;\r\n            this.ValidatesOnNotifyDataErrors = convert(this.ValidatesOnNotifyDataErrors, Boolean) !== false; //default: true\r\n        }\r\n\r\n        Clone () {\r\n            return new Binding(this);\r\n        }\r\n\r\n        static fromData (data: IBindingData): Binding {\r\n            var binding = new Binding(data.Path);\r\n            binding.StringFormat = data.StringFormat;\r\n            binding.FallbackValue = data.FallbackValue;\r\n            binding.TargetNullValue = data.TargetNullValue;\r\n            binding.BindsDirectlyToSource = data.BindsDirectlyToSource;\r\n            binding.Converter = data.Converter;\r\n            binding.ConverterParameter = data.ConverterParameter;\r\n            binding.ConverterCulture = data.ConverterCulture;\r\n            binding.ElementName = data.ElementName;\r\n            binding.Mode = data.Mode;\r\n            binding.NotifyOnValidationError = data.NotifyOnValidationError;\r\n            binding.RelativeSource = data.RelativeSource;\r\n            binding.Source = data.Source;\r\n            binding.UpdateSourceTrigger = data.UpdateSourceTrigger;\r\n            binding.ValidatesOnExceptions = data.ValidatesOnExceptions;\r\n            binding.ValidatesOnDataErrors = data.ValidatesOnDataErrors;\r\n            binding.ValidatesOnNotifyDataErrors = data.ValidatesOnNotifyDataErrors;\r\n            return binding;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Binding);\r\n}"
  },
  {
    "path": "src/Data/CollectionViewSource.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Data {\r\n    export class CollectionViewSource extends DependencyObject {\r\n        static SourceProperty: DependencyProperty = DependencyProperty.Register(\"Source\", () => Object, CollectionViewSource);\r\n        static ViewProperty: DependencyProperty = DependencyProperty.Register(\"View\", () => ICollectionView_, CollectionViewSource);\r\n        Source: any;\r\n        View: ICollectionView;\r\n    }\r\n}"
  },
  {
    "path": "src/Data/DataErrorsChangedEventArgs.ts",
    "content": "module Fayde.Data {\r\n    export class DataErrorsChangedEventArgs implements nullstone.IEventArgs {\r\n        PropertyName: string;\r\n\r\n        constructor (propertyName: string) {\r\n            this.PropertyName = propertyName;\r\n            Object.freeze(this);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Data/Enums.ts",
    "content": "module Fayde.Data {\r\n    export enum RelativeSourceMode {\r\n        TemplatedParent = 0,\r\n        Self = 1,\r\n        FindAncestor = 2,\r\n        ItemsControlParent = 3,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(RelativeSourceMode, \"RelativeSourceMode\");\r\n\r\n    export enum BindingMode {\r\n        OneWay = 0,\r\n        TwoWay = 1,\r\n        OneTime = 2,\r\n        OneWayToSource = 3,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(BindingMode, \"BindingMode\");\r\n\r\n    export enum UpdateSourceTrigger {\r\n        Default = 0,\r\n        PropertyChanged = 1,\r\n        Explicit = 3,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(UpdateSourceTrigger, \"UpdateSourceTrigger\");\r\n}"
  },
  {
    "path": "src/Data/IBindingData.ts",
    "content": "module Fayde.Data {\r\n    export interface IBindingData {\r\n        Path: string|Data.PropertyPath;\r\n        StringFormat?: string;\r\n        FallbackValue?: any;\r\n        TargetNullValue?: any;\r\n        BindsDirectlyToSource?: boolean;\r\n        Converter?: IValueConverter;\r\n        ConverterParameter?: any;\r\n        ConverterCulture?: any;\r\n        ElementName?: string;\r\n        Mode?: BindingMode;\r\n        NotifyOnValidationError?: boolean;\r\n        RelativeSource?: RelativeSource;\r\n        Source?: any;\r\n        UpdateSourceTrigger?: UpdateSourceTrigger;\r\n        ValidatesOnExceptions?: boolean;\r\n        ValidatesOnDataErrors?: boolean;\r\n        ValidatesOnNotifyDataErrors?: boolean;\r\n    }\r\n}"
  },
  {
    "path": "src/Data/ICollectionView.ts",
    "content": "module Fayde.Data {\r\n    export interface ICollectionView extends nullstone.IEnumerable<any> {\r\n        CurrentChanged: nullstone.Event<nullstone.IEventArgs>;\r\n        CurrentItem: any;\r\n        MoveCurrentTo(item: any): boolean;\r\n    }\r\n    export var ICollectionView_ = new nullstone.Interface<ICollectionView>(\"ICollectionView\");\r\n}"
  },
  {
    "path": "src/Data/IDataErrorInfo.ts",
    "content": "module Fayde.Data {\r\n    export interface IDataErrorInfo {\r\n        Error: string;\r\n        GetError(propertyName: string): string;\r\n    }\r\n    export var IDataErrorInfo_ = new nullstone.Interface<IDataErrorInfo>(\"IDataErrorInfo\");\r\n}"
  },
  {
    "path": "src/Data/INotifyDataErrorInfo.ts",
    "content": "module Fayde.Data {\r\n    export interface INotifyDataErrorInfo {\r\n        ErrorsChanged: nullstone.Event<DataErrorsChangedEventArgs>;\r\n        GetErrors(propertyName: string): nullstone.IEnumerable<any>;\r\n        HasErrors: boolean;\r\n    }\r\n    export var INotifyDataErrorInfo_ = new nullstone.Interface<INotifyDataErrorInfo>(\"INotifyDataErrorInfo\");\r\n}"
  },
  {
    "path": "src/Data/IValueConverter.ts",
    "content": "module Fayde.Data {\r\n    export interface IValueConverter {\r\n        Convert(value: any, targetType: IType, parameter: any, culture: any): any;\r\n        ConvertBack(value: any, targetType: IType, parameter: any, culture: any): any;\r\n    }\r\n    export var IValueConverter_ = new nullstone.Interface<IValueConverter>(\"IValueConverter\");\r\n}"
  },
  {
    "path": "src/Data/Property/PropertyPath.ts",
    "content": "module Fayde.Data {\r\n    interface IParseData {\r\n        index: number;\r\n        i: number;\r\n        end: number;\r\n        path: string;\r\n        parenOpen: boolean;\r\n        tickOpen: boolean;\r\n        prop: string;\r\n        res: DependencyProperty;\r\n        cloned: boolean;\r\n        expressionFound: boolean;\r\n        lu: DependencyObject;\r\n        collection: XamlObjectCollection<any>;\r\n        promotedValues: any[];\r\n        explicitType: boolean;\r\n        type: Function;\r\n    }\r\n\r\n    export interface IOutValue {\r\n        Value: any;\r\n    }\r\n\r\n    var lookupNamespaces: any[];\r\n    function lookupType(name: string) {\r\n        if (!lookupNamespaces) {\r\n            lookupNamespaces = [\r\n                Fayde,\r\n                Fayde.Controls,\r\n                Fayde.Media,\r\n                Fayde.Controls.Primitives, \r\n                Fayde.Shapes, \r\n                window];\r\n        }\r\n\r\n        var len = lookupNamespaces.length;\r\n        for (var i = 0; i < len; i++) {\r\n            var potentialType = lookupNamespaces[i][name];\r\n            if (typeof potentialType === \"function\")\r\n                return potentialType;\r\n        }\r\n        return eval(name);\r\n    }\r\n\r\n    function handlePeriod(data: IParseData): boolean {\r\n        if (data.tickOpen)\r\n            return true;\r\n        if (data.res != null) {\r\n            var value = null;\r\n            if ((value = data.lu.GetValue(data.res)) == null)\r\n                return false;\r\n            if (!(value instanceof DependencyObject))\r\n                return false;\r\n\r\n            var newLu = value;\r\n            if (data.promotedValues && data.promotedValues[value._ID] == null && !(value instanceof UIElement)) {\r\n                var clonedValue = Fayde.Clone(value);\r\n                if (clonedValue instanceof DependencyObject) {\r\n                    newLu = clonedValue;\r\n                    data.lu.SetCurrentValue(data.res, clonedValue);\r\n                    clonedValue = data.lu.GetValue(data.res);\r\n                    data.promotedValues[clonedValue._ID] = clonedValue;\r\n                }\r\n            }\r\n\r\n            data.lu = newLu;\r\n        }\r\n        data.expressionFound = false;\r\n        data.prop = data.path.substr(data.index);\r\n        return true;\r\n    }\r\n    function handleLeftBracket (data: IParseData): boolean {\r\n        if (data.index >= data.end)\r\n            return;\r\n\r\n        var hasLeadingZeroes = false;\r\n        while (data.path.charAt(data.index) === '0') {\r\n            hasLeadingZeroes = true;\r\n            data.index++;\r\n        }\r\n        data.i = parseInt(data.path.substr(data.index), 10);\r\n        if (!isNaN(data.i))\r\n            data.index += data.i.toString().length;\r\n        if (isNaN(data.i) && hasLeadingZeroes)\r\n            data.i = 0;\r\n\r\n        if (data.path.charAt(data.index) !== ']' || data.path.charAt(data.index + 1) !== '.')\r\n            return true;\r\n\r\n        data.prop = data.path = data.path.substr(data.index + 2);\r\n        data.index = 0;\r\n        data.end = data.path.length;\r\n\r\n        var value = null;\r\n        if (data.expressionFound) {\r\n            data.expressionFound = false;\r\n            if ((value = data.lu.GetValue(data.res)) == null)\r\n                return false;\r\n        }\r\n\r\n        if (value instanceof XamlObjectCollection) {\r\n            data.collection = <XamlObjectCollection<any>>value;\r\n        } else {\r\n            data.collection = null;\r\n            return false;\r\n        }\r\n\r\n        if ((value = (<XamlObjectCollection<any>>data.collection).GetValueAt(data.i)) == null)\r\n            return false;\r\n\r\n        if (value instanceof DependencyObject) {\r\n            data.lu = <DependencyObject>value;\r\n        } else {\r\n            data.lu = null;\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n    function handleDefault(data: IParseData): boolean {\r\n        var explicitType = false;\r\n        data.expressionFound = true;\r\n        var start = data.index - 1;\r\n\r\n        var c;\r\n        while (data.index < data.end) {\r\n            c = data.path.charAt(data.index);\r\n            if (!((c !== '.' || data.tickOpen) && (!data.parenOpen || c !== ')') && c !== '['))\r\n                break;\r\n            data.index++;\r\n            if (c === '\\'') {\r\n                data.tickOpen = !data.tickOpen;\r\n                if (!data.tickOpen)\r\n                    break;\r\n            }\r\n        }\r\n\r\n        if (data.index === data.end) {\r\n            // This happened because a property at the end of the path ended like this: '.Property'\r\n            // We only fail if we can't find the property\r\n            data.type = (<any>data.lu).constructor;\r\n        } else {\r\n            c = data.path.charAt(data.index);\r\n            if (c === '.') {\r\n                // we found a type name, now find the property name\r\n                if ((data.index - start) === 11 && data.path.substr(start, 11).toLowerCase() === \"textelement\") { //bug workaround from Blend\r\n                    data.type = Controls.TextBlock;\r\n                    data.explicitType = true;\r\n                } else {\r\n                    var s = data.index;\r\n                    if (data.path.charAt(data.index - 1) === '\\'' && !data.tickOpen) {\r\n                        s = data.index - 1;\r\n                    }\r\n                    var name = data.path.slice(start, s);\r\n                    data.type = lookupType(name);\r\n                    data.explicitType = true;\r\n                    if (!data.type)\r\n                        data.type = (<any>data.lu).constructor;\r\n                }\r\n                data.index++;\r\n                start = data.index;\r\n                while (data.index < data.end) {\r\n                    c = data.path.charAt(data.index);\r\n                    if (!((!data.parenOpen || c !== ')') && (c !== '.' || data.tickOpen)))\r\n                        break;\r\n                    data.index++;\r\n                    if (c === '\\'') {\r\n                        data.tickOpen = !data.tickOpen;\r\n                        if (!data.tickOpen)\r\n                            break;\r\n                    }\r\n                }\r\n                if (data.index === start)\r\n                    return false;\r\n            } else {\r\n                data.type = (<any>data.lu).constructor;\r\n                data.explicitType = false;\r\n            }\r\n\r\n            c = data.path.charAt(data.index);\r\n            if ((c !== ')' && data.parenOpen) || data.type == null)\r\n                return false;\r\n        }\r\n        name = data.path.slice(start, data.index);\r\n        if ((data.res = DependencyProperty.GetDependencyProperty(data.type, name)) == null && data.lu)\r\n            data.res = DependencyProperty.GetDependencyProperty((<any>data.lu).constructor, name);\r\n\r\n        if (data.res == null)\r\n            return false;\r\n\r\n        if (!data.res.IsAttached && !(data.lu instanceof data.type)) {\r\n            if ((data.res = DependencyProperty.GetDependencyProperty((<any>data.lu).constructor, name)) == null)\r\n                return false;\r\n        }\r\n\r\n        if (data.res.IsAttached && data.explicitType && !data.parenOpen)\r\n            return false;\r\n\r\n        return true;\r\n    }\r\n\r\n    export class PropertyPath implements ICloneable {\r\n        private _Path: string;\r\n        private _ExpandedPath: string;\r\n        private _Propd: DependencyProperty = null;\r\n        constructor(path?: string, expandedPath?: string) {\r\n            this._Path = path;\r\n            this._ExpandedPath = expandedPath;\r\n        }\r\n\r\n        static CreateFromParameter(parameter) {\r\n            var p = new PropertyPath();\r\n            if (parameter instanceof DependencyProperty)\r\n                p._Propd = <DependencyProperty>parameter;\r\n            p._Path = null;\r\n            if (parameter instanceof String)\r\n                p._Path = parameter;\r\n            return p;\r\n        }\r\n\r\n        TryResolveDependencyProperty(refobj: IOutValue, promotedValues: any[]): DependencyProperty {\r\n            if (this._Propd)\r\n                return this._Propd;\r\n            var ov = refobj.Value;\r\n            var propd = PropertyPath.ResolvePropertyPath(refobj, this, promotedValues);\r\n            if (ov === refobj.Value)\r\n                this._Propd = propd;\r\n            return propd;\r\n        }\r\n\r\n        get Path(): string { return this._Path; }\r\n        get ExpandedPath(): string { return this._ExpandedPath; }\r\n        get ParsePath(): string {\r\n            if (this._Propd)\r\n                return \"(0)\";\r\n            if (this._ExpandedPath)\r\n                return this._ExpandedPath;\r\n            return this._Path;\r\n        }\r\n        get HasDependencyProperty() { return this._Propd != null; }\r\n        get DependencyProperty() { return this._Propd; }\r\n\r\n        static ResolvePropertyPath(refobj: IOutValue, propertyPath: PropertyPath, promotedValues: any[]): DependencyProperty {\r\n            var path = propertyPath.Path;\r\n            var expanded = propertyPath.ExpandedPath;\r\n            if (expanded != null)\r\n                path = expanded;\r\n\r\n            var data: IParseData = {\r\n                index: 0,\r\n                i: 0,\r\n                end: path.length,\r\n                path: path,\r\n                parenOpen: false,\r\n                tickOpen: false,\r\n                prop: path,\r\n                res: null,\r\n                cloned: false,\r\n                expressionFound: false,\r\n                lu: refobj.Value,\r\n                collection: null,\r\n                promotedValues: promotedValues,\r\n                explicitType: false,\r\n                type: null,\r\n            };\r\n\r\n            var success;\r\n            while (data.index < data.end) {\r\n                success = true;\r\n                var c = data.path.charAt(data.index);\r\n                data.index++;\r\n                if (c === '(') {\r\n                    data.parenOpen = true;\r\n                } else if (c === ')') {\r\n                    data.parenOpen = false;\r\n                } else if (c === '\\'') {//Ticks only legal in expanded path\r\n                    if (!propertyPath.ExpandedPath)\r\n                        console.warn(\"The ' character is not legal in property paths.\");\r\n                    else\r\n                        data.tickOpen = !data.tickOpen;\r\n                } else if (c === '.') {\r\n                    success = handlePeriod(data);\r\n                } else if (c === '[') {\r\n                    success = handleLeftBracket(data);\r\n                } else {\r\n                    success = handleDefault(data);\r\n                }\r\n                if (!success) {\r\n                    refobj.Value = null;\r\n                    return null;\r\n                }\r\n            }\r\n            refobj.Value = data.lu;\r\n            return data.res;\r\n        }\r\n\r\n        Clone(): PropertyPath {\r\n            return new PropertyPath(this._Path, this._ExpandedPath);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PropertyPath);\r\n    nullstone.registerTypeConverter(PropertyPath, (val: any): any => {\r\n        if (!val)\r\n            return new PropertyPath();\r\n        if (val instanceof PropertyPath)\r\n            return val;\r\n        return new PropertyPath(val.toString());\r\n    });\r\n}"
  },
  {
    "path": "src/Data/Property/PropertyPathParser.ts",
    "content": "\r\nmodule Fayde.Data {\r\n    export interface IPropertyPathParserData {\r\n        typeName: string;\r\n        propertyName: string;\r\n        index: number;\r\n    }\r\n\r\n    export enum PropertyNodeType {\r\n        None = 0,\r\n        AttachedProperty = 1,\r\n        Indexed = 2,\r\n        Property = 3,\r\n    }\r\n\r\n    /// Property Path Syntax\r\n    /// http://msdn.microsoft.com/en-us/library/cc645024(v=vs.95).aspx\r\n    export class PropertyPathParser {\r\n        Path: string;\r\n        constructor(path: string) {\r\n            this.Path = path;\r\n        }\r\n\r\n        Step(data: IPropertyPathParserData): PropertyNodeType {\r\n            var type = PropertyNodeType.None;\r\n            var path = this.Path;\r\n            if (path.length === 0) {\r\n                data.typeName = null;\r\n                data.propertyName = null;\r\n                data.index = null;\r\n                return type;\r\n            }\r\n\r\n            var end: number = 0;\r\n            if (path.charAt(0) === '(') {\r\n                type = PropertyNodeType.AttachedProperty;\r\n                end = path.indexOf(')');\r\n                if (end === -1)\r\n                    throw new ArgumentException(\"Invalid property path. Attached property is missing the closing bracket\");\r\n\r\n                var tickOpen = path.indexOf('\\'');\r\n                var tickClose = 0;\r\n                var typeOpen: number;\r\n                var typeClose: number;\r\n                var propOpen: number;\r\n                var propClose: number;\r\n\r\n                typeOpen = path.indexOf('\\'');\r\n                if (typeOpen > 0) {\r\n                    typeOpen++;\r\n\r\n                    typeClose = path.indexOf('\\'', typeOpen + 1);\r\n                    if (typeClose < 0)\r\n                        throw new Exception(\"Invalid property path, Unclosed type name '\" + path + \"'.\");\r\n\r\n                    propOpen = path.indexOf('.', typeClose);\r\n                    if (propOpen < 0)\r\n                        throw new Exception(\"Invalid properth path, No property indexer found '\" + path + \"'.\");\r\n\r\n                    propOpen++;\r\n                } else {\r\n                    typeOpen = 1;\r\n                    typeClose = path.indexOf('.', typeOpen);\r\n                    if (typeClose < 0)\r\n                        throw new Exception(\"Invalid property path, No property indexer found on '\" + path + \"'.\");\r\n                    propOpen = typeClose + 1;\r\n                }\r\n\r\n                propClose = end;\r\n\r\n                data.typeName = path.slice(typeOpen, typeClose);\r\n                data.propertyName = path.slice(propOpen, propClose);\r\n\r\n                data.index = null;\r\n                if (path.length > (end + 1) && path.charAt(end + 1) === '.')\r\n                    end++;\r\n                path = path.substr(end + 1);\r\n            } else if (path.charAt(0) === '[') {\r\n                type = PropertyNodeType.Indexed;\r\n                end = path.indexOf(']');\r\n\r\n                data.typeName = null;\r\n                data.propertyName = null;\r\n                data.index = parseInt(path.substr(1, end - 1));\r\n                path = path.substr(end + 1);\r\n                if (path.charAt(0) === '.')\r\n                    path = path.substr(1);\r\n            } else {\r\n                type = PropertyNodeType.Property;\r\n                end = indexOfAny(path, ['.', '[']);\r\n\r\n                if (end === -1) {\r\n                    data.propertyName = path;\r\n                    path = \"\";\r\n                } else {\r\n                    data.propertyName = path.substr(0, end);\r\n                    if (path.charAt(end) === '.')\r\n                        path = path.substr(end + 1);\r\n                    else\r\n                        path = path.substr(end);\r\n                }\r\n\r\n                data.typeName = null;\r\n                data.index = null;\r\n            }\r\n            this.Path = path;\r\n\r\n            return type;\r\n        }\r\n    }\r\n\r\n    function indexOfAny(str: string, carr: string[], start?: number): number {\r\n        if (!carr)\r\n            return -1;\r\n        if (!start) start = 0;\r\n        for (var cur = start; cur < str.length; cur++) {\r\n            var c = str.charAt(cur);\r\n            for (var i = 0; i < carr.length; i++) {\r\n                if (c === carr[i])\r\n                    return cur;\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n}"
  },
  {
    "path": "src/Data/Property/PropertyPathWalker.ts",
    "content": "module Fayde.Data {\r\n    export interface IPropertyPathWalkerListener {\r\n        IsBrokenChanged();\r\n        ValueChanged();\r\n    }\r\n\r\n    export interface IPropertyPathNode {\r\n        Next: IPropertyPathNode;\r\n        Value: any;\r\n        IsBroken: boolean;\r\n        ValueType: IType;\r\n        GetSource(): any;\r\n        SetSource(source: any);\r\n        SetValue(value: any);\r\n        Listen(listener: IPropertyPathNodeListener);\r\n        Unlisten(listener: IPropertyPathNodeListener);\r\n    }\r\n    export interface ICollectionViewNode extends IPropertyPathNode {\r\n        BindToView: boolean;\r\n    }\r\n    export interface IPropertyPathNodeListener {\r\n        IsBrokenChanged(node: IPropertyPathNode);\r\n        ValueChanged(node: IPropertyPathNode);\r\n    }\r\n\r\n    export class PropertyPathWalker implements IPropertyPathNodeListener {\r\n        Path: string;\r\n        IsDataContextBound: boolean;\r\n        Source: any;\r\n        ValueInternal: any;\r\n        Node: IPropertyPathNode;\r\n        FinalNode: IPropertyPathNode;\r\n        private _Listener: IPropertyPathWalkerListener;\r\n\r\n        get IsPathBroken (): boolean {\r\n            var path = this.Path;\r\n            if (this.IsDataContextBound && (!path || path.length < 1))\r\n                return false;\r\n\r\n            var node = this.Node;\r\n            while (node) {\r\n                if (node.IsBroken)\r\n                    return true;\r\n                node = node.Next;\r\n            }\r\n            return false;\r\n        }\r\n\r\n        get FinalPropertyName (): string {\r\n            var final = <StandardPropertyPathNode>this.FinalNode;\r\n            if (final instanceof StandardPropertyPathNode)\r\n                return final.PropertyInfo ? final.PropertyInfo.name : \"\";\r\n            var lastName = \"\";\r\n            for (var cur = this.Node; cur; cur = cur.Next) {\r\n                if (cur instanceof StandardPropertyPathNode)\r\n                    lastName = (<StandardPropertyPathNode>cur).PropertyInfo ? (<StandardPropertyPathNode>cur).PropertyInfo.name : \"\";\r\n            }\r\n            return lastName;\r\n        }\r\n\r\n        constructor (path: string, bindDirectlyToSource?: boolean, bindsToView?: boolean, isDataContextBound?: boolean) {\r\n            bindDirectlyToSource = bindDirectlyToSource !== false;\r\n            bindsToView = bindsToView === true;\r\n            this.IsDataContextBound = isDataContextBound === true;\r\n\r\n            this.Path = path;\r\n            this.IsDataContextBound = isDataContextBound;\r\n\r\n            var lastCVNode: ICollectionViewNode = null;\r\n\r\n            if (!path || path === \".\") {\r\n                lastCVNode = new CollectionViewNode(bindDirectlyToSource, bindsToView);\r\n                this.Node = lastCVNode;\r\n                this.FinalNode = lastCVNode;\r\n            } else {\r\n                var data: IPropertyPathParserData = {\r\n                    typeName: undefined,\r\n                    propertyName: undefined,\r\n                    index: undefined\r\n                };\r\n                var type: PropertyNodeType;\r\n                var parser = new PropertyPathParser(path);\r\n                while ((type = parser.Step(data)) !== PropertyNodeType.None) {\r\n                    var isViewProperty = false;\r\n                    //boolean isViewProperty = CollectionViewProperties.Any (prop => prop.Name == propertyName);\r\n                    //          static readonly PropertyInfo[] CollectionViewProperties = typeof (ICollectionView).GetProperties ();\r\n                    var node = lastCVNode = new CollectionViewNode(bindDirectlyToSource, isViewProperty);\r\n                    switch (type) {\r\n                        case PropertyNodeType.AttachedProperty:\r\n                        case PropertyNodeType.Property:\r\n                            node.Next = new StandardPropertyPathNode(data.typeName, data.propertyName);\r\n                            break;\r\n                        case PropertyNodeType.Indexed:\r\n                            node.Next = new IndexedPropertyPathNode(data.index);\r\n                            break;\r\n                        default:\r\n                            break;\r\n                    }\r\n\r\n                    if (this.FinalNode)\r\n                        this.FinalNode.Next = node;\r\n                    else\r\n                        this.Node = node;\r\n                    this.FinalNode = node.Next;\r\n                }\r\n            }\r\n\r\n            lastCVNode.BindToView = lastCVNode.BindToView || bindsToView;\r\n\r\n            this.FinalNode.Listen(this);\r\n        }\r\n\r\n        GetValue (item: any) {\r\n            this.Update(item);\r\n            var o = this.FinalNode.Value;\r\n            return o;\r\n        }\r\n\r\n        Update (source: any) {\r\n            this.Source = source;\r\n            this.Node.SetSource(source);\r\n        }\r\n\r\n        Listen (listener: IPropertyPathWalkerListener) {\r\n            this._Listener = listener;\r\n        }\r\n\r\n        Unlisten (listener: IPropertyPathWalkerListener) {\r\n            if (this._Listener === listener) this._Listener = null;\r\n        }\r\n\r\n        IsBrokenChanged (node: IPropertyPathNode) {\r\n            this.ValueInternal = node.Value;\r\n            var listener = this._Listener;\r\n            if (listener) listener.IsBrokenChanged();\r\n        }\r\n\r\n        ValueChanged (node: IPropertyPathNode) {\r\n            this.ValueInternal = node.Value;\r\n            var listener = this._Listener;\r\n            if (listener) listener.ValueChanged();\r\n        }\r\n\r\n        GetContext (): any {\r\n            var context: IPropertyPathNode = null;\r\n            var cur = this.Node;\r\n            var final = this.FinalNode;\r\n            while (cur && cur !== final) {\r\n                context = cur;\r\n                cur = cur.Next;\r\n            }\r\n            if (!context) return undefined;\r\n            return context.Value;\r\n        }\r\n    }\r\n\r\n    class PropertyPathNode implements IPropertyPathNode {\r\n        Next: IPropertyPathNode;\r\n        _IsBroken: boolean;\r\n        _Source: any;\r\n        private _Value: any;\r\n        DependencyProperty: DependencyProperty;\r\n        PropertyInfo: any;\r\n        private _NodeListener: IPropertyPathNodeListener;\r\n        ValueType: IType;\r\n\r\n        get IsBroken (): boolean {\r\n            return this._IsBroken;\r\n        }\r\n\r\n        get Source (): any {\r\n            return this._Source;\r\n        }\r\n\r\n        get Value (): any {\r\n            return this._Value;\r\n        }\r\n\r\n        Listen (listener: IPropertyPathNodeListener) {\r\n            this._NodeListener = listener;\r\n        }\r\n\r\n        Unlisten (listener: IPropertyPathNodeListener) {\r\n            if (this._NodeListener === listener) this._NodeListener = null;\r\n        }\r\n\r\n        OnSourceChanged (oldSource, newSource) {\r\n        }\r\n\r\n        OnSourcePropertyChanged (o, e) {\r\n        }\r\n\r\n        UpdateValue () {\r\n            throw new Exception(\"No override for abstract method: PropertyPathNode.UpdateValue\");\r\n        }\r\n\r\n        SetValue (value: any) {\r\n            throw new Exception(\"No override for abstract method: PropertyPathNode.SetValue\");\r\n        }\r\n\r\n        GetSource (): any {\r\n            return this._Source;\r\n        }\r\n\r\n        SetSource (value: any) {\r\n            if (value == null || value !== this._Source) {\r\n                var oldSource = this._Source;\r\n                var npc = INotifyPropertyChanged_.as(oldSource);\r\n                if (npc)\r\n                    npc.PropertyChanged.off(this.OnSourcePropertyChanged, this);\r\n                this._Source = value;\r\n                npc = INotifyPropertyChanged_.as(this._Source);\r\n                if (npc)\r\n                    npc.PropertyChanged.on(this.OnSourcePropertyChanged, this);\r\n\r\n                this.OnSourceChanged(oldSource, this._Source);\r\n                this.UpdateValue();\r\n                if (this.Next)\r\n                    this.Next.SetSource(this._Value);\r\n            }\r\n        }\r\n\r\n        UpdateValueAndIsBroken (newValue: any, isBroken: boolean) {\r\n            var emitBrokenChanged = this._IsBroken !== isBroken;\r\n            var emitValueChanged = !nullstone.equals(this.Value, newValue);\r\n\r\n            this._IsBroken = isBroken;\r\n            this._Value = newValue;\r\n\r\n            if (emitValueChanged) {\r\n                var listener = this._NodeListener;\r\n                if (listener) listener.ValueChanged(this);\r\n            } else if (emitBrokenChanged) {\r\n                var listener = this._NodeListener;\r\n                if (listener) listener.IsBrokenChanged(this);\r\n            }\r\n        }\r\n\r\n        _CheckIsBroken (): boolean {\r\n            return !this.Source || (!this.PropertyInfo && !this.DependencyProperty);\r\n        }\r\n    }\r\n\r\n    class StandardPropertyPathNode extends PropertyPathNode {\r\n        private _STypeName: string;\r\n        private _PropertyName: string;\r\n        PropertyInfo: nullstone.IPropertyInfo;\r\n        private _DPListener: Providers.IPropertyChangedListener;\r\n\r\n        constructor (typeName: string, propertyName: string) {\r\n            super();\r\n            this._STypeName = typeName;\r\n            this._PropertyName = propertyName;\r\n        }\r\n\r\n        SetValue (value: any) {\r\n            if (this.DependencyProperty)\r\n                (<DependencyObject>this.Source).SetValue(this.DependencyProperty, value);\r\n            else if (this.PropertyInfo)\r\n                this.PropertyInfo.setValue(this.Source, value);\r\n        }\r\n\r\n        UpdateValue () {\r\n            if (this.DependencyProperty) {\r\n                this.ValueType = this.DependencyProperty.GetTargetType();\r\n                this.UpdateValueAndIsBroken((<DependencyObject>this.Source).GetValue(this.DependencyProperty), this._CheckIsBroken());\r\n            } else if (this.PropertyInfo) {\r\n                //TODO: this.ValueType = PropertyInfo.PropertyType;\r\n                this.ValueType = null;\r\n                try {\r\n                    this.UpdateValueAndIsBroken(this.PropertyInfo.getValue(this.Source), this._CheckIsBroken());\r\n                } catch (err) {\r\n                    this.UpdateValueAndIsBroken(null, this._CheckIsBroken());\r\n                }\r\n            } else {\r\n                this.ValueType = null;\r\n                this.UpdateValueAndIsBroken(null, this._CheckIsBroken());\r\n            }\r\n        }\r\n\r\n        OnSourceChanged (oldSource: any, newSource: any) {\r\n            super.OnSourceChanged(oldSource, newSource);\r\n\r\n            var oldDO: DependencyObject;\r\n            var newDO: DependencyObject;\r\n            if (oldSource instanceof DependencyObject) oldDO = <DependencyObject>oldSource;\r\n            if (newSource instanceof DependencyObject) newDO = <DependencyObject>newSource;\r\n\r\n            var listener = this._DPListener;\r\n            if (listener) {\r\n                listener.Detach();\r\n                this._DPListener = listener = null;\r\n            }\r\n\r\n            this.DependencyProperty = null;\r\n            this.PropertyInfo = null;\r\n            if (!this.Source)\r\n                return;\r\n\r\n            var type = this.Source.constructor;\r\n            var typeName = this._STypeName;\r\n            if (typeName) {\r\n                if (typeName.indexOf(\":\") > -1)\r\n                    console.warn(\"[Not supported] Cannot resolve type name outside of default namespace.\", typeName);\r\n                var oresolve = { type: undefined, isPrimitive: false };\r\n                if (CoreLibrary.resolveType(null, typeName, oresolve))\r\n                    type = oresolve.type;\r\n            }\r\n\r\n            if (newDO) {\r\n                var propd = DependencyProperty.GetDependencyProperty(type, this._PropertyName, true);\r\n                if (propd) {\r\n                    this.DependencyProperty = propd;\r\n                    this._DPListener = listener = propd.Store.ListenToChanged(newDO, propd, this.OnPropertyChanged, this);\r\n                }\r\n            }\r\n\r\n            if (!this.DependencyProperty || !this.DependencyProperty.IsAttached) {\r\n                this.PropertyInfo = nullstone.PropertyInfo.find(this.Source, this._PropertyName);\r\n            }\r\n        }\r\n\r\n        OnPropertyChanged (sender, args: IDependencyPropertyChangedEventArgs) {\r\n            try {\r\n                this.UpdateValue();\r\n                if (this.Next)\r\n                    this.Next.SetSource(this.Value);\r\n            } catch (err) {\r\n                //Ignore\r\n            }\r\n        }\r\n\r\n        OnSourcePropertyChanged (sender, e) {\r\n            if (e.PropertyName === this._PropertyName && this.PropertyInfo) {\r\n                this.UpdateValue();\r\n                var next = this.Next;\r\n                if (next)\r\n                    next.SetSource(this.Value);\r\n            }\r\n        }\r\n    }\r\n    class CollectionViewNode extends PropertyPathNode implements ICollectionViewNode {\r\n        BindsDirectlyToSource: boolean;\r\n        BindToView: boolean;\r\n        private _ViewPropertyListener: Providers.IPropertyChangedListener;\r\n        private _View: ICollectionView;\r\n\r\n        constructor (bindsDirectlyToSource: boolean, bindToView: boolean) {\r\n            super();\r\n            this.BindsDirectlyToSource = bindsDirectlyToSource === true;\r\n            this.BindToView = bindToView === true;\r\n        }\r\n\r\n        OnSourceChanged (oldSource: any, newSource: any) {\r\n            super.OnSourceChanged(oldSource, newSource);\r\n            this.DisconnectViewHandlers();\r\n            this.ConnectViewHandlers(newSource, newSource);\r\n        }\r\n\r\n        ViewChanged (sender: any, e: IDependencyPropertyChangedEventArgs) {\r\n            this.DisconnectViewHandlers(true);\r\n            this.ConnectViewHandlers(null, e.NewValue);\r\n            this.ViewCurrentChanged(this, null);\r\n        }\r\n\r\n        ViewCurrentChanged (sender: any, e: nullstone.IEventArgs) {\r\n            this.UpdateValue();\r\n            if (this.Next)\r\n                this.Next.SetSource(this.Value);\r\n        }\r\n\r\n        SetValue () {\r\n            throw new NotSupportedException(\"SetValue\");\r\n        }\r\n\r\n        UpdateValue () {\r\n            var src = this.Source;\r\n            if (!this.BindsDirectlyToSource) {\r\n                var view: ICollectionView;\r\n                if (src instanceof CollectionViewSource)\r\n                    src = view = src.View;\r\n                else\r\n                    view = ICollectionView_.as(src);\r\n                if (view && !this.BindToView)\r\n                    src = view.CurrentItem;\r\n            }\r\n            this.ValueType = src == null ? null : src.constructor;\r\n            this.UpdateValueAndIsBroken(src, this._CheckIsBroken());\r\n        }\r\n\r\n        _CheckIsBroken (): boolean {\r\n            return this.Source == null;\r\n        }\r\n\r\n        ConnectViewHandlers (source: CollectionViewSource, view: ICollectionView) {\r\n            if (source instanceof CollectionViewSource) {\r\n                this._ViewPropertyListener = CollectionViewSource.ViewProperty.Store.ListenToChanged(source, CollectionViewSource.ViewProperty, this.ViewChanged, this);\r\n                view = source.View;\r\n            }\r\n            this._View = ICollectionView_.as(view);\r\n            if (this._View)\r\n                this._View.CurrentChanged.on(this.ViewCurrentChanged, this);\r\n        }\r\n\r\n        DisconnectViewHandlers (onlyView?: boolean) {\r\n            if (!onlyView)\r\n                onlyView = false;\r\n            if (this._ViewPropertyListener && !onlyView) {\r\n                this._ViewPropertyListener.Detach();\r\n                this._ViewPropertyListener = null;\r\n            }\r\n            if (this._View) {\r\n                this._View.CurrentChanged.off(this.ViewCurrentChanged, this);\r\n            }\r\n        }\r\n    }\r\n    class IndexedPropertyPathNode extends PropertyPathNode {\r\n        Index: number;\r\n        _Source: any;\r\n        _IsBroken: boolean;\r\n        PropertyInfo: nullstone.IndexedPropertyInfo;\r\n\r\n        constructor (index: any) {\r\n            super();\r\n            this._IsBroken = false;\r\n            var val = parseInt(index, 10);\r\n            if (!isNaN(val))\r\n                index = val;\r\n            Object.defineProperty(this, \"Index\", {value: index, writable: false});\r\n        }\r\n\r\n        UpdateValue () {\r\n            if (this.PropertyInfo == null) {\r\n                this._IsBroken = true;\r\n                this.ValueType = null;\r\n                this.UpdateValueAndIsBroken(null, this._IsBroken);\r\n                return;\r\n            }\r\n\r\n            try {\r\n                var newVal = this.PropertyInfo.getValue(this.Source, this.Index);\r\n                this._IsBroken = false;\r\n                this.ValueType = this.PropertyInfo.propertyType;\r\n                this.UpdateValueAndIsBroken(newVal, this._IsBroken);\r\n            } catch (err) {\r\n                this._IsBroken = true;\r\n                this.ValueType = null;\r\n                this.UpdateValueAndIsBroken(null, this._IsBroken);\r\n            }\r\n        }\r\n\r\n        SetValue (value: any) {\r\n            if (this.PropertyInfo)\r\n                this.PropertyInfo.setValue(this.Source, this.Index, value);\r\n        }\r\n\r\n        _CheckIsBroken (): boolean {\r\n            return this._IsBroken || super._CheckIsBroken();\r\n        }\r\n\r\n        OnSourcePropertyChanged (o, e) {\r\n            this.UpdateValue();\r\n            if (this.Next != null)\r\n                this.Next.SetSource(this.Value);\r\n        }\r\n\r\n        OnSourceChanged (oldSource: any, newSource: any) {\r\n            super.OnSourceChanged(oldSource, newSource);\r\n\r\n            var cc = Collections.INotifyCollectionChanged_.as(oldSource);\r\n            if (cc)\r\n                cc.CollectionChanged.off(this.CollectionChanged, this);\r\n\r\n            cc = Collections.INotifyCollectionChanged_.as(newSource);\r\n            if (cc)\r\n                cc.CollectionChanged.on(this.CollectionChanged, this);\r\n\r\n            this._GetIndexer();\r\n        }\r\n\r\n        private _GetIndexer () {\r\n            this.PropertyInfo = null;\r\n            if (this._Source != null) {\r\n                this.PropertyInfo = nullstone.IndexedPropertyInfo.find(this._Source);\r\n            }\r\n        }\r\n\r\n        CollectionChanged (o, e) {\r\n            this.UpdateValue();\r\n            if (this.Next)\r\n                this.Next.SetSource(this.Value);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Data/RelativeSource.ts",
    "content": "module Fayde.Data {\r\n    export class RelativeSource implements nullstone.markup.IMarkupExtension, ICloneable {\r\n        Mode: RelativeSourceMode;\r\n        AncestorLevel: number;\r\n        AncestorType: Function = null;\r\n\r\n        constructor ();\r\n        constructor (rs: RelativeSource);\r\n        constructor (obj?: any) {\r\n            if (obj instanceof RelativeSource) {\r\n                var rs = <RelativeSource>obj;\r\n                this.Mode = rs.Mode;\r\n                this.AncestorLevel = rs.AncestorLevel;\r\n                this.AncestorType = rs.AncestorType;\r\n            }\r\n        }\r\n\r\n        init (val: string) {\r\n            this.Mode = RelativeSourceMode[val];\r\n        }\r\n\r\n        resolveTypeFields (resolver: (full: string) => any) {\r\n            if (typeof this.AncestorType === \"string\")\r\n                this.AncestorType = resolver(<any>this.AncestorType);\r\n        }\r\n\r\n        transmute (os: any[]): any {\r\n            if (this.Mode == null && typeof this.AncestorType === \"function\") {\r\n                this.Mode = RelativeSourceMode.FindAncestor;\r\n            } else {\r\n                this.Mode = Enum.fromAny(RelativeSourceMode, this.Mode);\r\n            }\r\n            this.AncestorLevel = parseInt(<any>this.AncestorLevel) || 1;\r\n            Object.freeze(this);\r\n            return this;\r\n        }\r\n\r\n        Clone () {\r\n            return new RelativeSource(this);\r\n        }\r\n\r\n        Find (target: XamlObject) {\r\n            switch (this.Mode) {\r\n                case RelativeSourceMode.Self:\r\n                    return target;\r\n                case RelativeSourceMode.TemplatedParent:\r\n                    return target.TemplateOwner;\r\n                case RelativeSourceMode.FindAncestor:\r\n                    return findAncestor(target, this);\r\n                case RelativeSourceMode.ItemsControlParent:\r\n                    return findItemsControlAncestor(target, this);\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RelativeSource);\r\n\r\n    function findAncestor (target: XamlObject, relSource: Data.RelativeSource): XamlObject {\r\n        if (!(target instanceof DependencyObject))\r\n            return;\r\n        var ancestorType = relSource.AncestorType;\r\n        if (typeof ancestorType !== \"function\") {\r\n            console.warn(\"RelativeSourceMode.FindAncestor with no AncestorType specified.\");\r\n            return;\r\n        }\r\n        var ancestorLevel = relSource.AncestorLevel;\r\n        if (isNaN(ancestorLevel)) {\r\n            console.warn(\"RelativeSourceMode.FindAncestor with no AncestorLevel specified.\");\r\n            return;\r\n        }\r\n        for (var parent = VisualTreeHelper.GetParent(<DependencyObject>target); parent != null; parent = VisualTreeHelper.GetParent(parent)) {\r\n            if (parent instanceof ancestorType && --ancestorLevel < 1)\r\n                return parent;\r\n        }\r\n    }\r\n\r\n    function findItemsControlAncestor (target: XamlObject, relSource: Data.RelativeSource): XamlObject {\r\n        if (!(target instanceof DependencyObject))\r\n            return;\r\n        var ancestorLevel = relSource.AncestorLevel;\r\n        ancestorLevel = ancestorLevel || 1; //NOTE: Will coerce 0 to 1 also\r\n        for (var parent = VisualTreeHelper.GetParent(<DependencyObject>target); parent != null; parent = VisualTreeHelper.GetParent(parent)) {\r\n            if (!!(<UIElement>parent).IsItemsControl && --ancestorLevel < 1)\r\n                return parent;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Documents/Block.ts",
    "content": "/// <reference path=\"TextElement.ts\" />\r\n\r\nmodule Fayde.Documents {\r\n    export class Block extends TextElement {\r\n    }\r\n    Fayde.CoreLibrary.add(Block);\r\n}"
  },
  {
    "path": "src/Documents/BlockCollection.ts",
    "content": "module Fayde.Documents {\r\n    export class BlockCollection extends XamlObjectCollection<Block> {\r\n        _RaiseItemAdded (value: Block, index: number) {\r\n            Incite(this, {\r\n                item: value,\r\n                index: index,\r\n                add: true\r\n            });\r\n        }\r\n\r\n        _RaiseItemRemoved (value: Block, index: number) {\r\n            Incite(this, {\r\n                item: value,\r\n                index: index,\r\n                add: false\r\n            });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(BlockCollection);\r\n}"
  },
  {
    "path": "src/Documents/Inline.ts",
    "content": "/// <reference path=\"TextElement.ts\" />\r\n\r\nmodule Fayde.Documents {\r\n    export class Inline extends TextElement {\r\n        static TextDecorationsProperty = InheritableOwner.TextDecorationsProperty.ExtendTo(Inline);\r\n        TextDecorations: TextDecorations;\r\n\r\n        constructor () {\r\n            super();\r\n            TextReaction<TextDecorations>(Inline.TextDecorationsProperty, (upd, ov, nv, te?: TextElement) => {\r\n                Incite(te, {\r\n                    type: 'font',\r\n                    full: upd.invalidateFont()\r\n                });\r\n            }, false, true, this);\r\n        }\r\n\r\n        Equals (inline: Inline): boolean {\r\n            if (this.TextDecorations !== inline.TextDecorations)\r\n                return false;\r\n            return super.Equals(inline);\r\n        }\r\n\r\n        IsInheritable (propd: DependencyProperty): boolean {\r\n            if (propd === Inline.TextDecorationsProperty)\r\n                return true;\r\n            return super.IsInheritable(propd);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Inline);\r\n}"
  },
  {
    "path": "src/Documents/InlineCollection.ts",
    "content": "module Fayde.Documents {\r\n    export class InlineCollection extends XamlObjectCollection<Inline> {\r\n        _RaiseItemAdded (value: Inline, index: number) {\r\n            Incite(this, {\r\n                item: value,\r\n                index: index,\r\n                add: true\r\n            });\r\n        }\r\n\r\n        _RaiseItemRemoved (value: Inline, index: number) {\r\n            Incite(this, {\r\n                item: value,\r\n                index: index,\r\n                add: false\r\n            });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(InlineCollection);\r\n}"
  },
  {
    "path": "src/Documents/LineBreak.ts",
    "content": "/// <reference path=\"Inline.ts\" />\r\n\r\nmodule Fayde.Documents {\r\n    export class LineBreak extends Inline {\r\n    }\r\n    Fayde.CoreLibrary.add(LineBreak);\r\n}"
  },
  {
    "path": "src/Documents/Paragraph.ts",
    "content": "/// <reference path=\"Block.ts\" />\r\n\r\nmodule Fayde.Documents {\r\n    export class Paragraph extends Block {\r\n        CreateNode(): TextElementNode {\r\n            return new TextElementNode(this, \"Inlines\");\r\n        }\r\n\r\n        static InlinesProperty = DependencyProperty.RegisterImmutable<InlineCollection>(\"Inlines\", () => InlineCollection, Paragraph);\r\n        Inlines: InlineCollection;\r\n\r\n        constructor() {\r\n            super();\r\n            var coll = Paragraph.InlinesProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n            ReactTo(coll, this, (obj?) => this.InlinesChanged(obj.item, obj.add));\r\n        }\r\n\r\n        InlinesChanged (inline: Inline, isAdd: boolean) {\r\n            if (isAdd)\r\n                Providers.InheritedStore.PropagateInheritedOnAdd(this, inline.XamlNode);\r\n\r\n            if (isAdd)\r\n                ReactTo(inline, this, (obj?) => Incite(this, obj));\r\n            else\r\n                UnreactTo(inline, this);\r\n\r\n            Incite(this, {\r\n                type: 'text',\r\n                full: true\r\n            });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Paragraph);\r\n    Markup.Content(Paragraph, Paragraph.InlinesProperty);\r\n}"
  },
  {
    "path": "src/Documents/Run.ts",
    "content": "/// <reference path=\"Inline.ts\" />\r\n\r\nmodule Fayde.Documents {\r\n    export class Run extends Inline implements Providers.IIsPropertyInheritable {\r\n        static FlowDirectionProperty = InheritableOwner.FlowDirectionProperty.ExtendTo(Run);\r\n        static TextProperty = DependencyProperty.Register(\"Text\", () => String, Run);\r\n        FlowDirection: FlowDirection;\r\n        Text: string;\r\n\r\n        _SerializeText(): string { return this.Text; }\r\n\r\n        IsInheritable(propd: DependencyProperty): boolean {\r\n            if (propd === Run.FlowDirectionProperty)\r\n                return true;\r\n            return super.IsInheritable(propd);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Run);\r\n\r\n    module reactions {\r\n        TextReaction<string>(Run.TextProperty, (upd, ov, nv, run?: Run) => {\r\n            Incite(run, {\r\n                type: 'text',\r\n                full: true\r\n            });\r\n        }, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Documents/Section.ts",
    "content": "/// <reference path=\"TextElement.ts\"/>\r\n\r\nmodule Fayde.Documents {\r\n    export class Section extends TextElement {\r\n        CreateNode (): TextElementNode {\r\n            return new TextElementNode(this, \"Blocks\");\r\n        }\r\n\r\n        static BlocksProperty = DependencyProperty.RegisterImmutable<BlockCollection>(\"Blocks\", () => BlockCollection, Section);\r\n        Blocks: BlockCollection;\r\n\r\n        constructor () {\r\n            super();\r\n            var coll = Section.BlocksProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n            ReactTo(coll, this, (obj?) => this.BlocksChanged(obj.item, obj.add));\r\n        }\r\n\r\n        BlocksChanged (block: Block, isAdd: boolean) {\r\n            if (isAdd)\r\n                Providers.InheritedStore.PropagateInheritedOnAdd(this, block.XamlNode);\r\n\r\n            if (isAdd)\r\n                ReactTo(block, this, (obj?) => Incite(this, obj));\r\n            else\r\n                UnreactTo(block, this);\r\n\r\n            Incite(this, {\r\n                type: 'text',\r\n                full: true\r\n            });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Section);\r\n    Markup.Content(Section, Section.BlocksProperty);\r\n}"
  },
  {
    "path": "src/Documents/Span.ts",
    "content": "/// <reference path=\"Inline.ts\" />\r\n\r\nmodule Fayde.Documents {\r\n    export class Span extends Inline {\r\n        CreateNode (): TextElementNode {\r\n            return new TextElementNode(this, \"Inlines\");\r\n        }\r\n\r\n        static InlinesProperty = DependencyProperty.RegisterImmutable<InlineCollection>(\"Inlines\", () => InlineCollection, Span);\r\n        Inlines: InlineCollection;\r\n\r\n        constructor () {\r\n            super();\r\n            var coll = Span.InlinesProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n            ReactTo(coll, this, (obj?) => this.InlinesChanged(obj.item, obj.add));\r\n        }\r\n\r\n        _SerializeText (): string {\r\n            var str = \"\";\r\n            var enumerator = this.Inlines.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                str += (<TextElement>enumerator.current)._SerializeText();\r\n            }\r\n            return str;\r\n        }\r\n\r\n        InlinesChanged (inline: Inline, isAdd: boolean) {\r\n            if (isAdd)\r\n                Providers.InheritedStore.PropagateInheritedOnAdd(this, inline.XamlNode);\r\n\r\n            if (isAdd)\r\n                ReactTo(inline, this, (obj?) => Incite(this, obj));\r\n            else\r\n                UnreactTo(inline, this);\r\n\r\n            Incite(this, {\r\n                type: 'text',\r\n                full: true\r\n            });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Span);\r\n    Markup.Content(Span, Span.InlinesProperty);\r\n}"
  },
  {
    "path": "src/Documents/TextElement.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\"/>\r\n/// <reference path=\"../Core/InheritableOwner.ts\"/>\r\n/// <reference path=\"TextReaction.ts\"/>\r\n\r\nmodule Fayde.Documents {\r\n    export class TextElementNode extends DONode {\r\n        XObject: TextElement;\r\n\r\n        constructor (xobj: TextElement, inheritedWalkProperty: string) {\r\n            super(xobj);\r\n            this.InheritedWalkProperty = inheritedWalkProperty;\r\n        }\r\n\r\n        InheritedWalkProperty: string;\r\n\r\n        GetInheritedEnumerator (): nullstone.IEnumerator<DONode> {\r\n            if (!this.InheritedWalkProperty)\r\n                return nullstone.IEnumerator_.empty;\r\n            var coll: XamlObjectCollection<DependencyObject> = this.XObject[this.InheritedWalkProperty];\r\n            if (coll)\r\n                return coll.GetNodeEnumerator<DONode>();\r\n        }\r\n    }\r\n\r\n    function invalidateFont (upd: minerva.text.TextUpdater, ov, nv, te?: TextElement) {\r\n        Incite(te, {\r\n            type: 'font',\r\n            full: upd.invalidateFont()\r\n        });\r\n    }\r\n\r\n    export class TextElement extends DependencyObject implements Providers.IIsPropertyInheritable {\r\n        XamlNode: TextElementNode;\r\n        TextUpdater = new minerva.text.TextUpdater();\r\n\r\n        CreateNode (): TextElementNode {\r\n            return new TextElementNode(this, null);\r\n        }\r\n\r\n        constructor () {\r\n            super();\r\n            TextReaction<Media.Brush>(TextElement.ForegroundProperty, (upd, ov, nv, te?: TextElement) => {\r\n                Incite(te, {\r\n                    type: 'font',\r\n                    full: upd.invalidateFont()\r\n                });\r\n            }, true, true, this);\r\n            TextReaction<string>(TextElement.FontFamilyProperty, invalidateFont, false, true, this);\r\n            TextReaction<number>(TextElement.FontSizeProperty, invalidateFont, false, true, this);\r\n            TextReaction<string>(TextElement.FontStretchProperty, invalidateFont, false, true, this);\r\n            TextReaction<string>(TextElement.FontStyleProperty, invalidateFont, false, true, this);\r\n            TextReaction<FontWeight>(TextElement.FontWeightProperty, invalidateFont, false, true, this);\r\n        }\r\n\r\n        static FontFamilyProperty = InheritableOwner.FontFamilyProperty.ExtendTo(TextElement);\r\n        static FontSizeProperty = InheritableOwner.FontSizeProperty.ExtendTo(TextElement);\r\n        static FontStretchProperty = InheritableOwner.FontStretchProperty.ExtendTo(TextElement);\r\n        static FontStyleProperty = InheritableOwner.FontStyleProperty.ExtendTo(TextElement);\r\n        static FontWeightProperty = InheritableOwner.FontWeightProperty.ExtendTo(TextElement);\r\n        static ForegroundProperty = InheritableOwner.ForegroundProperty.ExtendTo(TextElement);\r\n        static LanguageProperty = InheritableOwner.LanguageProperty.ExtendTo(TextElement);\r\n        Foreground: Media.Brush;\r\n        FontFamily: string;\r\n        FontStretch: string;\r\n        FontStyle: string;\r\n        FontWeight: FontWeight;\r\n        FontSize: number;\r\n        Language: string;\r\n\r\n        IsInheritable (propd: DependencyProperty): boolean {\r\n            return TextElementInheritedProps.indexOf(propd) > -1;\r\n        }\r\n\r\n        _SerializeText (): string {\r\n            return undefined;\r\n        }\r\n\r\n        Start: number;\r\n\r\n        Equals (te: TextElement): boolean {\r\n            if (this.FontFamily !== te.FontFamily)\r\n                return false;\r\n            if (this.FontSize !== te.FontSize)\r\n                return false;\r\n            if (this.FontStyle !== te.FontStyle)\r\n                return false;\r\n            if (this.FontWeight !== te.FontWeight)\r\n                return false;\r\n            if (this.FontStretch !== te.FontStretch)\r\n                return false;\r\n            if (!nullstone.equals(this.Foreground, te.Foreground))\r\n                return false;\r\n            return true;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TextElement);\r\n\r\n    var TextElementInheritedProps = [\r\n        TextElement.FontFamilyProperty,\r\n        TextElement.FontSizeProperty,\r\n        TextElement.FontStretchProperty,\r\n        TextElement.FontStyleProperty,\r\n        TextElement.FontWeightProperty,\r\n        TextElement.ForegroundProperty,\r\n        TextElement.LanguageProperty\r\n    ];\r\n}"
  },
  {
    "path": "src/Documents/TextReaction.ts",
    "content": "module Fayde.Documents {\r\n    export interface ITextReactionCallback<T> {\r\n        (updater: minerva.text.TextUpdater, ov: T, nv: T, te?: TextElement): void;\r\n    }\r\n\r\n    export function TextReaction<TValue>(propd: DependencyProperty, callback?: ITextReactionCallback<TValue>, listen?: boolean, sync?: any, instance?: any) {\r\n        var changed: Function;\r\n        if (sync === false) {\r\n            changed = (listen === false) ? reaction<TValue>(callback) : lReaction<TValue>(callback);\r\n        } else {\r\n            var name = propd.Name;\r\n            name = name.charAt(0).toLowerCase() + name.substr(1);\r\n            if (typeof sync !== \"function\")\r\n                changed = (listen === false) ? sReaction<TValue>(callback, name) : slReaction<TValue>(callback, name);\r\n            else\r\n                changed = (listen === false) ? sReaction<TValue>(callback, name, sync) : slReaction<TValue>(callback, name, sync);\r\n        }\r\n        if (instance)\r\n            propd.Store.ListenToChanged(instance, propd, <any>changed, instance);\r\n        else\r\n            propd.ChangedCallback = <any>changed;\r\n    }\r\n\r\n    function reaction<T>(callback: ITextReactionCallback<T>) {\r\n        return (te: TextElement, args: DependencyPropertyChangedEventArgs) => {\r\n            callback && callback(te.TextUpdater, args.OldValue, args.NewValue, te);\r\n        };\r\n    }\r\n\r\n    function sReaction<T>(callback: ITextReactionCallback<T>, name: string, syncer?: (src: T, dest: T) => void) {\r\n        return (te: TextElement, args: DependencyPropertyChangedEventArgs) => {\r\n            var ov = args.OldValue;\r\n            var nv = args.NewValue;\r\n            var upd = te.TextUpdater;\r\n            if (!syncer)\r\n                upd.assets[name] = nv;\r\n            else\r\n                syncer(nv, upd.assets[name]);\r\n            callback && callback(upd, ov, nv, te);\r\n        };\r\n    }\r\n\r\n    function lReaction<T>(callback: ITextReactionCallback<T>) {\r\n        return (te: TextElement, args: DependencyPropertyChangedEventArgs) => {\r\n            var ov = args.OldValue;\r\n            var nv = args.NewValue;\r\n            var upd = te.TextUpdater;\r\n            UnreactTo(ov, te);\r\n            callback && callback(upd, ov, nv, te);\r\n            ReactTo(nv, te, () => callback(upd, nv, nv, te));\r\n        };\r\n    }\r\n\r\n    function slReaction<T>(callback: ITextReactionCallback<T>, name: string, syncer?: (src: T, dest: T) => void) {\r\n        return (te: TextElement, args: DependencyPropertyChangedEventArgs) => {\r\n            var ov = args.OldValue;\r\n            var nv = args.NewValue;\r\n            var upd = te.TextUpdater;\r\n            UnreactTo(ov, te);\r\n            if (!syncer)\r\n                upd.assets[name] = nv;\r\n            else\r\n                syncer(nv, upd.assets[name]);\r\n            callback && callback(upd, ov, nv, te);\r\n            ReactTo(nv, te, () => callback && callback(upd, nv, nv, te));\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Documents/Underline.ts",
    "content": "/// <reference path=\"Span.ts\" />\r\n\r\nmodule Fayde.Documents {\r\n    export class Underline extends Span {\r\n    }\r\n    Fayde.CoreLibrary.add(Underline);\r\n}"
  },
  {
    "path": "src/Engine/Application.ts",
    "content": "/// <reference path=\"../Core/DependencyObject\" />\r\n\r\ninterface ITimeline {\r\n    Update(nowTime: number);\r\n}\r\n\r\nmodule Fayde {\r\n    export class Application extends DependencyObject implements IResourcable, ITimerListener {\r\n        static Current: Application;\r\n        MainSurface: Surface;\r\n        Loaded = new nullstone.Event();\r\n        Address: Uri = null;\r\n        AllowNavigation = true;\r\n        private _IsRunning: boolean = false;\r\n        private _IsLoaded = false;\r\n        private _Storyboards: ITimeline[] = [];\r\n        private _ClockTimer: ClockTimer = new ClockTimer();\r\n        private _RootVisual: UIElement = null;\r\n\r\n        static ResourcesProperty = DependencyProperty.RegisterImmutable<ResourceDictionary>(\"Resources\", () => ResourceDictionary, Application);\r\n        static ThemeNameProperty = DependencyProperty.Register(\"ThemeName\", () => String, Application, \"Default\", (d: Application, args) => d.OnThemeNameChanged(args.OldValue, args.NewValue));\r\n        static ZoomFactorProperty = DependencyProperty.RegisterReadOnly(\"ZoomFactor\", () => Number, Application, 1.0, (d: Application, args) => d.OnZoomFactorChanged(args.OldValue, args.NewValue));\r\n        Resources: ResourceDictionary;\r\n        ThemeName: string;\r\n        ZoomFactor: number;\r\n\r\n        private OnThemeNameChanged(oldThemeName: string, newThemeName: string) {\r\n            if (!this._IsLoaded)\r\n                return;\r\n            ThemeManager.LoadAsync(newThemeName)\r\n                .then(() => this._ApplyTheme(),\r\n                    err => console.error(\"Could not load theme.\", err));\r\n        }\r\n\r\n        private OnZoomFactorChanged(oldZoom: number, newZoom: number) {\r\n        }\r\n\r\n        private _ApplyTheme() {\r\n            for (var walker = this.MainSurface.walkLayers(); walker.step();) {\r\n                for (var subwalker = walker.current.walkDeep(); subwalker.step();) {\r\n                    var node = subwalker.current.getAttachedValue(\"$node\");\r\n                    Providers.ImplicitStyleBroker.Set(<FrameworkElement>node.XObject, Providers.StyleMask.Theme);\r\n                }\r\n            }\r\n        }\r\n\r\n        Resized = new RoutedEvent<SizeChangedEventArgs>();\r\n\r\n        OnResized(oldSize: minerva.Size, newSize: minerva.Size) {\r\n            this.Resized.raise(this, new SizeChangedEventArgs(oldSize, newSize));\r\n        }\r\n\r\n        constructor() {\r\n            super();\r\n            this.XamlNode.NameScope = new NameScope(true);\r\n            var rd = Application.ResourcesProperty.Initialize(this);\r\n            this.MainSurface = new Surface(this);\r\n            this.Address = new Uri(document.URL);\r\n        }\r\n\r\n        get RootVisual(): UIElement {\r\n            for (var walker = this.MainSurface.walkLayers(); walker.step();) {\r\n                var node = walker.current.getAttachedValue(\"$node\");\r\n                return node.XObject;\r\n            }\r\n        }\r\n\r\n        $$SetRootVisual(value: UIElement) {\r\n            this._RootVisual = value;\r\n        }\r\n\r\n        Attach(canvas: HTMLCanvasElement) {\r\n            this.MainSurface.init(canvas);\r\n            this.MainSurface.Attach(this._RootVisual, true);\r\n        }\r\n\r\n        Start() {\r\n            this.Update();\r\n            this.Render();\r\n            this._ClockTimer.RegisterTimer(this);\r\n            this._IsLoaded = true;\r\n            this.Loaded.raiseAsync(this, null);\r\n        }\r\n\r\n        OnTicked(lastTime: number, nowTime: number) {\r\n            this.ProcessStoryboards(lastTime, nowTime);\r\n            this.Update();\r\n            this.Render();\r\n        }\r\n\r\n        private StopEngine() {\r\n            this._ClockTimer.UnregisterTimer(this);\r\n        }\r\n\r\n        private ProcessStoryboards(lastTime: number, nowTime: number) {\r\n            perfex.timer.start('StoryboardsProcess', this);\r\n            for (var i = 0, sbs = this._Storyboards; i < sbs.length; i++) {\r\n                sbs[i].Update(nowTime);\r\n            }\r\n            perfex.timer.stop();\r\n        }\r\n\r\n        private Update() {\r\n            if (this._IsRunning)\r\n                return;\r\n            this._IsRunning = true;\r\n            perfex.timer.start('UpdateLayout', this);\r\n            var updated = this.MainSurface.updateLayout();\r\n            perfex.timer.stop();\r\n            this._IsRunning = false;\r\n        }\r\n\r\n        private Render() {\r\n            perfex.timer.start('Render', this);\r\n            this.MainSurface.render();\r\n            perfex.timer.stop();\r\n        }\r\n\r\n        RegisterStoryboard(storyboard: ITimeline) {\r\n            var sbs = this._Storyboards;\r\n            var index = sbs.indexOf(storyboard);\r\n            if (index === -1)\r\n                sbs.push(storyboard);\r\n        }\r\n\r\n        UnregisterStoryboard(storyboard: ITimeline) {\r\n            var sbs = this._Storyboards;\r\n            var index = sbs.indexOf(storyboard);\r\n            if (index !== -1)\r\n                sbs.splice(index, 1);\r\n        }\r\n\r\n        static GetAsync(url: string): Promise<Application> {\r\n            return Markup.Resolve(url)\r\n                .then(appm => {\r\n                    TimelineProfile.Parse(true, \"App\");\r\n                    var app = Markup.Load<Application>(null, appm);\r\n                    TimelineProfile.Parse(false, \"App\");\r\n                    if (!(app instanceof Application))\r\n                        throw new Error(\"Markup must be an Application.\");\r\n                    return app;\r\n                });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Application);\r\n}"
  },
  {
    "path": "src/Engine/ClockTimer.ts",
    "content": "\r\nmodule Fayde {\r\n    export interface ITimerListener {\r\n        OnTicked(lastTime: number, nowTime: number);\r\n    }\r\n\r\n    var requestAnimFrame = (function () {\r\n        return window.requestAnimationFrame ||\r\n            (<any>window).webkitRequestAnimationFrame ||\r\n            (<any>window).mozRequestAnimationFrame ||\r\n            (<any>window).oRequestAnimationFrame ||\r\n            window.msRequestAnimationFrame ||\r\n            function (callback) {\r\n                window.setTimeout(callback, 1000 / 200);\r\n            };\r\n    })();\r\n\r\n    export class ClockTimer {\r\n        private _Listeners: Fayde.ITimerListener[] = [];\r\n        private _LastTime: number = 0;\r\n\r\n        RegisterTimer(listener: Fayde.ITimerListener) {\r\n            var ls = this._Listeners;\r\n            var index = ls.indexOf(listener);\r\n            if (index > -1)\r\n                return;\r\n            ls.push(listener);\r\n            if (ls.length === 1)\r\n                this._RequestAnimationTick();\r\n        }\r\n        UnregisterTimer(listener: Fayde.ITimerListener) {\r\n            var ls = this._Listeners;\r\n            var index = ls.indexOf(listener);\r\n            if (index > -1)\r\n                ls.splice(index, 1);\r\n        }\r\n        private _DoTick() {\r\n            var nowTime = new Date().getTime();\r\n            var lastTime = this._LastTime;\r\n            this._LastTime = nowTime;\r\n\r\n            var ls = this._Listeners;\r\n            var len = ls.length;\r\n            if (len === 0)\r\n                return;\r\n            for (var i = 0; i < len; i++) {\r\n                ls[i].OnTicked(lastTime, nowTime);\r\n            }\r\n            this._RequestAnimationTick();\r\n        }\r\n        private _RequestAnimationTick() {\r\n            requestAnimFrame(() => this._DoTick());\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Engine/Exceptions.ts",
    "content": "class Exception {\r\n    Message: string;\r\n\r\n    constructor(message: string) {\r\n        this.Message = message;\r\n    }\r\n\r\n    toString(): string {\r\n        var typeName = (<any>this).constructor.name;\r\n        if (typeName)\r\n            return typeName + \": \" + this.Message;\r\n        return this.Message;\r\n    }\r\n}\r\n\r\nclass ArgumentException extends Exception {\r\n    constructor(message: string) {\r\n        super(message);\r\n    }\r\n}\r\n\r\nclass ArgumentNullException extends Exception {\r\n    constructor(message: string) {\r\n        super(message);\r\n    }\r\n}\r\n\r\nclass InvalidOperationException extends Exception {\r\n    constructor(message: string) {\r\n        super(message);\r\n    }\r\n}\r\n\r\nclass XamlParseException extends Exception {\r\n    Data: any;\r\n\r\n    constructor(message: string, data?: any) {\r\n        super(message);\r\n        if (data) {\r\n            Object.defineProperties(this, {\r\n                \"Data\": {value: data, writable: false}\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\nclass XamlMarkupParseException extends Exception {\r\n    constructor(message: string) {\r\n        super(message);\r\n    }\r\n}\r\n\r\nclass NotSupportedException extends Exception {\r\n    constructor(message: string) {\r\n        super(message);\r\n    }\r\n}\r\n\r\nclass IndexOutOfRangeException extends Exception {\r\n    constructor(index: number) {\r\n        super(index.toString());\r\n    }\r\n}\r\n\r\nclass ArgumentOutOfRangeException extends Exception {\r\n    constructor(msg: string) {\r\n        super(msg);\r\n    }\r\n}\r\n\r\nclass AttachException extends Exception {\r\n    Data: any;\r\n\r\n    constructor(message: string, data: any) {\r\n        super(message);\r\n        this.Data = data;\r\n    }\r\n}\r\n\r\nclass InvalidJsonException extends Exception {\r\n    JsonText: string;\r\n    InnerException: Error;\r\n\r\n    constructor(jsonText: string, innerException: Error) {\r\n        super(\"Invalid json.\");\r\n        this.JsonText = jsonText;\r\n        this.InnerException = innerException;\r\n    }\r\n}\r\n\r\nclass TargetInvocationException extends Exception {\r\n    InnerException: Exception;\r\n\r\n    constructor(message: string, innerException: Exception) {\r\n        super(message);\r\n        this.InnerException = innerException;\r\n    }\r\n}\r\n\r\nclass UnknownTypeException extends Exception {\r\n    FullTypeName: string;\r\n\r\n    constructor(fullTypeName: string) {\r\n        super(fullTypeName);\r\n        this.FullTypeName = fullTypeName;\r\n    }\r\n}\r\n\r\nclass FormatException extends Exception {\r\n    constructor(message: string) {\r\n        super(message);\r\n    }\r\n}"
  },
  {
    "path": "src/Engine/FocusManager.ts",
    "content": "\r\nmodule Fayde.Engine {\r\n    interface IFocusChangedEvents {\r\n        GotFocus: Fayde.UINode[];\r\n        LostFocus: Fayde.UINode[];\r\n    }\r\n\r\n    export class FocusManager {\r\n        private _State: IInputState;\r\n        private _ChangedEvents: IFocusChangedEvents[] = [];\r\n        Node: UINode;\r\n\r\n        constructor(state: IInputState) {\r\n            this._State = state;\r\n        }\r\n        \r\n        GetFocusToRoot():UINode[] {\r\n            if (!this.Node)\r\n                return null;\r\n            return elementPathToRoot(this.Node);\r\n        }\r\n\r\n        OnNodeDetached(node: UINode) {\r\n            var f = this.Node;\r\n            while (f) {\r\n                if (f === node) {\r\n                    this._FocusNode();\r\n                    return;\r\n                }\r\n                f = f.VisualParentNode;\r\n            }\r\n        }\r\n\r\n        TabFocus(isShift: boolean) {\r\n            if (!this.Node)\r\n                return false;\r\n            Fayde.TabNavigationWalker.Focus(this.Node, !isShift);\r\n            return true;\r\n        }\r\n        Focus(ctrlNode: Fayde.Controls.ControlNode, recurse?: boolean): boolean {\r\n            recurse = recurse === undefined || recurse === true;\r\n            if (!ctrlNode.IsAttached)\r\n                return false;\r\n\r\n            var walker = Fayde.DeepTreeWalker(ctrlNode);\r\n            var uin: Fayde.UINode;\r\n            while (uin = walker.Step()) {\r\n                if (uin.XObject.Visibility !== Fayde.Visibility.Visible) {\r\n                    walker.SkipBranch();\r\n                    continue;\r\n                }\r\n\r\n                if (!(uin instanceof Fayde.Controls.ControlNode))\r\n                    continue;\r\n\r\n                var cn = <Fayde.Controls.ControlNode>uin;\r\n                var c = cn.XObject;\r\n                if (!c.IsEnabled) {\r\n                    if (!recurse)\r\n                        return false;\r\n                    walker.SkipBranch();\r\n                    continue;\r\n                }\r\n\r\n                var loaded = ctrlNode.IsLoaded;\r\n                var check: Fayde.UINode = ctrlNode;\r\n                while (!loaded && (check = check.VisualParentNode)) {\r\n                    loaded = loaded || check.IsLoaded;\r\n                }\r\n\r\n                if (loaded && cn.LayoutUpdater.assets.totalIsRenderVisible && c.IsTabStop)\r\n                    return this._FocusNode(cn);\r\n\r\n                if (!recurse)\r\n                    return false;\r\n            }\r\n            return false;\r\n        }\r\n        private _FocusNode(uin?: Fayde.UINode) {\r\n            if (uin === this.Node)\r\n                return true;\r\n            var fn = this.Node;\r\n            if (fn) {\r\n                this._ChangedEvents.push({\r\n                    LostFocus: elementPathToRoot(fn),\r\n                    GotFocus: null\r\n                });\r\n            }\r\n            this.Node = uin;\r\n            if (uin) {\r\n                this._ChangedEvents.push({\r\n                    LostFocus: null,\r\n                    GotFocus: elementPathToRoot(uin)\r\n                });\r\n            }\r\n\r\n            if (this._State.IsFirstUserInitiated)\r\n                this.EmitChangesAsync();\r\n\r\n            return true;\r\n        }\r\n\r\n        EmitChanges() {\r\n            var evts = this._ChangedEvents;\r\n            var cur;\r\n            while (cur = evts.shift()) {\r\n                this._EmitFocusList(\"lost\", cur.LostFocus);\r\n                this._EmitFocusList(\"got\", cur.GotFocus);\r\n            }\r\n        }\r\n        EmitChangesAsync() {\r\n            setTimeout(() => this.EmitChanges(), 1);\r\n        }\r\n        private _EmitFocusList(type: string, list: UINode[]) {\r\n            if (!list)\r\n                return;\r\n            var cur;\r\n            while (cur = list.shift()) {\r\n                cur._EmitFocusChange(type);\r\n            }\r\n        }\r\n        \r\n        FocusAnyLayer(walker: minerva.IWalker<minerva.core.Updater>) {\r\n            if (!this.Node) {\r\n                var top: UINode;\r\n                for (var node;walker.step();) {\r\n                    node = walker.current.getAttachedValue(\"$node\");\r\n                    if (!top)\r\n                        top = node;\r\n                    if (Fayde.TabNavigationWalker.Focus(node))\r\n                        break;\r\n                }\r\n                if (!this.Node && top)\r\n                    this._FocusNode(top);\r\n            }\r\n            if (this._State.IsFirstUserInitiated)\r\n                this.EmitChangesAsync();\r\n        }\r\n    }\r\n\r\n    function elementPathToRoot(source: UINode): UINode[] {\r\n        var list: UINode[] = [];\r\n        while (source) {\r\n            list.push(source);\r\n            source = source.VisualParentNode;\r\n        }\r\n        return list;\r\n    }\r\n}"
  },
  {
    "path": "src/Engine/InputManager.ts",
    "content": "\r\nmodule Fayde.Engine {\r\n    interface IFocusData {\r\n        Node: UINode;\r\n    }\r\n\r\n    export interface IInputState {\r\n        IsUserInitiated: boolean;\r\n        IsFirstUserInitiated: boolean;\r\n    }\r\n\r\n    export class InputManager {\r\n        private _Surface: Surface;\r\n        private _KeyInterop: Fayde.Input.IKeyInterop;\r\n        private _MouseInterop: Fayde.Input.IMouseInterop;\r\n        private _TouchInterop: Fayde.Input.ITouchInterop;\r\n        private _Focus: FocusManager;\r\n        private _State: IInputState;\r\n        private _Cursor: CursorType = Fayde.CursorType.Default;\r\n        SetCursor: (cursor: CursorType) => void = (cursor) => { };\r\n\r\n        private _CurrentPos: Point = null;\r\n        private _EmittingMouseEvent: boolean = false;\r\n        private _InputList: Fayde.UINode[] = [];\r\n        private _Captured: Fayde.UINode = null;\r\n        private _PendingCapture: Fayde.UINode = null;\r\n        private _PendingReleaseCapture: boolean = false;\r\n        private _CapturedInputList: Fayde.UINode[] = [];\r\n\r\n        get FocusedNode(): UINode { return this._Focus.Node; }\r\n        Focus(node: Controls.ControlNode, recurse?: boolean) { return this._Focus.Focus(node, recurse); }\r\n\r\n        constructor(surface: Surface) {\r\n            this._Surface = surface;\r\n            this._KeyInterop = Fayde.Input.CreateKeyInterop();\r\n            this._MouseInterop = Fayde.Input.CreateMouseInterop();\r\n            this._TouchInterop = Fayde.Input.CreateTouchInterop();\r\n\r\n            this._Focus = new FocusManager(this._State = {\r\n                IsUserInitiated: false,\r\n                IsFirstUserInitiated: false\r\n            });\r\n        }\r\n\r\n        Register(canvas: HTMLCanvasElement) {\r\n            this.SetCursor = (cursor) => canvas.style.cursor = CursorTypeMappings[CursorType[this._Cursor = cursor]];\r\n\r\n            this._KeyInterop.RegisterEvents(this);\r\n            this._MouseInterop.RegisterEvents(this, canvas);\r\n            this._TouchInterop.Register(this, canvas);\r\n        }\r\n\r\n        OnNodeDetached(node: UINode) {\r\n            var il = this._InputList;\r\n            if (il[il.length - 1] === node)\r\n                this._InputList = [];\r\n            this._Focus.OnNodeDetached(node);\r\n        }\r\n\r\n        SetIsUserInitiatedEvent(value: boolean) {\r\n            this._Focus.EmitChanges()\r\n            this._State.IsFirstUserInitiated = this._State.IsFirstUserInitiated || value;\r\n            this._State.IsUserInitiated = value;\r\n        }\r\n\r\n        HandleKeyDown(args: Input.KeyEventArgs) {\r\n            this.SetIsUserInitiatedEvent(true);\r\n            Input.Keyboard.RefreshModifiers(args.Modifiers);\r\n            var focusToRoot = this._Focus.GetFocusToRoot();\r\n            if (focusToRoot)\r\n                this._EmitKeyDown(focusToRoot, args);\r\n            if (!args.Handled && args.Key === Input.Key.Tab) {\r\n                if (!this._Focus.TabFocus(args.Modifiers.Shift))\r\n                    this._Focus.FocusAnyLayer(this._Surface.walkLayers(true));\r\n                args.Handled = true;\r\n            }\r\n            this.SetIsUserInitiatedEvent(false);\r\n        }\r\n        private _EmitKeyDown(list: UINode[], args: Input.KeyEventArgs, endIndex?: number) {\r\n            if (endIndex === 0)\r\n                return;\r\n            if (!endIndex || endIndex === -1)\r\n                endIndex = list.length;\r\n\r\n            var i = 0;\r\n            var cur = list.shift();\r\n            while (cur && i < endIndex) {\r\n                cur._EmitKeyDown(args);\r\n                cur = list.shift();\r\n                i++;\r\n            }\r\n        }\r\n\r\n        HandleMousePress(button: number, pos: Point): boolean {\r\n            this.SetIsUserInitiatedEvent(true);\r\n            var handled = this.HandleMouseEvent(Input.MouseInputType.MouseDown, button, pos);\r\n            this.UpdateCursorFromInputList();\r\n            this.SetIsUserInitiatedEvent(false);\r\n            return handled;\r\n        }\r\n        HandleMouseRelease(button: number, pos: Point) {\r\n            this.SetIsUserInitiatedEvent(true);\r\n            this.HandleMouseEvent(Input.MouseInputType.MouseUp, button, pos);\r\n            this.UpdateCursorFromInputList();\r\n            this.SetIsUserInitiatedEvent(false);\r\n            if (this._Captured)\r\n                this._PerformReleaseCapture();\r\n        }\r\n        HandleMouseEvent(type: Input.MouseInputType, button: number, pos: Point, delta?: number, emitLeave?: boolean, emitEnter?: boolean): boolean {\r\n            this._CurrentPos = pos;\r\n            if (this._EmittingMouseEvent)\r\n                return false;\r\n\r\n            var newInputList = this.HitTestPoint(pos);\r\n            if (!newInputList)\r\n                return false;\r\n\r\n            this._EmittingMouseEvent = true;\r\n\r\n            var indices = { Index1: -1, Index2: -1 };\r\n            findFirstCommonElement(this._InputList, newInputList, indices);\r\n            if (emitLeave === undefined || emitLeave === true)\r\n                this._EmitMouseList(Input.MouseInputType.MouseLeave, button, pos, delta, this._InputList, indices.Index1);\r\n            if (emitEnter === undefined || emitEnter === true)\r\n                this._EmitMouseList(Input.MouseInputType.MouseEnter, button, pos, delta, newInputList, indices.Index2);\r\n\r\n            var handled = false;\r\n            if (type !== Input.MouseInputType.NoOp)\r\n                handled = this._EmitMouseList(type, button, pos, delta, this._Captured ? this._CapturedInputList : newInputList);\r\n            this._InputList = newInputList;\r\n\r\n            if (this._Surface.HitTestCallback)\r\n                this._Surface.HitTestCallback(newInputList);\r\n\r\n            if (this._PendingCapture)\r\n                this._PerformCapture(this._PendingCapture);\r\n            if (this._PendingReleaseCapture || (this._Captured && !this._Captured.CanCaptureMouse()))\r\n                this._PerformReleaseCapture();\r\n            this._EmittingMouseEvent = false;\r\n            return handled;\r\n        }\r\n        private _EmitMouseList(type: Input.MouseInputType, button: number, pos: Point, delta: number, list: Fayde.UINode[], endIndex?: number): boolean {\r\n            var handled = false;\r\n            if (endIndex === 0)\r\n                return handled;\r\n            if (!endIndex || endIndex === -1)\r\n                endIndex = list.length;\r\n            var args = this._MouseInterop.CreateEventArgs(type, pos, delta);\r\n            var node = list[0];\r\n            if (node && args instanceof Fayde.RoutedEventArgs)\r\n                args.Source = node.XObject;\r\n            var isL = this._MouseInterop.IsLeftButton(button);\r\n            var isR = this._MouseInterop.IsRightButton(button);\r\n            if (Fayde.Engine.Inspection.TryHandle(type, isL, isR, args, list))\r\n                return true;\r\n            for (var i = 0; i < endIndex; i++) {\r\n                node = list[i];\r\n                if (type === Input.MouseInputType.MouseLeave)\r\n                    args.Source = node.XObject;\r\n                if (node._EmitMouseEvent(type, isL, isR, args))\r\n                    handled = true;\r\n                if (type === Input.MouseInputType.MouseLeave) //MouseLeave gets new event args on each emit\r\n                    args = this._MouseInterop.CreateEventArgs(type, pos, delta);\r\n            }\r\n            return handled;\r\n        }\r\n\r\n        HitTestPoint(pos: Point): UINode[] {\r\n            return this._Surface.hitTest(pos).map(upd => upd.getAttachedValue(\"$node\"));\r\n        }\r\n\r\n        UpdateCursorFromInputList() {\r\n            var newCursor = Fayde.CursorType.Default;\r\n            var list = this._Captured ? this._CapturedInputList : this._InputList;\r\n            var len = list.length;\r\n            for (var i = 0; i < len; i++) {\r\n                newCursor = list[i].XObject.Cursor;\r\n                if (newCursor !== Fayde.CursorType.Default)\r\n                    break;\r\n            }\r\n            this.SetCursor(newCursor);\r\n        }\r\n        SetMouseCapture(uin: Fayde.UINode): boolean {\r\n            if (this._Captured || this._PendingCapture)\r\n                return uin === this._Captured || uin === this._PendingCapture;\r\n            if (!this._EmittingMouseEvent)\r\n                return false;\r\n            this._PendingCapture = uin;\r\n            return true;\r\n        }\r\n        ReleaseMouseCapture(uin: Fayde.UINode) {\r\n            if (uin !== this._Captured && uin !== this._PendingCapture)\r\n                return;\r\n            if (this._EmittingMouseEvent)\r\n                this._PendingReleaseCapture = true;\r\n            else\r\n                this._PerformReleaseCapture();\r\n        }\r\n        private _PerformCapture(uin: Fayde.UINode) {\r\n            this._Captured = uin;\r\n            var newInputList = [];\r\n            while (uin != null) {\r\n                newInputList.push(uin);\r\n                uin = uin.VisualParentNode;\r\n            }\r\n            this._CapturedInputList = newInputList;\r\n            this._PendingCapture = null;\r\n        }\r\n        private _PerformReleaseCapture() {\r\n            var oldCaptured = this._Captured;\r\n            this._Captured = null;\r\n            this._PendingReleaseCapture = false;\r\n            oldCaptured._EmitLostMouseCapture(this._CurrentPos);\r\n            //force \"MouseEnter\" on any new elements\r\n            this.HandleMouseEvent(Input.MouseInputType.NoOp, null, this._CurrentPos, undefined, false, true);\r\n        }\r\n    }\r\n\r\n    interface ICommonElementIndices {\r\n        Index1: number;\r\n        Index2: number;\r\n    }\r\n    function findFirstCommonElement(list1: Fayde.UINode[], list2: Fayde.UINode[], outObj: ICommonElementIndices) {\r\n        var i = list1.length - 1;\r\n        var j = list2.length - 1;\r\n        outObj.Index1 = -1;\r\n        outObj.Index2 = -1;\r\n        while (i >= 0 && j >= 0) {\r\n            if (list1[i] !== list2[j])\r\n                return;\r\n            outObj.Index1 = i--;\r\n            outObj.Index2 = j--;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Engine/Inspection.ts",
    "content": "module Fayde.Engine {\r\n    export class Inspection {\r\n        //Ctrl+Right Click to show context menu\r\n        static TryHandle(type: Input.MouseInputType, isLeftButton: boolean, isRightButton: boolean, args: Input.MouseEventArgs, htlist: UINode[]): boolean {\r\n            if (!Fayde.IsInspectionOn)\r\n                return false;\r\n            if (type !== Input.MouseInputType.MouseDown)\r\n                return false;\r\n            if (!isRightButton)\r\n                return false;\r\n            if (!Input.Keyboard.HasControl())\r\n                return false;\r\n            var pos = args.AbsolutePos;\r\n            showMenu(pos, htlist);\r\n            return true;\r\n        }\r\n        static Kill() {\r\n            if (menu)\r\n                menu.style.display = \"none\";\r\n        }\r\n    }\r\n    \r\n    var menu: HTMLDivElement = null;\r\n    function showMenu(pos: Point, htlist: UINode[]) {\r\n        menu = menu || createMenu();\r\n        fillMenu(htlist);\r\n        menu.style.left = pos.x.toString() + \"px\";\r\n        menu.style.top = pos.y.toString() + \"px\";\r\n        menu.style.display = \"\";\r\n    }\r\n    function createMenu(): HTMLDivElement {\r\n        var m = document.createElement(\"div\");\r\n        m.style.position = \"absolute\";\r\n        m.style.display = \"none\";\r\n        m.style.backgroundColor = \"rgba(128,128,128,1.0)\";\r\n        m.style.padding = \"5px\";\r\n        m.style.fontFamily = \"Tahoma\";\r\n        m.oncontextmenu = () => false;\r\n        document.body.appendChild(m);\r\n        return m;\r\n    }\r\n    function fillMenu(htlist: UINode[]) {\r\n        menu.innerHTML = \"\";\r\n        var len = htlist.length;\r\n        for (var i = 0; i < len; i++) {\r\n            menu.appendChild(createMenuItem(htlist[i]));\r\n        }\r\n    }\r\n    function createMenuItem(cur: UINode) {\r\n        var miDiv = document.createElement(\"div\");\r\n        miDiv.style.cursor = \"pointer\";\r\n        miDiv.innerHTML = serializeUINode(cur);\r\n        miDiv.onclick = () => handleMenuItemClick(cur);\r\n        miDiv.onmouseenter = () => handleMenuItemEnter(miDiv);\r\n        miDiv.onmouseleave = () => handleMenuItemLeave(miDiv);\r\n        return miDiv;\r\n    }\r\n    function serializeUINode(uin: UINode): string {\r\n        var cur = uin.XObject;\r\n\r\n        var str = \"\";\r\n\r\n        var id = (<any>cur)._ID;\r\n        if (id) str += \"[\" + id + \"] \";\r\n        str += (<any>cur).constructor.name;\r\n        \r\n        var name = uin.Name;\r\n        if (name) {\r\n            str += \" [\";\r\n            var ns = uin.NameScope;\r\n            if (!ns)\r\n                str += \"^\";\r\n            else if (ns.IsRoot)\r\n                str += \"+\";\r\n            else\r\n                str += \"-\";\r\n            str += name + \"]\";\r\n        }\r\n\r\n        return str;\r\n    }\r\n    function handleMenuItemClick(uin: UINode) {\r\n        menu.style.display = \"none\";\r\n    }\r\n    function handleMenuItemEnter(mi: HTMLDivElement) {\r\n        mi.style.textDecoration = \"underline\";\r\n    }\r\n    function handleMenuItemLeave(mi: HTMLDivElement) {\r\n        mi.style.textDecoration = \"none\";\r\n    }\r\n}"
  },
  {
    "path": "src/Engine/Surface.ts",
    "content": "var resizeTimeout: number;\r\n\r\nmodule Fayde {\r\n    export class Surface extends minerva.engine.Surface {\r\n        App: Application;\r\n        private $$root: UIElement = null;\r\n        private $$inputMgr: Engine.InputManager;\r\n        private $$zoom: number = 1;\r\n\r\n        HitTestCallback: (inputList: Fayde.UINode[]) => void;\r\n\r\n        constructor(app: Application) {\r\n            super();\r\n            Object.defineProperty(this, \"App\", {value: app, writable: false});\r\n            this.$$inputMgr = new Engine.InputManager(this);\r\n        }\r\n\r\n        init(canvas: HTMLCanvasElement) {\r\n            super.init(canvas);\r\n\r\n            if (!this.$$updateZoom())\r\n                this.$$setScrollbars(false);\r\n            this.$$stretchCanvas();\r\n            (<any>document.body).onresize = (e) => this.$$handleResize(window.event ? <any>window.event : e);\r\n            window.onresize = (e) => this.$$handleResize(window.event ? <any>window.event : e);\r\n\r\n            this.$$inputMgr.Register(canvas);\r\n        }\r\n\r\n        Attach(uie: UIElement, root?: boolean) {\r\n            if (root === true) {\r\n                if (!(uie instanceof UIElement))\r\n                    throw new Exception(\"Unsupported top level element.\");\r\n                if (this.$$root)\r\n                    this.detachLayer(this.$$root.XamlNode.LayoutUpdater);\r\n                this.$$root = uie;\r\n            }\r\n            this.attachLayer(uie.XamlNode.LayoutUpdater, root);\r\n        }\r\n\r\n        attachLayer(layer: minerva.core.Updater, root?: boolean) {\r\n            super.attachLayer(layer, root);\r\n            var node = <UINode>layer.getAttachedValue(\"$node\");\r\n            node.SetIsLoaded(true);\r\n            node.SetIsAttached(true);\r\n        }\r\n\r\n        Detach(uie: UIElement) {\r\n            this.detachLayer(uie.XamlNode.LayoutUpdater);\r\n        }\r\n\r\n        detachLayer(layer: minerva.core.Updater) {\r\n            var node = <UINode>layer.getAttachedValue(\"$node\");\r\n            node.SetIsLoaded(false);\r\n            node.SetIsAttached(false);\r\n            super.detachLayer(layer);\r\n        }\r\n\r\n        updateLayout(): boolean {\r\n            var updated = super.updateLayout();\r\n            if (updated)\r\n                this.$$onLayoutUpdated();\r\n            return updated;\r\n        }\r\n\r\n        private $$onLayoutUpdated() {\r\n            for (var walker = this.walkLayers(); walker.step();) {\r\n                for (var subwalker = walker.current.walkDeep(); subwalker.step();) {\r\n                    var upd = subwalker.current;\r\n                    var node = upd.getAttachedValue(\"$node\");\r\n                    var xobj = node.XObject;\r\n                    xobj.LayoutUpdated.raise(xobj, null);\r\n                }\r\n            }\r\n        }\r\n\r\n        Focus(node: Controls.ControlNode, recurse?: boolean): boolean {\r\n            return this.$$inputMgr.Focus(node, recurse);\r\n        }\r\n\r\n        static HasFocus(uie: UIElement): boolean {\r\n            var uin = uie.XamlNode;\r\n            var surface = <Surface>uin.LayoutUpdater.tree.surface;\r\n            if (!surface)\r\n                return false;\r\n            var curNode = surface.$$inputMgr.FocusedNode;\r\n            while (curNode) {\r\n                if (curNode === uin)\r\n                    return true;\r\n                curNode = curNode.VisualParentNode;\r\n            }\r\n            return false;\r\n        }\r\n\r\n        static Focus(uie: Controls.Control, recurse?: boolean): boolean {\r\n            var uin = uie.XamlNode;\r\n            var surface = <Surface>uin.LayoutUpdater.tree.surface;\r\n            if (!surface)\r\n                return false;\r\n            return surface.$$inputMgr.Focus(uin, recurse);\r\n        }\r\n\r\n        static GetFocusedElement(uie: UIElement): UIElement {\r\n            var uin = uie.XamlNode;\r\n            var surface = <Surface>uin.LayoutUpdater.tree.surface;\r\n            if (!surface)\r\n                return null;\r\n            var curNode = surface.$$inputMgr.FocusedNode;\r\n            return curNode.XObject;\r\n        }\r\n\r\n        static RemoveFocusFrom(uie: UIElement): boolean {\r\n            var node = uie.XamlNode;\r\n            var surface = <Surface>node.LayoutUpdater.tree.surface;\r\n            if (!surface)\r\n                return false;\r\n            surface.$$inputMgr.OnNodeDetached(node);\r\n            return true;\r\n        }\r\n\r\n        static SetMouseCapture(uin: Fayde.UINode): boolean {\r\n            var surface = <Surface>uin.LayoutUpdater.tree.surface;\r\n            if (!surface)\r\n                return false;\r\n            return surface.$$inputMgr.SetMouseCapture(uin);\r\n        }\r\n\r\n        static ReleaseMouseCapture(uin: Fayde.UINode) {\r\n            var surface = <Surface>uin.LayoutUpdater.tree.surface;\r\n            if (!surface)\r\n                return;\r\n            surface.$$inputMgr.ReleaseMouseCapture(uin);\r\n        }\r\n\r\n        private $$handleResize(evt?: any) {\r\n            if (resizeTimeout)\r\n                clearTimeout(resizeTimeout);\r\n            resizeTimeout = setTimeout(() => {\r\n                this.$$updateZoom();\r\n                this.$$stretchCanvas();\r\n                resizeTimeout = null;\r\n            }, 15);\r\n        }\r\n\r\n        private $$stretchCanvas() {\r\n            this.resize(Math.round(window.innerWidth * this.$$zoom), Math.round(window.innerHeight * this.$$zoom));\r\n        }\r\n\r\n        private $$updateZoom(): boolean {\r\n            var oldZoom = this.$$zoom;\r\n            var newZoom = minerva.zoom.calc();\r\n            if (oldZoom === newZoom)\r\n                return false;\r\n            this.$$zoom = newZoom;\r\n            this.onZoomChanged(oldZoom, newZoom);\r\n            return true;\r\n        }\r\n\r\n        protected onZoomChanged(oldZoom: number, newZoom: number) {\r\n            this.App.SetCurrentValue(Application.ZoomFactorProperty, newZoom);\r\n            this.$$setScrollbars(newZoom > 1);\r\n            this.updateDpiRatio();\r\n        }\r\n\r\n        private $$setScrollbars(show: boolean) {\r\n            var style = document.body.style;\r\n            style.overflowY = style.overflowX = show === true ? \"\" : \"hidden\";\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Engine/Theme.ts",
    "content": "module Fayde {\r\n    export class Theme {\r\n        Name: string;\r\n        LibraryUri: Uri;\r\n        Resources: ResourceDictionary = null;\r\n\r\n        private $$loaded = false;\r\n        private $$retrieved = false;\r\n\r\n        static WarnMissing = false;\r\n\r\n        constructor(name: string, libUri: Uri) {\r\n            this.Name = name;\r\n            this.LibraryUri = libUri;\r\n        }\r\n\r\n        RetrieveAsync(): Promise<string> {\r\n            var reqUri = ThemeConfig.GetRequestUri(this.LibraryUri, this.Name);\r\n            if (!reqUri || this.$$retrieved)\r\n                return Promise.resolve(reqUri);\r\n            return Markup.Retrieve(reqUri)\r\n                .then(() => {\r\n                    this.$$retrieved = true;\r\n                    return reqUri;\r\n                });\r\n        }\r\n\r\n        LoadAsync(): Promise<Theme> {\r\n            if (this.$$loaded)\r\n                return Promise.resolve(this);\r\n            return new Promise((resolve, reject) => {\r\n                this.RetrieveAsync()\r\n                    .then(reqUri => Markup.Resolve(reqUri, this.LibraryUri))\r\n                    .then(md => {\r\n                        this.$$loaded = true;\r\n                        var rd = Markup.Load<ResourceDictionary>(null, md);\r\n                        if (!(rd instanceof ResourceDictionary))\r\n                            throw new Error(\"Theme root must be a ResourceDictionary.\");\r\n                        Object.defineProperty(this, \"Resources\", {value: rd, writable: false});\r\n                        resolve(this);\r\n                    }, err => {\r\n                        if (Theme.WarnMissing)\r\n                            console.warn(\"Failed to load Theme. [\" + this.LibraryUri + \"][\" + this.Name + \"]\", err);\r\n                        resolve(this);\r\n                    });\r\n            });\r\n        }\r\n\r\n        GetImplicitStyle(type: any): Style {\r\n            var rd = this.Resources;\r\n            if (!rd)\r\n                return undefined;\r\n            var style = <Style>rd.Get(type);\r\n            if (style instanceof Style)\r\n                return style;\r\n            return undefined;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Theme);\r\n}"
  },
  {
    "path": "src/Engine/ThemeConfig.ts",
    "content": "module Fayde {\r\n    export module ThemeConfig {\r\n        var configs = {};\r\n\r\n        var DEFAULT_TEMPLATE_URI = \"lib/<libname>/themes/<themename>.Theme.xml\";\r\n\r\n        export function GetRequestUri (uri: Uri, name: string): string {\r\n            if (Uri.isNullOrEmpty(uri))\r\n                return null;\r\n            var config = configs[uri.toString()];\r\n            if (config && config.none)\r\n                return null;\r\n            var templateUri = ((config) ? config.requestTemplateUri : null) || DEFAULT_TEMPLATE_URI;\r\n            return processTemplate(uri, name, templateUri);\r\n        }\r\n\r\n        export function OverrideRequestUri (uri: Uri, templateUri: string) {\r\n            configs[uri.toString()] = {\r\n                requestTemplateUri: templateUri\r\n            };\r\n        }\r\n\r\n        export function Set (libName: string, path: string) {\r\n            //NOTE:\r\n            //  path === undefined  --> use default\r\n            //  path === null       --> don't load theme\r\n            //  other               --> use path as template\r\n            if (!libName) {\r\n                console.warn(\"Could not configure theme. No library specified.\");\r\n                return;\r\n            }\r\n            var uri = new Uri(libName);\r\n            if (uri.scheme !== \"http\")\r\n                uri = new Uri(\"lib://\" + libName);\r\n\r\n            if (path === undefined)\r\n                configs[uri.toString()] = null;\r\n            else if (path === null)\r\n                configs[uri.toString()] = {\r\n                    none: true\r\n                };\r\n            else\r\n                configs[uri.toString()] = {\r\n                    requestTemplateUri: path\r\n                };\r\n        }\r\n\r\n        function processTemplate (uri: Uri, name: string, template: string): string {\r\n            var libName = uri.host;\r\n            var rv = template;\r\n            rv = rv.replace(\"<libname>\", libName);\r\n            rv = rv.replace(\"<themename>\", name);\r\n            return rv;\r\n        }\r\n\r\n        OverrideRequestUri(new Uri(Fayde.XMLNS), \"lib/fayde/themes/<themename>.theme.xml\");\r\n        Set(Fayde.XMLNSX, \"none\");\r\n    }\r\n}"
  },
  {
    "path": "src/Engine/ThemeManager.ts",
    "content": "module Fayde {\r\n    export interface IThemeManager {\r\n        LoadAsync(themeName: string): Promise<any>;\r\n        FindStyle(defaultStyleKey: any): Style;\r\n    }\r\n\r\n    export var DEFAULT_THEME_NAME = \"Metro\";\r\n\r\n    class ThemeManagerImpl implements IThemeManager {\r\n        private $$libs: ThemedLibrary[] = [];\r\n        private $$activeThemeName: string = null;\r\n\r\n        constructor() {\r\n            Fayde.TypeManager.libResolver.libraryCreated.on(this.$$onLibraryCreated, this);\r\n            this.$$libs.push(<ThemedLibrary><any>Fayde.CoreLibrary);\r\n        }\r\n\r\n        private $$onLibraryCreated(sender: any, args: nullstone.ILibraryCreatedEventArgs) {\r\n            var tlib = <ThemedLibrary>args.library;\r\n            (<any>tlib).$$activeThemeName = this.$$activeThemeName;\r\n            this.$$libs.push(tlib);\r\n        }\r\n\r\n        LoadAsync(themeName?: string): Promise<any> {\r\n            if (!themeName)\r\n                themeName = this.$$activeThemeName;\r\n            this.$$activeThemeName = themeName;\r\n            this.$$libs.forEach(lib => lib.setThemeName(themeName));\r\n            return Promise.all(this.$$libs\r\n                .filter(lib => lib.isLoaded)\r\n                .map(lib => lib.loadActiveTheme()));\r\n        }\r\n\r\n        FindStyle(defaultStyleKey: any): Style {\r\n            if (!defaultStyleKey)\r\n                return null;\r\n            var uri = defaultStyleKey.$$uri;\r\n            if (uri) {\r\n                var lib = this.$$findLib(uri);\r\n                if (lib && lib.activeTheme)\r\n                    return lib.activeTheme.GetImplicitStyle(defaultStyleKey);\r\n            }\r\n            return null;\r\n        }\r\n\r\n        private $$findLib(uri: string): ThemedLibrary {\r\n            for (var i = 0, libs = this.$$libs; i < libs.length; i++) {\r\n                var lib = libs[i];\r\n                if (lib.uri.toString() === uri)\r\n                    return lib;\r\n            }\r\n\r\n        }\r\n    }\r\n\r\n    export var ThemeManager: IThemeManager = new ThemeManagerImpl();\r\n}"
  },
  {
    "path": "src/Engine/ThemedLibrary.ts",
    "content": "module Fayde {\r\n    interface IThemesHash {\r\n        [name: string]: Theme;\r\n    }\r\n\r\n    export class ThemedLibrary extends nullstone.Library {\r\n        private $$themes: IThemesHash = {};\r\n        private $$activeTheme: Theme = null;\r\n        private $$activeThemeName: string = null;\r\n\r\n        get activeTheme(): Theme {\r\n            return this.$$activeTheme;\r\n        }\r\n\r\n        get isActiveThemeInvalid(): boolean {\r\n            return !this.$$activeTheme || this.$$activeTheme.Name !== this.$$activeThemeName;\r\n        }\r\n\r\n        loadAsync(): Promise<nullstone.Library> {\r\n            return Promise.resolve(this)\r\n                .tap(lib => Promise.all([\r\n                    super.loadAsync(),\r\n                    this.retrieveTheme()\r\n                ]))\r\n                .tap(() => this.ensureThemeLoaded());\r\n        }\r\n\r\n        protected retrieveTheme(): Promise<string> {\r\n            if (this.isActiveThemeInvalid || !this.$$activeThemeName)\r\n                return Promise.resolve(null);\r\n            var theme = this.getTheme(this.$$activeThemeName);\r\n            return theme.RetrieveAsync();\r\n        }\r\n\r\n        protected ensureThemeLoaded(): Promise<Theme> {\r\n            if (!this.isActiveThemeInvalid)\r\n                return Promise.resolve(this.$$activeTheme);\r\n            if (!this.$$activeThemeName)\r\n                return Promise.resolve(null);\r\n            return this.loadActiveTheme();\r\n        }\r\n\r\n        getTheme(name: string): Theme {\r\n            var theme = this.$$themes[name];\r\n            if (!theme)\r\n                theme = this.$$themes[name] = new Theme(name, this.uri);\r\n            return theme;\r\n        }\r\n\r\n        setThemeName(name: string) {\r\n            this.$$activeThemeName = name;\r\n        }\r\n\r\n        loadActiveTheme(): Promise<Theme> {\r\n            var theme = this.getTheme(this.$$activeThemeName);\r\n            return theme.LoadAsync()\r\n                .then(() => this.$$activeTheme = theme);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Engine/ThemedLibraryResolver.ts",
    "content": "/// <reference path=\"./ThemedLibrary\" />\r\n\r\nmodule Fayde {\r\n    export class ThemedLibraryResolver extends nullstone.LibraryResolver {\r\n        createLibrary(uri: string): nullstone.ILibrary {\r\n            return new ThemedLibrary(uri);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Expressions/BindingExpression.ts",
    "content": "/// <reference path=\"BindingExpressionBase.ts\" />\r\n\r\nmodule Fayde.Data {\r\n    export class BindingExpression extends BindingExpressionBase {\r\n        constructor(binding: Data.Binding) {\r\n            super(binding);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Expressions/BindingExpressionBase.ts",
    "content": "/// <reference path=\"Expression.ts\" />\r\n\r\nmodule Fayde.Data {\r\n    export class BindingExpressionBase extends Expression implements IPropertyPathWalkerListener {\r\n        //read-only properties\r\n        ParentBinding: Data.Binding;\r\n        Target: DependencyObject;\r\n        Property: DependencyProperty;\r\n\r\n        private PropertyPathWalker: PropertyPathWalker;\r\n        private _PropertyListener: Providers.IPropertyChangedListener;\r\n        private _SourceAvailableMonitor: IIsAttachedMonitor;\r\n\r\n        private _IsDataContextBound: boolean;\r\n        private _DataContext: any;\r\n        private _TwoWayLostFocusElement: UIElement = null;\r\n\r\n        private _CurrentNotifyError: Data.INotifyDataErrorInfo = null;\r\n        private _CurrentError: Validation.ValidationError = null;\r\n\r\n        get DataItem (): any {\r\n            return this.PropertyPathWalker.Source;\r\n        }\r\n\r\n        private _Cached: boolean = false;\r\n        private _CachedValue: any = undefined;\r\n\r\n        constructor (binding: Data.Binding) {\r\n            super();\r\n            if (!Object.isFrozen(binding))\r\n                Object.freeze(binding);\r\n            Object.defineProperty(this, \"ParentBinding\", {\r\n                value: binding,\r\n                writable: false\r\n            });\r\n        }\r\n\r\n        private _IsSealed = false;\r\n\r\n        Seal (owner: DependencyObject, prop: any) {\r\n            if (this._IsSealed)\r\n                return;\r\n            this._IsSealed = true;\r\n\r\n            Object.defineProperty(this, \"Target\", {\r\n                value: owner,\r\n                writable: false\r\n            });\r\n            var propd = <DependencyProperty>prop;\r\n            Object.defineProperty(this, \"Property\", {\r\n                value: propd,\r\n                writable: false\r\n            });\r\n\r\n            var binding = this.ParentBinding;\r\n            var path = binding.Path.Path;\r\n            if ((!path || path === \".\") && binding.Mode === Data.BindingMode.TwoWay)\r\n                throw new ArgumentException(\"TwoWay bindings require a non-empty Path.\");\r\n\r\n            if (binding.Mode === BindingMode.TwoWay && (owner instanceof Controls.TextBox || owner instanceof Controls.PasswordBox))\r\n                this._TwoWayLostFocusElement = <UIElement>owner;\r\n\r\n            this._IsDataContextBound = !binding.ElementName && !binding.Source && !binding.RelativeSource;\r\n\r\n            var bindsToView = propd === DependencyObject.DataContextProperty || propd.GetTargetType() === <any>nullstone.IEnumerable_ || propd.GetTargetType() === <any>Data.ICollectionView_;\r\n            var walker = this.PropertyPathWalker = new PropertyPathWalker(binding.Path.ParsePath, binding.BindsDirectlyToSource, bindsToView, this._IsDataContextBound);\r\n            if (binding.Mode !== BindingMode.OneTime)\r\n                walker.Listen(this);\r\n        }\r\n\r\n        OnAttached (element: DependencyObject) {\r\n            if (this.IsAttached)\r\n                return;\r\n            if (this.Target && this.Target !== element)\r\n                throw new Error(\"Cannot attach BindingExpression to another DependencyObject.\");\r\n            if (Fayde.Data.Debug && window.console)\r\n                console.log(\"[BINDING] OnAttached: [\" + (<any>element).constructor.name + \"] {Path=\" + this.ParentBinding.Path.Path + \"}\");\r\n\r\n            super.OnAttached(element);\r\n\r\n            this._SourceAvailableMonitor = this.Target.XamlNode.MonitorIsAttached((newIsAttached) => this._OnSourceAvailable());\r\n            var source = this._FindSource();\r\n            this.PropertyPathWalker.Update(source);\r\n\r\n            if (this._TwoWayLostFocusElement)\r\n                this._TwoWayLostFocusElement.LostFocus.on(this._TargetLostFocus, this);\r\n\r\n            if (this.ParentBinding.Mode === BindingMode.TwoWay && this.Property.IsCustom) {\r\n                this._PropertyListener = this.Property.Store.ListenToChanged(this.Target, this.Property, this._UpdateSourceCallback, this);\r\n            }\r\n        }\r\n\r\n        GetValue (propd: DependencyProperty): any {\r\n            if (this._Cached)\r\n                return this._CachedValue;\r\n\r\n            if (this.PropertyPathWalker.IsPathBroken) {\r\n                var target = this.Target;\r\n                if (Data.WarnBrokenPath && target && target.XamlNode.IsAttached) {\r\n                    var fe: FrameworkElement = target instanceof FrameworkElement ? <FrameworkElement>target : null;\r\n                    if (!fe || fe.XamlNode.IsLoaded)\r\n                        console.warn(\"[BINDING] Path Broken --> Path='\" + this.PropertyPathWalker.Path + \"'\");\r\n                }\r\n                this._CachedValue = null;\r\n            } else {\r\n                this._CachedValue = this.PropertyPathWalker.ValueInternal;\r\n            }\r\n\r\n            this._CachedValue = this._ConvertToType(propd, this._CachedValue);\r\n            this._Cached = true;\r\n            return this._CachedValue;\r\n        }\r\n\r\n        private _OnSourceAvailable () {\r\n            this._SourceAvailableMonitor.Detach();\r\n            var source = this._FindSource();\r\n            if (source) this.PropertyPathWalker.Update(source);\r\n            this._Invalidate();\r\n            this.Target.SetValue(this.Property, this);\r\n        }\r\n\r\n        private _FindSource (): any {\r\n            if (this.ParentBinding.Source) {\r\n                return this.ParentBinding.Source;\r\n            } else if (this.ParentBinding.ElementName != null) {\r\n                return this._FindSourceByElementName();\r\n            } else if (this.ParentBinding.RelativeSource) {\r\n                return this.ParentBinding.RelativeSource.Find(this.Target);\r\n            }\r\n            return this._DataContext;\r\n        }\r\n\r\n        private _FindSourceByElementName (): XamlObject {\r\n            var name = this.ParentBinding.ElementName;\r\n            var xobj: XamlObject = this.Target;\r\n            if (!xobj)\r\n                return undefined;\r\n            var source = xobj.FindName(name, true);\r\n            if (source)\r\n                return source;\r\n            //TODO: Crawl out of ListBoxItem?\r\n            return undefined;\r\n        }\r\n\r\n        OnDetached (element: DependencyObject) {\r\n            if (!this.IsAttached)\r\n                return;\r\n            if (Fayde.Data.Debug && window.console)\r\n                console.log(\"[BINDING] OnDetached: [\" + (<any>element).constructor.name + \"] {Path=\" + this.ParentBinding.Path.Path + \"}\");\r\n\r\n            super.OnDetached(element);\r\n\r\n            if (this._TwoWayLostFocusElement)\r\n                this._TwoWayLostFocusElement.LostFocus.off(this._TargetLostFocus, this);\r\n\r\n            if (this._CurrentError != null) {\r\n                var fe = getMentor(element);\r\n                if (fe)\r\n                    Validation.RemoveError(fe, this._CurrentError);\r\n                this._CurrentError = null;\r\n            }\r\n\r\n            if (this._PropertyListener) {\r\n                this._PropertyListener.Detach();\r\n                this._PropertyListener = null;\r\n            }\r\n\r\n            this.PropertyPathWalker.Update(null);\r\n\r\n            this.Target = undefined;\r\n        }\r\n\r\n        IsBrokenChanged () {\r\n            this.Refresh();\r\n        }\r\n\r\n        ValueChanged () {\r\n            this.Refresh();\r\n        }\r\n\r\n        UpdateSource () {\r\n            return this._UpdateSourceObject();\r\n        }\r\n\r\n        _TryUpdateSourceObject (value: any) {\r\n            if (this._ShouldUpdateSource())\r\n                this._UpdateSourceObject(value);\r\n        }\r\n\r\n        private _UpdateSourceCallback (sender, args: IDependencyPropertyChangedEventArgs) {\r\n            try {\r\n                if (this._ShouldUpdateSource())\r\n                    this._UpdateSourceObject(this.Target.GetValue(this.Property));\r\n            } catch (err) {\r\n                console.warn(\"[BINDING] UpdateSource: \" + err.toString());\r\n            }\r\n        }\r\n\r\n        private _TargetLostFocus (sender: any, e: nullstone.IEventArgs) {\r\n            if (this.ParentBinding.UpdateSourceTrigger === UpdateSourceTrigger.Explicit)\r\n                return;\r\n            this._UpdateSourceObject();\r\n        }\r\n\r\n        private _ShouldUpdateSource () {\r\n            if (this.IsUpdating)\r\n                return false;\r\n            if (!this._TwoWayLostFocusElement)\r\n                return this.ParentBinding.UpdateSourceTrigger !== UpdateSourceTrigger.Explicit;\r\n            return this.ParentBinding.UpdateSourceTrigger === UpdateSourceTrigger.PropertyChanged;\r\n        }\r\n\r\n        private _UpdateSourceObject (value?: any) {\r\n            if (value === undefined)\r\n                value = this.Target.GetValue(this.Property);\r\n            var binding = this.ParentBinding;\r\n            if (binding.Mode !== BindingMode.TwoWay)\r\n                return;\r\n\r\n            var dataError: string = null;\r\n            var exception: Exception;\r\n            var oldUpdating = this.IsUpdating;\r\n            var walker = this.PropertyPathWalker;\r\n            var node = this.PropertyPathWalker.FinalNode;\r\n\r\n            try {\r\n                if (this.PropertyPathWalker.IsPathBroken)\r\n                    return;\r\n                value = this._ConvertFromTargetToSource(binding, node, value);\r\n                if (this._CachedValue === undefined && value === undefined)\r\n                    return;\r\n\r\n                this.IsUpdating = true;\r\n                node.SetValue(value);\r\n                this._CachedValue = value;\r\n            } catch (err) {\r\n                if (binding.ValidatesOnExceptions) {\r\n                    if (err instanceof TargetInvocationException)\r\n                        exception = err.InnerException;\r\n                    exception = err;\r\n                }\r\n            } finally {\r\n                this.IsUpdating = oldUpdating;\r\n                if (binding.ValidatesOnDataErrors && !exception) {\r\n                    dataError = getDataError(walker);\r\n                }\r\n            }\r\n\r\n            if (binding.ValidatesOnExceptions)\r\n                this._MaybeEmitError(null, exception);\r\n            else if (binding.ValidatesOnDataErrors)\r\n                this._MaybeEmitError(dataError, exception);\r\n        }\r\n\r\n        OnDataContextChanged (newDataContext: any) {\r\n            if (Fayde.Data.Debug && window.console)\r\n                console.log(\"[BINDING] DataContextChanged: [\" + (<any>this.Target)._ID + \":\" + (<any>this.Target).constructor.name + \"] {Path=\" + this.ParentBinding.Path.Path + \"}\");\r\n\r\n            if (this._DataContext === newDataContext)\r\n                return;\r\n            this._DataContext = newDataContext;\r\n            if (!this._IsDataContextBound)\r\n                return;\r\n\r\n            if (Fayde.Data.IsCounterEnabled)\r\n                Fayde.Data.DataContextCounter++;\r\n            try {\r\n                this.PropertyPathWalker.Update(newDataContext);\r\n                if (this.ParentBinding.Mode === BindingMode.OneTime)\r\n                    this.Refresh();\r\n            } catch (err) {\r\n                console.warn(\"[BINDING] DataContextChanged Error: \" + err.message);\r\n            }\r\n        }\r\n\r\n        private _Invalidate () {\r\n            this._Cached = false;\r\n            this._CachedValue = undefined;\r\n        }\r\n\r\n        Refresh () {\r\n            var dataError: string = null;\r\n            var exception: Exception;\r\n\r\n            if (!this.IsAttached)\r\n                return;\r\n\r\n            var walker = this.PropertyPathWalker;\r\n            this._AttachToNotifyError(walker.FinalNode.GetSource());\r\n\r\n            var binding = this.ParentBinding;\r\n            if (!this.IsUpdating && binding.ValidatesOnDataErrors)\r\n                dataError = getDataError(walker);\r\n\r\n            var oldUpdating = this.IsUpdating;\r\n            try {\r\n                this.IsUpdating = true;\r\n                this._Invalidate();\r\n                this.Target.SetValue(this.Property, this);\r\n            } catch (err) {\r\n                if (binding.ValidatesOnExceptions) {\r\n                    exception = err;\r\n                    if (exception instanceof TargetInvocationException)\r\n                        exception = (<TargetInvocationException>exception).InnerException;\r\n                } else {\r\n                    console.warn(err);\r\n                }\r\n            } finally {\r\n                this.IsUpdating = oldUpdating;\r\n            }\r\n\r\n            if (binding.ValidatesOnExceptions)\r\n                this._MaybeEmitError(null, exception);\r\n            else if (binding.ValidatesOnDataErrors)\r\n                this._MaybeEmitError(dataError, exception);\r\n        }\r\n\r\n        private _ConvertFromTargetToSource (binding: Data.Binding, node: IPropertyPathNode, value: any): any {\r\n            if (binding.TargetNullValue && binding.TargetNullValue === value)\r\n                value = null;\r\n\r\n            var converter = binding.Converter;\r\n            if (converter) {\r\n                value = converter.ConvertBack(value, node.ValueType, binding.ConverterParameter, binding.ConverterCulture);\r\n            }\r\n\r\n            //TODO: attempt to parse string for target type\r\n            // We don't have a target type for plain objects\r\n            //if (value instanceof String) { }\r\n\r\n            return value;\r\n        }\r\n\r\n        private _ConvertToType (propd: DependencyProperty, value: any): any {\r\n            var targetType = this.Property.GetTargetType();\r\n            try {\r\n                var binding = this.ParentBinding;\r\n                if (!this.PropertyPathWalker.IsPathBroken && binding.Converter) {\r\n                    value = binding.Converter.Convert(value, targetType, binding.ConverterParameter, binding.ConverterCulture);\r\n                }\r\n                if (value === DependencyProperty.UnsetValue || this.PropertyPathWalker.IsPathBroken) {\r\n                    value = binding.FallbackValue;\r\n                    if (value === undefined)\r\n                        value = propd.DefaultValue;\r\n                } else if (value == null) {\r\n                    value = binding.TargetNullValue;\r\n                    if (value == null && this._IsDataContextBound && !binding.Path.Path)\r\n                        value = propd.DefaultValue;\r\n                } else {\r\n                    var format = binding.StringFormat;\r\n                    if (format) {\r\n                        if (format.indexOf(\"{0\") < 0)\r\n                            format = \"{0:\" + format + \"}\";\r\n                        value = Localization.Format(format, value);\r\n                    }\r\n                }\r\n            } catch (err) {\r\n                console.warn(\"[BINDING]\" + err.toString());\r\n                value = binding.FallbackValue;\r\n            }\r\n            return nullstone.convertAnyToType(value, <Function>targetType);\r\n        }\r\n\r\n        private _MaybeEmitError (message: string, exception: Exception) {\r\n            var fe = getMentor(this.Target);\r\n            if (!fe)\r\n                return;\r\n\r\n            var error = (exception instanceof Exception || exception instanceof Error) ? exception : null;\r\n            if (message === \"\")\r\n                message = null;\r\n\r\n            var oldError = this._CurrentError;\r\n            if (message != null)\r\n                this._CurrentError = new Validation.ValidationError(message, null, this.PropertyPathWalker.FinalPropertyName);\r\n            else if (error)\r\n                this._CurrentError = new Validation.ValidationError(null, error, this.PropertyPathWalker.FinalPropertyName);\r\n            else\r\n                this._CurrentError = null;\r\n\r\n            Validation.Emit(fe, this.ParentBinding, oldError, this._CurrentError);\r\n        }\r\n\r\n        private _AttachToNotifyError (element: Data.INotifyDataErrorInfo) {\r\n            if (!Data.INotifyDataErrorInfo_.is(element))\r\n                return;\r\n            if (element === this._CurrentNotifyError || !this.ParentBinding.ValidatesOnNotifyDataErrors)\r\n                return;\r\n\r\n            var property = this.PropertyPathWalker.FinalPropertyName;\r\n            if (this._CurrentNotifyError) {\r\n                this._CurrentNotifyError.ErrorsChanged.off(this._NotifyErrorsChanged, this);\r\n                this._MaybeEmitError(null, null);\r\n            }\r\n\r\n            this._CurrentNotifyError = element;\r\n\r\n            if (element) {\r\n                element.ErrorsChanged.on(this._NotifyErrorsChanged, this);\r\n                if (element.HasErrors) {\r\n                    var enu = element.GetErrors(property);\r\n                    if (enu) {\r\n                        for (var en = enu.getEnumerator(); en.moveNext();) {\r\n                            this._MaybeEmitError(en.current, en.current);\r\n                        }\r\n                    }\r\n                } else {\r\n                    this._MaybeEmitError(null, null);\r\n                }\r\n            }\r\n        }\r\n\r\n        private _NotifyErrorsChanged (sender: any, e: Data.DataErrorsChangedEventArgs) {\r\n            var property = this.PropertyPathWalker.FinalPropertyName;\r\n            if (e.PropertyName !== property)\r\n                return;\r\n            var errors = this._CurrentNotifyError ? this._CurrentNotifyError.GetErrors(property) : null;\r\n            if (!errors) {\r\n                this._MaybeEmitError(null, null);\r\n                return;\r\n            }\r\n\r\n            var arr = nullstone.IEnumerable_.toArray(errors);\r\n            if (arr.length <= 0) {\r\n                this._MaybeEmitError(null, null);\r\n                return;\r\n            }\r\n\r\n            for (var i = 0; i < arr.length; i++) {\r\n                var cur = arr[i];\r\n                this._MaybeEmitError(cur, cur);\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    function getMentor (dobj: DependencyObject): FrameworkElement {\r\n        for (var cur = <XamlObject>dobj; cur; cur = cur.Parent) {\r\n            if (cur instanceof FrameworkElement)\r\n                return <FrameworkElement>cur;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    function getDataError (walker: PropertyPathWalker): string {\r\n        var info = IDataErrorInfo_.as(walker.FinalNode.GetSource());\r\n        var name = walker.FinalPropertyName;\r\n        return (info && name) ? info.GetError(name) : null;\r\n    }\r\n}"
  },
  {
    "path": "src/Expressions/DeferredValueExpression.ts",
    "content": "/// <reference path=\"Expression.ts\" />\r\n\r\nmodule Fayde {\r\n    export class DeferredValueExpression extends Expression {\r\n        GetValue(propd: DependencyProperty): any {\r\n            return undefined;\r\n        }\r\n        toString(): string { return \"DeferredValueExpression\"; }\r\n    }\r\n}"
  },
  {
    "path": "src/Expressions/EventBindingExpression.ts",
    "content": "/// <reference path=\"Expression.ts\" />\r\n\r\nmodule Fayde {\r\n    export interface IEventBindingArgs<T extends nullstone.IEventArgs> {\r\n        sender: any;\r\n        args: T;\r\n        parameter: any;\r\n    }\r\n\r\n    export class EventBindingExpression extends Expression {\r\n        IsUpdating: boolean = false;\r\n        IsAttached: boolean = false;\r\n\r\n        private _EventBinding: Markup.EventBinding;\r\n        private _CommandWalker: Data.PropertyPathWalker = null;\r\n        private _CommandParameterWalker: Data.PropertyPathWalker = null;\r\n\r\n        private _Target: XamlObject = null;\r\n        private _Event: nullstone.Event<nullstone.IEventArgs> = null;\r\n        private _EventName: string = null;\r\n\r\n        constructor (eventBinding: Markup.EventBinding) {\r\n            super();\r\n            this._EventBinding = eventBinding;\r\n\r\n            var cb = this._EventBinding.CommandBinding;\r\n            if (cb)\r\n                this._CommandWalker = new Data.PropertyPathWalker(cb.Path.ParsePath, cb.BindsDirectlyToSource, false, !cb.ElementName && !cb.Source && !cb.RelativeSource);\r\n\r\n            var cpb = this._EventBinding.CommandParameterBinding;\r\n            if (cpb)\r\n                this._CommandParameterWalker = new Data.PropertyPathWalker(cpb.Path.ParsePath, cpb.BindsDirectlyToSource, false, !cpb.ElementName && !cpb.Source && !cpb.RelativeSource);\r\n        }\r\n\r\n        Seal (owner: DependencyObject, prop: any) {\r\n        }\r\n\r\n        Init (eventName: string) {\r\n            this._EventName = eventName;\r\n        }\r\n\r\n        GetValue (propd: DependencyProperty): any {\r\n        }\r\n\r\n        OnAttached (target: XamlObject) {\r\n            if (this.IsAttached)\r\n                return;\r\n            this.IsAttached = true;\r\n            this._Target = target;\r\n            this._Event = target[this._EventName];\r\n            if (this._Event)\r\n                this._Event.on(this._Callback, this);\r\n        }\r\n\r\n        OnDetached (target: XamlObject) {\r\n            if (!this.IsAttached)\r\n                return;\r\n            if (this._Event)\r\n                this._Event.off(this._Callback, this);\r\n            this._Event = null;\r\n            this.IsAttached = false;\r\n        }\r\n\r\n        OnDataContextChanged (newDataContext: any) {\r\n        }\r\n\r\n        private _Callback (sender: any, e: nullstone.IEventArgs) {\r\n            var target = this._Target;\r\n\r\n            var csource = findSource(target, this._EventBinding.CommandBinding);\r\n            var context = csource;\r\n            var etarget = context;\r\n            var cw = this._CommandWalker;\r\n            if (cw) {\r\n                etarget = cw.GetValue(etarget);\r\n                context = cw.GetContext();\r\n                if (context == null) context = csource;\r\n            }\r\n            if (!etarget) {\r\n                console.warn(\"[EVENTBINDING]: Could not find command target for event '\" + this._EventName + \"'.\");\r\n                return;\r\n            }\r\n\r\n            var cargs = {\r\n                sender: sender,\r\n                args: e,\r\n                parameter: null\r\n            };\r\n\r\n            var cpb = this._EventBinding.CommandParameterBinding;\r\n            if (cpb) {\r\n                var cpw = this._CommandParameterWalker;\r\n                var cpsource = findSource(target, cpb);\r\n                cargs.parameter = cpw.GetValue(cpsource);\r\n            }\r\n\r\n\r\n            if (typeof etarget === \"function\") {\r\n                (<Function>etarget).call(context, cargs);\r\n            } else {\r\n                var ecmd = Fayde.Input.ICommand_.as(etarget);\r\n                if (!ecmd) {\r\n                    console.warn(\"[EVENTBINDING]: Could not find command target for event '\" + this._EventName + \"'.\");\r\n                    return;\r\n                }\r\n                ecmd = <Fayde.Input.ICommand>etarget;\r\n                if (ecmd.CanExecute.call(context, cargs))\r\n                    ecmd.Execute.call(context, cargs);\r\n            }\r\n        }\r\n    }\r\n\r\n    function findSource (target: XamlObject, binding: Data.Binding): any {\r\n        if (binding) {\r\n            if (binding.Source)\r\n                return binding.Source;\r\n\r\n            if (binding.ElementName != null)\r\n                return findSourceByElementName(target, binding.ElementName);\r\n\r\n            if (binding.RelativeSource) {\r\n                return binding.RelativeSource.Find(target);\r\n            }\r\n        }\r\n        return target.XamlNode.DataContext;\r\n    }\r\n\r\n    function findSourceByElementName (target: XamlObject, name: string): XamlObject {\r\n        var xobj: XamlObject = target;\r\n        if (!xobj)\r\n            return undefined;\r\n        var source = xobj.FindName(name, true);\r\n        if (source)\r\n            return source;\r\n        //TODO: Crawl out of ListBoxItem?\r\n        return undefined;\r\n    }\r\n}"
  },
  {
    "path": "src/Expressions/Expression.ts",
    "content": "module Fayde {\r\n    export class Expression {\r\n        IsUpdating: boolean = false;\r\n        IsAttached: boolean = false;\r\n\r\n        Seal (owner: DependencyObject, prop: any) {\r\n        }\r\n\r\n        OnAttached (target: XamlObject) {\r\n            this.IsAttached = true;\r\n            this.OnDataContextChanged(target.XamlNode.DataContext);\r\n        }\r\n\r\n        OnDetached (target: XamlObject) {\r\n            this.IsAttached = false;\r\n            this.OnDataContextChanged(undefined);\r\n        }\r\n\r\n        GetValue (propd: DependencyProperty): any {\r\n        }\r\n\r\n        OnDataContextChanged (newDataContext: any) {\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Expressions/TemplateBindingExpression.ts",
    "content": "/// <reference path=\"Expression.ts\" />\r\n\r\nmodule Fayde {\r\n    export class TemplateBindingExpression extends Expression {\r\n        private _Target: DependencyObject;\r\n        private _Listener: Providers.IPropertyChangedListener;\r\n        private _SourcePropertyName: string;\r\n        private _IsSealed = false;\r\n        SourceProperty: DependencyProperty;\r\n        TargetProperty: DependencyProperty;\r\n\r\n        constructor (sourceProperty: string) {\r\n            super();\r\n            this._SourcePropertyName = sourceProperty;\r\n        }\r\n\r\n        Seal (owner: DependencyObject, prop: any) {\r\n            if (this._IsSealed)\r\n                return;\r\n            this._IsSealed = true;\r\n            var to = owner.TemplateOwner;\r\n            if (!(to instanceof DependencyObject))\r\n                throw new Error(\"TemplateBinding must be applied to a DependencyObject within a template.\");\r\n            this.SourceProperty = DependencyProperty.GetDependencyProperty((<any>to).constructor, this._SourcePropertyName);\r\n            this.TargetProperty = <DependencyProperty>prop;\r\n        }\r\n\r\n        GetValue (propd: DependencyProperty) {\r\n            var target = this._Target;\r\n            var source = target.TemplateOwner;\r\n            var value;\r\n            if (source)\r\n                value = source.GetValue(this.SourceProperty);\r\n            //NOTE: Do we need to handle string conversion?\r\n            value = nullstone.convertAnyToType(value, <Function>this.TargetProperty.GetTargetType());\r\n            return value;\r\n        }\r\n\r\n        OnAttached (dobj: DependencyObject) {\r\n            super.OnAttached(dobj);\r\n\r\n            this._Target = dobj;\r\n            this._DetachListener();\r\n\r\n            var cc: Controls.ContentControl;\r\n            if (this._Target instanceof Controls.ContentControl)\r\n                cc = <Controls.ContentControl>this._Target;\r\n\r\n            this._AttachListener();\r\n        }\r\n\r\n        OnDetached (dobj: DependencyObject) {\r\n            super.OnDetached(dobj);\r\n\r\n            var listener = this._Listener;\r\n            if (!listener)\r\n                return;\r\n\r\n            var cc: Controls.ContentControl;\r\n            if (this._Target instanceof Controls.ContentControl)\r\n                cc = <Controls.ContentControl>this._Target;\r\n\r\n            this._DetachListener();\r\n            this._Target = null;\r\n        }\r\n\r\n        OnSourcePropertyChanged (sender: DependencyObject, args: IDependencyPropertyChangedEventArgs) {\r\n            if (this.SourceProperty._ID !== args.Property._ID)\r\n                return;\r\n            try {\r\n                // Type converting doesn't happen for TemplateBindings\r\n                this.IsUpdating = true;\r\n                var targetProp = this.TargetProperty;\r\n                try {\r\n                    this._Target.SetCurrentValue(targetProp, this.GetValue(null));\r\n                } catch (err2) {\r\n                    var val = targetProp.DefaultValue;\r\n                    this._Target.SetCurrentValue(targetProp, val);\r\n                }\r\n            } catch (err) {\r\n\r\n            } finally {\r\n                this.IsUpdating = false;\r\n            }\r\n        }\r\n\r\n        private _AttachListener () {\r\n            var source = this._Target.TemplateOwner;\r\n            if (!source)\r\n                return;\r\n            this._Listener = this.SourceProperty.Store.ListenToChanged(source, this.SourceProperty, (sender, args) => this.OnSourcePropertyChanged(sender, args), this);\r\n        }\r\n\r\n        private _DetachListener () {\r\n            var listener = this._Listener;\r\n            if (listener) {\r\n                this._Listener.Detach();\r\n                this._Listener = null;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Input/ICommand.ts",
    "content": "module Fayde.Input {\r\n    export interface ICommand {\r\n        Execute(parameter: any);\r\n        CanExecute(parameter: any): boolean;\r\n        CanExecuteChanged: nullstone.Event<nullstone.IEventArgs>;\r\n    }\r\n    export var ICommand_ = new nullstone.Interface<ICommand>(\"ICommand\");\r\n}"
  },
  {
    "path": "src/Input/InteractionHelper.ts",
    "content": "\r\nmodule Fayde.Input {\r\n    export module InteractionHelper {\r\n        export function GetLogicalKey(flowDirection: FlowDirection, key: Key): Key {\r\n            if (flowDirection !== FlowDirection.RightToLeft)\r\n                return key;\r\n            switch (key) {\r\n                case Key.Left:\r\n                    return Key.Right;\r\n                case Key.Right:\r\n                    return Key.Left;\r\n                default:\r\n                    return key;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Input/KeyEventArgs.ts",
    "content": "/// <reference path=\"../Core/RoutedEventArgs.ts\" />\r\n\r\nmodule Fayde.Input {\r\n    export enum Key {\r\n        //     A special value indicating no key.\r\n        None = 0,\r\n        //     The BACKSPACE key.\r\n        Back = 1,\r\n        //     The TAB key.\r\n        Tab = 2,\r\n        //     The ENTER key.\r\n        Enter = 3,\r\n        //     The SHIFT key.\r\n        Shift = 4,\r\n        //     The CTRL (control) key.\r\n        Ctrl = 5,\r\n        //     The ALT key.\r\n        Alt = 6,\r\n        //     The CAPSLOCK key.\r\n        CapsLock = 7,\r\n        //     The ESC (also known as ESCAPE) key.\r\n        Escape = 8,\r\n        //     The SPACE key.\r\n        Space = 9,\r\n        //     The PAGEUP key.\r\n        PageUp = 10,\r\n        //     The PAGEDOWN key.\r\n        PageDown = 11,\r\n        //     The END key.\r\n        End = 12,\r\n        //     The HOME key.\r\n        Home = 13,\r\n        //     The left arrow key.\r\n        Left = 14,\r\n        //     The up arrow key.\r\n        Up = 15,\r\n        //     The right arrow key.\r\n        Right = 16,\r\n        //     The down arrow key.\r\n        Down = 17,\r\n        //     The INSERT key.\r\n        Insert = 18,\r\n        //     The DEL (also known as DELETE) key.\r\n        Delete = 19,\r\n        //     The 0 (zero) key.\r\n        D0 = 20,\r\n        //     The 1 key.\r\n        D1 = 21,\r\n        //     The 2 key.\r\n        D2 = 22,\r\n        //     The 3 key.\r\n        D3 = 23,\r\n        //     The 4 key.\r\n        D4 = 24,\r\n        //     The 5 key.\r\n        D5 = 25,\r\n        //     The 6 key.\r\n        D6 = 26,\r\n        //     The 7 key.\r\n        D7 = 27,\r\n        //     The 8 key.\r\n        D8 = 28,\r\n        //     The 9 key.\r\n        D9 = 29,\r\n        //     The A key.\r\n        A = 30,\r\n        //     The B key.\r\n        B = 31,\r\n        //     The C key.\r\n        C = 32,\r\n        //     The D key.\r\n        D = 33,\r\n        //     The E key.\r\n        E = 34,\r\n        //     The F key.\r\n        F = 35,\r\n        //     The G key.\r\n        G = 36,\r\n        //     The H key.\r\n        H = 37,\r\n        //     The I key.\r\n        I = 38,\r\n        //     The J key.\r\n        J = 39,\r\n        //     The K key.\r\n        K = 40,\r\n        //     The L key.\r\n        L = 41,\r\n        //     The M key.\r\n        M = 42,\r\n        //     The N key.\r\n        N = 43,\r\n        //     The O key.\r\n        O = 44,\r\n        //     The P key.\r\n        P = 45,\r\n        //     The Q key.\r\n        Q = 46,\r\n        //     The R key.\r\n        R = 47,\r\n        //     The S key.\r\n        S = 48,\r\n        //     The T key.\r\n        T = 49,\r\n        //     The U key.\r\n        U = 50,\r\n        //     The V key.\r\n        V = 51,\r\n        //     The W key.\r\n        W = 52,\r\n        //     The X key.\r\n        X = 53,\r\n        //     The Y key.\r\n        Y = 54,\r\n        //     The Z key.\r\n        Z = 55,\r\n        //     The F1 key.\r\n        F1 = 56,\r\n        //     The F2 key.\r\n        F2 = 57,\r\n        //     The F3 key.\r\n        F3 = 58,\r\n        //     The F4 key.\r\n        F4 = 59,\r\n        //     The F5 key.\r\n        F5 = 60,\r\n        //     The F6 key.\r\n        F6 = 61,\r\n        //     The F7 key.\r\n        F7 = 62,\r\n        //     The F8 key.\r\n        F8 = 63,\r\n        //     The F9 key.\r\n        F9 = 64,\r\n        //     The F10 key.\r\n        F10 = 65,\r\n        //     The F11 key.\r\n        F11 = 66,\r\n        //     The F12 key.\r\n        F12 = 67,\r\n        //     The 0 key on the number pad.\r\n        NumPad0 = 68,\r\n        //     The 1 key on the number pad.\r\n        NumPad1 = 69,\r\n        //     The 2 key on the number pad.\r\n        NumPad2 = 70,\r\n        //     The 3 key on the number pad.\r\n        NumPad3 = 71,\r\n        //     The 4 key on the number pad.\r\n        NumPad4 = 72,\r\n        //     The 5 key on the number pad.\r\n        NumPad5 = 73,\r\n        //     The 6 key on the number pad.\r\n        NumPad6 = 74,\r\n        //     The 7 key on the number pad.\r\n        NumPad7 = 75,\r\n        //     The 8 key on the number pad.\r\n        NumPad8 = 76,\r\n        //     The 9 key on the number pad.\r\n        NumPad9 = 77,\r\n        //     The * (MULTIPLY) key.\r\n        Multiply = 78,\r\n        //     The + (ADD) key.\r\n        Add = 79,\r\n        //     The - (SUBTRACT) key.\r\n        Subtract = 80,\r\n        //     The . (DECIMAL) key.\r\n        Decimal = 81,\r\n        //     The / (DIVIDE) key.\r\n        Divide = 82,\r\n        //     A special value indicating the key is out of range of this enumeration.\r\n        Unknown = 255,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(Key, \"Key\");\r\n\r\n    export class KeyboardEventArgs extends RoutedEventArgs {\r\n    }\r\n    Fayde.CoreLibrary.add(KeyboardEventArgs);\r\n\r\n    ///Modifers = { Shift: <boolean>, Ctrl: <boolean>, Alt: <boolean> }\r\n    export class KeyEventArgs extends KeyboardEventArgs {\r\n        Modifiers: IModifiersOn;\r\n        PlatformKeyCode: number;\r\n        Key: Key;\r\n        Char: string;\r\n        constructor(modifiers: IModifiersOn, keyCode: number, key: Key, c?: string) {\r\n            super();\r\n            this.Modifiers = modifiers;\r\n            this.PlatformKeyCode = keyCode;\r\n            this.Key = key;\r\n            if (this.Key == null)\r\n                this.Key = Key.Unknown;\r\n            this.Char = c;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(KeyEventArgs);\r\n}"
  },
  {
    "path": "src/Input/KeyInterop.ts",
    "content": "/// <reference path=\"KeyEventArgs.ts\" />\r\n\r\n\r\n// Good Resource: http://unixpapa.com/js/key.html\r\n\r\nmodule Fayde.Input {\r\n    export interface IKeyInterop {\r\n        RegisterEvents(inputHandler: Engine.InputManager);\r\n    }\r\n    export function CreateKeyInterop(): IKeyInterop {\r\n        //Figure out which KeyInterop\r\n        if (navigator.appName === \"Microsoft Internet Explorer\")\r\n            return new IEKeyInterop();\r\n        if (navigator.appName === \"Netscape\") {\r\n            if (!!navigator.userAgent.match(/Trident\\//)) //IE11 masquerading as Netscape\r\n                return new IEKeyInterop();\r\n            return new NetscapeKeyInterop();\r\n        }\r\n        return new KeyInterop();\r\n    }\r\n\r\n    var keyFromKeyCode: Key[] = [];\r\n    keyFromKeyCode[8] = Key.Back;\r\n    keyFromKeyCode[9] = Key.Tab;\r\n    keyFromKeyCode[13] = Key.Enter;\r\n    keyFromKeyCode[16] = Key.Shift;\r\n    keyFromKeyCode[17] = Key.Ctrl;\r\n    keyFromKeyCode[18] = Key.Alt;\r\n    //keyFromKeyCode[19] = Key.Pause/Break;\r\n    keyFromKeyCode[20] = Key.CapsLock;\r\n    keyFromKeyCode[27] = Key.Escape;\r\n    keyFromKeyCode[32] = Key.Space;\r\n    keyFromKeyCode[33] = Key.PageUp;\r\n    keyFromKeyCode[34] = Key.PageDown;\r\n    keyFromKeyCode[35] = Key.End;\r\n    keyFromKeyCode[36] = Key.Home;\r\n    keyFromKeyCode[37] = Key.Left;\r\n    keyFromKeyCode[38] = Key.Up;\r\n    keyFromKeyCode[39] = Key.Right;\r\n    keyFromKeyCode[40] = Key.Down;\r\n    keyFromKeyCode[45] = Key.Insert;\r\n    keyFromKeyCode[46] = Key.Delete;\r\n    keyFromKeyCode[48] = Key.D0;\r\n    keyFromKeyCode[49] = Key.D1;\r\n    keyFromKeyCode[50] = Key.D2;\r\n    keyFromKeyCode[51] = Key.D3;\r\n    keyFromKeyCode[52] = Key.D4;\r\n    keyFromKeyCode[53] = Key.D5;\r\n    keyFromKeyCode[54] = Key.D6;\r\n    keyFromKeyCode[55] = Key.D7;\r\n    keyFromKeyCode[56] = Key.D8;\r\n    keyFromKeyCode[57] = Key.D9;\r\n    //keyFromKeyCode[59] = Key.Semicolon/Colon;\r\n    //keyFromKeyCode[61] = Key.Equals/Plus;\r\n    keyFromKeyCode[65] = Key.A;\r\n    keyFromKeyCode[66] = Key.B;\r\n    keyFromKeyCode[67] = Key.C;\r\n    keyFromKeyCode[68] = Key.D;\r\n    keyFromKeyCode[69] = Key.E;\r\n    keyFromKeyCode[70] = Key.F;\r\n    keyFromKeyCode[71] = Key.G;\r\n    keyFromKeyCode[72] = Key.H;\r\n    keyFromKeyCode[73] = Key.I;\r\n    keyFromKeyCode[74] = Key.J;\r\n    keyFromKeyCode[75] = Key.K;\r\n    keyFromKeyCode[76] = Key.L;\r\n    keyFromKeyCode[77] = Key.M;\r\n    keyFromKeyCode[78] = Key.N;\r\n    keyFromKeyCode[79] = Key.O;\r\n    keyFromKeyCode[80] = Key.P;\r\n    keyFromKeyCode[81] = Key.Q;\r\n    keyFromKeyCode[82] = Key.R;\r\n    keyFromKeyCode[83] = Key.S;\r\n    keyFromKeyCode[84] = Key.T;\r\n    keyFromKeyCode[85] = Key.U;\r\n    keyFromKeyCode[86] = Key.V;\r\n    keyFromKeyCode[87] = Key.W;\r\n    keyFromKeyCode[88] = Key.X;\r\n    keyFromKeyCode[89] = Key.Y;\r\n    keyFromKeyCode[90] = Key.Z;\r\n    //keyFromKeyCode[91] = Key.Window;\r\n    keyFromKeyCode[96] = Key.NumPad0;\r\n    keyFromKeyCode[97] = Key.NumPad1;\r\n    keyFromKeyCode[98] = Key.NumPad2;\r\n    keyFromKeyCode[99] = Key.NumPad3;\r\n    keyFromKeyCode[100] = Key.NumPad4;\r\n    keyFromKeyCode[101] = Key.NumPad5;\r\n    keyFromKeyCode[102] = Key.NumPad6;\r\n    keyFromKeyCode[103] = Key.NumPad7;\r\n    keyFromKeyCode[104] = Key.NumPad8;\r\n    keyFromKeyCode[105] = Key.NumPad9;\r\n    keyFromKeyCode[106] = Key.Multiply;\r\n    keyFromKeyCode[107] = Key.Add;\r\n    keyFromKeyCode[109] = Key.Subtract;\r\n    keyFromKeyCode[110] = Key.Decimal;\r\n    keyFromKeyCode[111] = Key.Divide;\r\n    keyFromKeyCode[112] = Key.F1;\r\n    keyFromKeyCode[113] = Key.F2;\r\n    keyFromKeyCode[114] = Key.F3;\r\n    keyFromKeyCode[115] = Key.F4;\r\n    keyFromKeyCode[116] = Key.F5;\r\n    keyFromKeyCode[117] = Key.F6;\r\n    keyFromKeyCode[118] = Key.F7;\r\n    keyFromKeyCode[119] = Key.F8;\r\n    keyFromKeyCode[120] = Key.F9;\r\n    keyFromKeyCode[121] = Key.F10;\r\n    keyFromKeyCode[122] = Key.F11;\r\n    keyFromKeyCode[123] = Key.F12;\r\n\r\n    class KeyInterop implements IKeyInterop {\r\n        RegisterEvents(input: Engine.InputManager) {\r\n            document.onkeypress = (e) => {\r\n                var args = this.CreateArgsPress(e);\r\n                if (args) {\r\n                    input.HandleKeyDown(args);\r\n                    if (args.Handled) {\r\n                        e.preventDefault();\r\n                        return false;\r\n                    }\r\n                }\r\n            };\r\n            document.onkeydown = (e) => {\r\n                var args = this.CreateArgsDown(e);\r\n                if (args) {\r\n                    input.HandleKeyDown(args);\r\n                    if (args.Handled && this.IsPreventable(args)) {\r\n                        e.preventDefault();\r\n                        return false;\r\n                    }\r\n                }\r\n            };\r\n        }\r\n\r\n        CreateArgsPress(e): Fayde.Input.KeyEventArgs {\r\n            return undefined;\r\n        }\r\n\r\n        CreateArgsDown(e): Fayde.Input.KeyEventArgs {\r\n            return undefined;\r\n        }\r\n\r\n        IsPreventable(args: KeyEventArgs): boolean {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    var udkie = [];\r\n    udkie[41] = 48;\r\n    udkie[33] = 49;\r\n    udkie[64] = 50;\r\n    udkie[35] = 51;\r\n    udkie[36] = 52;\r\n    udkie[37] = 53;\r\n    udkie[94] = 54;\r\n    udkie[38] = 55;\r\n    udkie[42] = 56;\r\n    udkie[34] = Key.Unknown;\r\n    class IEKeyInterop extends KeyInterop {\r\n        CreateArgsPress(e): KeyEventArgs {\r\n            if (!e[\"char\"])\r\n                return;\r\n\r\n            var modifiers = {\r\n                Shift: e.shiftKey,\r\n                Ctrl: e.ctrlKey,\r\n                Alt: e.altKey\r\n            };\r\n\r\n            var keyCode = e.keyCode;\r\n            var unshifted = udkie[keyCode];\r\n            if (unshifted)\r\n                keyCode = unshifted;\r\n\r\n            var args = new Fayde.Input.KeyEventArgs(modifiers, keyCode, keyFromKeyCode[keyCode], e[\"char\"]);\r\n            if (args.Key === Key.Unknown && e.key) {\r\n                args.Char = e.key;\r\n                var code = args.Char.toUpperCase().charCodeAt(0);\r\n                args.Key = keyFromKeyCode[code];\r\n                if (args.Key == null) args.Key = Key.Unknown;\r\n            }\r\n            return args;\r\n        }\r\n\r\n        CreateArgsDown(e): KeyEventArgs {\r\n            //NOTE: Ctrl+[key] does not flow through press\r\n            if (e[\"char\"] && e.keyCode !== 8 && e.keyCode !== 9 && !e.ctrlKey)\r\n                return;\r\n            var modifiers = {\r\n                Shift: e.shiftKey,\r\n                Ctrl: e.ctrlKey,\r\n                Alt: e.altKey\r\n            };\r\n            return new Fayde.Input.KeyEventArgs(modifiers, e.keyCode, keyFromKeyCode[e.keyCode]);\r\n        }\r\n    }\r\n\r\n    var sknet = [];\r\n    sknet[8] = Key.Back;\r\n    sknet[9] = Key.Tab;\r\n    sknet[20] = Key.CapsLock;\r\n    sknet[27] = Key.Escape;\r\n    sknet[33] = Key.PageUp;\r\n    sknet[34] = Key.PageDown;\r\n    sknet[35] = Key.End;\r\n    sknet[36] = Key.Home;\r\n    sknet[37] = Key.Left;\r\n    sknet[38] = Key.Up;\r\n    sknet[39] = Key.Right;\r\n    sknet[40] = Key.Down;\r\n    sknet[45] = Key.Insert;\r\n    sknet[46] = Key.Delete;\r\n\r\n    var udknet = [];\r\n    udknet[41] = 48;\r\n    udknet[33] = 49;\r\n    udknet[64] = 50;\r\n    udknet[35] = 51;\r\n    udknet[36] = 52;\r\n    udknet[37] = 53;\r\n    udknet[94] = 54;\r\n    udknet[38] = 55;\r\n    udknet[42] = 56;\r\n    udknet[34] = Key.Unknown;\r\n    class NetscapeKeyInterop extends KeyInterop {\r\n        CreateArgsPress(e): KeyEventArgs {\r\n            var modifiers = {\r\n                Shift: e.shiftKey,\r\n                Ctrl: e.ctrlKey,\r\n                Alt: e.altKey\r\n            };\r\n\r\n            var keyCode = e.keyCode;\r\n            var unshifted = udknet[keyCode];\r\n            if (unshifted)\r\n                keyCode = unshifted;\r\n\r\n            var args = new Fayde.Input.KeyEventArgs(modifiers, keyCode, keyFromKeyCode[keyCode], String.fromCharCode(e.which || e.keyCode));\r\n            if (args.Char === \"'\")\r\n                args.Key = Key.Unknown;\r\n            return args;\r\n        }\r\n\r\n        CreateArgsDown(e): KeyEventArgs {\r\n            //only do for special keys\r\n            //NOTE: Ctrl+[key] does not flow through press\r\n            if (sknet[e.keyCode] === undefined && !e.ctrlKey)\r\n                return null;\r\n\r\n            var modifiers = {\r\n                Shift: e.shiftKey,\r\n                Ctrl: e.ctrlKey,\r\n                Alt: e.altKey\r\n            };\r\n            return new Fayde.Input.KeyEventArgs(modifiers, e.keyCode, keyFromKeyCode[e.keyCode]);\r\n        }\r\n\r\n        IsPreventable(args: KeyEventArgs): boolean {\r\n            //TODO: Handle Mac keys\r\n            if (args.Modifiers.Ctrl && args.Key === Key.V) {\r\n                //Ctrl+V - don't prevent paste\r\n                return false;\r\n            }\r\n            return true;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Input/Keyboard.ts",
    "content": "module Fayde.Input {\r\n    // http://msdn.microsoft.com/en-us/library/system.windows.input.keyboardnavigationmode.aspx\r\n    export enum KeyboardNavigationMode {\r\n        Continue = 0,\r\n        Once = 1,\r\n        Cycle = 2,\r\n        None = 3,\r\n        Contained = 4,\r\n        Local = 5,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(KeyboardNavigationMode, \"KeyboardNavigationMode\");\r\n\r\n    export enum ModifierKeys {\r\n        None = 0,\r\n        Alt = 1,\r\n        Control = 2,\r\n        Shift = 4,\r\n        Windows = 8,\r\n        Apple = 16,\r\n    }\r\n\r\n    export interface IModifiersOn {\r\n        Shift: boolean;\r\n        Ctrl: boolean;\r\n        Alt: boolean;\r\n    }\r\n\r\n    export class Keyboard {\r\n        static Modifiers: ModifierKeys = ModifierKeys.None;\r\n\r\n        static RefreshModifiers(e: Fayde.Input.IModifiersOn) {\r\n            if (e.Shift)\r\n                Keyboard.Modifiers |= ModifierKeys.Shift;\r\n            else\r\n                Keyboard.Modifiers &= ~ModifierKeys.Shift;\r\n            if (e.Ctrl)\r\n                Keyboard.Modifiers |= ModifierKeys.Control;\r\n            else\r\n                Keyboard.Modifiers &= ~ModifierKeys.Control;\r\n            if (e.Alt)\r\n                Keyboard.Modifiers |= ModifierKeys.Alt;\r\n            else\r\n                Keyboard.Modifiers &= ~ModifierKeys.Alt;\r\n        }\r\n\r\n        static HasControl() {\r\n            return (Keyboard.Modifiers & ModifierKeys.Control) === ModifierKeys.Control;\r\n        }\r\n        static HasAlt() {\r\n            return (Keyboard.Modifiers & ModifierKeys.Alt) === ModifierKeys.Alt;\r\n        }\r\n        static HasShift() {\r\n            return (Keyboard.Modifiers & ModifierKeys.Shift) === ModifierKeys.Shift;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Keyboard);\r\n}"
  },
  {
    "path": "src/Input/KeyboardNavigation.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Input {\r\n    export class KeyboardNavigation {\r\n        static AcceptsReturnProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"AcceptsReturn\", () => Boolean, KeyboardNavigation);\r\n        static GetAcceptsReturn(d: DependencyObject): boolean { return d.GetValue(KeyboardNavigation.AcceptsReturnProperty); }\r\n        static SetAcceptsReturn(d: DependencyObject, value: boolean) { d.SetValue(KeyboardNavigation.AcceptsReturnProperty, value); }\r\n\r\n        static ControlTabNavigationProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"ControlTabNavigation\", () => new Enum(KeyboardNavigationMode), KeyboardNavigation);\r\n        static GetControlTabNavigation(d: DependencyObject): KeyboardNavigationMode { return d.GetValue(KeyboardNavigation.ControlTabNavigationProperty); }\r\n        static SetControlTabNavigation(d: DependencyObject, value: KeyboardNavigationMode) { d.SetValue(KeyboardNavigation.ControlTabNavigationProperty, value); }\r\n\r\n        static DirectionalNavigationProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"DirectionalNavigation\", () => new Enum(KeyboardNavigationMode), KeyboardNavigation);\r\n        static GetDirectionalNavigation(d: DependencyObject): KeyboardNavigationMode { return d.GetValue(KeyboardNavigation.DirectionalNavigationProperty); }\r\n        static SetDirectionalNavigation(d: DependencyObject, value: KeyboardNavigationMode) { d.SetValue(KeyboardNavigation.DirectionalNavigationProperty, value); }\r\n\r\n        static IsTabStopProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"IsTabStop\", () => Boolean, KeyboardNavigation);\r\n        static GetIsTabStop(d: DependencyObject): boolean { return d.GetValue(KeyboardNavigation.IsTabStopProperty); }\r\n        static SetIsTabStop(d: DependencyObject, value: boolean) { d.SetValue(KeyboardNavigation.IsTabStopProperty, value); }\r\n\r\n        static TabIndexProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"TabIndex\", () => Number, KeyboardNavigation);\r\n        static GetTabIndex(d: DependencyObject): number { return d.GetValue(KeyboardNavigation.TabIndexProperty); }\r\n        static SetTabIndex(d: DependencyObject, value: number) { d.SetValue(KeyboardNavigation.TabIndexProperty, value); }\r\n\r\n        static TabNavigationProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"TabNavigation\", () => new Enum(KeyboardNavigationMode), KeyboardNavigation);\r\n        static GetTabNavigation(d: DependencyObject): KeyboardNavigationMode { return d.GetValue(KeyboardNavigation.TabNavigationProperty); }\r\n        static SetTabNavigation(d: DependencyObject, value: KeyboardNavigationMode) { d.SetValue(KeyboardNavigation.TabNavigationProperty, value); }\r\n    }\r\n    Fayde.CoreLibrary.add(KeyboardNavigation);\r\n}"
  },
  {
    "path": "src/Input/MouseEventArgs.ts",
    "content": "/// <reference path=\"../Core/RoutedEventArgs.ts\" />\r\n\r\nmodule Fayde.Input {\r\n    export class MouseEventArgs extends RoutedEventArgs {\r\n        AbsolutePos: Point;\r\n        constructor(absolutePos: Point) {\r\n            super();\r\n            Object.defineProperty(this, \"AbsolutePos\", { value: absolutePos, writable: false });\r\n        }\r\n        GetPosition(relativeTo: UIElement): Point {\r\n            var p = this.AbsolutePos.Clone();\r\n            if (!relativeTo)\r\n                return p;\r\n            if (!(relativeTo instanceof UIElement))\r\n                throw new ArgumentException(\"Specified relative object must be a UIElement.\");\r\n            //TODO: If attached, should we run ProcessDirtyElements\r\n            minerva.core.Updater.transformPoint(relativeTo.XamlNode.LayoutUpdater, p);\r\n            return p;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(MouseEventArgs);\r\n\r\n    export class MouseButtonEventArgs extends MouseEventArgs {\r\n        constructor(absolutePos: Point) {\r\n            super(absolutePos);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(MouseButtonEventArgs);\r\n\r\n    export class MouseWheelEventArgs extends MouseEventArgs {\r\n        Delta: number;\r\n        constructor(absolutePos: Point, delta: number) {\r\n            super(absolutePos);\r\n            Object.defineProperty(this, \"Delta\", { value: delta, writable: false });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(MouseWheelEventArgs);\r\n}"
  },
  {
    "path": "src/Input/MouseInterop.ts",
    "content": "module Fayde.Input {\r\n    export enum MouseInputType {\r\n        NoOp = 0,\r\n        MouseUp = 1,\r\n        MouseDown = 2,\r\n        MouseLeave = 3,\r\n        MouseEnter = 4,\r\n        MouseMove = 5,\r\n        MouseWheel = 6,\r\n    }\r\n    export interface IMouseInterop {\r\n        RegisterEvents(input: Engine.InputManager, canvas: HTMLCanvasElement);\r\n        CreateEventArgs(type: MouseInputType, pos: Point, delta: number): Fayde.Input.MouseEventArgs;\r\n        IsLeftButton(button: number): boolean;\r\n        IsRightButton(button: number): boolean;\r\n    }\r\n    export function CreateMouseInterop (): IMouseInterop {\r\n        if (navigator.appName === \"Microsoft Internet Explorer\")\r\n            return new IEMouseInterop();\r\n        if (navigator.appName === \"Netscape\") {\r\n            if (!!navigator.userAgent.match(/Trident\\//)) //IE11 masquerading as Netscape\r\n                return new IEMouseInterop();\r\n            return new NetscapeMouseInterop();\r\n        }\r\n        return new MouseInterop();\r\n    }\r\n\r\n    interface IOffset {\r\n        left: number;\r\n        top: number;\r\n    }\r\n\r\n    class MouseInterop implements IMouseInterop {\r\n        private _Input: Engine.InputManager;\r\n        private _CanvasOffset: IOffset = null;\r\n        private _IsContextMenuDisabled: boolean = false;\r\n\r\n        RegisterEvents (input: Engine.InputManager, canvas: HTMLCanvasElement) {\r\n            this._Input = input;\r\n            this._CanvasOffset = this._CalcOffset(canvas);\r\n\r\n            canvas.addEventListener(\"contextmenu\", (e) => this._HandleContextMenu(window.event ? <any>window.event : e));\r\n            canvas.addEventListener(\"mousedown\", (e) => this._HandleButtonPress(window.event ? <any>window.event : e));\r\n            canvas.addEventListener(\"mouseup\", (e) => this._HandleButtonRelease(window.event ? <any>window.event : e));\r\n            canvas.addEventListener(\"mouseout\", (e) => this._HandleOut(window.event ? <any>window.event : e));\r\n            canvas.addEventListener(\"mousemove\", (e) => this._HandleMove(window.event ? <any>window.event : e));\r\n\r\n            //IE9, Chrome, Safari, Opera\r\n            canvas.addEventListener(\"mousewheel\", (e) => this._HandleWheel(window.event ? <any>window.event : e));\r\n            //Firefox\r\n            canvas.addEventListener(\"DOMMouseScroll\", (e) => this._HandleWheel(window.event ? <any>window.event : e));\r\n        }\r\n\r\n        private _CalcOffset (canvas: HTMLCanvasElement): IOffset {\r\n            var left = 0;\r\n            var top = 0;\r\n            var cur: HTMLElement = canvas;\r\n            if (cur.offsetParent) {\r\n                do {\r\n                    left += cur.offsetLeft;\r\n                    top += cur.offsetTop;\r\n                } while (cur = <HTMLElement>cur.offsetParent);\r\n            }\r\n            return {left: left, top: top};\r\n        }\r\n\r\n        private _GetMousePosition (evt): Point {\r\n            return new Point(\r\n                evt.clientX + window.pageXOffset + this._CanvasOffset.left,\r\n                evt.clientY + window.pageYOffset + this._CanvasOffset.top);\r\n        }\r\n\r\n        IsLeftButton (button: number): boolean {\r\n            return button === 1;\r\n        }\r\n\r\n        IsRightButton (button: number): boolean {\r\n            return button === 2;\r\n        }\r\n\r\n        private _HandleContextMenu (evt) {\r\n            if (!this._IsContextMenuDisabled)\r\n                return;\r\n            this._IsContextMenuDisabled = false;\r\n            evt.stopPropagation && evt.stopPropagation();\r\n            evt.preventDefault && evt.preventDefault();\r\n            evt.cancelBubble = true;\r\n            return false;\r\n        }\r\n\r\n        private _HandleButtonPress (evt) {\r\n            Engine.Inspection.Kill();\r\n            Input.Keyboard.RefreshModifiers(createModifiers(evt));\r\n            var button = evt.which ? evt.which : evt.button;\r\n            var pos = this._GetMousePosition(evt);\r\n            if (this._Input.HandleMousePress(button, pos))\r\n                this.DisableNextContextMenu();\r\n        }\r\n\r\n        private _HandleButtonRelease (evt) {\r\n            Input.Keyboard.RefreshModifiers(createModifiers(evt));\r\n            var button = evt.which ? evt.which : evt.button;\r\n            var pos = this._GetMousePosition(evt);\r\n            this._Input.HandleMouseRelease(button, pos);\r\n        }\r\n\r\n        private _HandleOut (evt) {\r\n            Input.Keyboard.RefreshModifiers(createModifiers(evt));\r\n            var pos = this._GetMousePosition(evt);\r\n            this._Input.HandleMouseEvent(MouseInputType.MouseLeave, null, pos);\r\n        }\r\n\r\n        private _HandleMove (evt) {\r\n            Input.Keyboard.RefreshModifiers(createModifiers(evt));\r\n            var pos = this._GetMousePosition(evt);\r\n            this._Input.HandleMouseEvent(MouseInputType.MouseMove, null, pos);\r\n            this._Input.UpdateCursorFromInputList();\r\n        }\r\n\r\n        private _HandleWheel (evt) {\r\n            Input.Keyboard.RefreshModifiers(createModifiers(evt));\r\n            var delta = 0;\r\n            if (evt.wheelDelta)\r\n                delta = evt.wheelDelta / 120;\r\n            else if (evt.detail)\r\n                delta = -evt.detail / 3;\r\n            if (evt.preventDefault)\r\n                evt.preventDefault();\r\n            evt.returnValue = false;\r\n            this._Input.HandleMouseEvent(MouseInputType.MouseWheel, null, this._GetMousePosition(evt), delta);\r\n            this._Input.UpdateCursorFromInputList();\r\n        }\r\n\r\n        CreateEventArgs (type: MouseInputType, pos: Point, delta: number): Fayde.Input.MouseEventArgs {\r\n            switch (type) {\r\n                case MouseInputType.MouseUp:\r\n                    return new Fayde.Input.MouseButtonEventArgs(pos);\r\n                case MouseInputType.MouseDown:\r\n                    return new Fayde.Input.MouseButtonEventArgs(pos);\r\n                case MouseInputType.MouseLeave:\r\n                    return new Fayde.Input.MouseEventArgs(pos);\r\n                case MouseInputType.MouseEnter:\r\n                    return new Fayde.Input.MouseEventArgs(pos);\r\n                case MouseInputType.MouseMove:\r\n                    return new Fayde.Input.MouseEventArgs(pos);\r\n                case MouseInputType.MouseWheel:\r\n                    return new Fayde.Input.MouseWheelEventArgs(pos, delta);\r\n            }\r\n        }\r\n\r\n        DisableNextContextMenu () {\r\n            this._IsContextMenuDisabled = true;\r\n        }\r\n    }\r\n\r\n    class IEMouseInterop extends MouseInterop {\r\n        StopIEContextMenu: boolean = false;\r\n\r\n        DisableNextContextMenu () {\r\n            super.DisableNextContextMenu();\r\n            this.StopIEContextMenu = true;\r\n        }\r\n\r\n        RegisterEvents (input: Engine.InputManager, canvas: HTMLCanvasElement) {\r\n            super.RegisterEvents(input, canvas);\r\n            canvas.oncontextmenu = (e) => this._HandleIEContextMenu(e);\r\n        }\r\n\r\n        private _HandleIEContextMenu (evt) {\r\n            if (this.StopIEContextMenu) {\r\n                this.StopIEContextMenu = false;\r\n                return false;\r\n            }\r\n            return true;\r\n        }\r\n    }\r\n    class NetscapeMouseInterop extends MouseInterop {\r\n        IsRightButton (button: number): boolean {\r\n            return button === 3;\r\n        }\r\n    }\r\n    function createModifiers (e): IModifiersOn {\r\n        return {\r\n            Shift: e.shiftKey,\r\n            Ctrl: e.ctrlKey,\r\n            Alt: e.altKey\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Input/TouchEventArgs.ts",
    "content": "/// <reference path=\"../Core/RoutedEventArgs.ts\" />\r\n\r\nmodule Fayde.Input {\r\n    export class TouchEventArgs extends RoutedEventArgs {\r\n        Device: ITouchDevice;\r\n        constructor(device: ITouchDevice) {\r\n            super();\r\n            this.Device = device;\r\n        }\r\n\r\n        GetTouchPoint(relativeTo: UIElement): TouchPoint {\r\n            return this.Device.GetTouchPoint(relativeTo);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TouchEventArgs);\r\n}"
  },
  {
    "path": "src/Input/TouchInterfaces.ts",
    "content": "interface Touch {\r\n    radiusX: number;\r\n    radiusY: number;\r\n    rotationAngle: number;\r\n    force: number;\r\n}\r\n\r\ninterface TouchList {\r\n    identifiedTouch(identifier: number): Touch;\r\n}\r\n\r\ninterface TouchEvent extends UIEvent {\r\n    initTouchEvent(type: string, canBubble: boolean, cancelable: boolean, view: any, detail: number, ctrlKey: boolean, altKey: boolean, shiftKey: boolean, metaKey: boolean, touches: TouchList, targetTouches: TouchList, changedTouches: TouchList);\r\n}"
  },
  {
    "path": "src/Input/TouchInternal/ActiveTouchBase.ts",
    "content": "module Fayde.Input.TouchInternal {\r\n    export interface ITouchHandler {\r\n        HandleTouches(type: Input.TouchInputType, touches: ActiveTouchBase[], emitLeave?: boolean, emitEnter?: boolean): boolean;\r\n    }\r\n\r\n    export class ActiveTouchBase {\r\n        Identifier: number;\r\n        Position: Point;\r\n        Device: Input.ITouchDevice;\r\n        InputList: UINode[] = [];\r\n        private _IsEmitting: boolean = false;\r\n        private _PendingCapture: UINode = null;\r\n        private _PendingReleaseCapture = false;\r\n        private _Captured: UINode = null;\r\n        private _CapturedInputList: UINode[] = null;\r\n        \r\n        private _FinishReleaseCaptureFunc: () => void;\r\n\r\n        constructor(touchHandler: ITouchHandler) {\r\n            Object.defineProperty(this, \"Device\", { value: this.CreateTouchDevice(), writable: false });\r\n            this._FinishReleaseCaptureFunc = () => touchHandler.HandleTouches(Input.TouchInputType.NoOp, [this], false, true);\r\n        }\r\n\r\n        Capture(uie: UIElement): boolean {\r\n            var uin = uie.XamlNode;\r\n            if (this._Captured === uin || this._PendingCapture === uin)\r\n                return true;\r\n            if (!this._IsEmitting)\r\n                return false;\r\n            this._PendingCapture = uin;\r\n            return true;\r\n        }\r\n        ReleaseCapture(uie: UIElement) {\r\n            var uin = uie.XamlNode;\r\n            if (this._Captured !== uin && this._PendingCapture !== uin)\r\n                return;\r\n            if (this._IsEmitting)\r\n                this._PendingReleaseCapture = true;\r\n            else\r\n                this._PerformReleaseCapture();\r\n        }\r\n        private _PerformCapture(uin: UINode) {\r\n            this._Captured = uin;\r\n            var newInputList: UINode[] = [];\r\n            while (uin != null) {\r\n                newInputList.push(uin);\r\n                uin = uin.VisualParentNode;\r\n            }\r\n            this._CapturedInputList = newInputList;\r\n            this._PendingCapture = null;\r\n        }\r\n        private _PerformReleaseCapture() {\r\n            var oldCaptured = this._Captured;\r\n            this._Captured = null;\r\n            this._PendingReleaseCapture = false;\r\n            oldCaptured._EmitLostTouchCapture(new Input.TouchEventArgs(this.Device));\r\n            this._FinishReleaseCaptureFunc();\r\n        }\r\n\r\n        Emit(type: Input.TouchInputType, newInputList: UINode[], emitLeave?: boolean, emitEnter?: boolean): boolean {\r\n            if (this._IsEmitting)\r\n                return;\r\n            this._IsEmitting = true;\r\n            var handled = false;\r\n\r\n            var indices = { Index1: -1, Index2: -1 };\r\n            findFirstCommonElement(this.InputList, newInputList, indices);\r\n            if (emitLeave !== false)\r\n                this._EmitList(Input.TouchInputType.TouchLeave, this.InputList, indices.Index1);\r\n            if (emitEnter !== false)\r\n                this._EmitList(Input.TouchInputType.TouchEnter, newInputList, indices.Index2);\r\n\r\n            var handled = false;\r\n            if (type !== Input.TouchInputType.NoOp)\r\n                handled = this._EmitList(type, this._Captured ? this._CapturedInputList : newInputList);\r\n            this.InputList = newInputList;\r\n\r\n            if (this._PendingCapture)\r\n                this._PerformCapture(this._PendingCapture);\r\n            if (this._PendingReleaseCapture)\r\n                this._PerformReleaseCapture();\r\n\r\n            this._IsEmitting = false;\r\n            return handled;\r\n        }\r\n        private _EmitList(type: Input.TouchInputType, list: UINode[], endIndex?: number): boolean {\r\n            var handled = false;\r\n            if (endIndex === 0)\r\n                return handled;\r\n            if (!endIndex || endIndex === -1)\r\n                endIndex = list.length;\r\n            var args = new Input.TouchEventArgs(this.Device);\r\n            var node = list[0];\r\n            if (node && args instanceof Fayde.RoutedEventArgs)\r\n                args.Source = node.XObject;\r\n            for (var i = 0; i < endIndex; i++) {\r\n                node = list[i];\r\n                if (type === Input.TouchInputType.TouchLeave)\r\n                    args.Source = node.XObject;\r\n                if (node._EmitTouchEvent(type, args))\r\n                    handled = true;\r\n                if (type === Input.TouchInputType.TouchLeave) //TouchLeave gets new event args on each emit\r\n                    args = new Input.TouchEventArgs(this.Device);\r\n            }\r\n            return handled;\r\n        }\r\n        \r\n        GetTouchPoint(relativeTo: UIElement): TouchPoint {\r\n            if (!relativeTo)\r\n                return this.CreateTouchPoint(this.Position.Clone());\r\n            if (!(relativeTo instanceof UIElement))\r\n                throw new ArgumentException(\"Specified relative object must be a UIElement.\");\r\n            //TODO: If attached, should we run ProcessDirtyElements\r\n            var p = this.Position.Clone();\r\n            minerva.core.Updater.transformPoint(relativeTo.XamlNode.LayoutUpdater, p);\r\n            return this.CreateTouchPoint(p);\r\n        }\r\n        CreateTouchPoint(p: Point): TouchPoint {\r\n            return new TouchPoint(p, 0);\r\n        }\r\n        \r\n        private CreateTouchDevice(): ITouchDevice {\r\n            var d: ITouchDevice = {\r\n                Identifier: null,\r\n                Captured: null,\r\n                Capture: (uie: UIElement) => this.Capture(uie),\r\n                ReleaseCapture: (uie: UIElement) => this.ReleaseCapture(uie),\r\n                GetTouchPoint: (relativeTo: UIElement) => this.GetTouchPoint(relativeTo)\r\n            };\r\n            Object.defineProperty(d, \"Identifier\", { get: () => this.Identifier });\r\n            Object.defineProperty(d, \"Captured\", { get: () => this._Captured ? this._Captured.XObject : null });\r\n            return d;\r\n        }\r\n    }\r\n\r\n    \r\n    interface ICommonElementIndices {\r\n        Index1: number;\r\n        Index2: number;\r\n    }\r\n    function findFirstCommonElement(list1: UINode[], list2: UINode[], outObj: ICommonElementIndices) {\r\n        var i = list1.length - 1;\r\n        var j = list2.length - 1;\r\n        outObj.Index1 = -1;\r\n        outObj.Index2 = -1;\r\n        while (i >= 0 && j >= 0) {\r\n            if (list1[i] !== list2[j])\r\n                return;\r\n            outObj.Index1 = i--;\r\n            outObj.Index2 = j--;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Input/TouchInternal/NonPointerTouchInterop.ts",
    "content": "/// <reference path=\"ActiveTouchBase.ts\" />\r\n/// <reference path=\"TouchInteropBase.ts\" />\r\n\r\nmodule Fayde.Input.TouchInternal {\r\n    class NonPointerActiveTouch extends ActiveTouchBase {\r\n        TouchObject: Touch;\r\n        Init(t: Touch, offset: IOffset) {\r\n            this.TouchObject = t;\r\n            this.Identifier = t.identifier;\r\n            this.Position = new Point(t.clientX + offset.left, t.clientY + offset.top);\r\n        }\r\n        CreateTouchPoint(p: Point): TouchPoint {\r\n            var to = this.TouchObject;\r\n            return new TouchPoint(p, to.force);\r\n        }\r\n    }\r\n    \r\n    export class NonPointerTouchInterop extends TouchInteropBase {\r\n        Register(input: Engine.InputManager, canvas: HTMLCanvasElement) {\r\n            super.Register(input, canvas);\r\n\r\n            canvas.addEventListener(\"touchstart\", (e) => this._HandleTouchStart(window.event ? <any>window.event : e));\r\n            canvas.addEventListener(\"touchend\", (e) => this._HandleTouchEnd(window.event ? <any>window.event : e));\r\n            canvas.addEventListener(\"touchmove\", (e) => this._HandleTouchMove(window.event ? <any>window.event : e));\r\n            canvas.addEventListener(\"touchenter\", (e) => this._HandleTouchEnter(window.event ? <any>window.event : e));\r\n            canvas.addEventListener(\"touchleave\", (e) => this._HandleTouchLeave(window.event ? <any>window.event : e));\r\n        }\r\n\r\n        private _HandleTouchStart(e: TouchEvent) {\r\n            e.preventDefault();\r\n            Engine.Inspection.Kill();\r\n\r\n            var newTouches = this.TouchArrayFromList(e.changedTouches);\r\n            this.ActiveTouches = this.ActiveTouches.concat(newTouches);\r\n\r\n            this.Input.SetIsUserInitiatedEvent(true);\r\n            this.HandleTouches(TouchInputType.TouchDown, newTouches);\r\n            this.Input.SetIsUserInitiatedEvent(false);\r\n        }\r\n        private _HandleTouchEnd(e: TouchEvent) {\r\n            var oldTouches = this.TouchArrayFromList(e.changedTouches);\r\n            \r\n            this.Input.SetIsUserInitiatedEvent(true);\r\n            this.HandleTouches(TouchInputType.TouchUp, oldTouches);\r\n            this.Input.SetIsUserInitiatedEvent(false);\r\n\r\n            removeFromArray(this.ActiveTouches, oldTouches);\r\n        }\r\n        private _HandleTouchMove(e: TouchEvent) {\r\n            var touches = this.TouchArrayFromList(e.changedTouches);\r\n            this.HandleTouches(TouchInputType.TouchMove, touches);\r\n        }\r\n        private _HandleTouchEnter(e: TouchEvent) {\r\n            var touches = this.TouchArrayFromList(e.changedTouches);\r\n            this.HandleTouches(TouchInputType.TouchEnter, touches);\r\n        }\r\n        private _HandleTouchLeave(e: TouchEvent) {\r\n            var touches = this.TouchArrayFromList(e.changedTouches);\r\n            this.HandleTouches(TouchInputType.TouchLeave, touches);\r\n        }\r\n\r\n        private TouchArrayFromList(list: TouchList): NonPointerActiveTouch[] {\r\n            var len = list.length;\r\n            var touches: NonPointerActiveTouch[] = [];\r\n            var curto: Touch;\r\n            var cur;\r\n            for (var i = 0; i < len; i++) {\r\n                var curto = list.item(i);\r\n                cur = this.FindTouchInList(curto.identifier) || new NonPointerActiveTouch(this);\r\n                cur.Init(curto, this.CoordinateOffset);\r\n                touches.push(cur);\r\n            }\r\n            return touches;\r\n        }\r\n        private FindTouchInList(identifier: number): NonPointerActiveTouch {\r\n            var at = this.ActiveTouches;\r\n            var len = at.length;\r\n            for (var i = 0; i < len; i++) {\r\n                if (at[i].Identifier === identifier)\r\n                    return <NonPointerActiveTouch>at[i];\r\n            }\r\n            return null;\r\n        }\r\n    }\r\n\r\n    function removeFromArray<T>(arr: T[], toRemove: T[]) {\r\n        var len = toRemove.length;\r\n        for (var i = 0; i < len; i++) {\r\n            var index = arr.indexOf(toRemove[i]);\r\n            if (index > -1)\r\n                arr.splice(index, 1);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Input/TouchInternal/PointerTouchInterop.ts",
    "content": "/// <reference path=\"ActiveTouchBase.ts\" />\r\n/// <reference path=\"TouchInteropBase.ts\" />\r\n\r\nmodule Fayde.Input.TouchInternal {\r\n    class PointerActiveTouch extends ActiveTouchBase {\r\n        TouchObject: MSPointerEvent;\r\n        Init(t: MSPointerEvent, offset: IOffset) {\r\n            this.TouchObject = t;\r\n            this.Identifier = t.pointerId;\r\n            this.Position = new Point(t.clientX + offset.left, t.clientY + offset.top);\r\n        }\r\n        CreateTouchPoint(p: Point): TouchPoint {\r\n            var to = this.TouchObject;\r\n            return new TouchPoint(p, to.pressure);\r\n        }\r\n    }\r\n\r\n    export class PointerTouchInterop extends TouchInteropBase {\r\n        Register(input: Engine.InputManager, canvas: HTMLCanvasElement) {\r\n            super.Register(input, canvas);\r\n            canvas.style.msTouchAction = \"none\";\r\n            (<any>canvas.style).touchAction = \"none\";\r\n\r\n            canvas.addEventListener(\"selectstart\", (e) => { e.preventDefault(); });\r\n            if (navigator.msPointerEnabled) {\r\n                canvas.addEventListener(\"MSPointerDown\", (e) => this._HandlePointerDown(window.event ? <any>window.event : e));\r\n                canvas.addEventListener(\"MSPointerUp\", (e) => this._HandlePointerUp(window.event ? <any>window.event : e));\r\n                canvas.addEventListener(\"MSPointerMove\", (e) => this._HandlePointerMove(window.event ? <any>window.event : e));\r\n                canvas.addEventListener(\"MSPointerEnter\", (e) => this._HandlePointerEnter(window.event ? <any>window.event : e));\r\n                canvas.addEventListener(\"MSPointerLeave\", (e) => this._HandlePointerLeave(window.event ? <any>window.event : e));\r\n            } else {\r\n                canvas.addEventListener(\"pointerdown\", (e) => this._HandlePointerDown(window.event ? <any>window.event : e));\r\n                canvas.addEventListener(\"pointerup\", (e) => this._HandlePointerUp(window.event ? <any>window.event : e));\r\n                canvas.addEventListener(\"pointermove\", (e) => this._HandlePointerMove(window.event ? <any>window.event : e));\r\n                canvas.addEventListener(\"pointerenter\", (e) => this._HandlePointerEnter(window.event ? <any>window.event : e));\r\n                canvas.addEventListener(\"pointerleave\", (e) => this._HandlePointerLeave(window.event ? <any>window.event : e));\r\n            }\r\n        }\r\n\r\n        private _HandlePointerDown(e: MSPointerEvent) {\r\n            if (e.pointerType !== \"touch\")\r\n                return;\r\n            e.preventDefault();\r\n            Engine.Inspection.Kill();\r\n\r\n            var cur = this.GetActiveTouch(e);\r\n            this.Input.SetIsUserInitiatedEvent(true);\r\n            this.HandleTouches(Input.TouchInputType.TouchDown, [cur]);\r\n            this.Input.SetIsUserInitiatedEvent(false);\r\n        }\r\n        private _HandlePointerUp(e: MSPointerEvent) {\r\n            if (e.pointerType !== \"touch\")\r\n                return;\r\n            var cur = this.GetActiveTouch(e);\r\n            this.Input.SetIsUserInitiatedEvent(true);\r\n            this.HandleTouches(Input.TouchInputType.TouchUp, [cur]);\r\n            this.Input.SetIsUserInitiatedEvent(false);\r\n            var index = this.ActiveTouches.indexOf(cur);\r\n            if (index > -1)\r\n                this.ActiveTouches.splice(index, 1);\r\n        }\r\n        private _HandlePointerMove(e: MSPointerEvent) {\r\n            if (e.pointerType !== \"touch\")\r\n                return;\r\n            var cur = this.GetActiveTouch(e);\r\n            this.HandleTouches(Input.TouchInputType.TouchMove, [cur]);\r\n        }\r\n        private _HandlePointerEnter(e: MSPointerEvent) {\r\n            if (e.pointerType !== \"touch\")\r\n                return;\r\n            var cur = this.GetActiveTouch(e);\r\n            this.HandleTouches(Input.TouchInputType.TouchEnter, [cur]);\r\n        }\r\n        private _HandlePointerLeave(e: MSPointerEvent) {\r\n            if (e.pointerType !== \"touch\")\r\n                return;\r\n            var cur = this.GetActiveTouch(e);\r\n            this.HandleTouches(Input.TouchInputType.TouchLeave, [cur]);\r\n        }\r\n\r\n        private GetActiveTouch(e: MSPointerEvent): PointerActiveTouch {\r\n            var existing = this.FindTouchInList(e.pointerId);\r\n            var cur = existing || new PointerActiveTouch(this);\r\n            if (!existing)\r\n                this.ActiveTouches.push(cur);\r\n            cur.Init(e, this.CoordinateOffset);\r\n            return cur;\r\n        }\r\n        private FindTouchInList(identifier: number): PointerActiveTouch {\r\n            var at = this.ActiveTouches;\r\n            var len = at.length;\r\n            for (var i = 0; i < len; i++) {\r\n                if (at[i].Identifier === identifier)\r\n                    return <PointerActiveTouch>at[i];\r\n            }\r\n            return null;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Input/TouchInternal/TouchInteropBase.ts",
    "content": "module Fayde.Input.TouchInternal {\r\n    export interface IOffset {\r\n        left: number;\r\n        top: number;\r\n    }\r\n    export class TouchInteropBase implements Fayde.Input.ITouchInterop, ITouchHandler {\r\n        Input: Engine.InputManager;\r\n        CanvasOffset: IOffset = null;\r\n        ActiveTouches: ActiveTouchBase[] = [];\r\n\r\n        get CoordinateOffset(): IOffset {\r\n            return {\r\n                left: window.pageXOffset + this.CanvasOffset.left,\r\n                top: window.pageYOffset + this.CanvasOffset.top\r\n            };\r\n        }\r\n\r\n        Register(input: Engine.InputManager, canvas: HTMLCanvasElement) {\r\n            this.Input = input;\r\n            this.CanvasOffset = this._CalcOffset(canvas);\r\n        }\r\n        private _CalcOffset(canvas: HTMLCanvasElement): IOffset {\r\n            var left = 0;\r\n            var top = 0;\r\n            var cur: HTMLElement = canvas;\r\n            if (cur.offsetParent) {\r\n                do {\r\n                    left += cur.offsetLeft;\r\n                    top += cur.offsetTop;\r\n                } while (cur = <HTMLElement>cur.offsetParent);\r\n            }\r\n            return { left: left, top: top };\r\n        }\r\n        \r\n        HandleTouches(type: Input.TouchInputType, touches: ActiveTouchBase[], emitLeave?: boolean, emitEnter?: boolean): boolean {\r\n            var touch: ActiveTouchBase;\r\n            var handled = false;\r\n            while (touch = touches.shift()) {\r\n                var inputList = this.Input.HitTestPoint(touch.Position);\r\n                if (inputList)\r\n                    handled = handled || touch.Emit(type, inputList, emitLeave, emitEnter);\r\n            }\r\n            return handled;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Input/TouchInterop.ts",
    "content": "module Fayde.Input {\r\n    export interface ITouchDevice {\r\n        Identifier: number;\r\n        Captured: UIElement;\r\n        Capture(uie: UIElement): boolean;\r\n        ReleaseCapture(uie: UIElement);\r\n        GetTouchPoint(relativeTo: UIElement): TouchPoint;\r\n    }\r\n    export enum TouchInputType {\r\n        NoOp = 0,\r\n        TouchDown = 1,\r\n        TouchUp = 2,\r\n        TouchMove = 3,\r\n        TouchEnter = 4,\r\n        TouchLeave = 5\r\n    }\r\n    export interface ITouchInterop {\r\n        Register(input: Engine.InputManager, canvas: HTMLCanvasElement);\r\n    }\r\n    export function CreateTouchInterop(): ITouchInterop {\r\n        if (navigator.msPointerEnabled || (<any>navigator).pointerEnabled)\r\n            return new TouchInternal.PointerTouchInterop();\r\n        if (\"ontouchstart\" in window)\r\n            return new TouchInternal.NonPointerTouchInterop();\r\n        return new DummyTouchInterop();\r\n    }\r\n\r\n    class DummyTouchInterop implements ITouchInterop {\r\n        Register(input: Engine.InputManager, canvas: HTMLCanvasElement) { }\r\n    }\r\n}"
  },
  {
    "path": "src/Input/TouchPoint.ts",
    "content": "module Fayde.Input {\r\n    export class TouchPoint {\r\n        Position: Point;\r\n        //RadiusX: number;\r\n        //RadiusY: number;\r\n        //RotationAngle: number;\r\n        Force: number;\r\n        constructor(position: Point, force: number) {\r\n            Object.defineProperty(this, \"Position\", { value: position, writable: false });\r\n            //Object.defineProperty(this, \"RadiusX\", { value: radiusX, writable: false });\r\n            //Object.defineProperty(this, \"RadiusY\", { value: radiusY, writable: false });\r\n            //Object.defineProperty(this, \"RotationAngle\", { value: rotationAngle, writable: false });\r\n            Object.defineProperty(this, \"Force\", { value: force, writable: false });\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TouchPoint);\r\n}"
  },
  {
    "path": "src/Input/VirtualKeyboard.ts",
    "content": "module Fayde.Input {\r\n    var keyboardInput: HTMLInputElement;\r\n\r\n    export class VirtualKeyboard {\r\n        static Init () {\r\n            keyboardInput = document.createElement('input');\r\n            keyboardInput.type = \"text\";\r\n            var style = keyboardInput.style;\r\n            style.opacity = \"0\";\r\n            style.cssFloat = \"left\";\r\n            style.width = \"0\";\r\n            style.height = \"0\";\r\n            style.borderWidth = \"0\";\r\n            document.body.insertBefore(keyboardInput, document.body.firstElementChild);\r\n        }\r\n\r\n        static Launch () {\r\n            console.log(\"Launch\");\r\n            keyboardInput.focus();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Localization/Calendar.ts",
    "content": "﻿/// <reference path=\"../Primitives/DateTime.ts\" />\r\n\r\nmodule Fayde.Localization {\r\n    export abstract class Calendar {\r\n        ID: number = 1;\r\n        Eras: number[] = [1];\r\n        CurrentEra = 1;\r\n        EraNames: string[] = [\"A.D.\"];\r\n        CurrentEraValue: number = 1;\r\n        TwoDigitYearMax: number = 2029;\r\n        MaxSupportedDateTime = new DateTime(9999, 12, 31, 23, 59, 59, 999);\r\n        MinSupportedDateTime = new DateTime(1, 1, 1, 0, 0, 0, 0);\r\n\r\n        abstract GetDaysInMonth(year: number, month: number, era: number): number;\r\n        abstract GetDayOfWeek(time: DateTime): DayOfWeek;\r\n        abstract IsLeapYear(year: number, era?: number): boolean;\r\n\r\n        static CheckAddResult(ticks: number, minValue: DateTime, maxValue: DateTime) {\r\n            if (ticks < minValue.Ticks || ticks > maxValue.Ticks)\r\n                throw new ArgumentException(\"Invalid add result (out of range)\");\r\n        }\r\n\r\n        abstract AddMonths(time: DateTime, months: number): DateTime;\r\n\r\n        AddWeeks(time: DateTime, weeks: number): DateTime {\r\n            return time.AddDays(weeks * 7);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Localization/CultureInfo.ts",
    "content": "module Fayde.Localization {\n    export class CultureInfo {\n        private $calendar: Calendar = null;\n        private $dtinfo: DateTimeFormatInfo = null;\n\n        static Current = new CultureInfo();\n\n        get Calendar(): Calendar {\n            return this.$calendar = this.$calendar || getDefaultCalendar();\n        }\n\n        get DateTimeFormat(): DateTimeFormatInfo {\n            return this.$dtinfo = this.$dtinfo || new DateTimeFormatInfo(this.Calendar);\n        }\n    }\n\n    function getDefaultCalendar(): Calendar {\n        return new GregorianCalendar();\n    }\n}"
  },
  {
    "path": "src/Localization/DateTimeFormatInfo.ts",
    "content": "﻿/// <reference path=\"Calendar.ts\" />\r\n\r\nmodule Fayde.Localization {\r\n    export enum CalendarWeekRule {\r\n        FirstDay,\r\n        FirstFullWeek,\r\n        FirstFourDayWeek,\r\n    }\r\n    export class DateTimeFormatInfo {\r\n        AbbreviatedDayNames: string[] = [\r\n            \"Sun\",\r\n            \"Mon\",\r\n            \"Tue\",\r\n            \"Wed\",\r\n            \"Thu\",\r\n            \"Fri\",\r\n            \"Sat\"\r\n        ];\r\n        AbbreviatedMonthGenitiveNames: string[] = [\r\n            \"Jan\",\r\n            \"Feb\",\r\n            \"Mar\",\r\n            \"Apr\",\r\n            \"May\",\r\n            \"Jun\",\r\n            \"Jul\",\r\n            \"Aug\",\r\n            \"Sep\",\r\n            \"Oct\",\r\n            \"Nov\",\r\n            \"Dec\",\r\n            \"\"\r\n        ];\r\n        AbbreviatedMonthNames: string[] = [\r\n            \"Jan\",\r\n            \"Feb\",\r\n            \"Mar\",\r\n            \"Apr\",\r\n            \"May\",\r\n            \"Jun\",\r\n            \"Jul\",\r\n            \"Aug\",\r\n            \"Sep\",\r\n            \"Oct\",\r\n            \"Nov\",\r\n            \"Dec\"\r\n        ];\r\n        AMDesignator: string = \"AM\";\r\n        Calendar: Calendar;\r\n        CalendarWeekRule: CalendarWeekRule = CalendarWeekRule.FirstDay;\r\n        DateSeparator: string = \"/\";\r\n        DayNames: string[] = [\r\n            \"Sunday\",\r\n            \"Monday\",\r\n            \"Tuesday\",\r\n            \"Wednesday\",\r\n            \"Thursday\",\r\n            \"Friday\",\r\n            \"Saturday\"\r\n        ];\r\n        FirstDayOfWeek: DayOfWeek = DayOfWeek.Sunday;\r\n        FullDateTimePattern: string = \"dddd, MMMM dd, yyyy h:mm:ss tt\";\r\n        LongDatePattern: string = \"dddd, MMMM dd, yyyy\";\r\n        LongTimePattern: string = \"h:mm:ss tt\";\r\n        MonthDayPattern: string = \"MMMM dd\";\r\n        MonthGenitiveNames: string[] = [\r\n            \"January\",\r\n            \"February\",\r\n            \"March\",\r\n            \"April\",\r\n            \"May\",\r\n            \"June\",\r\n            \"July\",\r\n            \"August\",\r\n            \"September\",\r\n            \"October\",\r\n            \"November\",\r\n            \"December\",\r\n            \"\"\r\n        ];\r\n        MonthNames: string[] = [\r\n            \"January\",\r\n            \"February\",\r\n            \"March\",\r\n            \"April\",\r\n            \"May\",\r\n            \"June\",\r\n            \"July\",\r\n            \"August\",\r\n            \"September\",\r\n            \"October\",\r\n            \"November\",\r\n            \"December\"\r\n        ];\r\n        PMDesignator: string = \"PM\";\r\n        RFC1123Pattern: string = \"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'\";\r\n        ShortDatePattern: string = \"M/d/yyyy\";\r\n        ShortestDayNames: string[] = [\r\n            \"Su\",\r\n            \"Mo\",\r\n            \"Tu\",\r\n            \"We\",\r\n            \"Th\",\r\n            \"Fr\",\r\n            \"Sa\"\r\n        ];\r\n        ShortTimePattern: string = \"h:mm tt\";\r\n        SortableDateTimePattern: string = \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\";\r\n        TimeSeparator: string = \":\";\r\n        UniversalSortableDateTimePattern: string = \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\";\r\n        YearMonthPattern: string = \"MMMM, yyyy\";\r\n\r\n        HasForceTwoDigitYears: boolean = false;\r\n\r\n        GetEraName(era: number): string {\r\n            if (era === 0)\r\n                era = this.Calendar.CurrentEraValue;\r\n            if (era < 0)\r\n                throw new ArgumentException(\"era\");\r\n            var eras = this.Calendar.EraNames;\r\n            if (era >= eras.length)\r\n                throw new ArgumentException(\"era\");\r\n            return eras[era];\r\n        }\r\n\r\n        constructor(calendar: Calendar) {\r\n            Object.defineProperties(this, {\r\n                \"Calendar\": {value: calendar, writable: false}\r\n            });\r\n        }\r\n\r\n        static ParseRepeatPattern(format: string, pos: number, patternChar: string): number {\r\n            var length = format.length;\r\n            var index = pos + 1;\r\n            var code = patternChar.charCodeAt(0);\r\n            while (index < length && format.charCodeAt(index) === code)\r\n                ++index;\r\n            return index - pos;\r\n        }\r\n\r\n        static ParseNextChar(format: string, pos: number): number {\r\n            if (pos >= format.length - 1)\r\n                return -1;\r\n            return format.charCodeAt(pos + 1);\r\n        }\r\n\r\n        static ParseQuoteString(format: string, pos: number, result: string[]): number {\r\n            var length = format.length;\r\n            var num = pos;\r\n            var ch1 = format[pos++];\r\n            var flag = false;\r\n            var special = String.fromCharCode(92);\r\n            while (pos < length) {\r\n                var ch2 = format[pos++];\r\n                if (ch2 === ch1) {\r\n                    flag = true;\r\n                    break;\r\n                } else if (ch2 === special) {\r\n                    if (pos >= length)\r\n                        throw new FormatException(\"Invalid format string.\");\r\n                    result.push(format[pos++]);\r\n                } else\r\n                    result.push(ch2);\r\n            }\r\n            if (flag)\r\n                return pos - num;\r\n            throw new FormatException(\"Bad quote: \" + ch1);\r\n        }\r\n\r\n        static FormatDigits(sb: string[], value: number, len: number, overrideLenLimit?: boolean) {\r\n            if (!overrideLenLimit && len > 2)\r\n                len = 2;\r\n\r\n            var s = Math.floor(value).toString();\r\n            while (s.length < len)\r\n                s = \"0\" + s;\r\n            sb.push(s);\r\n        }\r\n\r\n        static FormatMonth(month: number, repeat: number, info: DateTimeFormatInfo): string {\r\n            if (repeat === 3)\r\n                return info.AbbreviatedMonthNames[month - 1];\r\n            return info.MonthNames[month - 1];\r\n        }\r\n\r\n        static FormatDayOfWeek(dayOfWeek: DayOfWeek, repeat: number, info: DateTimeFormatInfo): string {\r\n            if (repeat === 3)\r\n                return info.AbbreviatedDayNames[dayOfWeek];\r\n            return info.DayNames[dayOfWeek];\r\n        }\r\n\r\n        static HebrewFormatDigits(sb: string[], digits: number) {\r\n            //TODO:\r\n            console.warn(\"Hebrew not implemented\");\r\n            return digits.toString();\r\n        }\r\n\r\n        static FormatHebrewMonthName(obj: DateTime, month: number, repeat: number, info: DateTimeFormatInfo): string {\r\n            console.warn(\"Hebrew not implemented\");\r\n            return DateTimeFormatInfo.FormatMonth(month, repeat, info);\r\n            /*\r\n             if (info.Calendar.IsLeapYear(info.Calendar.GetYear(obj)))\r\n             return info.internalGetMonthName(month, MonthNameStyles.LeapYear, repeat === 3);\r\n             */\r\n            if (month >= 7)\r\n                ++month;\r\n            if (repeat === 3)\r\n                return info.AbbreviatedMonthNames[month - 1];\r\n            return info.MonthNames[month - 1];\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Localization/DateTimeFormatter.ts",
    "content": "﻿/// <reference path=\"../Primitives/DateTime.ts\" />\r\n/// <reference path=\"Format.ts\" />\r\n\r\nmodule Fayde.Localization {\r\n    RegisterFormattable(DateTime, (obj: any, format: string, provider?: any): string => {\r\n        if (!format)\r\n            return undefined;\r\n        if (obj == null)\r\n            return null;\r\n        if (obj.constructor !== DateTime)\r\n            return null;\r\n        var res = tryStandardFormat(<DateTime>obj, format);\r\n        if (res != undefined)\r\n            return res;\r\n        return tryCustomFormat(<DateTime>obj, format, TimeSpan.MinValue);\r\n    });\r\n\r\n    // Standard Formats\r\n    // d        Short date\r\n    // D        Long date\r\n    // f        Full date/time (short time)\r\n    // F        Full date/time (long time)\r\n    // g        General date/time (short time)\r\n    // G        General date/time (long time)\r\n    // M, m     Month/day\r\n    // R, r     RFC1123\r\n    // s        Sortable date/time\r\n    // t        Short time\r\n    // T        Long time\r\n    // u        Universal sortable date/time\r\n    // U        Universal full date/time\r\n    // Y, y     Year month\r\n\r\n    function tryStandardFormat(obj: DateTime, format: string): string {\r\n        if (format.length !== 1)\r\n            return undefined;\r\n        var ch = format[0];\r\n        if (!ch)\r\n            return undefined;\r\n        var f = standardFormatters[ch];\r\n        if (!f)\r\n            return undefined;\r\n        return f(obj);\r\n    }\r\n    interface IStandardFormatter {\r\n        (obj: DateTime): string;\r\n    }\r\n    var standardFormatters: IStandardFormatter[] = [];\r\n    standardFormatters[\"d\"] = function (obj: DateTime): string {\r\n        return [\r\n            obj.Month.toString(),\r\n            obj.Day.toString(),\r\n            obj.Year.toString()\r\n        ].join(\"/\");\r\n    };\r\n    standardFormatters[\"D\"] = function (obj: DateTime): string {\r\n        var info = getDateTimeFormat();\r\n        return [\r\n            info.DayNames[obj.DayOfWeek],\r\n            \", \",\r\n            info.MonthNames[obj.Month - 1],\r\n            \" \",\r\n            obj.Day.toString(),\r\n            \", \",\r\n            obj.Year.toString()\r\n        ].join(\"\");\r\n    };\r\n    standardFormatters[\"f\"] = function (obj: DateTime): string {\r\n        return [\r\n            standardFormatters[\"D\"](obj),\r\n            standardFormatters[\"t\"](obj)\r\n        ].join(\" \");\r\n    };\r\n    standardFormatters[\"F\"] = function (obj: DateTime): string {\r\n        return [\r\n            standardFormatters[\"D\"](obj),\r\n            standardFormatters[\"T\"](obj)\r\n        ].join(\" \");\r\n    };\r\n    standardFormatters[\"g\"] = function (obj: DateTime): string {\r\n        return [\r\n            standardFormatters[\"d\"](obj),\r\n            standardFormatters[\"t\"](obj)\r\n        ].join(\" \");\r\n    };\r\n    standardFormatters[\"G\"] = function (obj: DateTime): string {\r\n        return [\r\n            standardFormatters[\"d\"](obj),\r\n            standardFormatters[\"T\"](obj)\r\n        ].join(\" \");\r\n    };\r\n    standardFormatters[\"m\"] = standardFormatters[\"M\"] = function (obj: DateTime): string {\r\n        var info = getDateTimeFormat();\r\n        return [\r\n            info.MonthNames[obj.Month - 1],\r\n            obj.Day\r\n        ].join(\" \");\r\n    };\r\n    standardFormatters[\"r\"] = standardFormatters[\"R\"] = function (obj: DateTime): string {\r\n        var utc = obj.ToUniversalTime();\r\n        var info = getDateTimeFormat();\r\n        return [\r\n            info.AbbreviatedDayNames[utc.DayOfWeek],\r\n            \", \",\r\n            utc.Day,\r\n            \" \",\r\n            info.AbbreviatedMonthNames[utc.Month-1],\r\n            \" \",\r\n            utc.Year,\r\n            \" \",\r\n            utc.Hour,\r\n            \":\",\r\n            utc.Minute,\r\n            \":\",\r\n            utc.Second,\r\n            \" GMT\"\r\n        ].join(\"\");\r\n    };\r\n    standardFormatters[\"s\"] = function (obj: DateTime): string {\r\n        return [\r\n            obj.Year,\r\n            \"-\",\r\n            padded(obj.Month),\r\n            \"-\",\r\n            padded(obj.Day),\r\n            \"T\",\r\n            padded(obj.Hour),\r\n            \":\",\r\n            padded(obj.Minute),\r\n            \":\",\r\n            padded(obj.Second)\r\n\r\n        ].join(\"\");\r\n    };\r\n    standardFormatters[\"t\"] = function (obj: DateTime): string {\r\n        var info = getDateTimeFormat();\r\n        var hour = obj.Hour;\r\n        var desig = info.AMDesignator;\r\n        if (hour > 12) {\r\n            hour -= 12;\r\n            desig = info.PMDesignator;\r\n        }\r\n        return [\r\n            hour.toString(),\r\n            \":\",\r\n            obj.Minute.toString(),\r\n            \" \",\r\n            desig\r\n        ].join(\"\");\r\n    };\r\n    standardFormatters[\"T\"] = function (obj: DateTime): string {\r\n        var info = getDateTimeFormat();\r\n        var hour = obj.Hour;\r\n        var desig = info.AMDesignator;\r\n        if (hour > 12) {\r\n            hour -= 12;\r\n            desig = info.PMDesignator;\r\n        }\r\n        return [\r\n            hour.toString(),\r\n            \":\",\r\n            obj.Minute.toString(),\r\n            \":\",\r\n            obj.Second.toString(),\r\n            \" \",\r\n            desig\r\n        ].join(\"\");\r\n    };\r\n    standardFormatters[\"u\"] = function (obj: DateTime): string {\r\n        return [\r\n            obj.Year.toString(),\r\n            \"-\",\r\n            padded(obj.Month),\r\n            \"-\",\r\n            padded(obj.Day),\r\n            \" \",\r\n            padded(obj.Hour),\r\n            \":\",\r\n            padded(obj.Minute),\r\n            \":\",\r\n            padded(obj.Second),\r\n            \"Z\"\r\n        ].join(\"\");\r\n    };\r\n    standardFormatters[\"U\"] = function (obj: DateTime): string {\r\n        var info = getDateTimeFormat();\r\n        var hour = obj.Hour;\r\n        var desig = info.AMDesignator;\r\n        if (hour > 12) {\r\n            hour -= 12;\r\n            desig = info.PMDesignator;\r\n        }\r\n        return [\r\n            info.DayNames[obj.DayOfWeek],\r\n            \", \",\r\n            info.MonthNames[obj.Month-1],\r\n            \" \",\r\n            obj.Day.toString(),\r\n            \", \",\r\n            obj.Year.toString(),\r\n            \" \",\r\n            hour.toString(),\r\n            \":\",\r\n            obj.Minute.toString(),\r\n            \":\",\r\n            obj.Second.toString(),\r\n            \" \",\r\n            desig\r\n        ].join(\"\");\r\n    };\r\n    standardFormatters[\"y\"] = standardFormatters[\"Y\"] = function (obj: DateTime): string {\r\n        var info = getDateTimeFormat();\r\n        return [\r\n            info.MonthNames[obj.Month - 1],\r\n            obj.Year\r\n        ].join(\", \");\r\n    };\r\n\r\n    function getDateTimeFormat(): DateTimeFormatInfo {\r\n        return CultureInfo.Current.DateTimeFormat;\r\n    }\r\n\r\n    function padded(num: number): string {\r\n        return num < 10 ? \"0\" + num.toString() : num.toString();\r\n    }\r\n\r\n    function tryCustomFormat(obj: DateTime, format: string, offset: TimeSpan): string {\r\n        var info = getDateTimeFormat();\r\n        var calendar = info.Calendar;\r\n        var stringBuilder: string[] = [];\r\n        var flag = calendar.ID === 8;\r\n        var timeOnly = true;\r\n        var index = 0;\r\n        var len: number;\r\n        while (index < format.length) {\r\n            var patternChar = format[index];\r\n            switch (patternChar) {\r\n                case 'm':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    DateTimeFormatInfo.FormatDigits(stringBuilder, obj.Minute, len);\r\n                    break;\r\n                case 's':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    DateTimeFormatInfo.FormatDigits(stringBuilder, obj.Second, len);\r\n                    break;\r\n                case 't':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    if (len === 1) {\r\n                        if (obj.Hour < 12) {\r\n                            if (info.AMDesignator.length >= 1) {\r\n                                stringBuilder.push(info.AMDesignator[0]);\r\n                                break;\r\n                            } else\r\n                                break;\r\n                        } else if (info.PMDesignator.length >= 1) {\r\n                            stringBuilder.push(info.PMDesignator[0]);\r\n                            break;\r\n                        } else\r\n                            break;\r\n                    } else {\r\n                        stringBuilder.push(obj.Hour < 12 ? info.AMDesignator : info.PMDesignator);\r\n                        break;\r\n                    }\r\n                case 'y':\r\n                    var year = obj.Year;\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    if (info.HasForceTwoDigitYears)\r\n                        DateTimeFormatInfo.FormatDigits(stringBuilder, year, len <= 2 ? len : 2);\r\n                    else if (calendar.ID === 8)\r\n                        DateTimeFormatInfo.HebrewFormatDigits(stringBuilder, year);\r\n                    else if (len <= 2) {\r\n                        DateTimeFormatInfo.FormatDigits(stringBuilder, year % 100, len);\r\n                    } else {\r\n                        stringBuilder.push(FormatSingle(year, \"D\" + len.toString()));\r\n                    }\r\n                    timeOnly = false;\r\n                    break;\r\n                case 'z':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    //DateTimeFormatInfo.FormatCustomizedTimeZone(obj, offset, format, len, timeOnly, stringBuilder);\r\n                    console.warn(\"DateTime 'z' not implemented\");\r\n                    break;\r\n                case 'K':\r\n                    len = 1;\r\n                    //DateTimeFormatInfo.FormatCustomizedRoundripTimeZone(obj, offset, stringBuilder);\r\n                    console.warn(\"DateTime 'K' not implemented\");\r\n                    break;\r\n                case 'M':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    var month = obj.Month;\r\n                    if (len <= 2) {\r\n                        if (flag)\r\n                            DateTimeFormatInfo.HebrewFormatDigits(stringBuilder, month);\r\n                        else\r\n                            DateTimeFormatInfo.FormatDigits(stringBuilder, month, len);\r\n                    }\r\n                    else if (flag)\r\n                        stringBuilder.push(DateTimeFormatInfo.FormatHebrewMonthName(obj, month, len, info));\r\n                    /*else if ((info.FormatFlags & DateTimeFormatFlags.UseGenitiveMonth) !== DateTimeFormatFlags.None && len >= 4)\r\n                        stringBuilder.push(info.internalGetMonthName(month, DateTimeFormat.IsUseGenitiveForm(format, index, len, 'd') ? MonthNameStyles.Genitive : MonthNameStyles.Regular, false));*/\r\n                    else\r\n                        stringBuilder.push(DateTimeFormatInfo.FormatMonth(month, len, info));\r\n                    timeOnly = false;\r\n                    break;\r\n                case '\\\\':\r\n                    var num2 = DateTimeFormatInfo.ParseNextChar(format, index);\r\n                    if (num2 < 0)\r\n                        throw formatError();\r\n                    stringBuilder.push(String.fromCharCode(num2));\r\n                    len = 2;\r\n                    break;\r\n                case 'd':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    if (len <= 2) {\r\n                        var dayOfMonth = obj.Day;\r\n                        if (flag)\r\n                            DateTimeFormatInfo.HebrewFormatDigits(stringBuilder, dayOfMonth);\r\n                        else\r\n                            DateTimeFormatInfo.FormatDigits(stringBuilder, dayOfMonth, len);\r\n                    } else {\r\n                        var dayOfWeek = obj.DayOfWeek;\r\n                        stringBuilder.push(DateTimeFormatInfo.FormatDayOfWeek(dayOfWeek, len, info));\r\n                    }\r\n                    timeOnly = false;\r\n                    break;\r\n                case 'f':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    if (len > 7)\r\n                        throw formatError();\r\n                    stringBuilder.push(msf(obj.Millisecond, len));\r\n                    break;\r\n                case 'F':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    if (len > 7)\r\n                        throw formatError();\r\n                    stringBuilder.push(msF(obj.Millisecond, len));\r\n                    break;\r\n                case 'g':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    stringBuilder.push(info.GetEraName(1));\r\n                    break;\r\n                case 'h':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    var num5 = obj.Hour % 12;\r\n                    if (num5 === 0)\r\n                        num5 = 12;\r\n                    DateTimeFormatInfo.FormatDigits(stringBuilder, num5, len);\r\n                    break;\r\n                case '/':\r\n                    stringBuilder.push(info.DateSeparator);\r\n                    len = 1;\r\n                    break;\r\n                case ':':\r\n                    stringBuilder.push(info.TimeSeparator);\r\n                    len = 1;\r\n                    break;\r\n                case 'H':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, index, patternChar);\r\n                    DateTimeFormatInfo.FormatDigits(stringBuilder, obj.Hour, len);\r\n                    break;\r\n                case '\"':\r\n                case '\\'':\r\n                    len = DateTimeFormatInfo.ParseQuoteString(format, index, stringBuilder);\r\n                    break;\r\n                case '%':\r\n                    var num6 = DateTimeFormatInfo.ParseNextChar(format, index);\r\n                    if (num6 < 0 || num6 === 37)\r\n                        throw formatError();\r\n                    stringBuilder.push(tryCustomFormat(obj, String.fromCharCode(num6), offset));\r\n                    len = 2;\r\n                    break;\r\n                default:\r\n                    stringBuilder.push(patternChar);\r\n                    len = 1;\r\n                    break;\r\n            }\r\n            index += len;\r\n        }\r\n        return stringBuilder.join(\"\");\r\n    }\r\n\r\n    function msf(ms: number, len: number): string {\r\n        var s = Math.abs(ms).toString();\r\n        while (s.length < 3)\r\n            s = \"0\" + s;\r\n        s += \"0000\";\r\n        return s.substr(0, len);\r\n    }\r\n    function msF(ms: number, len: number): string {\r\n        var f = msf(ms, len);\r\n        var end = f.length - 1;\r\n        for (; end >= 0; end--) {\r\n            if (f[end] !== \"0\")\r\n                break;\r\n        }\r\n        return f.slice(0, end + 1);\r\n    }\r\n    \r\n    function formatError(): FormatException {\r\n        return new FormatException(\"Invalid format string.\");\r\n    }\r\n}"
  },
  {
    "path": "src/Localization/Format.ts",
    "content": "﻿module Fayde.Localization {\r\n    export function Format(format: string, ...items: any[]): string {\r\n        var sb: string[] = [];\r\n        appendFormat(sb, format, items);\r\n        return sb.join(\"\");\r\n    }\r\n    export function FormatSingle(obj: any, format: string): string {\r\n        return doFormattable(obj, format);\r\n    }\r\n\r\n    function appendFormat(_this: string[], format: string, args: any[], provider?: any) {\r\n        if (format == null || args == null)\r\n            throw new ArgumentNullException(format == null ? \"format\" : \"args\");\r\n        var index1 = 0;\r\n        var length = format.length;\r\n        var ch = 0;\r\n        while (true) {\r\n            var flag = false;\r\n            var repeatCount = 0;\r\n            var breakout = false;\r\n            do {\r\n                if (index1 < length) {\r\n                    ch = format.charCodeAt(index1);\r\n                    ++index1;\r\n                    if (ch === 125) {\r\n                        if (index1 < length && format.charCodeAt(index1) === 125)\r\n                            ++index1;\r\n                        else\r\n                            throw formatError();\r\n                    }\r\n                    if (ch === 123) {\r\n                        if (index1 >= length || format.charCodeAt(index1) !== 123)\r\n                            --index1;\r\n                        else {\r\n                            breakout = true;\r\n                            ++index1;\r\n                            break;\r\n                        }\r\n                    } else {\r\n                        _this.push(String.fromCharCode(ch));\r\n                        breakout = true;\r\n                        break;\r\n                    }\r\n                }\r\n                if (index1 != length) {\r\n                    var index2 = index1 + 1;\r\n                    if (index2 === length || (ch = format.charCodeAt(index2)) < 48 || ch > 57)\r\n                        throw formatError();\r\n                    var index3 = 0;\r\n                    do {\r\n                        index3 = index3 * 10 + ch - 48;\r\n                        ++index2;\r\n                        if (index2 == length)\r\n                            throw formatError();\r\n                        ch = format.charCodeAt(index2);\r\n                    }\r\n                    while (ch >= 48 && ch <= 57 && index3 < 1000000);\r\n                    if (index3 >= args.length)\r\n                        throw new FormatException(\"Index out of range.\");\r\n                    while (index2 < length && (ch = format.charCodeAt(index2)) === 32)\r\n                        ++index2;\r\n                    flag = false;\r\n                    var num = 0;\r\n                    if (ch === 44) {\r\n                        ++index2;\r\n                        while (index2 < length && format.charCodeAt(index2) === 32)\r\n                            ++index2;\r\n                        if (index2 == length)\r\n                            throw formatError();\r\n                        ch = format.charCodeAt(index2);\r\n                        if (ch === 45) {\r\n                            flag = true;\r\n                            ++index2;\r\n                            if (index2 == length)\r\n                                throw formatError();\r\n                            ch = format.charCodeAt(index2);\r\n                        }\r\n                        if (ch < 48 || ch > 57)\r\n                            throw formatError();\r\n                        do {\r\n                            num = num * 10 + ch - 48;\r\n                            ++index2;\r\n                            if (index2 == length)\r\n                                throw formatError();\r\n                            ch = format.charCodeAt(index2);\r\n                        } while (ch >= 48 && ch <= 57 && num < 1000000);\r\n                    }\r\n                    while (index2 < length && (ch = format.charCodeAt(index2)) === 32)\r\n                        ++index2;\r\n                    var obj = args[index3];\r\n                    var stringBuilder: string[] = null;\r\n                    if (ch === 58) {\r\n                        var index4 = index2 + 1;\r\n                        while (true) {\r\n                            if (index4 === length)\r\n                                throw formatError();\r\n                            ch = format.charCodeAt(index4);\r\n                            ++index4;\r\n                            if (ch === 123) {\r\n                                if (index4 < length && format.charCodeAt(index4) === 123)\r\n                                    ++index4;\r\n                                else\r\n                                    throw formatError();\r\n                            } else if (ch === 125) {\r\n                                if (index4 < length && format.charCodeAt(index4) === 125)\r\n                                    ++index4;\r\n                                else\r\n                                    break;\r\n                            }\r\n                            stringBuilder = stringBuilder || [];\r\n                            stringBuilder.push(String.fromCharCode(ch));\r\n                        }\r\n                        index2 = index4 - 1;\r\n                    }\r\n                    if (ch !== 125)\r\n                        throw formatError();\r\n                    index1 = index2 + 1;\r\n                    var str = formatItem(obj, stringBuilder, provider) || \"\";\r\n                    repeatCount = num - str.length;\r\n                    if (!flag && repeatCount > 0)\r\n                        pushMany(_this, ' ', repeatCount);\r\n                    _this.push(str);\r\n                }\r\n                else\r\n                    return;\r\n            } while (!flag || repeatCount <= 0);\r\n            if (!breakout)\r\n                pushMany(_this, ' ', repeatCount);\r\n        }\r\n    }\r\n    function formatItem(obj: any, stringBuilder: string[], provider: any): string {\r\n        var format1: string = null;\r\n        var str: string = null;\r\n        /*\r\n        if (customFormatter != null) {\r\n            if (stringBuilder != null)\r\n                format1 = stringBuilderToString(stringBuilder);\r\n            str = customFormatter.Format(format1, obj, provider);\r\n        }\r\n        */\r\n        if (str == null) {\r\n            if (format1 == null && stringBuilder != null)\r\n                format1 = stringBuilderToString(stringBuilder);\r\n            var formatted = format1 == null ? (obj == null ? \"\" : obj.toString()) : doFormattable(obj, format1, provider);\r\n            if (formatted !== undefined)\r\n                str = formatted;\r\n        }\r\n        return str;\r\n    }\r\n    function pushMany(arr: string[], s: string, count: number) {\r\n        for (var i = count - 1; i >= 0; i--) {\r\n            arr.push(s);\r\n        }\r\n    }\r\n    function formatError(): FormatException {\r\n        return new FormatException(\"Invalid format string.\");\r\n    }\r\n    function stringBuilderToString(arr: string[]): string {\r\n        return arr.join(\"\");\r\n    }\r\n\r\n    export interface IFormattable {\r\n        (obj: any, format: string, provider?: any): string;\r\n    }\r\n    var formatters: IFormattable[] = [];\r\n    export function RegisterFormattable(type: Function, formatter: IFormattable) {\r\n        formatters[(<any>type)] = formatter;\r\n    }\r\n    function doFormattable(obj: any, format: string, provider?: any): string {\r\n        if (obj == null)\r\n            return undefined;\r\n        var type = obj.constructor;\r\n        var formatter = formatters[(<number>type)];\r\n        if (!formatter)\r\n            return undefined;\r\n        return formatter(obj, format, provider);\r\n    }\r\n} "
  },
  {
    "path": "src/Localization/GregorianCalendar.ts",
    "content": "module Fayde.Localization {\n    export class GregorianCalendar extends Calendar {\n        private static DaysToMonth365: number[] = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n        private static DaysToMonth366: number[] = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n\n        GetDaysInMonth(year: number, month: number, era: number): number {\n            if (month < 1 || month > 12)\n                throw new ArgumentOutOfRangeException(\"Invalid month\");\n            var monthDays = this.IsLeapYear(year, era)\n                ? GregorianCalendar.DaysToMonth365\n                : GregorianCalendar.DaysToMonth366;\n            return monthDays[month] - monthDays[month - 1];\n        }\n\n        AddMonths(time: DateTime, months: number): DateTime {\n            if (months < -120000 || months > 120000) {\n                throw new ArgumentOutOfRangeException(\"Invalid months argument\");\n            }\n            var datePart1 = this.GetDatePart(time.Ticks, 0);\n            var datePart2 = this.GetDatePart(time.Ticks, 2);\n            var day = this.GetDatePart(time.Ticks, 3);\n            var num1 = datePart2 - 1 + months;\n            var month = 0,\n                year = 0;\n            if (num1 >= 0) {\n                month = num1 % 12 + 1;\n                year = datePart1 + num1 / 12;\n            } else {\n                month = 12 + (num1 + 1) % 12;\n                year = datePart1 + (num1 - 11) / 12;\n            }\n\n            day = Math.min(day, this.GetDaysInMonth(year, month, this.CurrentEra));\n            var ticks = this.DateToTicks(year, month, day) + time.Ticks % 864000000000;\n            Calendar.CheckAddResult(ticks, this.MinSupportedDateTime, this.MaxSupportedDateTime);\n            return new DateTime(ticks);\n        }\n\n        GetDayOfWeek(time: DateTime): DayOfWeek {\n            return <DayOfWeek>Math.floor(time.Ticks / 864000000000 + 1) % 7;\n        }\n\n        IsLeapYear(year: number, era?: number): boolean {\n            return isLeapYear(year);\n        }\n\n        protected  GetDatePart(ticks: number, part: number): number {\n            var num1 = Math.floor(ticks / 864000000000);\n            var num2 = num1 / 146097;\n            var num3 = num1 - num2 * 146097;\n            var num4 = num3 / 36524;\n            if (num4 === 4)\n                num4 = 3;\n            var num5 = num3 - num4 * 36524;\n            var num6 = num5 / 1461;\n            var num7 = num5 - num6 * 1461;\n            var num8 = num7 / 365;\n            if (num8 === 4)\n                num8 = 3;\n            if (part === 0)\n                return num2 * 400 + num4 * 100 + num6 * 4 + num8 + 1;\n            var num9 = num7 - num8 * 365;\n            if (part === 1)\n                return num9 + 1;\n            var numArray = (num8 !== 3 ? 0 : (num6 !== 24 ? 1 : (num4 === 3 ? 1 : 0))) !== 0 ? GregorianCalendar.DaysToMonth366 : GregorianCalendar.DaysToMonth365;\n            var index = num9 >> 6;\n            while (num9 >= numArray[index])\n                ++index;\n            if (part === 2)\n                return index;\n            return num9 - numArray[index - 1] + 1;\n        }\n\n        protected DateToTicks(year: number, month: number, day: number): number {\n            return this.GetAbsoluteDate(year, month, day) * 864000000000;\n        }\n\n        protected GetAbsoluteDate(year: number, month: number, day: number): number {\n            var days = this.GetDaysInMonth(year, month, this.CurrentEra);\n            if (day >= 1 && day <= days) {\n                var prevYear = year - 1;\n                var daysInPrevMonth = this.IsLeapYear(year, this.CurrentEra)\n                    ? GregorianCalendar.DaysToMonth365[month - 1]\n                    : GregorianCalendar.DaysToMonth366[month - 1];\n                return Math.floor(prevYear * 365 + prevYear / 4 - prevYear / 100 + prevYear / 400 + daysInPrevMonth + day - 1);\n            }\n        }\n    }\n\n    function isLeapYear(year: number): boolean {\n        if (year < 1 || year > 9999)\n            throw new ArgumentOutOfRangeException(\"Invalid year\");\n        if (year % 4 !== 0)\n            return false;\n        if (year % 100 === 0)\n            return year % 400 == 0;\n        return true;\n    }\n}"
  },
  {
    "path": "src/Localization/NumberFormatInfo.ts",
    "content": "﻿module Fayde.Localization {\r\n    export class NumberFormatInfo {\r\n        CurrencyDecimalDigits: number = 2;\r\n        CurrencyDecimalSeparator: string = \".\";\r\n        CurrencyGroupSeparator: string = \",\";\r\n        CurrencyGroupSizes: number[] = [3];\r\n        CurrencyNegativePattern: number = 0;\r\n        CurrencyPositivePattern: number = 0;\r\n        CurrencySymbol: string = \"$\";\r\n\r\n        NaNSymbol: string = \"NaN\";\r\n        NegativeInfinitySymbol: string = \"-Infinity\";\r\n        PositiveInfinitySymbol: string = \"Infinity\";\r\n        NegativeSign: string = \"-\";\r\n        PositiveSign: string = \"+\";\r\n\r\n        NumberDecimalDigits: number = 2;\r\n        NumberDecimalSeparator: string = \".\";\r\n        NumberGroupSeparator: string = \",\";\r\n        NumberGroupSizes: number[] = [3];\r\n        NumberNegativePattern: number = 1;\r\n\r\n        PercentDecimalDigits: number = 2;\r\n        PercentDecimalSeparator: string = \".\";\r\n        PercentGroupSeparator: string = \",\";\r\n        PercentGroupSizes: number[] = [3];\r\n        PercentNegativePattern: number = 0;\r\n        PercentPositivePattern: number = 0;\r\n        PercentSymbol: string = \"%\";\r\n\r\n        PerMilleSymbol: string = \"‰\";\r\n\r\n        static Instance = new NumberFormatInfo();\r\n\r\n        FormatCurrency(num: number, precision: number): string {\r\n            if (precision == null) precision = this.CurrencyDecimalDigits;\r\n            var rawnum = this.FormatRawNumber(Math.abs(num), precision, this.CurrencyDecimalSeparator, this.CurrencyGroupSeparator, this.CurrencyGroupSizes);\r\n            if (num < 0) {\r\n                switch (this.CurrencyNegativePattern) {\r\n                    case 0:\r\n                    default:\r\n                        return \"(\" + this.CurrencySymbol + rawnum + \")\";\r\n                    case 1:\r\n                        return [this.NegativeSign, this.CurrencySymbol, rawnum].join(\"\");\r\n                    case 2:\r\n                        return [this.CurrencySymbol, this.NegativeSign, rawnum].join(\"\");\r\n                    case 3:\r\n                        return [this.CurrencySymbol, rawnum, this.NegativeSign].join(\"\");\r\n                    case 4:\r\n                        return \"(\" + rawnum + this.CurrencySymbol + \")\";\r\n                    case 5:\r\n                        return [this.NegativeSign, rawnum, this.CurrencySymbol].join(\"\");\r\n                    case 6:\r\n                        return [rawnum, this.NegativeSign, this.CurrencySymbol].join(\"\");\r\n                    case 7:\r\n                        return [rawnum, this.CurrencySymbol, this.NegativeSign].join(\"\");\r\n                    case 8:\r\n                        return [this.NegativeSign, rawnum, \" \", this.CurrencySymbol].join(\"\");\r\n                    case 9:\r\n                        return [this.NegativeSign, this.CurrencySymbol, \" \", rawnum].join(\"\");\r\n                    case 10:\r\n                        return [rawnum, \" \", this.CurrencySymbol, this.NegativeSign].join(\"\");\r\n                    case 11:\r\n                        return [this.CurrencySymbol, \" \", rawnum, this.NegativeSign].join(\"\");\r\n                    case 12:\r\n                        return [this.CurrencySymbol, \" \", this.NegativeSign, rawnum].join(\"\");\r\n                    case 13:\r\n                        return [rawnum, this.NegativeSign, \" \", this.CurrencySymbol].join(\"\");\r\n                    case 14:\r\n                        return \"(\" + this.CurrencySymbol + \" \" + rawnum + \")\";\r\n                    case 15:\r\n                        return \"(\" + rawnum + \" \" + this.CurrencySymbol + \")\";\r\n                }\r\n            } else {\r\n                switch (this.CurrencyPositivePattern) {\r\n                    case 0:\r\n                    default:\r\n                        return [this.CurrencySymbol, rawnum].join(\"\");\r\n                    case 1:\r\n                        return [rawnum, this.CurrencySymbol].join(\"\");\r\n                    case 2:\r\n                        return [this.CurrencySymbol, rawnum].join(\" \");\r\n                    case 3:\r\n                        return [rawnum, this.CurrencySymbol].join(\" \");\r\n                }\r\n            }\r\n        }\r\n        FormatNumber(num: number, precision: number, ignoreGroupSep?: boolean): string {\r\n            if (precision == null) precision = this.NumberDecimalDigits;\r\n            var rawnum = this.FormatRawNumber(Math.abs(num), precision, this.NumberDecimalSeparator, ignoreGroupSep ? \"\" : this.NumberGroupSeparator, this.NumberGroupSizes);\r\n            if (num >= 0)\r\n                return rawnum;\r\n            switch (this.NumberNegativePattern) {\r\n                case 0:\r\n                    return \"(\" + rawnum + \")\";\r\n                case 1:\r\n                default:\r\n                    return [this.NegativeSign, rawnum].join(\"\");\r\n                case 2:\r\n                    return [this.NegativeSign, rawnum].join(\" \");\r\n                case 3:\r\n                    return [rawnum, this.NegativeSign].join(\"\");\r\n                case 4:\r\n                    return [rawnum, this.NegativeSign].join(\" \");\r\n            }\r\n        }\r\n        FormatPercent(num: number, precision: number): string {\r\n            if (precision == null) precision = this.PercentDecimalDigits;\r\n            var rawnum = this.FormatRawNumber(Math.abs(num * 100), precision, this.PercentDecimalSeparator, this.PercentGroupSeparator, this.PercentGroupSizes);\r\n            var sym = this.PercentSymbol;\r\n            if (num < 0) {\r\n                var sign = this.NegativeSign;\r\n                switch (this.PercentNegativePattern) {\r\n                    case 0:\r\n                    default:\r\n                        return [sign, rawnum, \" \", sym].join(\"\");\r\n                    case 1:\r\n                        return [sign, rawnum, sym].join(\"\");\r\n                    case 2:\r\n                        return [sign, sym, rawnum].join(\"\");\r\n                    case 3:\r\n                        return [sym, sign, rawnum].join(\"\");\r\n                    case 4:\r\n                        return [sym, rawnum, sign].join(\"\");\r\n                    case 5:\r\n                        return [rawnum, sign, sym].join(\"\");\r\n                    case 6:\r\n                        return [rawnum, sym, sign].join(\"\");\r\n                    case 7:\r\n                        return [sign, sym, \" \", rawnum].join(\"\");\r\n                    case 8:\r\n                        return [sign, sym, \" \", rawnum].join(\"\");\r\n                    case 9:\r\n                        return [sym, \" \", rawnum, sign].join(\"\");\r\n                    case 10:\r\n                        return [sym, \" \", sign, rawnum].join(\"\");\r\n                    case 11:\r\n                        return [rawnum, sign, \" \", sym].join(\"\");\r\n                }\r\n            } else {\r\n                switch (this.PercentPositivePattern) {\r\n                    case 0:\r\n                    default:\r\n                        return [rawnum, this.PercentSymbol].join(\" \");\r\n                    case 1:\r\n                        return [rawnum, this.PercentSymbol].join(\"\");\r\n                    case 2:\r\n                        return [this.PercentSymbol, rawnum].join(\"\");\r\n                    case 3:\r\n                        return [this.PercentSymbol, rawnum].join(\" \");\r\n                }\r\n            }\r\n        }\r\n        FormatGeneral(num: number, precision: number): string {\r\n            if (precision == null) precision = 6;\r\n            var sig = sigDigits(Math.abs(num), precision);\r\n            var rawnum = sig.toString();\r\n            if (num >= 0)\r\n                return rawnum;\r\n            return this.NegativeSign + rawnum;\r\n        }\r\n        FormatDecimal(num: number, precision: number): string {\r\n            var rawnum = this.FormatRawNumber(Math.abs(num), 0, \"\", \"\", null);\r\n            var d = padded(rawnum, precision || 0, true);\r\n            if (num < 0)\r\n                d = this.NegativeSign + d;\r\n            return d;\r\n        }\r\n        FormatExponential(num: number, precision: number): string {\r\n            if (precision == null) precision = 6;\r\n            var e = num.toExponential(precision);\r\n            var tokens = e.split(\"e+\");\r\n            return tokens[0] + \"e\" + this.PositiveSign + padded(tokens[1], 3, true);\r\n        }\r\n        FormatHexadecimal(num: number, precision: number): string {\r\n            if (precision == null) precision = 2;\r\n            num = parseInt(<any>num);\r\n            if (num >= 0)\r\n                return padded(num.toString(16), precision, true);\r\n            var us = (Math.pow(2, 32) + num).toString(16);\r\n            if (precision >= us.length)\r\n                return padded(us, precision, true);\r\n            var start = 0;\r\n            while (us.length - start > precision && us[start] === \"f\") {\r\n                start++;\r\n            }\r\n            return us.substr(start);\r\n        }\r\n        FormatRawNumber(num: number, precision: number, decSep: string, groupSep: string, groupSizes: number[]): string {\r\n            //Ignoring group sizes for now: using [3]\r\n            var rounded = round(num, precision);\r\n            var ip = Math.floor(rounded).toString();\r\n            var fp = rounded.toString().split('.')[1];\r\n            var pfp = padded(fp, precision);\r\n            if (!pfp)\r\n                return grouped(ip, groupSep);\r\n            return [\r\n                grouped(ip, groupSep),\r\n                pfp\r\n            ].join(decSep);\r\n        }\r\n    }\r\n\r\n    function grouped(s: string, sep: string): string {\r\n        if (s.length < 4)\r\n            return s;\r\n        var offset = s.length % 3;\r\n        if (offset !== 0) {\r\n            offset = 3 - offset;\r\n            s = new Array(offset + 1).join(\"0\") + s;\r\n        }\r\n        return s.match(/\\d\\d\\d/g).join(sep).substr(offset);\r\n    }\r\n    function padded(s: string, precision: number, front?: boolean): string {\r\n        if (!s)\r\n            return new Array(precision + 1).join(\"0\");\r\n        if (s.length > precision)\r\n            return front ? s : s.substr(0, precision);\r\n        if (front)\r\n            return new Array(precision - s.length + 1).join(\"0\") + s;\r\n        return s + new Array(precision - s.length + 1).join(\"0\");\r\n    }\r\n    function round(num: number, places: number): number {\r\n        var factor = Math.pow(10, places);\r\n        return Math.round(num * factor) / factor;\r\n    }\r\n    function sigDigits(num: number, digits: number): number {\r\n        var n = num.toString();\r\n        var index = n.indexOf(\".\");\r\n        if (index > -1)\r\n            return round(num, digits - index);\r\n        return round(num, digits - n.length);\r\n    }\r\n\r\n    // Currency Negative Patterns\r\n    // 0      ($n)\r\n    // 1      -$n\r\n    // 2      $-n\r\n    // 3      $n-\r\n    // 4      (n$)\r\n    // 5      -n$\r\n    // 6      n-$\r\n    // 7      n$-\r\n    // 8      -n $\r\n    // 9      -$ n\r\n    // 10      n $-\r\n    // 11      $ n-\r\n    // 12      $ -n\r\n    // 13      n- $\r\n    // 14      ($ n)\r\n    // 15      (n $)\r\n    \r\n    // Currency Positive Patterns\r\n    // 0       $n\r\n    // 1       n$\r\n    // 2       $ n\r\n    // 3       n $\r\n\r\n    // Number Negative Patterns\r\n    // 0      (n)\r\n    // 1      -n\r\n    // 2      - n\r\n    // 3      n-\r\n    // 4      n -\r\n\r\n    // Percent Negative Patterns\r\n    // 0      -n %\r\n    // 1      -n%\r\n    // 2      -%n\r\n    // 3      %-n\r\n    // 4      %n-\r\n    // 5      n-%\r\n    // 6      n%-\r\n    // 7      -% n\r\n    // 8      n %-\r\n    // 9      % n-\r\n    // 10     % -n\r\n    // 11     n- %\r\n\r\n    // Percent Positive Patterns\r\n    // 0       n %\r\n    // 1       n%\r\n    // 2       %n\r\n    // 3       % n\r\n}"
  },
  {
    "path": "src/Localization/NumberFormatter.ts",
    "content": "﻿/// <reference path=\"Format.ts\" />\r\n\r\nmodule Fayde.Localization {\r\n    RegisterFormattable(Number, (obj: any, format: string, provider?: any): string => {\r\n        if (obj == null)\r\n            return null;\r\n        if (obj.constructor !== Number)\r\n            return null;\r\n        var res = tryStandardFormat(<number>obj, format);\r\n        if (res != undefined)\r\n            return res;\r\n        return format;\r\n    });\r\n\r\n    // Standard Formats\r\n    // C or c       Currency\r\n    // D or d       Decimal\r\n    // E or e       Exponential\r\n    // F or f       Fixed-point\r\n    // G or g       General\r\n    // N or n       Number\r\n    // P or p       Percent\r\n    // X or x       Hexadecimal\r\n\r\n    function tryStandardFormat(obj: number, format: string): string {\r\n        var ch = format[0];\r\n        if (!ch)\r\n            return undefined;\r\n        var lowerch = ch.toLowerCase();\r\n        if (lowerch < \"a\" || lowerch > \"z\")\r\n            return undefined;\r\n        var prec: number = null;\r\n        if (format.length > 1) {\r\n            var prec = parseInt(format.substr(1));\r\n            if (isNaN(prec))\r\n                return undefined;\r\n        }\r\n        \r\n        var f = standardFormatters[ch] || standardFormatters[lowerch];\r\n        if (!f)\r\n            return undefined;\r\n        return f(obj, prec);\r\n    }\r\n    interface IStandardFormatter {\r\n        (obj: number, precision: number): string;\r\n    }\r\n    var standardFormatters: IStandardFormatter[] = [];\r\n    standardFormatters[\"c\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatCurrency(obj, precision);\r\n    };\r\n    standardFormatters[\"d\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatDecimal(obj, precision);\r\n    };\r\n    standardFormatters[\"E\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatExponential(obj, precision).toUpperCase();\r\n    };\r\n    standardFormatters[\"e\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatExponential(obj, precision);\r\n    };\r\n    standardFormatters[\"f\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatNumber(obj, precision, true);\r\n    };\r\n    standardFormatters[\"g\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatGeneral(obj, precision);\r\n    };\r\n    standardFormatters[\"n\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatNumber(obj, precision);\r\n    };\r\n    standardFormatters[\"p\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatPercent(obj, precision);\r\n    };\r\n    standardFormatters[\"X\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatHexadecimal(obj, precision).toUpperCase();\r\n    };\r\n    standardFormatters[\"x\"] = function (obj: number, precision: number): string {\r\n        return NumberFormatInfo.Instance.FormatHexadecimal(obj, precision);\r\n    };\r\n}"
  },
  {
    "path": "src/Localization/TimeSpanFormatter.ts",
    "content": "﻿/// <reference path=\"../Primitives/TimeSpan.ts\" />\r\n/// <reference path=\"Format.ts\" />\r\n\r\nmodule Fayde.Localization {\r\n    RegisterFormattable(TimeSpan, (obj: any, format: string, provider?: any): string => {\r\n        if (!format)\r\n            return undefined;\r\n        if (obj == null)\r\n            return null;\r\n        if (obj.constructor !== TimeSpan)\r\n            return null;\r\n        var res = tryStandardFormat(<TimeSpan>obj, format);\r\n        if (res != undefined)\r\n            return res;\r\n        return tryCustomFormat(<TimeSpan>obj, format);\r\n    });\r\n\r\n    // Standard Formats\r\n    // c        Constant (invariant)\r\n    // g        General short\r\n    // G        General long\r\n    function tryStandardFormat(obj: TimeSpan, format: string): string {\r\n        if (format.length !== 1)\r\n            return undefined;\r\n        var ch = format[0];\r\n        if (!ch)\r\n            return undefined;\r\n        var f = standardFormatters[ch];\r\n        if (!f)\r\n            return undefined;\r\n        return f(obj);\r\n    }\r\n    interface IStandardFormatter {\r\n        (obj: TimeSpan): string;\r\n    }\r\n    var standardFormatters: IStandardFormatter[] = [];\r\n    standardFormatters[\"c\"] = standardFormatters[\"t\"] = standardFormatters[\"T\"] = function (obj: TimeSpan): string {\r\n        // [-][d’.’]hh’:’mm’:’ss[‘.’fffffff]\r\n        var info = getDateTimeFormat();\r\n        var s = [\r\n            padded(obj.Hours),\r\n            padded(obj.Minutes),\r\n            padded(obj.Seconds)\r\n        ].join(info.TimeSeparator);\r\n        var days = obj.Days;\r\n        if (days)\r\n            s = Math.abs(days) + \".\" + s;\r\n        var ms = obj.Milliseconds;\r\n        if (ms)\r\n            s += \".\" + msf(ms, 7);\r\n        if (obj.Ticks < 0)\r\n            s = \"-\" + s;\r\n        return s;\r\n    };\r\n    standardFormatters[\"g\"] = function (obj: TimeSpan): string {\r\n        // [-][d’:’]h’:’mm’:’ss[.FFFFFFF]\r\n        var info = getDateTimeFormat();\r\n        var s = [\r\n            Math.abs(obj.Hours),\r\n            padded(obj.Minutes),\r\n            padded(obj.Seconds)\r\n        ].join(info.TimeSeparator);\r\n        var days = obj.Days;\r\n        if (days)\r\n            s = Math.abs(days) + \":\" + s;\r\n        var ms = obj.Milliseconds;\r\n        if (ms)\r\n            s += \".\" + msF(ms, 7);\r\n        if (obj.Ticks < 0)\r\n            s = \"-\" + s;\r\n        return s;\r\n    };\r\n    standardFormatters[\"G\"] = function (obj: TimeSpan): string {\r\n        // [-]d’:’hh’:’mm’:’ss.fffffff\r\n        var info = getDateTimeFormat();\r\n        var s = [\r\n            Math.abs(obj.Days),\r\n            padded(obj.Hours),\r\n            padded(obj.Minutes),\r\n            padded(obj.Seconds)\r\n        ].join(info.TimeSeparator);\r\n        var ms = obj.Milliseconds;\r\n        s += \".\" + msf(ms, 7);\r\n        if (obj.Ticks < 0)\r\n            s = \"-\" + s;\r\n        return s;\r\n    };\r\n\r\n    function getDateTimeFormat(): DateTimeFormatInfo {\r\n        return CultureInfo.Current.DateTimeFormat;\r\n    }\r\n\r\n    function tryCustomFormat(obj: TimeSpan, format: string): string {\r\n        var days = Math.abs(obj.Days);\r\n        var hours = Math.abs(obj.Hours);\r\n        var minutes = Math.abs(obj.Minutes);\r\n        var seconds = Math.abs(obj.Seconds);\r\n        var ms = Math.abs(obj.Milliseconds);\r\n\r\n        var len: number;\r\n        var pos = 0;\r\n        var stringBuilder: string[] = [];\r\n        while (pos < format.length) {\r\n            var patternChar = format[pos];\r\n            switch (patternChar) {\r\n                case 'm':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\r\n                    if (len > 2)\r\n                        throw formatError();\r\n                    DateTimeFormatInfo.FormatDigits(stringBuilder, minutes, len);\r\n                    break;\r\n                case 's':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\r\n                    if (len > 2)\r\n                        throw formatError();\r\n                    DateTimeFormatInfo.FormatDigits(stringBuilder, seconds, len);\r\n                    break;\r\n                case '\\\\':\r\n                    var num7 = DateTimeFormatInfo.ParseNextChar(format, pos);\r\n                    if (num7 < 0)\r\n                        throw formatError();\r\n                    stringBuilder.push(String.fromCharCode(num7));\r\n                    len = 2;\r\n                    break;\r\n                case 'd':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\r\n                    if (len > 8)\r\n                        throw formatError();\r\n                    DateTimeFormatInfo.FormatDigits(stringBuilder, days, len, true);\r\n                    break;\r\n                case 'f':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\r\n                    if (len > 7)\r\n                        throw formatError();\r\n                    stringBuilder.push(msf(ms, len));\r\n                    break;\r\n                case 'F':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\r\n                    if (len > 7)\r\n                        throw formatError();\r\n                    stringBuilder.push(msF(ms, len));\r\n                    break;\r\n                case 'h':\r\n                    len = DateTimeFormatInfo.ParseRepeatPattern(format, pos, patternChar);\r\n                    if (len > 2)\r\n                        throw formatError();\r\n                    DateTimeFormatInfo.FormatDigits(stringBuilder, hours, len);\r\n                    break;\r\n                case '\"':\r\n                case '\\'':\r\n                    len = DateTimeFormatInfo.ParseQuoteString(format, pos, stringBuilder);\r\n                    break;\r\n                case '%':\r\n                    var num9 = DateTimeFormatInfo.ParseNextChar(format, pos);\r\n                    if (num9 < 0 || num9 === 37)\r\n                        throw formatError();\r\n                    stringBuilder.push(tryCustomFormat(obj, String.fromCharCode(num9)));\r\n                    len = 2;\r\n                    break;\r\n                default:\r\n                    throw formatError();\r\n            }\r\n            pos += len;\r\n        }\r\n        return stringBuilder.join(\"\");\r\n    }\r\n\r\n    function padded(num: number): string {\r\n        var s = Math.abs(num).toString();\r\n        return (s.length === 1) ? \"0\" + s : s;\r\n    }\r\n    function msf(ms: number, len: number): string {\r\n        var s = Math.abs(ms).toString();\r\n        while (s.length < 3)\r\n            s = \"0\" + s;\r\n        s += \"0000\";\r\n        return s.substr(0, len);\r\n    }\r\n    function msF(ms: number, len: number): string {\r\n        var f = msf(ms, len);\r\n        var end = f.length - 1;\r\n        for (; end >= 0; end--) {\r\n            if (f[end] !== \"0\")\r\n                break;\r\n        }\r\n        return f.slice(0, end + 1);\r\n    }\r\n\r\n    function formatError(): FormatException {\r\n        return new FormatException(\"Invalid format string.\");\r\n    }\r\n}"
  },
  {
    "path": "src/MVVM/AutoModel.ts",
    "content": "module Fayde.MVVM {\r\n    export interface IValidationFunc {\r\n        (value: any, propertyName: string, entity: any): any[];\r\n    }\r\n    export interface IAutoApplier<T> {\r\n        Notify(...properties: string[]): IAutoApplier<T>;\r\n        Notify(properties: string[]): IAutoApplier<T>;\r\n        Validate(propertyName: string, ...validators: IValidationFunc[]): IAutoApplier<T>;\r\n        Finish(): T;\r\n    }\r\n    export function AutoModel<T> (typeOrModel: any): IAutoApplier<T> {\r\n        var obj = getApplier(typeOrModel);\r\n\r\n        var props: string[] = [];\r\n        var validators: IValidationFunc[][] = [];\r\n\r\n        var applier = <IAutoApplier<T>>{\r\n            Notify (...properties: string[]): IAutoApplier<T> {\r\n                for (var i = 0; i < properties.length; i++) {\r\n                    var prop = properties[i];\r\n                    if (typeof prop === \"string\")\r\n                        props.push(prop);\r\n                    else if (Array.isArray(prop))\r\n                        props = props.concat(prop);\r\n                }\r\n                return applier;\r\n            },\r\n            Validate (propertyName: string, ...validations: IValidationFunc[]): IAutoApplier<T> {\r\n                var cur = validators[propertyName];\r\n                if (!cur)\r\n                    validators[propertyName] = validations;\r\n                else\r\n                    validators[propertyName] = cur.concat(validations);\r\n                return applier;\r\n            },\r\n            Finish (): T {\r\n                for (var i = 0, uprops = unique(props), len = uprops.length; i < len; i++) {\r\n                    var prop = uprops[i];\r\n                    applyProperty(obj, prop, validators[prop]);\r\n                }\r\n                return obj;\r\n            }\r\n        };\r\n        return applier;\r\n    }\r\n\r\n    function getApplier (typeOrModel: any): any {\r\n        if (typeof typeOrModel === \"function\")\r\n            return typeOrModel.prototype;\r\n        return typeOrModel;\r\n    }\r\n\r\n    function unique (arr: string[]): string[] {\r\n        var re: string[] = [];\r\n        for (var i = 0; i < arr.length; i++) {\r\n            var cur = arr[i];\r\n            if (re.indexOf(cur) > -1)\r\n                continue;\r\n            re.push(cur);\r\n        }\r\n        return re;\r\n    }\r\n\r\n    function applyProperty (obj: any, propertyName: string, validations: IValidationFunc[]) {\r\n        var initial = obj[propertyName];\r\n        var backingName = \"_$\" + propertyName + \"$_\";\r\n        obj[backingName] = initial;\r\n        if (validations && validations.length > 0) {\r\n            Object.defineProperty(obj, propertyName, {\r\n                get: function () {\r\n                    return this[backingName];\r\n                },\r\n                set: function (value: any) {\r\n                    this[backingName] = value;\r\n                    doValidate(this, value, propertyName, validations);\r\n                    this.OnPropertyChanged(propertyName);\r\n                }\r\n            });\r\n        } else {\r\n            Object.defineProperty(obj, propertyName, {\r\n                get: function () {\r\n                    return this[backingName];\r\n                },\r\n                set: function (value: any) {\r\n                    this[backingName] = value;\r\n                    this.OnPropertyChanged(propertyName);\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    function doValidate (entity: any, value: any, propertyName: string, validations: IValidationFunc[]) {\r\n        var errs = validate(entity, value, propertyName, validations);\r\n        entity.ClearErrors && entity.ClearErrors(propertyName);\r\n        if (!entity.AddError)\r\n            return;\r\n        for (var i = 0; i < errs.length; i++) {\r\n            entity.AddError(propertyName, errs[i]);\r\n        }\r\n    }\r\n\r\n    function validate (entity: any, value: any, propertyName: string, validations: IValidationFunc[]): string[] {\r\n        var all: string[] = [];\r\n        for (var i = 0; i < validations.length; i++) {\r\n            var func = validations[i];\r\n            var errors = func(value, propertyName, entity);\r\n            if (errors)\r\n                all = all.concat(errors);\r\n        }\r\n        return all;\r\n    }\r\n}"
  },
  {
    "path": "src/MVVM/DialogViewModel.ts",
    "content": "/// <reference path=\"ViewModelBase\" />\r\n\r\nmodule Fayde.MVVM {\r\n    export interface IDialogViewModelSettings<TAccept, TBuilder> {\r\n        AcceptAction?: (data: TAccept) => any;\r\n        CompleteAction?: (pars: IOverlayCompleteParameters) => any;\r\n        ViewModelBuilder?: (builder: TBuilder) => any;\r\n        CanOpen?: (builder: TBuilder) => boolean;\r\n    }\r\n\r\n    export class DialogViewModel<TBuilder, TAccept> extends ViewModelBase {\r\n        IsOpen = false;\r\n        OverlayDataContext: any = null;\r\n        RequestOpenCommand: RelayCommand;\r\n        ClosedCommand: RelayCommand;\r\n\r\n        AcceptAction: (data: TAccept) => any;\r\n        CompleteAction: (pars: IOverlayCompleteParameters) => any;\r\n        ViewModelBuilder: (builder: TBuilder) => any;\r\n        CanOpen: (builder: TBuilder) => boolean;\r\n\r\n        constructor (settings?: IDialogViewModelSettings<TAccept, TBuilder>) {\r\n            super();\r\n            this.RequestOpenCommand = new RelayCommand(par => this.RequestOpen_Execute(par), par => this.RequestOpen_CanExecute(par));\r\n            this.ClosedCommand = new RelayCommand(par => this.Closed_Execute(par));\r\n            if (settings) {\r\n                this.AcceptAction = settings.AcceptAction;\r\n                this.CompleteAction = settings.CompleteAction;\r\n                this.ViewModelBuilder = settings.ViewModelBuilder;\r\n                this.CanOpen = settings.CanOpen;\r\n            }\r\n        }\r\n\r\n        private Closed_Execute (parameter: IOverlayCompleteParameters) {\r\n            if (parameter.Result === true) {\r\n                this.AcceptAction && this.AcceptAction(<TAccept>parameter.Data || undefined);\r\n            }\r\n            this.CompleteAction && this.CompleteAction(parameter);\r\n        }\r\n\r\n        private RequestOpen_Execute (parameter: TBuilder) {\r\n            if (this.ViewModelBuilder != null) {\r\n                var vm = this.ViewModelBuilder(parameter);\r\n                if (vm == null)\r\n                    return;\r\n                this.OverlayDataContext = vm;\r\n            }\r\n            this.IsOpen = true;\r\n        }\r\n\r\n        private RequestOpen_CanExecute (parameter: TBuilder): boolean {\r\n            return !this.CanOpen || this.CanOpen(parameter);\r\n        }\r\n    }\r\n    NotifyProperties(DialogViewModel, [\"IsOpen\", \"OverlayDataContext\", \"RequestOpenCommand\", \"ClosedCommand\"]);\r\n}"
  },
  {
    "path": "src/MVVM/Entity.ts",
    "content": "module Fayde.MVVM {\r\n    export interface IEntity extends INotifyPropertyChanged, Data.INotifyDataErrorInfo {\r\n        OnPropertyChanged (propertyName: string);\r\n        AddError (propertyName: string, errorMessage: string);\r\n        RemoveError (propertyName: string, errorMessage: string);\r\n        ClearErrors (propertyName: string);\r\n    }\r\n\r\n    export class Entity implements IEntity {\r\n        PropertyChanged = new nullstone.Event<PropertyChangedEventArgs>();\r\n\r\n        OnPropertyChanged (propertyName: string) {\r\n            this.PropertyChanged.raise(this, new PropertyChangedEventArgs(propertyName));\r\n        }\r\n\r\n        private _Errors: any = {};\r\n\r\n        ErrorsChanged = new nullstone.Event<Data.DataErrorsChangedEventArgs>();\r\n\r\n        get HasErrors (): boolean {\r\n            return Object.keys(this._Errors).length > 0;\r\n        }\r\n\r\n        AddError (propertyName: string, errorMessage: string) {\r\n            var errs = this._Errors[propertyName];\r\n            if (!errs) {\r\n                this._Errors[propertyName] = [errorMessage];\r\n            } else {\r\n                errs.push(errorMessage);\r\n            }\r\n            this.ErrorsChanged.raise(this, new Data.DataErrorsChangedEventArgs(propertyName));\r\n        }\r\n\r\n        RemoveError (propertyName: string, errorMessage: string) {\r\n            var errs = this._Errors[propertyName];\r\n            if (!errs)\r\n                return;\r\n            var index = errs.indexOf(errorMessage);\r\n            if (index >= 0)\r\n                errs.splice(index, 1);\r\n            if (errs.length < 1)\r\n                delete this._Errors[propertyName];\r\n            this.ErrorsChanged.raise(this, new Data.DataErrorsChangedEventArgs(propertyName));\r\n        }\r\n\r\n        ClearErrors (propertyName: string) {\r\n            var errs = this._Errors[propertyName];\r\n            if (!errs)\r\n                return;\r\n            delete this._Errors[propertyName];\r\n            this.ErrorsChanged.raise(this, new Data.DataErrorsChangedEventArgs(propertyName));\r\n        }\r\n\r\n        GetErrors (propertyName: string): nullstone.IEnumerable<string> {\r\n            var errs = this._Errors[propertyName];\r\n            if (!errs)\r\n                return null;\r\n            return nullstone.IEnumerable_.fromArray(errs);\r\n        }\r\n\r\n        static ApplyTo<TIn, TOut extends IEntity>(model: TIn): TOut {\r\n            var out = <TOut><any>model;\r\n            var proto = Entity.prototype;\r\n            Object.defineProperties(out, {\r\n                \"_Errors\": {value: {}},\r\n                \"HasErrors\": {\r\n                    get: function () {\r\n                        return Object.keys(this._Errors).length > 0;\r\n                    }\r\n                }\r\n            });\r\n\r\n            out.PropertyChanged = new nullstone.Event<PropertyChangedEventArgs>();\r\n            out.OnPropertyChanged = proto.OnPropertyChanged.bind(out);\r\n            out.ErrorsChanged = new nullstone.Event<Data.DataErrorsChangedEventArgs>();\r\n            out.AddError = proto.AddError.bind(out);\r\n            out.RemoveError = proto.RemoveError.bind(out);\r\n            out.ClearErrors = proto.ClearErrors.bind(out);\r\n            out.GetErrors = proto.GetErrors.bind(out);\r\n\r\n            Data.INotifyDataErrorInfo_.mark(out);\r\n\r\n            return out;\r\n        }\r\n    }\r\n    Data.INotifyDataErrorInfo_.mark(Entity);\r\n}"
  },
  {
    "path": "src/MVVM/IOverlayCompleteParameters.ts",
    "content": "module Fayde.MVVM {\r\n    export interface IOverlayCompleteParameters {\r\n        Result: boolean;\r\n        Data: any;\r\n    }\r\n}"
  },
  {
    "path": "src/MVVM/IViewModelProvider.ts",
    "content": "/// <reference path=\"../Navigation/Route.ts\" />\n\nmodule Fayde.MVVM {\n    export interface IRedirector {\n        (newUri: string|Uri);\n    }\n    export interface IViewModelProvider {\n        ResolveViewModel(route: Fayde.Navigation.Route, redirect?: IRedirector);\n    }\n    export var IViewModelProvider_ = new nullstone.Interface<IViewModelProvider>(\"IViewModelProvider\");\n    IViewModelProvider_.is = function (o: any): boolean {\n        return o && typeof o.ResolveViewModel === \"function\";\n    };\n}"
  },
  {
    "path": "src/MVVM/ObservableObject.ts",
    "content": "/// <reference path=\"../Core/INotifyPropertyChanged.ts\" />\r\n\r\nmodule Fayde.MVVM {\r\n    export function NotifyProperties(type: any, propNames: string[]) {\r\n        var len = propNames.length;\r\n        for (var i = 0; i < len; i++) {\r\n            (function () {\r\n                var propName = propNames[i];\r\n                var backingName = \"$\" + propName + \"$\";\r\n                Object.defineProperty(type.prototype, propName, {\r\n                    get: function () { return this[backingName]; },\r\n                    set: function (value: any) {\r\n                        this[backingName] = value;\r\n                        this.OnPropertyChanged(propName);\r\n                    }\r\n                });\r\n            })();\r\n        }\r\n    }\r\n\r\n    export class ObservableObject implements INotifyPropertyChanged {\r\n        PropertyChanged = new nullstone.Event<PropertyChangedEventArgs>();\r\n        OnPropertyChanged(propertyName: string) {\r\n            this.PropertyChanged.raise(this, new PropertyChangedEventArgs(propertyName));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ObservableObject);\r\n}"
  },
  {
    "path": "src/MVVM/RelayCommand.ts",
    "content": "/// <reference path=\"../Input/ICommand.ts\" />\r\n\r\nmodule Fayde.MVVM {\r\n    export class RelayCommand implements Input.ICommand {\r\n        constructor(execute?: (parameter: any) => void , canExecute?: (parameter: any) => boolean) {\r\n            if (execute)\r\n                this.Execute = execute;\r\n            if (canExecute)\r\n                this.CanExecute = canExecute;\r\n        }\r\n\r\n        Execute(parameter: any) { }\r\n        CanExecute(parameter: any): boolean { return true; }\r\n        CanExecuteChanged = new nullstone.Event();\r\n        ForceCanExecuteChanged() {\r\n            this.CanExecuteChanged.raise(this, null);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RelayCommand);\r\n    nullstone.addTypeInterfaces(RelayCommand, Input.ICommand_);\r\n}"
  },
  {
    "path": "src/MVVM/ViewModelBase.ts",
    "content": "/// <reference path=\"ObservableObject.ts\"/>\r\n\r\nmodule Fayde.MVVM {\r\n    export class ViewModelBase extends ObservableObject {\r\n    }\r\n    Fayde.CoreLibrary.add(ViewModelBase);\r\n}"
  },
  {
    "path": "src/Markup/ContentAnnotation.ts",
    "content": "module Fayde.Markup {\r\n    export interface IContentAnnotation {\r\n        (type: Function, prop: DependencyProperty);\r\n        Get(type: Function): DependencyProperty;\r\n    }\r\n    export var Content = <IContentAnnotation>(function () {\r\n        function ca(type: Function, prop: DependencyProperty) {\r\n            nullstone.Annotation(type, \"Content\", prop, true);\r\n        }\r\n        (<any>ca).Get = function (type: Function): DependencyProperty {\r\n            var cur = type;\r\n            while (cur) {\r\n                var anns = nullstone.GetAnnotations(cur, \"Content\");\r\n                if (anns) {\r\n                    var cp = anns[0];\r\n                    if (cp)\r\n                        return cp;\r\n                }\r\n                cur = nullstone.getTypeParent(cur);\r\n            }\r\n            return undefined;\r\n        };\r\n        return ca;\r\n    })();\r\n\r\n    export interface ITextContentAnnotation {\r\n        (type: Function, prop: DependencyProperty);\r\n        Get(type: Function): DependencyProperty;\r\n    }\r\n    export var TextContent = <ITextContentAnnotation>(function () {\r\n        function tca(type: Function, prop: DependencyProperty) {\r\n            nullstone.Annotation(type, \"TextContent\", prop, true);\r\n        }\r\n        (<any>tca).Get = function (type: Function): DependencyProperty {\r\n            var cur = type;\r\n            while (cur) {\r\n                var anns = nullstone.GetAnnotations(cur, \"TextContent\");\r\n                if (anns) {\r\n                    var cp = anns[0];\r\n                    if (cp)\r\n                        return cp;\r\n                }\r\n                cur = nullstone.getTypeParent(cur);\r\n            }\r\n            return undefined;\r\n        };\r\n        return tca;\r\n    })();\r\n}"
  },
  {
    "path": "src/Markup/Creator.ts",
    "content": "module Fayde.Markup {\r\n    import XamlMarkup = nullstone.markup.xaml.XamlMarkup;\r\n    var lastId = 0;\r\n\r\n    export function CreateXaml (xaml: string, uri?: string): XamlMarkup;\r\n    export function CreateXaml (el: Element, uri?: string): XamlMarkup;\r\n    export function CreateXaml (obj: any, uri?: string): XamlMarkup {\r\n        lastId++;\r\n        uri = uri || \"http://gen/\" + lastId.toString();\r\n        var xm = new XamlMarkup(uri);\r\n        var root = (typeof obj === \"string\")\r\n            ? xm.loadRoot(obj)\r\n            : obj;\r\n        if (!root.isDefaultNamespace(Fayde.XMLNS))\r\n            throw new XamlParseException(\"Invalid default namespace. [\" + root.lookupNamespaceURI(null) + \"]\");\r\n        xm.setRoot(root);\r\n        return xm;\r\n    }\r\n}"
  },
  {
    "path": "src/Markup/EventBinding.ts",
    "content": "module Fayde.Markup {\r\n    export interface IEventFilter {\r\n        Filter(sender: any, e: nullstone.IEventArgs, parameter: any): boolean;\r\n    }\r\n    export var IEventFilter_ = new nullstone.Interface<IEventFilter>(\"IEventFilter\");\r\n\r\n    export class EventBinding implements nullstone.markup.IMarkupExtension {\r\n        CommandPath: string = null;\r\n        Command: Data.BindingExpressionBase = null;\r\n        CommandParameter: Data.BindingExpressionBase = null;\r\n        CommandBinding: Data.Binding = null;\r\n        CommandParameterBinding: Data.Binding = null;\r\n        Filter: IEventFilter = null;\r\n\r\n        init (val: string) {\r\n            this.CommandPath = val;\r\n        }\r\n\r\n        transmute (os: any[]): any {\r\n            this.$$coerce();\r\n            Object.freeze(this);\r\n            return new EventBindingExpression(this);\r\n        }\r\n\r\n        private $$coerce () {\r\n            if (this.Command) {\r\n                this.CommandBinding = this.Command.ParentBinding.Clone();\r\n                this.Command = null;\r\n            }\r\n            if (this.CommandPath) {\r\n                this.CommandBinding = new Data.Binding(this.CommandPath);\r\n            }\r\n            if (this.CommandParameter) {\r\n                this.CommandParameterBinding = this.CommandParameter.ParentBinding.Clone();\r\n                this.CommandParameter = null;\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(EventBinding);\r\n}"
  },
  {
    "path": "src/Markup/Internal/ActiveObject.ts",
    "content": "module Fayde.Markup.Internal {\r\n    export interface IActiveObject {\r\n        obj: any;\r\n        xo: XamlObject;\r\n        dobj: DependencyObject;\r\n        rd: ResourceDictionary;\r\n        coll: nullstone.ICollection<any>;\r\n        arr: any[];\r\n        type: any;\r\n        set(obj: any);\r\n        setName(name: string);\r\n        getApp(): Application;\r\n    }\r\n\r\n    export function createActiveObject (app: Application, namescope: NameScope, bindingSource: any): IActiveObject {\r\n        return {\r\n            obj: null,\r\n            xo: null,\r\n            dobj: null,\r\n            rd: null,\r\n            coll: null,\r\n            arr: null,\r\n            type: null,\r\n            set (obj: any) {\r\n                this.obj = obj;\r\n                this.type = obj ? obj.constructor : null;\r\n                this.rd = (obj instanceof ResourceDictionary) ? obj : null;\r\n                if (this.rd) {\r\n                    this.rd.App = app;\r\n                }\r\n                this.dobj = (obj instanceof DependencyObject) ? obj : null;\r\n                var xo = this.xo = (obj instanceof XamlObject) ? obj : null;\r\n                if (xo) {\r\n                    xo.XamlNode.DocNameScope = namescope;\r\n                    xo.TemplateOwner = bindingSource;\r\n                    xo.App = app;\r\n                }\r\n                if (obj instanceof Application) {\r\n                    app = obj;\r\n                }\r\n                this.coll = nullstone.ICollection_.as(obj);\r\n                this.arr = (typeof obj === \"array\") ? obj : null;\r\n            },\r\n            setName (name: string) {\r\n                if (this.xo) {\r\n                    var xnode = this.xo.XamlNode;\r\n                    namescope.RegisterName(name, xnode);\r\n                    xnode.Name = name;\r\n                }\r\n            },\r\n            getApp () {\r\n                return app;\r\n            }\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Markup/Internal/ObjectActor.ts",
    "content": "module Fayde.Markup.Internal {\r\n    export interface IObjectActor {\r\n        start();\r\n        end();\r\n    }\r\n\r\n    export function createObjectActor (pactor: IPropertyActor): IObjectActor {\r\n        var arr = [];\r\n\r\n        return {\r\n            start () {\r\n                var nstate = {};\r\n                pactor.init(nstate);\r\n                arr.push(nstate);\r\n            },\r\n            end () {\r\n                arr.pop();\r\n                pactor.init(arr[arr.length - 1]);\r\n            }\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Markup/Internal/PropertyActor.ts",
    "content": "module Fayde.Markup.Internal {\r\n    export interface IPropertyActor {\r\n        init(nstate: any);\r\n        start(ownerType: any, name: string);\r\n        startContent();\r\n        end();\r\n        addObject(obj: any, key?: any);\r\n        setContentText(text: string);\r\n        setObject(ownerType: any, name: string, obj: any);\r\n        isNewResources (): boolean;\r\n    }\r\n\r\n    export function createPropertyActor (cur: IActiveObject, extractType: (text: string) => any, extractDP: (text: string) => any): IPropertyActor {\r\n        var state = {\r\n            visited: undefined,\r\n\r\n            coll: undefined,\r\n            arr: undefined,\r\n            propd: undefined,\r\n            prop: undefined,\r\n            eprop: undefined,\r\n            incontent: undefined,\r\n            content: {\r\n                count: 0,\r\n                coll: undefined,\r\n                arr: undefined,\r\n                rd: undefined,\r\n                propd: undefined,\r\n                app: undefined\r\n            }\r\n        };\r\n\r\n        function verify (ownerType: any, name: string) {\r\n            var otype = ownerType || cur.type;\r\n            state.visited = state.visited || [];\r\n            var tvisited = state.visited[otype];\r\n            if (!tvisited) {\r\n                tvisited = state.visited[otype] = [];\r\n            } else {\r\n                if (tvisited.indexOf(name) > -1)\r\n                    throw new XamlParseException(\"Cannot set [\" + otype.name + \"][\" + name + \"] more than once.\");\r\n            }\r\n            tvisited.push(name);\r\n        }\r\n\r\n        function verifyContent () {\r\n            verify(cur.type, state.propd.Name);\r\n        }\r\n\r\n        function prepare (ownerType: any, name: string): boolean {\r\n            if (state.coll || state.arr || state.propd || state.prop || state.eprop)\r\n                return true;\r\n            if (cur.dobj) {\r\n                var otype = ownerType || cur.type;\r\n                state.propd = DependencyProperty.GetDependencyProperty(otype, name, true);\r\n                if (!state.propd) {\r\n                    var ev = cur.dobj[name];\r\n                    if (ev instanceof nullstone.Event)\r\n                        state.eprop = name;\r\n                    else\r\n                        state.prop = name;\r\n                    return true;\r\n                }\r\n                if (state.propd.IsImmutable) {\r\n                    var co = cur.dobj.GetValue(state.propd);\r\n                    state.coll = nullstone.ICollection_.as(co);\r\n                    state.arr = (typeof co === \"array\") ? co : null;\r\n                } else {\r\n                    var tt = state.propd.GetTargetType();\r\n                    if (nullstone.ICollection_.is(tt.prototype))\r\n                        cur.dobj.SetValue(state.propd, state.coll = new tt());\r\n                    else if (tt === Array)\r\n                        cur.dobj.SetValue(state.propd, state.arr = []);\r\n                }\r\n                return true;\r\n            } else if (cur.rd && name === \"MergedDictionaries\") {\r\n                state.coll = cur.rd.MergedDictionaries;\r\n                return true;\r\n            } else if (cur.obj) {\r\n                if (ownerType && cur.type !== ownerType)\r\n                    throw new XamlParseException(\"Cannot set Attached Property on object that is not a DependencyObject.\");\r\n                state.prop = name;\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n\r\n        function prepareContent (): boolean {\r\n            var content = state.content = state.content || <any>{};\r\n            if (content.coll || content.arr || content.rd || content.propd)\r\n                return true;\r\n            var propd = content.propd = Content.Get(cur.type);\r\n            if (!propd) {\r\n                content.coll = nullstone.ICollection_.as(cur.obj);\r\n                content.arr = (typeof cur.obj === \"array\") ? cur.obj : null;\r\n                content.rd = cur.rd;\r\n                content.app = (cur.obj instanceof Application) ? cur.obj : null;\r\n                if (content.coll || content.arr || content.rd || content.app)\r\n                    return true;\r\n                throw new XamlParseException(\"Cannot set content for object of type '\" + cur.type.name + \"'.\");\r\n            }\r\n            if (!propd.IsImmutable)\r\n                return true;\r\n            var co = cur.dobj.GetValue(propd);\r\n            if (!co)\r\n                return false;\r\n            content.coll = nullstone.ICollection_.as(co);\r\n            content.arr = (typeof co === \"array\") ? co : null;\r\n            return true;\r\n        }\r\n\r\n        function addContentObject (obj: any, key: any) {\r\n            if (cur.rd) {\r\n                key = key || getFallbackKey(obj);\r\n                if (!key)\r\n                    throw new XamlParseException(\"Items in a ResourceDictionary must have a x:Key.\");\r\n                cur.rd.Set(key, obj);\r\n            } else if (cur.coll) {\r\n                cur.coll.Add(obj);\r\n            } else if (cur.arr) {\r\n                cur.arr.push(obj);\r\n            } else if (cur.dobj) {\r\n                if (state.content.coll) {\r\n                    state.content.coll.Add(obj);\r\n                } else if (state.content.arr) {\r\n                    state.content.arr.push(obj);\r\n                } else if (state.content.rd) {\r\n                    key = key || getFallbackKey(obj);\r\n                    if (!key)\r\n                        throw new XamlParseException(\"Items in a ResourceDictionary must have a x:Key.\");\r\n                    state.content.rd.Set(obj, key);\r\n                } else if (state.content.app) {\r\n                    state.content.app.$$SetRootVisual(obj);\r\n                } else {\r\n                    if (state.content.count > 0)\r\n                        throw new XamlParseException(\"Cannot set content more than once.\");\r\n                    cur.dobj.SetValue(state.content.propd, obj);\r\n                }\r\n            }\r\n            state.content.count++;\r\n        }\r\n\r\n        function addObject (obj: any, key: any) {\r\n            if (state.coll) {\r\n                state.coll.Add(obj);\r\n            } else if (state.arr) {\r\n                state.arr.push(obj);\r\n            } else if (state.propd) {\r\n                cur.dobj.SetValue(state.propd, convert(state.propd, obj));\r\n            } else if (state.prop) {\r\n                cur.obj[state.prop] = obj;\r\n            } else if (state.eprop) {\r\n                subscribeEvent(state.eprop, obj);\r\n            }\r\n        }\r\n\r\n        function setAttrObject (ownerType: any, name: string, obj: any): boolean {\r\n            if (cur.dobj) {\r\n                var otype = ownerType || cur.type;\r\n                var propd = DependencyProperty.GetDependencyProperty(otype, name, true);\r\n                if (!propd) {\r\n                    var ev = cur.dobj[name];\r\n                    if (ev instanceof nullstone.Event) {\r\n                        subscribeEvent(name, obj);\r\n                    } else {\r\n                        cur.dobj[name] = obj;\r\n                    }\r\n                    return true;\r\n                }\r\n                if (propd.IsImmutable) {\r\n                    return merge(convert(propd, obj), cur.dobj.GetValue(propd));\r\n                } else {\r\n                    cur.dobj.SetValue(propd, convert(propd, obj));\r\n                    return true;\r\n                }\r\n            } else if (cur.obj) {\r\n                var ev = cur.obj[name];\r\n                if (ev instanceof nullstone.Event) {\r\n                    subscribeEvent(name, obj);\r\n                } else {\r\n                    cur.obj[name] = obj;\r\n                }\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n\r\n        function merge (src: any, target: any): boolean {\r\n            var sarr: any[];\r\n            var scoll = <nullstone.ICollection<any>>nullstone.ICollection_.as(src);\r\n            if (scoll) {\r\n                sarr = nullstone.IEnumerable_.toArray(scoll);\r\n                scoll.Clear();\r\n            } else if (typeof src === \"array\") {\r\n                sarr = src.slice(0);\r\n                src.length = 0;\r\n            } else {\r\n                return false;\r\n            }\r\n\r\n            var sen = nullstone.IEnumerator_.fromArray(sarr);\r\n            var tcoll = nullstone.ICollection_.as(target);\r\n            var tarr = typeof target === \"array\" ? target : null;\r\n            if (tcoll) {\r\n                while (sen.moveNext()) {\r\n                    tcoll.Add(sen.current);\r\n                }\r\n            } else if (tarr) {\r\n                while (sen.moveNext()) {\r\n                    tarr.push(sen.current);\r\n                }\r\n            } else {\r\n                return false;\r\n            }\r\n\r\n            return true;\r\n        }\r\n\r\n        function getFallbackKey (obj: any): any {\r\n            if (obj instanceof XamlObject) {\r\n                var name = (<XamlObject>obj).XamlNode.Name;\r\n                if (name)\r\n                    return name;\r\n            }\r\n            return getImplicitKey(obj);\r\n        }\r\n\r\n        function getImplicitKey (obj: any): any {\r\n            if (obj instanceof DataTemplate) {\r\n                var dt = (<DataTemplate>obj).DataType;\r\n                if (!dt)\r\n                    throw new XamlParseException(\"A DataTemplate in a ResourceDictionary must have x:Key or DataType.\");\r\n                return dt;\r\n            } else if (obj instanceof Style) {\r\n                var tt = (<Style>obj).TargetType;\r\n                if (!tt)\r\n                    throw new XamlParseException(\"A Style in a ResourceDictionary must have x:Key or TargetType.\");\r\n                return tt;\r\n            }\r\n        }\r\n\r\n        function convert (propd: DependencyProperty, obj: any): any {\r\n            var tt = <any>propd.GetTargetType();\r\n            var val = obj;\r\n            if (typeof val === \"string\") {\r\n                if (tt === IType_) //NOTE: Handles implicit types that are normally written as {x:Type ...}\r\n                    return extractType(val);\r\n                else if (propd === Setter.PropertyProperty)\r\n                    return extractDP(val);\r\n            } else if (val instanceof Expression) {\r\n                return val;\r\n            }\r\n            return nullstone.convertAnyToType(val, tt);\r\n        }\r\n\r\n        function subscribeEvent (name: string, ebe: EventBindingExpression) {\r\n            if (!(ebe instanceof EventBindingExpression))\r\n                throw new XamlParseException(\"Cannot subscribe to event '\" + name + \"' without {EventBinding}.\");\r\n            ebe.Init(name);\r\n            ebe.OnAttached(cur.dobj);\r\n        }\r\n\r\n        return {\r\n            init (nstate: any) {\r\n                state = nstate;\r\n            },\r\n            start (ownerType: any, name: string) {\r\n                verify(ownerType, name);\r\n                prepare(ownerType, name);\r\n            },\r\n            startContent () {\r\n                if (prepareContent()) {\r\n                    if (state.content.count === 0)\r\n                        verifyContent();\r\n                    state.incontent = true;\r\n                }\r\n            },\r\n            end () {\r\n                state.incontent = false;\r\n                state.coll = state.arr = state.propd = state.prop = state.eprop = undefined;\r\n            },\r\n            addObject (obj: any, key?: any) {\r\n                if (state.incontent) {\r\n                    addContentObject(obj, key);\r\n                    state.content.count++;\r\n                } else {\r\n                    addObject(obj, key);\r\n                }\r\n            },\r\n            setContentText (text: string) {\r\n                if (!cur.dobj)\r\n                    return;\r\n\r\n                var tcprop = TextContent.Get(cur.type);\r\n                if (tcprop) {\r\n                    verify(cur.type, tcprop.Name);\r\n                    cur.dobj.SetValue(tcprop, text);\r\n                    return;\r\n                }\r\n\r\n                var cprop = Content.Get(cur.type);\r\n                if (cprop) {\r\n                    verify(cur.type, cprop.Name);\r\n                    cur.dobj.SetValue(cprop, convert(cprop, text));\r\n                }\r\n            },\r\n            setObject (ownerType: any, name: string, obj: any) {\r\n                verify(ownerType, name);\r\n                setAttrObject(ownerType, name, obj);\r\n            },\r\n            isNewResources (): boolean {\r\n                if (state.coll instanceof ResourceDictionaryCollection)\r\n                    return true;\r\n                return !cur.rd;\r\n            }\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Markup/Internal/ResourcesActor.ts",
    "content": "module Fayde.Markup.Internal {\r\n    export interface IResourcesActor {\r\n        start();\r\n        end();\r\n        get(): ResourceDictionary[];\r\n    }\r\n\r\n    export function createResourcesActor (cur: IActiveObject, resources: ResourceDictionary[]): IResourcesActor {\r\n        var stack: ResourceDictionary[] = [];\r\n        return {\r\n            start () {\r\n                if (cur.rd)\r\n                    stack.push(cur.rd);\r\n            },\r\n            end () {\r\n                if (cur.rd)\r\n                    stack.pop();\r\n            },\r\n            get (): ResourceDictionary[] {\r\n                var res = (resources) ? resources.concat(stack) : stack.slice(0);\r\n                if (cur.dobj instanceof FrameworkElement) {\r\n                    var crd = cur.dobj.ReadLocalValue(FrameworkElement.ResourcesProperty);\r\n                    if (crd !== DependencyProperty.UnsetValue)\r\n                        res.push(crd);\r\n                }\r\n                return res;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Markup/Loader.ts",
    "content": "/// <reference path=\"../Core/DependencyObject\" />\r\n\r\nmodule Fayde.Markup {\r\n    export class FrameworkTemplate extends DependencyObject {\r\n        private $$markup: nullstone.markup.Markup<any>;\r\n        private $$resources: ResourceDictionary[];\r\n\r\n        Validate(): string {\r\n            return \"\";\r\n        }\r\n\r\n        GetVisualTree(bindingSource: DependencyObject): UIElement {\r\n            var uie = LoadImpl<UIElement>(this.App, this.$$markup, this.$$resources, bindingSource);\r\n            if (!(uie instanceof UIElement))\r\n                throw new XamlParseException(\"Template root visual is not a UIElement.\");\r\n            return uie;\r\n        }\r\n    }\r\n\r\n    function setTemplateRoot(ft: FrameworkTemplate, root: any) {\r\n        if (root instanceof Element)\r\n            (<any>ft).$$markup = CreateXaml(root);\r\n    }\r\n\r\n    function setResources(ft: FrameworkTemplate, res: ResourceDictionary[]) {\r\n        (<any>ft).$$resources = res;\r\n    }\r\n\r\n    export function LoadXaml<T extends XamlObject>(app: Application, xaml: string): T;\r\n    export function LoadXaml<T extends XamlObject>(app: Application, el: Element): T;\r\n    export function LoadXaml<T extends XamlObject>(app: Application, xaml: any): T {\r\n        var markup = CreateXaml(xaml);\r\n        return Load<T>(app, markup);\r\n    }\r\n\r\n    export function Load<T extends XamlObject>(app: Application, xm: nullstone.markup.Markup<any>): T {\r\n        return LoadImpl<T>(app, xm);\r\n    }\r\n\r\n    function LoadImpl<T>(app: Application, xm: nullstone.markup.Markup<any>, resources?: ResourceDictionary[], bindingSource?: DependencyObject): T {\r\n        perfex.timer.start('MarkupLoad', xm.uri.toString());\r\n\r\n        var oresolve: nullstone.IOutType = {\r\n            isPrimitive: false,\r\n            type: undefined\r\n        };\r\n\r\n        var namescope = new NameScope(true);\r\n        var active = Internal.createActiveObject(app, namescope, bindingSource);\r\n        var pactor = Internal.createPropertyActor(active, extractType, extractDP);\r\n        var oactor = Internal.createObjectActor(pactor);\r\n        var ractor = Internal.createResourcesActor(active, resources);\r\n\r\n        var last: any;\r\n        var parser = xm.createParser()\r\n            .setNamespaces(Fayde.XMLNS, Fayde.XMLNSX);\r\n        var parse = {\r\n            resolveType: (uri, name) => {\r\n                if (!TypeManager.resolveType(uri, name, oresolve))\r\n                    throw new XamlParseException(\"Could not resolve type [\" + uri + \"][\" + name + \"].\");\r\n                return oresolve;\r\n            },\r\n            resolveObject: (type) => {\r\n                if (type === ResourceDictionary && !pactor.isNewResources())\r\n                    return undefined;\r\n                perfex.timer.start('MarkupCreateObject', type);\r\n                var obj = new (type)();\r\n                if (obj instanceof FrameworkTemplate)\r\n                    parser.skipBranch();\r\n                else if (obj instanceof StaticResource)\r\n                    (<StaticResource>obj).setContext(active.getApp(), resources);\r\n                perfex.timer.stop();\r\n                return obj;\r\n            },\r\n            resolvePrimitive: (type, text) => {\r\n                return nullstone.convertAnyToType(text, type);\r\n            },\r\n            resolveResources: (owner, ownerType) => {\r\n                var rd = owner.Resources;\r\n                return rd;\r\n            },\r\n            branchSkip: (root: any, obj: any) => {\r\n                if (obj instanceof FrameworkTemplate) {\r\n                    var ft: FrameworkTemplate = last = obj;\r\n                    var err = obj.Validate();\r\n                    if (err)\r\n                        throw new XamlParseException(err);\r\n                    setTemplateRoot(ft, root);\r\n                    setResources(ft, ractor.get());\r\n                }\r\n            },\r\n            object: (obj, isContent) => {\r\n                active.set(obj);\r\n                oactor.start();\r\n                ractor.start();\r\n            },\r\n            objectEnd: (obj, key, isContent, prev) => {\r\n                last = obj;\r\n                ractor.end();\r\n                oactor.end();\r\n                active.set(prev);\r\n                if (!active.obj)\r\n                    return;\r\n                if (isContent) {\r\n                    pactor.startContent();\r\n                    pactor.addObject(obj, key);\r\n                    pactor.end();\r\n                } else {\r\n                    pactor.addObject(obj, key);\r\n                }\r\n            },\r\n            contentText: (text) => {\r\n                pactor.setContentText(text);\r\n            },\r\n            name: (name) => {\r\n                active.setName(name);\r\n            },\r\n            propertyStart: (ownerType, propName) => {\r\n                pactor.start(ownerType, propName);\r\n            },\r\n            propertyEnd: (ownerType, propName) => {\r\n                pactor.end();\r\n            },\r\n            attributeStart: (ownerType, attrName) => {\r\n            },\r\n            attributeEnd: (ownerType, attrName, obj) => {\r\n                pactor.setObject(ownerType, attrName, obj);\r\n            },\r\n            error: (err): boolean => {\r\n                if (err instanceof nullstone.markup.xaml.SkipBranchError) {\r\n                    if (active.obj instanceof FrameworkTemplate)\r\n                        throw new XamlParseException(\"Templates must contain only 1 visual root and no other child elements.\", err.root);\r\n                }\r\n                throw new XamlParseException(`Invalid XAML in document '${xm.uri}'`, err);\r\n                return false;\r\n            },\r\n            end: () => {\r\n            }\r\n        };\r\n\r\n        function extractType(text: string): any {\r\n            var prefix = <string>null;\r\n            var name = text;\r\n            var ind = name.indexOf(':');\r\n            if (ind > -1) {\r\n                prefix = name.substr(0, ind);\r\n                name = name.substr(ind + 1);\r\n            }\r\n\r\n            var uri = parser.resolvePrefix(prefix);\r\n            TypeManager.resolveType(uri, name, oresolve);\r\n            return oresolve.type;\r\n        }\r\n\r\n        function extractDP(text: string): any {\r\n            var name = text;\r\n            var ind = name.indexOf('.');\r\n            var ownerType: any;\r\n            if (ind > -1) {\r\n                ownerType = extractType(name.substr(0, ind));\r\n                name = name.substr(ind + 1);\r\n            } else {\r\n                for (var en = parser.walkUpObjects(); en.moveNext();) {\r\n                    var style: Style = en.current;\r\n                    if (style instanceof Style) {\r\n                        ownerType = style.TargetType;\r\n                        if (!ownerType)\r\n                            throw new XamlParseException(\"Style must have a TargetType.\");\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            return (ownerType)\r\n                ? DependencyProperty.GetDependencyProperty(ownerType, name)\r\n                : null;\r\n        }\r\n\r\n        parser.on(parse)\r\n            .parse(xm.root);\r\n\r\n        if (last instanceof XamlObject) {\r\n            last.XamlNode.NameScope = namescope;\r\n        }\r\n\r\n        perfex.timer.stop();\r\n\r\n        return last;\r\n    }\r\n}"
  },
  {
    "path": "src/Markup/Resolver.ts",
    "content": "module Fayde.Markup {\r\n    import XamlMarkup = nullstone.markup.xaml.XamlMarkup;\r\n\r\n    export function Resolve(uri: string|Uri): Promise<XamlMarkup>;\r\n    export function Resolve(uri: string|Uri, excludeUri: string|Uri): Promise<XamlMarkup>;\r\n    export function Resolve(uri: any, excludeUri?: string|Uri): Promise<XamlMarkup> {\r\n        return Retrieve(uri)\r\n            .tap(xm => {\r\n                var co = collector.create(excludeUri);\r\n                return Promise.all([\r\n                    xm.resolve(Fayde.TypeManager, co.collect, co.exclude),\r\n                    co.resolve()\r\n                ]);\r\n            });\r\n    }\r\n\r\n    module collector {\r\n        export interface ICollector {\r\n            collect(ownerUri: string, ownerName: string, propName: string, val: any);\r\n            exclude(uri: string, name: string): boolean;\r\n            resolve(): Promise<any>;\r\n        }\r\n\r\n        export function create(excludeUri?: Uri|string): ICollector {\r\n            var rduris: string[] = [];\r\n            var coll = {\r\n                collect(ownerUri: string, ownerName: string, propName: string, val: any) {\r\n                    if (ownerUri === Fayde.XMLNS && ownerName === \"ResourceDictionary\" && propName === \"Source\")\r\n                        rduris.push(val);\r\n                },\r\n                exclude(uri: string, name: string): boolean {\r\n                    return false;\r\n                },\r\n                resolve(): Promise<any> {\r\n                    return Promise.all(rduris.map(Resolve));\r\n                }\r\n            };\r\n            if (!!excludeUri)\r\n                coll.exclude = (uri, name) => excludeUri.toString() === uri;\r\n            return coll;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Markup/Retriever.ts",
    "content": "module Fayde.Markup {\r\n    import XamlMarkup = nullstone.markup.xaml.XamlMarkup;\r\n\r\n    export function Retrieve(uri: string): Promise<XamlMarkup>;\r\n    export function Retrieve(uri: Uri): Promise<XamlMarkup>;\r\n    export function Retrieve(uri: any): Promise<XamlMarkup> {\r\n        var xm = XamlMarkup.create(uri);\r\n        if (xm.isLoaded)\r\n            return Promise.resolve(xm);\r\n        return xm.loadAsync();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/Markup/StaticResource.ts",
    "content": "module Fayde.Markup {\r\n    export class StaticResource implements nullstone.markup.IMarkupExtension {\r\n        ResourceKey: string;\r\n\r\n        private $$app: Application;\r\n        private $$resources: ResourceDictionary[];\r\n\r\n        init (val: string) {\r\n            this.ResourceKey = val;\r\n        }\r\n\r\n        transmute (os: any[]): any {\r\n            var res = this.$$resources;\r\n            this.$$resources = undefined;\r\n\r\n            var key = this.ResourceKey;\r\n            var rd: ResourceDictionary;\r\n            for (var i = os.length - 1; i >= 0; i--) {\r\n                var cur = os[i];\r\n                if (cur instanceof FrameworkElement) {\r\n                    rd = (<FrameworkElement>cur).ReadLocalValue(FrameworkElement.ResourcesProperty);\r\n                    if (rd === DependencyProperty.UnsetValue)\r\n                        rd = undefined;\r\n                } else if (cur instanceof Application) {\r\n                    rd = (<Application>cur).Resources;\r\n                } else if (cur instanceof ResourceDictionary) {\r\n                    rd = cur;\r\n                }\r\n                var o = rd ? rd.Get(key) : undefined;\r\n                if (o !== undefined)\r\n                    return o;\r\n            }\r\n\r\n            for (var i = res ? (res.length - 1) : -1; i >= 0; i--) {\r\n                var o = res[i].Get(key);\r\n                if (o !== undefined)\r\n                    return o;\r\n            }\r\n\r\n            if (this.$$app) {\r\n                var rd = this.$$app.Resources;\r\n                if (rd) {\r\n                    var o = rd.Get(key);\r\n                    if (o !== undefined)\r\n                        return o;\r\n                }\r\n            }\r\n            //TODO: Search in Application.Resources\r\n\r\n            throw new Error(\"Could not resolve StaticResource: '\" + key + \"'.\")\r\n        }\r\n\r\n        setContext (app: Application, resources: ResourceDictionary[]) {\r\n            this.$$app = app;\r\n            this.$$resources = resources;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(StaticResource);\r\n}"
  },
  {
    "path": "src/Media/Animation/AnimationBase.ts",
    "content": "/// <reference path=\"Timeline.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class AnimationBase extends Timeline {\r\n        private _AnimStorage: IAnimationStorage;\r\n        private _IsHolding: boolean = false;\r\n\r\n        constructor() {\r\n            super();\r\n        }\r\n\r\n        Resolve(target: DependencyObject, propd: DependencyProperty) { return true; }\r\n\r\n        HoldEnd() { this._IsHolding = true; }\r\n        Stop() {\r\n            var animStorage = this._AnimStorage;\r\n            if (!animStorage)\r\n                return;\r\n            if (AnimationStore.Detach(animStorage) || animStorage.IsDisabled)\r\n                return;\r\n            AnimationStore.ApplyStop(animStorage);\r\n        }\r\n        UpdateInternal(clockData: IClockData) {\r\n            if (this._IsHolding)\r\n                return;\r\n            var animStorage = this._AnimStorage;\r\n            if (!animStorage || animStorage.IsDisabled)\r\n                return;\r\n\r\n            var oldValue = animStorage.CurrentValue;\r\n            animStorage.CurrentValue = this.GetCurrentValue(animStorage.BaseValue, animStorage.StopValue !== undefined ? animStorage.StopValue : animStorage.BaseValue, clockData);\r\n            if (Animation.Log)\r\n                console.log(getLogMessage(\"AnimationBase.UpdateInternal\", this, oldValue, animStorage.CurrentValue));\r\n            if (oldValue === animStorage.CurrentValue || animStorage.CurrentValue === undefined)\r\n                return;\r\n            AnimationStore.ApplyCurrent(animStorage);\r\n        }\r\n        GetNaturalDurationCore(): Duration { return Duration.Automatic; }\r\n\r\n        GetCurrentValue(defaultOriginalValue: any, defaultDestinationValue: any, clockData: IClockData): any { return undefined; }\r\n\r\n        _Hookup(promotedValues: any[], error: BError): boolean {\r\n            this._IsHolding = false;\r\n            this.Reset();\r\n\r\n            var resolution = Storyboard.ResolveTarget(this);\r\n            if (!resolution.Target) {\r\n                console.warn(\"Could not resolve storyboard target.\", Storyboard.GetTargetName(this));\r\n            }\r\n            var refobj = { Value: resolution.Target };\r\n            var targetProperty = resolution.Property.TryResolveDependencyProperty(refobj, promotedValues);\r\n            resolution.Target = refobj.Value;\r\n            if (!targetProperty) {\r\n                error.Number = BError.XamlParse;\r\n                var name = Storyboard.GetTargetName(this);\r\n                error.Message = \"Could not resolve property for storyboard. (\" + name + \")->[\" + resolution.Property.Path.toString() + \"]\";\r\n                return false;\r\n            }\r\n            if (!this.Resolve(resolution.Target, targetProperty)) {\r\n                error.Number = BError.InvalidOperation;\r\n                error.Message = \"Storyboard value could not be converted to the correct type\";\r\n                return false;\r\n            }\r\n\r\n            this._AnimStorage = AnimationStore.Create(resolution.Target, targetProperty);\r\n            this._AnimStorage.Animation = this;\r\n            AnimationStore.Attach(this._AnimStorage);\r\n            return true;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(AnimationBase);\r\n\r\n    function getLogMessage(action: string, anim: AnimationBase, oldValue: any, newValue: any) {\r\n        var msg = \"ANIMATION:\" + action + \":\" + (<any>anim)._ID + \"[\" + (<any>anim).constructor.name + \"]\";\r\n        msg += \";\" + (oldValue === undefined ? \"(undefined)\" : (oldValue === null ? \"(null)\" : oldValue.toString()));\r\n        msg += \"->\" + (newValue === undefined ? \"(undefined)\" : (newValue === null ? \"(null)\" : newValue.toString()));\r\n        return msg;\r\n    }\r\n}"
  },
  {
    "path": "src/Media/Animation/AnimationStore.ts",
    "content": "\r\nmodule Fayde.Media.Animation {\r\n    export interface IAnimationStorage {\r\n        ID: number;\r\n        Animation: AnimationBase;\r\n        PropStorage: Providers.IPropertyStorage;\r\n        IsDisabled: boolean;\r\n        BaseValue: any;\r\n        CurrentValue: any;\r\n        StopValue: any;\r\n    }\r\n\r\n    export class AnimationStore {\r\n        static Create(target: DependencyObject, propd: DependencyProperty): IAnimationStorage {\r\n            var baseValue = target.GetValue(propd);\r\n            if (baseValue === undefined) {\r\n                var targetType = propd.GetTargetType();\r\n                if (targetType === Number)\r\n                    baseValue = 0;\r\n                else if (targetType === String)\r\n                    baseValue = \"\";\r\n                else\r\n                    baseValue = new (<any>targetType)();\r\n            }\r\n            return {\r\n                ID: createId(),\r\n                Animation: undefined,\r\n                PropStorage: Providers.GetStorage(target, propd),\r\n                IsDisabled: false,\r\n                BaseValue: baseValue,\r\n                CurrentValue: undefined,\r\n                StopValue: undefined,\r\n            };\r\n        }\r\n        static Attach(animStorage: IAnimationStorage) {\r\n            var storage = animStorage.PropStorage;\r\n            var list = storage.Animations;\r\n            if (!list)\r\n                storage.Animations = list = [];\r\n            var prevStorage = list[list.length - 1];\r\n            list.push(animStorage);\r\n            if (prevStorage) {\r\n                animStorage.StopValue = prevStorage.StopValue;\r\n                prevStorage.IsDisabled = true;\r\n            } else {\r\n                animStorage.StopValue = storage.Local;\r\n            }\r\n        }\r\n        static Detach(animStorage: IAnimationStorage): boolean {\r\n            var storage = animStorage.PropStorage;\r\n\r\n            var list = storage.Animations;\r\n            if (!list)\r\n                return false;\r\n\r\n            var len = list.length;\r\n            if (len < 1)\r\n                return false;\r\n\r\n            var i = list.lastIndexOf(animStorage);\r\n            if(i < 0)\r\n                return false;\r\n            \r\n            if (i === (len - 1)) {\r\n                list.pop();\r\n                if (len > 1) {\r\n                    var last = list[len - 2];\r\n                    if (last.IsDisabled) {\r\n                        last.IsDisabled = false;\r\n                        AnimationStore.ApplyCurrent(last);\r\n                        return true;\r\n                    }\r\n                }\r\n            } else {\r\n                list.splice(i, 1);\r\n                list[i].StopValue = animStorage.StopValue;\r\n            }\r\n            return false;\r\n        }\r\n        static ApplyCurrent(animStorage: IAnimationStorage) {\r\n            var val = animStorage.CurrentValue;\r\n            if (val === undefined)\r\n                return;\r\n            if (Animation.LogApply)\r\n                console.log(getLogMessage(\"ApplyCurrent\", animStorage, val));\r\n            var storage = animStorage.PropStorage;\r\n            storage.Property.Store.SetLocalValue(storage, animStorage.CurrentValue);\r\n        }\r\n        static ApplyStop(animStorage: IAnimationStorage) {\r\n            var val = animStorage.StopValue;\r\n            if (Animation.LogApply)\r\n                console.log(getLogMessage(\"ApplyStop\", animStorage, val));\r\n            var storage = animStorage.PropStorage;\r\n            storage.Property.Store.SetLocalValue(storage, val);\r\n        }\r\n    }\r\n\r\n    function getLogMessage(action: string, animStorage: IAnimationStorage, val: any): string {\r\n        var anim = animStorage.Animation;\r\n        var name = Storyboard.GetTargetName(animStorage.Animation);\r\n        if (anim.HasManualTarget)\r\n            name = anim.ManualTarget.Name;\r\n        var prop = Storyboard.GetTargetProperty(anim);\r\n        var msg = \"ANIMATION:\" + action + \":\" + animStorage.ID + \"[\" + name + \"](\" + prop.Path + \")->\";\r\n        msg += val === undefined ? \"(undefined)\" : (val === null ? \"(null)\" : val.toString());\r\n        return msg;\r\n    }\r\n    var lastId = 0;\r\n    function createId(): number {\r\n        return lastId++;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/Media/Animation/AnimationUsingKeyFrames.ts",
    "content": "/// <reference path=\"AnimationBase.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class AnimationUsingKeyFrames extends AnimationBase {\r\n        static KeyFramesProperty = DependencyProperty.RegisterImmutable<KeyFrameCollection>(\"KeyFrames\", () => KeyFrameCollection, AnimationUsingKeyFrames);\r\n        KeyFrames: KeyFrameCollection;\r\n\r\n        constructor() {\r\n            super();\r\n            var coll = AnimationUsingKeyFrames.KeyFramesProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n        }\r\n\r\n        Resolve(target: DependencyObject, propd: DependencyProperty): boolean {\r\n            var keyFrames = this.KeyFrames;\r\n\r\n            var sortedList = KeyFrameCollection.ResolveKeyFrames(this, keyFrames);\r\n\r\n            var count = sortedList.length;\r\n            for (var j = 0; j < count; j++) {\r\n                if (!sortedList[j].KeyTime.IsValid)\r\n                    return false;\r\n            }\r\n\r\n            return true;\r\n        }\r\n        GetCurrentValue(defaultOriginValue: any, defaultDestinationValue: any, clockData: IClockData): any {\r\n            var keyFrames = this.KeyFrames;\r\n\r\n            var prevFrameRef = { Value: <IKeyFrame>null };\r\n            var currentKeyFrame: IKeyFrame = keyFrames.GetKeyFrameForTime(clockData.CurrentTime, prevFrameRef);\r\n            var prevFrame: IKeyFrame = prevFrameRef.Value;\r\n            if (!currentKeyFrame)\r\n                return null;\r\n\r\n            var baseValue: any;\r\n            var keyStartTime: TimeSpan;\r\n            var keyEndTime = currentKeyFrame._ResolvedKeyTime;\r\n            if (!prevFrame) {\r\n                // the first keyframe, start at the animation's base value\r\n                baseValue = defaultOriginValue;\r\n                keyStartTime = new TimeSpan();\r\n            } else {\r\n                // start at the previous keyframe's target value\r\n                if (prevFrame instanceof ObjectKeyFrame) {\r\n                    baseValue = (<ObjectKeyFrame>prevFrame).ConvertedValue;\r\n                } else {\r\n                    baseValue = prevFrame.Value;\r\n                }\r\n                keyStartTime = prevFrame._ResolvedKeyTime;\r\n            }\r\n\r\n            var progress: number;\r\n            if (clockData.CurrentTime.CompareTo(keyEndTime) >= 0) {\r\n                progress = 1.0;\r\n            } else {\r\n                var keyDuration = keyEndTime.Ticks - keyStartTime.Ticks;\r\n                if (keyDuration <= 0)\r\n                    progress = 1.0;\r\n                else\r\n                    progress = (clockData.CurrentTime.Ticks - keyStartTime.Ticks) / keyDuration;\r\n            }\r\n\r\n            return currentKeyFrame.InterpolateValue(baseValue, progress);\r\n        }\r\n        GetNaturalDurationCore(): Duration {\r\n            var keyFrames = this.KeyFrames;\r\n            var sortedList: IKeyFrame[] = KeyFrameCollection.ResolveKeyFrames(this, keyFrames);\r\n            var len = sortedList.length;\r\n            var ts: TimeSpan;\r\n            if (len > 0)\r\n                ts = sortedList[len - 1]._ResolvedKeyTime;\r\n            else\r\n                ts = new TimeSpan();\r\n            return new Duration(ts);\r\n        }\r\n\r\n        AddKeyFrame(kf: KeyFrame) { this.KeyFrames.Add(kf); }\r\n        RemoveKeyFrame(kf: KeyFrame) { this.KeyFrames.Remove(kf); }\r\n    }\r\n    Fayde.CoreLibrary.add(AnimationUsingKeyFrames);\r\n    Markup.Content(AnimationUsingKeyFrames, AnimationUsingKeyFrames.KeyFramesProperty);\r\n}"
  },
  {
    "path": "src/Media/Animation/BeginStoryboard.ts",
    "content": "/// <reference path=\"../../Core/Triggers.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class BeginStoryboard extends TriggerAction {\r\n        static StoryboardProperty = DependencyProperty.RegisterCore(\"Storyboard\", () => Animation.Storyboard, BeginStoryboard);\r\n        Storyboard: Animation.Storyboard;\r\n\r\n        Fire() {\r\n            var sb = this.Storyboard;\r\n            if (sb) sb.Begin();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(BeginStoryboard);\r\n    Markup.Content(BeginStoryboard, BeginStoryboard.StoryboardProperty);\r\n}"
  },
  {
    "path": "src/Media/Animation/ColorAnimation.ts",
    "content": "/// <reference path=\"AnimationBase.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class ColorAnimation extends AnimationBase {\r\n        static ByProperty: DependencyProperty = DependencyProperty.Register(\"By\", () => Color, ColorAnimation, null, (d, args) => (<ColorAnimation>d)._ByChanged(args));\r\n        static EasingFunctionProperty: DependencyProperty = DependencyProperty.Register(\"EasingFunction\", () => EasingFunctionBase, ColorAnimation, undefined, (d, args) => (<ColorAnimation>d)._EasingChanged(args));\r\n        static FromProperty: DependencyProperty = DependencyProperty.Register(\"From\", () => Color, ColorAnimation, null, (d, args) => (<ColorAnimation>d)._FromChanged(args));\r\n        static ToProperty: DependencyProperty = DependencyProperty.Register(\"To\", () => Color, ColorAnimation, null, (d, args) => (<ColorAnimation>d)._ToChanged(args));\r\n        By: Color;\r\n        EasingFunction: IEasingFunction;\r\n        From: Color;\r\n        To: Color;\r\n\r\n        private _FromCached: Color = null;\r\n        private _ToCached: Color = null;\r\n        private _ByCached: Color = null;\r\n        private _EasingCached: EasingFunctionBase = undefined;\r\n\r\n        constructor(){\r\n            super();\r\n        }\r\n\r\n        GetCurrentValue(defaultOriginalValue: any, defaultDestinationValue: any, clockData: IClockData): Color {\r\n            var start = new Color();\r\n            if (this._FromCached)\r\n                start = this._FromCached;\r\n            else if (defaultOriginalValue instanceof Color)\r\n                start = defaultOriginalValue;\r\n\r\n            var end = start;\r\n            if (this._ToCached)\r\n                end = this._ToCached;\r\n            else if (this._ByCached)\r\n                end = start.Add(this._ByCached);\r\n            else if (defaultDestinationValue instanceof Color)\r\n                end = defaultDestinationValue;\r\n\r\n            var easingFunc = this._EasingCached;\r\n            if (easingFunc)\r\n                clockData.Progress = easingFunc.Ease(clockData.Progress);\r\n\r\n            return Color.LERP(start, end, clockData.Progress);\r\n        }\r\n\r\n        private _FromChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._FromCached = args.NewValue;\r\n        }\r\n        private _ToChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._ToCached = args.NewValue;\r\n        }\r\n        private _ByChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._ByCached = args.NewValue;\r\n        }\r\n        private _EasingChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._EasingCached = args.NewValue;\r\n        }\r\n\r\n        GenerateFrom(): AnimationBase {\r\n            return new ColorAnimation();\r\n        }\r\n        GenerateTo(isEntering: boolean): AnimationBase {\r\n            var val = this.From != null ? this.From : this.To;\r\n            if (val == null)\r\n                return null;\r\n            var ca = new ColorAnimation();\r\n            ca.To = val;\r\n            return ca;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ColorAnimation);\r\n}"
  },
  {
    "path": "src/Media/Animation/ColorAnimationUsingKeyFrames.ts",
    "content": "/// <reference path=\"AnimationUsingKeyFrames.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class ColorAnimationUsingKeyFrames extends AnimationUsingKeyFrames {\r\n        GenerateFrom(): AnimationBase {\r\n            return new ColorAnimation();\r\n        }\r\n        GenerateTo(isEntering: boolean): AnimationBase {\r\n            var kfs = this.KeyFrames;\r\n            if (kfs.Count === 0)\r\n                return null;\r\n            var val = (kfs.GetValueAt(isEntering ? 0 : kfs.Count - 1)).Value;\r\n            if (val == null)\r\n                return null;\r\n            var ca = new Animation.ColorAnimation();\r\n            ca.To = val;\r\n            return ca;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ColorAnimationUsingKeyFrames);\r\n}"
  },
  {
    "path": "src/Media/Animation/ColorKeyFrame.ts",
    "content": "/// <reference path=\"KeyFrame.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class ColorKeyFrame extends KeyFrame {\r\n        static ValueProperty: DependencyProperty = DependencyProperty.Register(\"Value\", () => Color, ColorKeyFrame);\r\n        Value: Color;\r\n    }\r\n    Fayde.CoreLibrary.add(ColorKeyFrame);\r\n\r\n    export class DiscreteColorKeyFrame extends ColorKeyFrame {\r\n        InterpolateValue(baseValue: Color, keyFrameProgress: number): Color {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.Value;\r\n            return baseValue;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DiscreteColorKeyFrame);\r\n\r\n    export class EasingColorKeyFrame extends ColorKeyFrame {\r\n        static EasingFunctionProperty: DependencyProperty = DependencyProperty.Register(\"EasingFunction\", () => EasingFunctionBase, EasingColorKeyFrame);\r\n        EasingFunction: EasingFunctionBase;\r\n\r\n        InterpolateValue(baseValue: Color, keyFrameProgress: number): Color {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.Value;\r\n\r\n            var start = baseValue;\r\n            var end = this.Value;\r\n\r\n            var easingFunction = this.EasingFunction;\r\n            if (easingFunction)\r\n                keyFrameProgress = easingFunction.Ease(keyFrameProgress);\r\n\r\n            return Color.LERP(start, end, keyFrameProgress);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(EasingColorKeyFrame);\r\n\r\n    export class LinearColorKeyFrame extends ColorKeyFrame {\r\n        InterpolateValue(baseValue: Color, keyFrameProgress: number): Color {\r\n            return Color.LERP(baseValue, this.Value, keyFrameProgress);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(LinearColorKeyFrame);\r\n\r\n    export class SplineColorKeyFrame extends ColorKeyFrame {\r\n        static KeySplineProperty: DependencyProperty = DependencyProperty.Register(\"KeySpline\", () => KeySpline, SplineColorKeyFrame);\r\n        KeySpline: KeySpline;\r\n\r\n        InterpolateValue(baseValue: Color, keyFrameProgress: number): Color {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.Value;\r\n\r\n            var start = baseValue;\r\n            var end = this.Value;\r\n            var splineProgress = keyFrameProgress;\r\n            var keySpline = this.KeySpline;\r\n            if (keySpline)\r\n                splineProgress = keySpline.GetSplineProgress(keyFrameProgress);\r\n\r\n            return Color.LERP(start, end, splineProgress);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SplineColorKeyFrame);\r\n}"
  },
  {
    "path": "src/Media/Animation/Curves.ts",
    "content": "\r\nmodule Fayde.Media.Animation {\r\n    export interface ICurvePoint {\r\n        x: number;\r\n        y: number;\r\n    }\r\n    export interface IQuadraticCurve {\r\n        c0: ICurvePoint;\r\n        c1: ICurvePoint;\r\n        c2: ICurvePoint;\r\n    }\r\n    export interface ICubicCurve {\r\n        c0: ICurvePoint;\r\n        c1: ICurvePoint;\r\n        c2: ICurvePoint;\r\n        c3: ICurvePoint;\r\n    }\r\n    export interface ISubdiviedCubicCurve {\r\n        b1: ICubicCurve;\r\n        b2: ICubicCurve;\r\n    }\r\n\r\n    export class Curves {\r\n        static QuadraticArrayYForX(arr: IQuadraticCurve[], x: number, count: number): number {\r\n            for (var i = 0; i < count; i++) {\r\n                if (x < arr[i].c2.x)\r\n                    return Curves.QuadraticYForX(x, arr[i]);\r\n            }\r\n            return 0.0;\r\n        }\r\n        static QuadraticYForX(x: number, src: IQuadraticCurve): number {\r\n            var l = src.c2.x - src.c0.x;\r\n            if (l <= 0)\r\n                return 0.0;\r\n            x = (x - src.c0.x) / l;\r\n            return ((1 - x) * (1 - x)) * src.c0.y + ((2 * x) * (1 - x) * src.c1.y) + ((x * x) * src.c2.y);\r\n        }\r\n\r\n        static SubdivideCubicAtLevel(b: ICubicCurve[], lvl: number, src: ICubicCurve) {\r\n            Curves.RecursiveSubdivide(b, lvl, 1, 0, src);\r\n        }\r\n        static RecursiveSubdivide(b: ICubicCurve[], lvl: number, currentlvl: number, pos: number, src: ICubicCurve) {\r\n            var data: ISubdiviedCubicCurve = { b1: null, b2: null };\r\n            Curves.SubdivideCubic(data, src);\r\n            var b1 = data.b1;\r\n            var b2 = data.b2;\r\n\r\n            if (currentlvl === lvl) {\r\n                b[pos] = b1;\r\n                b[pos + 1] = b2;\r\n                return pos + 2;\r\n            }\r\n            pos = Curves.RecursiveSubdivide(b, lvl, currentlvl + 1, pos, b1);\r\n            pos = Curves.RecursiveSubdivide(b, lvl, currentlvl + 1, pos, b2);\r\n            return pos;\r\n        }\r\n        static SubdivideCubic(data: ISubdiviedCubicCurve, src: ICubicCurve) {\r\n            var p01 = { x: 0, y: 0 }, p012 = { x: 0, y: 0 }, p0123 = { x: 0, y: 0 };\r\n            var p12 = { x: 0, y: 0 }, p123 = { x: 0, y: 0 };\r\n            var p23 = { x: 0, y: 0 };\r\n\r\n            Curves.HalfLerpPoint(p01, src.c0, src.c1);\r\n            Curves.HalfLerpPoint(p12, src.c1, src.c2);\r\n            Curves.HalfLerpPoint(p23, src.c2, src.c3);\r\n\r\n            Curves.HalfLerpPoint(p012, p01, p12);\r\n\r\n            Curves.HalfLerpPoint(p123, p12, p23);\r\n            Curves.HalfLerpPoint(p0123, p012, p123);\r\n\r\n            data.b1 = {\r\n                c0: src.c0,\r\n                c1: p01,\r\n                c2: p012,\r\n                c3: p0123\r\n            };\r\n            data.b2 = {\r\n                c0: p0123,\r\n                c1: p123,\r\n                c2: p23,\r\n                c3: src.c3\r\n            };\r\n        }\r\n        static HalfLerpPoint(p: ICurvePoint, p1: ICurvePoint, p2: ICurvePoint) {\r\n            p.x = p1.x + (p2.x - p1.x) * 0.5;\r\n            p.y = p1.y + (p2.y - p1.y) * 0.5;\r\n        }\r\n\r\n        static ConvertCubicsToQuadratics(srcArray: ICubicCurve[], count: number): IQuadraticCurve[] {\r\n            var destArray: IQuadraticCurve[] = [];\r\n            for (var i = 0; i < count; i++) {\r\n                destArray.push(Curves.QuadraticFromCubic(srcArray[i]));\r\n            }\r\n            return destArray;\r\n        }\r\n        static QuadraticFromCubic(src: ICubicCurve): IQuadraticCurve {\r\n            return {\r\n                c0: {\r\n                    x: src.c0.x,\r\n                    y: src.c0.y\r\n                },\r\n                c1: {\r\n                    x: (src.c1.x + src.c2.x) / 2.0,\r\n                    y: (src.c1.y + src.c2.y) / 2.0\r\n                },\r\n                c2: {\r\n                    x: src.c3.x,\r\n                    y: src.c3.y\r\n                }\r\n            };\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Media/Animation/DoubleAnimation.ts",
    "content": "/// <reference path=\"AnimationBase.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class DoubleAnimation extends AnimationBase {\r\n        static ByProperty: DependencyProperty = DependencyProperty.Register(\"By\", () => Number, DoubleAnimation, null, (d, args) => (<DoubleAnimation>d)._ByChanged(args));\r\n        static EasingFunctionProperty: DependencyProperty = DependencyProperty.Register(\"EasingFunction\", () => EasingFunctionBase, DoubleAnimation, undefined, (d, args) => (<DoubleAnimation>d)._EasingChanged(args));\r\n        static FromProperty: DependencyProperty = DependencyProperty.Register(\"From\", () => Number, DoubleAnimation, null, (d, args) => (<DoubleAnimation>d)._FromChanged(args));\r\n        static ToProperty: DependencyProperty = DependencyProperty.Register(\"To\", () => Number, DoubleAnimation, null, (d, args) => (<DoubleAnimation>d)._ToChanged(args));\r\n        By: number;\r\n        EasingFunction: IEasingFunction;\r\n        From: number;\r\n        To: number;\r\n\r\n        private _FromCached: number = null;\r\n        private _ToCached: number = null;\r\n        private _ByCached: number = null;\r\n        private _EasingCached: EasingFunctionBase = undefined;\r\n\r\n        constructor(){\r\n            super();\r\n        }\r\n\r\n        GetCurrentValue(defaultOriginalValue: any, defaultDestinationValue: any, clockData: IClockData): number {\r\n            var start = 0.0;\r\n            if (this._FromCached != null)\r\n                start = this._FromCached;\r\n            else if (defaultOriginalValue != null && typeof defaultOriginalValue === \"number\")\r\n                start = defaultOriginalValue;\r\n\r\n            var end = start;\r\n            if (this._ToCached != null)\r\n                end = this._ToCached;\r\n            else if (this._ByCached != null)\r\n                end = start + this._ByCached;\r\n            else if (defaultDestinationValue != null && typeof defaultDestinationValue === \"number\")\r\n                end = defaultDestinationValue;\r\n\r\n            var easingFunc = this._EasingCached;\r\n            if (easingFunc != null)\r\n                clockData.Progress = easingFunc.Ease(clockData.Progress);\r\n\r\n            return start + ((end - start) * clockData.Progress);\r\n        }\r\n\r\n        private _FromChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._FromCached = args.NewValue;\r\n        }\r\n        private _ToChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._ToCached = args.NewValue;\r\n        }\r\n        private _ByChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._ByCached = args.NewValue;\r\n        }\r\n        private _EasingChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._EasingCached = args.NewValue;\r\n        }\r\n\r\n        GenerateFrom(): AnimationBase {\r\n            return new DoubleAnimation();\r\n        }\r\n        GenerateTo(isEntering: boolean): AnimationBase {\r\n            var val = (this.From != null) ? this.From : this.To;\r\n            if (val == null)\r\n                return null;\r\n            var da = new DoubleAnimation();\r\n            da.To = val;\r\n            return da;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DoubleAnimation);\r\n}"
  },
  {
    "path": "src/Media/Animation/DoubleAnimationUsingKeyFrames.ts",
    "content": "/// <reference path=\"AnimationUsingKeyFrames.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class DoubleAnimationUsingKeyFrames extends AnimationUsingKeyFrames {\r\n        GenerateFrom(): AnimationBase {\r\n            return new DoubleAnimation();\r\n        }\r\n        GenerateTo(isEntering: boolean): AnimationBase {\r\n            var kfs = this.KeyFrames;\r\n            if (kfs.Count === 0)\r\n                return null;\r\n            var val = (kfs.GetValueAt(isEntering ? 0 : kfs.Count - 1)).Value;\r\n            if (val == null)\r\n                return null;\r\n            var da = new DoubleAnimation();\r\n            da.To = val;\r\n            return da;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DoubleAnimationUsingKeyFrames);\r\n}"
  },
  {
    "path": "src/Media/Animation/DoubleKeyFrame.ts",
    "content": "/// <reference path=\"KeyFrame.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class DoubleKeyFrame extends KeyFrame {\r\n        static ValueProperty: DependencyProperty = DependencyProperty.Register(\"Value\", () => Number, DoubleKeyFrame);\r\n        Value: number;\r\n    }\r\n    Fayde.CoreLibrary.add(DoubleKeyFrame);\r\n\r\n    export class DiscreteDoubleKeyFrame extends DoubleKeyFrame {\r\n        InterpolateValue(baseValue: number, keyFrameProgress: number): number {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.Value;\r\n            return baseValue;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DiscreteDoubleKeyFrame);\r\n\r\n    export class EasingDoubleKeyFrame extends DoubleKeyFrame {\r\n        static EasingFunctionProperty: DependencyProperty = DependencyProperty.Register(\"EasingFunction\", () => EasingFunctionBase, EasingDoubleKeyFrame);\r\n        EasingFunction: EasingFunctionBase;\r\n\r\n        InterpolateValue(baseValue: number, keyFrameProgress: number): number {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.Value;\r\n\r\n            var start = baseValue;\r\n            var end = this.Value;\r\n\r\n            var easingFunction = this.EasingFunction;\r\n            if (easingFunction)\r\n                keyFrameProgress = easingFunction.Ease(keyFrameProgress);\r\n\r\n            if (isNaN(start))\r\n                start = 0;\r\n            if (isNaN(end))\r\n                end = 0;\r\n\r\n            return start + (end - start) * keyFrameProgress;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(EasingDoubleKeyFrame);\r\n\r\n    export class LinearDoubleKeyFrame extends DoubleKeyFrame {\r\n        InterpolateValue(baseValue: number, keyFrameProgress: number): number {\r\n            var start = baseValue;\r\n            var end = this.Value;\r\n            if (isNaN(start))\r\n                start = 0;\r\n            if (isNaN(end))\r\n                end = 0;\r\n            return start + (end - start) * keyFrameProgress;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(LinearDoubleKeyFrame);\r\n    \r\n    export class SplineDoubleKeyFrame extends DoubleKeyFrame {\r\n        static KeySplineProperty: DependencyProperty = DependencyProperty.Register(\"KeySpline\", () => KeySpline, SplineDoubleKeyFrame);\r\n        KeySpline: KeySpline;\r\n\r\n        InterpolateValue(baseValue: number, keyFrameProgress: number): number {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.Value;\r\n\r\n            var start = baseValue;\r\n            var end = this.Value;\r\n            var splineProgress = keyFrameProgress;\r\n            var keySpline = this.KeySpline;\r\n            if (keySpline)\r\n                splineProgress = keySpline.GetSplineProgress(keyFrameProgress);\r\n\r\n            if (isNaN(start))\r\n                start = 0;\r\n            if (isNaN(end))\r\n                end = 0;\r\n\r\n            return start + (end - start) * splineProgress;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SplineDoubleKeyFrame);\r\n}"
  },
  {
    "path": "src/Media/Animation/EasingFunctionBase.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export interface IEasingFunction {\r\n        Ease(normalizedTime: number): number;\r\n    }\r\n    export class EasingFunctionBase extends DependencyObject implements IEasingFunction {\r\n        static EasingModeProperty: DependencyProperty = DependencyProperty.Register(\"EasingMode\", () => new Enum(EasingMode), EasingFunctionBase);\r\n        EasingMode: EasingMode;\r\n\r\n        Ease(normalizedTime: number): number {\r\n            var easingMode = this.EasingMode;\r\n            switch (easingMode) {\r\n                case EasingMode.EaseIn:\r\n                    return this.EaseInCore(normalizedTime);\r\n                case EasingMode.EaseOut:\r\n                    return this.EaseInCore(1.0 - normalizedTime);\r\n                case EasingMode.EaseInOut:\r\n                    return normalizedTime <= 0.5 ?\r\n                        this.EaseInCore(normalizedTime * 2) * 0.5 :\r\n                        1.0 - this.EaseInCore(((1.0 - normalizedTime) * 2) * 0.5);\r\n                default:\r\n                    return 0.0;\r\n            }\r\n\r\n        }\r\n        EaseInCore(t: number): number {\r\n            //Abstract method\r\n            return t;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Media/Animation/EasingFunctions.ts",
    "content": "/// <reference path=\"EasingFunctionBase.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class BackEase extends EasingFunctionBase {\r\n        static AmplitudeProperty: DependencyProperty = DependencyProperty.Register(\"Amplitude\", () => Number, BackEase);\r\n        Amplitude: number;\r\n        EaseInCore(t: number): number {\r\n            var a = this.Amplitude;\r\n            return (t * t * t) - (t * a * Math.sin(t * Math.PI));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(BackEase);\r\n\r\n    export class BounceEase extends EasingFunctionBase {\r\n        static BouncesProperty:DependencyProperty = DependencyProperty.Register(\"Bounces\", () => Number, BounceEase, 3);\r\n        static BouncinessProperty:DependencyProperty = DependencyProperty.Register(\"Bounciness\", () => Number, BounceEase, 2);\r\n        Bounces: number;\r\n        Bounciness: number;\r\n        EaseInCore(t: number): number {\r\n            t = 1 - t;\r\n            var bounces = this.Bounces;\r\n            var bounciness = this.Bounciness;\r\n            var r = -1;\r\n            var period = 2;\r\n\r\n            for (var i = 0; i <= bounces; i++) {\r\n                r += (period * Math.pow(1 + (bounciness / 2), -i));\r\n            }\r\n\r\n            var x1 = -1.0;\r\n            var x2 = 0;\r\n            var r_sq = r * r;\r\n            var val = 100;\r\n            var p = 0;\r\n\r\n            while (val > 0.0) {\r\n                x2 = x1 + period * Math.pow(1 + (bounciness / 2), -p++);\r\n                val = r_sq * (t - x1 / r) * (t - x2 / r);\r\n                x1 = x2;\r\n            }\r\n            return -val;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(BounceEase);\r\n\r\n    export class CircleEase extends EasingFunctionBase {\r\n        EaseInCore(t: number): number {\r\n            return 1 - Math.sqrt(1 - (t * t));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(CircleEase);\r\n\r\n    export class CubicEase extends EasingFunctionBase {\r\n        EaseInCore(t: number): number {\r\n            return t * t * t;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(CubicEase);\r\n\r\n    export class ElasticEase extends EasingFunctionBase {\r\n        static OscillationsProperty: DependencyProperty = DependencyProperty.Register(\"Oscillations\", () => Number, ElasticEase);\r\n        static SpringinessProperty: DependencyProperty = DependencyProperty.Register(\"Springiness\", () => Number, ElasticEase);\r\n        Oscillations: number;\r\n        Springiness: number;\r\n        EaseInCore(t: number): number {\r\n            var period = 1.0 / (this.Oscillations + .25);\r\n            var offset = period / 4;\r\n            t = t - 1;\r\n            return t * -Math.pow(2.0, this.Springiness * t) * Math.sin(((t - offset) * Math.PI * 2) / period);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ElasticEase);\r\n\r\n    export class ExponentialEase extends EasingFunctionBase {\r\n        static ExponentProperty: DependencyProperty = DependencyProperty.Register(\"Exponent\", () => Number, ExponentialEase);\r\n        Exponent: number;\r\n        EaseInCore(t: number): number {\r\n            var e = this.Exponent;\r\n            return (Math.exp(e * t) - 1) / (Math.exp(e) - 1);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ExponentialEase);\r\n\r\n    export class PowerEase extends EasingFunctionBase {\r\n        static PowerProperty: DependencyProperty = DependencyProperty.Register(\"Power\", () => Number, PowerEase);\r\n        Power: number;\r\n        EaseInCore(t: number): number {\r\n            return Math.pow(t, this.Power);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PowerEase);\r\n\r\n    export class QuadraticEase extends EasingFunctionBase {\r\n        EaseInCore(t: number): number {\r\n            return t * t;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(QuadraticEase);\r\n\r\n    export class QuarticEase extends EasingFunctionBase {\r\n        EaseInCore(t: number): number {\r\n            return t * t * t * t;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(QuarticEase);\r\n\r\n    export class QuinticEase extends EasingFunctionBase {\r\n        EaseInCore(t: number): number {\r\n            return t * t * t * t * t;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(QuinticEase);\r\n\r\n    export class SineEase extends EasingFunctionBase {\r\n        EaseInCore(t: number): number {\r\n            return 1 - (Math.sin(1 - t) * (Math.PI / 2));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SineEase);\r\n}"
  },
  {
    "path": "src/Media/Animation/Enums.ts",
    "content": "module Fayde.Media.Animation {\r\n    export enum EasingMode {\r\n        EaseOut = 0,\r\n        EaseIn = 1,\r\n        EaseInOut = 2,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(EasingMode, \"EasingMode\");\r\n\r\n    export enum FillBehavior {\r\n        HoldEnd = 0,\r\n        Stop = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(FillBehavior, \"FillBehavior\");\r\n}"
  },
  {
    "path": "src/Media/Animation/KeyFrame.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export interface IOutValue {\r\n        Value: any;\r\n    }\r\n    export interface IKeyFrameListener {\r\n        KeyFrameChanged(source: KeyFrame);\r\n    }\r\n    export interface IKeyFrame {\r\n        _ResolvedKeyTime: TimeSpan;\r\n        _Resolved: boolean;\r\n        Value: any;\r\n        InterpolateValue(baseValue: any, keyFrameProgress: number): any;\r\n    }\r\n\r\n    export class KeyFrame extends DependencyObject implements IKeyFrame {\r\n        _ResolvedKeyTime: TimeSpan = null;\r\n        _Resolved: boolean = false;\r\n        private _Listener: IKeyFrameListener;\r\n\r\n        static KeyTimeProperty: DependencyProperty = DependencyProperty.Register(\"KeyTime\", () => KeyTime, KeyFrame, undefined, (d, args) => (<KeyFrame>d).InvalidateKeyFrame());\r\n        KeyTime: KeyTime;\r\n        Value: any;\r\n\r\n        CoerceKeyTime(dobj: DependencyObject, propd: DependencyProperty, value: any, coerced: IOutValue, error: BError): boolean {\r\n            if (!value)\r\n                coerced.Value = this.KeyTime;\r\n            else\r\n                coerced.Value = value;\r\n            return true;\r\n        }\r\n\r\n        InterpolateValue(baseValue: any, keyFrameProgress: number): any {\r\n            //Abstract Method\r\n            return undefined;\r\n        }\r\n\r\n        CompareToTimeSpan(otherTs: TimeSpan): number {\r\n            return this._ResolvedKeyTime.CompareTo(otherTs);\r\n        }\r\n\r\n        Listen(listener: IKeyFrameListener) { this._Listener = listener; }\r\n        Unlisten(listener: IKeyFrameListener) { if (this._Listener === listener) this._Listener = null; }\r\n\r\n        InvalidateKeyFrame() {\r\n            var listener = this._Listener;\r\n            if (listener) listener.KeyFrameChanged(this);\r\n        }\r\n\r\n        static Comparer(kf1: KeyFrame, kf2: KeyFrame): number {\r\n            var ts1 = kf1._ResolvedKeyTime;\r\n            var ts2 = kf2._ResolvedKeyTime;\r\n            return ts1.CompareTo(ts2);\r\n        }\r\n\r\n        /// http://msdn2.microsoft.com/en-us/library/ms742524.aspx (Bottom of page)\r\n        static ResolveKeyFrames(animation: AnimationBase, arr: KeyFrame[]): KeyFrame[] {\r\n            var totalInterpolationTime: TimeSpan;\r\n            var hasTimeSpanKeyFrame = false;\r\n            var highestKeyTimeTimeSpan = new TimeSpan();\r\n            var keyFrame: KeyFrame;\r\n\r\n            var len = arr.length;\r\n\r\n            var i: number;\r\n            for (i = 0; i < len; i++) {\r\n                keyFrame = arr[i];\r\n                keyFrame._ResolvedKeyTime = new TimeSpan();\r\n                keyFrame._Resolved = false;\r\n            }\r\n\r\n            var keyTime: KeyTime;\r\n            // resolve TimeSpan keyframes\r\n            for (i = 0; i < len; i++) {\r\n                keyFrame = arr[i];\r\n                keyTime = keyFrame.KeyTime;\r\n                if (keyTime.HasTimeSpan) {\r\n                    hasTimeSpanKeyFrame = true;\r\n                    var ts = keyTime.TimeSpan;\r\n                    if (ts.CompareTo(highestKeyTimeTimeSpan) > 0)\r\n                        highestKeyTimeTimeSpan = ts;\r\n                    keyFrame._ResolvedKeyTime = ts;\r\n                    keyFrame._Resolved = true;\r\n                }\r\n            }\r\n\r\n            // calculate total animation interpolation time\r\n            var dur = animation.Duration;\r\n            if (dur && dur.HasTimeSpan) {\r\n                totalInterpolationTime = dur.TimeSpan;\r\n            } else if (hasTimeSpanKeyFrame) {\r\n                totalInterpolationTime = highestKeyTimeTimeSpan;\r\n            } else {\r\n                totalInterpolationTime = new TimeSpan(TimeSpan._TicksPerSecond);\r\n            }\r\n            //LOOKS USELESS: animation._TotalKeyTime = totalInterpolationTime;\r\n\r\n            // use the total interpolation time to resolve percent keytime keyframes\r\n            for (i = 0; i < len; i++) {\r\n                keyFrame = arr[i];\r\n                keyTime = keyFrame.KeyTime;\r\n                if (keyTime.HasPercent) {\r\n                    keyFrame._ResolvedKeyTime = totalInterpolationTime.Multiply(keyTime.Percent)\r\n                    keyFrame._Resolved = true;\r\n                }\r\n            }\r\n\r\n            // if the last frame is KeyTime Uniform or Paced, resolve it to be equal to the total interpolation time\r\n            if (len > 0) {\r\n                keyFrame = arr[len - 1];\r\n                keyTime = keyFrame.KeyTime;\r\n                if (keyTime.IsPaced || keyTime.IsUniform) {\r\n                    keyFrame._ResolvedKeyTime = totalInterpolationTime;\r\n                    keyFrame._Resolved = true;\r\n                }\r\n            }\r\n\r\n            /* if the first frame is KeyTime Paced:\r\n            **   1. if there is only 1 frame, its KeyTime is the total interpolation time.\r\n            **   2. if there is more than 1 frame, its KeyTime is 0.\r\n            **\r\n            ** note 1 is handled in the above block so we only have to\r\n            ** handle 2 here.\r\n            */\r\n            if (len > 0) {\r\n                keyFrame = arr[len - 1];\r\n                keyTime = keyFrame.KeyTime;\r\n                if (!keyFrame._Resolved && keyTime.IsPaced) {\r\n                    keyFrame._ResolvedKeyTime = new TimeSpan();\r\n                    keyFrame._Resolved = true;\r\n                }\r\n            }\r\n\r\n            // XXX resolve remaining KeyTime::Uniform frames\r\n\r\n            // XXX resolve frames with unspecified keytimes -- is this possible?  is the default keytime NULL?  it seems to be Uniform?\r\n\r\n            // XXX resolve remaining KeyTime::Paced frames */\r\n\r\n            return arr;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(KeyFrame);\r\n\r\n    export class KeyFrameCollection extends XamlObjectCollection<KeyFrame> {\r\n        private _Resolved: boolean = false;\r\n        private _SortedList: KeyFrame[] = [];\r\n\r\n        GetKeyFrameForTime(t: TimeSpan, prevFrameRef: IOutValue): KeyFrame {\r\n            var currentKeyFrame: KeyFrame = null;\r\n            var previousKeyFrame: KeyFrame = null;\r\n            var i;\r\n\r\n            var sortedList = this._SortedList;\r\n\r\n            if (sortedList.length == 0) {\r\n                prevFrameRef.Value = null;\r\n                return null;\r\n            }\r\n\r\n            var keyFrame: KeyFrame;\r\n            var valuePropd;\r\n            // Crawl forward to figure out what segment to use (this assumes the list is sorted)\r\n            for (i = 0; i < sortedList.length; i++) {\r\n                keyFrame = sortedList[i];\r\n                if (keyFrame.CompareToTimeSpan(t) >= 0 || (i + 1) >= sortedList.length)\r\n                    break;\r\n            }\r\n\r\n            // Crawl backward to find first non-null frame\r\n            for (; i >= 0; i--) {\r\n                keyFrame = sortedList[i];\r\n                valuePropd = DependencyProperty.GetDependencyProperty((<any>keyFrame).constructor, \"Value\");\r\n                if (keyFrame.GetValue(valuePropd) !== undefined) {\r\n                    currentKeyFrame = keyFrame;\r\n                    break;\r\n                }\r\n            }\r\n\r\n            // Crawl backward some more to find first non-null prev frame\r\n            for (i--; i >= 0; i--) {\r\n                keyFrame = sortedList[i];\r\n                valuePropd = DependencyProperty.GetDependencyProperty((<any>keyFrame).constructor, \"Value\");\r\n                if (keyFrame.GetValue(valuePropd) !== undefined) {\r\n                    previousKeyFrame = keyFrame;\r\n                    break;\r\n                }\r\n            }\r\n\r\n            prevFrameRef.Value = previousKeyFrame;\r\n            return currentKeyFrame;\r\n        }\r\n        Clear(): boolean {\r\n            this._Resolved = false;\r\n            this._SortedList = [];\r\n            return super.Clear();\r\n        }\r\n\r\n        AddingToCollection(value: KeyFrame, error: BError): boolean {\r\n            if (!super.AddingToCollection(value, error))\r\n                return false;\r\n            this._Resolved = false;\r\n            value.Listen(this);\r\n            return true;\r\n        }\r\n        RemovedFromCollection(value: KeyFrame, isValueSafe: boolean) {\r\n            super.RemovedFromCollection(value, isValueSafe);\r\n            this._Resolved = false;\r\n            value.Unlisten(this);\r\n        }\r\n        KeyFrameChanged(source: KeyFrame) {\r\n            this._Resolved = false;\r\n        }\r\n\r\n        static ResolveKeyFrames(animation: AnimationBase, coll: KeyFrameCollection): KeyFrame[] {\r\n            if (coll._Resolved)\r\n                return coll._SortedList;\r\n            coll._SortedList = KeyFrame.ResolveKeyFrames(animation, coll._ht).slice(0);\r\n            coll._SortedList.sort(KeyFrame.Comparer);\r\n            coll._Resolved = true;\r\n            return coll._SortedList;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(KeyFrameCollection);\r\n}"
  },
  {
    "path": "src/Media/Animation/KeySpline.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class KeySpline extends DependencyObject {\r\n        static PRECISION_LEVEL: number = 4;\r\n        static TOTAL_COUNT: number = Math.pow(2, KeySpline.PRECISION_LEVEL);\r\n\r\n        static ControlPoint1Property: DependencyProperty = DependencyProperty.RegisterCore(\"ControlPoint1\", function () { return Point; }, KeySpline, undefined, (d, args) => (<KeySpline>d).InvalidateControlPoints());\r\n        static ControlPoint2Property: DependencyProperty = DependencyProperty.RegisterCore(\"ControlPoint2\", function () { return Point; }, KeySpline, undefined, (d, args) => (<KeySpline>d).InvalidateControlPoints());\r\n        ControlPoint1: Point; //undefined is 0,0\r\n        ControlPoint2: Point; //undefined is 1,1\r\n\r\n        private _QuadraticsArray: IQuadraticCurve[] = null;\r\n        GetSplineProgress(linearProgress: number): number {\r\n            if (linearProgress >= 1.0)\r\n                return 1.0;\r\n            if (linearProgress <= 0.0)\r\n                return 0.0;\r\n            if (!this._QuadraticsArray)\r\n                this._RegenerateQuadratics();\r\n            return Curves.QuadraticArrayYForX(this._QuadraticsArray, linearProgress, KeySpline.TOTAL_COUNT);\r\n        }\r\n        private InvalidateControlPoints() {\r\n            this._QuadraticsArray = null;\r\n        }\r\n        private _RegenerateQuadratics() {\r\n            var c1 = this.ControlPoint1 || new Point(0, 0);\r\n            var c2 = this.ControlPoint2 || new Point(1.0, 1.0);\r\n            var src: ICubicCurve = {\r\n                c0: { x: 0.0, y: 0.0 },\r\n                c1: { x: c1.x, y: c1.y },\r\n                c2: { x: c2.x, y: c2.y },\r\n                c3: { x: 1.0, y: 1.0 }\r\n            };\r\n\r\n            var carr: ICubicCurve[] = [];\r\n            Curves.SubdivideCubicAtLevel(carr, KeySpline.PRECISION_LEVEL, src);\r\n            this._QuadraticsArray = Curves.ConvertCubicsToQuadratics(carr, KeySpline.TOTAL_COUNT);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(KeySpline);\r\n}"
  },
  {
    "path": "src/Media/Animation/ObjectAnimationUsingKeyFrames.ts",
    "content": "/// <reference path=\"AnimationUsingKeyFrames.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class ObjectAnimationUsingKeyFrames extends AnimationUsingKeyFrames {\r\n        Resolve (target: DependencyObject, propd: DependencyProperty): boolean {\r\n            for (var en = this.KeyFrames.getEnumerator(); en.moveNext();) {\r\n                var keyFrame = <ObjectKeyFrame>en.current;\r\n                var value = keyFrame.Value;\r\n                if (value == null) {\r\n                    keyFrame.ConvertedValue = undefined;\r\n                } else {\r\n                    var cv = convertKeyFrame(propd, value);\r\n                    if (cv === BAD_CONVERSION)\r\n                        return false;\r\n                    keyFrame.ConvertedValue = cv;\r\n                }\r\n            }\r\n            return super.Resolve(target, propd);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ObjectAnimationUsingKeyFrames);\r\n\r\n    var BAD_CONVERSION = {};\r\n\r\n    function convertKeyFrame (propd: DependencyProperty, value: any): any {\r\n        try {\r\n            return nullstone.convertAnyToType(value, <Function>propd.GetTargetType());\r\n        } catch (err) {\r\n            console.warn(\"Error resolving ObjectAnimation Value.\");\r\n            return BAD_CONVERSION;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Media/Animation/ObjectKeyFrame.ts",
    "content": "/// <reference path=\"KeyFrame.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class ObjectKeyFrame extends KeyFrame {\r\n        static ValueProperty: DependencyProperty = DependencyProperty.Register(\"Value\", () => Object, ObjectKeyFrame);\r\n        Value: any;\r\n        ConvertedValue: any = undefined;\r\n    }\r\n    Fayde.CoreLibrary.add(ObjectKeyFrame);\r\n    \r\n    export class DiscreteObjectKeyFrame extends ObjectKeyFrame {\r\n        InterpolateValue(baseValue: any, keyFrameProgress: number): any {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.ConvertedValue;\r\n            return baseValue;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DiscreteObjectKeyFrame);\r\n}"
  },
  {
    "path": "src/Media/Animation/PointAnimation.ts",
    "content": "/// <reference path=\"AnimationBase.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class PointAnimation extends AnimationBase {\r\n        static ByProperty: DependencyProperty = DependencyProperty.Register(\"By\", () => Point, PointAnimation, null, (d, args) => (<PointAnimation>d)._ByChanged(args));\r\n        static EasingFunctionProperty: DependencyProperty = DependencyProperty.Register(\"EasingFunction\", () => EasingFunctionBase, PointAnimation, undefined, (d, args) => (<PointAnimation>d)._EasingChanged(args));\r\n        static FromProperty: DependencyProperty = DependencyProperty.Register(\"From\", () => Point, PointAnimation, null, (d, args) => (<PointAnimation>d)._FromChanged(args));\r\n        static ToProperty: DependencyProperty = DependencyProperty.Register(\"To\", () => Point, PointAnimation, null, (d, args) => (<PointAnimation>d)._ToChanged(args));\r\n        By: Point;\r\n        EasingFunction: IEasingFunction;\r\n        From: Point;\r\n        To: Point;\r\n\r\n        private _FromCached: Point = null;\r\n        private _ToCached: Point = null;\r\n        private _ByCached: Point = null;\r\n        private _EasingCached: EasingFunctionBase = undefined;\r\n\r\n        constructor() {\r\n            super();\r\n        }\r\n\r\n        GetCurrentValue(defaultOriginalValue: any, defaultDestinationValue: any, clockData: IClockData): Point {\r\n            var start = new Point();\r\n            if (this._FromCached != null)\r\n                start = this._FromCached;\r\n            else if (defaultOriginalValue instanceof Point)\r\n                start = defaultOriginalValue;\r\n\r\n            var end = start;\r\n            if (this._ToCached != null)\r\n                end = this._ToCached;\r\n            else if (this._ByCached != null)\r\n                end = new Point(start.x + this._ByCached.x, start.y + this._ByCached.y);\r\n            else if (defaultDestinationValue instanceof Point)\r\n                end = defaultDestinationValue;\r\n\r\n            var easingFunc = this._EasingCached;\r\n            if (easingFunc != null)\r\n                clockData.Progress = easingFunc.Ease(clockData.Progress);\r\n\r\n            return Point.LERP(start, end, clockData.Progress);\r\n        }\r\n        \r\n        private _FromChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._FromCached = args.NewValue;\r\n        }\r\n        private _ToChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._ToCached = args.NewValue;\r\n        }\r\n        private _ByChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._ByCached = args.NewValue;\r\n        }\r\n        private _EasingChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            this._EasingCached = args.NewValue;\r\n        }\r\n        \r\n        GenerateFrom(): AnimationBase {\r\n            return new PointAnimation();\r\n        }\r\n        GenerateTo(isEntering: boolean): AnimationBase {\r\n            var val = (this.From != null) ? this.From : this.To;\r\n            if (val == null)\r\n                return null;\r\n            var pa = new PointAnimation();\r\n            pa.To = val;\r\n            return pa;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PointAnimation);\r\n}"
  },
  {
    "path": "src/Media/Animation/PointAnimationUsingKeyFrames.ts",
    "content": "/// <reference path=\"AnimationUsingKeyFrames.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class PointAnimationUsingKeyFrames extends AnimationUsingKeyFrames {\r\n        GenerateFrom(): AnimationBase {\r\n            return new PointAnimation();\r\n        }\r\n        GenerateTo(isEntering: boolean): AnimationBase {\r\n            var kfs = this.KeyFrames;\r\n            if (kfs.Count === 0)\r\n                return null;\r\n            var val = (kfs.GetValueAt(isEntering ? 0 : kfs.Count - 1)).Value;\r\n            if (val == null)\r\n                return null;\r\n            var pa = new PointAnimation();\r\n            pa.To = val;\r\n            return pa;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PointAnimationUsingKeyFrames);\r\n}"
  },
  {
    "path": "src/Media/Animation/PointKeyFrame.ts",
    "content": "/// <reference path=\"KeyFrame.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export class PointKeyFrame extends KeyFrame {\r\n        static ValueProperty: DependencyProperty = DependencyProperty.Register(\"Value\", () => Point, PointKeyFrame);\r\n        Value: Point;\r\n    }\r\n    Fayde.CoreLibrary.add(PointKeyFrame);\r\n    \r\n    export class DiscretePointKeyFrame extends PointKeyFrame {\r\n        InterpolateValue(baseValue: Point, keyFrameProgress: number): Point {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.Value;\r\n            return baseValue;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DiscretePointKeyFrame);\r\n    \r\n    export class EasingPointKeyFrame extends PointKeyFrame {\r\n        static EasingFunctionProperty = DependencyProperty.Register(\"EasingFunction\", () => EasingFunctionBase, EasingPointKeyFrame);\r\n        EasingFunction: EasingFunctionBase;\r\n\r\n        InterpolateValue(baseValue: Point, keyFrameProgress: number): Point {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.Value;\r\n\r\n            var start = baseValue;\r\n            var end = this.Value;\r\n\r\n            var easingFunction = this.EasingFunction;\r\n            if (easingFunction)\r\n                keyFrameProgress = easingFunction.Ease(keyFrameProgress);\r\n\r\n            return Point.LERP(start, end, keyFrameProgress);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(EasingPointKeyFrame);\r\n    \r\n    export class LinearPointKeyFrame extends PointKeyFrame {\r\n        InterpolateValue(baseValue: Point, keyFrameProgress: number): Point {\r\n            return Point.LERP(baseValue, this.Value, keyFrameProgress);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(LinearPointKeyFrame);\r\n    \r\n    export class SplinePointKeyFrame extends PointKeyFrame {\r\n        static KeySplineProperty: DependencyProperty = DependencyProperty.Register(\"KeySpline\", () => KeySpline, SplinePointKeyFrame);\r\n        KeySpline: KeySpline;\r\n\r\n        InterpolateValue(baseValue: Point, keyFrameProgress: number): Point {\r\n            if (keyFrameProgress >= 1.0)\r\n                return this.Value;\r\n\r\n            var start = baseValue;\r\n            var end = this.Value;\r\n            var splineProgress = keyFrameProgress;\r\n            var keySpline = this.KeySpline;\r\n            if (keySpline)\r\n                splineProgress = keySpline.GetSplineProgress(keyFrameProgress);\r\n\r\n            if (isNaN(start.x))\r\n                start.x = 0;\r\n            if (isNaN(start.y))\r\n                start.y = 0;\r\n            if (isNaN(end.x))\r\n                end.x = 0;\r\n            if (isNaN(end.y))\r\n                end.y = 0;\r\n\r\n            return Point.LERP(start, end, splineProgress);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SplinePointKeyFrame);\r\n}"
  },
  {
    "path": "src/Media/Animation/RepeatBehavior.ts",
    "content": "module Fayde.Media.Animation {\r\n    export class RepeatBehavior {\r\n        private _Duration: Duration = null;\r\n        private _Count: number = null;\r\n        IsForever: boolean = false;\r\n\r\n        static FromRepeatDuration(duration: Duration): RepeatBehavior {\r\n            var rb = new RepeatBehavior();\r\n            rb._Duration = duration;\r\n            return rb;\r\n        }\r\n        static FromIterationCount(count: number): RepeatBehavior {\r\n            var rb = new RepeatBehavior();\r\n            rb._Count = count;\r\n            return rb;\r\n        }\r\n\r\n        get HasCount(): boolean { return this._Count != null; }\r\n        get Count(): number { return this._Count; }\r\n\r\n        get HasDuration(): boolean { return this._Duration != null; }\r\n        get Duration(): Duration { return this._Duration; }\r\n\r\n        Clone(): RepeatBehavior {\r\n            var rb = new RepeatBehavior();\r\n            rb._Duration = this._Duration;\r\n            rb._Count = this._Count;\r\n            rb.IsForever = this.IsForever;\r\n            return rb;\r\n        }\r\n\r\n        static Forever: RepeatBehavior = (function () { var rb = new RepeatBehavior(); rb.IsForever = true; return rb; })();\r\n    }\r\n    Fayde.CoreLibrary.add(RepeatBehavior);\r\n\r\n    nullstone.registerTypeConverter(RepeatBehavior, (val: string): RepeatBehavior => {\r\n        if (!val || val.toLowerCase() === \"forever\")\r\n            return RepeatBehavior.Forever;\r\n        if (val[val.length - 1] === \"x\") {\r\n            var d = parseInt(val.substr(0, val.length - 1));\r\n            return RepeatBehavior.FromIterationCount(d);\r\n        }\r\n        var duration = new Duration(nullstone.convertAnyToType(val, TimeSpan));\r\n        return RepeatBehavior.FromRepeatDuration(duration);\r\n    });\r\n}"
  },
  {
    "path": "src/Media/Animation/Storyboard.ts",
    "content": "/// <reference path=\"Timeline.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export interface IStoryboadResolution {\r\n        Target: DependencyObject;\r\n        Property: Data.PropertyPath;\r\n    }\r\n\r\n    /// http://msdn.microsoft.com/en-us/library/cc189019(v=vs.95).aspx\r\n    export class Storyboard extends Timeline {\r\n        static TargetNameProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"TargetName\", () => String, Storyboard);\r\n\r\n        static GetTargetName (d: DependencyObject): string {\r\n            return d.GetValue(Storyboard.TargetNameProperty);\r\n        }\r\n\r\n        static SetTargetName (d: DependencyObject, value: string) {\r\n            return d.SetValue(Storyboard.TargetNameProperty, value);\r\n        }\r\n\r\n        TargetName: string;\r\n\r\n        static TargetPropertyProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"TargetProperty\", () => Data.PropertyPath, Storyboard);\r\n\r\n        static GetTargetProperty (d: DependencyObject): Data.PropertyPath {\r\n            return d.GetValue(Storyboard.TargetPropertyProperty);\r\n        }\r\n\r\n        static SetTargetProperty (d: DependencyObject, value: Data.PropertyPath) {\r\n            return d.SetValue(Storyboard.TargetPropertyProperty, value);\r\n        }\r\n\r\n        TargetProperty: Data.PropertyPath;\r\n\r\n        static ResolveTarget (timeline: Timeline): IStoryboadResolution {\r\n            var res: IStoryboadResolution = {\r\n                Target: undefined,\r\n                Property: undefined\r\n            };\r\n\r\n            if (timeline.HasManualTarget) {\r\n                res.Target = timeline.ManualTarget;\r\n            } else {\r\n                var targetName = Storyboard.GetTargetName(timeline);\r\n                if (targetName)\r\n                    res.Target = <DependencyObject>timeline.FindName(targetName, true);\r\n            }\r\n\r\n            res.Property = Storyboard.GetTargetProperty(timeline);\r\n\r\n            return res;\r\n        }\r\n\r\n        static ChildrenProperty = DependencyProperty.RegisterImmutable<TimelineCollection>(\"Children\", () => TimelineCollection, Storyboard);\r\n        Children: TimelineCollection;\r\n\r\n        constructor () {\r\n            super();\r\n\r\n            var coll = Storyboard.ChildrenProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n        }\r\n\r\n        static SetTarget (timeline: Timeline, target: DependencyObject) {\r\n            timeline.ManualTarget = target;\r\n        }\r\n\r\n        Begin () {\r\n            if (Animation.Log)\r\n                console.log(getLogMessage(\"Storyboard.Begin\", this, true));\r\n            this.Reset();\r\n            var error = new BError();\r\n            var promotedValues: any[] = [];\r\n            var enumerator = this.Children.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                var animation = <AnimationBase>enumerator.current;\r\n                if (!animation._Hookup(promotedValues, error))\r\n                    error.ThrowException();\r\n            }\r\n            Application.Current.RegisterStoryboard(this);\r\n        }\r\n\r\n        Pause () {\r\n            super.Pause();\r\n            for (var en = this.Children.getEnumerator(); en.moveNext();) {\r\n                en.current.Pause();\r\n            }\r\n        }\r\n\r\n        Resume () {\r\n            super.Resume();\r\n            for (var en = this.Children.getEnumerator(); en.moveNext();) {\r\n                en.current.Resume();\r\n            }\r\n        }\r\n\r\n        Stop () {\r\n            if (Animation.Log)\r\n                console.log(getLogMessage(\"Storyboard.Stop\", this, false));\r\n            super.Stop();\r\n            Application.Current.UnregisterStoryboard(this);\r\n            for (var en = this.Children.getEnumerator(); en.moveNext();) {\r\n                en.current.Stop();\r\n            }\r\n        }\r\n\r\n        UpdateInternal (clockData: IClockData) {\r\n            if (Animation.Log)\r\n                console.log(getLogMessage(\"Storyboard.UpdateInternal\", this, false, clockData));\r\n            for (var en = this.Children.getEnumerator(); en.moveNext();) {\r\n                en.current.Update(clockData.CurrentTime.Ticks);\r\n            }\r\n        }\r\n\r\n        GetNaturalDurationCore (): Duration {\r\n            var fullTicks = 0;\r\n            for (var en = this.Children.getEnumerator(); en.moveNext();) {\r\n                var timeline = en.current;\r\n                var dur = timeline.GetNaturalDuration();\r\n                if (dur.IsAutomatic)\r\n                    continue;\r\n                if (dur.IsForever)\r\n                    return Duration.Forever;\r\n                //duration must have a timespan if we got here\r\n                var spanTicks = dur.TimeSpan.Ticks;\r\n                var repeat = timeline.RepeatBehavior || Timeline.DEFAULT_REPEAT_BEHAVIOR;\r\n                if (repeat.IsForever)\r\n                    return Duration.Forever;\r\n                if (repeat.HasCount)\r\n                    spanTicks = spanTicks * repeat.Count;\r\n                if (timeline.AutoReverse)\r\n                    spanTicks *= 2;\r\n                if (repeat.HasDuration)\r\n                    spanTicks = repeat.Duration.TimeSpan.Ticks;\r\n                if (spanTicks !== 0)\r\n                    spanTicks = spanTicks / timeline.SpeedRatio;\r\n                var bt = timeline.BeginTime;\r\n                if (bt) spanTicks += bt.Ticks;\r\n                if (fullTicks === 0 || fullTicks <= spanTicks)\r\n                    fullTicks = spanTicks;\r\n            }\r\n\r\n            if (!fullTicks)\r\n                return Duration.Automatic;\r\n            return new Duration(new TimeSpan(fullTicks));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Storyboard);\r\n    Markup.Content(Storyboard, Storyboard.ChildrenProperty);\r\n\r\n    function getLogMessage (action: string, storyboard: Storyboard, full: boolean, clockData?: IClockData): string {\r\n        var anims = [];\r\n        var cur = \"\";\r\n\r\n        var enumerator = storyboard.Children.getEnumerator();\r\n        var animation: Timeline;\r\n        while (enumerator.moveNext()) {\r\n            animation = enumerator.current;\r\n            cur = \"\";\r\n            cur += \"(\";\r\n            cur += (<any>animation).constructor.name;\r\n            cur += \":\";\r\n            cur += Storyboard.GetTargetName(animation);\r\n            cur += \":\";\r\n            var path = Storyboard.GetTargetProperty(animation);\r\n            cur += path ? path.Path : \"\";\r\n            cur += \")\";\r\n            anims.push(cur);\r\n        }\r\n        var msg = \"ANIMATION:\" + action + \":\" + (<any>storyboard)._ID;\r\n        if (clockData)\r\n            msg += \"(\" + (clockData.Progress * 100).toFixed(0) + \"%)\";\r\n        if (full)\r\n            msg += \"->[\" + anims.join(\",\") + \"]\";\r\n        return msg;\r\n    }\r\n}"
  },
  {
    "path": "src/Media/Animation/Timeline.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../../Core/XamlObjectCollection.ts\" />\r\n/// <reference path=\"Enums.ts\" />\r\n/// <reference path=\"RepeatBehavior.ts\" />\r\n\r\nmodule Fayde.Media.Animation {\r\n    export interface IClockData {\r\n        CurrentTime: TimeSpan;\r\n        Progress: number;\r\n        Completed: boolean;\r\n    }\r\n\r\n    export class Timeline extends DependencyObject implements ITimeline {\r\n        static DEFAULT_REPEAT_BEHAVIOR: RepeatBehavior = RepeatBehavior.FromIterationCount(1);\r\n        static AutoReverseProperty = DependencyProperty.Register(\"AutoReverse\", () => Boolean, Timeline, false);\r\n        static BeginTimeProperty = DependencyProperty.Register(\"BeginTime\", () => TimeSpan, Timeline);\r\n        static DurationProperty = DependencyProperty.Register(\"Duration\", () => Duration, Timeline);\r\n        static RepeatBehaviorProperty = DependencyProperty.Register(\"RepeatBehavior\", () => RepeatBehavior, Timeline);\r\n        static SpeedRatioProperty = DependencyProperty.Register(\"SpeedRatio\", () => Number, Timeline, 1.0);\r\n        static FillBehaviorProperty = DependencyProperty.Register(\"FillBehavior\", () => new Enum(FillBehavior), Timeline, FillBehavior.HoldEnd);\r\n        AutoReverse: boolean;\r\n        BeginTime: TimeSpan;\r\n        Duration: Duration; //Treat undefined as Automatic\r\n        RepeatBehavior: RepeatBehavior; //Treat undefined as IterationCount -> 1\r\n        SpeedRatio: number;\r\n        FillBehavior: FillBehavior;\r\n\r\n        Completed = new nullstone.Event();\r\n\r\n        private _IsPaused: boolean = false;\r\n        private _BeginPauseTime: number = 0;\r\n        private _TicksPaused: number = 0;\r\n        private _IsFirstUpdate: boolean = true;\r\n        private _HasBegun: boolean = false;\r\n        private _BeginTicks: number = undefined;\r\n        private _InitialStep: number = undefined;\r\n        private _HasCompleted: boolean = false;\r\n\r\n        ManualTarget: DependencyObject = undefined;\r\n\r\n        get HasManualTarget (): boolean {\r\n            return this.ManualTarget !== undefined;\r\n        }\r\n\r\n        Reset () {\r\n            this._TicksPaused = 0;\r\n            this._IsFirstUpdate = true;\r\n            this._BeginTicks = undefined;\r\n            this._HasBegun = false;\r\n            this._HasCompleted = false;\r\n        }\r\n\r\n        Pause () {\r\n            if (this._IsPaused)\r\n                return;\r\n            this._BeginPauseTime = new Date().getTime();\r\n            this._IsPaused = true;\r\n        }\r\n\r\n        Resume () {\r\n            if (!this._IsPaused)\r\n                return;\r\n            this._IsPaused = false;\r\n            var nowTime = new Date().getTime();\r\n            this._TicksPaused = nowTime - this._BeginPauseTime;\r\n        }\r\n\r\n        Stop () {\r\n            this.Reset();\r\n        }\r\n\r\n        OnCompleted () {\r\n            this._HasCompleted = true;\r\n            var fill = this.FillBehavior;\r\n            switch (fill) {\r\n                case FillBehavior.HoldEnd:\r\n                    this.HoldEnd();\r\n                    break;\r\n                case FillBehavior.Stop:\r\n                    this.Stop();\r\n                    break;\r\n            }\r\n            this.Completed.raise(this, null);\r\n        }\r\n\r\n        Update (nowTime: number) {\r\n            var clockData = this.CreateClockData(nowTime);\r\n            if (!clockData || this._IsPaused || this._HasCompleted)\r\n                return;\r\n            this.UpdateInternal(clockData);\r\n            if (clockData.Completed)\r\n                this.OnCompleted();\r\n        }\r\n\r\n        UpdateInternal (clockData: IClockData) {\r\n        }\r\n\r\n        HoldEnd () {\r\n        }\r\n\r\n        private CreateClockData (nowTime: number): IClockData {\r\n            if (this._IsFirstUpdate) {\r\n                this._InitialStep = nowTime;\r\n                this._HasBegun = false;\r\n                this._IsFirstUpdate = false;\r\n            }\r\n            if (!this._HasBegun) {\r\n                if (!this.IsAfterBeginTime(nowTime))\r\n                    return null;\r\n                this._BeginTicks = nowTime;\r\n                this._HasBegun = true;\r\n            }\r\n\r\n            var elapsedTicks = nowTime - this._BeginTicks - this._TicksPaused;\r\n            var currentTimeTicks = elapsedTicks;\r\n            var progress = 0.0;\r\n            var completed = false;\r\n\r\n            var duration = this.GetNaturalDuration();\r\n            if (duration.IsAutomatic) {\r\n                progress = 1.0;\r\n                completed = true;\r\n            } else if (duration.HasTimeSpan) {\r\n                var d = duration.TimeSpan.Ticks;\r\n                if (d === 0) {\r\n                    progress = 1.0;\r\n                } else if (this.AutoReverse === true) {\r\n                    d = d / 2;\r\n                    // Progress - Graph that repeats 3 times has shape: /\\/\\/\\/\\/\\/\\\r\n                    progress = 1 - (Math.abs((elapsedTicks % (d + d)) - d) / d);\r\n                } else {\r\n                    // Progress - Graph that repeats 3 times has shape: //////\r\n                    progress = (elapsedTicks / d) - Math.floor(elapsedTicks / d);\r\n                }\r\n\r\n                var repeat = this.RepeatBehavior || Timeline.DEFAULT_REPEAT_BEHAVIOR;\r\n                if (repeat.IsForever) {\r\n                } else if (repeat.HasCount) {\r\n                    if ((d === 0) || (Math.floor(elapsedTicks / d) >= repeat.Count)) {\r\n                        progress = 1.0;\r\n                        completed = true;\r\n                    }\r\n                } else if (repeat.HasDuration) {\r\n                    if (elapsedTicks >= repeat.Duration.TimeSpan.Ticks) {\r\n                        progress = 1.0;\r\n                        completed = true;\r\n                    }\r\n                }\r\n\r\n                if (d !== 0)\r\n                    currentTimeTicks = progress * d; //normalizes CurrentTime within [0,duration] constraints\r\n            }\r\n            // else if (duration.IsForever) { // do nothing }\r\n\r\n            return {\r\n                CurrentTime: new TimeSpan(currentTimeTicks),\r\n                Progress: progress,\r\n                Completed: completed\r\n            };\r\n        }\r\n\r\n        private IsAfterBeginTime (nowTime: number): boolean {\r\n            var beginTime = this.BeginTime;\r\n            if (beginTime == null)\r\n                return true;\r\n            var beginTicks = beginTime.Ticks;\r\n            if (beginTicks <= 0)\r\n                return true;\r\n            var elapsedTicks = nowTime - this._InitialStep;\r\n            if (elapsedTicks < beginTicks)\r\n                return false;\r\n            return true;\r\n        }\r\n\r\n        GetNaturalDuration (): Duration {\r\n            var d = this.Duration;\r\n            if (!d || d.IsAutomatic)\r\n                return this.GetNaturalDurationCore();\r\n            return d;\r\n        }\r\n\r\n        GetNaturalDurationCore (): Duration {\r\n            return Duration.Automatic;\r\n        }\r\n\r\n        GenerateFrom (): AnimationBase {\r\n            return undefined;\r\n        }\r\n\r\n        GenerateTo (isEntering: boolean): AnimationBase {\r\n            return undefined;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Timeline);\r\n\r\n    export class TimelineCollection extends XamlObjectCollection<Timeline> {\r\n    }\r\n    Fayde.CoreLibrary.add(TimelineCollection);\r\n}"
  },
  {
    "path": "src/Media/Brush.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class Brush extends DependencyObject implements minerva.IBrush {\r\n        static TransformProperty = DependencyProperty.RegisterCore(\"Transform\", () => Media.Transform, Brush);\r\n        Transform: Media.Transform;\r\n\r\n        private _CachedBounds: minerva.Rect = null;\r\n        private _CachedBrush: any = null;\r\n\r\n        constructor () {\r\n            super();\r\n            XamlNode.SetShareable(this.XamlNode);\r\n        }\r\n\r\n        isTransparent (): boolean {\r\n            //TODO: Can we be clever with implementations?\r\n            return false;\r\n        }\r\n\r\n        setupBrush (ctx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            if (this._CachedBrush && this._CachedBounds && minerva.Rect.isEqual(this._CachedBounds, bounds))\r\n                return;\r\n            this._CachedBounds = new minerva.Rect(bounds.x, bounds.y, bounds.width, bounds.height);\r\n\r\n            var transform = this.Transform;\r\n            if (transform) {\r\n                var transformedBounds = transform.TransformBounds(bounds);\r\n                var raw = transform.Value._Raw;\r\n\r\n                var tmpBrush = this.CreateBrush(ctx, bounds);\r\n                var fillExtents = new minerva.Rect();\r\n                minerva.Rect.copyTo(bounds, fillExtents);\r\n                minerva.Rect.grow(fillExtents, raw[4], raw[5], 0, 0);\r\n\r\n                var tmpCanvas = <HTMLCanvasElement>document.createElement(\"canvas\");\r\n                tmpCanvas.width = Math.max(transformedBounds.width, bounds.width);\r\n                tmpCanvas.height = Math.max(transformedBounds.height, bounds.height);\r\n                var tmpCtx = <CanvasRenderingContext2D>tmpCanvas.getContext(\"2d\");\r\n                tmpCtx.setTransform(raw[0], raw[1], raw[2], raw[3], raw[4], raw[5]);\r\n                tmpCtx.fillStyle = tmpBrush;\r\n                tmpCtx.fillRect(fillExtents.x, fillExtents.y, fillExtents.width, fillExtents.height);\r\n\r\n                this._CachedBrush = ctx.createPattern(tmpCanvas, \"no-repeat\");\r\n            } else {\r\n                this._CachedBrush = this.CreateBrush(ctx, bounds);\r\n            }\r\n        }\r\n\r\n        toHtml5Object (): any {\r\n            return this._CachedBrush;\r\n        }\r\n\r\n        CreateBrush (ctx: CanvasRenderingContext2D, bounds: minerva.Rect): any {\r\n            return undefined;\r\n        }\r\n\r\n        InvalidateBrush () {\r\n            this._CachedBrush = null;\r\n            this._CachedBounds = null;\r\n            Incite(this);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Brush);\r\n\r\n    module reactions {\r\n        DPReaction<Media.Transform>(Brush.TransformProperty, (brush: Brush, ov, nv) => brush.InvalidateBrush());\r\n    }\r\n}"
  },
  {
    "path": "src/Media/Effects/BlurEffect.ts",
    "content": "/// <reference path=\"Effect.ts\" />\r\n\r\nmodule Fayde.Media.Effects {\r\n    export class BlurEffect extends Effect {\r\n        static RadiusProperty = DependencyProperty.Register(\"Radius\", () => Number, BlurEffect, undefined, Incite);\r\n        Radius: number;\r\n    }\r\n    Fayde.CoreLibrary.add(BlurEffect);\r\n}"
  },
  {
    "path": "src/Media/Effects/DropShadowEffect.ts",
    "content": "/// <reference path=\"Effect.ts\" />\r\n/// <reference path=\"../../Primitives/Color.ts\" />\r\n\r\nmodule Fayde.Media.Effects {\r\n    export class DropShadowEffect extends Effect {\r\n        static MAX_BLUR_RADIUS: number = 20;\r\n        static MAX_SHADOW_DEPTH: number = 300;\r\n\r\n        static BlurRadiusProperty = DependencyProperty.Register(\"BlurRadius\", () => Number, DropShadowEffect, 5.0, Incite);\r\n        static ColorProperty = DependencyProperty.Register(\"Color\", () => Color, DropShadowEffect, Color.KnownColors.Black, Incite);\r\n        static DirectionProperty = DependencyProperty.Register(\"Direction\", () => Number, DropShadowEffect, 315.0, Incite);\r\n        static OpacityProperty = DependencyProperty.Register(\"Opacity\", () => Number, DropShadowEffect, 1.0, Incite);\r\n        static ShadowDepthProperty = DependencyProperty.Register(\"ShadowDepth\", () => Number, DropShadowEffect, 5.0, Incite);\r\n        BlurRadius: number;\r\n        Color: Color;\r\n        Direction: number;\r\n        Opacity: number;\r\n        ShadowDepth: number;\r\n\r\n        GetPadding (thickness: Thickness): boolean {\r\n            var radius = Math.min(this.BlurRadius, DropShadowEffect.MAX_BLUR_RADIUS);\r\n            var depth = Math.min(Math.max(0, this.ShadowDepth), DropShadowEffect.MAX_SHADOW_DEPTH);\r\n            var direction = this.Direction * Math.PI / 180.0;\r\n            var width = Math.ceil(radius);\r\n\r\n            var offsetX = Math.cos(direction) * depth;\r\n            var offsetY = Math.sin(direction) * depth;\r\n\r\n            var left = -offsetX + width;\r\n            var top = offsetY + width;\r\n            var right = offsetX + width;\r\n            var bottom = -offsetY + width;\r\n\r\n            var l = left < 1.0 ? 1.0 : Math.ceil(left);\r\n            var t = top < 1.0 ? 1.0 : Math.ceil(top);\r\n            var r = right < 1.0 ? 1.0 : Math.ceil(right);\r\n            var b = bottom < 1.0 ? 1.0 : Math.ceil(bottom);\r\n            var changed = thickness.left !== l\r\n                || thickness.top !== t\r\n                || thickness.right !== r\r\n                || thickness.bottom !== b;\r\n\r\n            thickness.left = l;\r\n            thickness.top = t;\r\n            thickness.right = r;\r\n            thickness.bottom = b;\r\n\r\n            return changed;\r\n        }\r\n\r\n        PreRender (ctx: minerva.core.render.RenderContext) {\r\n            var color = this.Color;\r\n            var opacity = color.A * this.Opacity;\r\n\r\n            var radius = Math.min(this.BlurRadius, DropShadowEffect.MAX_BLUR_RADIUS);\r\n            var depth = Math.min(Math.max(0, this.ShadowDepth), DropShadowEffect.MAX_SHADOW_DEPTH);\r\n            var direction = this.Direction * Math.PI / 180.0;\r\n            var offsetX = Math.cos(direction) * depth;\r\n            var offsetY = -Math.sin(direction) * depth;\r\n\r\n            var raw = ctx.raw;\r\n            raw.shadowColor = \"rgba(\" + color.R + \",\" + color.G + \",\" + color.B + \",\" + opacity + \")\";\r\n            raw.shadowBlur = radius;\r\n            raw.shadowOffsetX = offsetX;\r\n            raw.shadowOffsetY = offsetY;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(DropShadowEffect);\r\n}"
  },
  {
    "path": "src/Media/Effects/Effect.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../GeneralTransform.ts\" />\r\n\r\nmodule Fayde.Media.Effects {\r\n    export class Effect extends DependencyObject implements minerva.IEffect {\r\n        static EffectMappingProperty = DependencyProperty.Register(\"EffectMapping\", () => GeneralTransform, Effect);\r\n        EffectMapping: GeneralTransform;\r\n\r\n        PreRender (ctx: minerva.core.render.RenderContext) {\r\n        }\r\n\r\n        PostRender (ctx: minerva.core.render.RenderContext) {\r\n        }\r\n\r\n        GetPadding (thickness: Thickness): boolean {\r\n            return false;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Effect);\r\n\r\n    module reactions {\r\n        DPReaction<GeneralTransform>(Effect.EffectMappingProperty, (dobj, ov, nv) => Incite(dobj));\r\n    }\r\n}"
  },
  {
    "path": "src/Media/EllipseGeometry.ts",
    "content": "/// <reference path=\"Geometry.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class EllipseGeometry extends Geometry {\r\n        static CenterProperty = DependencyProperty.Register(\"Center\", () => Point, EllipseGeometry, undefined, (d: Geometry, args) => d.InvalidateGeometry());\r\n        static RadiusXProperty = DependencyProperty.Register(\"RadiusX\", () => Number, EllipseGeometry, 0.0, (d: Geometry, args) => d.InvalidateGeometry());\r\n        static RadiusYProperty = DependencyProperty.Register(\"RadiusY\", () => Number, EllipseGeometry, 0.0, (d: Geometry, args) => d.InvalidateGeometry());\r\n        Center: Point;\r\n        RadiusX: number;\r\n        RadiusY: number;\r\n\r\n        _Build(): minerva.path.Path {\r\n            var rx = this.RadiusX;\r\n            var ry = this.RadiusY;\r\n            var center = this.Center;\r\n            var x = center ? center.x : 0.0;\r\n            var y = center ? center.y : 0.0;\r\n\r\n            var p = new minerva.path.Path();\r\n            p.ellipse(x - rx, y - ry, rx * 2.0, ry * 2.0);\r\n            return p;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(EllipseGeometry);\r\n}"
  },
  {
    "path": "src/Media/Enums.ts",
    "content": "module Fayde.Media {\r\n    export enum BrushMappingMode {\r\n        Absolute = 0,\r\n        RelativeToBoundingBox = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(BrushMappingMode, \"BrushMappingMode\");\r\n\r\n    export enum GradientSpreadMethod {\r\n        Pad = 0,\r\n        Reflect = 1,\r\n        Repeat = 2,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(GradientSpreadMethod, \"GradientSpreadMethod\");\r\n\r\n    export enum Stretch {\r\n        None = 0,\r\n        Fill = 1,\r\n        Uniform = 2,\r\n        UniformToFill = 3,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(Stretch, \"Stretch\");\r\n\r\n    export enum AlignmentX {\r\n        Left = 0,\r\n        Center = 1,\r\n        Right = 2,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(AlignmentX, \"AlignmentX\");\r\n\r\n    export enum AlignmentY {\r\n        Top = 0,\r\n        Center = 1,\r\n        Bottom = 2,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(AlignmentY, \"AlignmentY\");\r\n\r\n    export enum TextHintingMode {\r\n        Fixed = 0,\r\n        Animated = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(TextHintingMode, \"TextHintingMode\");\r\n}"
  },
  {
    "path": "src/Media/GeneralTransform.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class GeneralTransform extends DependencyObject {\r\n        Inverse: GeneralTransform;\r\n\r\n        Transform (p: minerva.IPoint): Point {\r\n            return new Point(p.x, p.y);\r\n        }\r\n\r\n        TransformBounds (r: minerva.Rect): minerva.Rect {\r\n            return r;\r\n        }\r\n\r\n        TryTransform (inPoint: minerva.IPoint, outPoint: minerva.IPoint): boolean {\r\n            return false;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(GeneralTransform);\r\n\r\n    export class InternalTransform extends GeneralTransform implements minerva.ITransform {\r\n        private _Raw: number[];\r\n\r\n        constructor (raw: number[]) {\r\n            super();\r\n            this._Raw = raw;\r\n        }\r\n\r\n        get Inverse (): InternalTransform {\r\n            return new InternalTransform(mat4.inverse(this._Raw, mat4.create()));\r\n        }\r\n\r\n        get Value (): Matrix3D {\r\n            return Matrix3D.FromRaw(this._Raw);\r\n        }\r\n\r\n        getRaw (): number[] {\r\n            return this._Raw;\r\n        }\r\n\r\n        Transform (p: minerva.IPoint): Point {\r\n            var pi = vec4.create(p.x, p.y, 0.0, 1.0);\r\n            var po = vec4.create(0, 0, 0, 0);\r\n            mat4.transformVec4(this._Raw, pi, po);\r\n            if (po[3] !== 0.0) {\r\n                var w = 1.0 / po[3];\r\n                return new Point(po[0] * w, po[1] * w);\r\n            }\r\n            return new Point(NaN, NaN);\r\n        }\r\n\r\n        TransformBounds (r: minerva.Rect): minerva.Rect {\r\n            if (!r)\r\n                return undefined;\r\n\r\n            var copy = new minerva.Rect();\r\n            minerva.Rect.copyTo(r, copy);\r\n            minerva.Rect.transform4(copy, this._Raw);\r\n            return copy;\r\n        }\r\n\r\n        CreateMatrix3DProjection (): Matrix3DProjection {\r\n            var projection = new Matrix3DProjection();\r\n            projection.ProjectionMatrix = this.Inverse.Value;\r\n            return projection\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(InternalTransform);\r\n}"
  },
  {
    "path": "src/Media/Geometry.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class Geometry extends DependencyObject implements minerva.IGeometry {\r\n        private _Path: minerva.path.Path = null;\r\n        private _LocalBounds = new minerva.Rect();\r\n\r\n        static TransformProperty = DependencyProperty.Register(\"Transform\", () => Transform, Geometry);\r\n        Transform: Transform;\r\n\r\n        constructor () {\r\n            super();\r\n            this._LocalBounds.width = Number.NEGATIVE_INFINITY;\r\n            this._LocalBounds.height = Number.NEGATIVE_INFINITY;\r\n        }\r\n\r\n        GetBounds (pars?: minerva.path.IStrokeParameters): minerva.Rect {\r\n            var compute = minerva.Rect.isEmpty(this._LocalBounds);\r\n\r\n            if (!this._Path) {\r\n                this._Path = this._Build();\r\n                compute = true;\r\n            }\r\n\r\n            if (compute)\r\n                minerva.Rect.copyTo(this.ComputePathBounds(pars), this._LocalBounds);\r\n\r\n            var bounds = new minerva.Rect();\r\n            minerva.Rect.copyTo(this._LocalBounds, bounds);\r\n            var transform = this.Transform;\r\n            if (transform != null)\r\n                bounds = transform.TransformBounds(bounds);\r\n\r\n            return bounds;\r\n        }\r\n\r\n        Draw (ctx: minerva.core.render.RenderContext) {\r\n            if (!this._Path)\r\n                return;\r\n\r\n            var raw = ctx.raw;\r\n            var transform = this.Transform;\r\n            if (transform != null) {\r\n                raw.save();\r\n                ctx.apply(transform.Value._Raw);\r\n            }\r\n            this._Path.draw(raw);\r\n            if (transform != null)\r\n                raw.restore();\r\n        }\r\n\r\n        ComputePathBounds (pars: minerva.path.IStrokeParameters): minerva.Rect {\r\n            if (!this._Path)\r\n                this._Path = this._Build();\r\n            if (!this._Path)\r\n                return new minerva.Rect();\r\n            return this._Path.calcBounds(pars);\r\n        }\r\n\r\n        InvalidateGeometry () {\r\n            this._Path = null;\r\n            var lb = this._LocalBounds;\r\n            lb.x = lb.y = 0;\r\n            lb.width = lb.height = Number.NEGATIVE_INFINITY;\r\n            Incite(this);\r\n        }\r\n\r\n        _Build (): minerva.path.Path {\r\n            return undefined;\r\n        }\r\n\r\n        Serialize (): string {\r\n            var path = this._Path;\r\n            if (!path)\r\n                return;\r\n            return path.Serialize();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Geometry);\r\n\r\n    module reactions {\r\n        DPReaction<Transform>(Geometry.TransformProperty, (geom: Geometry, ov, nv) => geom.InvalidateGeometry());\r\n    }\r\n\r\n    export class GeometryCollection extends XamlObjectCollection<Geometry> {\r\n        AddingToCollection (value: Geometry, error: BError): boolean {\r\n            if (!super.AddingToCollection(value, error))\r\n                return false;\r\n            ReactTo(value, this, () => Incite(this));\r\n            Incite(this);\r\n            return true;\r\n        }\r\n\r\n        RemovedFromCollection (value: Geometry, isValueSafe: boolean) {\r\n            super.RemovedFromCollection(value, isValueSafe);\r\n            UnreactTo(value, this);\r\n            Incite(this);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(GeometryCollection);\r\n}"
  },
  {
    "path": "src/Media/GeometryGroup.ts",
    "content": "/// <reference path=\"Geometry.ts\" />\r\n/// <reference path=\"../Shapes/Enums.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class GeometryGroup extends Geometry {\r\n        static FillRulleProperty = DependencyProperty.Register(\"FillRule\", () => new Enum(Shapes.FillRule), GeometryGroup, Shapes.FillRule.EvenOdd);\r\n        static ChildrenProperty = DependencyProperty.RegisterImmutable<GeometryCollection>(\"Children\", () => GeometryCollection, GeometryGroup);\r\n        FillRule: Shapes.FillRule;\r\n        Children: GeometryCollection;\r\n\r\n        constructor () {\r\n            super();\r\n            var coll = GeometryGroup.ChildrenProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n            ReactTo(coll, this, () => this.InvalidateGeometry());\r\n        }\r\n\r\n        ComputePathBounds (pars: minerva.path.IStrokeParameters): minerva.Rect {\r\n            var bounds = new minerva.Rect();\r\n            var cbounds: minerva.Rect;\r\n            for (var enumerator = this.Children.getEnumerator(); enumerator.moveNext();) {\r\n                cbounds = enumerator.current.GetBounds(pars);\r\n                if (cbounds.width <= 0 && cbounds.height <= 0)\r\n                    continue;\r\n                if (bounds.width <= 0 && bounds.height <= 0)\r\n                    minerva.Rect.copyTo(cbounds, bounds);\r\n                else\r\n                    minerva.Rect.union(bounds, cbounds);\r\n            }\r\n            return bounds;\r\n        }\r\n\r\n        Draw (ctx: minerva.core.render.RenderContext) {\r\n            var transform = this.Transform;\r\n            if (transform != null) {\r\n                ctx.save();\r\n                ctx.apply(transform.Value._Raw);\r\n            }\r\n            var enumerator = this.Children.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                (<Geometry>enumerator.current).Draw(ctx);\r\n            }\r\n            if (transform != null)\r\n                ctx.restore();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(GeometryGroup);\r\n}"
  },
  {
    "path": "src/Media/GradientBrush.ts",
    "content": "/// <reference path=\"Brush\" />\r\n/// <reference path=\"Enums\" />\r\n/// <reference path=\"../Primitives/Color\" />\r\n\r\nmodule Fayde.Media {\r\n    var fallbackColorStop = Color.FromHex(\"#FF000000\");\r\n\r\n    export class GradientBrush extends Brush {\r\n        static GradientStopsProperty = DependencyProperty.RegisterImmutable<GradientStopCollection>(\"GradientStops\", () => GradientStopCollection, GradientBrush);\r\n        static MappingModeProperty = DependencyProperty.Register(\"MappingMode\", () => new Enum(BrushMappingMode), GradientBrush, BrushMappingMode.RelativeToBoundingBox, (d: GradientBrush, args) => d.InvalidateBrush());\r\n        static SpreadMethodProperty = DependencyProperty.Register(\"SpreadMethod\", () => new Enum(GradientSpreadMethod), GradientBrush, GradientSpreadMethod.Pad, (d: GradientBrush, args) => d.InvalidateBrush());\r\n        GradientStops: GradientStopCollection;\r\n        MappingMode: BrushMappingMode;\r\n        SpreadMethod: GradientSpreadMethod;\r\n\r\n        constructor() {\r\n            super();\r\n            var coll = GradientBrush.GradientStopsProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n            ReactTo(coll, this, () => this.InvalidateBrush());\r\n        }\r\n\r\n        CreateBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): any {\r\n            var spread = this.SpreadMethod;\r\n            switch (spread) {\r\n                case GradientSpreadMethod.Pad:\r\n                default:\r\n                    return this.CreatePad(ctx, bounds);\r\n                case GradientSpreadMethod.Repeat:\r\n                    return this.CreateRepeat(ctx, bounds);\r\n                case GradientSpreadMethod.Reflect:\r\n                    return this.CreateReflect(ctx, bounds);\r\n            }\r\n        }\r\n        CreatePad(ctx: CanvasRenderingContext2D, bounds: minerva.Rect) { }\r\n        CreateRepeat(ctx: CanvasRenderingContext2D, bounds: minerva.Rect) { }\r\n        CreateReflect(ctx: CanvasRenderingContext2D, bounds: minerva.Rect) { }\r\n\r\n        /**\r\n         * In Silverlight gradient offsets can be outside the range 0..1, but\r\n         * in HTML5 they cannot.  Ensure that the gradient offsets are in range\r\n         * even at the expense of differences in rendering between Silverlight\r\n         * and Fayde.  Without this, an attempt to set an out-of-range offset\r\n         * will cause an exception and you get no rendering at all.\r\n         */\r\n        public AddColorStop(grd: any, offset: number, color: Color) {\r\n            if (offset < 0.0) offset = 0.0;\r\n            if (offset > 1.0) offset = 1.0;\r\n            grd.addColorStop(offset, (color || fallbackColorStop).toString());\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(GradientBrush);\r\n    Markup.Content(GradientBrush, GradientBrush.GradientStopsProperty);\r\n}\r\n"
  },
  {
    "path": "src/Media/GradientStop.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export interface IGradientStop {\r\n        Color: Color;\r\n        Offset: number;\r\n    }\r\n\r\n    export class GradientStop extends DependencyObject implements IGradientStop {\r\n        static ColorProperty = DependencyProperty.Register(\"Color\", () => Color, GradientStop, undefined, Incite);\r\n        static OffsetProperty = DependencyProperty.Register(\"Offset\", () => Number, GradientStop, 0.0, Incite);\r\n        Color: Color;\r\n        Offset: number;\r\n\r\n        toString (): string {\r\n            return this.Color.toString() + \" @ \" + this.Offset.toString();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(GradientStop);\r\n\r\n    export class GradientStopCollection extends XamlObjectCollection<GradientStop> {\r\n        AddingToCollection (value: GradientStop, error: BError): boolean {\r\n            if (!super.AddingToCollection(value, error))\r\n                return false;\r\n            ReactTo(value, this, () => Incite(this));\r\n            Incite(this);\r\n            return true;\r\n        }\r\n\r\n        RemovedFromCollection (value: GradientStop, isValueSafe: boolean) {\r\n            if (!super.RemovedFromCollection(value, isValueSafe))\r\n                return false;\r\n            UnreactTo(value, this);\r\n            Incite(this);\r\n        }\r\n\r\n        getPaddedEnumerable (): nullstone.IEnumerable<IGradientStop> {\r\n            var minOffset = Number.MAX_VALUE;\r\n            var min: GradientStop = null;\r\n            var maxOffset = Number.MIN_VALUE;\r\n            var max: GradientStop = null;\r\n            for (var en = this.getEnumerator(); en.moveNext();) {\r\n                if (en.current.Offset < minOffset) {\r\n                    min = en.current;\r\n                    minOffset = en.current.Offset;\r\n                }\r\n                if (en.current.Offset > maxOffset) {\r\n                    max = en.current;\r\n                    maxOffset = en.current.Offset;\r\n                }\r\n            }\r\n\r\n            var arr: IGradientStop[] = this._ht.slice(0);\r\n            if (!!min)\r\n                arr.unshift({Offset: 0, Color: min.Color});\r\n            if (!!max)\r\n                arr.push({Offset: 1, Color: max.Color});\r\n\r\n            return nullstone.IEnumerable_.fromArray(arr);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(GradientStopCollection);\r\n}"
  },
  {
    "path": "src/Media/Imaging/BitmapImage.ts",
    "content": "/// <reference path=\"BitmapSource.ts\"/>\r\n\r\nmodule Fayde.Media.Imaging {\r\n    export class BitmapImage extends BitmapSource {\r\n        static UriSourceProperty = DependencyProperty.RegisterFull(\"UriSource\", () => Uri, BitmapImage, undefined, (bi: BitmapImage, args) => bi.OnUriSourceChanged(args.OldValue, args.NewValue), undefined, true);\r\n        UriSource: Uri;\r\n        ImageFailed = new nullstone.Event();\r\n        ImageOpened = new nullstone.Event();\r\n\r\n        private _BackingBuffer: ArrayBuffer = null;\r\n\r\n        constructor(uri?: Uri) {\r\n            super();\r\n            if (uri)\r\n                this.UriSource = uri;\r\n        }\r\n\r\n        protected OnUriSourceChanged(oldValue: Uri, newValue: Uri) {\r\n            if (Uri.isNullOrEmpty(newValue)) {\r\n                this.reset();\r\n            } else {\r\n                if (!this.$element || !newValue)\r\n                    this.reset();\r\n                this.$element.src = TypeManager.resolveResource(newValue);\r\n                this.onImageChanged();\r\n            }\r\n        }\r\n\r\n        protected onImageErrored(e: ErrorEvent) {\r\n            super.onImageErrored(e);\r\n            this.ImageFailed.raise(this, null);\r\n        }\r\n\r\n        protected onImageLoaded() {\r\n            super.onImageLoaded();\r\n            this.ImageOpened.raise(this, null);\r\n        }\r\n\r\n        SetSource(buffer: ArrayBuffer) {\r\n            this._BackingBuffer = buffer;\r\n            this.UriSource = encodeImage(buffer);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(BitmapImage);\r\n\r\n    nullstone.registerTypeConverter(ImageSource, (val: any): ImageSource => {\r\n        if (!val)\r\n            return null;\r\n        if (val instanceof ImageSource)\r\n            return val;\r\n        if (val instanceof ArrayBuffer) {\r\n            var bi = new BitmapImage();\r\n            bi.SetSource(val);\r\n            return bi;\r\n        }\r\n        var bi = new BitmapImage();\r\n        bi.UriSource = nullstone.convertAnyToType(val, Uri);\r\n        return bi;\r\n    });\r\n}"
  },
  {
    "path": "src/Media/Imaging/BitmapSource.ts",
    "content": "/// <reference path=\"ImageSource.ts\"/>\r\n\r\nmodule Fayde.Media.Imaging {\r\n    export interface IBitmapSourceWatcher {\r\n        onErrored(source: BitmapSource, error: Error);\r\n        onLoaded(source: BitmapSource);\r\n        onChanged(source: BitmapSource);\r\n    }\r\n\r\n    export class BitmapSource extends ImageSource {\r\n        protected $element: HTMLImageElement;\r\n        private $watchers: IBitmapSourceWatcher[] = [];\r\n\r\n        createElement(): HTMLMediaElement|HTMLImageElement {\r\n            return new Image();\r\n        }\r\n\r\n        reset() {\r\n            super.reset();\r\n            this.$element.onerror = (e: ErrorEvent) => this.onImageErrored(e);\r\n            this.$element.onload = (e) => {\r\n                this.onImageLoaded();\r\n                this.onImageChanged();\r\n            };\r\n            this.onImageChanged();\r\n        }\r\n\r\n        watch(watcher: IBitmapSourceWatcher): nullstone.IDisposable {\r\n            var watchers = this.$watchers;\r\n            watchers.push(watcher);\r\n            return {\r\n                dispose() {\r\n                    var index = watchers.indexOf(watcher);\r\n                    if (index > -1)\r\n                        watchers.splice(index, 1);\r\n                }\r\n            }\r\n        }\r\n\r\n        protected onImageLoaded() {\r\n            this.setMetrics(this.$element.naturalWidth, this.$element.naturalHeight);\r\n            for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\r\n                watchers[i].onLoaded(this);\r\n            }\r\n        }\r\n\r\n        protected onImageErrored(e: ErrorEvent) {\r\n            console.warn(\"Failed to load: \" + this.$element.src.toString());\r\n            for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\r\n                watchers[i].onErrored(this, e.error);\r\n            }\r\n        }\r\n\r\n        protected onImageChanged() {\r\n            for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\r\n                watchers[i].onChanged(this);\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(BitmapSource);\r\n}"
  },
  {
    "path": "src/Media/Imaging/ImageBrush.ts",
    "content": "/// <reference path=\"../TileBrush.ts\"/>\r\n\r\nmodule Fayde.Media.Imaging {\r\n    export class ImageBrush extends TileBrush {\r\n        private static _SourceCoercer(d: DependencyObject, propd: DependencyProperty, value: any): any {\r\n            if (typeof value === \"string\")\r\n                return new Media.Imaging.BitmapImage(new Uri(value));\r\n            if (value instanceof Uri)\r\n                return new Media.Imaging.BitmapImage(value);\r\n            return value;\r\n        }\r\n\r\n        static ImageSourceProperty = DependencyProperty.RegisterFull(\"ImageSource\", () => ImageSource, ImageBrush, undefined, (d: ImageBrush, args) => d._ImageSourceChanged(args), ImageBrush._SourceCoercer);\r\n        ImageSource: ImageSource;\r\n        ImageFailed = new nullstone.Event();\r\n        ImageOpened = new nullstone.Event();\r\n\r\n        private $watcher: nullstone.IDisposable = null;\r\n\r\n        setupBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            var source = this.ImageSource;\r\n            if (source && !source.isEmpty)\r\n                super.setupBrush(ctx, bounds);\r\n        }\r\n\r\n        GetTileExtents(): minerva.Rect {\r\n            var source = this.ImageSource;\r\n            return new minerva.Rect(0, 0, source.pixelWidth, source.pixelHeight);\r\n        }\r\n\r\n        DrawTile(canvasCtx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            var source = this.ImageSource;\r\n            canvasCtx.fillStyle = source.createPattern(canvasCtx);\r\n            canvasCtx.fill();\r\n        }\r\n\r\n        private _ImageSourceChanged(args: IDependencyPropertyChangedEventArgs) {\r\n            if (this.$watcher) {\r\n                this.$watcher.dispose();\r\n                this.$watcher = null;\r\n            }\r\n\r\n            if (args.NewValue instanceof BitmapSource) {\r\n                this.$watcher = args.NewValue.watch({\r\n                    onErrored: (source, error) => this.OnImageErrored(source, error),\r\n                    onLoaded: (source) => this.OnImageLoaded(source),\r\n                    onChanged: (source) => this.OnImageChanged(source)\r\n                });\r\n            }\r\n            this.InvalidateBrush();\r\n        }\r\n\r\n        OnImageErrored(source: BitmapSource, error: Error) {\r\n            this.ImageFailed.raise(this, null);\r\n        }\r\n\r\n        OnImageLoaded(source: BitmapSource) {\r\n            this.ImageOpened.raise(this, null);\r\n        }\r\n\r\n        OnImageChanged(source: BitmapSource) {\r\n            this.InvalidateBrush();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ImageBrush);\r\n}"
  },
  {
    "path": "src/Media/Imaging/ImageDecoder.ts",
    "content": "module Fayde.Media.Imaging {\r\n    export function encodeImage (buffer: ArrayBuffer): Uri {\r\n        var bytes = new Uint8Array(buffer);\r\n        var data = convertToBase64(bytes);\r\n        var type = getImageType(bytes);\r\n        return new Uri(`data:${type};base64,${data}`);\r\n    }\r\n\r\n    function getImageType (bytes: Uint8Array) {\r\n        if (isJpg(bytes))\r\n            return \"image/jpeg\";\r\n        if (isPng(bytes))\r\n            return \"image/png\";\r\n        return \"image/jpeg\";\r\n    }\r\n\r\n    function convertToBase64 (bytes: Uint8Array) {\r\n        var arr = [];\r\n        for (var i = 0; i < bytes.byteLength; i++) {\r\n            arr.push(String.fromCharCode(bytes[i]));\r\n        }\r\n        return window.btoa(arr.join(''));\r\n    }\r\n\r\n    function isJpg (bytes: Uint8Array): boolean {\r\n        return bytes[0] === 0xFF\r\n            && bytes[1] === 0xD8\r\n            && bytes[bytes.length - 2] === 0xFF\r\n            && bytes[bytes.length - 1] === 0xD9;\r\n    }\r\n\r\n    function isPng (bytes: Uint8Array): boolean {\r\n        return bytes[0] === 0x89\r\n            && bytes[1] === 0x50\r\n            && bytes[2] === 0x4E\r\n            && bytes[3] === 0x47\r\n            && bytes[4] === 0x0D\r\n            && bytes[5] === 0x0A\r\n            && bytes[6] === 0x1A\r\n            && bytes[7] === 0x0A;\r\n    }\r\n}"
  },
  {
    "path": "src/Media/Imaging/ImageSource.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\"/>\r\n\r\nmodule Fayde.Media.Imaging {\r\n    export class ImageSource extends DependencyObject implements minerva.controls.image.IImageSource {\r\n        static PixelWidthProperty = DependencyProperty.RegisterReadOnly(\"PixelWidth\", () => Number, ImageSource, 0);\r\n        static PixelHeightProperty = DependencyProperty.RegisterReadOnly(\"PixelHeight\", () => Number, ImageSource, 0);\r\n        PixelWidth: number;\r\n        PixelHeight: number;\r\n\r\n        protected $element: HTMLMediaElement|HTMLImageElement = null;\r\n\r\n        constructor() {\r\n            super();\r\n        }\r\n\r\n        get pixelWidth(): number {\r\n            return this.GetValue(ImageSource.PixelWidthProperty);\r\n        }\r\n\r\n        get pixelHeight(): number {\r\n            return this.GetValue(ImageSource.PixelHeightProperty);\r\n        }\r\n\r\n        get isEmpty(): boolean {\r\n            return !this.$element;\r\n        }\r\n\r\n        draw(ctx: CanvasRenderingContext2D) {\r\n            ctx.drawImage(<any>this.$element, 0, 0);\r\n        }\r\n\r\n        createPattern(ctx: CanvasRenderingContext2D): CanvasPattern {\r\n            ctx.rect(0, 0, this.pixelWidth, this.pixelHeight);\r\n            return ctx.createPattern(<any>this.$element, \"no-repeat\");\r\n        }\r\n\r\n        reset() {\r\n            this.$element = this.createElement();\r\n            this.setMetrics(0, 0);\r\n        }\r\n\r\n        createElement(): HTMLMediaElement|HTMLImageElement {\r\n            return undefined;\r\n        }\r\n\r\n        protected setMetrics(pixelWidth: number, pixelHeight: number) {\r\n            this.SetCurrentValue(ImageSource.PixelWidthProperty, pixelWidth);\r\n            this.SetCurrentValue(ImageSource.PixelHeightProperty, pixelHeight);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ImageSource);\r\n}"
  },
  {
    "path": "src/Media/LineGeometry.ts",
    "content": "/// <reference path=\"Geometry.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class LineGeometry extends Geometry {\r\n        static StartPointProperty = DependencyProperty.Register(\"StartPoint\", () => Point, LineGeometry, undefined, (d: Geometry, args) => d.InvalidateGeometry());\r\n        static EndPointProperty = DependencyProperty.Register(\"EndPoint\", () => Point, LineGeometry, undefined, (d: Geometry, args) => d.InvalidateGeometry());\r\n        StartPoint: Point;\r\n        EndPoint: Point;\r\n\r\n        _Build (): minerva.path.Path {\r\n            var p1 = this.StartPoint;\r\n            var p2 = this.EndPoint;\r\n\r\n            var p = new minerva.path.Path();\r\n            p.move(p1.x, p1.y);\r\n            p.line(p2.x, p2.y);\r\n            return p;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(LineGeometry);\r\n}"
  },
  {
    "path": "src/Media/LinearGradient/Interpolator.ts",
    "content": "module Fayde.Media.LinearGradient {\r\n    export interface IInterpolator {\r\n        x0: number;\r\n        y0: number;\r\n        x1: number;\r\n        y1: number;\r\n        step(): boolean;\r\n        interpolate(offset: number): number;\r\n    }\r\n\r\n    export function createRepeatInterpolator (start: Point, end: Point, bounds: minerva.Rect): IInterpolator {\r\n        var first = {x: start.x, y: start.y};\r\n        var last = {x: end.x, y: end.y};\r\n        var dir = {x: end.x - start.x, y: end.y - start.y};\r\n\r\n        calcMetrics(dir, first, last, bounds);\r\n        var numSteps = (last.x - first.x) / dir.x;\r\n        var stepSize = 1.0 / numSteps;\r\n        var cur = -stepSize;\r\n\r\n        return {\r\n            x0: first.x,\r\n            y0: first.y,\r\n            x1: last.x,\r\n            y1: last.y,\r\n            step (): boolean {\r\n                cur += stepSize;\r\n                return cur < 1;\r\n            },\r\n            interpolate (offset: number): number {\r\n                return cur + (offset / numSteps);\r\n            }\r\n        };\r\n    }\r\n\r\n    export function createReflectInterpolator (start: Point, end: Point, bounds: minerva.Rect): IInterpolator {\r\n        var first = {x: start.x, y: start.y};\r\n        var last = {x: end.x, y: end.y};\r\n        var dir = {x: end.x - start.x, y: end.y - start.y};\r\n\r\n        calcMetrics(dir, first, last, bounds);\r\n        var numSteps = (last.x - first.x) / dir.x;\r\n        var stepSize = 1.0 / numSteps;\r\n        var cur = -stepSize;\r\n        var inverted = Math.round((start.x - first.x) / dir.x) % 2 === 0;\r\n\r\n        return {\r\n            x0: first.x,\r\n            y0: first.y,\r\n            x1: last.x,\r\n            y1: last.y,\r\n            step (): boolean {\r\n                inverted = !inverted;\r\n                cur += stepSize;\r\n                return cur < 1;\r\n            },\r\n            interpolate (offset: number): number {\r\n                var norm = offset / numSteps;\r\n                return !inverted ? cur + norm : cur + (stepSize - norm);\r\n            }\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Media/LinearGradient/Metrics.ts",
    "content": "module Fayde.Media.LinearGradient {\r\n    export interface ICoordinates {\r\n        x: number;\r\n        y: number;\r\n    }\r\n\r\n    export function calcMetrics (dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect) {\r\n        if (dir.y === 0) {\r\n            if (dir.x < 0)\r\n                W(dir, first, last, bounds);\r\n            else if (dir.x !== 0)\r\n                E(dir, first, last, bounds);\r\n        } else if (dir.x === 0) {\r\n            if (dir.y < 0)\r\n                N(dir, first, last, bounds);\r\n            else if (dir.y !== 0)\r\n                S(dir, first, last, bounds);\r\n        } else if (dir.x < 0 && dir.y < 0) { // e\\s\r\n            NW(dir, first, last, bounds);\r\n        } else if (dir.x < 0 && dir.y > 0) { // e/s\r\n            SW(dir, first, last, bounds);\r\n        } else if (dir.x > 0 && dir.y < 0) { // s/e\r\n            NE(dir, first, last, bounds);\r\n        } else if (dir.x > 0 && dir.y > 0) { // s\\e\r\n            SE(dir, first, last, bounds);\r\n        }\r\n    }\r\n\r\n    //+x,0y\r\n    function E (dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect) {\r\n        var maxX = bounds.x + bounds.width;\r\n        while (first.x >= bounds.x)\r\n            first.x -= dir.x;\r\n        while (last.x <= maxX)\r\n            last.x += dir.x;\r\n    }\r\n\r\n    //-x,0y\r\n    function W (dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect) {\r\n        var maxX = bounds.x + bounds.width;\r\n        while (first.x <= maxX)\r\n            first.x -= dir.x;\r\n        while (last.x >= bounds.x)\r\n            last.x += dir.x;\r\n    }\r\n\r\n    //0x,+y\r\n    function S (dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect) {\r\n        var maxY = bounds.y + bounds.height;\r\n        while (first.y >= bounds.y)\r\n            first.y -= dir.y;\r\n        while (last.y <= maxY)\r\n            last.y += dir.y;\r\n    }\r\n\r\n    //0x,-y\r\n    function N (dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect) {\r\n        var maxY = bounds.y + bounds.height;\r\n        while (first.y <= maxY)\r\n            first.y -= dir.y;\r\n        while (last.y >= bounds.y)\r\n            last.y += dir.y;\r\n    }\r\n\r\n    //-x,-y\r\n    function NW (dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect) {\r\n        var maxX = bounds.x + bounds.width;\r\n        var maxY = bounds.y + bounds.height;\r\n        while (first.x <= maxX && first.y <= maxY) {\r\n            first.x -= dir.x;\r\n            first.y -= dir.y;\r\n        }\r\n        while (last.x >= bounds.x && last.y >= bounds.y) {\r\n            last.x += dir.x;\r\n            last.y += dir.y;\r\n        }\r\n\r\n    }\r\n\r\n    //-x,+y\r\n    function SW (dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect) {\r\n        var maxX = bounds.x + bounds.width;\r\n        var maxY = bounds.y + bounds.height;\r\n        while (first.x <= maxX && first.y >= bounds.y) {\r\n            first.x -= dir.x;\r\n            first.y -= dir.y;\r\n        }\r\n        while (last.x >= bounds.x && last.y <= maxY) {\r\n            last.x += dir.x;\r\n            last.y += dir.y;\r\n        }\r\n    }\r\n\r\n    //+x,-y\r\n    function NE (dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect) {\r\n        var maxX = bounds.x + bounds.width;\r\n        var maxY = bounds.y + bounds.height;\r\n        while (first.x >= bounds.x && first.y <= maxY) {\r\n            first.x -= dir.x;\r\n            first.y -= dir.y;\r\n        }\r\n        while (last.x <= maxX && last.y >= bounds.y) {\r\n            last.x += dir.x;\r\n            last.y += dir.y;\r\n        }\r\n    }\r\n\r\n    //+x,+y\r\n    function SE (dir: ICoordinates, first: ICoordinates, last: ICoordinates, bounds: minerva.Rect) {\r\n        var maxX = bounds.x + bounds.width;\r\n        var maxY = bounds.y + bounds.height;\r\n        while (first.x >= bounds.x && first.y >= bounds.y) {\r\n            first.x -= dir.x;\r\n            first.y -= dir.y;\r\n        }\r\n        while (last.x <= maxX && last.y <= maxY) {\r\n            last.x += dir.x;\r\n            last.y += dir.y;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Media/LinearGradientBrush.ts",
    "content": "/// <reference path=\"GradientBrush.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class LinearGradientBrush extends GradientBrush {\r\n        static StartPointProperty = DependencyProperty.RegisterCore(\"StartPoint\", () => Point, LinearGradientBrush, undefined, (d: LinearGradientBrush, args) => d.InvalidateBrush());\r\n        static EndPointProperty = DependencyProperty.RegisterCore(\"EndPoint\", () => Point, LinearGradientBrush, undefined, (d: LinearGradientBrush, args) => d.InvalidateBrush());\r\n        StartPoint: Point;\r\n        EndPoint: Point;\r\n\r\n        CreatePad (ctx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            var data = this._GetPointData(bounds);\r\n            var grd = ctx.createLinearGradient(data.start.x, data.start.y, data.end.x, data.end.y);\r\n            for (var en = this.GradientStops.getEnumerator(); en.moveNext();) {\r\n                var stop: GradientStop = en.current;\r\n                this.AddColorStop(grd, stop.Offset, stop.Color);\r\n            }\r\n            return grd;\r\n        }\r\n\r\n        CreateRepeat (ctx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            var data = this._GetPointData(bounds);\r\n            return this.CreateInterpolated(ctx, LinearGradient.createRepeatInterpolator(data.start, data.end, bounds));\r\n        }\r\n\r\n        CreateReflect (ctx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            var data = this._GetPointData(bounds);\r\n            return this.CreateInterpolated(ctx, LinearGradient.createReflectInterpolator(data.start, data.end, bounds));\r\n        }\r\n\r\n        private CreateInterpolated (ctx: CanvasRenderingContext2D, interpolator: LinearGradient.IInterpolator) {\r\n            var grd = ctx.createLinearGradient(interpolator.x0, interpolator.y0, interpolator.x1, interpolator.y1);\r\n            var allStops = this.GradientStops.getPaddedEnumerable();\r\n            for (; interpolator.step();) {\r\n                for (var en = allStops.getEnumerator(); en.moveNext();) {\r\n                    var stop = en.current;\r\n                    var offset = interpolator.interpolate(stop.Offset);\r\n                    if (offset >= 0 && offset <= 1)\r\n                        this.AddColorStop(grd, offset, stop.Color);\r\n                }\r\n            }\r\n            return grd;\r\n        }\r\n\r\n        private _GetPointData (bounds: minerva.Rect) {\r\n            var start = this.StartPoint;\r\n            start = !start ? new Point(0.0, 0.0) : start.Clone();\r\n            var end = this.EndPoint;\r\n            end = !end ? new Point(1.0, 1.0) : end.Clone();\r\n\r\n            if (this.MappingMode !== BrushMappingMode.Absolute) {\r\n                start.x *= bounds.width;\r\n                start.y *= bounds.height;\r\n                end.x *= bounds.width;\r\n                end.y *= bounds.height;\r\n            }\r\n            start.x += bounds.x;\r\n            start.y += bounds.y;\r\n            end.x += bounds.x;\r\n            end.y += bounds.y;\r\n            return {\r\n                start: start,\r\n                end: end\r\n            };\r\n        }\r\n\r\n        toString (): string {\r\n            var ser = [];\r\n            for (var en = this.GradientStops.getEnumerator(); en.moveNext();) {\r\n                ser.push(en.current.toString());\r\n            }\r\n            return \"LinearGradientBrush(\" + this.StartPoint.toString() + \" --> \" + this.EndPoint.toString() + \" [\" + ser.toString() + \"])\";\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(LinearGradientBrush);\r\n}\r\n"
  },
  {
    "path": "src/Media/Matrix.ts",
    "content": "module Fayde.Media {\r\n    export class Matrix {\r\n        _Raw: number[];\r\n        private _Inverse: Matrix = null;\r\n\r\n        constructor(raw?: number[]) {\r\n            this._Raw = raw || mat3.identity();\r\n        }\r\n\r\n        static get Identity(): Matrix {\r\n            return new Matrix(mat3.identity());\r\n        }\r\n\r\n        get M11() { return this._Raw[0]; }\r\n        set M11(val: number) { this._Raw[0] = val; this._OnChanged(); }\r\n\r\n        get M12() { return this._Raw[1]; }\r\n        set M12(val: number) { this._Raw[1] = val; this._OnChanged(); }\r\n\r\n        get M21() { return this._Raw[2]; }\r\n        set M21(val: number) { this._Raw[2] = val; this._OnChanged(); }\r\n\r\n        get M22() { return this._Raw[3]; }\r\n        set M22(val: number) { this._Raw[3] = val; this._OnChanged(); }\r\n\r\n        get OffsetX() { return this._Raw[4]; }\r\n        set OffsetX(val: number) { this._Raw[4] = val; this._OnChanged(); }\r\n\r\n        get OffsetY() { return this._Raw[5]; }\r\n        set OffsetY(val: number) { this._Raw[5] = val; this._OnChanged(); }\r\n\r\n        get Inverse(): Matrix {\r\n            var inverse = this._Inverse;\r\n            if (!inverse) {\r\n                inverse = new Matrix();\r\n                inverse._Raw = mat3.inverse(this._Raw, mat3.identity());\r\n                if (!inverse._Raw)\r\n                    return undefined;\r\n                this._Inverse = inverse;\r\n            }\r\n            return inverse;\r\n        }\r\n\r\n        private _OnChanged() {\r\n            this._Inverse = null;\r\n            Incite(this);\r\n        }\r\n\r\n        Clone(): Matrix {\r\n            if (!this._Raw)\r\n                return new Matrix();\r\n            return new Matrix(mat3.create(this._Raw));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Matrix);\r\n}\r\n"
  },
  {
    "path": "src/Media/Matrix3D.ts",
    "content": "module Fayde.Media {\r\n    export interface IMatrix3DChangedListener {\r\n        Callback: (newMatrix3D: Matrix3D) => void;\r\n        Detach();\r\n    }\r\n\r\n    export class Matrix3D {\r\n        _Raw: number[];\r\n        private _Inverse: Matrix3D = null;\r\n\r\n        static FromRaw(raw: number[]): Matrix3D {\r\n            var r = new Matrix3D();\r\n            r._Raw = raw;\r\n            return r;\r\n        }\r\n\r\n        get M11() { return this._Raw[0]; }\r\n        set M11(val: number) { this._Raw[0] = val; this._OnChanged(); }\r\n\r\n        get M12() { return this._Raw[1]; }\r\n        set M12(val: number) { this._Raw[1] = val; this._OnChanged(); }\r\n\r\n        get M13() { return this._Raw[2]; }\r\n        set M13(val: number) { this._Raw[2] = val; this._OnChanged(); }\r\n\r\n        get M14() { return this._Raw[3]; }\r\n        set M14(val: number) { this._Raw[3] = val; this._OnChanged(); }\r\n\r\n        get M21() { return this._Raw[4]; }\r\n        set M21(val: number) { this._Raw[4] = val; this._OnChanged(); }\r\n\r\n        get M22() { return this._Raw[5]; }\r\n        set M22(val: number) { this._Raw[5] = val; this._OnChanged(); }\r\n\r\n        get M23() { return this._Raw[6]; }\r\n        set M23(val: number) { this._Raw[6] = val; this._OnChanged(); }\r\n\r\n        get M24() { return this._Raw[7]; }\r\n        set M24(val: number) { this._Raw[7] = val; this._OnChanged(); }\r\n\r\n        get M31() { return this._Raw[8]; }\r\n        set M31(val: number) { this._Raw[8] = val; this._OnChanged(); }\r\n\r\n        get M32() { return this._Raw[9]; }\r\n        set M32(val: number) { this._Raw[9] = val; this._OnChanged(); }\r\n\r\n        get M33() { return this._Raw[10]; }\r\n        set M33(val: number) { this._Raw[10] = val; this._OnChanged(); }\r\n\r\n        get M34() { return this._Raw[11]; }\r\n        set M34(val: number) { this._Raw[11] = val; this._OnChanged(); }\r\n\r\n        get OffsetX() { return this._Raw[12]; }\r\n        set OffsetX(val: number) { this._Raw[12] = val; this._OnChanged(); }\r\n\r\n        get OffsetY() { return this._Raw[13]; }\r\n        set OffsetY(val: number) { this._Raw[13] = val; this._OnChanged(); }\r\n\r\n        get OffsetZ() { return this._Raw[14]; }\r\n        set OffsetZ(val: number) { this._Raw[14] = val; this._OnChanged(); }\r\n\r\n        get M44() { return this._Raw[15]; }\r\n        set M44(val: number) { this._Raw[15] = val; this._OnChanged(); }\r\n\r\n        get Inverse(): Matrix3D {\r\n            var inverse = this._Inverse;\r\n            if (!inverse) {\r\n                inverse = new Matrix3D();\r\n                inverse._Raw = mat4.inverse(this._Raw, mat4.identity());\r\n                if (!inverse._Raw)\r\n                    return undefined;\r\n                this._Inverse = inverse;\r\n            }\r\n            return inverse;\r\n        }\r\n\r\n        private _Listeners: IMatrix3DChangedListener[] = [];\r\n        Listen(func: (newMatrix: Matrix3D) => void ): IMatrix3DChangedListener {\r\n            var listeners = this._Listeners;\r\n            var listener = {\r\n                Callback: func,\r\n                Detach: () => {\r\n                    var index = listeners.indexOf(listener);\r\n                    if (index > -1)\r\n                        listeners.splice(index, 1);\r\n                }\r\n            };\r\n            listeners.push(listener);\r\n            return listener;\r\n        }\r\n        private _OnChanged() {\r\n            this._Inverse = null;\r\n            var listeners = this._Listeners;\r\n            var len = listeners.length;\r\n            for (var i = 0; i < len; i++) {\r\n                listeners[i].Callback(this);\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Matrix3D);\r\n}"
  },
  {
    "path": "src/Media/Matrix3DProjection.ts",
    "content": "/// <reference path=\"Projection.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class Matrix3DProjection extends Projection {\r\n        static ProjectionMatrixProperty = DependencyProperty.Register(\"ProjectionMatrix\", () => Matrix3D, Matrix3DProjection, undefined, (d: Projection, args) => d.InvalidateProjection());\r\n        ProjectionMatrix: Matrix3D;\r\n\r\n        CreateProjectionMatrix(): Matrix3D { return this.ProjectionMatrix; }\r\n    }\r\n    Fayde.CoreLibrary.add(Matrix3DProjection);\r\n}"
  },
  {
    "path": "src/Media/MediaParser.ts",
    "content": "/// <reference path=\"Geometry.ts\" />\r\n\r\n\r\n// Path Markup Syntax: http://msdn.microsoft.com/en-us/library/cc189041(v=vs.95).aspx\r\n\r\n//FigureDescription Syntax\r\n// MoveCommand DrawCommands [CloseCommand]\r\n\r\n//Double Syntax\r\n// digits\r\n// digits.digits\r\n// 'Infinity'\r\n// '-Infinity'\r\n// 'NaN'\r\n\r\n//Point Syntax\r\n// x,y\r\n// x y\r\n\r\n//Loop until exhausted\r\n//  Parse FigureDescription\r\n//      Find \"M\" or \"m\"? - Parse MoveCommand (start point)\r\n//          <point>\r\n//\r\n//      Find \"L\" or \"l\"? - Parse LineCommand (end point)\r\n//          <point>\r\n//      Find \"H\" or \"h\"? - Parse HorizontalLineCommand (x)\r\n//          <double>\r\n//      Find \"V\" or \"v\"? - Parse VerticalLineCommand (y)\r\n//          <double>\r\n//      Find \"C\" or \"c\"? - Parse CubicBezierCurveCommand (control point 1, control point 2, end point)\r\n//          <point> <point> <point>\r\n//      Find \"Q\" or \"q\"? - Parse QuadraticBezierCurveCommand (control point, end point)\r\n//          <point> <point>\r\n//      Find \"S\" or \"s\"? - Parse SmoothCubicBezierCurveCommand (control point 2, end point)\r\n//          <point> <point>\r\n//      Find \"T\" or \"t\"? - Parse SmoothQuadraticBezierCurveCommand (control point, end point)\r\n//          <point> <point>\r\n//      Find \"A\" or \"a\"? - Parse EllipticalArcCommand (size, rotationAngle, isLargeArcFlag, sweepDirectionFlag, endPoint)\r\n//          <point> <double> <1,0> <1,0> <point>\r\n//\r\n//      Find \"Z\" or \"z\"? - CloseCommand\r\n\r\nmodule Fayde.Media {\r\n    export function ParseGeometry (val: string): Geometry {\r\n        return (new MediaParser(val)).ParseGeometryImpl();\r\n    }\r\n\r\n    export function ParseShapePoints (val: string): Point[] {\r\n        return (new MediaParser(val)).ParseShapePoints();\r\n    }\r\n\r\n    class MediaParser {\r\n        private str: string;\r\n        private len: number;\r\n        private index: number = 0;\r\n\r\n        constructor (str: string) {\r\n            this.str = str;\r\n            this.len = str.length;\r\n        }\r\n\r\n        ParseGeometryImpl (): Geometry {\r\n            var cp = new Point();\r\n            var cp1: Point, cp2: Point, cp3: Point;\r\n            var start = new Point();\r\n            var fillRule = Shapes.FillRule.EvenOdd;\r\n            var cbz = false; // last figure is a cubic bezier curve\r\n            var qbz = false; // last figure is a quadratic bezier curve\r\n            var cbzp = new Point(); // points needed to create \"smooth\" beziers\r\n            var qbzp = new Point(); // points needed to create \"smooth\" beziers\r\n\r\n            var path = new minerva.path.Path();\r\n            while (this.index < this.len) {\r\n                var c;\r\n                while (this.index < this.len && (c = this.str.charAt(this.index)) === ' ') {\r\n                    this.index++;\r\n                }\r\n                this.index++;\r\n                var relative = false;\r\n                switch (c) {\r\n                    case 'f':\r\n                    case 'F':\r\n                        c = this.str.charAt(this.index);\r\n                        if (c === '0')\r\n                            fillRule = Shapes.FillRule.EvenOdd;\r\n                        else if (c === '1')\r\n                            fillRule = Shapes.FillRule.NonZero;\r\n                        else\r\n                            return null;\r\n                        this.index++;\r\n                        c = this.str.charAt(this.index);\r\n                        break;\r\n                    case 'm':\r\n                        relative = true;\r\n                    case 'M':\r\n                        cp1 = this.ParsePoint();\r\n                        if (cp1 == null)\r\n                            break;\r\n                        if (relative) {\r\n                            cp1.x += cp.x;\r\n                            cp1.y += cp.y;\r\n                        }\r\n                        path.move(cp1.x, cp1.y);\r\n                        start.x = cp.x = cp1.x;\r\n                        start.y = cp.y = cp1.y;\r\n                        this.Advance();\r\n                        while (this.MorePointsAvailable()) {\r\n                            if ((cp1 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp1.x += cp.x;\r\n                                cp1.y += cp.y;\r\n                            }\r\n                            path.line(cp1.x, cp1.y);\r\n                        }\r\n                        cp.x = cp1.x;\r\n                        cp.y = cp1.y;\r\n                        cbz = qbz = false;\r\n                        break;\r\n                    case 'l':\r\n                        relative = true;\r\n                    case 'L':\r\n                        while (this.MorePointsAvailable()) {\r\n                            if ((cp1 = this.ParsePoint()) == null)\r\n                                break;\r\n\r\n                            if (relative) {\r\n                                cp1.x += cp.x;\r\n                                cp1.y += cp.y;\r\n                            }\r\n\r\n                            path.line(cp1.x, cp1.y);\r\n\r\n                            cp.x = cp1.x;\r\n                            cp.y = cp1.y;\r\n                            this.Advance();\r\n                        }\r\n                        cbz = qbz = false;\r\n                        break;\r\n                    case 'h':\r\n                        relative = true;\r\n                    case 'H':\r\n                        var x = this.ParseDouble();\r\n                        if (x == null)\r\n                            break;\r\n\r\n                        if (relative)\r\n                            x += cp.x;\r\n                        cp = new Point(x, cp.y);\r\n\r\n                        path.line(cp.x, cp.y);\r\n                        cbz = qbz = false;\r\n                        break;\r\n                    case 'v':\r\n                        relative = true;\r\n                    case 'V':\r\n                        var y = this.ParseDouble();\r\n                        if (y == null)\r\n                            break;\r\n\r\n                        if (relative)\r\n                            y += cp.y;\r\n                        cp = new Point(cp.x, y);\r\n\r\n                        path.line(cp.x, cp.y);\r\n                        cbz = qbz = false;\r\n                        break;\r\n                    case 'c':\r\n                        relative = true;\r\n                    case 'C':\r\n                        while (this.MorePointsAvailable()) {\r\n                            if ((cp1 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp1.x += cp.x;\r\n                                cp1.y += cp.y;\r\n                            }\r\n                            this.Advance();\r\n                            if ((cp2 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp2.x += cp.x;\r\n                                cp2.y += cp.y;\r\n                            }\r\n                            this.Advance();\r\n                            if ((cp3 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp3.x += cp.x;\r\n                                cp3.y += cp.y;\r\n                            }\r\n                            this.Advance();\r\n\r\n                            path.cubicBezier(cp1.x, cp1.y, cp2.x, cp2.y, cp3.x, cp3.y);\r\n\r\n                            cp1.x = cp3.x;\r\n                            cp1.y = cp3.y;\r\n                        }\r\n                        cp.x = cp3.x;\r\n                        cp.y = cp3.y;\r\n                        cbz = true;\r\n                        cbzp.x = cp2.x;\r\n                        cbzp.y = cp2.y;\r\n                        qbz = false;\r\n                        break;\r\n                    case 's':\r\n                        relative = true;\r\n                    case 'S':\r\n                        while (this.MorePointsAvailable()) {\r\n                            if ((cp2 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp2.x += cp.x;\r\n                                cp2.y += cp.y;\r\n                            }\r\n                            this.Advance();\r\n                            if ((cp3 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp3.x += cp.x;\r\n                                cp3.y += cp.y;\r\n                            }\r\n\r\n                            if (cbz) {\r\n                                cp1.x = 2 * cp.x - cbzp.x;\r\n                                cp1.y = 2 * cp.y - cbzp.y;\r\n                            } else\r\n                                cp1 = cp;\r\n\r\n                            path.cubicBezier(cp1.x, cp1.y, cp2.x, cp2.y, cp3.x, cp3.y);\r\n\r\n                            cbz = true;\r\n                            cbzp.x = cp2.x;\r\n                            cbzp.y = cp2.y;\r\n\r\n                            cp.x = cp3.x;\r\n                            cp.y = cp3.y;\r\n\r\n                            this.Advance();\r\n                        }\r\n                        qbz = false;\r\n                        break;\r\n                    case 'q':\r\n                        relative = true;\r\n                    case 'Q':\r\n                        while (this.MorePointsAvailable()) {\r\n                            if ((cp1 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp1.x += cp.x;\r\n                                cp1.y += cp.y;\r\n                            }\r\n                            this.Advance();\r\n                            if ((cp2 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp2.x += cp.x;\r\n                                cp2.y += cp.y;\r\n                            }\r\n                            this.Advance();\r\n\r\n                            path.quadraticBezier(cp1.x, cp1.y, cp2.x, cp2.y);\r\n\r\n                            cp.x = cp2.x;\r\n                            cp.y = cp2.y;\r\n                        }\r\n                        qbz = true;\r\n                        qbzp.x = cp1.x;\r\n                        qbzp.y = cp1.y;\r\n                        cbz = false;\r\n                        break;\r\n                    case 't':\r\n                        relative = true;\r\n                    case 'T':\r\n                        while (this.MorePointsAvailable()) {\r\n                            if ((cp2 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp2.x += cp.x;\r\n                                cp2.y += cp.y;\r\n                            }\r\n\r\n                            if (qbz) {\r\n                                cp1.x = 2 * cp.x - qbzp.x;\r\n                                cp1.y = 2 * cp.y - qbzp.y;\r\n                            } else\r\n                                cp1 = cp;\r\n\r\n                            path.quadraticBezier(cp1.x, cp1.y, cp2.x, cp2.y);\r\n\r\n                            qbz = true;\r\n                            qbzp.x = cp1.x;\r\n                            qbzp.y = cp1.y;\r\n\r\n                            cp.x = cp2.x;\r\n                            cp.y = cp2.y;\r\n\r\n                            this.Advance();\r\n                        }\r\n                        cbz = false;\r\n                        break;\r\n                    case 'a':\r\n                        relative = true;\r\n                    case 'A':\r\n                        while (this.MorePointsAvailable()) {\r\n                            if ((cp1 = this.ParsePoint()) == null)\r\n                                break;\r\n\r\n                            var angle = this.ParseDouble();\r\n                            var is_large = this.ParseDouble() !== 0;\r\n                            var sweep = minerva.SweepDirection.Counterclockwise;\r\n                            if (this.ParseDouble() !== 0) sweep = minerva.SweepDirection.Clockwise;\r\n\r\n                            if ((cp2 = this.ParsePoint()) == null)\r\n                                break;\r\n                            if (relative) {\r\n                                cp2.x += cp.x;\r\n                                cp2.y += cp.y;\r\n                            }\r\n\r\n                            path.ellipticalArc(cp1.x, cp1.y, angle, is_large, sweep, cp2.x, cp2.y);\r\n\r\n                            cp.x = cp2.x;\r\n                            cp.y = cp2.y;\r\n\r\n                            this.Advance();\r\n                        }\r\n                        cbz = qbz = false;\r\n                        break;\r\n                    case 'z':\r\n                    case 'Z':\r\n                        //path.Line(start.x, start.y);\r\n                        path.close();\r\n                        //path.Move(start.x, start.y);\r\n\r\n                        cp.x = start.x;\r\n                        cp.y = start.y;\r\n                        cbz = qbz = false;\r\n                        break;\r\n                    default:\r\n                        break;\r\n                }\r\n            }\r\n            var pg = new PathGeometry();\r\n            pg.OverridePath(path);\r\n            pg.FillRule = <Shapes.FillRule>fillRule;\r\n            return pg;\r\n        }\r\n\r\n        ParseShapePoints (): Point[] {\r\n            var points: Point[] = [];\r\n            var p: Point;\r\n            while (this.MorePointsAvailable() && (p = this.ParsePoint()) != null) {\r\n                points.push(p);\r\n            }\r\n            return points;\r\n        }\r\n\r\n        private ParsePoint (): Point {\r\n            var x = this.ParseDouble();\r\n            if (x == null)\r\n                return null;\r\n\r\n            var c;\r\n            while (this.index < this.len && ((c = this.str.charAt(this.index)) === ' ' || c === ',')) {\r\n                this.index++;\r\n            }\r\n            if (this.index >= this.len)\r\n                return null;\r\n\r\n            var y = this.ParseDouble();\r\n            if (y == null)\r\n                return null;\r\n\r\n            return new Point(x, y);\r\n        }\r\n\r\n        private ParseDouble (): number {\r\n            this.Advance();\r\n            var isNegative = false;\r\n            if (this.Match('-')) {\r\n                isNegative = true;\r\n                this.index++;\r\n            } else if (this.Match('+')) {\r\n                this.index++;\r\n            }\r\n            if (this.Match('Infinity')) {\r\n                this.index += 8;\r\n                return isNegative ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;\r\n            }\r\n            if (this.Match('NaN'))\r\n                return NaN;\r\n\r\n            var temp = '';\r\n            while (this.index < this.len) {\r\n                var code = this.str.charCodeAt(this.index);\r\n                var c = this.str[this.index];\r\n                //0-9, ., E, e, E-, e-\r\n                if (code >= 48 && code <= 57)\r\n                    temp += c;\r\n                else if (code === 46)\r\n                    temp += c;\r\n                else if (c === 'E' || c === 'e') {\r\n                    temp += c;\r\n                    if (this.str[this.index + 1] === '-') {\r\n                        temp += '-';\r\n                        this.index++;\r\n                    }\r\n                }\r\n                else\r\n                    break;\r\n                this.index++;\r\n            }\r\n            if (temp.length === 0)\r\n                return null;\r\n            var f = parseFloat(temp);\r\n            return isNegative ? -f : f;\r\n        }\r\n\r\n        private Match (matchStr: string): boolean {\r\n            var c1: string;\r\n            var c2: string;\r\n            for (var i = 0; i < matchStr.length && (this.index + i) < this.len; i++) {\r\n                c1 = matchStr.charAt(i);\r\n                c2 = this.str.charAt(this.index + i);\r\n                if (c1 !== c2)\r\n                    return false;\r\n            }\r\n            return true;\r\n        }\r\n\r\n        private Advance () {\r\n            var code: number;\r\n            var c: string;\r\n            while (this.index < this.len) {\r\n                code = this.str.charCodeAt(this.index);\r\n                //alphanum\r\n                if ((code >= 65 && code <= 90) || (code >= 97 && code <= 122) || (code >= 48 && code <= 57))\r\n                    break;\r\n                c = String.fromCharCode(code);\r\n                if (c === '.')\r\n                    break;\r\n                if (c === '-')\r\n                    break;\r\n                if (c === '+')\r\n                    break;\r\n                this.index++;\r\n            }\r\n        }\r\n\r\n        private MorePointsAvailable (): boolean {\r\n            var c;\r\n            while (this.index < this.len && ((c = this.str.charAt(this.index)) === ',' || c === ' ')) {\r\n                this.index++;\r\n            }\r\n            if (this.index >= this.len)\r\n                return false;\r\n            if (c === '.' || c === '-' || c === '+')\r\n                return true;\r\n            var code = this.str.charCodeAt(this.index);\r\n            return code >= 48 && code <= 57;\r\n        }\r\n    }\r\n\r\n    nullstone.registerTypeConverter(Geometry, (val: any): any => {\r\n        if (val instanceof Geometry)\r\n            return val;\r\n        if (typeof val === \"string\")\r\n            return ParseGeometry(val);\r\n        return val;\r\n    });\r\n}"
  },
  {
    "path": "src/Media/PathFigure.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class PathFigure extends DependencyObject {\r\n        static IsClosedProperty = DependencyProperty.RegisterCore(\"IsClosed\", () => Boolean, PathFigure, false, (d: PathFigure, args) => d.InvalidatePathFigure());\r\n        static StartPointProperty = DependencyProperty.RegisterCore(\"StartPoint\", () => Point, PathFigure, undefined, (d: PathFigure, args) => d.InvalidatePathFigure());\r\n        static IsFilledProperty = DependencyProperty.RegisterCore(\"IsFilled\", () => Boolean, PathFigure, true, (d: PathFigure, args) => d.InvalidatePathFigure());\r\n        static SegmentsProperty = DependencyProperty.RegisterImmutable<PathSegmentCollection>(\"Segments\", () => PathSegmentCollection, PathFigure);\r\n        static SegmentsSourceProperty = DependencyProperty.Register(\"SegmentsSource\", () => nullstone.IEnumerable_, PathFigure, undefined, (d: PathFigure, args) => d._OnSegmentsSourceChanged(args));\r\n        IsClosed: boolean;\r\n        Segments: PathSegmentCollection;\r\n        SegmentsSource: nullstone.IEnumerable<PathSegment>;\r\n        StartPoint: Point;\r\n        IsFilled: boolean;\r\n\r\n        private _OnSegmentsSourceChanged (args: IDependencyPropertyChangedEventArgs) {\r\n            this.Segments.SetSource(args.NewValue);\r\n        }\r\n\r\n        private _Path: minerva.path.Path = null;\r\n\r\n        constructor() {\r\n            super();\r\n            var coll = PathFigure.SegmentsProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n            ReactTo(coll, this, () => this.InvalidatePathFigure());\r\n        }\r\n\r\n        private _Build(): minerva.path.Path {\r\n            var p = new minerva.path.Path();\r\n\r\n            var start = this.StartPoint;\r\n            p.move(start.x, start.y);\r\n\r\n            var enumerator = this.Segments.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                (<PathSegment>enumerator.current)._Append(p);\r\n            }\r\n            if (this.IsClosed)\r\n                p.close();\r\n\r\n            return p;\r\n        }\r\n\r\n        private InvalidatePathFigure() {\r\n            this._Path = null;\r\n            Incite(this);\r\n        }\r\n\r\n        MergeInto(rp: minerva.path.Path) {\r\n            if (!this._Path)\r\n                this._Path = this._Build();\r\n            minerva.path.Path.Merge(rp, this._Path);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PathFigure);\r\n    Markup.Content(PathFigure, PathFigure.SegmentsProperty);\r\n\r\n    export class PathFigureCollection extends XamlObjectCollection<PathFigure> {\r\n        AddingToCollection(value: PathFigure, error: BError): boolean {\r\n            if (!super.AddingToCollection(value, error))\r\n                return false;\r\n            ReactTo(value, this, () => Incite(this));\r\n            Incite(this);\r\n            return true;\r\n        }\r\n        RemovedFromCollection(value: PathFigure, isValueSafe: boolean) {\r\n            super.RemovedFromCollection(value, isValueSafe);\r\n            UnreactTo(value, this);\r\n            Incite(this);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PathFigureCollection);\r\n}"
  },
  {
    "path": "src/Media/PathGeometry.ts",
    "content": "/// <reference path=\"Geometry.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class PathGeometry extends Geometry implements minerva.shapes.path.IPathGeometry {\r\n        private _OverridePath: minerva.path.Path = null;\r\n        static FillRuleProperty = DependencyProperty.Register(\"FillRule\", () => new Enum(Shapes.FillRule), PathGeometry, Shapes.FillRule.EvenOdd, (d: Geometry, args) => d.InvalidateGeometry());\r\n        static FiguresProperty = DependencyProperty.RegisterImmutable<PathFigureCollection>(\"Figures\", () => PathFigureCollection, PathGeometry);\r\n        FillRule: Shapes.FillRule;\r\n        Figures: PathFigureCollection;\r\n\r\n        get fillRule (): minerva.FillRule {\r\n            return <any>this.FillRule;\r\n        }\r\n\r\n        constructor () {\r\n            super();\r\n            var coll = PathGeometry.FiguresProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n            ReactTo(coll, this, () => this.InvalidateFigures());\r\n        }\r\n\r\n        OverridePath (path: minerva.path.Path) {\r\n            this._OverridePath = path;\r\n        }\r\n\r\n        _Build (): minerva.path.Path {\r\n            if (this._OverridePath)\r\n                return this._OverridePath;\r\n\r\n            var p = new minerva.path.Path();\r\n            var figures = this.Figures;\r\n            if (!figures)\r\n                return;\r\n\r\n            var enumerator = figures.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                (<PathFigure>enumerator.current).MergeInto(p);\r\n            }\r\n            return p;\r\n        }\r\n\r\n        InvalidateFigures () {\r\n            this._OverridePath = null; //Any change in PathFigures invalidates a path override\r\n            this.InvalidateGeometry();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PathGeometry);\r\n    Markup.Content(PathGeometry, PathGeometry.FiguresProperty);\r\n}"
  },
  {
    "path": "src/Media/PathSegment.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class PathSegment extends DependencyObject {\r\n        _Append(path:minerva.path.Path) {\r\n            //Abstract method\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PathSegment);\r\n\r\n    export class PathSegmentCollection extends XamlObjectCollection<PathSegment> {\r\n        private _Modifying = false;\r\n\r\n        AddingToCollection(value:PathSegment, error:BError):boolean {\r\n            if (!this._Modifying && this._Source != null) {\r\n                console.warn(\"Cannot modify Path Segments Collection when bound to SegmentsSource.\");\r\n                return false;\r\n            }\r\n            if (!super.AddingToCollection(value, error))\r\n                return false;\r\n            ReactTo(value, this, () => Incite(this));\r\n            Incite(this);\r\n            return true;\r\n        }\r\n\r\n        RemovedFromCollection(value:PathSegment, isValueSafe:boolean) {\r\n            super.RemovedFromCollection(value, isValueSafe);\r\n            UnreactTo(value, this);\r\n            Incite(this);\r\n        }\r\n\r\n        private _Source:nullstone.IEnumerable<PathSegment> = null;\r\n\r\n        SetSource(source:nullstone.IEnumerable<PathSegment>) {\r\n            var onc = Collections.INotifyCollectionChanged_.as(this._Source);\r\n            if (onc)\r\n                onc.CollectionChanged.off(this._OnSegmentsCollectionChanged, this);\r\n            var oen = nullstone.IEnumerable_.as(this._Source);\r\n            if (oen) {\r\n                this.Clear();\r\n            }\r\n\r\n            this._Source = source;\r\n            var nen = nullstone.IEnumerable_.as(this._Source);\r\n            if (nen) {\r\n                this._Modifying = true;\r\n                try {\r\n                    for (var en = nen.getEnumerator(); en.moveNext();) {\r\n                        this.Add(en.current);\r\n                    }\r\n                } finally {\r\n                    this._Modifying = false;\r\n                }\r\n            }\r\n            var nnc = Collections.INotifyCollectionChanged_.as(this._Source);\r\n            if (nnc)\r\n                nnc.CollectionChanged.on(this._OnSegmentsCollectionChanged, this);\r\n        }\r\n\r\n        private _OnSegmentsCollectionChanged(sender, args:Collections.CollectionChangedEventArgs) {\r\n            this._Modifying = true;\r\n            try {\r\n                for (var i = 0, items = args.OldItems, len = items ? items.length : 0; i < len; i++) {\r\n                    this.RemoveAt(i);\r\n                }\r\n                for (var i = 0, items = args.NewItems, len = items ? items.length : 0; i < len; i++) {\r\n                    this.Insert(args.NewStartingIndex + i, items[i]);\r\n                }\r\n            } finally {\r\n                this._Modifying = false;\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PathSegmentCollection);\r\n}"
  },
  {
    "path": "src/Media/PathSegments.ts",
    "content": "/// <reference path=\"PathSegment.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    //TODO: Should we be doing `Incite(this)` when properties change?\r\n    export class ArcSegment extends PathSegment {\r\n        static IsLargeArcProperty = DependencyProperty.RegisterCore(\"IsLargeArc\", () => Boolean, ArcSegment, false, (d: ArcSegment, args) => Incite(d));\r\n        static PointProperty = DependencyProperty.Register(\"Point\", () => Point, ArcSegment, undefined, (d: ArcSegment, args) => Incite(d));\r\n        static RotationAngleProperty = DependencyProperty.Register(\"RotationAngle\", () => Number, ArcSegment, 0.0, (d: ArcSegment, args) => Incite(d));\r\n        static SizeProperty = DependencyProperty.Register(\"Size\", () => minerva.Size, ArcSegment, undefined, (d: ArcSegment, args) => Incite(d));\r\n        static SweepDirectionProperty = DependencyProperty.Register(\"SweepDirection\", () => new Enum(Shapes.SweepDirection), ArcSegment, Shapes.SweepDirection.Counterclockwise, (d: ArcSegment, args) => Incite(d));\r\n        IsLargeArc: boolean;\r\n        Point: Point;\r\n        RotationAngle: number;\r\n        Size: minerva.Size;\r\n        SweepDirection: Shapes.SweepDirection;\r\n\r\n        _Append(path: minerva.path.Path) {\r\n            var size = this.Size;\r\n            var width = size ? size.width : 0.0;\r\n            var height = size ? size.height : 0.0;\r\n\r\n            var endpt = this.Point;\r\n            var ex = endpt ? endpt.x : 0.0;\r\n            var ey = endpt ? endpt.y : 0.0;\r\n\r\n            path.ellipticalArc(width, height, this.RotationAngle, this.IsLargeArc, <minerva.SweepDirection><number>this.SweepDirection, ex, ey);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ArcSegment);\r\n\r\n    export class BezierSegment extends PathSegment {\r\n        static Point1Property = DependencyProperty.Register(\"Point1\", () => Point, BezierSegment);\r\n        static Point2Property = DependencyProperty.Register(\"Point2\", () => Point, BezierSegment);\r\n        static Point3Property = DependencyProperty.Register(\"Point3\", () => Point, BezierSegment);\r\n        Point1: Point;\r\n        Point2: Point;\r\n        Point3: Point;\r\n\r\n        _Append(path: minerva.path.Path) {\r\n\t        var p1 = this.Point1;\r\n\t        var p2 = this.Point2;\r\n\t        var p3 = this.Point3;\r\n\r\n\t        var x1 = p1 ? p1.x : 0.0;\r\n\t        var y1 = p1 ? p1.y : 0.0;\r\n\t        var x2 = p2 ? p2.x : 0.0;\r\n\t        var y2 = p2 ? p2.y : 0.0;\r\n\t        var x3 = p3 ? p3.x : 0.0;\r\n\t        var y3 = p3 ? p3.y : 0.0;\r\n\r\n\t        path.cubicBezier(x1, y1, x2, y2, x3, y3);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(BezierSegment);\r\n\r\n    export class LineSegment extends PathSegment {\r\n        static PointProperty = DependencyProperty.Register(\"Point\", () => Point, LineSegment);\r\n        Point: Point;\r\n\r\n        _Append(path: minerva.path.Path) {\r\n            var p = this.Point;\r\n            var x = p ? p.x : 0.0;\r\n            var y = p ? p.y : 0.0;\r\n            path.line(x, y);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(LineSegment);\r\n\r\n    export class PolyBezierSegment extends PathSegment {\r\n        static PointsProperty = DependencyProperty.RegisterImmutable<Shapes.PointCollection>(\"Points\", () => Shapes.PointCollection, PolyBezierSegment);\r\n        Points: Shapes.PointCollection;\r\n\r\n        constructor() {\r\n            super();\r\n            PolyBezierSegment.PointsProperty.Initialize(this);\r\n        }\r\n\r\n        _Append(path: minerva.path.Path) {\r\n            var points = this.Points;\r\n            if (!points || (points.Count % 3) !== 0)\r\n                return;\r\n\r\n            var p1: Point;\r\n            var p2: Point;\r\n            var p3: Point;\r\n            var enumerator = points.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                p1 = enumerator.current;\r\n                enumerator.moveNext();\r\n                p2 = enumerator.current;\r\n                enumerator.moveNext();\r\n                p3 = enumerator.current;\r\n                path.cubicBezier(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y);\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PolyBezierSegment);\r\n    Markup.Content(PolyBezierSegment, PolyBezierSegment.PointsProperty);\r\n\r\n    export class PolyLineSegment extends PathSegment {\r\n        static PointsProperty = DependencyProperty.RegisterImmutable<Shapes.PointCollection>(\"Points\", () => Shapes.PointCollection, PolyLineSegment);\r\n        Points: Shapes.PointCollection;\r\n\r\n        constructor() {\r\n            super();\r\n            PolyLineSegment.PointsProperty.Initialize(this);\r\n        }\r\n\r\n        _Append(path: minerva.path.Path) {\r\n            var p: Point;\r\n            var enumerator = this.Points.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                p = enumerator.current;\r\n                path.line(p.x, p.y);\r\n            }\r\n            console.warn(\"PolyLineSegment._Append\");\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PolyLineSegment);\r\n    Markup.Content(PolyLineSegment, PolyLineSegment.PointsProperty);\r\n\r\n    export class PolyQuadraticBezierSegment extends PathSegment {\r\n        static PointsProperty = DependencyProperty.RegisterImmutable<Shapes.PointCollection>(\"Points\", () => Shapes.PointCollection, PolyQuadraticBezierSegment);\r\n        Points: Shapes.PointCollection;\r\n\r\n        constructor() {\r\n            super();\r\n            PolyQuadraticBezierSegment.PointsProperty.Initialize(this);\r\n        }\r\n\r\n        _Append(path: minerva.path.Path) {\r\n            var points = this.Points;\r\n            if (!points || (points.Count % 2) !== 0)\r\n                return;\r\n\r\n            var x0 = path.endX;\r\n            var y0 = path.endY;\r\n            var x1: number;\r\n            var y1: number;\r\n            var x2: number;\r\n            var y2: number;\r\n            var x3: number;\r\n            var y3: number;\r\n            var enumerator = points.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                x1 = enumerator.current.x;\r\n                y1 = enumerator.current.y;\r\n                enumerator.moveNext();\r\n                x2 = enumerator.current.x;\r\n                y2 = enumerator.current.y;\r\n                x3 = x2;\r\n                y3 = y2;\r\n                \r\n\t\t        x2 = x1 + (x2 - x1) / 3;\r\n\t\t        y2 = y1 + (y2 - y1) / 3;\r\n\t\t        x1 = x0 + 2 * (x1 - x0) / 3;\r\n\t\t        y1 = y0 + 2 * (y1 - y0) / 3;\r\n\r\n                path.cubicBezier(x1, y1, x2, y2, x3, y3);\r\n                x0 = x3;\r\n                y0 = y3;\r\n            }\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PolyQuadraticBezierSegment);\r\n    Markup.Content(PolyQuadraticBezierSegment, PolyQuadraticBezierSegment.PointsProperty);\r\n\r\n    export class QuadraticBezierSegment extends PathSegment {\r\n        static Point1Property = DependencyProperty.Register(\"Point1\", () => Point, QuadraticBezierSegment);\r\n        static Point2Property = DependencyProperty.Register(\"Point2\", () => Point, QuadraticBezierSegment);\r\n        Point1: Point;\r\n        Point2: Point;\r\n\r\n        _Append(path: minerva.path.Path) {\r\n            var p1 = this.Point1;\r\n            var p2 = this.Point2;\r\n\r\n            var x1 = p1 ? p1.x : 0.0;\r\n            var y1 = p1 ? p1.y : 0.0;\r\n            var x2 = p2 ? p2.x : 0.0;\r\n            var y2 = p2 ? p2.y : 0.0;\r\n\r\n            path.quadraticBezier(x1, y1, x2, y2);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(QuadraticBezierSegment);\r\n}"
  },
  {
    "path": "src/Media/PlaneProjection.ts",
    "content": "/// <reference path=\"Projection.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    var FIELD_OF_VIEW = 57.0 / 180 * Math.PI;\r\n    var CAMERA_DIST = 999.0;\r\n    var NEAR_VAL = 1.0;\r\n    var FAR_VAL = 65536.0;\r\n    var XY_PLANE_Z = (NEAR_VAL * FAR_VAL / (NEAR_VAL - FAR_VAL) * (1.0 - CAMERA_DIST)) / CAMERA_DIST;\r\n    var PI_OVER_180 = Math.PI / 180.0;\r\n\r\n    export class PlaneProjection extends Projection {\r\n        static CenterOfRotationXProperty = DependencyProperty.Register(\"CenterOfRotationX\", () => Number, PlaneProjection, 0.5, (d: Projection, args) => d.InvalidateProjection());\r\n        static CenterOfRotationYProperty = DependencyProperty.Register(\"CenterOfRotationY\", () => Number, PlaneProjection, 0.5, (d: Projection, args) => d.InvalidateProjection());\r\n        static CenterOfRotationZProperty = DependencyProperty.Register(\"CenterOfRotationZ\", () => Number, PlaneProjection, 0.5, (d: Projection, args) => d.InvalidateProjection());\r\n\r\n        static GlobalOffsetXProperty = DependencyProperty.Register(\"GlobalOffsetX\", () => Number, PlaneProjection, 0.0, (d: Projection, args) => d.InvalidateProjection());\r\n        static GlobalOffsetYProperty = DependencyProperty.Register(\"GlobalOffsetY\", () => Number, PlaneProjection, 0.0, (d: Projection, args) => d.InvalidateProjection());\r\n        static GlobalOffsetZProperty = DependencyProperty.Register(\"GlobalOffsetZ\", () => Number, PlaneProjection, 0.0, (d: Projection, args) => d.InvalidateProjection());\r\n\r\n        static LocalOffsetXProperty = DependencyProperty.Register(\"LocalOffsetX\", () => Number, PlaneProjection, 0.0, (d: Projection, args) => d.InvalidateProjection());\r\n        static LocalOffsetYProperty = DependencyProperty.Register(\"LocalOffsetY\", () => Number, PlaneProjection, 0.0, (d: Projection, args) => d.InvalidateProjection());\r\n        static LocalOffsetZProperty = DependencyProperty.Register(\"LocalOffsetZ\", () => Number, PlaneProjection, 0.0, (d: Projection, args) => d.InvalidateProjection());\r\n\r\n        static RotationXProperty = DependencyProperty.Register(\"RotationX\", () => Number, PlaneProjection, 0.0, (d: Projection, args) => d.InvalidateProjection());\r\n        static RotationYProperty = DependencyProperty.Register(\"RotationY\", () => Number, PlaneProjection, 0.0, (d: Projection, args) => d.InvalidateProjection());\r\n        static RotationZProperty = DependencyProperty.Register(\"RotationZ\", () => Number, PlaneProjection, 0.0, (d: Projection, args) => d.InvalidateProjection());\r\n\r\n        CenterOfRotationX: number;\r\n        CenterOfRotationY: number;\r\n        CenterOfRotationZ: number;\r\n\r\n        GlobalOffsetX: number;\r\n        GlobalOffsetY: number;\r\n        GlobalOffsetZ: number;\r\n\r\n        LocalOffsetX: number;\r\n        LocalOffsetY: number;\r\n        LocalOffsetZ: number;\r\n\r\n        RotationX: number;\r\n        RotationY: number;\r\n        RotationZ: number;\r\n\r\n        getDistanceFromXYPlane (): number {\r\n            var w = Math.max(this.ObjectWidth, 1.0);\r\n            var h = Math.max(this.ObjectHeight, 1.0);\r\n            var p = [w / 2.0, h / 2.0, 0.0, 1.0];\r\n\r\n            var m = this.getTransform();\r\n            mat4.transformVec4(m, p, p);\r\n\r\n            if (p[3] === 0.0)\r\n                return NaN;\r\n            return XY_PLANE_Z - (p[2] / p[3]);\r\n        }\r\n\r\n        CreateProjectionMatrix3D (): Matrix3D {\r\n            var rotationX = this.RotationX;\r\n            var rotationY = this.RotationY;\r\n            var rotationZ = this.RotationZ;\r\n            var radiansX = (rotationX || 0.0) * PI_OVER_180;\r\n            var radiansY = (rotationY || 0.0) * PI_OVER_180;\r\n            var radiansZ = (rotationZ || 0.0) * PI_OVER_180;\r\n            var globalOffsetX = this.GlobalOffsetX;\r\n            var globalOffsetY = this.GlobalOffsetY;\r\n            var globalOffsetZ = this.GlobalOffsetZ;\r\n            var globalX = globalOffsetX || 0.0;\r\n            var globalY = globalOffsetY || 0.0;\r\n            var globalZ = globalOffsetZ || 0.0;\r\n            var localOffsetX = this.LocalOffsetX;\r\n            var localOffsetY = this.LocalOffsetY;\r\n            var localOffsetZ = this.LocalOffsetZ;\r\n            var localX = localOffsetX || 0.0;\r\n            var localY = localOffsetY || 0.0;\r\n            var localZ = localOffsetZ || 0.0;\r\n\r\n            var ow = this.ObjectWidth;\r\n            var oh = this.ObjectHeight;\r\n\r\n            var height = 2.0 * CAMERA_DIST * Math.tan(FIELD_OF_VIEW / 2.0);\r\n            var scale = height / oh;\r\n\r\n            var toCenter = mat4.createTranslate(\r\n                -ow * this.CenterOfRotationX,\r\n                -oh * this.CenterOfRotationY,\r\n                -this.CenterOfRotationZ);\r\n            var invertY = mat4.createScale(1.0, -1.0, 1.0);\r\n            var localOffset = mat4.createTranslate(localX, -localY, localZ);\r\n            var rotateX = mat4.createRotateX(radiansX);\r\n            var rotateY = mat4.createRotateX(radiansY);\r\n            var rotateZ = mat4.createRotateX(radiansZ);\r\n            var toCamera = mat4.createTranslate(\r\n                ow * (this.CenterOfRotationX - 0.5) + globalX,\r\n                -oh * (this.CenterOfRotationY - 0.5) - globalY,\r\n                this.CenterOfRotationZ - CAMERA_DIST + globalZ);\r\n            var perspective = mat4.createPerspective(FIELD_OF_VIEW, ow / oh, NEAR_VAL, FAR_VAL);\r\n            var zoom = mat4.createScale(scale, scale, 1.0);\r\n            var viewport = mat4.createViewport(ow, oh);\r\n\r\n            var m = mat4.multiply(toCenter, invertY);\r\n            mat4.multiply(m, localOffset, m);\r\n            mat4.multiply(m, rotateX, m);\r\n            mat4.multiply(m, rotateY, m);\r\n            mat4.multiply(m, rotateZ, m);\r\n            mat4.multiply(m, toCamera, m);\r\n            mat4.multiply(m, perspective, m);\r\n            mat4.multiply(m, zoom, m);\r\n            mat4.multiply(m, viewport, m);\r\n\r\n            var r = new Matrix3D();\r\n            r._Raw = m;\r\n            return r;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PlaneProjection);\r\n}"
  },
  {
    "path": "src/Media/Projection.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class Projection extends DependencyObject implements minerva.IProjection {\r\n        private _ProjectionMatrix: Matrix3D = null;\r\n        private _ObjectWidth: number = 0;\r\n        get ObjectWidth (): number {\r\n            return this._ObjectWidth;\r\n        }\r\n\r\n        private _ObjectHeight: number = 0;\r\n        get ObjectHeight (): number {\r\n            return this._ObjectHeight;\r\n        }\r\n\r\n        setObjectSize (objectWidth: number, objectHeight: number) {\r\n            var w = Math.max(objectWidth, 1.0);\r\n            var h = Math.max(objectHeight, 1.0);\r\n            if (w !== this._ObjectWidth && h !== this._ObjectHeight) {\r\n                this._ObjectWidth = w;\r\n                this._ObjectHeight = h;\r\n                this._ProjectionMatrix = null;\r\n            }\r\n        }\r\n\r\n        getDistanceFromXYPlane (): number {\r\n            return NaN;\r\n        }\r\n\r\n        getTransform (): number[] {\r\n            var m3 = this._ProjectionMatrix;\r\n            if (!m3)\r\n                m3 = this._ProjectionMatrix = this.CreateProjectionMatrix();\r\n            if (m3)\r\n                return mat4.create(m3._Raw);\r\n            return mat4.identity();\r\n        }\r\n\r\n        CreateProjectionMatrix (): Matrix3D {\r\n            return null;\r\n        }\r\n\r\n        InvalidateProjection () {\r\n            this._ProjectionMatrix = null;\r\n            Incite(this);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Projection);\r\n}"
  },
  {
    "path": "src/Media/RadialGradient/Extender.ts",
    "content": "module Fayde.Media.RadialGradient {\r\n    export interface IExtender {\r\n        x0: number;\r\n        y0: number;\r\n        r0: number;\r\n        x1: number;\r\n        y1: number;\r\n        r1: number;\r\n        step(): boolean;\r\n        createGradient(ctx: CanvasRenderingContext2D): CanvasGradient;\r\n    }\r\n    export interface IRadialPointData {\r\n        x0: number;\r\n        y0: number;\r\n        x1: number;\r\n        y1: number;\r\n        r1: number;\r\n        sx: number;\r\n        sy: number;\r\n        side: number;\r\n        balanced: boolean;\r\n    }\r\n    export function createExtender (data: IRadialPointData, bounds: minerva.Rect): IExtender {\r\n        var started = false;\r\n        var dx = data.x1 - data.x0;\r\n        var dy = data.y1 - data.y0;\r\n        var rstep = data.r1;\r\n        var reached = false;\r\n\r\n        var ext = {\r\n            x0: data.x0,\r\n            y0: data.y0,\r\n            r0: 0,\r\n            x1: data.x1,\r\n            y1: data.y1,\r\n            r1: data.r1,\r\n            step (): boolean {\r\n                if (!started) {\r\n                    started = true;\r\n                    return true;\r\n                }\r\n\r\n                ext.x0 = ext.x1;\r\n                ext.y0 = ext.y1;\r\n                ext.r0 += rstep;\r\n                ext.r1 += rstep;\r\n                ext.x1 += dx;\r\n                ext.y1 += dy;\r\n\r\n                if (reached)\r\n                    return false;\r\n                reached = exceedBounds(ext.x1, ext.y1, ext.r1, bounds);\r\n                return true;\r\n            },\r\n            createGradient (ctx: CanvasRenderingContext2D): CanvasGradient {\r\n                return ctx.createRadialGradient(ext.x0, ext.y0, ext.r0, ext.x1, ext.y1, ext.r1);\r\n            }\r\n        };\r\n        return ext;\r\n    }\r\n\r\n    function exceedBounds(cx: number, cy: number, radius: number, bounds: minerva.Rect) {\r\n        var ne = len(cx, cy, bounds.x, bounds.y);\r\n        var nw = len(cx, cy, bounds.x + bounds.width, bounds.y);\r\n        var sw = len(cx, cy, bounds.x + bounds.width, bounds.y + bounds.height);\r\n        var se = len(cx, cy, bounds.x, bounds.y + bounds.height);\r\n        return Math.max(ne, nw, sw, se) < radius;\r\n    }\r\n\r\n    function len (x1: number, y1: number, x2: number, y2: number): number {\r\n        var dx = x2 - x1;\r\n        var dy = y2 - y1;\r\n        return Math.sqrt((dx * dx) + (dy * dy));\r\n    }\r\n}"
  },
  {
    "path": "src/Media/RadialGradientBrush.ts",
    "content": "/// <reference path=\"GradientBrush.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    var tmpCanvas: HTMLCanvasElement = document.createElement('canvas');\r\n    var tmpCtx: CanvasRenderingContext2D = <CanvasRenderingContext2D>tmpCanvas.getContext('2d');\r\n    var epsilon = 1E-10;\r\n\r\n    export class RadialGradientBrush extends GradientBrush {\r\n        static CenterProperty = DependencyProperty.RegisterCore(\"Center\", () => Point, RadialGradientBrush, undefined, (d: RadialGradientBrush, args) => d.InvalidateBrush());\r\n        static GradientOriginProperty = DependencyProperty.RegisterCore(\"GradientOrigin\", () => Point, RadialGradientBrush, undefined, (d: RadialGradientBrush, args) => d.InvalidateBrush());\r\n        static RadiusXProperty = DependencyProperty.RegisterCore(\"RadiusX\", () => Number, RadialGradientBrush, 0.5, (d: RadialGradientBrush, args) => d.InvalidateBrush());\r\n        static RadiusYProperty = DependencyProperty.RegisterCore(\"RadiusY\", () => Number, RadialGradientBrush, 0.5, (d: RadialGradientBrush, args) => d.InvalidateBrush());\r\n        Center: Point; //undefined should be treated as 0.5,0.5\r\n        GradientOrigin: Point; //undefined should be treated as 0.5,0.5\r\n        RadiusX: number;\r\n        RadiusY: number;\r\n\r\n        CreatePad (ctx: CanvasRenderingContext2D, bounds: minerva.Rect): any {\r\n            var data = this._GetPointData(bounds);\r\n            var grd = (!data.balanced ? tmpCtx : ctx).createRadialGradient(data.x0, data.y0, 0, data.x1, data.y1, data.r1);\r\n            for (var en = this.GradientStops.getEnumerator(); en.moveNext();) {\r\n                var stop: GradientStop = en.current;\r\n                this.AddColorStop(grd, stop.Offset, stop.Color);\r\n            }\r\n            return this.FitPattern(ctx, grd, data, bounds);\r\n        }\r\n\r\n        CreateRepeat (ctx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            var data = this._GetPointData(bounds);\r\n            return this.CreateInterpolated(data, bounds, false);\r\n        }\r\n\r\n        CreateReflect (ctx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            var data = this._GetPointData(bounds);\r\n            return this.CreateInterpolated(data, bounds, true);\r\n        }\r\n\r\n        private CreateInterpolated (data: RadialGradient.IRadialPointData, bounds: minerva.Rect, reflect: boolean): CanvasPattern {\r\n            tmpCanvas.width = bounds.width;\r\n            tmpCanvas.height = bounds.height;\r\n            tmpCtx.save();\r\n            if (!data.balanced)\r\n                tmpCtx.scale(data.sx, data.sy);\r\n            tmpCtx.globalCompositeOperation = \"destination-over\";\r\n\r\n            var inverted = false;\r\n            var allStops = this.GradientStops.getPaddedEnumerable();\r\n            for (var extender = RadialGradient.createExtender(data, bounds); extender.step(); inverted = !inverted) {\r\n                var grd = extender.createGradient(tmpCtx);\r\n                for (var en = allStops.getEnumerator(); en.moveNext();) {\r\n                    var offset = en.current.Offset;\r\n                    if (reflect && inverted)\r\n                        offset = 1 - offset;\r\n                    this.AddColorStop(grd, offset, en.current.Color);\r\n                }\r\n                tmpCtx.fillStyle = grd;\r\n                tmpCtx.beginPath();\r\n                tmpCtx.arc(extender.x1, extender.y1, extender.r1, 0, 2 * Math.PI, false);\r\n                tmpCtx.closePath();\r\n                tmpCtx.fill();\r\n            }\r\n\r\n            var pattern = tmpCtx.createPattern(tmpCanvas, \"no-repeat\");\r\n            tmpCtx.restore();\r\n            return pattern;\r\n        }\r\n\r\n        private FitPattern (ctx: CanvasRenderingContext2D, fill: CanvasGradient | CanvasPattern, data: RadialGradient.IRadialPointData, bounds: minerva.Rect): CanvasPattern {\r\n            //NOTE:\r\n            //  This will return the CanvasGradient if bounds are square\r\n            //  Otherwise, it will create a CanvasPattern by scaling square coordinate space into bounds\r\n            if (data.balanced)\r\n                return fill;\r\n\r\n            tmpCanvas.width = bounds.width;\r\n            tmpCanvas.height = bounds.height;\r\n\r\n            tmpCtx.save();\r\n            tmpCtx.scale(data.sx, data.sy);\r\n            tmpCtx.fillStyle = fill;\r\n            tmpCtx.fillRect(0, 0, data.side, data.side);\r\n            var pattern = ctx.createPattern(tmpCanvas, \"no-repeat\");\r\n            tmpCtx.restore();\r\n            return pattern;\r\n        }\r\n\r\n        private _GetPointData (bounds: minerva.Rect): RadialGradient.IRadialPointData {\r\n            //NOTE:\r\n            //  This function will translate relative coordinates to absolute coordinates\r\n            //  It will then map non-square metrics into square coordinate space\r\n            var center = this.Center;\r\n            center = !center ? new Point(0.5, 0.5) : center.Clone();\r\n            var origin = this.GradientOrigin;\r\n            origin = !origin ? new Point(0.5, 0.5) : origin.Clone();\r\n            var rx = this.RadiusX;\r\n            if (rx == null)\r\n                rx = 0.5;\r\n            var ry = this.RadiusY;\r\n            if (ry == null)\r\n                ry = 0.5;\r\n\r\n            if (this.MappingMode !== BrushMappingMode.Absolute) {\r\n                center.x *= bounds.width;\r\n                center.y *= bounds.height;\r\n                origin.x *= bounds.width;\r\n                origin.y *= bounds.height;\r\n                rx *= bounds.width;\r\n                ry *= bounds.height;\r\n            }\r\n\r\n            center.x += bounds.x;\r\n            center.y += bounds.y;\r\n            origin.x += bounds.x;\r\n            origin.y += bounds.y;\r\n\r\n            var rad = Math.max(rx, ry);\r\n            var side = Math.max(bounds.width, bounds.height),\r\n                sx = bounds.width / side,\r\n                sy = bounds.height / side;\r\n            return {\r\n                x0: origin.x / sx,\r\n                y0: origin.y / sy,\r\n                x1: center.x / sx,\r\n                y1: center.y / sy,\r\n                r1: rad,\r\n                side: side,\r\n                sx: bounds.width / side,\r\n                sy: bounds.height / side,\r\n                balanced: Math.abs(rx - ry) < epsilon\r\n            };\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RadialGradientBrush);\r\n}\r\n"
  },
  {
    "path": "src/Media/RectangleGeometry.ts",
    "content": "/// <reference path=\"Geometry.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class RectangleGeometry extends Geometry {\r\n        static RectProperty = DependencyProperty.RegisterCore(\"Rect\", () => Rect, RectangleGeometry, undefined, (d: RectangleGeometry, args) => d.InvalidateGeometry());\r\n        static RadiusXProperty = DependencyProperty.RegisterCore(\"RadiusX\", () => Number, RectangleGeometry, 0, (d: RectangleGeometry, args) => d.InvalidateGeometry());\r\n        static RadiusYProperty = DependencyProperty.RegisterCore(\"RadiusY\", () => Number, RectangleGeometry, 0, (d: RectangleGeometry, args) => d.InvalidateGeometry());\r\n        Rect: minerva.Rect;\r\n        RadiusX: number;\r\n        RadiusY: number;\r\n\r\n        _Build (): minerva.path.Path {\r\n            var irect = this.Rect;\r\n            if (!irect)\r\n                return null;\r\n\r\n            var radiusX = this.RadiusX;\r\n            var radiusY = this.RadiusY;\r\n\r\n            var p = new minerva.path.Path();\r\n            p.roundedRect(irect.x, irect.y, irect.width, irect.height, radiusX, radiusY);\r\n            return p;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RectangleGeometry);\r\n}"
  },
  {
    "path": "src/Media/SolidColorBrush.ts",
    "content": "/// <reference path=\"Brush.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class SolidColorBrush extends Brush {\r\n        static ColorProperty = DependencyProperty.Register(\"Color\", () => Color, SolidColorBrush, undefined, (d, args) => (<Brush>d).InvalidateBrush());\r\n        Color: Color;\r\n\r\n        constructor(...args: any[]) {\r\n            super();\r\n            if (args && args.length === 1 && args[0] instanceof Color)\r\n                this.Color = args[0];\r\n        }\r\n\r\n        isTransparent(): boolean {\r\n            var color = this.Color;\r\n            return !color || (color.A <= 0);\r\n        }\r\n\r\n        static FromColor(color: Color): SolidColorBrush {\r\n            var scb = new SolidColorBrush();\r\n            scb.Color = color;\r\n            return scb;\r\n        }\r\n\r\n        setupBrush (ctx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            if ((<any>this)._CachedBrush)\r\n                return;\r\n            (<any>this)._CachedBrush = this.CreateBrush(ctx, bounds);\r\n        }\r\n\r\n        CreateBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect): any {\r\n            var color = this.Color;\r\n            if (!color)\r\n                return \"#000000\";\r\n            return color.toString();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SolidColorBrush);\r\n\r\n    function brushConverter(val: any): Brush {\r\n        if (!val || val instanceof Brush)\r\n            return val;\r\n        var scb = new SolidColorBrush();\r\n        scb.Color = nullstone.convertAnyToType(val, Color);\r\n        return scb;\r\n    }\r\n\r\n    nullstone.registerTypeConverter(Brush, brushConverter);\r\n    nullstone.registerTypeConverter(SolidColorBrush, brushConverter);\r\n}"
  },
  {
    "path": "src/Media/TextOptions.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class TextOptions {\r\n        static TextHintingModeProperty: DependencyProperty = DependencyProperty.RegisterAttached(\"TextHintingMode\", () => new Enum(TextHintingMode), TextOptions);\r\n        static GetTextHintingMode(d: DependencyObject): TextHintingMode { return d.GetValue(TextOptions.TextHintingModeProperty); }\r\n        static SetTextHintingMode(d: DependencyObject, value: TextHintingMode) { d.SetValue(TextOptions.TextHintingModeProperty, value); }\r\n    }\r\n    Fayde.CoreLibrary.add(TextOptions);\r\n}"
  },
  {
    "path": "src/Media/TileBrush.ts",
    "content": "/// <reference path=\"Brush.ts\" />\r\n/// <reference path=\"Enums.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    function computeImageMatrix(width: number, height: number, sw: number, sh: number, stretch: Stretch, alignX: AlignmentX, alignY: AlignmentY): number[] {\r\n        var sx = width / sw;\r\n        var sy = height / sh;\r\n        if (width === 0)\r\n            sx = 1.0;\r\n        if (height === 0)\r\n            sy = 1.0;\r\n\r\n        if (stretch === Stretch.Fill) {\r\n            return mat3.createScale(sx, sy);\r\n        }\r\n\r\n        var scale = 1.0;\r\n        var dx = 0.0;\r\n        var dy = 0.0;\r\n        switch (stretch) {\r\n            case Stretch.Uniform:\r\n                scale = sx < sy ? sx : sy;\r\n                break;\r\n            case Stretch.UniformToFill:\r\n                scale = sx < sy ? sy : sx;\r\n                break;\r\n            case Stretch.None:\r\n                break;\r\n        }\r\n\r\n        switch (alignX) {\r\n            case AlignmentX.Left:\r\n                dx = 0.0;\r\n                break;\r\n            case AlignmentX.Center:\r\n                dx = (width - (scale * sw)) / 2;\r\n                break;\r\n            case AlignmentX.Right:\r\n            default:\r\n                dx = width - (scale * sw);\r\n                break;\r\n        }\r\n\r\n        switch (alignY) {\r\n            case AlignmentY.Top:\r\n                dy = 0.0;\r\n                break;\r\n            case AlignmentY.Center:\r\n                dy = (height - (scale * sh)) / 2;\r\n                break;\r\n            case AlignmentY.Bottom:\r\n            default:\r\n                dy = height - (scale * sh);\r\n                break;\r\n        }\r\n        var m = mat3.createScale(scale, scale);\r\n        mat3.translate(m, dx, dy);\r\n        return m;\r\n    }\r\n\r\n    export class TileBrush extends Brush {\r\n        static AlignmentXProperty = DependencyProperty.RegisterCore(\"AlignmentX\", () => new Enum(AlignmentX), TileBrush, AlignmentX.Center, (d: TileBrush, args) => d.InvalidateBrush());\r\n        static AlignmentYProperty = DependencyProperty.RegisterCore(\"AlignmentY\", () => new Enum(AlignmentY), TileBrush, AlignmentY.Center, (d: TileBrush, args) => d.InvalidateBrush());\r\n        static StretchProperty = DependencyProperty.RegisterCore(\"Stretch\", () => new Enum(Stretch), TileBrush, Stretch.Fill, (d: TileBrush, args) => d.InvalidateBrush());\r\n        AlignmentX: AlignmentX;\r\n        AlignmentY: AlignmentY;\r\n        Stretch: Stretch;\r\n\r\n        CreateBrush(ctx: CanvasRenderingContext2D, bounds: minerva.Rect) {\r\n            var imgExtents = this.GetTileExtents();\r\n\r\n            var tmpCanvas = <HTMLCanvasElement>document.createElement(\"canvas\");\r\n            tmpCanvas.width = bounds.width;\r\n            tmpCanvas.height = bounds.height;\r\n\r\n            var tmpCtx = <CanvasRenderingContext2D>tmpCanvas.getContext(\"2d\");\r\n\r\n            var mat = computeImageMatrix(bounds.width, bounds.height,\r\n                imgExtents.width, imgExtents.height, this.Stretch, this.AlignmentX, this.AlignmentY);\r\n            tmpCtx.setTransform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]);\r\n\r\n            this.DrawTile(tmpCtx, bounds);\r\n\r\n            return ctx.createPattern(tmpCanvas, \"no-repeat\");\r\n        }\r\n        GetTileExtents(): minerva.Rect { return undefined; }\r\n        DrawTile(canvasCtx: CanvasRenderingContext2D, bounds: minerva.Rect) { }\r\n    }\r\n    Fayde.CoreLibrary.add(TileBrush);\r\n}"
  },
  {
    "path": "src/Media/Transform.ts",
    "content": "/// <reference path=\"GeneralTransform.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class Transform extends GeneralTransform implements minerva.ITransform {\r\n        private _Value: Matrix;\r\n\r\n        constructor () {\r\n            super();\r\n            XamlNode.SetShareable(this.XamlNode);\r\n        }\r\n\r\n        get Value (): Matrix {\r\n            var val = this._Value;\r\n            if (!val) {\r\n                this._Value = val = new Matrix();\r\n                val._Raw = this._BuildValue();\r\n            }\r\n            return val;\r\n        }\r\n\r\n        getRaw (): number[] {\r\n            return this.Value._Raw;\r\n        }\r\n\r\n        get Inverse (): Transform {\r\n            var inverse = this.Value.Inverse;\r\n            if (!inverse)\r\n                return null;\r\n            var mt = new MatrixTransform();\r\n            mt.Matrix = inverse;\r\n            return mt;\r\n        }\r\n\r\n        Transform (p: minerva.IPoint): Point {\r\n            var val = this.Value;\r\n            var v: number[];\r\n            if (!val || !(v = val._Raw))\r\n                return new Point(p.x, p.y);\r\n            v = mat3.transformVec2(v, vec2.create(p.x, p.y));\r\n            return new Point(v[0], v[1]);\r\n        }\r\n\r\n        TransformBounds (r: minerva.Rect): minerva.Rect {\r\n            if (!r)\r\n                return undefined;\r\n            var v = this.Value;\r\n            var copy = new minerva.Rect();\r\n            minerva.Rect.copyTo(r, copy);\r\n            if (!v || !v._Raw)\r\n                return copy;\r\n            return minerva.Rect.transform(copy, v._Raw);\r\n        }\r\n\r\n        TryTransform (inPoint: minerva.IPoint, outPoint: minerva.IPoint): boolean {\r\n            return false;\r\n        }\r\n\r\n        InvalidateValue () {\r\n            if (this._Value !== undefined)\r\n                this._Value = undefined;\r\n            Incite(this);\r\n        }\r\n\r\n        _BuildValue (): number[] {\r\n            //Abstract Method\r\n            return undefined;\r\n        }\r\n\r\n        static copyMatTo (t: Transform, mat: number[]) {\r\n            mat3.copyTo(t.Value._Raw, mat);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Transform);\r\n\r\n    export class MatrixTransform extends Transform {\r\n        static MatrixProperty = DependencyProperty.RegisterFull(\"Matrix\", () => Matrix, MatrixTransform);\r\n        Matrix: Matrix;\r\n\r\n        _BuildValue (): number[] {\r\n            var m = this.Matrix;\r\n            if (m)\r\n                return m._Raw;\r\n            return mat3.identity();\r\n        }\r\n\r\n        Clone (): MatrixTransform {\r\n            var xform = new MatrixTransform();\r\n            xform.Matrix = this.Matrix.Clone();\r\n            return xform;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(MatrixTransform);\r\n\r\n    module reactions {\r\n        DPReaction<Matrix>(MatrixTransform.MatrixProperty, (mt: MatrixTransform, ov, nv) => mt.InvalidateValue());\r\n    }\r\n}"
  },
  {
    "path": "src/Media/Transforms.ts",
    "content": "/// <reference path=\"Transform.ts\" />\r\n/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Media {\r\n    export class RotateTransform extends Transform {\r\n        static AngleProperty = DependencyProperty.Register(\"Angle\", () => Number, RotateTransform, 0, (d: RotateTransform, args) => d.InvalidateValue());\r\n        static CenterXProperty = DependencyProperty.Register(\"CenterX\", () => Number, RotateTransform, 0, (d: RotateTransform, args) => d.InvalidateValue());\r\n        static CenterYProperty = DependencyProperty.Register(\"CenterY\", () => Number, RotateTransform, 0, (d: RotateTransform, args) => d.InvalidateValue());\r\n        Angle: number;\r\n        CenterX: number;\r\n        CenterY: number;\r\n\r\n        _BuildValue (): number[] {\r\n            var cx = this.CenterX;\r\n            var cy = this.CenterY;\r\n            var angle = this.Angle; //Silverlight rotates clockwise\r\n            var angleRad = Math.PI / 180 * angle;\r\n            var m = mat3.createRotate(angleRad);\r\n            if (cx === 0 && cy === 0)\r\n                return m;\r\n\r\n            //move center {x,y} to {0,0}, rotate, then slide {0,0} back to {x,y}\r\n            mat3.multiply(mat3.createTranslate(-cx, -cy), m, m); //m = translation * m\r\n            mat3.translate(m, cx, cy);\r\n            return m;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RotateTransform);\r\n\r\n    export class ScaleTransform extends Transform {\r\n        static CenterXProperty = DependencyProperty.Register(\"CenterX\", () => Number, ScaleTransform, 0, (d: ScaleTransform, args) => d.InvalidateValue());\r\n        static CenterYProperty = DependencyProperty.Register(\"CenterY\", () => Number, ScaleTransform, 0, (d: ScaleTransform, args) => d.InvalidateValue());\r\n        static ScaleXProperty = DependencyProperty.Register(\"ScaleX\", () => Number, ScaleTransform, 1.0, (d: ScaleTransform, args) => d.InvalidateValue());\r\n        static ScaleYProperty = DependencyProperty.Register(\"ScaleY\", () => Number, ScaleTransform, 1.0, (d: ScaleTransform, args) => d.InvalidateValue());\r\n        CenterX: number;\r\n        CenterY: number;\r\n        ScaleX: number;\r\n        ScaleY: number;\r\n\r\n        _BuildValue (): number[] {\r\n            var cx = this.CenterX;\r\n            var cy = this.CenterY;\r\n            var m = mat3.createScale(this.ScaleX, this.ScaleY);\r\n            if (cx === 0 && cy === 0)\r\n                return m;\r\n\r\n            //move center {x,y} to {0,0}, scale, then slide {0,0} back to {x,y}\r\n            mat3.multiply(mat3.createTranslate(-cx, -cy), m, m); //m = translation * m\r\n            mat3.translate(m, cx, cy);\r\n            return m;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(ScaleTransform);\r\n\r\n    export class SkewTransform extends Transform {\r\n        static AngleXProperty = DependencyProperty.Register(\"AngleX\", () => Number, SkewTransform, 0, (d: SkewTransform, args) => d.InvalidateValue());\r\n        static AngleYProperty = DependencyProperty.Register(\"AngleY\", () => Number, SkewTransform, 0, (d: SkewTransform, args) => d.InvalidateValue());\r\n        static CenterXProperty = DependencyProperty.Register(\"CenterX\", () => Number, SkewTransform, 0, (d: SkewTransform, args) => d.InvalidateValue());\r\n        static CenterYProperty = DependencyProperty.Register(\"CenterY\", () => Number, SkewTransform, 0, (d: SkewTransform, args) => d.InvalidateValue());\r\n        AngleX: number;\r\n        AngleY: number;\r\n        CenterX: number;\r\n        CenterY: number;\r\n\r\n        _BuildValue (): number[] {\r\n            var cx = this.CenterX;\r\n            var cy = this.CenterY;\r\n            var angleXRad = Math.PI / 180 * this.AngleX;\r\n            var angleYRad = Math.PI / 180 * this.AngleY;\r\n            var m = mat3.createSkew(angleXRad, angleYRad);\r\n            if (cx === 0 && cy === 0)\r\n                return m;\r\n\r\n            //move center {x,y} to {0,0}, skew, then slide {0,0} back to {x,y}\r\n            mat3.multiply(mat3.createTranslate(-cx, -cy), m, m); //m = translation * m\r\n            mat3.translate(m, cx, cy);\r\n            return m;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(SkewTransform);\r\n\r\n    export class TranslateTransform extends Transform {\r\n        static XProperty = DependencyProperty.Register(\"X\", () => Number, TranslateTransform, 0, (d: TranslateTransform, args) => d.InvalidateValue());\r\n        static YProperty = DependencyProperty.Register(\"Y\", () => Number, TranslateTransform, 0, (d: TranslateTransform, args) => d.InvalidateValue());\r\n        X: number;\r\n        Y: number;\r\n\r\n        _BuildValue (): number[] {\r\n            return mat3.createTranslate(this.X, this.Y);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TranslateTransform);\r\n\r\n    export class TransformCollection extends XamlObjectCollection<Transform> {\r\n        AddingToCollection (value: Transform, error: BError): boolean {\r\n            if (!super.AddingToCollection(value, error))\r\n                return false;\r\n            ReactTo(value, this, () => Incite(this));\r\n            Incite(this);\r\n            return true;\r\n        }\r\n\r\n        RemovedFromCollection (value: Transform, isValueSafe: boolean) {\r\n            if (!super.RemovedFromCollection(value, isValueSafe))\r\n                return false;\r\n            UnreactTo(value, this);\r\n            Incite(this);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TransformCollection);\r\n\r\n    export class TransformGroup extends Transform {\r\n        static ChildrenProperty = DependencyProperty.RegisterImmutable<TransformCollection>(\"Children\", () => TransformCollection, TransformGroup);\r\n        Children: TransformCollection;\r\n\r\n        constructor () {\r\n            super();\r\n            var coll = TransformGroup.ChildrenProperty.Initialize(this);\r\n            coll.AttachTo(this);\r\n            ReactTo(coll, this, () => this.InvalidateValue());\r\n        }\r\n\r\n        _BuildValue (): number[] {\r\n            var enumerator = this.Children.getEnumerator();\r\n            var cur = mat3.identity();\r\n            while (enumerator.moveNext()) {\r\n                if (cur && (<Transform>enumerator.current).Value._Raw)\r\n                    mat3.multiply(cur, (<Transform>enumerator.current).Value._Raw, cur); //cur = cur * child\r\n            }\r\n            return cur;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(TransformGroup);\r\n    Markup.Content(TransformGroup, TransformGroup.ChildrenProperty);\r\n}\r\n"
  },
  {
    "path": "src/Media/VSM/VisualState.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Media.VSM {\r\n    export class VisualState extends DependencyObject {\r\n        static StoryboardProperty = DependencyProperty.Register(\"Storyboard\", () => Animation.Storyboard, VisualState);\r\n        Storyboard: Animation.Storyboard;\r\n    }\r\n    Fayde.CoreLibrary.add(VisualState);\r\n    Markup.Content(VisualState, VisualState.StoryboardProperty);\r\n\r\n    export class VisualStateCollection extends XamlObjectCollection<VisualState> {\r\n    }\r\n    Fayde.CoreLibrary.add(VisualStateCollection);\r\n}"
  },
  {
    "path": "src/Media/VSM/VisualStateGroup.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\" />\r\n/// <reference path=\"../../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Media.VSM {\r\n    export class VisualStateChangedEventArgs implements nullstone.IEventArgs {\r\n        OldState: VisualState;\r\n        NewState: VisualState;\r\n        Control: Controls.Control;\r\n        constructor(oldState: VisualState, newState: VisualState, control: Controls.Control) {\r\n            Object.defineProperty(this, \"OldState\", { value: oldState, writable: false });\r\n            Object.defineProperty(this, \"NewState\", { value: newState, writable: false });\r\n            Object.defineProperty(this, \"Control\", { value: control, writable: false });\r\n        }\r\n    }\r\n\r\n    export class VisualStateGroup extends DependencyObject {\r\n        static StatesProperty = DependencyProperty.RegisterImmutable<VisualStateCollection>(\"States\", () => VisualStateCollection, VisualStateGroup);\r\n        States: VisualStateCollection;\r\n\r\n        static TransitionsProperty = DependencyProperty.RegisterImmutable<XamlObjectCollection<VisualTransition>>(\"Transitions\", () => XamlObjectCollection, VisualStateGroup);\r\n        Transitions: XamlObjectCollection<VisualTransition>;\r\n\r\n        private _CurrentStoryboards: Animation.Storyboard[] = [];\r\n        get CurrentStoryboards(): Animation.Storyboard[] {\r\n            return this._CurrentStoryboards.slice(0);\r\n        }\r\n        CurrentStateChanging = new nullstone.Event<VisualStateChangedEventArgs>();\r\n        CurrentStateChanged = new nullstone.Event<VisualStateChangedEventArgs>();\r\n        CurrentState: VisualState = null;\r\n\r\n        constructor() {\r\n            super();\r\n            VisualStateGroup.StatesProperty.Initialize(this);\r\n            VisualStateGroup.TransitionsProperty.Initialize(this);\r\n        }\r\n\r\n        GetState(stateName: string): VisualState {\r\n            var enumerator = this.States.getEnumerator();\r\n            var state: VisualState;\r\n            while (enumerator.moveNext()) {\r\n                state = enumerator.current;\r\n                if (state.Name === stateName)\r\n                    return state;\r\n            }\r\n            return null;\r\n        }\r\n\r\n        StartNewThenStopOld(element: FrameworkElement, newStoryboards: Animation.Storyboard[]) {\r\n            var i: number;\r\n            var storyboard: Animation.Storyboard;\r\n            var res = element.Resources;\r\n            for (i = 0; i < newStoryboards.length; i++) {\r\n                storyboard = newStoryboards[i];\r\n                if (storyboard == null)\r\n                    continue;\r\n                res.Set((<any>storyboard)._ID, storyboard);\r\n                try {\r\n                    storyboard.Begin();\r\n                } catch (err) {\r\n                    //clear storyboards on error\r\n                    for (var j = 0; j <= i; j++) {\r\n                        if (newStoryboards[j] != null)\r\n                            res.Set((<any>newStoryboards[j])._ID, undefined);\r\n                    }\r\n                    console.warn(err);\r\n                }\r\n            }\r\n\r\n            this.StopCurrentStoryboards(element);\r\n\r\n            var curStoryboards = this._CurrentStoryboards;\r\n            for (i = 0; i < newStoryboards.length; i++) {\r\n                if (newStoryboards[i] == null)\r\n                    continue;\r\n                curStoryboards.push(newStoryboards[i]);\r\n            }\r\n        }\r\n        StopCurrentStoryboards(element: FrameworkElement) {\r\n            var curStoryboards = this._CurrentStoryboards;\r\n            var storyboard: Animation.Storyboard;\r\n            for (var en = nullstone.IEnumerator_.fromArray(curStoryboards); en.moveNext();) {\r\n                storyboard = en.current;\r\n                if (!storyboard)\r\n                    continue;\r\n                element.Resources.Set((<any>storyboard)._ID, undefined);\r\n                storyboard.Stop();\r\n            }\r\n            this._CurrentStoryboards = [];\r\n        }\r\n\r\n        Deactivate () {\r\n            for (var en = nullstone.IEnumerator_.fromArray(this._CurrentStoryboards); en.moveNext();) {\r\n                en.current && en.current.Pause();\r\n            }\r\n        }\r\n\r\n        Activate () {\r\n            for (var en = nullstone.IEnumerator_.fromArray(this._CurrentStoryboards); en.moveNext();) {\r\n                en.current && en.current.Resume();\r\n            }\r\n        }\r\n\r\n        RaiseCurrentStateChanging(element: FrameworkElement, oldState: VisualState, newState: VisualState, control: Controls.Control) {\r\n            this.CurrentStateChanging.raise(this, new VisualStateChangedEventArgs(oldState, newState, control));\r\n        }\r\n        RaiseCurrentStateChanged(element: FrameworkElement, oldState: VisualState, newState: VisualState, control: Controls.Control) {\r\n            this.CurrentStateChanged.raise(this, new VisualStateChangedEventArgs(oldState, newState, control));\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(VisualStateGroup);\r\n    Markup.Content(VisualStateGroup, VisualStateGroup.StatesProperty);\r\n\r\n    export class VisualStateGroupCollection extends XamlObjectCollection<VisualStateGroup> {\r\n    }\r\n    Fayde.CoreLibrary.add(VisualStateGroupCollection);\r\n}"
  },
  {
    "path": "src/Media/VSM/VisualStateManager.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Media.VSM {\r\n    export interface IOutValue {\r\n        Value: any;\r\n    }\r\n    export interface IStateData {\r\n        state: VisualState;\r\n        group: VisualStateGroup;\r\n    }\r\n\r\n    export class VisualStateManager extends DependencyObject {\r\n        static VisualStateGroupsProperty: DependencyProperty = DependencyProperty.RegisterAttachedCore(\"VisualStateGroups\", () => VisualStateGroupCollection, VisualStateManager);\r\n        static GetVisualStateGroups(d: DependencyObject): VisualStateGroupCollection { return d.GetValue(VisualStateManager.VisualStateGroupsProperty); }\r\n        static SetVisualStateGroups(d: DependencyObject, value: VisualStateGroupCollection) { d.SetValue(VisualStateManager.VisualStateGroupsProperty, value); }\r\n\r\n        static CustomVisualStateManagerProperty: DependencyProperty = DependencyProperty.RegisterAttachedCore(\"CustomVisualStateManager\", () => VisualStateManager, VisualStateManager);\r\n        static GetCustomVisualStateManager(d: DependencyObject): VisualStateManager { return d.GetValue(VisualStateManager.CustomVisualStateManagerProperty); }\r\n        static SetCustomVisualStateManager(d: DependencyObject, value: VisualStateManager) { d.SetValue(VisualStateManager.CustomVisualStateManagerProperty, value); }\r\n\r\n        static GoToState(control: Controls.Control, stateName: string, useTransitions: boolean): boolean {\r\n            if (!control)\r\n                throw new ArgumentException(\"control\");\r\n            if (!stateName)\r\n                throw new ArgumentException(\"stateName\");\r\n\r\n            var root = VisualStateManager._GetTemplateRoot(control);\r\n            if (!root)\r\n                return false;\r\n\r\n            var groups = VisualStateManager.GetVisualStateGroups(root);\r\n            if (!groups)\r\n                return false;\r\n\r\n            var data: IStateData = { group: null, state: null };\r\n            if (!VisualStateManager._TryGetState(groups, stateName, data))\r\n                return false;\r\n\r\n            var customVsm = VisualStateManager.GetCustomVisualStateManager(root);\r\n            if (customVsm) {\r\n                return customVsm.GoToStateCore(control, root, stateName, data.group, data.state, useTransitions);\r\n            } else if (data.state != null) {\r\n                return VisualStateManager.GoToStateInternal(control, root, data.group, data.state, useTransitions);\r\n            }\r\n\r\n            return false;\r\n        }\r\n        GoToStateCore(control: Controls.Control, element: FrameworkElement, stateName: string, group: VisualStateGroup, state: VisualState, useTransitions: boolean): boolean {\r\n            return VisualStateManager.GoToStateInternal(control, element, group, state, useTransitions);\r\n        }\r\n        private static GoToStateInternal(control: Controls.Control, element: FrameworkElement, group: VisualStateGroup, state: VisualState, useTransitions: boolean): boolean {\r\n            var lastState = group.CurrentState;\r\n            if (lastState === state)\r\n                return true;\r\n\r\n            if (VSM.Debug && window.console) {\r\n                console.log(\"VSM:GoToState:[\" + (<any>control)._ID + \"]\" + (lastState ? lastState.Name : \"()\") + \"-->\" + state.Name);\r\n            }\r\n\r\n            var transition = useTransitions ? VisualStateManager._GetTransition(element, group, lastState, state) : null;\r\n            var storyboard: Animation.Storyboard;\r\n            if (transition == null || (transition.GeneratedDuration.IsZero && ((storyboard = transition.Storyboard) == null || storyboard.Duration.IsZero))) {\r\n                if (transition != null && storyboard != null) {\r\n                    group.StartNewThenStopOld(element, [storyboard, state.Storyboard]);\r\n                } else {\r\n                    group.StartNewThenStopOld(element, [state.Storyboard]);\r\n                }\r\n                group.RaiseCurrentStateChanging(element, lastState, state, control);\r\n                group.RaiseCurrentStateChanged(element, lastState, state, control);\r\n            } else {\r\n                var dynamicTransition = genDynamicTransAnimations(element, group, state, transition);\r\n\r\n                transition.DynamicStoryboardCompleted = false;\r\n                var dynamicCompleted = function (sender, e) {\r\n                    if (transition.Storyboard == null || transition.ExplicitStoryboardCompleted === true) {\r\n                        group.StartNewThenStopOld(element, [state.Storyboard]);\r\n                        group.RaiseCurrentStateChanged(element, lastState, state, control);\r\n                    }\r\n                    transition.DynamicStoryboardCompleted = true;\r\n                };\r\n                var eventClosure = {};\r\n                dynamicTransition.Completed.on(dynamicCompleted, eventClosure);\r\n\r\n                if (transition.Storyboard != null && transition.ExplicitStoryboardCompleted === true) {\r\n                    var transitionCompleted = function (sender, e) {\r\n                        if (transition.DynamicStoryboardCompleted === true) {\r\n                            group.StartNewThenStopOld(element, [state.Storyboard]);\r\n                            group.RaiseCurrentStateChanged(element, lastState, state, control);\r\n                        }\r\n                        transition.Storyboard.Completed.off(transitionCompleted, eventClosure);\r\n                        transition.ExplicitStoryboardCompleted = true;\r\n                    };\r\n                    transition.ExplicitStoryboardCompleted = false;\r\n                    transition.Storyboard.Completed.on(transitionCompleted, eventClosure);\r\n                }\r\n                group.StartNewThenStopOld(element, [transition.Storyboard, dynamicTransition]);\r\n                group.RaiseCurrentStateChanging(element, lastState, state, control);\r\n            }\r\n\r\n            group.CurrentState = state;\r\n            return true;\r\n        }\r\n\r\n        static DestroyStoryboards(control: Controls.Control, root: FrameworkElement) {\r\n            if (!root)\r\n                return false;\r\n            var groups = VisualStateManager.GetVisualStateGroups(root);\r\n            if (!groups)\r\n                return false;\r\n            var enumerator = groups.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                (<VisualStateGroup>enumerator.current).StopCurrentStoryboards(root);\r\n            }\r\n        }\r\n\r\n        static Deactivate (control: Controls.Control, root: FrameworkElement) {\r\n            if (!root)\r\n                return false;\r\n            var groups = VisualStateManager.GetVisualStateGroups(root);\r\n            if (!groups)\r\n                return false;\r\n            for (var en = groups.getEnumerator(); en.moveNext();) {\r\n                en.current.Deactivate();\r\n            }\r\n        }\r\n\r\n        static Activate (control: Controls.Control, root: FrameworkElement) {\r\n            if (!root)\r\n                return false;\r\n            var groups = VisualStateManager.GetVisualStateGroups(root);\r\n            if (!groups)\r\n                return false;\r\n            for (var en = groups.getEnumerator(); en.moveNext();) {\r\n                en.current.Activate();\r\n            }\r\n        }\r\n\r\n        private static _GetTemplateRoot(control: Controls.Control): FrameworkElement {\r\n            if (control instanceof Controls.UserControl)\r\n                return (<Controls.UserControl>control).XamlNode.TemplateRoot;\r\n\r\n            var enumerator = control.XamlNode.GetVisualTreeEnumerator();\r\n            var node: FENode = null;\r\n            if (enumerator.moveNext()) {\r\n                node = enumerator.current;\r\n                if (!(node instanceof FENode))\r\n                    node = null;\r\n            }\r\n            return (node) ? node.XObject : null;\r\n        }\r\n        static GetGroup(control: Controls.Control, name: string): VisualStateGroup {\r\n            var root = VisualStateManager._GetTemplateRoot(control);\r\n            if (!root)\r\n                return null;\r\n            var groups = VisualStateManager.GetVisualStateGroups(root);\r\n            if (!groups)\r\n                return null;\r\n            var enumerator = groups.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                if (enumerator.current.Name === name)\r\n                    return enumerator.current;\r\n            }\r\n            return null;\r\n        }\r\n        private static _TryGetState(groups: VisualStateGroupCollection, stateName: string, data: IStateData): boolean {\r\n            var enumerator = groups.getEnumerator();\r\n            while (enumerator.moveNext()) {\r\n                data.group = enumerator.current;\r\n                data.state = data.group.GetState(stateName);\r\n                if (data.state)\r\n                    return true;\r\n            }\r\n            data.group = null;\r\n            data.state = null;\r\n            return false;\r\n        }\r\n\r\n        private static _GetTransition(element: FrameworkElement, group: VisualStateGroup, from: VisualState, to: VisualState): VisualTransition {\r\n            if (!element)\r\n                throw new ArgumentException(\"element\");\r\n            if (!group)\r\n                throw new ArgumentException(\"group\");\r\n            if (!to)\r\n                throw new ArgumentException(\"to\");\r\n\r\n            var best = null;\r\n            var defaultTransition = null;\r\n            var bestScore = -1;\r\n\r\n            var enumerator = group.Transitions.getEnumerator();\r\n            var transition: VisualTransition;\r\n            while (enumerator.moveNext()) {\r\n                transition = enumerator.current;\r\n                if (!defaultTransition && transition.IsDefault) {\r\n                    defaultTransition = transition;\r\n                    continue;\r\n                }\r\n                var score = -1;\r\n                var transFromState = group.GetState(transition.From);\r\n                var transToState = group.GetState(transition.To);\r\n                if (from === transFromState)\r\n                    score += 1;\r\n                else if (transFromState != null)\r\n                    continue;\r\n\r\n                if (to === transToState)\r\n                    score += 2;\r\n                else if (transToState != null)\r\n                    continue;\r\n\r\n                if (score > bestScore) {\r\n                    bestScore = score;\r\n                    best = transition;\r\n                }\r\n            }\r\n            if (best != null)\r\n                return best;\r\n            return defaultTransition;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(VisualStateManager);\r\n\r\n    import Timeline = Animation.Timeline;\r\n    import Storyboard = Animation.Storyboard;\r\n\r\n    function genDynamicTransAnimations(root: FrameworkElement, group: VisualStateGroup, state: VisualState, transition: VisualTransition): Animation.Storyboard {\r\n        var dynamic = new Animation.Storyboard();\r\n        if (transition != null) {\r\n            dynamic.Duration = transition.GeneratedDuration;\r\n        } else {\r\n            dynamic.Duration = new Duration(new TimeSpan());\r\n        }\r\n\r\n        var currentAnimations = flattenTimelines(group.CurrentStoryboards);\r\n        var transitionAnimations = flattenTimelines([transition != null ? transition.Storyboard : null]);\r\n        var newStateAnimations = flattenTimelines([state.Storyboard]);\r\n\r\n        // Remove any animations that the transition already animates.\r\n        // There is no need to create an interstitial animation if one already exists.\r\n        for (var i = 0, len = transitionAnimations.length; i < len; i++){\r\n            removeTuple(transitionAnimations[i], currentAnimations);\r\n            removeTuple(transitionAnimations[i], newStateAnimations);\r\n        }\r\n\r\n        var tuple: ITimelineTuple;\r\n        // Generate the \"to\" animations\r\n        for (var i = 0, len = newStateAnimations.length; i < len;i++){\r\n            // The new \"To\" Animation -- the root is passed as a reference point for name lookup.\r\n            tuple = newStateAnimations[i];\r\n            var toAnimation = genToAnimation(root, tuple.timeline, true);\r\n\r\n            // If the animation is of a type that we can't generate transition animations\r\n            // for, GenerateToAnimation will return null, and we should just keep going.\r\n            if (toAnimation != null) {\r\n                ensureTarget(root, tuple.timeline, toAnimation);\r\n                toAnimation.Duration = dynamic.Duration;\r\n                dynamic.Children.Add(toAnimation);\r\n            }\r\n\r\n            removeTuple(tuple, currentAnimations);\r\n        }\r\n\r\n        // Generate the \"from\" animations\r\n        for (var i = 0, len = currentAnimations.length; i < len;i++){\r\n            tuple = currentAnimations[i];\r\n            var fromAnimation = tuple.timeline.GenerateFrom();\r\n            if (fromAnimation != null) {\r\n                ensureTarget(root, tuple.timeline, fromAnimation);\r\n                fromAnimation.Duration = dynamic.Duration;\r\n\r\n                var propertyName = Animation.Storyboard.GetTargetProperty(tuple.timeline);\r\n                Animation.Storyboard.SetTargetProperty(fromAnimation, propertyName);\r\n                dynamic.Children.Add(fromAnimation);\r\n            }\r\n        }\r\n\r\n        return dynamic;\r\n    }\r\n    function ensureTarget(root: FrameworkElement, source: Timeline, dest: Timeline) {\r\n        if (source.ManualTarget != null) {\r\n            Storyboard.SetTarget(dest, source.ManualTarget);\r\n        } else {\r\n            var targetName = Storyboard.GetTargetName(source);\r\n            if (targetName)\r\n                Storyboard.SetTargetName(dest, targetName);\r\n        }\r\n    }\r\n    function genToAnimation(root: FrameworkElement, timeline: Timeline, isEntering: boolean) {\r\n        var result = timeline.GenerateTo(isEntering);\r\n        if (!result)\r\n            return null;\r\n\r\n        var targetName = Storyboard.GetTargetName(timeline);\r\n        Storyboard.SetTargetName(result, targetName);\r\n        if (targetName) {\r\n            var target = <DependencyObject>root.FindName(targetName);\r\n            if (target instanceof DependencyObject)\r\n                Storyboard.SetTarget(result, target);\r\n        }\r\n\r\n        Storyboard.SetTargetProperty(result, Storyboard.GetTargetProperty(timeline));\r\n        return result;\r\n    }\r\n\r\n    interface ITimelineTuple {\r\n        dobj: DependencyObject;\r\n        propd: DependencyProperty;\r\n        timeline: Timeline;\r\n    }\r\n    function flattenTimelines(storyboards: Storyboard[]): ITimelineTuple[]{\r\n        var tuples: ITimelineTuple[] = [];\r\n        for (var i = 0, len = storyboards.length; i < len; i++) {\r\n            flattenTimeline((tp) => tuples.push(tp), storyboards[i], null, null);\r\n        }\r\n        return tuples;\r\n    }\r\n    function flattenTimeline(callback: (tuple: ITimelineTuple) => void, timeline: Timeline, targetObject: DependencyObject, targetPropertyPath: Data.PropertyPath) {\r\n        if (!timeline)\r\n            return;\r\n        var resolution = Storyboard.ResolveTarget(timeline);\r\n        if (resolution.Target)\r\n            targetObject = resolution.Target;\r\n        if (resolution.Property)\r\n            targetPropertyPath = resolution.Property;\r\n\r\n        if (timeline instanceof Storyboard) {\r\n            for (var i = 0, children = (<Storyboard>timeline).Children, len = children.Count; i < len; i++) {\r\n                flattenTimeline(callback, children.GetValueAt(i), targetObject, targetPropertyPath);\r\n            }\r\n        } else {\r\n            if (targetPropertyPath && targetObject) {\r\n                // When resolving down to a DO and DP, we don't actually want to clone DOs like we do\r\n                // when starting a storyboard normally.\r\n                var oto: IOutValue = { Value: targetObject };\r\n                var propd = Data.PropertyPath.ResolvePropertyPath(oto, targetPropertyPath, []);\r\n\r\n                if (propd && oto.Value)\r\n                    callback({ dobj: oto.Value, propd: propd, timeline: timeline });\r\n            }\r\n        }\r\n    }\r\n    function removeTuple(tuple: ITimelineTuple, list: ITimelineTuple[]) {\r\n        for (var i = 0, len = list.length; i < len; i++) {\r\n            var l = list[i];\r\n            if (l.dobj === tuple.dobj && l.propd === tuple.propd)\r\n                return list.splice(i, 1);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Media/VSM/VisualTransition.ts",
    "content": "/// <reference path=\"../../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Media.VSM {\r\n    export class VisualTransition extends DependencyObject {\r\n        From: string = null;\r\n        To: string = null;\r\n\r\n        static StoryboardProperty = DependencyProperty.Register(\"Storyboard\", () => Animation.Storyboard, VisualTransition);\r\n        Storyboard: Animation.Storyboard;\r\n\r\n        private _GeneratedDuration: Duration = null;\r\n        get GeneratedDuration(): Duration { return this._GeneratedDuration; }\r\n        set GeneratedDuration(value: Duration) { this._GeneratedDuration = nullstone.convertAnyToType(value, Duration); }\r\n\r\n        DynamicStoryboardCompleted: boolean = true;\r\n        ExplicitStoryboardCompleted: boolean = true;\r\n        GeneratedEasingFunction: Animation.EasingFunctionBase;\r\n        get IsDefault(): boolean { return this.From == null && this.To == null; }\r\n    }\r\n    Markup.Content(VisualTransition, VisualTransition.StoryboardProperty);\r\n    Fayde.CoreLibrary.add(VisualTransition);\r\n}"
  },
  {
    "path": "src/Media/Videos/VideoSource.ts",
    "content": "﻿/// <reference path=\"VideoSourceBase.ts\"/>\n\nmodule Fayde.Media.Videos {\n    export class VideoSource extends VideoSourceBase {\n        static UriSourceProperty = DependencyProperty.RegisterFull(\"UriSource\", () => Uri, VideoSource, undefined, (bi: VideoSource, args) => bi._UriSourceChanged(args), undefined, true);\n        UriSource: Uri;\n        VideoFailed = new nullstone.Event();\n        VideoOpened = new nullstone.Event(); //TODO: Connect\n\n        constructor(uri?: Uri) {\n            super();\n            if (uri)\n                this.UriSource = uri;\n        }\n\n        private _UriSourceChanged(args: IDependencyPropertyChangedEventArgs) {\n            var uri: Uri = args.NewValue;\n            if (Uri.isNullOrEmpty(uri))\n                this.reset();\n            else\n                this.OnUriSourceChanged(args.OldValue, uri);\n        }\n\n        protected OnUriSourceChanged(oldValue: Uri, newValue: Uri) {\n            if (!this.$element || !newValue)\n                this.reset();\n            this.$element.src = TypeManager.resolveResource(newValue);\n            this.$element.load();\n            this.onVideoChanged();\n        }\n\n        protected onVideoErrored(e: ErrorEvent) {\n            super.onVideoErrored(e);\n            this.VideoFailed.raise(this, null);\n        }\n    }\n    Fayde.CoreLibrary.add(VideoSource);\n}"
  },
  {
    "path": "src/Media/Videos/VideoSourceBase.ts",
    "content": "﻿/// <reference path=\"../Imaging/ImageSource\" />\n\nmodule Fayde.Media.Videos {\n    import IVideoSource = minerva.controls.video.IVideoSource;\n\n    export interface IVideoSourceWatcher {\n        onErrored(source: VideoSourceBase, error: Error);\n        onCanPlay(source: VideoSourceBase);\n        onChanged(source: VideoSourceBase);\n    }\n\n    export class VideoSourceBase extends Imaging.ImageSource implements minerva.controls.video.IVideoSource {\n        protected $element: HTMLVideoElement;\n        private $watchers: IVideoSourceWatcher[] = [];\n        private $autoplay = true;\n\n        createElement(): HTMLVideoElement {\n            return document.createElement(\"video\");\n        }\n\n        reset() {\n            super.reset();\n            this.setAutoPlay(this.$autoplay);\n            this.$element.onerror = (e: ErrorEvent) => this.onVideoErrored(e);\n            this.$element.oncanplay = (e) => this.onVideoCanPlay();\n            this.onVideoChanged();\n        }\n\n        watch(watcher: IVideoSourceWatcher): nullstone.IDisposable {\n            var watchers = this.$watchers;\n            watchers.push(watcher);\n            return {\n                dispose() {\n                    var index = watchers.indexOf(watcher);\n                    if (index > -1)\n                        watchers.splice(index, 1);\n                }\n            }\n        }\n\n        setAutoPlay(value: boolean) {\n            this.$autoplay = value;\n            if (!value)\n                this.$element.removeAttribute(\"autoplay\");\n            else\n                this.$element.setAttribute(\"autoplay\", \"autoplay\");\n        }\n\n        getIsPlaying(): boolean {\n            var video = this.$element;\n            return !!video && !video.paused && !video.ended;\n        }\n\n        Play() {\n            this.$element.play();\n        }\n\n        Pause() {\n            this.$element.pause();\n        }\n\n        protected onVideoErrored(e: ErrorEvent) {\n            console.info(\"Failed to load: \" + this.$element.src.toString());\n            for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\n                watchers[i].onErrored(this, e.error);\n            }\n        }\n\n        protected onVideoCanPlay() {\n            this.setMetrics(this.$element.videoWidth, this.$element.videoHeight);\n            for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\n                watchers[i].onCanPlay(this);\n            }\n        }\n\n        protected onVideoChanged() {\n            for (var i = 0, watchers = this.$watchers; i < watchers.length; i++) {\n                watchers[i].onChanged(this);\n            }\n        }\n    }\n\n    Fayde.CoreLibrary.add(VideoSourceBase);\n}"
  },
  {
    "path": "src/Media/mediagrammar.txt",
    "content": "﻿// Work-in-progress - Looks slower than current\r\n\r\n// Path Markup Syntax: http://msdn.microsoft.com/en-us/library/cc189041(v=vs.95).aspx\r\n\r\n//FigureDescription Syntax\r\n// MoveCommand DrawCommands [CloseCommand]\r\n\r\n//Double Syntax\r\n// digits\r\n// digits.digits\r\n// 'Infinity'\r\n// '-Infinity'\r\n// 'NaN'\r\n\r\n//Point Syntax\r\n// x,y\r\n// x y\r\n\r\n//Loop until exhausted\r\n//  Parse FigureDescription\r\n//      Find \"M\" or \"m\"? - Parse MoveCommand (start point)\r\n//          <point>\r\n//\r\n//      Find \"L\" or \"l\"? - Parse LineCommand (end point)\r\n//          <point>\r\n//      Find \"H\" or \"h\"? - Parse HorizontalLineCommand (x)\r\n//          <double>\r\n//      Find \"V\" or \"v\"? - Parse VerticalLineCommand (y)\r\n//          <double>\r\n//      Find \"C\" or \"c\"? - Parse CubicBezierCurveCommand (control point 1, control point 2, end point)\r\n//          <point> <point> <point>\r\n//      Find \"Q\" or \"q\"? - Parse QuadraticBezierCurveCommand (control point, end point)\r\n//          <point> <point>\r\n//      Find \"S\" or \"s\"? - Parse SmoothCubicBezierCurveCommand (control point 2, end point)\r\n//          <point> <point>\r\n//      Find \"T\" or \"t\"? - Parse SmoothQuadraticBezierCurveCommand (control point, end point)\r\n//          <point> <point>\r\n//      Find \"A\" or \"a\"? - Parse EllipticalArcCommand (size, rotationAngle, isLargeArcFlag, sweepDirectionFlag, endPoint)\r\n//          <point> <double> <1,0> <1,0> <point>\r\n//\r\n//      Find \"Z\" or \"z\"? - CloseCommand\r\n\r\n{\r\n  var path = new RawPath();\r\n  var cpx = 0;\r\n  var cpy = 0;\r\n  var fillRule = FillRule.EvenOdd;\r\n}\r\n\r\nstart\r\n  = action* { \r\n    var pg = new PathGeometry();\r\n    pg.OverridePath(path);\r\n    pg.FillRule = fillRule;\r\n    return pg;\r\n  }\r\n\r\naction\r\n  = move / relmove\r\n  / line / relline\r\n  / hline / relhline\r\n  / vline / relvline\r\n  / cubic / relcubic\r\n  / smoothcubic\r\n  / quadratic\r\n  / smoothquadratic\r\n  / ellipticalarc\r\n  / close\r\n  / fillrule\r\n\r\nmove\r\n  = \"M\" sp:point {\r\n    path.Move(cpx = sp[0], cpy = sp[1])\r\n  }\r\nrelmove\r\n  = \"m\" sp:point {\r\n    path.Move(cpx += sp[0], cpy += sp[1])\r\n  }\r\n\r\nline\r\n  = \"L\" ep:point {\r\n    path.Line(cpx = ep[0], cpy = ep[1])\r\n  }\r\nrelline\r\n  = \"l\" ep:point {\r\n    path.Line(cpx += ep[0], cpy += ep[1])\r\n  }\r\n\r\nhline\r\n  = \"H\" n:number {\r\n    path.Line(cpx = n, cpy)\r\n  }\r\nrelhline\r\n  = \"h\" n:number {\r\n    path.Line(cpx += n, cpy)\r\n  }\r\n\r\nvline\r\n  = \"V\" n:number {\r\n    path.Line(cpx, cpy = n)\r\n  }\r\nrelvline\r\n  = \"v\" n:number {\r\n    path.Line(cpx, cpy += n)\r\n  }\r\n\r\ncubic\r\n  = \"C\" cp1:point \" \" cp2:point \" \" ep:point {\r\n    path.CubicBezier(cp1[0], cp1[1], cp2[0], cp2[1], cpx = ep[0], cpy = ep[1]);\r\n  }\r\n\r\nrelcubic\r\n  = \"c\" cp1:point \" \" cp2:point \" \" ep:point {\r\n    path.CubicBezier(cpx += cp1[0], cpy += cp1[1], cpx += cp2[0], cpy += cp2[1], cpx += ep[0], cpy += ep[1]);\r\n  }\r\n\r\nsmoothcubic\r\n  = \"S\" cp2:point \" \" ep:point {\r\n    //TODO\r\n  }\r\n\r\nrelsmoothcubic\r\n  = \"s\" cp2:point \" \" ep:point {\r\n    //TODO\r\n  }\r\n\r\nquadratic\r\n  = type:[Qq] cp1:point \" \" ep:point {\r\n    return {\r\n\t  type: type,\r\n\t  data: [cp1, ep]\r\n\t}\r\n  }\r\n\r\nsmoothquadratic\r\n  = type:[Tt] cp:point \" \" ep:point {\r\n    return {\r\n\t  type: type,\r\n\t  data: [cp, ep]\r\n\t}\r\n  }\r\n\r\nellipticalarc\r\n  = type:[Aa] p:point \" \" n:number \" \" largearc:flag \" \" sweep:flag \" \" ep:point {\r\n    return {\r\n\t  type: type,\r\n\t  data: [p, n, largearc, sweep, ep]\r\n\t}\r\n  }\r\n\r\nclose\r\n  = [Zz] {\r\n    path.Close()\r\n  }\r\n\r\nfillrule\r\n  = type:[Ff] f:flag {\r\n    fillRule = f ? FillRule.NonZero : FillRule.EvenOdd;\r\n  }\r\n\r\npoint \"point\"\r\n  = first:number [,\" \"] second:number {\r\n    return [first, second]\r\n  }\r\n\r\nflag\r\n  = [01] {\r\n    return text() === '1'\r\n  }\r\n\r\nnumber \"number\"\r\n  = digits:(\"-\"? [0-9]+ (\".\" [0-9]+)?) {\r\n    return parseFloat(text(), 10);\r\n  }\r\n  / infinity:\"Infinity\" {\r\n    return parseFloat(text(), 10);\r\n  }\r\n  / negativeInfinity:\"-Infinity\" {\r\n    return parseFloat(text(), 10);\r\n  }\r\n  / nan:\"NaN\" {\r\n    return parseFloat(text(), 10);\r\n  }"
  },
  {
    "path": "src/Navigation/INavigate.ts",
    "content": "module Fayde.Navigation {\r\n    export interface INavigate {\r\n        Navigate(source: Uri): boolean;\r\n    }\r\n    export var INavigate_ = new nullstone.Interface<INavigate>(\"INavigate\");\r\n}"
  },
  {
    "path": "src/Navigation/NavigationHelper.ts",
    "content": "module Fayde.Navigation {\r\n    export function Navigate(source: DependencyObject, targetName: string, navigateUri: Uri) {\r\n        if (!isExternalTarget(targetName)) {\r\n            if (tryInternalNavigate(source, navigateUri, targetName))\r\n                return;\r\n            if (!isUriValidForExternalNav(navigateUri))\r\n                throw new NotSupportedException(\"Navigation Failed\");\r\n        }\r\n        var app = source.App;\r\n        if (!app || !app.AllowNavigation)\r\n            throw new InvalidOperationException(\"Navigation is now allowed.\");\r\n        var absoluteUri = getAbsoluteUri(navigateUri, app);\r\n        if (!absoluteUri.isAbsoluteUri)\r\n            throw new InvalidOperationException(\"Navigation Failed [\" + absoluteUri.toString() + \"]\");\r\n        launchDummyLink(targetName || \"_self\", absoluteUri.originalString);\r\n    }\r\n\r\n    function isExternalTarget(targetName: string): boolean {\r\n        if (!targetName)\r\n            return false;\r\n        switch (targetName.toLowerCase()) {\r\n            case \"_blank\":\r\n            case \"_media\":\r\n            case \"_search\":\r\n            case \"_parent\":\r\n            case \"_self\":\r\n            case \"_top\":\r\n                return true;\r\n            default:\r\n                return false;\r\n        }\r\n    }\r\n\r\n    function tryInternalNavigate(source: DependencyObject, navigateUri: Uri, targetName: string): boolean {\r\n        var lastSubtree = source;\r\n        for (var en = walkUp(source); en.moveNext();) {\r\n            var cur = <DependencyObject>en.current;\r\n            if (cur && (INavigate_.is(cur) || !VisualTreeHelper.GetParent(cur))) {\r\n                var navigator = findNavigator(cur, lastSubtree, targetName);\r\n                if (navigator)\r\n                    return navigator.Navigate(navigateUri);\r\n                lastSubtree = cur;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    function findNavigator(root: DependencyObject, lastSubtree: DependencyObject, targetName: string): INavigate {\r\n        if (!root || root === lastSubtree)\r\n            return null;\r\n        var nav = INavigate_.as(root);\r\n        if (nav && (!targetName || targetName === root.Name))\r\n            return nav;\r\n\r\n        if (root instanceof Controls.Primitives.Popup) {\r\n            return findNavigator((<Controls.Primitives.Popup>root).Child, lastSubtree, targetName);\r\n        } else {\r\n            for (var i = 0, len = VisualTreeHelper.GetChildrenCount(root); i < len; i++) {\r\n                var navigator = findNavigator(VisualTreeHelper.GetChild(root, i), lastSubtree, targetName);\r\n                if (navigator)\r\n                    return navigator;\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    function walkUp(xobj: XamlObject): nullstone.IEnumerator<XamlObject> {\r\n        var e = {\r\n            current: xobj,\r\n            moveNext(): boolean {\r\n                if (!e.current)\r\n                    return false;\r\n                e.current = (<any>e.current).VisualParent || e.current.Parent;\r\n                return !!e.current;\r\n            }\r\n        };\r\n        return e;\r\n    }\r\n\r\n    function isUriValidForExternalNav(navigateUri: Uri): boolean {\r\n        if (!navigateUri.isAbsoluteUri) {\r\n            if (!!navigateUri.originalString && navigateUri.originalString[0] !== \"/\")\r\n                return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    function getAbsoluteUri(navigateUri: Uri, app: Application) {\r\n        var relativeUri = navigateUri;\r\n        if (!relativeUri.isAbsoluteUri) {\r\n            if (!!relativeUri.originalString && relativeUri.originalString[0] !== \"/\")\r\n                throw new NotSupportedException(\"HyperlinkButton_GetAbsoluteUri_PageRelativeUri\");\r\n            if (!app)\r\n                throw new NotSupportedException(\"HyperlinkButton_GetAbsoluteUri_NoApplication\");\r\n            relativeUri = new Uri(app.Address, relativeUri);\r\n        }\r\n        return relativeUri;\r\n    }\r\n\r\n    var dummyLink: HTMLAnchorElement;\r\n    function launchDummyLink(target: string, navigateUri: string) {\r\n        dummyLink = dummyLink || document.createElement('a');\r\n        dummyLink.href = navigateUri;\r\n        dummyLink.target = target;\r\n        dummyLink.click();\r\n    }\r\n}"
  },
  {
    "path": "src/Navigation/NavigationService.ts",
    "content": "module Fayde.Navigation {\r\n    export class NavigationService {\r\n        Href: string;\r\n        Hash: string;\r\n        LocationChanged = new nullstone.Event();\r\n\r\n        constructor() {\r\n            this.Href = window.location.href;\r\n            this.Hash = window.location.hash;\r\n            if (this.Href[this.Href.length - 1] === '#')\r\n                this.Hash = \"#\";\r\n            if (this.Hash) {\r\n                this.Hash = this.Hash.substr(1);\r\n                this.Href = this.Href.substring(0, this.Href.indexOf('#'));\r\n            }\r\n            window.onhashchange = () => this._HandleFragmentChange();\r\n        }\r\n\r\n        get CurrentUri(): Uri {\r\n            return new Uri(this.Href + \"#\" + this.Hash);\r\n        }\r\n\r\n        Navigate(uri: Uri): boolean {\r\n            window.location.hash = uri.toString();\r\n            return true;\r\n        }\r\n\r\n        private _HandleFragmentChange() {\r\n            this.Hash = window.location.hash;\r\n            if (this.Hash) {\r\n                this.Hash = this.Hash.substr(1);\r\n            }\r\n            this.LocationChanged.raise(this, null);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(NavigationService);\r\n}"
  },
  {
    "path": "src/Navigation/RedirectRoute.ts",
    "content": "module Fayde.Navigation {\n    export class RedirectRoute extends Route {\n        NewUri: Uri;\n\n        constructor(route: Route, newUri: string);\n        constructor(route: Route, newUri: Uri);\n        constructor(route: Route, newUri: any) {\n            super(route.View, route.HashParams, route.DataContext);\n            this.NewUri = new Uri(newUri)\n        }\n    }\n}"
  },
  {
    "path": "src/Navigation/Route.ts",
    "content": "module Fayde.Navigation {\r\n    export class Route {\r\n        View: Uri;\r\n        HashParams: { [key: string]: string };\r\n        DataContext: any;\r\n\r\n        constructor (view: Uri, hashParams: { [key: string]: string }, dataContext: any) {\r\n            this.View = view;\r\n            this.HashParams = hashParams;\r\n            this.DataContext = dataContext;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Route);\r\n}"
  },
  {
    "path": "src/Navigation/RouteMapper.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Navigation {\r\n    export class RouteMapper extends DependencyObject {\r\n        static RouteMappingsProperty = DependencyProperty.RegisterImmutable<XamlObjectCollection<RouteMapping>>(\"RouteMappings\", () => XamlObjectCollection, RouteMapper);\r\n        static ViewModelProviderProperty = DependencyProperty.Register(\"ViewModelProvider\", () => Fayde.MVVM.IViewModelProvider_, RouteMapper);\r\n\r\n        RouteMappings: XamlObjectCollection<RouteMapping>;\r\n        ViewModelProvider: Fayde.MVVM.IViewModelProvider;\r\n\r\n        constructor() {\r\n            super();\r\n            RouteMapper.RouteMappingsProperty.Initialize(this);\r\n        }\r\n\r\n        MapUri(uri: Uri): Route {\r\n            var redirect = {\r\n                uri: null,\r\n                do(newUri: string|Uri) {\r\n                    redirect.uri = newUri;\r\n                }\r\n            };\r\n\r\n            var mapped: Route;\r\n            for (var en = this.RouteMappings.getEnumerator(); en.moveNext();) {\r\n                mapped = en.current.MapUri(uri);\r\n                if (mapped) {\r\n                    var vm: any = this.ViewModelProvider ? this.ViewModelProvider.ResolveViewModel(mapped, redirect.do) : null;\r\n                    if (redirect.uri)\r\n                        return new RedirectRoute(mapped, redirect.uri);\r\n                    mapped.DataContext = vm;\r\n                    return mapped;\r\n                }\r\n            }\r\n            return undefined;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RouteMapper);\r\n    Markup.Content(RouteMapper, RouteMapper.RouteMappingsProperty);\r\n}"
  },
  {
    "path": "src/Navigation/RouteMapping.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Navigation {\r\n    export class RouteMapping extends DependencyObject {\r\n        static ViewProperty = DependencyProperty.Register(\"View\", () => Uri, RouteMapping);\r\n        static UriProperty = DependencyProperty.Register(\"Uri\", () => Uri, RouteMapping);\r\n        View: Uri;\r\n        Uri: Uri;\r\n\r\n        MapUri (uri: Uri): Route {\r\n            var matcher = createUriMatcher(this.Uri.toString(), uri.toString());\r\n            var result: ITokenInfo[] = matcher.Match();\r\n            if (!result)\r\n                return undefined;\r\n\r\n            //construct a route object that contains the view and parameters\r\n            if (!this.View)\r\n                throw new InvalidOperationException(\"RouteMapping must have a view. (\" + this.Uri.toString() + \")\");\r\n            var hashParams: { [key: string]: string } = {};\r\n            for (var i = 0; i < result.length; i++) {\r\n                var key: string = result[i].Identifier;\r\n                var value: string = result[i].Value;\r\n                hashParams[key] = value;\r\n            }\r\n            return new Route(this.View, hashParams, null);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(RouteMapping);\r\n\r\n    interface ITokenInfo {\r\n        Identifier: string;\r\n        Terminator: string;\r\n        Value: string;\r\n    }\r\n    interface IUriMatcher {\r\n        Match(): ITokenInfo[];\r\n    }\r\n\r\n    function createUriMatcher (matchTemplate: string, actual: string): IUriMatcher {\r\n        var i = 0;\r\n        var j = 0;\r\n\r\n        function collectTokenInfo (): ITokenInfo {\r\n            var tokenInfo: ITokenInfo = {\r\n                Identifier: null,\r\n                Terminator: null,\r\n                Value: null\r\n            };\r\n            var index = matchTemplate.indexOf('}', i);\r\n            if (index < 0)\r\n                throw new InvalidOperationException(\"Invalid Uri format. '{' needs a closing '}'.\");\r\n            var len = index - i + 1; //length of '{test}' = 6\r\n            tokenInfo.Identifier = matchTemplate.substr(i + 1, len - 2);\r\n            if (!tokenInfo.Identifier)\r\n                throw new InvalidOperationException(\"Invalid Uri format. '{}' must contain an identifier.\");\r\n            i += len; //advances i just past '}'\r\n            tokenInfo.Terminator = (i + 1) < matchTemplate.length ? matchTemplate[i] : '\\0';\r\n            //console.log(\"identifier: \" + tokenInfo.Identifier + \", terminator: \" + tokenInfo.Terminator);\r\n            return tokenInfo;\r\n        }\r\n\r\n        function findTokenValue (tokenInfo: ITokenInfo): ITokenInfo {\r\n            if (tokenInfo.Terminator === '\\0') {\r\n                tokenInfo.Value = actual.substr(j);\r\n                if (tokenInfo.Value)\r\n                    j += tokenInfo.Value.length;\r\n                return tokenInfo;\r\n            }\r\n            tokenInfo.Value = \"\";\r\n            while (j < actual.length) {\r\n                if (actual[j] == tokenInfo.Terminator)\r\n                    return;\r\n                tokenInfo.Value += actual[j];\r\n                j++;\r\n            }\r\n            //console.log(\"value: \" + tokenInfo.Value);\r\n        }\r\n\r\n        return {\r\n            Match: function (): ITokenInfo[] {\r\n                var tokens: ITokenInfo[] = [];\r\n\r\n                if (matchTemplate.length === 0) {\r\n                    if (actual.length === 0)\r\n                        return tokens;\r\n                    return null;\r\n                }\r\n\r\n                while (i < matchTemplate.length && j < actual.length) {\r\n                    if (matchTemplate[i] === \"{\") {\r\n                        tokens.push(findTokenValue(collectTokenInfo()));\r\n                        continue;\r\n                    }\r\n                    if (matchTemplate[i] !== actual[i])\r\n                        return null;\r\n                    i++;\r\n                    j++;\r\n                }\r\n                return tokens;\r\n            }\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Navigation/UriMapper.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Navigation {\r\n    export class UriMapper extends DependencyObject {\r\n        static UriMappingsProperty = DependencyProperty.RegisterImmutable<XamlObjectCollection<UriMapping>>(\"UriMappings\", () => XamlObjectCollection, UriMapper);\r\n        UriMappings: XamlObjectCollection<UriMapping>;\r\n\r\n        constructor() {\r\n            super();\r\n            UriMapper.UriMappingsProperty.Initialize(this);\r\n        }\r\n\r\n        MapUri(uri: Uri): Uri {\r\n            var enumerator = this.UriMappings.getEnumerator();\r\n            var mapped: Uri;\r\n            while (enumerator.moveNext()) {\r\n                mapped = enumerator.current.MapUri(uri);\r\n                if (mapped)\r\n                    return mapped;\r\n            }\r\n            return uri;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(UriMapper);\r\n    Markup.Content(UriMapper, UriMapper.UriMappingsProperty);\r\n}"
  },
  {
    "path": "src/Navigation/UriMapping.ts",
    "content": "/// <reference path=\"../Core/DependencyObject.ts\" />\r\n\r\nmodule Fayde.Navigation {\r\n    export class UriMapping extends DependencyObject {\r\n        static MappedUriProperty = DependencyProperty.Register(\"MappedUri\", () => Uri, UriMapping);\r\n        static UriProperty = DependencyProperty.Register(\"Uri\", () => Uri, UriMapping);\r\n        MappedUri: Uri;\r\n        Uri: Uri;\r\n\r\n        MapUri(uri: Uri): Uri {\r\n            var matcher = createUriMatcher(this.Uri.toString(), this.MappedUri.toString(), uri.toString());\r\n            var result = matcher.Match();\r\n            if (!result)\r\n                return undefined;\r\n            return new Uri(result);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(UriMapping);\r\n\r\n    interface ITokenInfo {\r\n        Identifier: string;\r\n        Terminator: string;\r\n        Value: string;\r\n    }\r\n    interface IUriMatcher {\r\n        Match(): string;\r\n    }\r\n    function createUriMatcher(matchTemplate: string, outputTemplate: string, actual: string): IUriMatcher {\r\n        var i = 0;\r\n        var j = 0;\r\n\r\n        function collectTokenInfo(): ITokenInfo {\r\n            var tokenInfo: ITokenInfo = {\r\n                Identifier: null,\r\n                Terminator: null,\r\n                Value: null\r\n            };\r\n            var index = matchTemplate.indexOf('}', i);\r\n            if (index < 0)\r\n                throw new InvalidOperationException(\"Invalid Uri format. '{' needs a closing '}'.\");\r\n            var len = index - i + 1; //length of '{test}' = 6\r\n            tokenInfo.Identifier = matchTemplate.substr(i + 1, len - 2);\r\n            if (!tokenInfo.Identifier)\r\n                throw new InvalidOperationException(\"Invalid Uri format. '{}' must contain an identifier.\");\r\n            i += len; //advances i just past '}'\r\n            tokenInfo.Terminator = (i + 1) < matchTemplate.length ? matchTemplate[i] : '\\0';\r\n            return tokenInfo;\r\n        }\r\n        function findTokenValue(tokenInfo: ITokenInfo): ITokenInfo {\r\n            if (tokenInfo.Terminator === '\\0') {\r\n                tokenInfo.Value = actual.substr(j);\r\n                if (tokenInfo.Value)\r\n                    j += tokenInfo.Value.length;\r\n                return tokenInfo;\r\n            }\r\n            tokenInfo.Value = \"\";\r\n            while (j < actual.length) {\r\n                if (actual[j] == tokenInfo.Terminator)\r\n                    return;\r\n                tokenInfo.Value += actual[j];\r\n                j++;\r\n            }\r\n        }\r\n        function buildMappedUri(tokens: ITokenInfo[]): string {\r\n            var cur = outputTemplate;\r\n            var len = tokens.length;\r\n            var token: ITokenInfo;\r\n            for (var a = 0; a < len; a++) {\r\n                token = tokens[a];\r\n                cur = cur.replace(\"{\" + token.Identifier + \"}\", token.Value);\r\n            }\r\n            return cur;\r\n        }\r\n\r\n        return {\r\n            Match: function (): string {\r\n                var tokens: ITokenInfo[] = [];\r\n                if (matchTemplate.length === 0) {\r\n                    if (actual.length === 0)\r\n                        return buildMappedUri(tokens);\r\n                    return null;\r\n                }\r\n\r\n                while (i < matchTemplate.length && j < actual.length) {\r\n                    if (matchTemplate[i] === \"{\") {\r\n                        tokens.push(findTokenValue(collectTokenInfo()));\r\n                        continue;\r\n                    }\r\n                    if (matchTemplate[i] !== actual[i])\r\n                        return null;\r\n                    i++;\r\n                    j++;\r\n                }\r\n                return buildMappedUri(tokens);\r\n            }\r\n        };\r\n    }\r\n}"
  },
  {
    "path": "src/Primitives/Color.ts",
    "content": "class Color implements ICloneable {\r\n    private static __NoAlphaRegex = /#([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}/;\r\n    private static __AlphaRegex = /#([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}([0-9a-fA-F][0-9a-fA-F]){1}/;\r\n\r\n    R: number = 0;\r\n    G: number = 0;\r\n    B: number = 0;\r\n    A: number = 1.0;\r\n\r\n    Add(color2: Color) {\r\n        var c = new Color();\r\n        c.R = this.R + color2.R;\r\n        c.G = this.G + color2.G;\r\n        c.B = this.B + color2.B;\r\n        c.A = this.A + color2.A;\r\n        return c;\r\n    }\r\n    Subtract(color2: Color) {\r\n        var c = new Color();\r\n        c.R = this.R - color2.R;\r\n        c.G = this.G - color2.G;\r\n        c.B = this.B - color2.B;\r\n        c.A = this.A - color2.A;\r\n        return c;\r\n    }\r\n    Multiply(factor: number) {\r\n        var c = new Color();\r\n        c.R = this.R * factor;\r\n        c.G = this.G * factor;\r\n        c.B = this.B * factor;\r\n        c.A = this.A * factor;\r\n        return c;\r\n    }\r\n    Equals(other: Color) {\r\n        return this.R === other.R\r\n            && this.G === other.G\r\n            && this.B === other.B\r\n            && this.A === other.A;\r\n    }\r\n    toString() {\r\n        var r = Math.round(this.R) || 0;\r\n        var g = Math.round(this.G) || 0;\r\n        var b = Math.round(this.B) || 0;\r\n        var a = this.A || 0;\r\n        return `rgba(${r}, ${g}, ${b}, ${a})`;\r\n    }\r\n    ToHexStringNoAlpha(): string {\r\n        return \"#\" + this.R.toString(16) + this.G.toString(16) + this.B.toString(16);\r\n    }\r\n\r\n    Clone(): Color {\r\n        return Color.FromRgba(this.R, this.G, this.B, this.A);\r\n    }\r\n\r\n    static LERP(start: Color, end: Color, p: number): Color {\r\n        var c = new Color();\r\n        c.R = start.R + (end.R - start.R) * p;\r\n        c.G = start.G + (end.G - start.G) * p;\r\n        c.B = start.B + (end.B - start.B) * p;\r\n        c.A = start.A + (end.A - start.A) * p;\r\n        return c;\r\n    }\r\n    static FromRgba(r: number, g: number, b: number, a: number): Color {\r\n        var c = new Color();\r\n        c.R = r;\r\n        c.G = g;\r\n        c.B = b;\r\n        c.A = a;\r\n        return c;\r\n    }\r\n    static FromHex(hex: string): Color {\r\n        var match;\r\n        var c = new Color();\r\n        if ((match = Color.__AlphaRegex.exec(hex)) != null) {\r\n            c.A = parseInt(match[1], 16) / 255.0;\r\n            c.R = parseInt(match[2], 16);\r\n            c.G = parseInt(match[3], 16);\r\n            c.B = parseInt(match[4], 16);\r\n        } else if ((match = Color.__NoAlphaRegex.exec(hex)) != null) {\r\n            c.A = 1.0;\r\n            c.R = parseInt(match[1], 16);\r\n            c.G = parseInt(match[2], 16);\r\n            c.B = parseInt(match[3], 16);\r\n        }\r\n        return c;\r\n    }\r\n\r\n    static KnownColors = {\r\n        AliceBlue: Color.FromHex(\"#FFF0F8FF\"),\r\n        AntiqueWhite: Color.FromHex(\"#FFFAEBD7\"),\r\n        Aqua: Color.FromHex(\"#FF00FFFF\"),\r\n        Aquamarine: Color.FromHex(\"#FF7FFFD4\"),\r\n        Azure: Color.FromHex(\"#FFF0FFFF\"),\r\n        Beige: Color.FromHex(\"#FFF5F5DC\"),\r\n        Bisque: Color.FromHex(\"#FFFFE4C4\"),\r\n        Black: Color.FromHex(\"#FF000000\"),\r\n        BlanchedAlmond: Color.FromHex(\"#FFFFEBCD\"),\r\n        Blue: Color.FromHex(\"#FF0000FF\"),\r\n        BlueViolet: Color.FromHex(\"#FF8A2BE2\"),\r\n        Brown: Color.FromHex(\"#FFA52A2A\"),\r\n        BurlyWood: Color.FromHex(\"#FFDEB887\"),\r\n        CadetBlue: Color.FromHex(\"#FF5F9EA0\"),\r\n        Chartreuse: Color.FromHex(\"#FF7FFF00\"),\r\n        Chocolate: Color.FromHex(\"#FFD2691E\"),\r\n        Coral: Color.FromHex(\"#FFFF7F50\"),\r\n        CornflowerBlue: Color.FromHex(\"#FF6495ED\"),\r\n        Cornsilk: Color.FromHex(\"#FFFFF8DC\"),\r\n        Crimson: Color.FromHex(\"#FFDC143C\"),\r\n        Cyan: Color.FromHex(\"#FF00FFFF\"),\r\n        DarkBlue: Color.FromHex(\"#FF00008B\"),\r\n        DarkCyan: Color.FromHex(\"#FF008B8B\"),\r\n        DarkGoldenrod: Color.FromHex(\"#FFB8860B\"),\r\n        DarkGray: Color.FromHex(\"#FFA9A9A9\"),\r\n        DarkGreen: Color.FromHex(\"#FF006400\"),\r\n        DarkKhaki: Color.FromHex(\"#FFBDB76B\"),\r\n        DarkMagenta: Color.FromHex(\"#FF8B008B\"),\r\n        DarkOliveGreen: Color.FromHex(\"#FF556B2F\"),\r\n        DarkOrange: Color.FromHex(\"#FFFF8C00\"),\r\n        DarkOrchid: Color.FromHex(\"#FF9932CC\"),\r\n        DarkRed: Color.FromHex(\"#FF8B0000\"),\r\n        DarkSalmon: Color.FromHex(\"#FFE9967A\"),\r\n        DarkSeaGreen: Color.FromHex(\"#FF8FBC8F\"),\r\n        DarkSlateBlue: Color.FromHex(\"#FF483D8B\"),\r\n        DarkSlateGray: Color.FromHex(\"#FF2F4F4F\"),\r\n        DarkTurquoise: Color.FromHex(\"#FF00CED1\"),\r\n        DarkViolet: Color.FromHex(\"#FF9400D3\"),\r\n        DeepPink: Color.FromHex(\"#FFFF1493\"),\r\n        DeepSkyBlue: Color.FromHex(\"#FF00BFFF\"),\r\n        DimGray: Color.FromHex(\"#FF696969\"),\r\n        DodgerBlue: Color.FromHex(\"#FF1E90FF\"),\r\n        Firebrick: Color.FromHex(\"#FFB22222\"),\r\n        FloralWhite: Color.FromHex(\"#FFFFFAF0\"),\r\n        ForestGreen: Color.FromHex(\"#FF228B22\"),\r\n        Fuchsia: Color.FromHex(\"#FFFF00FF\"),\r\n        Gainsboro: Color.FromHex(\"#FFDCDCDC\"),\r\n        GhostWhite: Color.FromHex(\"#FFF8F8FF\"),\r\n        Gold: Color.FromHex(\"#FFFFD700\"),\r\n        Goldenrod: Color.FromHex(\"#FFDAA520\"),\r\n        Gray: Color.FromHex(\"#FF808080\"),\r\n        Green: Color.FromHex(\"#FF008000\"),\r\n        GreenYellow: Color.FromHex(\"#FFADFF2F\"),\r\n        Honeydew: Color.FromHex(\"#FFF0FFF0\"),\r\n        HotPink: Color.FromHex(\"#FFFF69B4\"),\r\n        IndianRed: Color.FromHex(\"#FFCD5C5C\"),\r\n        Indigo: Color.FromHex(\"#FF4B0082\"),\r\n        Ivory: Color.FromHex(\"#FFFFFFF0\"),\r\n        Khaki: Color.FromHex(\"#FFF0E68C\"),\r\n        Lavender: Color.FromHex(\"#FFE6E6FA\"),\r\n        LavenderBlush: Color.FromHex(\"#FFFFF0F5\"),\r\n        LawnGreen: Color.FromHex(\"#FF7CFC00\"),\r\n        LemonChiffon: Color.FromHex(\"#FFFFFACD\"),\r\n        LightBlue: Color.FromHex(\"#FFADD8E6\"),\r\n        LightCoral: Color.FromHex(\"#FFF08080\"),\r\n        LightCyan: Color.FromHex(\"#FFE0FFFF\"),\r\n        LightGoldenrodYellow: Color.FromHex(\"#FFFAFAD2\"),\r\n        LightGray: Color.FromHex(\"#FFD3D3D3\"),\r\n        LightGreen: Color.FromHex(\"#FF90EE90\"),\r\n        LightPink: Color.FromHex(\"#FFFFB6C1\"),\r\n        LightSalmon: Color.FromHex(\"#FFFFA07A\"),\r\n        LightSeaGreen: Color.FromHex(\"#FF20B2AA\"),\r\n        LightSkyBlue: Color.FromHex(\"#FF87CEFA\"),\r\n        LightSlateGray: Color.FromHex(\"#FF778899\"),\r\n        LightSteelBlue: Color.FromHex(\"#FFB0C4DE\"),\r\n        LightYellow: Color.FromHex(\"#FFFFFFE0\"),\r\n        Lime: Color.FromHex(\"#FF00FF00\"),\r\n        LimeGreen: Color.FromHex(\"#FF32CD32\"),\r\n        Linen: Color.FromHex(\"#FFFAF0E6\"),\r\n        Magenta: Color.FromHex(\"#FFFF00FF\"),\r\n        Maroon: Color.FromHex(\"#FF800000\"),\r\n        MediumAquamarine: Color.FromHex(\"#FF66CDAA\"),\r\n        MediumBlue: Color.FromHex(\"#FF0000CD\"),\r\n        MediumOrchid: Color.FromHex(\"#FFBA55D3\"),\r\n        MediumPurple: Color.FromHex(\"#FF9370DB\"),\r\n        MediumSeaGreen: Color.FromHex(\"#FF3CB371\"),\r\n        MediumSlateBlue: Color.FromHex(\"#FF7B68EE\"),\r\n        MediumSpringGreen: Color.FromHex(\"#FF00FA9A\"),\r\n        MediumTurquoise: Color.FromHex(\"#FF48D1CC\"),\r\n        MediumVioletRed: Color.FromHex(\"#FFC71585\"),\r\n        MidnightBlue: Color.FromHex(\"#FF191970\"),\r\n        MintCream: Color.FromHex(\"#FFF5FFFA\"),\r\n        MistyRose: Color.FromHex(\"#FFFFE4E1\"),\r\n        Moccasin: Color.FromHex(\"#FFFFE4B5\"),\r\n        NavajoWhite: Color.FromHex(\"#FFFFDEAD\"),\r\n        Navy: Color.FromHex(\"#FF000080\"),\r\n        OldLace: Color.FromHex(\"#FFFDF5E6\"),\r\n        Olive: Color.FromHex(\"#FF808000\"),\r\n        OliveDrab: Color.FromHex(\"#FF6B8E23\"),\r\n        Orange: Color.FromHex(\"#FFFFA500\"),\r\n        OrangeRed: Color.FromHex(\"#FFFF4500\"),\r\n        Orchid: Color.FromHex(\"#FFDA70D6\"),\r\n        PaleGoldenrod: Color.FromHex(\"#FFEEE8AA\"),\r\n        PaleGreen: Color.FromHex(\"#FF98FB98\"),\r\n        PaleTurquoise: Color.FromHex(\"#FFAFEEEE\"),\r\n        PaleVioletRed: Color.FromHex(\"#FFDB7093\"),\r\n        PapayaWhip: Color.FromHex(\"#FFFFEFD5\"),\r\n        PeachPuff: Color.FromHex(\"#FFFFDAB9\"),\r\n        Peru: Color.FromHex(\"#FFCD853F\"),\r\n        Pink: Color.FromHex(\"#FFFFC0CB\"),\r\n        Plum: Color.FromHex(\"#FFDDA0DD\"),\r\n        PowderBlue: Color.FromHex(\"#FFB0E0E6\"),\r\n        Purple: Color.FromHex(\"#FF800080\"),\r\n        Red: Color.FromHex(\"#FFFF0000\"),\r\n        RosyBrown: Color.FromHex(\"#FFBC8F8F\"),\r\n        RoyalBlue: Color.FromHex(\"#FF4169E1\"),\r\n        SaddleBrown: Color.FromHex(\"#FF8B4513\"),\r\n        Salmon: Color.FromHex(\"#FFFA8072\"),\r\n        SandyBrown: Color.FromHex(\"#FFF4A460\"),\r\n        SeaGreen: Color.FromHex(\"#FF2E8B57\"),\r\n        SeaShell: Color.FromHex(\"#FFFFF5EE\"),\r\n        Sienna: Color.FromHex(\"#FFA0522D\"),\r\n        Silver: Color.FromHex(\"#FFC0C0C0\"),\r\n        SkyBlue: Color.FromHex(\"#FF87CEEB\"),\r\n        SlateBlue: Color.FromHex(\"#FF6A5ACD\"),\r\n        SlateGray: Color.FromHex(\"#FF708090\"),\r\n        Snow: Color.FromHex(\"#FFFFFAFA\"),\r\n        SpringGreen: Color.FromHex(\"#FF00FF7F\"),\r\n        SteelBlue: Color.FromHex(\"#FF4682B4\"),\r\n        Tan: Color.FromHex(\"#FFD2B48C\"),\r\n        Teal: Color.FromHex(\"#FF008080\"),\r\n        Thistle: Color.FromHex(\"#FFD8BFD8\"),\r\n        Tomato: Color.FromHex(\"#FFFF6347\"),\r\n        Transparent: Color.FromHex(\"#00FFFFFF\"),\r\n        Turquoise: Color.FromHex(\"#FF40E0D0\"),\r\n        Violet: Color.FromHex(\"#FFEE82EE\"),\r\n        Wheat: Color.FromHex(\"#FFF5DEB3\"),\r\n        White: Color.FromHex(\"#FFFFFFFF\"),\r\n        WhiteSmoke: Color.FromHex(\"#FFF5F5F5\"),\r\n        Yellow: Color.FromHex(\"#FFFFFF00\"),\r\n        YellowGreen: Color.FromHex(\"#FF9ACD32\")\r\n    }\r\n}\r\nFayde.CoreLibrary.addPrimitive(Color);\r\n\r\nnullstone.registerTypeConverter(Color, (val: any): Color => {\r\n    if (!val || val instanceof Color)\r\n        return <Color>val;\r\n    if (val instanceof (<any>Fayde).Media.SolidColorBrush)\r\n        return (<any>val).Color;\r\n    val = val.toString();\r\n    if (val[0] !== \"#\") {\r\n        var color = Color.KnownColors[val];\r\n        if (!color)\r\n            throw new NotSupportedException(\"Unknown Color: \" + val);\r\n        return color;\r\n    }\r\n    return Color.FromHex(val);\r\n});\r\n"
  },
  {
    "path": "src/Primitives/CornerRadius.ts",
    "content": "class CornerRadius extends minerva.CornerRadius implements ICloneable {\r\n    Clone (): CornerRadius {\r\n        return new CornerRadius(this.topLeft, this.topRight, this.bottomRight, this.bottomLeft);\r\n    }\r\n}\r\nFayde.CoreLibrary.addPrimitive(CornerRadius);\r\n\r\nnullstone.registerTypeConverter(CornerRadius, (val: any): CornerRadius => {\r\n    if (!val)\r\n        return new CornerRadius();\r\n    if (val instanceof CornerRadius)\r\n\t    return <CornerRadius>val;\r\n    if (typeof val === \"number\")\r\n        return new CornerRadius(val, val, val, val);\r\n    var tokens = Fayde.splitCommaList(val.toString());\r\n    var topLeft, topRight, bottomRight, bottomLeft;\r\n    if (tokens.length === 1) {\r\n        topLeft = topRight = bottomRight = bottomLeft = parseFloat(tokens[0]);\r\n    } else if (tokens.length === 4) {\r\n        topLeft = parseFloat(tokens[0]);\r\n        topRight = parseFloat(tokens[1]);\r\n        bottomRight = parseFloat(tokens[2]);\r\n        bottomLeft = parseFloat(tokens[3]);\r\n    } else {\r\n        throw new Exception(\"Cannot parse CornerRadius value '\" + val + \"'\");\r\n    }\r\n    return new CornerRadius(topLeft, topRight, bottomRight, bottomLeft);\r\n});\r\n"
  },
  {
    "path": "src/Primitives/DateTime.ts",
    "content": "/// <reference path=\"TimeSpan.ts\" />\r\n\r\nenum DayOfWeek {\r\n    Sunday,\r\n    Monday,\r\n    Tuesday,\r\n    Wednesday,\r\n    Thursday,\r\n    Friday,\r\n    Saturday\r\n}\r\nFayde.CoreLibrary.addEnum(DayOfWeek, \"DayOfWeek\");\r\n\r\nenum DateTimeKind {\r\n    Unspecified = 0,\r\n    Local = 1,\r\n    Utc = 2\r\n}\r\nFayde.CoreLibrary.addEnum(DateTimeKind, \"DateTimeKind\");\r\n\r\nclass DateTime {\r\n    private static MAX_TICKS = 8640000000000000;\r\n    private static MIN_TICKS = -8640000000000000;\r\n\r\n    static get MinValue() { return new DateTime(DateTime.MIN_TICKS); }\r\n    static get MaxValue() { return new DateTime(DateTime.MAX_TICKS); }\r\n    static get Now(): DateTime { return new DateTime(new Date().getTime(), DateTimeKind.Local); }\r\n    static get Today(): DateTime { return DateTime.Now.Date; }\r\n    static Compare(dt1: DateTime, dt2: DateTime): number {\r\n        var t1 = dt1._InternalDate.getTime();\r\n        var t2 = dt2._InternalDate.getTime();\r\n        if (t1 < t2)\r\n            return -1;\r\n        if (t1 > t2)\r\n            return 1;\r\n        return 0;\r\n    }\r\n\r\n    static DaysInMonth(year: number, month: number): number {\r\n        var ticks = new Date(year, (month - 1) + 1, 1).getTime() - TimeSpan._TicksPerDay;\r\n        var dt = new DateTime(ticks);\r\n        return dt.Day;\r\n    }\r\n\r\n    private _InternalDate: Date = null;\r\n    private _Kind: DateTimeKind;\r\n\r\n    constructor();\r\n    constructor(dt: Date);\r\n    constructor(dt: Date, kind: DateTimeKind);\r\n    constructor(ticks: number);\r\n    constructor(ticks: number, kind: DateTimeKind);\r\n    constructor(year: number, month: number, day: number);\r\n    constructor(year: number, month: number, day: number, hour: number, minute: number, second: number);\r\n    constructor(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number);\r\n    constructor(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number, kind: DateTimeKind);\r\n    constructor(...args: any[]) {\r\n        var ticks: number = null;\r\n        var kind = DateTimeKind.Unspecified;\r\n        var year = 0;\r\n        var month = 0;\r\n        var day = 0;\r\n        var hour = 0;\r\n        var minute = 0;\r\n        var second = 0;\r\n        var millisecond = 0;\r\n\r\n        if (args.length === 1) { //Ticks\r\n            var arg0 = args[0];\r\n            if (arg0 instanceof Date) {\r\n                ticks = arg0.getTime();\r\n            } else {\r\n                ticks = args[0];\r\n            }\r\n        } else if (args.length === 2) { //Ticks,Kind\r\n            var arg0 = args[0];\r\n            if (arg0 instanceof Date) {\r\n                ticks = arg0.getTime();\r\n            } else {\r\n                ticks = args[0];\r\n            }\r\n            kind = args[1];\r\n        } else if (args.length === 3) { //Year,Month,Day\r\n            year = args[0];\r\n            month = args[1];\r\n            day = args[2];\r\n        } else if (args.length === 6) { //Year,Month,Day,Hour,Minute,Second\r\n            year = args[0];\r\n            month = args[1];\r\n            day = args[2];\r\n            hour = args[3];\r\n            minute = args[4];\r\n            second = args[5];\r\n        } else if (args.length === 7) { //Year,Month,Day,Hour,Minute,Second,Millisecond\r\n            year = args[0];\r\n            month = args[1];\r\n            day = args[2];\r\n            hour = args[3];\r\n            minute = args[4];\r\n            second = args[5];\r\n            millisecond = args[6];\r\n        } else if (args.length === 8) { //Year,Month,Day,Hour,Minute,Second,Millisecond,DateTimeKind\r\n            year = args[0];\r\n            month = args[1];\r\n            day = args[2];\r\n            hour = args[3];\r\n            minute = args[4];\r\n            second = args[5];\r\n            millisecond = args[6];\r\n            kind = args[7];\r\n        } else {\r\n            ticks = 0;\r\n        }\r\n\r\n        this._Kind = kind || DateTimeKind.Unspecified;\r\n        if (isNaN(ticks) || ticks < DateTime.MIN_TICKS || ticks > DateTime.MAX_TICKS) {\r\n            throw new Error(\"DateTime is out of range.\");\r\n        }\r\n        if (ticks != null) {\r\n            this._InternalDate = new Date(ticks);\r\n            return;\r\n        }\r\n        var id = this._InternalDate = new Date();\r\n        if (this._Kind === DateTimeKind.Utc) {\r\n            id.setUTCFullYear(year, month - 1, day);\r\n            id.setUTCHours(hour);\r\n            id.setUTCMinutes(minute);\r\n            id.setUTCSeconds(second);\r\n            id.setMilliseconds(millisecond);\r\n        } else {\r\n            id.setFullYear(year, month - 1, day);\r\n            id.setHours(hour);\r\n            id.setMinutes(minute);\r\n            id.setSeconds(second);\r\n            id.setMilliseconds(millisecond);\r\n        }\r\n    }\r\n\r\n    get Ticks(): number { return this._InternalDate.getTime(); }\r\n    get Kind(): DateTimeKind { return this._Kind; }\r\n    get Date(): DateTime {\r\n        var t = this._InternalDate.getTime();\r\n        var newid = new Date(t);\r\n        if (this._Kind === DateTimeKind.Utc) {\r\n            newid.setUTCHours(0);\r\n            newid.setUTCMinutes(0);\r\n            newid.setUTCSeconds(0);\r\n            newid.setUTCMilliseconds(0);\r\n        } else {\r\n            newid.setHours(0);\r\n            newid.setMinutes(0);\r\n            newid.setSeconds(0);\r\n            newid.setMilliseconds(0);\r\n        }\r\n        return new DateTime(newid.getTime(), this._Kind);\r\n    }\r\n    get Day(): number {\r\n        if (this._Kind === DateTimeKind.Utc)\r\n            return this._InternalDate.getUTCDate();\r\n        return this._InternalDate.getDate();\r\n    }\r\n    get DayOfWeek(): DayOfWeek {\r\n        if (this._Kind === DateTimeKind.Utc)\r\n            return <DayOfWeek>this._InternalDate.getUTCDay();\r\n        return <DayOfWeek>this._InternalDate.getDay();\r\n    }\r\n    get DayOfYear(): number {\r\n        var dt = this.Date;\r\n        var base = new DateTime(dt.Year, 1, 1, 0, 0, 0, 0, this.Kind);\r\n        var diff = new TimeSpan(dt.Ticks - base.Ticks);\r\n        return Math.floor(diff.TotalDays);\r\n    }\r\n    get Hour(): number {\r\n        if (this._Kind === DateTimeKind.Utc)\r\n            return this._InternalDate.getUTCHours();\r\n        return this._InternalDate.getHours();\r\n    }\r\n    get Millisecond(): number {\r\n        if (this._Kind === DateTimeKind.Utc)\r\n            return this._InternalDate.getUTCMilliseconds();\r\n        return this._InternalDate.getMilliseconds();\r\n    }\r\n    get Minute(): number {\r\n        if (this._Kind === DateTimeKind.Utc)\r\n            return this._InternalDate.getUTCMinutes();\r\n        return this._InternalDate.getMinutes();\r\n    }\r\n    get Month(): number {\r\n        if (this._Kind === DateTimeKind.Utc)\r\n            return this._InternalDate.getUTCMonth() + 1;\r\n        return this._InternalDate.getMonth() + 1;\r\n    }\r\n    get Second(): number {\r\n        if (this._Kind === DateTimeKind.Utc)\r\n            return this._InternalDate.getUTCSeconds();\r\n        return this._InternalDate.getSeconds();\r\n    }\r\n    get TimeOfDay(): TimeSpan {\r\n        var id = this._InternalDate;\r\n        if (this._Kind === DateTimeKind.Utc)\r\n            return new TimeSpan(0, id.getUTCHours(), id.getUTCMinutes(), id.getUTCSeconds(), id.getUTCMilliseconds());\r\n        return new TimeSpan(0, id.getHours(), id.getMinutes(), id.getSeconds(), id.getMilliseconds());\r\n    }\r\n    get Year(): number {\r\n        if (this._Kind === DateTimeKind.Utc)\r\n            return this._InternalDate.getUTCFullYear();\r\n        return this._InternalDate.getFullYear();\r\n    }\r\n\r\n    AddYears(years: number): DateTime {\r\n        var newid = new Date(this._InternalDate.getTime());\r\n        var wyears = Math.floor(years);\r\n        if (isNaN(wyears)) {\r\n            throw new ArgumentOutOfRangeException(\"years\");\r\n        }\r\n        if (this.Kind === DateTimeKind.Utc) {\r\n            newid.setUTCFullYear(newid.getUTCFullYear() + wyears);\r\n        } else {\r\n            newid.setFullYear(newid.getFullYear() + wyears);\r\n        }\r\n        return new DateTime(newid, this.Kind);\r\n    }\r\n    AddMonths(months: number): DateTime {\r\n        var newid = new Date(this._InternalDate.getTime());\r\n        var wmonths = Math.floor(months);\r\n        if (isNaN(wmonths)) {\r\n            throw new ArgumentOutOfRangeException(\"months\");\r\n        }\r\n        if (this.Kind === DateTimeKind.Utc) {\r\n            newid.setUTCMonth(newid.getUTCMonth() + wmonths);\r\n        } else {\r\n            newid.setMonth(newid.getMonth() + wmonths);\r\n        }\r\n        return new DateTime(newid, this.Kind);\r\n    }\r\n    AddDays(value: number): DateTime {\r\n        return this.Add(TimeSpan.FromDays(value));\r\n    }\r\n    AddHours(value: number): DateTime {\r\n        return this.Add(TimeSpan.FromHours(value));\r\n    }\r\n    AddMinutes(value: number): DateTime {\r\n        return this.Add(TimeSpan.FromMinutes(value));\r\n    }\r\n    AddSeconds(value: number): DateTime {\r\n        return this.Add(TimeSpan.FromSeconds(value));\r\n    }\r\n    AddMilliseconds(value: number): DateTime {\r\n        return this.Add(TimeSpan.FromMilliseconds(value));\r\n    }\r\n    Add(value: TimeSpan): DateTime {\r\n        var newid = new Date(this._InternalDate.getTime());\r\n        if (this.Kind === DateTimeKind.Utc) {\r\n            newid.setUTCDate(newid.getUTCDate() + value.Days);\r\n            newid.setUTCHours(newid.getUTCHours() + value.Hours);\r\n            newid.setUTCMinutes(newid.getUTCMinutes() + value.Minutes);\r\n            newid.setUTCSeconds(newid.getUTCSeconds() + value.Seconds);\r\n            newid.setUTCMilliseconds(newid.getUTCMilliseconds() + value.Milliseconds);\r\n        } else {\r\n            newid.setDate(newid.getDate() + value.Days);\r\n            newid.setHours(newid.getHours() + value.Hours);\r\n            newid.setMinutes(newid.getMinutes() + value.Minutes);\r\n            newid.setSeconds(newid.getSeconds() + value.Seconds);\r\n            newid.setMilliseconds(newid.getMilliseconds() + value.Milliseconds);\r\n        }\r\n        return new DateTime(newid, this.Kind);\r\n    }\r\n    AddTicks(value: number): DateTime {\r\n        return new DateTime(this.Ticks + value, this.Kind);\r\n    }\r\n\r\n    Subtract(value: DateTime): TimeSpan;\r\n    Subtract(value: TimeSpan): DateTime;\r\n    Subtract(value: any): any {\r\n        if (value instanceof DateTime) {\r\n            return new TimeSpan(this.Ticks - value.Ticks);\r\n        } else if (value instanceof TimeSpan) {\r\n            return new DateTime(this.Ticks - value.Ticks, this.Kind);\r\n        }\r\n        return new DateTime(this.Ticks, this.Kind);\r\n    }\r\n\r\n    ToUniversalTime(): DateTime {\r\n        if (this.Kind === DateTimeKind.Utc)\r\n            return new DateTime(this.Ticks, DateTimeKind.Utc);\r\n        var id = this._InternalDate;\r\n        return new DateTime(id.getUTCFullYear(), id.getUTCMonth() + 1, id.getUTCDate(), id.getUTCHours(), id.getUTCMinutes(), id.getUTCSeconds(), id.getUTCMilliseconds(), DateTimeKind.Utc);\r\n    }\r\n\r\n    toString(format?: string): string {\r\n        if (!format)\r\n            return Fayde.Localization.FormatSingle(this, \"s\");\r\n        return Fayde.Localization.FormatSingle(this, format);\r\n    }\r\n    valueOf(): Object {\r\n        return this.Ticks;\r\n    }\r\n}\r\nFayde.CoreLibrary.addPrimitive(DateTime);\r\nnullstone.registerTypeConverter(DateTime, (value: any): any => {\r\n    if (value instanceof DateTime)\r\n        return value;\r\n    if (value instanceof Date)\r\n        return new DateTime(value);\r\n    if (typeof value === \"string\")\r\n        return new DateTime(Date.parse(value));\r\n    if (typeof value === \"number\")\r\n        return new DateTime(value);\r\n    throw new Exception(\"Cannot parse DateTime value '\" + value + \"'\");\r\n});"
  },
  {
    "path": "src/Primitives/Duration.ts",
    "content": "enum DurationType {\r\n    Automatic = 0,\r\n    Forever = 1,\r\n    TimeSpan = 2,\r\n}\r\n\r\nclass Duration implements ICloneable {\r\n    private _Type: DurationType = DurationType.TimeSpan;\r\n    private _TimeSpan: TimeSpan;\r\n\r\n    constructor(ts?: TimeSpan) {\r\n        this._TimeSpan = ts;\r\n    }\r\n\r\n    Clone(): Duration {\r\n        var dur = new Duration();\r\n        dur._Type = this._Type;\r\n        dur._TimeSpan = this._TimeSpan;\r\n        return dur;\r\n    }\r\n\r\n    get Type(): DurationType { return this._Type; }\r\n    get TimeSpan(): TimeSpan {\r\n        if (this._Type === DurationType.TimeSpan)\r\n            return this._TimeSpan;\r\n    }\r\n    get HasTimeSpan(): boolean { return this._Type === DurationType.TimeSpan }\r\n    get IsForever(): boolean { return this._Type === DurationType.Forever; }\r\n    get IsAutomatic(): boolean { return this._Type === DurationType.Automatic; }\r\n\r\n    get IsZero(): boolean { return this._Type === DurationType.TimeSpan && this._TimeSpan.Ticks === 0; }\r\n\r\n    static Automatic: Duration = (function () { var d = new Duration(); (<any>d)._Type = DurationType.Automatic; return d; })();\r\n    static Forever: Duration = (function () { var d = new Duration(); (<any>d)._Type = DurationType.Forever; return d; })();\r\n}\r\nFayde.CoreLibrary.addPrimitive(Duration);\r\nnullstone.registerTypeConverter(Duration, (val: any): Duration => {\r\n    if (val instanceof Duration)\r\n\t    return <Duration>val;\r\n    if (!val || val.toString().toLowerCase() === \"automatic\")\r\n        return Duration.Automatic;\r\n    if (val.toString().toLowerCase() === \"forever\")\r\n        return Duration.Forever;\r\n    var ts = nullstone.convertAnyToType(val, TimeSpan);\r\n    return new Duration(ts);\r\n});\r\n"
  },
  {
    "path": "src/Primitives/Font.ts",
    "content": "module Fayde {\r\n    export var FontStyle = minerva.FontStyle;\r\n    export var FontStretch = minerva.FontStretch;\r\n    Fayde.CoreLibrary.addEnum(FontStretch, \"FontStretch\");\r\n    export var Font = minerva.Font;\r\n    Fayde.CoreLibrary.add(minerva.Font);\r\n}"
  },
  {
    "path": "src/Primitives/FontFamily.ts",
    "content": "class FontFamily implements ICloneable {\r\n    constructor(public FamilyNames: string) { }\r\n    toString(): string {\r\n        return this.FamilyNames;\r\n    }\r\n    Clone(): FontFamily {\r\n        return new FontFamily(this.FamilyNames);\r\n    }\r\n}\r\nFayde.CoreLibrary.addPrimitive(FontFamily);\r\nnullstone.registerTypeConverter(FontFamily, (val: any): any => {\r\n    if (!val) return new FontFamily(minerva.Font.DEFAULT_FAMILY);\r\n    return new FontFamily(val.toString());\r\n});"
  },
  {
    "path": "src/Primitives/KeyTime.ts",
    "content": "class KeyTime implements ICloneable {\r\n    private _IsPaced: boolean = false;\r\n    private _IsUniform: boolean = false;\r\n    private _TimeSpan: TimeSpan = null;\r\n    private _Percent: number = null;\r\n    IsValid: boolean = true;\r\n\r\n    static CreateUniform(): KeyTime {\r\n        var kt = new KeyTime();\r\n        kt._IsUniform = true;\r\n        return kt;\r\n    }\r\n    static CreateTimeSpan(ts: TimeSpan): KeyTime {\r\n        var kt = new KeyTime();\r\n        kt._TimeSpan = ts;\r\n        return kt;\r\n    }\r\n\r\n    Clone(): KeyTime {\r\n        var kt = new KeyTime();\r\n        kt._TimeSpan = this._TimeSpan;\r\n        kt._IsPaced = this._IsPaced;\r\n        kt._IsUniform = this._IsUniform;\r\n        kt._Percent = this._Percent;\r\n        return kt;\r\n    }\r\n\r\n    get IsPaced(): boolean { return this._IsPaced; }\r\n    get IsUniform(): boolean { return this._IsUniform; }\r\n    get HasTimeSpan(): boolean { return this._TimeSpan != null; }\r\n    get TimeSpan(): TimeSpan { return this._TimeSpan; }\r\n    get HasPercent(): boolean { return this._Percent != null; }\r\n    get Percent(): number { return this._Percent; }\r\n}\r\nFayde.CoreLibrary.addPrimitive(KeyTime);\r\nnullstone.registerTypeConverter(KeyTime, (val: any): KeyTime => {\r\n    if (!val || val.toString().toLowerCase() === \"uniform\")\r\n        return KeyTime.CreateUniform();\r\n    var ts = nullstone.convertAnyToType(val, TimeSpan);\r\n    return KeyTime.CreateTimeSpan(ts);\r\n});"
  },
  {
    "path": "src/Primitives/Length.ts",
    "content": "class Length {\r\n}\r\nFayde.CoreLibrary.addPrimitive(Length);\r\nnullstone.registerTypeConverter(Length, (val: any): number => {\r\n    if (!val || val.toString().toLowerCase() === \"auto\")\r\n        return Number.NaN;\r\n    if (typeof val === \"number\")\r\n        return val;\r\n    return parseFloat(val.toString());\r\n});"
  },
  {
    "path": "src/Primitives/Point.ts",
    "content": "class Point extends minerva.Point {\r\n    Clone (): Point {\r\n        return new Point(this.x, this.y);\r\n    }\r\n\r\n    static LERP (start: Point, end: Point, p: number): Point {\r\n        var x = start.x + (end.x - start.x) * p;\r\n        var y = start.y + (end.y - start.y) * p;\r\n        return new Point(x, y);\r\n    }\r\n}\r\nFayde.CoreLibrary.addPrimitive(Point);\r\n\r\nnullstone.registerTypeConverter(Point, (val: any): Point => {\r\n    if (!val)\r\n        return new Point();\r\n    if (val instanceof Point)\r\n        return <Point>val;\r\n    if (val instanceof minerva.Point)\r\n        return new Point(val.x, val.y);\r\n    var tokens = Fayde.splitCommaList(val.toString());\r\n    if (tokens.length === 2) {\r\n        var x = parseFloat(tokens[0]);\r\n        var y = parseFloat(tokens[1]);\r\n        return new Point(x, y);\r\n    }\r\n    throw new Exception(\"Cannot parse Point value '\" + val + \"'\");\r\n});\r\n"
  },
  {
    "path": "src/Primitives/Rect.ts",
    "content": "class Rect extends minerva.Rect {\r\n    Clone (): Rect {\r\n        return new Rect(this.x, this.y, this.width, this.height);\r\n    }\r\n}\r\nFayde.CoreLibrary.addPrimitive(Rect);\r\n\r\nnullstone.registerTypeConverter(Rect, (val: any): any => {\r\n    if (!val)\r\n        return new Rect();\r\n    if (val instanceof Rect)\r\n        return val;\r\n\r\n    var tokens = Fayde.splitCommaList(val.toString());\r\n    if (tokens.length === 4) {\r\n        return new Rect(parseFloat(tokens[0]), parseFloat(tokens[1]), parseFloat(tokens[2]), parseFloat(tokens[3]));\r\n    }\r\n    throw new Error(\"Cannot parse Rect value '\" + val + \"'\");\r\n});\r\n"
  },
  {
    "path": "src/Primitives/Size.ts",
    "content": "class Size extends minerva.Size {\r\n    Clone (): Size {\r\n        return new Size(this.width, this.height);\r\n    }\r\n}\r\nFayde.CoreLibrary.addPrimitive(Size);\r\n\r\nnullstone.registerTypeConverter(Size, (val: any): Size => {\r\n    if (!val)\r\n        return new Size();\r\n    if (val instanceof Size)\r\n        return <Size>val;\r\n    if (val instanceof minerva.Size)\r\n        return new Size(val.width, val.height);\r\n    var tokens = Fayde.splitCommaList(val.toString());\r\n    if (tokens.length === 2) {\r\n        var w = parseFloat(tokens[0]);\r\n        var h = parseFloat(tokens[1]);\r\n        return new Size(w, h);\r\n    }\r\n    throw new Exception(\"Cannot parse Size value '\" + val + \"'\");\r\n});\r\n"
  },
  {
    "path": "src/Primitives/Thickness.ts",
    "content": "class Thickness extends minerva.Thickness {\r\n    Clone (): Thickness {\r\n        return new Thickness(this.left, this.top, this.right, this.bottom);\r\n    }\r\n\r\n    toString () {\r\n        var l = this.left || 0;\r\n        var t = this.top || 0;\r\n        var r = this.right || 0;\r\n        var b = this.bottom || 0;\r\n        return [l, t, r, b].join(',');\r\n    }\r\n}\r\nFayde.CoreLibrary.addPrimitive(Thickness);\r\n\r\nnullstone.registerTypeConverter(Thickness, (val: any): Thickness => {\r\n    if (!val)\r\n        return new Thickness();\r\n    if (typeof val === \"number\")\r\n        return new Thickness(val, val, val, val);\r\n    if (val instanceof Thickness) {\r\n        var t = <Thickness>val;\r\n        return new Thickness(t.left, t.top, t.right, t.bottom);\r\n    }\r\n    var tokens = Fayde.splitCommaList(val.toString());\r\n    var left, top, right, bottom;\r\n    if (tokens.length === 1) {\r\n        left = top = right = bottom = parseFloat(tokens[0]);\r\n    } else if (tokens.length === 2) {\r\n        left = right = parseFloat(tokens[0]);\r\n        top = bottom = parseFloat(tokens[1]);\r\n    } else if (tokens.length === 4) {\r\n        left = parseFloat(tokens[0]);\r\n        top = parseFloat(tokens[1]);\r\n        right = parseFloat(tokens[2]);\r\n        bottom = parseFloat(tokens[3]);\r\n    } else {\r\n        throw new Exception(\"Cannot parse Thickness value '\" + val + \"'\");\r\n    }\r\n    return new Thickness(left, top, right, bottom);\r\n});\r\n"
  },
  {
    "path": "src/Primitives/TimeSpan.ts",
    "content": "class TimeSpan {\r\n    static _TicksPerMillisecond = 1;\r\n    static _TicksPerSecond = 1000;\r\n    static _TicksPerMinute = TimeSpan._TicksPerSecond * 60;\r\n    static _TicksPerHour = TimeSpan._TicksPerMinute * 60;\r\n    static _TicksPerDay = TimeSpan._TicksPerHour * 24;\r\n\r\n    private _Ticks: number = 0;\r\n\r\n    static get Zero(): TimeSpan { return new TimeSpan(); }\r\n    static get MinValue(): TimeSpan { return new TimeSpan(Number.MIN_VALUE); }\r\n    static get MaxValue(): TimeSpan { return new TimeSpan(Number.MAX_VALUE); }\r\n\r\n    static FromDays(value: number): TimeSpan {\r\n        return new TimeSpan(value * this._TicksPerDay);\r\n    }\r\n    static FromHours(value: number): TimeSpan {\r\n        return new TimeSpan(value * this._TicksPerHour);\r\n    }\r\n    static FromMinutes(value: number): TimeSpan {\r\n        return new TimeSpan(value * this._TicksPerMinute);\r\n    }\r\n    static FromSeconds(value: number): TimeSpan {\r\n        return new TimeSpan(value * this._TicksPerSecond);\r\n    }\r\n    static FromMilliseconds(value: number): TimeSpan {\r\n        return new TimeSpan(value * this._TicksPerMillisecond);\r\n    }\r\n\r\n    constructor();\r\n    constructor(ticks: number);\r\n    constructor(hours: number, minutes: number, seconds: number);\r\n    constructor(days: number, hours: number, minutes: number, seconds: number, milliseconds?: number);\r\n    constructor(...args: any[]) {\r\n        if (args.length === 0)\r\n            return;\r\n        if (args.length === 1) {\r\n            this._Ticks = args[0] || 0;\r\n            return;\r\n        }\r\n        var days = 0;\r\n        var hours = 0;\r\n        var minutes = 0;\r\n        var seconds = 0;\r\n        var milliseconds = 0;\r\n\r\n        if (args.length === 3) {\r\n            hours = args[0] || 0;\r\n            minutes = args[1] || 0;\r\n            seconds = args[2] || 0;\r\n        } else {\r\n            days = args[0] || 0;\r\n            hours = args[1] || 0;\r\n            minutes = args[2] || 0;\r\n            seconds = args[3] || 0;\r\n            milliseconds = args[4] || 0;\r\n        }\r\n        \r\n        this._Ticks = (days * TimeSpan._TicksPerDay) + (hours * TimeSpan._TicksPerHour) + (minutes * TimeSpan._TicksPerMinute)\r\n            + (seconds * TimeSpan._TicksPerSecond) + (milliseconds * TimeSpan._TicksPerMillisecond);\r\n    }\r\n\r\n    get Days(): number {\r\n        return this._Ticks > 0 ? Math.floor(this._Ticks / TimeSpan._TicksPerDay) : Math.ceil(this._Ticks / TimeSpan._TicksPerDay);\r\n    }\r\n    get Hours(): number {\r\n        var remTicks = this._Ticks % TimeSpan._TicksPerDay;\r\n        return remTicks > 0 ? Math.floor(remTicks / TimeSpan._TicksPerHour) : Math.ceil(remTicks / TimeSpan._TicksPerHour);\r\n    }\r\n    get Minutes(): number {\r\n        var remTicks = this._Ticks % TimeSpan._TicksPerDay;\r\n        remTicks = remTicks % TimeSpan._TicksPerHour;\r\n        return remTicks > 0 ? Math.floor(remTicks / TimeSpan._TicksPerMinute) : Math.ceil(remTicks / TimeSpan._TicksPerMinute);\r\n    }\r\n    get Seconds(): number {\r\n        var remTicks = this._Ticks % TimeSpan._TicksPerDay;\r\n        remTicks = remTicks % TimeSpan._TicksPerHour;\r\n        remTicks = remTicks % TimeSpan._TicksPerMinute;\r\n        return remTicks > 0 ? Math.floor(remTicks / TimeSpan._TicksPerSecond) : Math.ceil(remTicks / TimeSpan._TicksPerSecond);\r\n    }\r\n    get Milliseconds(): number {\r\n        var remTicks = this._Ticks % TimeSpan._TicksPerDay;\r\n        remTicks = remTicks % TimeSpan._TicksPerHour;\r\n        remTicks = remTicks % TimeSpan._TicksPerMinute;\r\n        remTicks = remTicks % TimeSpan._TicksPerSecond;\r\n        return remTicks > 0 ? Math.floor(remTicks / TimeSpan._TicksPerMillisecond) : Math.ceil(remTicks / TimeSpan._TicksPerMillisecond);\r\n    }\r\n    get Ticks(): number { return this._Ticks; }\r\n\r\n    get TotalDays(): number { return this._Ticks / TimeSpan._TicksPerDay; }\r\n    get TotalHours(): number { return this._Ticks / TimeSpan._TicksPerHour; }\r\n    get TotalMinutes(): number { return this._Ticks / TimeSpan._TicksPerMinute; }\r\n    get TotalSeconds(): number { return this._Ticks / TimeSpan._TicksPerSecond; }\r\n    get TotalMilliseconds(): number { return this._Ticks / TimeSpan._TicksPerMillisecond; }\r\n\r\n    AddTicks(ticks: number) {\r\n        if (ticks == null)\r\n            return;\r\n        if (isNaN(ticks))\r\n            return;\r\n        this._Ticks += ticks;\r\n    }\r\n    AddMilliseconds(milliseconds: number) {\r\n        this.AddTicks(milliseconds * TimeSpan._TicksPerMillisecond);\r\n    }\r\n\r\n    Add(ts2: TimeSpan): TimeSpan {\r\n        var ts = new TimeSpan();\r\n        ts._Ticks = this._Ticks + ts2._Ticks;\r\n        return ts;\r\n    }\r\n    Subtract(ts2: TimeSpan): TimeSpan {\r\n        var ts = new TimeSpan();\r\n        ts._Ticks = this._Ticks - ts2._Ticks;\r\n        return ts;\r\n    }\r\n    Multiply(v: number): TimeSpan {\r\n        var ts = new TimeSpan();\r\n        ts._Ticks = Math.round(this._Ticks * v);\r\n        return ts;\r\n    }\r\n    Divide(ts2: TimeSpan): TimeSpan {\r\n        var ts = new TimeSpan();\r\n        ts._Ticks = this._Ticks / ts2._Ticks;\r\n        return ts;\r\n    }\r\n    CompareTo(ts2: TimeSpan): number {\r\n        if (this._Ticks === ts2._Ticks)\r\n            return 0;\r\n        return (this._Ticks > ts2._Ticks) ? 1 : -1;\r\n    }\r\n    IsZero(): boolean {\r\n        return this._Ticks === 0;\r\n    }\r\n\r\n    GetJsDelay(): number {\r\n        return this._Ticks * TimeSpan._TicksPerMillisecond;\r\n    }\r\n\r\n    toString(format?: string): string {\r\n        if (!format)\r\n            return Fayde.Localization.FormatSingle(this, \"c\");\r\n        return Fayde.Localization.FormatSingle(this, format);\r\n    }\r\n    valueOf(): Object {\r\n        return this.Ticks;\r\n    }\r\n}\r\nFayde.CoreLibrary.addPrimitive(TimeSpan);\r\n\r\nnullstone.registerTypeConverter(TimeSpan, (val: any): TimeSpan => {\r\n    if (val instanceof TimeSpan)\r\n        return <TimeSpan>val;\r\n    if (val instanceof Duration)\r\n    {\r\n\tvar duration = <Duration>val;\r\n\tif (duration.HasTimeSpan)\r\n            return new TimeSpan(duration.TimeSpan.Ticks);\r\n\telse\r\n            throw new Exception(\"Cannot convert \" + duration.IsForever ? \"Forever\" : \"Automatic\" +\r\n\t\t\t\t+ \" duration to TimeSpan\");\r\n    }\r\n    if (typeof val === \"number\")\r\n        return new TimeSpan(<number>val);\r\n    val = val.toString();\r\n\r\n    var tokens = val.split(\":\");\r\n    if (tokens.length === 1) {\r\n        var ticks = parseFloat(val);\r\n        if (!isNaN(ticks))\r\n            return new TimeSpan(<number>ticks);\r\n        throw new Exception(\"Invalid TimeSpan format '\" + val + \"'.\");\r\n    }\r\n\r\n    if (tokens.length !== 3)\r\n        throw new Exception(\"Invalid TimeSpan format '\" + val + \"'.\");\r\n\r\n    /// [days.]hours:minutes:seconds[.fractionalSeconds]\r\n    var days = 0;\r\n    var hours: number;\r\n    var minutes: number;\r\n    var seconds: number;\r\n    var milliseconds = 0;\r\n\r\n    var daysplit = tokens[0].split(\".\");\r\n    if (daysplit.length === 2) {\r\n        days = parseInt(daysplit[0]);\r\n        hours = parseInt(daysplit[1]);\r\n    } else if (daysplit.length === 1) {\r\n        hours = parseInt(daysplit[0]);\r\n    }\r\n\r\n    minutes = parseInt(tokens[1]);\r\n\r\n    seconds = parseFloat(tokens[2]);\r\n    milliseconds = seconds % 1;\r\n    seconds = seconds - milliseconds;\r\n    milliseconds *= 1000.0;\r\n\r\n    return new TimeSpan(days, hours, minutes, seconds, milliseconds);\r\n});\r\n"
  },
  {
    "path": "src/Primitives/TypeConversion.ts",
    "content": "module Fayde {\r\n    export function splitCommaList (str: string): string[] {\r\n        var tokens: string[] = [];\r\n        for (var i = 0, arr = str.split(' ').join(',').split(','); i < arr.length; i++) {\r\n            var cur = arr[i];\r\n            if (cur)\r\n                tokens.push(cur);\r\n        }\r\n        return tokens;\r\n    }\r\n}"
  },
  {
    "path": "src/Runtime/BError.ts",
    "content": "class BError {\r\n    static Argument: number = 2;\r\n    static InvalidOperation: number = 3;\r\n    static XamlParse: number = 5;\r\n    static Attach: number = 6;\r\n    Message: string;\r\n    Number: number;\r\n    Data: any;\r\n    ThrowException() {\r\n        var ex: Exception;\r\n        switch (this.Number) {\r\n            case BError.Attach:\r\n                ex = new AttachException(this.Message, this.Data);\r\n                break;\r\n            case BError.Argument:\r\n                ex = new ArgumentException(this.Message);\r\n                break;\r\n            case BError.InvalidOperation:\r\n                ex = new InvalidOperationException(this.Message);\r\n                break;\r\n            case BError.XamlParse:\r\n                ex = new XamlParseException(this.Message);\r\n                break;\r\n            default:\r\n                ex = new Exception(this.Message);\r\n                break;\r\n        }\r\n        throw ex;\r\n    }\r\n}"
  },
  {
    "path": "src/Runtime/Bootstrap.ts",
    "content": "module Fayde {\r\n    import XamlMarkup = nullstone.markup.xaml.XamlMarkup;\r\n\r\n    export function Bootstrap(onLoaded?: (app: Application) => any) {\r\n        var url = document.body.getAttribute(\"fayde-app\");\r\n        if (!url) {\r\n            console.warn(\"No application specified.\");\r\n            return;\r\n        }\r\n\r\n        var canvas: HTMLCanvasElement = document.getElementsByTagName(\"canvas\")[0];\r\n        if (!canvas)\r\n            document.body.appendChild(canvas = document.createElement(\"canvas\"));\r\n\r\n        bootstrap(url, canvas, onLoaded);\r\n    }\r\n\r\n    function bootstrap(url: string, canvas: HTMLCanvasElement, onLoaded: (app: Application) => any) {\r\n        var app: Application;\r\n\r\n        function resolveConfig(): Promise<void> {\r\n            perfex.phases.start('ResolveConfig');\r\n            return new Promise<void>((resolve, reject) => {\r\n                Fayde.LoadConfigJson((config, err) => {\r\n                    if (err)\r\n                        console.warn('Could not load fayde configuration file.', err);\r\n                    resolve();\r\n                });\r\n            });\r\n        }\r\n\r\n        function getApp(): Promise<XamlMarkup> {\r\n            perfex.phases.start('RetrieveApp');\r\n            return Markup.Retrieve(url);\r\n        }\r\n\r\n        function resolveTheme(markup: XamlMarkup): Promise<XamlMarkup> {\r\n            perfex.phases.start('ResolveTheme');\r\n            var root = <Element>markup.root;\r\n            var themeName = root.getAttribute(\"ThemeName\") || DEFAULT_THEME_NAME;\r\n            return ThemeManager.LoadAsync(themeName);\r\n        }\r\n\r\n        function resolveApp() {\r\n            perfex.phases.start('ResolveApp');\r\n            return Application.GetAsync(url)\r\n                .then(result => Application.Current = app = result);\r\n        }\r\n\r\n        function finishError(err: any) {\r\n            console.error(\"An error occurred retrieving the application.\", err);\r\n        }\r\n\r\n        function startApp() {\r\n            perfex.phases.start('StartApp');\r\n            app.Attach(canvas);\r\n            app.Start();\r\n            loaded();\r\n        }\r\n\r\n        function loaded() {\r\n            onLoaded && onLoaded(app);\r\n            perfex.phases.start('Running');\r\n        }\r\n\r\n        resolveConfig()\r\n            .then(getApp, finishError)\r\n            .then(resolveTheme, finishError)\r\n            .then(resolveApp, finishError)\r\n            .then(startApp, finishError);\r\n    }\r\n}"
  },
  {
    "path": "src/Runtime/Configure.ts",
    "content": "module Fayde {\r\n    var jsonFile = 'fayde.json';\r\n\r\n    declare var require;\r\n\r\n    export function LoadConfigJson (onComplete: (config: any, err?: any) => void) {\r\n        require(['text!' + jsonFile],\r\n            (jsontext) => configure(jsontext, onComplete),\r\n            (err) => onComplete(err));\r\n    }\r\n\r\n    function configure (jsontext: string, onComplete: (config: any, err?: any) => void) {\r\n        var json: any;\r\n        try {\r\n            json = JSON.parse(jsontext);\r\n        } catch (err) {\r\n            return onComplete(null, err);\r\n        }\r\n        if (json) {\r\n            libs.configure(json.libs || {});\r\n            themes.configure(json.themes || {});\r\n            debug.configure(json.debug || {});\r\n        }\r\n        onComplete(json);\r\n    }\r\n\r\n    module libs {\r\n        interface ILibraryConfig {\r\n            name: string;\r\n            path: string;\r\n            base: string;\r\n            deps: string[];\r\n            exports: string\r\n            useMin: boolean;\r\n        }\r\n\r\n        export function configure (json) {\r\n            var libs = [];\r\n            for (var libName in json) {\r\n                libs.push(getLibConfig(libName, json[libName]));\r\n            }\r\n\r\n            for (var i = 0; i < libs.length; i++) {\r\n                setupLibraryConfig(libs[i]);\r\n            }\r\n        }\r\n\r\n        function getLibConfig (libName: string, libJson: any): ILibraryConfig {\r\n            return {\r\n                name: libName,\r\n                path: libJson.path,\r\n                base: libJson.base,\r\n                deps: libJson.deps,\r\n                exports: libJson.exports,\r\n                useMin: libJson.useMin\r\n            };\r\n        }\r\n\r\n        function setupLibraryConfig (lib: ILibraryConfig) {\r\n            var uri = new Uri(lib.name);\r\n            if (uri.scheme !== \"http\")\r\n                uri = new Uri(\"lib://\" + lib.name);\r\n            var library = Fayde.TypeManager.resolveLibrary(uri.toString());\r\n            if (!!lib.path)\r\n                library.sourcePath = lib.path;\r\n            if (!!lib.base)\r\n                library.basePath = lib.base;\r\n            if (!!lib.exports)\r\n                library.exports = lib.exports;\r\n            if (!!lib.deps)\r\n                library.deps = lib.deps;\r\n            library.useMin = (lib.useMin === true);\r\n            (<any>library).$configModule();\r\n        }\r\n    }\r\n\r\n    module themes {\r\n        export function configure (json) {\r\n            for (var libName in json) {\r\n                var co = json[libName];\r\n                var path = co === \"none\" ? null : (co.path ? co.path : undefined);\r\n                ThemeConfig.Set(libName, path);\r\n            }\r\n        }\r\n    }\r\n\r\n    module debug {\r\n        export function configure (json) {\r\n            if (toBoolean(json.warnMissingThemes))\r\n                Theme.WarnMissing = true;\r\n            if (toBoolean(json.warnBrokenPath))\r\n                Data.WarnBrokenPath = true;\r\n        }\r\n\r\n        function toBoolean (val: any): boolean {\r\n            return val === \"true\"\r\n                || val === true;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Runtime/Debug.ts",
    "content": "\r\nmodule Fayde {\r\n    export module Render {\r\n        export var Debug = false;\r\n        export var DebugIndent = 0;\r\n    }\r\n\r\n    export module Layout {\r\n        export var Debug = false;\r\n        export var DebugIndent = 0;\r\n    }\r\n\r\n    export module Media {\r\n        export module Animation {\r\n            export var Log = false;\r\n            export var LogApply = false;\r\n        }\r\n        export module VSM {\r\n            export var Debug = false;\r\n        }\r\n    }\r\n    export module Data {\r\n        export var Debug = false;\r\n        export var IsCounterEnabled = false;\r\n        export var DataContextCounter = 0;\r\n    }\r\n    export var IsInspectionOn = false;\r\n}"
  },
  {
    "path": "src/Runtime/NumberEx.ts",
    "content": "﻿module NumberEx {\r\n    var epsilon: number = 1.192093E-07;\r\n    var adjustment: number = 10;\r\n    export function AreClose(val1: number, val2: number): boolean {\r\n        if (val1 === val2)\r\n            return true;\r\n        var softdiff = (Math.abs(val1) + Math.abs(val2) + adjustment) * epsilon;\r\n        var diff = val1 - val2;\r\n        return -softdiff < diff && diff < softdiff;\r\n    }\r\n    export function IsLessThanClose(val1: number, val2: number): boolean {\r\n        return val1 > val2 || !AreClose(val1, val2);\r\n    }\r\n    export function IsGreaterThanClose(val1: number, val2: number): boolean {\r\n        return val1 > val2 || !AreClose(val1, val2);\r\n    }\r\n}"
  },
  {
    "path": "src/Runtime/React.ts",
    "content": "module Fayde {\r\n    interface IReactable {\r\n        $$reaction_sources: any[];\r\n        $$reactions: IReaction[];\r\n    }\r\n    interface IReaction {\r\n        (val?: any);\r\n    }\r\n\r\n    export function Incite (obj: any, val?: any) {\r\n        if (!obj)\r\n            return;\r\n        var reactions = (<IReactable>obj).$$reactions;\r\n        if (!reactions)\r\n            return;\r\n        var rs = (<IReactable>obj).$$reaction_sources;\r\n        for (var i = 0; i < reactions.length; i++) {\r\n            reactions[i].call(rs[i], val);\r\n        }\r\n    }\r\n\r\n    export function ReactTo (obj: any, scope: any, changed: (val?: any) => any) {\r\n        if (!obj)\r\n            return;\r\n        var rs = obj.$$reaction_sources;\r\n        if (!rs) {\r\n            rs = [];\r\n            Object.defineProperty(obj, \"$$reaction_sources\", {value: rs, enumerable: false});\r\n        }\r\n        rs.push(scope);\r\n        var reactions = obj.$$reactions;\r\n        if (!reactions) {\r\n            reactions = [];\r\n            Object.defineProperty(obj, \"$$reactions\", {value: reactions, enumerable: false});\r\n        }\r\n        reactions.push(changed);\r\n    }\r\n\r\n    export function UnreactTo (obj: any, scope: any) {\r\n        if (!obj)\r\n            return;\r\n        var reactions = obj.$$reactions;\r\n        if (!reactions)\r\n            return;\r\n        var rs = obj.$$reaction_sources;\r\n        var index = rs.indexOf(scope);\r\n        if (index < 0)\r\n            return;\r\n        rs.splice(index, 1);\r\n        reactions.splice(index, 1);\r\n    }\r\n}"
  },
  {
    "path": "src/Runtime/StringEx.ts",
    "content": "module StringEx {\r\n    export function Format(format: string, ...items: any[]): string {\r\n        var args = arguments;\r\n        return format.replace(/{(\\d+)}/g, function (match: string, ...matches: any[]): string {\r\n            var i = parseInt(matches[0]);\r\n            return typeof items[i] != 'undefined'\r\n                ? items[i]\r\n                : match;\r\n        });\r\n    }\r\n}"
  },
  {
    "path": "src/Runtime/TimelineProfile.ts",
    "content": "interface ITimelineEvent {\r\n    Type: string;\r\n    Name: string;\r\n    Time: number;\r\n}\r\n\r\ninterface ITimelineGroup {\r\n    Type: string;\r\n    Data: string;\r\n    Start: number;\r\n    Length: number;\r\n}\r\n\r\nclass TimelineProfile {\r\n    private static _Events: ITimelineEvent[] = [];\r\n    static Groups: ITimelineGroup[] = [];\r\n    static TimelineStart: number = 0;\r\n\r\n    static IsNextLayoutPassProfiled: boolean = true;\r\n\r\n    static Parse(isStart: boolean, name: string) {\r\n        if (!isStart)\r\n            return TimelineProfile._FinishEvent(\"Parse\", name);\r\n        TimelineProfile._Events.push({\r\n            Type: \"Parse\",\r\n            Name: name,\r\n            Time: new Date().valueOf()\r\n        });\r\n    }\r\n    static Navigate(isStart: boolean, name?: string) {\r\n        if (!isStart)\r\n            return TimelineProfile._FinishEvent(\"Navigate\", name);\r\n        TimelineProfile._Events.push({\r\n            Type: \"Navigate\",\r\n            Name: name,\r\n            Time: new Date().valueOf(),\r\n        });\r\n    }\r\n    static LayoutPass(isStart: boolean) {\r\n        if (!TimelineProfile.IsNextLayoutPassProfiled)\r\n            return;\r\n        if (!isStart) {\r\n            TimelineProfile.IsNextLayoutPassProfiled = false;\r\n            return TimelineProfile._FinishEvent(\"LayoutPass\");\r\n        }\r\n        TimelineProfile._Events.push({\r\n            Type: \"LayoutPass\",\r\n            Name: \"\",\r\n            Time: new Date().valueOf(),\r\n        });\r\n    }\r\n\r\n    private static _FinishEvent(type: string, name?: string) {\r\n        var evts = TimelineProfile._Events;\r\n        var len = evts.length;\r\n        var evt: ITimelineEvent;\r\n        for (var i = len - 1; i >= 0; i--) {\r\n            evt = evts[i];\r\n            if (evt.Type === type && (!name || evt.Name === name)) {\r\n                evts.splice(i, 1);\r\n                break;\r\n            }\r\n            evt = null;\r\n        }\r\n        if (!evt)\r\n            return;\r\n        TimelineProfile.Groups.push({\r\n            Type: evt.Type,\r\n            Data: evt.Name,\r\n            Start: evt.Time - TimelineProfile.TimelineStart,\r\n            Length: new Date().valueOf() - evt.Time\r\n        });\r\n    }\r\n}\r\nTimelineProfile.TimelineStart = new Date().valueOf();"
  },
  {
    "path": "src/Shapes/DoubleCollection.ts",
    "content": "/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Shapes {\r\n    export class DoubleCollection extends XamlObjectCollection<XamlObject> {\r\n    }\r\n    Fayde.CoreLibrary.add(DoubleCollection);\r\n}"
  },
  {
    "path": "src/Shapes/Ellipse.ts",
    "content": "/// <reference path=\"Shape.ts\" />\r\n\r\nmodule Fayde.Shapes {\r\n    import EllipseUpdater = minerva.shapes.ellipse.EllipseUpdater;\r\n\r\n    export class Ellipse extends Shape {\r\n        CreateLayoutUpdater () {\r\n            return new EllipseUpdater();\r\n        }\r\n\r\n        constructor () {\r\n            super();\r\n            this.Stretch = Media.Stretch.Fill;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Ellipse);\r\n}"
  },
  {
    "path": "src/Shapes/Enums.ts",
    "content": "module Fayde.Shapes {\r\n    export enum ShapeFlags {\r\n        None = 0,\r\n        Empty = 1,\r\n        Normal = 2,\r\n        Degenerate = 4,\r\n        Radii = 8,\r\n    }\r\n\r\n    export enum PenLineCap {\r\n        Flat = 0,\r\n        Square = 1,\r\n        Round = 2,\r\n        Triangle = 3,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(PenLineCap, \"PenLineCap\");\r\n\r\n    export enum PenLineJoin {\r\n        Miter = 0,\r\n        Bevel = 1,\r\n        Round = 2,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(PenLineJoin, \"PenLineJoin\");\r\n\r\n    export enum FillRule {\r\n        EvenOdd = 0,\r\n        NonZero = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(FillRule, \"FillRule\");\r\n\r\n    export enum SweepDirection {\r\n        Counterclockwise = 0,\r\n        Clockwise = 1,\r\n    }\r\n    Fayde.CoreLibrary.addEnum(SweepDirection, \"SweepDirection\");\r\n}"
  },
  {
    "path": "src/Shapes/Line.ts",
    "content": "/// <reference path=\"Shape.ts\" />\r\n\r\nmodule Fayde.Shapes {\r\n    import LineUpdater = minerva.shapes.line.LineUpdater;\r\n    export class Line extends Shape {\r\n        CreateLayoutUpdater () {\r\n            return new LineUpdater();\r\n        }\r\n\r\n        static X1Property = DependencyProperty.Register(\"X1\", () => Number, Line, 0.0);\r\n        static Y1Property = DependencyProperty.Register(\"Y1\", () => Number, Line, 0.0);\r\n        static X2Property = DependencyProperty.Register(\"X2\", () => Number, Line, 0.0);\r\n        static Y2Property = DependencyProperty.Register(\"Y2\", () => Number, Line, 0.0);\r\n        X1: number;\r\n        Y1: number;\r\n        X2: number;\r\n        Y2: number;\r\n    }\r\n    Fayde.CoreLibrary.add(Line);\r\n\r\n    module reactions {\r\n        UIReaction<number>(Line.X1Property, (upd: LineUpdater, ov, nv) => upd.invalidatePath(), false);\r\n        UIReaction<number>(Line.Y1Property, (upd: LineUpdater, ov, nv) => upd.invalidatePath(), false);\r\n        UIReaction<number>(Line.X2Property, (upd: LineUpdater, ov, nv) => upd.invalidatePath(), false);\r\n        UIReaction<number>(Line.Y2Property, (upd: LineUpdater, ov, nv) => upd.invalidatePath(), false);\r\n    }\r\n}"
  },
  {
    "path": "src/Shapes/Path.ts",
    "content": "/// <reference path=\"Shape.ts\" />\r\n\r\nmodule Fayde.Shapes {\r\n    import PathUpdater = minerva.shapes.path.PathUpdater;\r\n    export class Path extends Shape {\r\n        CreateLayoutUpdater () { return new PathUpdater(); }\r\n\r\n        private static _DataCoercer (dobj: DependencyObject, propd: DependencyProperty, value: any): any {\r\n            if (typeof value === \"string\")\r\n                return Media.ParseGeometry(value);\r\n            return value;\r\n        }\r\n\r\n        // Path.Data Description: http://msdn.microsoft.com/en-us/library/system.windows.shapes.path.data(v=vs.95).aspx\r\n        static DataProperty = DependencyProperty.RegisterFull(\"Data\", () => Media.Geometry, Path, undefined, undefined, Path._DataCoercer, undefined, undefined, false);\r\n        Data: Media.Geometry;\r\n    }\r\n    Fayde.CoreLibrary.add(Path);\r\n\r\n    module reactions {\r\n        UIReaction<Media.Geometry>(Path.DataProperty, (upd: PathUpdater, ov, nv) => upd.invalidateNaturalBounds());\r\n    }\r\n}"
  },
  {
    "path": "src/Shapes/PointCollection.ts",
    "content": "/// <reference path=\"../Core/XamlObjectCollection.ts\" />\r\n\r\nmodule Fayde.Shapes {\r\n    export class PointCollection implements nullstone.ICollection<Point> {\r\n        private _ht: Point[] = [];\r\n\r\n        get Count () {\r\n            return this._ht.length;\r\n        }\r\n\r\n        static FromData (data: string): PointCollection {\r\n            var pc = new PointCollection();\r\n            pc._ht = pc._ht.concat(Media.ParseShapePoints(data));\r\n            return pc;\r\n        }\r\n\r\n        static FromArray (data: Point[]): PointCollection {\r\n            var pc = new PointCollection();\r\n            pc._ht = pc._ht.concat(data);\r\n            return pc;\r\n        }\r\n\r\n        GetValueAt (index: number): Point {\r\n            return this._ht[index];\r\n        }\r\n\r\n        SetValueAt (index: number, value: Point): boolean {\r\n            if (index < 0 || index >= this._ht.length)\r\n                return false;\r\n            var removed = this._ht[index];\r\n            var added = value;\r\n            this._ht[index] = added;\r\n\r\n            Incite(this);\r\n        }\r\n\r\n        Add (value: Point) {\r\n            this._ht.push(value);\r\n            Incite(this);\r\n        }\r\n\r\n        AddRange (points: Point[]) {\r\n            this._ht.push.apply(this._ht, points);\r\n            Incite(this);\r\n        }\r\n\r\n        Insert (index: number, value: Point) {\r\n            if (index < 0)\r\n                return;\r\n            var len = this._ht.length;\r\n            if (index > len)\r\n                index = len;\r\n            this._ht.splice(index, 0, value);\r\n            Incite(this);\r\n        }\r\n\r\n        Remove (value: Point): boolean {\r\n            var index = this.IndexOf(value);\r\n            if (index === -1)\r\n                return false;\r\n            this.RemoveAt(index);\r\n            Incite(this);\r\n            return true;\r\n        }\r\n\r\n        RemoveAt (index: number) {\r\n            if (index < 0 || index >= this._ht.length)\r\n                return;\r\n            var value = this._ht.splice(index, 1)[0];\r\n            Incite(this);\r\n        }\r\n\r\n        Clear () {\r\n            this._ht = [];\r\n            Incite(this);\r\n        }\r\n\r\n        IndexOf (value: Point): number {\r\n            var count = this._ht.length;\r\n            for (var i = 0; i < count; i++) {\r\n                if (nullstone.equals(value, this._ht[i]))\r\n                    return i;\r\n            }\r\n            return -1;\r\n        }\r\n\r\n        Contains (value: Point): boolean {\r\n            return this.IndexOf(value) > -1;\r\n        }\r\n\r\n        getEnumerator (reverse?: boolean): nullstone.IEnumerator<Point> {\r\n            return nullstone.IEnumerator_.fromArray(this._ht, reverse);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(PointCollection);\r\n    nullstone.ICollection_.mark(PointCollection);\r\n\r\n    nullstone.registerTypeConverter(PointCollection, (val: string): PointCollection => {\r\n        var pc = new PointCollection();\r\n        pc.AddRange(Fayde.Media.ParseShapePoints(val));\r\n        return pc;\r\n    });\r\n}"
  },
  {
    "path": "src/Shapes/Polygon.ts",
    "content": "/// <reference path=\"Shape.ts\" />\r\n\r\nmodule Fayde.Shapes {\r\n    import PolygonUpdater = minerva.shapes.polygon.PolygonUpdater;\r\n    export class Polygon extends Shape {\r\n        CreateLayoutUpdater () {\r\n            return new PolygonUpdater();\r\n        }\r\n\r\n        private static _PointsCoercer (dobj: DependencyObject, propd: DependencyProperty, value: any): any {\r\n            if (typeof value === \"string\")\r\n                value = PointCollection.FromData(<string>value);\r\n            if (value instanceof Array)\r\n                value = PointCollection.FromArray(<Point[]>value);\r\n            return value;\r\n        }\r\n\r\n        static FillRuleProperty = DependencyProperty.RegisterCore(\"FillRule\", () => new Enum(FillRule), Polygon, FillRule.EvenOdd);\r\n        static PointsProperty = DependencyProperty.RegisterFull(\"Points\", () => PointCollection, Polygon, undefined, undefined, Polygon._PointsCoercer);\r\n        FillRule: FillRule;\r\n        Points: PointCollection;\r\n\r\n        constructor () {\r\n            super();\r\n            this.Points = new PointCollection();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Polygon);\r\n\r\n    module reactions {\r\n        UIReaction<FillRule>(Polygon.FillRuleProperty, (upd: PolygonUpdater, ov, nv) => upd.invalidateFillRule(), false);\r\n        UIReaction<PointCollection>(Polygon.PointsProperty, (upd: PolygonUpdater, ov, nv) => {\r\n            upd.assets.points = nv._ht;\r\n            upd.invalidatePath();\r\n        }, true, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Shapes/Polyline.ts",
    "content": "/// <reference path=\"Shape.ts\" />\r\n\r\nmodule Fayde.Shapes {\r\n    import PolylineUpdater = minerva.shapes.polyline.PolylineUpdater;\r\n    export class Polyline extends Shape {\r\n        CreateLayoutUpdater () {\r\n            return new PolylineUpdater();\r\n        }\r\n\r\n        private static _PointsCoercer (d: DependencyObject, propd: DependencyProperty, value: any): any {\r\n            if (typeof value === \"string\")\r\n                value = PointCollection.FromData(<string>value);\r\n            if (value instanceof Array)\r\n                value = PointCollection.FromArray(<Point[]>value);\r\n            return value;\r\n        }\r\n\r\n        static FillRuleProperty = DependencyProperty.RegisterCore(\"FillRule\", () => new Enum(FillRule), Polyline, FillRule.EvenOdd);\r\n        static PointsProperty = DependencyProperty.RegisterFull(\"Points\", () => PointCollection, Polyline, undefined, undefined, Polyline._PointsCoercer);\r\n        FillRule: FillRule;\r\n        Points: PointCollection;\r\n\r\n        constructor () {\r\n            super();\r\n            this.Points = new PointCollection();\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Polyline);\r\n\r\n    module reactions {\r\n        UIReaction<FillRule>(Polyline.FillRuleProperty, (upd: PolylineUpdater, ov, nv) => upd.invalidateFillRule(), false);\r\n        UIReaction<PointCollection>(Polyline.PointsProperty, (upd: PolylineUpdater, ov, nv) => {\r\n            upd.assets.points = nv._ht;\r\n            upd.invalidatePath();\r\n        }, true, false);\r\n    }\r\n}"
  },
  {
    "path": "src/Shapes/Rectangle.ts",
    "content": "/// <reference path=\"Shape.ts\" />\r\n\r\nmodule Fayde.Shapes {\r\n    import RectangleUpdater = minerva.shapes.rectangle.RectangleUpdater;\r\n\r\n    export class Rectangle extends Shape {\r\n        CreateLayoutUpdater () {\r\n            return new RectangleUpdater();\r\n        }\r\n\r\n        /* RadiusX/RadiusY Notes\r\n         For the rectangle to have rounded corners, both the RadiusX and RadiusY properties must be nonzero.\r\n         A value greater than or equal to zero and less than or equal to half the rectangle's width that describes the x-radius of the ellipse is used to round the corners of the rectangle.\r\n         Values greater than half the rectangle's width are treated as though equal to half the rectangle's width. Negative values are treated as positive values.\r\n         */\r\n        static RadiusXProperty = DependencyProperty.Register(\"RadiusX\", () => Number, Rectangle, 0.0);\r\n        static RadiusYProperty = DependencyProperty.Register(\"RadiusY\", () => Number, Rectangle, 0.0);\r\n        RadiusX: number;\r\n        RadiusY: number;\r\n\r\n        constructor () {\r\n            super();\r\n            this.Stretch = Fayde.Media.Stretch.Fill;\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Rectangle);\r\n\r\n    module reactions {\r\n        UIReaction<number>(Rectangle.RadiusXProperty, (upd, ov, nv) => upd.invalidate(), false);\r\n        UIReaction<number>(Rectangle.RadiusYProperty, (upd, ov, nv) => upd.invalidate(), false);\r\n    }\r\n}"
  },
  {
    "path": "src/Shapes/Shape.ts",
    "content": "/// <reference path=\"../Core/FrameworkElement.ts\" />\r\n\r\nmodule Fayde.Shapes {\r\n    import ShapeUpdater = minerva.shapes.shape.ShapeUpdater;\r\n\r\n    export class Shape extends FrameworkElement {\r\n        CreateLayoutUpdater () {\r\n            return new ShapeUpdater();\r\n        }\r\n\r\n        static FillProperty = DependencyProperty.Register(\"Fill\", () => Media.Brush, Shape);\r\n        //http://msdn.microsoft.com/en-us/library/system.windows.shapes.shape.stretch(v=vs.95).aspx\r\n        static StretchProperty = DependencyProperty.Register(\"Stretch\", () => new Enum(Media.Stretch), Shape, Media.Stretch.None);\r\n        static StrokeProperty = DependencyProperty.Register(\"Stroke\", () => Media.Brush, Shape);\r\n        static StrokeThicknessProperty = DependencyProperty.RegisterFull(\"StrokeThickness\", () => Number, Shape, 1.0, undefined, strokeThicknessCoercer);\r\n        static StrokeDashArrayProperty = DependencyProperty.Register(\"StrokeDashArray\", () => DoubleCollection, Shape);\r\n        static StrokeDashCapProperty = DependencyProperty.Register(\"StrokeDashCap\", () => new Enum(PenLineCap), Shape, PenLineCap.Flat);\r\n        static StrokeDashOffsetProperty = DependencyProperty.Register(\"StrokeDashOffset\", () => Number, Shape, 0.0);\r\n        static StrokeEndLineCapProperty = DependencyProperty.Register(\"StrokeEndLineCap\", () => new Enum(PenLineCap), Shape, PenLineCap.Flat);\r\n        static StrokeLineJoinProperty = DependencyProperty.Register(\"StrokeLineJoin\", () => new Enum(PenLineJoin), Shape, PenLineJoin.Miter);\r\n        static StrokeMiterLimitProperty = DependencyProperty.Register(\"StrokeMiterLimit\", () => Number, Shape, 10.0);\r\n        static StrokeStartLineCapProperty = DependencyProperty.Register(\"StrokeStartLineCap\", () => new Enum(PenLineCap), Shape, PenLineCap.Flat);\r\n        Fill: Media.Brush;\r\n        Stretch: Media.Stretch;\r\n        Stroke: Media.Brush;\r\n        StrokeThickness: number;\r\n        StrokeDashArray: DoubleCollection;\r\n        StrokeDashCap: PenLineCap;\r\n        StrokeDashOffset: number;\r\n        StrokeEndLineCap: PenLineCap;\r\n        StrokeLineJoin: PenLineJoin;\r\n        StrokeMiterLimit: number;\r\n        StrokeStartLineCap: PenLineCap;\r\n        //NOTE: HTML5 Canvas does not support start and end cap. Will use start if it's not \"Flat\"; otherwise, use end\r\n\r\n        constructor () {\r\n            super();\r\n            FrameworkElement.WidthProperty.Store.ListenToChanged(this, FrameworkElement.WidthProperty, onSizeChanged, this);\r\n            FrameworkElement.HeightProperty.Store.ListenToChanged(this, FrameworkElement.HeightProperty, onSizeChanged, this);\r\n        }\r\n    }\r\n    Fayde.CoreLibrary.add(Shape);\r\n\r\n    function onSizeChanged (shape: Shape, args: IDependencyPropertyChangedEventArgs) {\r\n        var updater = <ShapeUpdater>shape.XamlNode.LayoutUpdater;\r\n        updater.invalidateMeasure();\r\n    }\r\n\r\n    function strokeThicknessCoercer (dobj: Fayde.DependencyObject, propd: DependencyProperty, value: any): any {\r\n        if (value instanceof Thickness)\r\n            return (<Thickness>value).left;\r\n        return value;\r\n    }\r\n\r\n    module reactions {\r\n        UIReaction<Media.Stretch>(Shape.StretchProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateMeasure(), false);\r\n        UIReaction<Media.Brush>(Shape.FillProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds());\r\n        UIReaction<Media.Brush>(Shape.StrokeProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds());\r\n        UIReaction<number>(Shape.StrokeThicknessProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds(), false);\r\n        UIReaction<DoubleCollection>(Shape.StrokeDashArrayProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds());\r\n        UIReaction<PenLineCap>(Shape.StrokeDashCapProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds(), false);\r\n        UIReaction<number>(Shape.StrokeDashOffsetProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds(), false);\r\n        UIReaction<PenLineCap>(Shape.StrokeEndLineCapProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds(), false);\r\n        UIReaction<PenLineJoin>(Shape.StrokeLineJoinProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds(), false);\r\n        UIReaction<number>(Shape.StrokeMiterLimitProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds(), false);\r\n        UIReaction<PenLineCap>(Shape.StrokeStartLineCapProperty, (upd: ShapeUpdater, ov, nv) => upd.invalidateNaturalBounds(), false);\r\n    }\r\n}"
  },
  {
    "path": "src/Text/Buffer.ts",
    "content": "module Fayde.Text.Buffer {\r\n    export function cut (text: string, start: number, len: number): string {\r\n        if (!text)\r\n            return \"\";\r\n        return text.slice(0, start) + text.slice(start + len);\r\n    }\r\n\r\n    export function insert (text: string, index: number, str: string): string {\r\n        if (!text)\r\n            return str;\r\n        return [text.slice(0, index), str, text.slice(index)].join('');\r\n    }\r\n\r\n    export function replace (text: string, start: number, len: number, str: string): string {\r\n        if (!text)\r\n            return str;\r\n        return [text.slice(0, start), str, text.slice(start + len)].join('');\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/Text/History/DeleteAction.ts",
    "content": "module Fayde.Text.History {\r\n    export class DeleteAction implements IAction {\r\n        SelectionAnchor: number;\r\n        SelectionCursor: number;\r\n        Start: number;\r\n        Text: string;\r\n\r\n        constructor (selectionAnchor: number, selectionCursor: number, buffer: string, start: number, length: number) {\r\n            this.SelectionAnchor = selectionAnchor;\r\n            this.SelectionCursor = selectionCursor;\r\n            this.Start = start;\r\n            this.Text = buffer.substr(start, length);\r\n        }\r\n\r\n        Undo (bo: ITextOwner) {\r\n            bo.text = Buffer.insert(bo.text, this.Start, this.Text);\r\n        }\r\n\r\n        Redo (bo: ITextOwner): number {\r\n            bo.text = Buffer.cut(bo.text, this.Start, this.Text.length);\r\n            return this.Start;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Text/History/IAction.ts",
    "content": "module Fayde.Text.History {\r\n    export interface IAction {\r\n        SelectionAnchor: number;\r\n        SelectionCursor: number;\r\n        Undo(bufferholder: ITextOwner);\r\n        Redo(bufferholder: ITextOwner): number;\r\n    }\r\n}"
  },
  {
    "path": "src/Text/History/InsertAction.ts",
    "content": "module Fayde.Text.History {\r\n    export class InsertAction implements IAction {\r\n        SelectionAnchor: number;\r\n        SelectionCursor: number;\r\n        Start: number;\r\n        Text: string;\r\n        IsGrowable: boolean;\r\n\r\n        constructor (selectionAnchor: number, selectionCursor: number, start: number, inserted: string, isAtomic?: boolean) {\r\n            this.SelectionAnchor = selectionAnchor;\r\n            this.SelectionCursor = selectionCursor;\r\n            this.Start = start;\r\n            this.Text = inserted;\r\n            this.IsGrowable = isAtomic !== true;\r\n        }\r\n\r\n        Undo (bo: ITextOwner) {\r\n            bo.text = Buffer.cut(bo.text, this.Start, this.Text.length);\r\n        }\r\n\r\n        Redo (bo: ITextOwner): number {\r\n            bo.text = Buffer.insert(bo.text, this.Start, this.Text);\r\n            return this.Start + this.Text.length;\r\n        }\r\n\r\n        Insert (start: number, text: string) {\r\n            if (!this.IsGrowable || start !== (this.Start + this.Text.length))\r\n                return false;\r\n            this.Text += text;\r\n            return true;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Text/History/ReplaceAction.ts",
    "content": "module Fayde.Text.History {\r\n    export class ReplaceAction implements IAction {\r\n        SelectionAnchor: number;\r\n        SelectionCursor: number;\r\n        Start: number;\r\n        Length: number;\r\n        Deleted: string;\r\n        Inserted: string;\r\n\r\n        constructor (selectionAnchor: number, selectionCursor: number, buffer: string, start: number, length: number, inserted: string) {\r\n            this.SelectionAnchor = selectionAnchor;\r\n            this.SelectionCursor = selectionCursor;\r\n            this.Start = start;\r\n            this.Length = length;\r\n            this.Deleted = buffer.substr(start, length);\r\n            this.Inserted = inserted;\r\n        }\r\n\r\n        Undo (bo: ITextOwner) {\r\n            bo.text = Buffer.cut(bo.text, this.Start, this.Inserted.length);\r\n            bo.text = Buffer.insert(bo.text, this.Start, this.Deleted);\r\n        }\r\n\r\n        Redo (bo: ITextOwner): number {\r\n            bo.text = Buffer.cut(bo.text, this.Start, this.Length);\r\n            bo.text = Buffer.insert(bo.text, this.Start, this.Inserted);\r\n            return this.Start + this.Inserted.length;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Text/History/Tracker.ts",
    "content": "module Fayde.Text.History {\r\n    export class Tracker {\r\n        private $$undo: IAction[] = [];\r\n        private $$redo: IAction[] = [];\r\n        private $$maxUndoCount: number;\r\n\r\n        constructor (maxUndoCount: number) {\r\n            this.$$maxUndoCount = maxUndoCount;\r\n        }\r\n\r\n        get canUndo (): boolean {\r\n            return this.$$undo.length > 0;\r\n        }\r\n\r\n        get canRedo (): boolean {\r\n            return this.$$redo.length > 0;\r\n        }\r\n\r\n        undo (bufferholder: ITextOwner): IAction {\r\n            if (this.$$undo.length < 1)\r\n                return null;\r\n\r\n            var action = this.$$undo.pop();\r\n            if (this.$$redo.push(action) > this.$$maxUndoCount)\r\n                this.$$redo.shift();\r\n\r\n            action.Undo(bufferholder);\r\n            return action\r\n        }\r\n\r\n        redo (bufferholder: ITextOwner): number {\r\n            if (this.$$redo.length < 1)\r\n                return;\r\n\r\n            var action = this.$$redo.pop();\r\n            if (this.$$undo.push(action) > this.$$maxUndoCount)\r\n                this.$$undo.shift();\r\n\r\n            return action.Redo(bufferholder);\r\n        }\r\n\r\n        enter (anchor: number, cursor: number, start: number, newText: string) {\r\n            var action = <InsertAction>this.$$undo[this.$$undo.length - 1];\r\n\r\n            if (!(action instanceof InsertAction) || !action.Insert(start, newText))\r\n                return this.insert(anchor, cursor, start, newText);\r\n            if (this.$$redo.length > 0)\r\n                this.$$redo = [];\r\n        }\r\n\r\n        insert (anchor: number, cursor: number, start: number, newText: string) {\r\n            this.$doAction(new InsertAction(anchor, cursor, start, newText));\r\n        }\r\n\r\n        replace (anchor: number, cursor: number, text: string, start: number, length: number, newText: string) {\r\n            this.$doAction(new ReplaceAction(anchor, cursor, text, start, length, newText));\r\n        }\r\n\r\n        delete (anchor: number, cursor: number, text: string, start: number, length: number) {\r\n            this.$doAction(new Text.History.DeleteAction(anchor, cursor, text, start, length));\r\n        }\r\n\r\n        private $doAction (action: IAction) {\r\n            this.$$undo.push(action);\r\n            if (this.$$undo.length > this.$$maxUndoCount)\r\n                this.$$undo.shift();\r\n            this.$$redo = [];\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Text/ITextOwner.ts",
    "content": "module Fayde.Text {\r\n    export interface ITextOwner {\r\n        text: string;\r\n    }\r\n}"
  },
  {
    "path": "src/Text/Proxy.ts",
    "content": "module Fayde.Text {\r\n    export enum EmitChangedType {\r\n        NOTHING = 0,\r\n        SELECTION = 1 << 0,\r\n        TEXT = 1 << 1,\r\n    }\r\n\r\n    export class Proxy implements ITextOwner {\r\n        selAnchor: number = 0;\r\n        selCursor: number = 0;\r\n        selText: string = \"\";\r\n        text: string = \"\";\r\n        maxLength: number = 0;\r\n        acceptsReturn: boolean = false;\r\n\r\n        private $$batch: number = 0;\r\n        private $$emit = EmitChangedType.NOTHING;\r\n        private $$syncing: boolean = false;\r\n        private $$eventsMask: EmitChangedType;\r\n\r\n        private $$history: Text.History.Tracker;\r\n\r\n        SyncSelectionStart: (value: number) => void;\r\n        SyncSelectionLength: (value: number) => void;\r\n        SyncText: (value: string) => void;\r\n\r\n        constructor (eventsMask: EmitChangedType, maxUndoCount: number) {\r\n            this.$$eventsMask = eventsMask;\r\n            this.$$history = new Text.History.Tracker(maxUndoCount);\r\n            this.SyncSelectionStart = (value: number) => {\r\n            };\r\n            this.SyncSelectionLength = (value: number) => {\r\n            };\r\n            this.SyncText = (value: string) => {\r\n            };\r\n        }\r\n\r\n        setAnchorCursor (anchor: number, cursor: number): boolean {\r\n            if (this.selAnchor === anchor && this.selCursor === cursor)\r\n                return false;\r\n            this.SyncSelectionStart(Math.min(anchor, cursor));\r\n            this.SyncSelectionLength(Math.abs(cursor - anchor));\r\n            this.selAnchor = anchor;\r\n            this.selCursor = cursor;\r\n            this.$$emit |= EmitChangedType.SELECTION;\r\n            return true;\r\n        }\r\n\r\n        enterText (newText: string, isPaste?: boolean): boolean {\r\n            var anchor = this.selAnchor;\r\n            var cursor = this.selCursor;\r\n            var length = Math.abs(cursor - anchor);\r\n            var start = Math.min(anchor, cursor);\r\n\r\n            if ((this.maxLength > 0 && this.text.length >= this.maxLength) || (newText === '\\r') && !this.acceptsReturn)\r\n                return false;\r\n\r\n            if (length > 0) {\r\n                this.$$history.replace(anchor, cursor, this.text, start, length, newText);\r\n                this.text = Text.Buffer.replace(this.text, start, length, newText);\r\n            } else {\r\n                if (!isPaste)\r\n                    this.$$history.enter(anchor, cursor, start, newText);\r\n                else\r\n                    this.$$history.insert(anchor, cursor, start, newText);\r\n                this.text = Text.Buffer.insert(this.text, start, newText);\r\n            }\r\n\r\n            this.$$emit |= EmitChangedType.TEXT;\r\n            cursor = start + newText.length;\r\n            anchor = cursor;\r\n\r\n            return this.setAnchorCursor(anchor, cursor);\r\n        }\r\n\r\n        removeText (start: number, length: number): boolean {\r\n            if (length <= 0)\r\n                return false;\r\n\r\n            this.$$history.delete(this.selAnchor, this.selCursor, this.text, start, length);\r\n            this.text = Text.Buffer.cut(this.text, start, length);\r\n\r\n            this.$$emit |= EmitChangedType.TEXT;\r\n\r\n            return this.setAnchorCursor(start, start);\r\n        }\r\n\r\n        paste (text: string): boolean {\r\n            return this.enterText(text, true);\r\n        }\r\n\r\n        undo () {\r\n            var action = this.$$history.undo(this);\r\n            if (!action)\r\n                return;\r\n\r\n            var anchor = action.SelectionAnchor;\r\n            var cursor = action.SelectionCursor;\r\n\r\n            this.$$batch++;\r\n            this.SyncSelectionStart(Math.min(anchor, cursor));\r\n            this.SyncSelectionLength(Math.abs(cursor - anchor));\r\n            this.$$emit = EmitChangedType.TEXT | EmitChangedType.SELECTION;\r\n            this.selAnchor = anchor;\r\n            this.selCursor = cursor;\r\n            this.$$batch--;\r\n\r\n            this.$syncEmit();\r\n        }\r\n\r\n        redo () {\r\n            var anchor = this.$$history.redo(this);\r\n            if (anchor == null)\r\n                return;\r\n            var cursor = anchor;\r\n\r\n            this.$$batch++;\r\n            this.SyncSelectionStart(Math.min(anchor, cursor));\r\n            this.SyncSelectionLength(Math.abs(cursor - anchor));\r\n            this.$$emit = EmitChangedType.TEXT | EmitChangedType.SELECTION;\r\n            this.selAnchor = anchor;\r\n            this.selCursor = cursor;\r\n            this.$$batch--;\r\n\r\n            this.$syncEmit();\r\n        }\r\n\r\n        begin () {\r\n            this.$$emit = EmitChangedType.NOTHING;\r\n            this.$$batch++;\r\n        }\r\n\r\n        end () {\r\n            this.$$batch--;\r\n            this.$syncEmit();\r\n        }\r\n\r\n        beginSelect (cursor: number) {\r\n            this.$$batch++;\r\n            this.$$emit = EmitChangedType.NOTHING;\r\n            this.SyncSelectionStart(cursor);\r\n            this.SyncSelectionLength(0);\r\n            this.$$batch--;\r\n\r\n            this.$syncEmit();\r\n        }\r\n\r\n        adjustSelection (cursor: number) {\r\n            var anchor = this.selAnchor;\r\n\r\n            this.$$batch++;\r\n            this.$$emit = EmitChangedType.NOTHING;\r\n            this.SyncSelectionStart(Math.min(anchor, cursor));\r\n            this.SyncSelectionLength(Math.abs(cursor - anchor));\r\n            this.selAnchor = anchor;\r\n            this.selCursor = cursor;\r\n            this.$$batch--;\r\n\r\n            this.$syncEmit();\r\n        }\r\n\r\n        selectAll () {\r\n            this.select(0, this.text.length);\r\n        }\r\n\r\n        clearSelection (start: number) {\r\n            this.$$batch++;\r\n            this.SyncSelectionStart(start);\r\n            this.SyncSelectionLength(0);\r\n            this.$$batch--;\r\n        }\r\n\r\n        select (start: number, length: number): boolean {\r\n            start = Math.min(Math.max(0, start), this.text.length);\r\n            length = Math.min(Math.max(0, length), this.text.length - start);\r\n\r\n            this.$$batch++;\r\n            this.SyncSelectionStart(start);\r\n            this.SyncSelectionLength(length);\r\n            this.$$batch--;\r\n\r\n            this.$syncEmit();\r\n            return true;\r\n        }\r\n\r\n        setSelectionStart (value: number) {\r\n            var length = Math.abs(this.selCursor - this.selAnchor);\r\n            var start = value;\r\n            if (start > this.text.length) {\r\n                this.SyncSelectionStart(this.text.length);\r\n                return;\r\n            }\r\n\r\n            if (start + length > this.text.length) {\r\n                this.$$batch++;\r\n                length = this.text.length - start;\r\n                this.SyncSelectionLength(length);\r\n                this.$$batch--;\r\n            }\r\n\r\n            var changed = (this.selAnchor !== start);\r\n\r\n            this.selCursor = start + length;\r\n            this.selAnchor = start;\r\n\r\n            this.$$emit |= EmitChangedType.SELECTION;\r\n            this.$syncEmit();\r\n        }\r\n\r\n        setSelectionLength (value: number) {\r\n            var start = Math.min(this.selAnchor, this.selCursor);\r\n            var length = value;\r\n            if (start + length > this.text.length) {\r\n                length = this.text.length - start;\r\n                this.SyncSelectionLength(length);\r\n                return;\r\n            }\r\n\r\n            var changed = (this.selCursor !== (start + length));\r\n\r\n            this.selCursor = start + length;\r\n            this.selAnchor = start;\r\n            this.$$emit |= EmitChangedType.SELECTION;\r\n            this.$syncEmit();\r\n        }\r\n\r\n        setText (value: string) {\r\n            var text = value || \"\";\r\n            if (!this.$$syncing) {\r\n                if (this.text.length > 0) {\r\n                    this.$$history.replace(this.selAnchor, this.selCursor, this.text, 0, this.text.length, text);\r\n                    this.text = Text.Buffer.replace(this.text, 0, this.text.length, text);\r\n                } else {\r\n                    this.$$history.insert(this.selAnchor, this.selCursor, 0, text);\r\n                    this.text = text + this.text;\r\n                }\r\n\r\n                this.$$emit |= EmitChangedType.TEXT;\r\n                this.clearSelection(0);\r\n\r\n                this.$syncEmit(false);\r\n            }\r\n        }\r\n\r\n        getSelectedText() {\r\n            var start = Math.min(this.selAnchor, this.selCursor);\r\n            var len = (Math.max(this.selAnchor, this.selCursor) - start);\r\n            if (len <=  0) return \"\";\r\n            return this.text.substr(start, len);\r\n        }\r\n\r\n        private $syncEmit (syncText?: boolean) {\r\n            syncText = syncText !== false;\r\n\r\n            if (this.$$batch !== 0 || this.$$emit === EmitChangedType.NOTHING)\r\n                return;\r\n\r\n            if (syncText && (this.$$emit & EmitChangedType.TEXT))\r\n                this.$syncText();\r\n\r\n            /*\r\n             this.$$emit &= this.$$eventsMask;\r\n             if (this.$$emit & TextBoxEmitChangedType.TEXT) {\r\n             Incite(this, { type: 'text' });\r\n             }\r\n             if (this.$$emit & TextBoxEmitChangedType.SELECTION) {\r\n             Incite(this, { type: 'selection' });\r\n             }\r\n             */\r\n\r\n            this.$$emit = EmitChangedType.NOTHING;\r\n        }\r\n\r\n        private $syncText () {\r\n            this.$$syncing = true;\r\n            this.SyncText(this.text);\r\n            this.$$syncing = false;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Validation/Emit.ts",
    "content": "module Fayde.Validation {\r\n    export function Emit (fe: FrameworkElement, binding: Data.Binding, oldError: ValidationError, error: ValidationError) {\r\n        if (oldError && error) {\r\n            AddError(fe, error);\r\n            RemoveError(fe, oldError);\r\n            if (binding.NotifyOnValidationError) {\r\n                raiseBindingValidationError(fe, new ValidationErrorEventArgs(ValidationErrorEventAction.Removed, oldError));\r\n                raiseBindingValidationError(fe, new ValidationErrorEventArgs(ValidationErrorEventAction.Added, error));\r\n            }\r\n        } else if (oldError) {\r\n            RemoveError(fe, oldError);\r\n            if (binding.NotifyOnValidationError)\r\n                raiseBindingValidationError(fe, new ValidationErrorEventArgs(ValidationErrorEventAction.Removed, oldError));\r\n        } else if (error) {\r\n            AddError(fe, error);\r\n            if (binding.NotifyOnValidationError)\r\n                raiseBindingValidationError(fe, new ValidationErrorEventArgs(ValidationErrorEventAction.Added, error));\r\n        }\r\n    }\r\n\r\n    function raiseBindingValidationError (fe: FrameworkElement, args: Validation.ValidationErrorEventArgs) {\r\n        args.OriginalSource = fe;\r\n        for (var cur = <DependencyObject>fe; cur && !args.Handled; cur = VisualTreeHelper.GetParent(cur)) {\r\n            if (cur instanceof FrameworkElement)\r\n                (<FrameworkElement>cur).OnBindingValidationError(args);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Validation/Validation.ts",
    "content": "/// <reference path=\"../Collections/ObservableCollection\" />\r\n/// <reference path=\"../Collections/ReadOnlyObservableCollection\" />\r\n\r\nmodule Fayde.Validation {\r\n    import ObservableCollection = Collections.ObservableCollection;\r\n    import ReadOnlyObservableCollection = Collections.ReadOnlyObservableCollection;\r\n\r\n    class Validation extends DependencyObject {\r\n    }\r\n    Fayde.CoreLibrary.add(Validation, \"Validation\");\r\n\r\n    export var HasErrorProperty = DependencyProperty.RegisterAttached(\"HasError\", () => Boolean, Validation);\r\n    export var ErrorsProperty = DependencyProperty.RegisterAttached(\"Errors\", () => ReadOnlyObservableCollection, Validation);\r\n    var ErrorsCoreProperty = DependencyProperty.RegisterAttached(\"ErrorsCore\", () => ObservableCollection, Validation);\r\n\r\n    function GetErrorsCore (dobj: DependencyObject) {\r\n        if (!dobj)\r\n            throw new ArgumentNullException(\"element\");\r\n\r\n        var result: ObservableCollection<ValidationError> = dobj.GetValue(ErrorsCoreProperty);\r\n        if (result == null) {\r\n            result = new ObservableCollection<ValidationError>();\r\n            dobj.SetValue(ErrorsCoreProperty, result);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    export function GetErrors (dobj: DependencyObject): ReadOnlyObservableCollection<ValidationError> {\r\n        if (!dobj)\r\n            throw new ArgumentNullException(\"element\");\r\n\r\n        var result: ReadOnlyObservableCollection<ValidationError> = dobj.GetValue(ErrorsProperty);\r\n        if (result == null) {\r\n            result = new ReadOnlyObservableCollection<ValidationError>(GetErrorsCore(dobj));\r\n            dobj.SetValue(ErrorsProperty, result);\r\n        }\r\n        return result;\r\n    }\r\n\r\n    export function GetHasError (dobj: DependencyObject): boolean {\r\n        if (dobj == null)\r\n            throw new ArgumentNullException(\"element\");\r\n        return dobj.GetValue(HasErrorProperty) === true;\r\n    }\r\n\r\n    function SetHasError (dobj: DependencyObject, value: boolean) {\r\n        dobj.SetValue(HasErrorProperty, value === true);\r\n    }\r\n\r\n    export function AddError (element: FrameworkElement, error: ValidationError) {\r\n        var errors = GetErrorsCore(element);\r\n        GetErrors(element); //ensure Validation.Errors gets created\r\n        errors.Add(error);\r\n        if (errors.Count === 1)\r\n            SetHasError(element, true);\r\n\r\n        if (element instanceof Controls.Control)\r\n            (<Controls.Control>element).UpdateValidationState(false);\r\n    }\r\n\r\n    export function RemoveError (element: FrameworkElement, error: ValidationError) {\r\n        var errors = GetErrorsCore(element);\r\n        GetErrors(element); //ensure Validation.Errors gets created\r\n        if (errors.Remove(error)) {\r\n            if (errors.Count === 0) {\r\n                SetHasError(element, false);\r\n                if (element instanceof Controls.Control)\r\n                    (<Controls.Control>element).UpdateValidationState(true);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Validation/ValidationError.ts",
    "content": "module Fayde.Validation {\r\n    export class ValidationError {\r\n        ErrorContent: any;\r\n        Exception: Exception;\r\n        PropertyName: string;\r\n\r\n        constructor (content: any, exception: Exception, propertyName: string);\r\n        constructor (content: any, exception: Error, propertyName: string);\r\n        constructor (content: any, exception: any, propertyName: string) {\r\n            this.ErrorContent = content;\r\n            this.Exception = exception;\r\n            this.PropertyName = propertyName;\r\n            if (this.Exception instanceof Exception)\r\n                this.ErrorContent = this.ErrorContent || (<Exception>exception).Message;\r\n            if (this.Exception instanceof Error)\r\n                this.ErrorContent = this.ErrorContent || (<Error>exception).message;\r\n            Object.freeze(this);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "src/Validation/ValidationErrorEventAction.ts",
    "content": "module Fayde.Validation {\r\n    export enum ValidationErrorEventAction {\r\n        Added,\r\n        Removed\r\n    }\r\n}"
  },
  {
    "path": "src/Validation/ValidationErrorEventArgs.ts",
    "content": "module Fayde.Validation {\r\n    export class ValidationErrorEventArgs extends RoutedEventArgs {\r\n        Action: ValidationErrorEventAction;\r\n        Error: ValidationError;\r\n\r\n        constructor (action: ValidationErrorEventAction, error: ValidationError) {\r\n            super();\r\n            Object.defineProperties(this, {\r\n                \"Action\": {\r\n                    value: action,\r\n                    writable: false\r\n                },\r\n                \"Error\": {\r\n                    value: error,\r\n                    writable: false\r\n                }\r\n            });\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/_Debug.ts",
    "content": "module Fayde {\r\n    export function debugLayers (): any[] {\r\n        var arr = [];\r\n        var app = Fayde.Application.Current;\r\n        for (var walker = app.MainSurface.walkLayers(); walker.step();) {\r\n            arr.push(sexify(walker.current));\r\n        }\r\n        return arr;\r\n    }\r\n\r\n    export function sexify (updater: minerva.core.Updater) {\r\n        var node = updater.getAttachedValue(\"$node\");\r\n        var xobj = node.XObject;\r\n\r\n        var ctor = new Function(\"return function \" + xobj.constructor.name + \"() { }\")();\r\n        var obj = new ctor();\r\n\r\n        obj.assets = updater.assets;\r\n        obj.dirtyFlags = sexyflags(updater.assets.dirtyFlags);\r\n        obj.uiFlags = sexyuiflags(updater.assets.uiFlags);\r\n        obj.children = [];\r\n        obj.id = xobj._ID;\r\n        obj.node = node;\r\n\r\n        for (var walker = updater.tree.walk(); walker.step();) {\r\n            obj.children.push(sexify(walker.current));\r\n        }\r\n\r\n        return obj;\r\n    }\r\n\r\n    function sexyflags (flags: minerva.DirtyFlags): string {\r\n        var all = Object.keys(minerva.DirtyFlags)\r\n            .map(i => parseInt(i))\r\n            .filter(key => !isNaN(key))\r\n            .filter(isPowerOf2)\r\n            .sort((a, b) => (a === b) ? 0 : (a < b ? -1 : 1))\r\n            .reverse();\r\n\r\n        var remaining = flags;\r\n        return all\r\n            .filter(cur => {\r\n                if ((remaining & cur) === 0)\r\n                    return false;\r\n                remaining &= ~cur;\r\n                return true;\r\n            })\r\n            .map(cur => (<any>minerva.DirtyFlags)[cur])\r\n            .join(\"|\");\r\n    }\r\n\r\n    function sexyuiflags (flags: minerva.UIFlags): string {\r\n        var all = Object.keys(minerva.UIFlags)\r\n            .map(i => parseInt(i))\r\n            .filter(key => !isNaN(key))\r\n            .filter(isPowerOf2)\r\n            .sort((a, b) => (a === b) ? 0 : (a < b ? -1 : 1))\r\n            .reverse();\r\n\r\n        var remaining = flags;\r\n        return all\r\n            .filter(cur => {\r\n                if ((remaining & cur) === 0)\r\n                    return false;\r\n                remaining &= ~cur;\r\n                return true;\r\n            })\r\n            .map(cur => (<any>minerva.UIFlags)[cur])\r\n            .join(\"|\");\r\n    }\r\n\r\n    function isPowerOf2 (num: number): boolean {\r\n        var y = (<Function>(<any>Math).log2)(num);\r\n        return Math.abs(Math.round(y) - y) < 0.000001;\r\n    }\r\n\r\n    export function debugLayersRaw (): string {\r\n        var app = Fayde.Application.Current;\r\n        var output = \"\";\r\n        for (var walker = app.MainSurface.walkLayers(); walker.step();) {\r\n            output += stringify(walker.current);\r\n        }\r\n        return output;\r\n    }\r\n\r\n    function stringify (updater: minerva.core.Updater, level: number = 0): string {\r\n        var node = updater.getAttachedValue(\"$node\");\r\n        var xobj = node.XObject;\r\n\r\n        var output = \"\";\r\n\r\n        for (var i = 0; i < level; i++) {\r\n            output += \"\\t\";\r\n        }\r\n\r\n        output += xobj.constructor.name;\r\n        output += \"[\" + xobj._ID + \"]\";\r\n\r\n        var ns = node.NameScope;\r\n        var nsr = !ns ? \"^\" : (ns.IsRoot ? \"+\" : \"-\");\r\n        output += \" [\" + nsr + node.Name + \"]\";\r\n\r\n        output += \"\\n\";\r\n\r\n        for (var walker = updater.tree.walk(); walker.step();) {\r\n            output += stringify(walker.current, level + 1);\r\n        }\r\n\r\n        return output;\r\n    }\r\n\r\n    export function getById (id: number) {\r\n        var app = Fayde.Application.Current;\r\n        for (var walker = app.MainSurface.walkLayers(); walker.step();) {\r\n            for (var subwalker = walker.current.walkDeep(); subwalker.step();) {\r\n                var upd = subwalker.current;\r\n                var node = upd.getAttachedValue(\"$node\");\r\n                var xobj = node.XObject;\r\n                if (xobj._ID === id) {\r\n                    return {\r\n                        obj: xobj,\r\n                        node: node,\r\n                        updater: upd,\r\n                        flags: sexyflags(upd.assets.dirtyFlags),\r\n                        uiflags: sexyuiflags(upd.assets.uiFlags)\r\n                    };\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    export function debugLayersFlatten (): any[] {\r\n        var arr = [];\r\n        var app = Fayde.Application.Current;\r\n        for (var walker = app.MainSurface.walkLayers(); walker.step();) {\r\n            for (var subwalker = walker.current.walkDeep(); subwalker.step();) {\r\n                arr.push(subwalker.current);\r\n            }\r\n        }\r\n        return arr;\r\n    }\r\n}"
  },
  {
    "path": "src/_Types.ts",
    "content": "/// <reference path=\"./Engine/ThemedLibraryResolver\" />\r\n\r\nmodule Fayde {\r\n    export var XMLNS = \"http://schemas.wsick.com/fayde\";\r\n    export var XMLNSX = \"http://schemas.wsick.com/fayde/x\";\r\n    export var XMLNSINTERNAL = \"http://schemas.wsick.com/fayde/internal\";\r\n\r\n    export var Enum = nullstone.Enum;\r\n    export interface Enum {\r\n        new(): nullstone.Enum;\r\n    }\r\n\r\n    export var Uri = nullstone.Uri;\r\n    export interface Uri extends nullstone.Uri {\r\n    }\r\n\r\n    export class ResourceTypeManager extends nullstone.TypeManager {\r\n        createLibResolver (): nullstone.ILibraryResolver {\r\n            return new ThemedLibraryResolver();\r\n        }\r\n\r\n        resolveResource (uri: Uri): string {\r\n            if (uri.scheme === \"lib\") {\r\n                var res = uri.resource;\r\n                var full = uri.toString();\r\n                var base = full.replace(res, \"\");\r\n                var lib = this.resolveLibrary(base);\r\n                if (!lib)\r\n                    throw new Error(`Could not find library when resolving resource [${full}].`);\r\n                return joinPaths(lib.basePath, res.length > 1 ? res.substr(1) : \"\");\r\n            }\r\n            return uri.toString();\r\n        }\r\n    }\r\n    export var TypeManager = new ResourceTypeManager(XMLNS, XMLNSX);\r\n\r\n    function joinPaths (base: string, rel: string): string {\r\n        if (base[base.length - 1] !== \"/\")\r\n            base += \"/\";\r\n        return base + (rel[0] === \"/\" ? rel.substr(1) : rel);\r\n    }\r\n\r\n    export var CoreLibrary = TypeManager.resolveLibrary(XMLNS);\r\n    (<any>CoreLibrary).$$module = Fayde;\r\n    (<any>CoreLibrary).$$loaded = true;\r\n    export var XLibrary = TypeManager.resolveLibrary(XMLNSX);\r\n    (<any>XLibrary).$$module = Fayde;\r\n    (<any>XLibrary).$$loaded = true;\r\n\r\n    export function RegisterType (type: Function, uri: string, name?: string) {\r\n        name = name || nullstone.getTypeName(type);\r\n        TypeManager.add(uri, name, type);\r\n    }\r\n\r\n    export function RegisterEnum (enu: any, uri: string, name: string) {\r\n        TypeManager.addEnum(uri, name, enu);\r\n    }\r\n\r\n    export var IType_ = new nullstone.Interface(\"IType\");\r\n    IType_.is = function (o): boolean {\r\n        return typeof o === \"function\";\r\n    };\r\n}"
  },
  {
    "path": "src/polyfill/Function_bind.ts",
    "content": "//https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\r\nif (!Function.prototype.bind) {\r\n    Function.prototype.bind = function (oThis) {\r\n        if (typeof this !== 'function') {\r\n            // closest thing possible to the ECMAScript 5\r\n            // internal IsCallable function\r\n            throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\r\n        }\r\n\r\n        var aArgs = Array.prototype.slice.call(arguments, 1),\r\n            fToBind = this,\r\n            fNOP = function () {\r\n            },\r\n            fBound = function () {\r\n                return fToBind.apply(this instanceof fNOP && oThis\r\n                        ? this\r\n                        : oThis,\r\n                    aArgs.concat(Array.prototype.slice.call(arguments)));\r\n            };\r\n\r\n        fNOP.prototype = this.prototype;\r\n        fBound.prototype = new fNOP();\r\n\r\n        return fBound;\r\n    };\r\n}"
  },
  {
    "path": "src/polyfill/perfex.ts",
    "content": "(function (context) {\r\n    if (!context.perfex) {\r\n        context.perfex = {};\r\n    }\r\n    if (!context.perfex.timer) {\r\n        context.perfex.timer = <any>{\r\n            all: [],\r\n            reset () {\r\n            },\r\n            start (tag: string) {\r\n            },\r\n            stop () {\r\n            }\r\n        };\r\n    }\r\n    if (!context.perfex.phases) {\r\n        context.perfex.phases = <any>{\r\n            current: null,\r\n            all: [],\r\n            start (tag: string) {\r\n            }\r\n        };\r\n    }\r\n})(window);"
  },
  {
    "path": "stress/ITestImpl.ts",
    "content": "interface ITestImpl {\r\n    run(runCount: number, onStatus: (status: any) => any, onOutput: (output: any) => any);\r\n}\r\nexport = ITestImpl;"
  },
  {
    "path": "stress/Runner.ts",
    "content": "interface ITest {\r\n    name: string;\r\n    test: string;\r\n    runCount: number;\r\n}\r\n\r\nimport ITestImpl = require('ITestImpl');\r\n\r\nclass Runner {\r\n    constructor (public listEl: HTMLElement, public infoEl: HTMLElement, public statusEl: HTMLElement, public outputEl: HTMLElement) {\r\n    }\r\n\r\n    init () {\r\n        this.getTests(tests => {\r\n            tests.forEach(test => {\r\n                var li = document.createElement('li');\r\n                var a = document.createElement('a');\r\n                a.href = \"javascript:void(0)\";\r\n                a.innerText = test.name;\r\n                a.onclick = () => this.run(test);\r\n                li.appendChild(a);\r\n                this.listEl.appendChild(li);\r\n            });\r\n        })\r\n    }\r\n\r\n    private run (test: ITest) {\r\n        require([test.test], (type) => {\r\n            var code = new type();\r\n            this.infoEl.innerText = \"Test: \" + test.name;\r\n            var status = this.reportStatus.bind(this);\r\n            var output = this.reportOutput.bind(this);\r\n            window.setTimeout(() => {\r\n                code.run(test.runCount, status, output);\r\n            }, 1);\r\n        });\r\n    }\r\n\r\n    private reportStatus (status) {\r\n        this.statusEl.innerHTML = status;\r\n    }\r\n\r\n    private reportOutput (output) {\r\n        this.outputEl.innerHTML = output;\r\n    }\r\n\r\n    private getTests (cb: (tests: ITest[]) => any) {\r\n        require([\"text!tests.json\"], (result) => {\r\n            var res = JSON.parse(result);\r\n            cb && cb(res.tests);\r\n        });\r\n    }\r\n}\r\nexport = Runner;"
  },
  {
    "path": "stress/index.html",
    "content": "<!DOCTYPE html>\r\n<html>\r\n<head lang=\"en\">\r\n    <meta charset=\"UTF-8\">\r\n    <title></title>\r\n    <script src=\"lib/nullstone/dist/nullstone.js\"></script>\r\n    <script src=\"lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"lib/Fayde/dist/Fayde.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var runner;\r\n        var require = {\r\n            baseUrl: \"./\",\r\n            paths: {\r\n                \"text\": \"lib/requirejs-text/text\"\r\n            },\r\n            deps: [\"text\", \"Runner\"],\r\n            callback: function (text, Runner) {\r\n                runner = new Runner(\r\n                    document.getElementById('test_list'),\r\n                    document.getElementById('test_info'),\r\n                    document.getElementById('test_status'),\r\n                    document.getElementById('test_output'));\r\n                runner.init();\r\n            }\r\n        }\r\n    </script>\r\n    <script src=\"lib/requirejs/require.js\"></script>\r\n</head>\r\n<body style=\"margin: 0;\">\r\n<div style=\"float: left; width: 200px;\">\r\n    <ul>\r\n        Stress Tests\r\n        <div id=\"test_list\"></div>\r\n    </ul>\r\n</div>\r\n<div style=\"margin-left: 200px;\">\r\n    <h2 id=\"test_info\"></h2>\r\n    <div id=\"test_status\">\r\n    </div>\r\n    <br />\r\n    <div id=\"test_output\">\r\n    </div>\r\n</div>\r\n</body>\r\n</html>"
  },
  {
    "path": "stress/tests/StressTest.ts",
    "content": "import ITestImpl = require('../ITestImpl');\r\n\r\nclass StressTest implements ITestImpl {\r\n    run (runCount: number, onStatus: (status: any) => any, onOutput: (output: any) => any) {\r\n        if (!this.prepare(() => this.$$finishRun(runCount, onStatus, onOutput)))\r\n            return this.$$finishRun(runCount, onStatus, onOutput);\r\n\r\n    }\r\n\r\n    private $$finishRun (runCount: number, onStatus: (status: any) => any, onOutput: (output: any) => any) {\r\n        var all: number[] = [];\r\n\r\n        //Pre-run\r\n        for (var i = 0; i < 5; i++) {\r\n            this.prepareIteration();\r\n            this.runIteration();\r\n        }\r\n\r\n        console.profile();\r\n        var start = performance.now();\r\n        for (var i = 0; i < runCount; i++) {\r\n            var s = performance.now();\r\n            this.prepareIteration();\r\n            this.runIteration();\r\n            all.push(performance.now() - s);\r\n        }\r\n        var total = performance.now() - start;\r\n        console.profileEnd();\r\n\r\n        var min = all.reduce((agg, ms) => Math.min(agg, ms), Number.POSITIVE_INFINITY);\r\n        var max = all.reduce((agg, ms) => Math.max(agg, ms), Number.NEGATIVE_INFINITY);\r\n        var sum = all.reduce((agg, ms) => agg + ms, 0);\r\n        var avg = total / runCount;\r\n        var sd = calcStdDev(all, sum);\r\n\r\n        var status = [\r\n            \"Iterations Complete: \" + runCount.toString(),\r\n            \"Total Elapsed: \" + createTimingString(total)\r\n        ].join(\"<br />\");\r\n        onStatus(status);\r\n\r\n        var output = [\r\n            \"Sum: \" + createTimingString(sum),\r\n            \"Min: \" + createTimingString(min),\r\n            \"Max: \" + createTimingString(max),\r\n            \"Average: \" + createTimingString(avg),\r\n            \"Std Dev: \" + createTimingString(sd)\r\n        ].join(\"<br />\");\r\n        onOutput(output);\r\n    }\r\n\r\n    prepare (ready?: () => any): boolean {\r\n        return false;\r\n    }\r\n\r\n    prepareIteration () {\r\n\r\n    }\r\n\r\n    runIteration () {\r\n    }\r\n}\r\n\r\nfunction createTimingString (ms: number): string {\r\n    return ms.toString()\r\n        + \"ms (\"\r\n        + (ms / 1000).toFixed(1)\r\n        + \"s)\";\r\n}\r\n\r\nfunction calcStdDev (all: number[], total: number): number {\r\n    var avg = total / all.length;\r\n    return Math.sqrt(all.reduce((agg, ms) => agg + Math.pow(ms - avg, 2), 0) / all.length);\r\n}\r\n\r\nexport = StressTest;"
  },
  {
    "path": "stress/tests/controls/ListBox.ts",
    "content": "import StressTest = require('../StressTest');\r\n\r\nclass ListBox extends StressTest {\r\n    listBox: Fayde.Controls.ListBox;\r\n    allItems: Fayde.Collections.ObservableCollection<any>;\r\n\r\n    prepare (ready?: () => any): boolean {\r\n        this.listBox = new Fayde.Controls.ListBox();\r\n        Fayde.Controls.VirtualizingPanel.SetVirtualizationMode(this.listBox, Fayde.Controls.VirtualizationMode.Standard);\r\n        this.allItems = new Fayde.Collections.ObservableCollection();\r\n        for (var i = 0; i < 1000; i++) {\r\n            this.allItems.Add({\r\n                name: \"Item \" + i.toString()\r\n            });\r\n        }\r\n        return false;\r\n    }\r\n\r\n    runIteration () {\r\n        var lb = this.listBox;\r\n        for (var i = 0; i < 10; i++) {\r\n            lb.ItemsSource = this.allItems;\r\n            lb.Measure(new minerva.Size(200, 500));\r\n            lb.ItemsSource = null;\r\n            lb.Measure(new minerva.Size(200, 500));\r\n        }\r\n    }\r\n}\r\nexport = ListBox;"
  },
  {
    "path": "stress/tests/markup/Loader.ts",
    "content": "import StressTest = require('../StressTest');\r\n\r\nclass Loader extends StressTest {\r\n    xm: nullstone.markup.xaml.XamlMarkup;\r\n\r\n    prepare (ready?: () => any): boolean {\r\n        Fayde.Markup.Resolve('lib/fayde/themes/Metro.theme.xml')\r\n            .then(xm => {\r\n                this.xm = xm;\r\n                ready();\r\n            }, err => console.error(err));\r\n        return true;\r\n    }\r\n\r\n    runIteration () {\r\n        var root = Fayde.Markup.Load(null, this.xm);\r\n    }\r\n}\r\nexport = Loader;"
  },
  {
    "path": "stress/tests/media/MediaParser.ts",
    "content": "import StressTest = require('../StressTest');\r\n\r\nclass MediaParser extends StressTest {\r\n    data: string;\r\n\r\n    prepare (ready?: () => any): boolean {\r\n        this.data = \"M2872,3035L2874,3033L2874,3035L2876,3038L2876,3045L2882,3045L2882,3048L2887,3050L2889,3050L2889,3055L2891,3055L2891,3058L2893,3058L2895,3061L2908,3061L2908,3058L2913,3058L2919,3063L2919,3066L2930,3066L2930,3068L2934,3073L2937,3073L2939,3076L2941,3076L2941,3078L2947,3081L2956,3081L2956,3086L2958,3089L2960,3089L2963,3091L2963,3094L2986,3094L2989,3096L2993,3099L2995,3099L2997,3101L3002,3101L3002,3104L3004,3109L3004,3112L3002,3112L3002,3119L3004,3119L3008,3129L3008,3145L2999,3145L3004,3150L3008,3157L3010,3183L3060,3186L3060,3183L3062,3183L3062,3188L3060,3191L3060,3193L3058,3193L3058,3208L3060,3211L3060,3216L3062,3216L3067,3221L3069,3221L3071,3224L3073,3221L3073,3224L3077,3226L3077,3234L3082,3244L3084,3247L3084,3249L3082,3249L3082,3254L3077,3270L3080,3275L3077,3275L3075,3277L3075,3280L3071,3288L3069,3295L3075,3305L3073,3305L3067,3310L3067,3300L3064,3298L3062,3298L3041,3285L3038,3285L3032,3282L3012,3282L3004,3285L3002,3288L2993,3288L2978,3293L2967,3293L2965,3295L2963,3303L2963,3308L2956,3316L2954,3321L2952,3323L2952,3339L2950,3351L2945,3361L2945,3367L2943,3374L2941,3377L2941,3379L2937,3374L2937,3372L2906,3372L2904,3374L2900,3384L2900,3387L2898,3387L2898,3390L2895,3392L2895,3400L2893,3400L2893,3392L2891,3392L2891,3387L2889,3384L2889,3379L2887,3377L2885,3377L2878,3374L2854,3374L2846,3364L2841,3364L2841,3372L2839,3374L2837,3374L2835,3377L2828,3377L2828,3379L2826,3382L2826,3384L2824,3384L2822,3387L2820,3387L2820,3392L2815,3397L2811,3400L2798,3400L2796,3397L2796,3390L2798,3390L2794,3379L2796,3379L2794,3374L2794,3372L2791,3369L2789,3369L2789,3359L2787,3359L2787,3346L2781,3336L2778,3336L2776,3333L2776,3328L2778,3328L2778,3323L2774,3323L2774,3321L2772,3321L2772,3316L2774,3316L2772,3313L2772,3308L2776,3308L2776,3305L2778,3303L2776,3300L2776,3298L2774,3298L2774,3295L2776,3293L2776,3290L2778,3290L2781,3288L2781,3285L2778,3285L2778,3282L2774,3282L2774,3280L2772,3277L2768,3275L2765,3272L2768,3270L2765,3267L2765,3265L2763,3262L2763,3247L2761,3247L2761,3244L2763,3242L2761,3242L2757,3239L2757,3234L2752,3229L2750,3229L2750,3219L2748,3216L2746,3216L2750,3211L2752,3211L2757,3206L2759,3201L2761,3198L2763,3198L2763,3191L2765,3188L2770,3186L2770,3183L2765,3180L2763,3180L2763,3183L2761,3183L2761,3180L2759,3180L2752,3163L2757,3155L2757,3152L2759,3150L2761,3150L2761,3147L2759,3147L2755,3142L2755,3135L2757,3135L2759,3132L2759,3127L2761,3124L2765,3122L2765,3117L2770,3117L2770,3114L2768,3112L2768,3109L2765,3109L2765,3101L2763,3099L2763,3096L2765,3096L2765,3071L2768,3071L2768,3068L2770,3068L2772,3066L2772,3063L2774,3061L2774,3058L2772,3055L2768,3045L2768,3043L2765,3043L2765,3040L2763,3038L2763,3035L2759,3030L2759,3027L2750,3012L2748,3010L2763,3010L2770,3012L2772,3015L2778,3015L2778,3012L2785,3012L2785,3010L2789,3004L2789,3002L2791,3002L2791,2999L2798,2999L2800,3002L2804,2997L2804,2994L2807,2994L2811,2989L2815,2989L2817,2987L2820,2987L2822,2984L2822,2981L2824,2981L2828,2976L2830,2976L2830,2974L2837,2974L2843,2971L2854,2971L2859,2974L2861,2974L2861,2969L2865,2969L2867,2971L2867,2989L2865,2989L2865,2994L2863,2994L2863,2999L2865,3002L2867,3007L2867,3012L2865,3015L2865,3020L2867,3025L2867,3027L2869,3027L2872,3030L2872,3033L2869,3033L2869,3035L2872,3035L2872,3035L2872,3035z\";\r\n        return false;\r\n    }\r\n\r\n    runIteration () {\r\n        var geom = Fayde.Media.ParseGeometry(this.data);\r\n    }\r\n}\r\nexport = MediaParser;"
  },
  {
    "path": "stress/tests/media/Path2D.ts",
    "content": "import StressTest = require('../StressTest');\r\n\r\ninterface Path2D {\r\n}\r\ndeclare var Path2D: {\r\n    new():Path2D;\r\n    new(data: string): Path2D;\r\n};\r\n\r\nclass Path2DTest extends StressTest {\r\n    data: string;\r\n\r\n    prepare (ready?: () => any): boolean {\r\n        this.data = \"M2872,3035L2874,3033L2874,3035L2876,3038L2876,3045L2882,3045L2882,3048L2887,3050L2889,3050L2889,3055L2891,3055L2891,3058L2893,3058L2895,3061L2908,3061L2908,3058L2913,3058L2919,3063L2919,3066L2930,3066L2930,3068L2934,3073L2937,3073L2939,3076L2941,3076L2941,3078L2947,3081L2956,3081L2956,3086L2958,3089L2960,3089L2963,3091L2963,3094L2986,3094L2989,3096L2993,3099L2995,3099L2997,3101L3002,3101L3002,3104L3004,3109L3004,3112L3002,3112L3002,3119L3004,3119L3008,3129L3008,3145L2999,3145L3004,3150L3008,3157L3010,3183L3060,3186L3060,3183L3062,3183L3062,3188L3060,3191L3060,3193L3058,3193L3058,3208L3060,3211L3060,3216L3062,3216L3067,3221L3069,3221L3071,3224L3073,3221L3073,3224L3077,3226L3077,3234L3082,3244L3084,3247L3084,3249L3082,3249L3082,3254L3077,3270L3080,3275L3077,3275L3075,3277L3075,3280L3071,3288L3069,3295L3075,3305L3073,3305L3067,3310L3067,3300L3064,3298L3062,3298L3041,3285L3038,3285L3032,3282L3012,3282L3004,3285L3002,3288L2993,3288L2978,3293L2967,3293L2965,3295L2963,3303L2963,3308L2956,3316L2954,3321L2952,3323L2952,3339L2950,3351L2945,3361L2945,3367L2943,3374L2941,3377L2941,3379L2937,3374L2937,3372L2906,3372L2904,3374L2900,3384L2900,3387L2898,3387L2898,3390L2895,3392L2895,3400L2893,3400L2893,3392L2891,3392L2891,3387L2889,3384L2889,3379L2887,3377L2885,3377L2878,3374L2854,3374L2846,3364L2841,3364L2841,3372L2839,3374L2837,3374L2835,3377L2828,3377L2828,3379L2826,3382L2826,3384L2824,3384L2822,3387L2820,3387L2820,3392L2815,3397L2811,3400L2798,3400L2796,3397L2796,3390L2798,3390L2794,3379L2796,3379L2794,3374L2794,3372L2791,3369L2789,3369L2789,3359L2787,3359L2787,3346L2781,3336L2778,3336L2776,3333L2776,3328L2778,3328L2778,3323L2774,3323L2774,3321L2772,3321L2772,3316L2774,3316L2772,3313L2772,3308L2776,3308L2776,3305L2778,3303L2776,3300L2776,3298L2774,3298L2774,3295L2776,3293L2776,3290L2778,3290L2781,3288L2781,3285L2778,3285L2778,3282L2774,3282L2774,3280L2772,3277L2768,3275L2765,3272L2768,3270L2765,3267L2765,3265L2763,3262L2763,3247L2761,3247L2761,3244L2763,3242L2761,3242L2757,3239L2757,3234L2752,3229L2750,3229L2750,3219L2748,3216L2746,3216L2750,3211L2752,3211L2757,3206L2759,3201L2761,3198L2763,3198L2763,3191L2765,3188L2770,3186L2770,3183L2765,3180L2763,3180L2763,3183L2761,3183L2761,3180L2759,3180L2752,3163L2757,3155L2757,3152L2759,3150L2761,3150L2761,3147L2759,3147L2755,3142L2755,3135L2757,3135L2759,3132L2759,3127L2761,3124L2765,3122L2765,3117L2770,3117L2770,3114L2768,3112L2768,3109L2765,3109L2765,3101L2763,3099L2763,3096L2765,3096L2765,3071L2768,3071L2768,3068L2770,3068L2772,3066L2772,3063L2774,3061L2774,3058L2772,3055L2768,3045L2768,3043L2765,3043L2765,3040L2763,3038L2763,3035L2759,3030L2759,3027L2750,3012L2748,3010L2763,3010L2770,3012L2772,3015L2778,3015L2778,3012L2785,3012L2785,3010L2789,3004L2789,3002L2791,3002L2791,2999L2798,2999L2800,3002L2804,2997L2804,2994L2807,2994L2811,2989L2815,2989L2817,2987L2820,2987L2822,2984L2822,2981L2824,2981L2828,2976L2830,2976L2830,2974L2837,2974L2843,2971L2854,2971L2859,2974L2861,2974L2861,2969L2865,2969L2867,2971L2867,2989L2865,2989L2865,2994L2863,2994L2863,2999L2865,3002L2867,3007L2867,3012L2865,3015L2865,3020L2867,3025L2867,3027L2869,3027L2872,3030L2872,3033L2869,3033L2869,3035L2872,3035L2872,3035L2872,3035z\";\r\n        return false;\r\n    }\r\n\r\n    runIteration () {\r\n        var path = new Path2D(this.data);\r\n    }\r\n}\r\nexport = Path2DTest;"
  },
  {
    "path": "stress/tests.json",
    "content": "{\r\n  \"tests\": [\r\n    {\r\n      \"name\": \"Load Xaml (Metro)\",\r\n      \"test\": \"tests/markup/Loader\",\r\n      \"runCount\": 10\r\n    },\r\n    {\r\n      \"name\": \"Media Parser (Geometry)\",\r\n      \"test\": \"tests/media/MediaParser\",\r\n      \"runCount\": 1000\r\n    },\r\n    {\r\n      \"name\": \"Path2D Parser\",\r\n      \"test\": \"tests/media/Path2D\",\r\n      \"runCount\": 1000\r\n    },\r\n    {\r\n      \"name\": \"Measure ListBox\",\r\n      \"test\": \"tests/controls/ListBox\",\r\n      \"runCount\": 10\r\n    }\r\n  ]\r\n}"
  },
  {
    "path": "test/Theme.Silverlight.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<ResourceDictionary\r\n       xmlns=\"http://schemas.wsick.com/fayde\"\r\n       xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n       xmlns:sys=\"http://schemas.wsick.com/fayde\"\r\n       xmlns:vsm=\"http://schemas.wsick.com/fayde\">\r\n    <!--\r\n    <ControlTemplate x:Key=\"ValidationToolTipTemplate\">\r\n        <Grid x:Name=\"Root\" Margin=\"5,0\" RenderTransformOrigin=\"0,0\" Opacity=\"0\">\r\n            <Grid.RenderTransform>\r\n                <TranslateTransform x:Name=\"xform\" X=\"-25\" />\r\n            </Grid.RenderTransform>\r\n            <vsm:VisualStateManager.VisualStateGroups>\r\n                <vsm:VisualStateGroup Name=\"OpenStates\">\r\n                    <vsm:VisualStateGroup.Transitions>\r\n                        <vsm:VisualTransition GeneratedDuration=\"0\" />\r\n                        <vsm:VisualTransition To=\"Open\" GeneratedDuration=\"0:0:0.2\">\r\n                            <Storyboard>\r\n                                <DoubleAnimation Storyboard.TargetName=\"xform\" Storyboard.TargetProperty=\"X\" To=\"0\" Duration=\"0:0:0.2\">\r\n                                    <DoubleAnimation.EasingFunction>\r\n                                        <BackEase Amplitude=\".3\" EasingMode=\"EaseOut\" />\r\n                                    </DoubleAnimation.EasingFunction>\r\n                                </DoubleAnimation>\r\n                                <DoubleAnimation Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" Duration=\"0:0:0.2\" />\r\n                            </Storyboard>\r\n                        </vsm:VisualTransition>\r\n                    </vsm:VisualStateGroup.Transitions>\r\n                    <vsm:VisualState x:Name=\"Closed\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"0\" Duration=\"0\" />\r\n                        </Storyboard>\r\n                    </vsm:VisualState>\r\n                    <vsm:VisualState x:Name=\"Open\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Storyboard.TargetName=\"xform\" Storyboard.TargetProperty=\"X\" To=\"0\" Duration=\"0\" />\r\n                            <DoubleAnimation Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" Duration=\"0\" />\r\n                        </Storyboard>\r\n                    </vsm:VisualState>\r\n                </vsm:VisualStateGroup>\r\n            </vsm:VisualStateManager.VisualStateGroups>\r\n            <Border Margin=\"4,4,-4,-4\" Background=\"#052A2E31\" CornerRadius=\"5\" />\r\n            <Border Margin=\"3,3,-3,-3\" Background=\"#152A2E31\" CornerRadius=\"4\" />\r\n            <Border Margin=\"2,2,-2,-2\" Background=\"#252A2E31\" CornerRadius=\"3\" />\r\n            <Border Margin=\"1,1,-1,-1\" Background=\"#352A2E31\" CornerRadius=\"2\" />\r\n            <Border Background=\"#FFDC000C\" CornerRadius=\"2\" />\r\n            <Border CornerRadius=\"2\">\r\n                <TextBlock UseLayoutRounding=\"false\" Foreground=\"White\" Margin=\"8,4,8,4\" MaxWidth=\"250\" TextWrapping=\"Wrap\" Text=\"{Binding (Validation.Errors)[0].ErrorContent}\" />\r\n            </Border>\r\n        </Grid>\r\n    </ControlTemplate>\r\n    -->\r\n    <Style TargetType=\"Button\">\r\n        <Setter Property=\"Background\" Value=\"#FF1F3B53\" />\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"Padding\" Value=\"3\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Button\">\r\n                    <Grid>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#F2FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#CCFFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#7FFFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\" To=\"#FF6DBDD1\" />\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" To=\"#D8FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#C6FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#8CFFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#3FFFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\".55\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\" />\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" CornerRadius=\"3\" Background=\"White\" BorderThickness=\"{TemplateBinding BorderThickness}\" BorderBrush=\"{TemplateBinding BorderBrush}\">\r\n                            <Grid Background=\"{TemplateBinding Background}\" Margin=\"1\">\r\n                                <Border Opacity=\"0\" x:Name=\"BackgroundAnimation\" Background=\"#FF448DCA\" />\r\n                                <Rectangle x:Name=\"BackgroundGradient\">\r\n                                    <Rectangle.Fill>\r\n                                        <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                            <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                            <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                            <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.625\" />\r\n                                            <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                        </LinearGradientBrush>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                            </Grid>\r\n                        </Border>\r\n                        <ContentPresenter x:Name=\"contentPresenter\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"#FFFFFFFF\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusX=\"2\" RadiusY=\"2\" Margin=\"1\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"RepeatButton\">\r\n        <Setter Property=\"Background\" Value=\"#FF1F3B53\" />\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"Padding\" Value=\"3\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"RepeatButton\">\r\n                    <Grid>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#F2FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#CCFFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#7FFFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\" To=\"#FF6DBDD1\" />\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" To=\"#D8FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#C6FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#8CFFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#3FFFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\".55\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\" />\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" CornerRadius=\"3\" Background=\"White\" BorderThickness=\"{TemplateBinding BorderThickness}\" BorderBrush=\"{TemplateBinding BorderBrush}\">\r\n                            <Grid Background=\"{TemplateBinding Background}\" Margin=\"1\">\r\n                                <Border Opacity=\"0\" x:Name=\"BackgroundAnimation\" Background=\"#FF448DCA\" />\r\n                                <Rectangle x:Name=\"BackgroundGradient\">\r\n                                    <Rectangle.Fill>\r\n                                        <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                            <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                            <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                            <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.625\" />\r\n                                            <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                        </LinearGradientBrush>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                            </Grid>\r\n                        </Border>\r\n                        <ContentPresenter x:Name=\"contentPresenter\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"#FFFFFFFF\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusX=\"2\" RadiusY=\"2\" Margin=\"1\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"ToggleButton\">\r\n        <Setter Property=\"Background\" Value=\"#FF1F3B53\" />\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"Padding\" Value=\"3\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ToggleButton\">\r\n                    <Grid>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#F2FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#CCFFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#7FFFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\" To=\"#FF6DBDD1\" />\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" To=\"#D8FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#C6FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#8CFFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#3FFFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\".55\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"CheckStates\">\r\n                                <vsm:VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <PointAnimation Duration=\"0\" To=\"0.7,1\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(LinearGradientBrush.StartPoint)\" />\r\n                                        <PointAnimation Duration=\"0\" To=\"0.7,0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(LinearGradientBrush.EndPoint)\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unchecked\" />\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\" />\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" CornerRadius=\"3\" Background=\"White\" BorderThickness=\"{TemplateBinding BorderThickness}\" BorderBrush=\"{TemplateBinding BorderBrush}\">\r\n                            <Grid Background=\"{TemplateBinding Background}\" Margin=\"1\">\r\n                                <Border Opacity=\"0\" x:Name=\"BackgroundAnimation\" Background=\"#FF448DCA\" />\r\n                                <Rectangle x:Name=\"BackgroundGradient\">\r\n                                    <Rectangle.Fill>\r\n                                        <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                            <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                            <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                            <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.625\" />\r\n                                            <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                        </LinearGradientBrush>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                            </Grid>\r\n                        </Border>\r\n                        <ContentPresenter x:Name=\"contentPresenter\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"#FFFFFFFF\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusX=\"2\" RadiusY=\"2\" Margin=\"1\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"HyperlinkButton\">\r\n        <Setter Property=\"Foreground\" Value=\"#FF73A9D8\" />\r\n        <Setter Property=\"Padding\" Value=\"2,0,2,0\" />\r\n        <Setter Property=\"Cursor\" Value=\"Hand\" />\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"Background\" Value=\"Transparent\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                    <Grid Cursor=\"{TemplateBinding Cursor}\" Background=\"{TemplateBinding Background}\">\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"UnderlineTextBlock\" Storyboard.TargetProperty=\"Visibility\" Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"UnderlineTextBlock\" Storyboard.TargetProperty=\"Visibility\" Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"Visibility\" Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\" />\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <TextBlock x:Name=\"UnderlineTextBlock\" Text=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" TextDecorations=\"Underline\" Visibility=\"Collapsed\" />\r\n                        <TextBlock Canvas.ZIndex=\"1\" x:Name=\"DisabledOverlay\" Text=\"{TemplateBinding Content}\" Foreground=\"#FFAAAAAA\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Visibility=\"Collapsed\" />\r\n                        <ContentPresenter x:Name=\"contentPresenter\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" />\r\n                        <Rectangle x:Name=\"FocusVisualElement\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"CheckBox\">\r\n        <Setter Property=\"Background\" Value=\"#FF448DCA\" />\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"Padding\" Value=\"4,1,0,0\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"CheckBox\">\r\n                    <Grid>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"16\" />\r\n                            <ColumnDefinition Width=\"*\" />\r\n                        </Grid.ColumnDefinitions>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"BackgroundOverlay\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                        <DoubleAnimation Storyboard.TargetName=\"BoxMiddleBackground\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#7FFFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#CCFFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#F2FFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"BackgroundOverlay\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                        <DoubleAnimation Storyboard.TargetName=\"BoxMiddleBackground\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#6BFFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#C6FFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#EAFFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#F4FFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Stroke).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#FF6DBDD1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Stroke).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#FF6DBDD1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Stroke).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#FF6DBDD1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Stroke).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#FF6DBDD1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"contentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\".55\" />\r\n                                        <DoubleAnimation Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"0.55\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"CheckStates\">\r\n                                <vsm:VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"CheckIcon\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unchecked\" />\r\n                                <vsm:VisualState x:Name=\"Indeterminate\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"IndeterminateIcon\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"ContentFocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\" />\r\n                            </vsm:VisualStateGroup>\r\n                            <!--\r\n                            <vsm:VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <vsm:VisualState x:Name=\"Valid\" />\r\n                                <vsm:VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsOpen\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>\r\n                                                        True\r\n                                                    </sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            -->\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n                            <Rectangle x:Name=\"Background\" Width=\"14\" Height=\"14\" RadiusX=\"1\" RadiusY=\"1\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"#FFFFFFFF\" Margin=\"1\" />\r\n                            <Rectangle x:Name=\"BackgroundOverlay\" Fill=\"#FFC4DBEE\" Opacity=\"0\" Width=\"14\" Height=\"14\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Margin=\"1\" Stroke=\"#00000000\" />\r\n                            <Rectangle x:Name=\"BoxMiddleBackground\" Width=\"10\" Height=\"10\" RadiusX=\"1\" RadiusY=\"1\" Fill=\"{TemplateBinding Background}\" Stroke=\"#00000000\" StrokeThickness=\"1\" />\r\n                            <Rectangle x:Name=\"BoxMiddle\" Width=\"10\" Height=\"10\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\">\r\n                                <Rectangle.Stroke>\r\n                                    <LinearGradientBrush EndPoint=\".5,1\" StartPoint=\".5,0\">\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"1\" />\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.375\" />\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.375\" />\r\n                                    </LinearGradientBrush>\r\n                                </Rectangle.Stroke>\r\n                                <Rectangle.Fill>\r\n                                    <LinearGradientBrush StartPoint=\"0.62,0.15\" EndPoint=\"0.64,0.88\">\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.013\" />\r\n                                        <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                        <GradientStop Color=\"#EAFFFFFF\" Offset=\"0.603\" />\r\n                                        <GradientStop Color=\"#D8FFFFFF\" Offset=\"1\" />\r\n                                    </LinearGradientBrush>\r\n                                </Rectangle.Fill>\r\n                            </Rectangle>\r\n                            <Rectangle x:Name=\"BoxMiddleLine\" Width=\"10\" Height=\"10\" RadiusX=\"1\" RadiusY=\"1\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"1\" Opacity=\".2\" />\r\n                            <Path x:Name=\"CheckIcon\" Margin=\"1,1,0,1.5\" Fill=\"#FF333333\" Stretch=\"Fill\" Opacity=\"0\" Width=\"10.5\" Height=\"10\" Data=\"M102.03442,598.79645 L105.22962,597.78918 L106.78825,600.42358 C106.78825,600.42358 108.51028,595.74304 110.21724,593.60419 C112.00967,591.35822 114.89314,591.42316 114.89314,591.42316 C114.89314,591.42316 112.67844,593.42645 111.93174,594.44464 C110.7449,596.06293 107.15683,604.13837 107.15683,604.13837 z\" FlowDirection=\"LeftToRight\" />\r\n                            <Rectangle x:Name=\"IndeterminateIcon\" Height=\"2\" Fill=\"#FF333333\" Opacity=\"0\" Width=\"6\" />\r\n                            <Rectangle x:Name=\"DisabledVisualElement\" RadiusX=\"1\" RadiusY=\"1\" Width=\"14\" Height=\"14\" Opacity=\"0\" Fill=\"#FFFFFFFF\" />\r\n                            <Rectangle x:Name=\"ContentFocusVisualElement\" RadiusX=\"2\" RadiusY=\"2\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" Width=\"16\" Height=\"16\" />\r\n                            <!--\r\n                            <Border x:Name=\"ValidationErrorElement\" Margin=\"1\" BorderThickness=\"1\" CornerRadius=\"1\" BorderBrush=\"#FFDB000C\" Visibility=\"Collapsed\" ToolTipService.PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                <ToolTipService.ToolTip>\r\n                                    <ToolTip x:Name=\"validationTooltip\" Template=\"{StaticResource ValidationToolTipTemplate}\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                        <ToolTip.Triggers>\r\n                                            <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                                <EventTrigger.Actions>\r\n                                                    <BeginStoryboard>\r\n                                                        <Storyboard>\r\n                                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsHitTestVisible\">\r\n                                                                <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                                        <sys:Boolean>\r\n                                                                            true\r\n                                                                        </sys:Boolean>\r\n                                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                                </DiscreteObjectKeyFrame>\r\n                                                            </ObjectAnimationUsingKeyFrames>\r\n                                                        </Storyboard>\r\n                                                    </BeginStoryboard>\r\n                                                </EventTrigger.Actions>\r\n                                            </EventTrigger>\r\n                                        </ToolTip.Triggers>\r\n                                    </ToolTip>\r\n                                </ToolTipService.ToolTip>\r\n                                <Grid Width=\"10\" Height=\"10\" HorizontalAlignment=\"Right\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Background=\"Transparent\">\r\n                                    <Path Margin=\"0,3,0,0\" Data=\"M 1,0 L5,0 A 2,2 90 0 1 7,2 L7,6 z\" Fill=\"#FFDC000C\" />\r\n                                    <Path Margin=\"0,3,0,0\" Data=\"M 0,0 L2,0 L 7,5 L7,7\" Fill=\"#ffffff\" />\r\n                                </Grid>\r\n                            </Border>\r\n                            -->\r\n                        </Grid>\r\n                        <ContentPresenter Grid.Column=\"1\" x:Name=\"contentPresenter\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"RadioButton\">\r\n        <Setter Property=\"Background\" Value=\"#FF448DCA\" />\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"Padding\" Value=\"4,1,0,0\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"RadioButton\">\r\n                    <Grid>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"16\" />\r\n                            <ColumnDefinition Width=\"*\" />\r\n                        </Grid.ColumnDefinitions>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"BackgroundOverlay\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                        <DoubleAnimation Storyboard.TargetName=\"BoxMiddleBackground\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#7FFFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#CCFFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#F2FFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"BackgroundOverlay\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                        <DoubleAnimation Storyboard.TargetName=\"BoxMiddleBackground\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#6BFFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#C6FFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#EAFFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#F4FFFFFF\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Stroke).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#FF6DBDD1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Stroke).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#FF6DBDD1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Stroke).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#FF6DBDD1\" />\r\n                                        <ColorAnimation Storyboard.TargetName=\"BoxMiddle\" Storyboard.TargetProperty=\"(Shape.Stroke).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#FF6DBDD1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"contentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\".55\" />\r\n                                        <DoubleAnimation Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"0.55\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"CheckStates\">\r\n                                <vsm:VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"CheckIcon\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unchecked\" />\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"ContentFocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\" />\r\n                            </vsm:VisualStateGroup>\r\n                            <!--\r\n                            <vsm:VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <vsm:VisualState x:Name=\"Valid\" />\r\n                                <vsm:VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsOpen\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>\r\n                                                        True\r\n                                                    </sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                        -->\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n                            <Ellipse x:Name=\"Background\" Width=\"14\" Height=\"14\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"#FFFFFFFF\" Margin=\"1\" />\r\n                            <Ellipse x:Name=\"BackgroundOverlay\" Fill=\"#FFC4DBEE\" Opacity=\"0\" Width=\"14\" Height=\"14\" StrokeThickness=\"1\" Margin=\"1\" Stroke=\"#00000000\" />\r\n                            <Ellipse x:Name=\"BoxMiddleBackground\" Width=\"10\" Height=\"10\" Fill=\"{TemplateBinding Background}\" Stroke=\"#00000000\" StrokeThickness=\"1\" />\r\n                            <Ellipse x:Name=\"BoxMiddle\" Width=\"10\" Height=\"10\" StrokeThickness=\"1\">\r\n                                <Ellipse.Stroke>\r\n                                    <LinearGradientBrush EndPoint=\".5,1\" StartPoint=\".5,0\">\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"1\" />\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.375\" />\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.375\" />\r\n                                    </LinearGradientBrush>\r\n                                </Ellipse.Stroke>\r\n                                <Ellipse.Fill>\r\n                                    <LinearGradientBrush StartPoint=\"0.62,0.15\" EndPoint=\"0.64,0.88\">\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.013\" />\r\n                                        <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                        <GradientStop Color=\"#EAFFFFFF\" Offset=\"0.603\" />\r\n                                        <GradientStop Color=\"#D8FFFFFF\" Offset=\"1\" />\r\n                                    </LinearGradientBrush>\r\n                                </Ellipse.Fill>\r\n                            </Ellipse>\r\n                            <Ellipse x:Name=\"BoxMiddleLine\" Width=\"10\" Height=\"10\" Stroke=\"#FF333333\" StrokeThickness=\"1\" Opacity=\".2\" />\r\n                            <Ellipse x:Name=\"CheckIcon\" Fill=\"#FF333333\" Width=\"4\" Height=\"4\" Opacity=\"0\" />\r\n                            <Ellipse x:Name=\"DisabledVisualElement\" Width=\"14\" Height=\"14\" Opacity=\"0\" Fill=\"#FFFFFFFF\" />\r\n                            <Ellipse x:Name=\"ContentFocusVisualElement\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" Width=\"16\" Height=\"16\" />\r\n                            <!--\r\n                            <Grid x:Name=\"ValidationErrorElement\" Visibility=\"Collapsed\" ToolTipService.PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                <ToolTipService.ToolTip>\r\n                                    <ToolTip x:Name=\"validationTooltip\" Template=\"{StaticResource ValidationToolTipTemplate}\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                        <ToolTip.Triggers>\r\n                                            <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                                <EventTrigger.Actions>\r\n                                                    <BeginStoryboard>\r\n                                                        <Storyboard>\r\n                                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsHitTestVisible\">\r\n                                                                <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                                        <sys:Boolean>\r\n                                                                            true\r\n                                                                        </sys:Boolean>\r\n                                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                                </DiscreteObjectKeyFrame>\r\n                                                            </ObjectAnimationUsingKeyFrames>\r\n                                                        </Storyboard>\r\n                                                    </BeginStoryboard>\r\n                                                </EventTrigger.Actions>\r\n                                            </EventTrigger>\r\n                                        </ToolTip.Triggers>\r\n                                    </ToolTip>\r\n                                </ToolTipService.ToolTip>\r\n                                <Ellipse Stroke=\"#FFDB000C\" StrokeThickness=\"1\" Width=\"14\" Height=\"14\" />\r\n                                <Ellipse HorizontalAlignment=\"Right\" VerticalAlignment=\"Top\" Margin=\"0,-2,-1,0\" Fill=\"#FFDB000C\" Width=\"4\" Height=\"4\" />\r\n                                <Ellipse HorizontalAlignment=\"Right\" VerticalAlignment=\"Top\" Margin=\"0,-5,-4,0\" Fill=\"Transparent\" Width=\"10\" Height=\"10\" />\r\n                            </Grid>\r\n                            -->\r\n                        </Grid>\r\n                        <ContentPresenter Grid.Column=\"1\" x:Name=\"contentPresenter\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"ContentControl\">\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ContentControl\">\r\n                    <ContentPresenter Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Cursor=\"{TemplateBinding Cursor}\" Margin=\"{TemplateBinding Padding}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" />\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"ContentPresenter\">\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Top\" />\r\n    </Style>\r\n    <Style TargetType=\"ListBox\">\r\n        <Setter Property=\"Padding\" Value=\"1\" />\r\n        <Setter Property=\"Background\" Value=\"#FFFFFFFF\" />\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\" />\r\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\" />\r\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ListBox\">\r\n                    <Grid>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <!--\r\n                            <vsm:VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <vsm:VisualState x:Name=\"Valid\" />\r\n                                <vsm:VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsOpen\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>\r\n                                                        True\r\n                                                    </sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            -->\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Border CornerRadius=\"2\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                            <ScrollViewer x:Name=\"ScrollViewer\" Padding=\"{TemplateBinding Padding}\" Background=\"{TemplateBinding Background}\" BorderBrush=\"Transparent\" BorderThickness=\"0\" TabNavigation=\"{TemplateBinding TabNavigation}\">\r\n                                <ItemsPresenter />\r\n                            </ScrollViewer>\r\n                        </Border>\r\n                        <!--\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2\" BorderBrush=\"#FFDB000C\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" Template=\"{StaticResource ValidationToolTipTemplate}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <EventTrigger.Actions>\r\n                                                <BeginStoryboard>\r\n                                                    <Storyboard>\r\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsHitTestVisible\">\r\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                <DiscreteObjectKeyFrame.Value>\r\n                                                                    <sys:Boolean>\r\n                                                                        true\r\n                                                                    </sys:Boolean>\r\n                                                                </DiscreteObjectKeyFrame.Value>\r\n                                                            </DiscreteObjectKeyFrame>\r\n                                                        </ObjectAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </BeginStoryboard>\r\n                                            </EventTrigger.Actions>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Width=\"10\" Height=\"10\" HorizontalAlignment=\"Right\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Background=\"Transparent\">\r\n                                <Path Margin=\"-1,3,0,0\" Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"#FFDC000C\" />\r\n                                <Path Margin=\"-1,3,0,0\" Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"#ffffff\" />\r\n                            </Grid>\r\n                        </Border>\r\n                        -->\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"ListBoxItem\">\r\n        <Setter Property=\"Padding\" Value=\"3\" />\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"Background\" Value=\"Transparent\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"TabNavigation\" Value=\"Local\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ListBoxItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\">\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"fillColor\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\".35\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"contentPresenter\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\".55\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <vsm:VisualState x:Name=\"Unselected\" />\r\n                                <vsm:VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"fillColor2\" Storyboard.TargetProperty=\"Opacity\" Duration=\"0\" To=\".75\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Visibility\" Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\" />\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"fillColor\" Opacity=\"0\" Fill=\"#FFBADDE9\" IsHitTestVisible=\"False\" RadiusX=\"1\" RadiusY=\"1\" />\r\n                        <Rectangle x:Name=\"fillColor2\" Opacity=\"0\" Fill=\"#FFBADDE9\" IsHitTestVisible=\"False\" RadiusX=\"1\" RadiusY=\"1\" />\r\n                        <ContentPresenter x:Name=\"contentPresenter\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" />\r\n                        <Rectangle x:Name=\"FocusVisualElement\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Visibility=\"Collapsed\" RadiusX=\"1\" RadiusY=\"1\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"Thumb\">\r\n        <Setter Property=\"Background\" Value=\"#FF1F3B53\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Thumb\">\r\n                    <Grid>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#F2FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#CCFFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#7FFFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\" To=\"#FF6DBDD1\" />\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" To=\"#D8FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#C6FFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#8CFFFFFF\" />\r\n                                        <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#3FFFFFFF\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\".55\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\" />\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" CornerRadius=\"2\" Background=\"White\" BorderThickness=\"{TemplateBinding BorderThickness}\" BorderBrush=\"{TemplateBinding BorderBrush}\">\r\n                            <Grid Background=\"{TemplateBinding Background}\" Margin=\"1\">\r\n                                <Border Opacity=\"0\" x:Name=\"BackgroundAnimation\" Background=\"#FF448DCA\" />\r\n                                <Rectangle x:Name=\"BackgroundGradient\">\r\n                                    <Rectangle.Fill>\r\n                                        <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                            <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                            <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                            <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.625\" />\r\n                                            <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                        </LinearGradientBrush>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FFFFFFFF\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusX=\"1\" RadiusY=\"1\" Margin=\"1\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"ScrollBar\">\r\n        <Setter Property=\"MinWidth\" Value=\"17\" />\r\n        <Setter Property=\"MinHeight\" Value=\"17\" />\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ScrollBar\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <!-- RepeatButton Templates -->\r\n\r\n                            <ControlTemplate x:Key=\"RepeatButtonTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\" Background=\"Transparent\">\r\n                                    <vsm:VisualStateManager.VisualStateGroups>\r\n                                        <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <vsm:VisualState x:Name=\"Normal\" />\r\n                                        </vsm:VisualStateGroup>\r\n                                    </vsm:VisualStateManager.VisualStateGroups>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <!-- Horizontal Inc/Dec Templates -->\r\n\r\n                            <ControlTemplate x:Key=\"HorizontalIncrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <vsm:VisualStateManager.VisualStateGroups>\r\n                                        <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <vsm:VisualState x:Name=\"Normal\" />\r\n                                            <vsm:VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#7FFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#CCFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#F2FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Storyboard.TargetName=\"Highlight\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#6BFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#C6FFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#EAFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#F4FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"DisabledElement\" Storyboard.TargetProperty=\"Opacity\" To=\".7\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                        </vsm:VisualStateGroup>\r\n                                    </vsm:VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF1F3B53\" StrokeThickness=\"1\">\r\n                                        <Rectangle.Stroke>\r\n                                            <LinearGradientBrush EndPoint=\".5,1\" StartPoint=\".5,0\">\r\n                                                <GradientStop Color=\"#FF647480\" Offset=\"1\" />\r\n                                                <GradientStop Color=\"#FFAEB7BF\" Offset=\"0\" />\r\n                                                <GradientStop Color=\"#FF919EA7\" Offset=\"0.35\" />\r\n                                                <GradientStop Color=\"#FF7A8A99\" Offset=\"0.35\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Stroke>\r\n                                    </Rectangle>\r\n                                    <Rectangle x:Name=\"BackgroundAnimation\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                    <Rectangle x:Name=\"BackgroundGradient\" Opacity=\"0\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Margin=\"1\" Stroke=\"#FFFFFFFF\">\r\n                                        <Rectangle.Fill>\r\n                                            <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                                <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.013\" />\r\n                                                <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                                <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.603\" />\r\n                                                <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Fill>\r\n                                    </Rectangle>\r\n                                    <Rectangle x:Name=\"Highlight\" Opacity=\"0\" RadiusX=\"1\" RadiusY=\"1\" IsHitTestVisible=\"false\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Margin=\"1\" />\r\n                                    <Path Stretch=\"Uniform\" Height=\"8\" Width=\"4\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"ButtonColor\" Color=\"#FF333333\" />\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FFFFFFFF\" />\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalDecrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <vsm:VisualStateManager.VisualStateGroups>\r\n                                        <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <vsm:VisualState x:Name=\"Normal\" />\r\n                                            <vsm:VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundMouseOver\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#7FFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#CCFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#F2FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundPressed\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Storyboard.TargetName=\"Highlight\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#6BFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#C6FFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#EAFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#F4FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"DisabledElement\" Storyboard.TargetProperty=\"Opacity\" To=\".7\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                        </vsm:VisualStateGroup>\r\n                                    </vsm:VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF1F3B53\" StrokeThickness=\"1\">\r\n                                        <Rectangle.Stroke>\r\n                                            <LinearGradientBrush EndPoint=\".5,1\" StartPoint=\".5,0\">\r\n                                                <GradientStop Color=\"#FF647480\" Offset=\"1\" />\r\n                                                <GradientStop Color=\"#FFAEB7BF\" Offset=\"0\" />\r\n                                                <GradientStop Color=\"#FF919EA7\" Offset=\"0.35\" />\r\n                                                <GradientStop Color=\"#FF7A8A99\" Offset=\"0.35\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Stroke>\r\n                                    </Rectangle>\r\n                                    <Rectangle x:Name=\"BackgroundMouseOver\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                    <Rectangle x:Name=\"BackgroundPressed\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                    <Rectangle x:Name=\"BackgroundGradient\" Opacity=\"0\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Margin=\"1\" Stroke=\"#FFFFFFFF\">\r\n                                        <Rectangle.Fill>\r\n                                            <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                                <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.013\" />\r\n                                                <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                                <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.603\" />\r\n                                                <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Fill>\r\n                                    </Rectangle>\r\n                                    <Rectangle x:Name=\"Highlight\" Opacity=\"0\" RadiusX=\"1\" RadiusY=\"1\" IsHitTestVisible=\"false\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Margin=\"1\" />\r\n                                    <Path Stretch=\"Uniform\" Height=\"8\" Width=\"4\" Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"ButtonColor\" Color=\"#FF333333\" />\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FFFFFFFF\" />\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <!-- Vertical Inc/Dec Templates -->\r\n\r\n                            <ControlTemplate x:Key=\"VerticalIncrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <vsm:VisualStateManager.VisualStateGroups>\r\n                                        <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <vsm:VisualState x:Name=\"Normal\" />\r\n                                            <vsm:VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundMouseOver\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#7FFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#CCFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#F2FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundPressed\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Storyboard.TargetName=\"Highlight\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#6BFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#C6FFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#EAFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#F4FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"DisabledElement\" Storyboard.TargetProperty=\"Opacity\" To=\".7\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                        </vsm:VisualStateGroup>\r\n                                    </vsm:VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF1F3B53\" StrokeThickness=\"1\">\r\n                                        <Rectangle.Stroke>\r\n                                            <LinearGradientBrush EndPoint=\"1,.5\" StartPoint=\"0,.5\">\r\n                                                <GradientStop Color=\"#FF647480\" Offset=\"1\" />\r\n                                                <GradientStop Color=\"#FFAEB7BF\" Offset=\"0\" />\r\n                                                <GradientStop Color=\"#FF919EA7\" Offset=\"0.35\" />\r\n                                                <GradientStop Color=\"#FF7A8A99\" Offset=\"0.35\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Stroke>\r\n                                    </Rectangle>\r\n                                    <Rectangle x:Name=\"BackgroundMouseOver\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                    <Rectangle x:Name=\"BackgroundPressed\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                    <Rectangle x:Name=\"BackgroundGradient\" Opacity=\"0\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Margin=\"1\" Stroke=\"#FFFFFFFF\">\r\n                                        <Rectangle.Fill>\r\n                                            <LinearGradientBrush StartPoint=\"0,.7\" EndPoint=\"1,.7\">\r\n                                                <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.013\" />\r\n                                                <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                                <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.603\" />\r\n                                                <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Fill>\r\n                                    </Rectangle>\r\n                                    <Rectangle x:Name=\"Highlight\" Opacity=\"0\" RadiusX=\"1\" RadiusY=\"1\" IsHitTestVisible=\"false\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Margin=\"1\" />\r\n                                    <Path Stretch=\"Uniform\" Height=\"4\" Width=\"8\" Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"ButtonColor\" Color=\"#FF333333\" />\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FFFFFFFF\" />\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalDecrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <vsm:VisualStateManager.VisualStateGroups>\r\n                                        <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <vsm:VisualState x:Name=\"Normal\" />\r\n                                            <vsm:VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundMouseOver\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#7FFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#CCFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#F2FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundPressed\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Storyboard.TargetName=\"Highlight\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#6BFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#C6FFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#EAFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#F4FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"DisabledElement\" Storyboard.TargetProperty=\"Opacity\" To=\".7\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                        </vsm:VisualStateGroup>\r\n                                    </vsm:VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF1F3B53\" StrokeThickness=\"1\">\r\n                                        <Rectangle.Stroke>\r\n                                            <LinearGradientBrush EndPoint=\"1,.5\" StartPoint=\"0,.5\">\r\n                                                <GradientStop Color=\"#FF647480\" Offset=\"1\" />\r\n                                                <GradientStop Color=\"#FFAEB7BF\" Offset=\"0\" />\r\n                                                <GradientStop Color=\"#FF919EA7\" Offset=\"0.35\" />\r\n                                                <GradientStop Color=\"#FF7A8A99\" Offset=\"0.35\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Stroke>\r\n                                    </Rectangle>\r\n                                    <Rectangle x:Name=\"BackgroundMouseOver\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                    <Rectangle x:Name=\"BackgroundPressed\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                    <Rectangle x:Name=\"BackgroundGradient\" Opacity=\"0\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Margin=\"1\" Stroke=\"#FFFFFFFF\">\r\n                                        <Rectangle.Fill>\r\n                                            <LinearGradientBrush StartPoint=\"0,.7\" EndPoint=\"1,.7\">\r\n                                                <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.013\" />\r\n                                                <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                                <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.603\" />\r\n                                                <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Fill>\r\n                                    </Rectangle>\r\n                                    <Rectangle x:Name=\"Highlight\" Opacity=\"0\" RadiusX=\"1\" RadiusY=\"1\" IsHitTestVisible=\"false\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Margin=\"1\" />\r\n                                    <Path Stretch=\"Uniform\" Height=\"4\" Width=\"8\" Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"ButtonColor\" Color=\"#FF333333\" />\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FFFFFFFF\" />\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <!-- Thumb Templates -->\r\n\r\n                            <ControlTemplate x:Key=\"VerticalThumbTemplate\" TargetType=\"Thumb\">\r\n                                <Grid>\r\n                                    <vsm:VisualStateManager.VisualStateGroups>\r\n                                        <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <vsm:VisualState x:Name=\"Normal\" />\r\n                                            <vsm:VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundMouseOver\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#7FFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#CCFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#F2FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundPressed\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Storyboard.TargetName=\"Highlight\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#6BFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#C6FFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#EAFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#F4FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"ThumbVisual\" Storyboard.TargetProperty=\"Opacity\" To=\"0\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                        </vsm:VisualStateGroup>\r\n                                    </vsm:VisualStateManager.VisualStateGroups>\r\n                                    <Grid x:Name=\"ThumbVisual\" Margin=\"1,0,1,0\">\r\n                                        <Rectangle x:Name=\"Background\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF1F3B53\" StrokeThickness=\"1\">\r\n                                            <Rectangle.Stroke>\r\n                                                <LinearGradientBrush EndPoint=\"1,.5\" StartPoint=\"0,.5\">\r\n                                                    <GradientStop Color=\"#FF818F99\" Offset=\"1\" />\r\n                                                    <GradientStop Color=\"#FFC2C9CE\" Offset=\"0\" />\r\n                                                    <GradientStop Color=\"#FFB3BBC1\" Offset=\"0.35\" />\r\n                                                    <GradientStop Color=\"#FF96A4B1\" Offset=\"0.35\" />\r\n                                                </LinearGradientBrush>\r\n                                            </Rectangle.Stroke>\r\n                                        </Rectangle>\r\n                                        <Rectangle x:Name=\"BackgroundMouseOver\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                        <Rectangle x:Name=\"BackgroundPressed\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                        <Rectangle x:Name=\"BackgroundGradient\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Margin=\"1\" Stroke=\"#FFFFFFFF\">\r\n                                            <Rectangle.Fill>\r\n                                                <LinearGradientBrush StartPoint=\"0,.7\" EndPoint=\"1,.7\">\r\n                                                    <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                                    <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                                    <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.6\" />\r\n                                                    <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                                </LinearGradientBrush>\r\n                                            </Rectangle.Fill>\r\n                                        </Rectangle>\r\n                                        <Rectangle x:Name=\"Highlight\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Margin=\"1\" />\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalThumbTemplate\" TargetType=\"Thumb\">\r\n                                <Grid>\r\n                                    <vsm:VisualStateManager.VisualStateGroups>\r\n                                        <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <vsm:VisualState x:Name=\"Normal\" />\r\n                                            <vsm:VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundMouseOver\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#7FFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#CCFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#F2FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"BackgroundPressed\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                    <DoubleAnimation Storyboard.TargetName=\"Highlight\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Duration=\"0\" To=\"1\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Duration=\"0\" To=\"#6BFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Duration=\"0\" To=\"#C6FFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Duration=\"0\" To=\"#EAFFFFFF\" />\r\n                                                    <ColorAnimation Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" Duration=\"0\" To=\"#F4FFFFFF\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                            <vsm:VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0:0:0\" Storyboard.TargetName=\"ThumbVisual\" Storyboard.TargetProperty=\"Opacity\" To=\"0\" />\r\n                                                </Storyboard>\r\n                                            </vsm:VisualState>\r\n                                        </vsm:VisualStateGroup>\r\n                                    </vsm:VisualStateManager.VisualStateGroups>\r\n                                    <Grid x:Name=\"ThumbVisual\" Margin=\"0,1,0,1\">\r\n                                        <Rectangle x:Name=\"Background\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF1F3B53\" StrokeThickness=\"1\">\r\n                                            <Rectangle.Stroke>\r\n                                                <LinearGradientBrush EndPoint=\".5,1\" StartPoint=\".5,0\">\r\n                                                    <GradientStop Color=\"#FF818F99\" Offset=\"1\" />\r\n                                                    <GradientStop Color=\"#FFC2C9CE\" Offset=\"0\" />\r\n                                                    <GradientStop Color=\"#FFB3BBC1\" Offset=\"0.35\" />\r\n                                                    <GradientStop Color=\"#FF96A4B1\" Offset=\"0.35\" />\r\n                                                </LinearGradientBrush>\r\n                                            </Rectangle.Stroke>\r\n                                        </Rectangle>\r\n                                        <Rectangle x:Name=\"BackgroundMouseOver\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                        <Rectangle x:Name=\"BackgroundPressed\" Opacity=\"0\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"#FF448DCA\" StrokeThickness=\"1\" Stroke=\"#00000000\" />\r\n                                        <Rectangle x:Name=\"BackgroundGradient\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Margin=\"1\" Stroke=\"#FFFFFFFF\">\r\n                                            <Rectangle.Fill>\r\n                                                <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                                    <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.013\" />\r\n                                                    <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                                    <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.603\" />\r\n                                                    <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                                </LinearGradientBrush>\r\n                                            </Rectangle.Fill>\r\n                                        </Rectangle>\r\n                                        <Rectangle x:Name=\"Highlight\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Margin=\"1\" />\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\" />\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"0.5\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <!-- Horizontal Template -->\r\n\r\n                        <Grid x:Name=\"HorizontalRoot\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"*\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                            </Grid.ColumnDefinitions>\r\n                            <!-- Track Layer -->\r\n\r\n                            <Rectangle Grid.ColumnSpan=\"5\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Stroke=\"#00000000\">\r\n                                <Rectangle.Fill>\r\n                                    <LinearGradientBrush StartPoint=\"0.5,1\" EndPoint=\"0.5,0\">\r\n                                        <GradientStop Color=\"#FFF4F6F7\" Offset=\"0\" />\r\n                                        <GradientStop Color=\"#FFF0F4F7\" Offset=\"0.344\" />\r\n                                        <GradientStop Color=\"#FFDFE3E6\" Offset=\"1\" />\r\n                                        <GradientStop Color=\"#FFE9EEF4\" Offset=\"0.527\" />\r\n                                    </LinearGradientBrush>\r\n                                </Rectangle.Fill>\r\n                            </Rectangle>\r\n                            <Rectangle Grid.ColumnSpan=\"5\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Stroke=\"#00000000\" Fill=\"{TemplateBinding Background}\" />\r\n                            <Rectangle Grid.ColumnSpan=\"5\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Opacity=\".375\">\r\n                                <Rectangle.Stroke>\r\n                                    <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                        <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                                        <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                                        <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                                        <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                                    </LinearGradientBrush>\r\n                                </Rectangle.Stroke>\r\n                            </Rectangle>\r\n                            <Rectangle Grid.ColumnSpan=\"5\" RadiusX=\"1\" RadiusY=\"1\" Margin=\"1\">\r\n                                <Rectangle.Stroke>\r\n                                    <LinearGradientBrush EndPoint=\"0.5,.125\" StartPoint=\".5,.875\">\r\n                                        <GradientStop Color=\"#33FFFFFF\" />\r\n                                        <GradientStop Color=\"#99FFFFFF\" Offset=\"1\" />\r\n                                    </LinearGradientBrush>\r\n                                </Rectangle.Stroke>\r\n                            </Rectangle>\r\n                            <!-- Repeat Buttons + Thumb -->\r\n\r\n                            <RepeatButton x:Name=\"HorizontalSmallDecrease\" Grid.Column=\"0\" Width=\"16\" IsTabStop=\"False\" Interval=\"50\" Template=\"{StaticResource HorizontalDecrementTemplate}\" Margin=\"1\" />\r\n                            <RepeatButton x:Name=\"HorizontalLargeDecrease\" Grid.Column=\"1\" Width=\"0\" Template=\"{StaticResource RepeatButtonTemplate}\" Interval=\"50\" IsTabStop=\"False\" />\r\n                            <Thumb x:Name=\"HorizontalThumb\" Background=\"{TemplateBinding Background}\" MinWidth=\"18\" Width=\"18\" Grid.Column=\"2\" Template=\"{StaticResource HorizontalThumbTemplate}\" />\r\n                            <RepeatButton x:Name=\"HorizontalLargeIncrease\" Grid.Column=\"3\" Template=\"{StaticResource RepeatButtonTemplate}\" Interval=\"50\" IsTabStop=\"False\" />\r\n                            <RepeatButton x:Name=\"HorizontalSmallIncrease\" Grid.Column=\"4\" Width=\"16\" IsTabStop=\"False\" Interval=\"50\" Template=\"{StaticResource HorizontalIncrementTemplate}\" Margin=\"1\" />\r\n                        </Grid>\r\n                        <!-- Vertical Template -->\r\n\r\n                        <Grid x:Name=\"VerticalRoot\" Visibility=\"Collapsed\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"Auto\" />\r\n                                <RowDefinition Height=\"Auto\" />\r\n                                <RowDefinition Height=\"Auto\" />\r\n                                <RowDefinition Height=\"*\" />\r\n                                <RowDefinition Height=\"Auto\" />\r\n                            </Grid.RowDefinitions>\r\n                            <!-- Track Layer -->\r\n\r\n                            <Rectangle Grid.RowSpan=\"5\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Stroke=\"#00000000\">\r\n                                <Rectangle.Fill>\r\n                                    <LinearGradientBrush StartPoint=\"1,0.5\" EndPoint=\"0,0.5\">\r\n                                        <GradientStop Color=\"#FFF4F6F7\" Offset=\"0\" />\r\n                                        <GradientStop Color=\"#FFF0F4F7\" Offset=\"0.344\" />\r\n                                        <GradientStop Color=\"#FFDFE3E6\" Offset=\"1\" />\r\n                                        <GradientStop Color=\"#FFE9EEF4\" Offset=\"0.527\" />\r\n                                    </LinearGradientBrush>\r\n                                </Rectangle.Fill>\r\n                            </Rectangle>\r\n                            <Rectangle Grid.RowSpan=\"5\" RadiusX=\"1\" RadiusY=\"1\" StrokeThickness=\"1\" Opacity=\".375\">\r\n                                <Rectangle.Stroke>\r\n                                    <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                        <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                                        <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                                        <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                                        <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                                    </LinearGradientBrush>\r\n                                </Rectangle.Stroke>\r\n                            </Rectangle>\r\n                            <Rectangle Grid.RowSpan=\"5\" RadiusX=\"1\" RadiusY=\"1\" Margin=\"1\">\r\n                                <Rectangle.Stroke>\r\n                                    <LinearGradientBrush EndPoint=\"0.125,0.5\" StartPoint=\"0.875,0.5\">\r\n                                        <GradientStop Color=\"#33FFFFFF\" />\r\n                                        <GradientStop Color=\"#99FFFFFF\" Offset=\"1\" />\r\n                                    </LinearGradientBrush>\r\n                                </Rectangle.Stroke>\r\n                            </Rectangle>\r\n                            <!-- Repeat Buttons + Thumb -->\r\n\r\n                            <RepeatButton x:Name=\"VerticalSmallDecrease\" Grid.Row=\"0\" Height=\"16\" IsTabStop=\"False\" Interval=\"50\" Template=\"{StaticResource VerticalDecrementTemplate}\" Margin=\"1\" />\r\n                            <RepeatButton x:Name=\"VerticalLargeDecrease\" Grid.Row=\"1\" Height=\"0\" Template=\"{StaticResource RepeatButtonTemplate}\" Interval=\"50\" IsTabStop=\"False\" />\r\n                            <Thumb x:Name=\"VerticalThumb\" MinHeight=\"18\" Height=\"18\" Grid.Row=\"2\" Template=\"{StaticResource VerticalThumbTemplate}\" />\r\n                            <RepeatButton x:Name=\"VerticalLargeIncrease\" Grid.Row=\"3\" Template=\"{StaticResource RepeatButtonTemplate}\" Interval=\"50\" IsTabStop=\"False\" />\r\n                            <RepeatButton x:Name=\"VerticalSmallIncrease\" Grid.Row=\"4\" Height=\"16\" IsTabStop=\"False\" Interval=\"50\" Template=\"{StaticResource VerticalIncrementTemplate}\" Margin=\"1\" />\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"ScrollViewer\">\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"VerticalScrollBarVisibility\" Value=\"Visible\" />\r\n        <Setter Property=\"Padding\" Value=\"4\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ScrollViewer\">\r\n                    <Border CornerRadius=\"2\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                        <Grid Background=\"{TemplateBinding Background}\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\" />\r\n                                <RowDefinition Height=\"Auto\" />\r\n                            </Grid.RowDefinitions>\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"*\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                            </Grid.ColumnDefinitions>\r\n                            <ScrollContentPresenter x:Name=\"ScrollContentPresenter\" Cursor=\"{TemplateBinding Cursor}\" Margin=\"{TemplateBinding Padding}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" />\r\n                            <Rectangle Grid.Column=\"1\" Grid.Row=\"1\" Fill=\"#FFE9EEF4\" />\r\n                            <ScrollBar x:Name=\"VerticalScrollBar\" Width=\"18\" IsTabStop=\"False\" Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\" Grid.Column=\"1\" Grid.Row=\"0\" Orientation=\"Vertical\" ViewportSize=\"{TemplateBinding ViewportHeight}\" Maximum=\"{TemplateBinding ScrollableHeight}\" Minimum=\"0\" Value=\"{TemplateBinding VerticalOffset}\" Margin=\"0,-1,-1,-1\" />\r\n                            <ScrollBar x:Name=\"HorizontalScrollBar\" Height=\"18\" IsTabStop=\"False\" Visibility=\"{TemplateBinding ComputedHorizontalScrollBarVisibility}\" Grid.Column=\"0\" Grid.Row=\"1\" Orientation=\"Horizontal\" ViewportSize=\"{TemplateBinding ViewportWidth}\" Maximum=\"{TemplateBinding ScrollableWidth}\" Minimum=\"0\" Value=\"{TemplateBinding HorizontalOffset}\" Margin=\"-1,0,-1,-1\" />\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"ToolTip\">\r\n        <Setter Property=\"Background\" Value=\"#FFF7F8FA\" />\r\n        <Setter Property=\"Padding\" Value=\"3,0,3,0\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ToolTip\">\r\n                    <Border x:Name=\"Root\" CornerRadius=\"2\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"#FFFFFFFF\" BorderBrush=\"{TemplateBinding BorderBrush}\">\r\n                        <Border BorderBrush=\"#FFFFFFFF\" BorderThickness=\"1\" CornerRadius=\"1\" Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\">\r\n                            <Border.Resources>\r\n                                <Storyboard x:Key=\"Visible State\" />\r\n                                <Storyboard x:Key=\"Normal State\" />\r\n                            </Border.Resources>\r\n                            <ContentPresenter Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Cursor=\"{TemplateBinding Cursor}\" Margin=\"{TemplateBinding Padding}\" />\r\n                        </Border>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"ComboBox\">\r\n        <Setter Property=\"Padding\" Value=\"6,2,25,2\" />\r\n        <Setter Property=\"Background\" Value=\"#FF1F3B53\" />\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\" />\r\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\" />\r\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ComboBox\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <Style x:Name=\"comboToggleStyle\" TargetType=\"ToggleButton\">\r\n                                <Setter Property=\"Foreground\" Value=\"#FF333333\" />\r\n                                <Setter Property=\"Background\" Value=\"#FF1F3B53\" />\r\n                                <Setter Property=\"BorderBrush\">\r\n                                    <Setter.Value>\r\n                                        <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                            <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                                            <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                                            <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                                            <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                                        </LinearGradientBrush>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                                <vsm:Setter Property=\"BorderThickness\" Value=\"1\" />\r\n                                <Setter Property=\"Padding\" Value=\"3\" />\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"ToggleButton\">\r\n                                            <Grid>\r\n                                                <vsm:VisualStateManager.VisualStateGroups>\r\n                                                    <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <vsm:VisualState x:Name=\"Normal\" />\r\n                                                        <vsm:VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundOverlay\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#7FFFFFFF\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#CCFFFFFF\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#F2FFFFFF\" />\r\n                                                            </Storyboard>\r\n                                                        </vsm:VisualState>\r\n                                                        <vsm:VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundOverlay2\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                                                                <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Highlight\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\"1\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#E5FFFFFF\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#BCFFFFFF\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#6BFFFFFF\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" To=\"#F2FFFFFF\" />\r\n                                                            </Storyboard>\r\n                                                        </vsm:VisualState>\r\n                                                        <vsm:VisualState x:Name=\"Disabled\" />\r\n                                                    </vsm:VisualStateGroup>\r\n                                                    <vsm:VisualStateGroup x:Name=\"CheckStates\">\r\n                                                        <vsm:VisualState x:Name=\"Checked\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundOverlay3\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\"1\" />\r\n                                                                <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Highlight\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\"1\" />\r\n                                                                <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient2\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\"1\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient2\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" To=\"#E5FFFFFF\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient2\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" To=\"#BCFFFFFF\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient2\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" To=\"#6BFFFFFF\" />\r\n                                                                <ColorAnimation Duration=\"0\" Storyboard.TargetName=\"BackgroundGradient2\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\" To=\"#F2FFFFFF\" />\r\n                                                            </Storyboard>\r\n                                                        </vsm:VisualState>\r\n                                                        <vsm:VisualState x:Name=\"Unchecked\" />\r\n                                                    </vsm:VisualStateGroup>\r\n                                                    <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <vsm:VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Visibility\" Duration=\"0\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                        <DiscreteObjectKeyFrame.Value>\r\n                                                                            <Visibility>\r\n                                                                                Visible\r\n                                                                            </Visibility>\r\n                                                                        </DiscreteObjectKeyFrame.Value>\r\n                                                                    </DiscreteObjectKeyFrame>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </vsm:VisualState>\r\n                                                        <vsm:VisualState x:Name=\"Unfocused\" />\r\n                                                    </vsm:VisualStateGroup>\r\n                                                </vsm:VisualStateManager.VisualStateGroups>\r\n                                                <Rectangle x:Name=\"Background\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"{TemplateBinding Background}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{TemplateBinding BorderBrush}\" />\r\n                                                <Rectangle x:Name=\"BackgroundOverlay\" Opacity=\"0\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"#FF448DCA\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"#00000000\" />\r\n                                                <Rectangle x:Name=\"BackgroundOverlay2\" Opacity=\"0\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"#FF448DCA\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"#00000000\" />\r\n                                                <Rectangle x:Name=\"BackgroundGradient\" RadiusX=\"2\" RadiusY=\"2\" StrokeThickness=\"1\" Margin=\"{TemplateBinding BorderThickness}\" Stroke=\"#FFFFFFFF\">\r\n                                                    <Rectangle.Fill>\r\n                                                        <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                                            <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                                            <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                                            <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.625\" />\r\n                                                            <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                                        </LinearGradientBrush>\r\n                                                    </Rectangle.Fill>\r\n                                                </Rectangle>\r\n                                                <Rectangle Opacity=\"0\" x:Name=\"BackgroundOverlay3\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"#FF448DCA\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"#00000000\" />\r\n                                                <Rectangle Opacity=\"0\" x:Name=\"BackgroundGradient2\" RadiusX=\"2\" RadiusY=\"2\" StrokeThickness=\"1\" Margin=\"{TemplateBinding BorderThickness}\" Stroke=\"#FFFFFFFF\">\r\n                                                    <Rectangle.Fill>\r\n                                                        <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                                            <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                                            <GradientStop Color=\"#F9FFFFFF\" Offset=\"0.375\" />\r\n                                                            <GradientStop Color=\"#E5FFFFFF\" Offset=\"0.625\" />\r\n                                                            <GradientStop Color=\"#C6FFFFFF\" Offset=\"1\" />\r\n                                                        </LinearGradientBrush>\r\n                                                    </Rectangle.Fill>\r\n                                                </Rectangle>\r\n                                                <Rectangle x:Name=\"Highlight\" RadiusX=\"2\" RadiusY=\"2\" Opacity=\"0\" IsHitTestVisible=\"false\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Margin=\"{TemplateBinding BorderThickness}\" />\r\n                                                <ContentPresenter x:Name=\"contentPresenter\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" />\r\n                                                <Rectangle x:Name=\"FocusVisualElement\" RadiusX=\"3.5\" Margin=\"1\" RadiusY=\"3.5\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Visibility=\"Collapsed\" IsHitTestVisible=\"false\" />\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\" />\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"00:00:00\" Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\".55\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"00:00:00\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\"1\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\" />\r\n                                <vsm:VisualState x:Name=\"FocusedDropDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\" Storyboard.TargetName=\"PopupBorder\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <!--\r\n                            <vsm:VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <vsm:VisualState x:Name=\"Valid\" />\r\n                                <vsm:VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsOpen\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>\r\n                                                        True\r\n                                                    </sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            -->\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ContentPresenterBorder\">\r\n                            <Grid>\r\n                                <ToggleButton x:Name=\"DropDownToggle\" Style=\"{StaticResource comboToggleStyle}\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\" Margin=\"0\" HorizontalContentAlignment=\"Right\" Background=\"{TemplateBinding Background}\" BorderThickness=\"{TemplateBinding BorderThickness}\" BorderBrush=\"{TemplateBinding BorderBrush}\">\r\n                                    <Path x:Name=\"BtnArrow\" Height=\"4\" Width=\"8\" Stretch=\"Uniform\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" Margin=\"0,0,6,0\" HorizontalAlignment=\"Right\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"BtnArrowColor\" Color=\"#FF333333\" />\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </ToggleButton>\r\n                                <ContentPresenter x:Name=\"ContentPresenter\" Margin=\"{TemplateBinding Padding}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                    <TextBlock Text=\" \" />\r\n                                </ContentPresenter>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"White\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusX=\"2\" RadiusY=\"2\" Margin=\"1\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\" Opacity=\"0\" IsHitTestVisible=\"false\" />\r\n                        <!--\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderThickness=\"1\" CornerRadius=\"1\" BorderBrush=\"#FFDB000C\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" Template=\"{StaticResource ValidationToolTipTemplate}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <EventTrigger.Actions>\r\n                                                <BeginStoryboard>\r\n                                                    <Storyboard>\r\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsHitTestVisible\">\r\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                <DiscreteObjectKeyFrame.Value>\r\n                                                                    <sys:Boolean>\r\n                                                                        true\r\n                                                                    </sys:Boolean>\r\n                                                                </DiscreteObjectKeyFrame.Value>\r\n                                                            </DiscreteObjectKeyFrame>\r\n                                                        </ObjectAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </BeginStoryboard>\r\n                                            </EventTrigger.Actions>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Width=\"12\" Height=\"12\" HorizontalAlignment=\"Right\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Background=\"Transparent\">\r\n                                <Path Margin=\"1,3,0,0\" Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"#FFDC000C\" />\r\n                                <Path Margin=\"1,3,0,0\" Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"#ffffff\" />\r\n                            </Grid>\r\n                        </Border>\r\n                        -->\r\n                        <Popup x:Name=\"Popup\">\r\n                            <Border x:Name=\"PopupBorder\" HorizontalAlignment=\"Stretch\" Height=\"Auto\" BorderThickness=\"{TemplateBinding BorderThickness}\" BorderBrush=\"{TemplateBinding BorderBrush}\" CornerRadius=\"3\">\r\n                                <Border.Background>\r\n                                    <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                        <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                        <GradientStop Color=\"#FFFEFEFE\" Offset=\"1\" />\r\n                                    </LinearGradientBrush>\r\n                                </Border.Background>\r\n                                <ScrollViewer x:Name=\"ScrollViewer\" BorderThickness=\"0\" Padding=\"1\">\r\n                                    <ItemsPresenter />\r\n                                </ScrollViewer>\r\n                            </Border>\r\n                        </Popup>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"Slider\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Maximum\" Value=\"10\" />\r\n        <Setter Property=\"Minimum\" Value=\"0\" />\r\n        <Setter Property=\"Value\" Value=\"0\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Slider\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <ControlTemplate TargetType=\"RepeatButton\" x:Key=\"RepeatButtonTemplate\">\r\n                                <Grid x:Name=\"Root\" Opacity=\"0\" Background=\"Transparent\" />\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\" />\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"HorizontalTrackRectangleDisabledOverlay\" Storyboard.TargetProperty=\"Visibility\" Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ThumbDisabledOverlay\" Storyboard.TargetProperty=\"Visibility\" Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"VerticalTrackRectangleDisabledOverlay\" Storyboard.TargetProperty=\"Visibility\" Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <!-- Horizontal Template -->\r\n\r\n                        <Grid x:Name=\"HorizontalTemplate\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"*\" />\r\n                            </Grid.ColumnDefinitions>\r\n                            <!-- Track Layer -->\r\n\r\n                            <Rectangle x:Name=\"TrackRectangle\" Stroke=\"#FFA3AEB9\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"#FFE6EFF7\" Grid.Column=\"0\" Grid.ColumnSpan=\"3\" Height=\"3\" RadiusX=\"1\" RadiusY=\"1\" Margin=\"5,0,5,0\" />\r\n                            <Rectangle x:Name=\"HorizontalTrackRectangleDisabledOverlay\" Visibility=\"Collapsed\" Fill=\"White\" Opacity=\".55\" Grid.Column=\"0\" Grid.ColumnSpan=\"3\" Height=\"3\" RadiusX=\"1\" RadiusY=\"1\" Margin=\"5,0,5,0\" />\r\n                            <!-- Repeat Buttons + Thumb -->\r\n\r\n                            <RepeatButton x:Name=\"HorizontalTrackLargeChangeDecreaseRepeatButton\" Height=\"18\" IsTabStop=\"False\" Template=\"{StaticResource RepeatButtonTemplate}\" Grid.Column=\"0\" />\r\n                            <Thumb Height=\"18\" x:Name=\"HorizontalThumb\" Width=\"11\" Grid.Column=\"1\" IsTabStop=\"True\" />\r\n                            <Rectangle x:Name=\"ThumbDisabledOverlay\" RadiusX=\"2\" RadiusY=\"2\" Width=\"11\" Grid.Column=\"1\" Fill=\"White\" Opacity=\".55\" Visibility=\"Collapsed\" />\r\n                            <RepeatButton x:Name=\"HorizontalTrackLargeChangeIncreaseRepeatButton\" Height=\"18\" IsTabStop=\"False\" Template=\"{StaticResource RepeatButtonTemplate}\" Grid.Column=\"2\" />\r\n                        </Grid>\r\n                        <!-- Vertical Template -->\r\n\r\n                        <Grid x:Name=\"VerticalTemplate\" Visibility=\"Collapsed\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\" />\r\n                                <RowDefinition Height=\"Auto\" />\r\n                                <RowDefinition Height=\"Auto\" />\r\n                            </Grid.RowDefinitions>\r\n                            <!-- Track Layer -->\r\n\r\n                            <Rectangle Stroke=\"#FFA3AEB9\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"#FFE6EFF7\" Grid.Row=\"0\" Grid.RowSpan=\"3\" Width=\"3\" RadiusX=\"1\" RadiusY=\"1\" Margin=\"0,5,0,5\" />\r\n                            <Rectangle x:Name=\"VerticalTrackRectangleDisabledOverlay\" Visibility=\"Collapsed\" Fill=\"White\" Opacity=\".55\" Grid.Row=\"0\" Grid.RowSpan=\"3\" Width=\"3\" RadiusX=\"1\" RadiusY=\"1\" Margin=\"0,5,0,5\" />\r\n                            <!-- Repeat Buttons + Thumb -->\r\n\r\n                            <RepeatButton x:Name=\"VerticalTrackLargeChangeDecreaseRepeatButton\" Width=\"18\" IsTabStop=\"False\" Template=\"{StaticResource RepeatButtonTemplate}\" Grid.Row=\"2\" />\r\n                            <Thumb Height=\"11\" x:Name=\"VerticalThumb\" Width=\"18\" Grid.Row=\"1\" IsTabStop=\"True\" />\r\n                            <RepeatButton x:Name=\"VerticalTrackLargeChangeIncreaseRepeatButton\" Width=\"18\" IsTabStop=\"False\" Template=\"{StaticResource RepeatButtonTemplate}\" Grid.Row=\"0\" />\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"ProgressBar\">\r\n        <Setter Property=\"Foreground\" Value=\"#FF027DB8\" />\r\n        <Setter Property=\"Background\" Value=\"#FFD2D5D8\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Maximum\" Value=\"100\" />\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\".5,1\" StartPoint=\".5,0\">\r\n                    <GradientStop Color=\"#FFAEB7BF\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF919EA7\" Offset=\"0.35\" />\r\n                    <GradientStop Color=\"#FF7A8A99\" Offset=\"0.35\" />\r\n                    <GradientStop Color=\"#FF647480\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ProgressBar\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Determinate\" />\r\n                                <vsm:VisualState x:Name=\"Indeterminate\">\r\n                                    <Storyboard RepeatBehavior=\"Forever\">\r\n                                        <DoubleAnimation Storyboard.TargetName=\"IndeterminateGradientFill\" Storyboard.TargetProperty=\"(Shape.Fill).(LinearGradientBrush.Transform).(TransformGroup.Children)[0].X\" Duration=\"00:00:.5\" From=\"0\" To=\"20\" />\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\" Storyboard.TargetName=\"IndeterminateRoot\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\" Storyboard.TargetName=\"DeterminateRoot\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Collapsed\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <!--Default Root Visuals for either type of ProgressBar-->\r\n\r\n                        <Border Name=\"ProgressBarTrack\" CornerRadius=\"3\" Background=\"{TemplateBinding Background}\" BorderThickness=\"{TemplateBinding BorderThickness}\" BorderBrush=\"{TemplateBinding BorderBrush}\" />\r\n                        <Grid x:Name=\"ProgressBarRootGrid\">\r\n                            <!-- Beginning of Gradient over all visuals -->\r\n\r\n                            <Rectangle Canvas.ZIndex=\"1\" x:Name=\"ProgressBarRootGradient\" StrokeThickness=\"1\" Margin=\"{TemplateBinding BorderThickness}\" Stroke=\"#FFFFFFFF\" RadiusX=\"1.5\" RadiusY=\"1.5\">\r\n                                <Rectangle.Fill>\r\n                                    <LinearGradientBrush StartPoint=\".7,0\" EndPoint=\".7,1\">\r\n                                        <GradientStop Color=\"#B2FFFFFF\" Offset=\"0\" />\r\n                                        <GradientStop Color=\"#C6FFFFFF\" Offset=\"0.15\" />\r\n                                        <GradientStop Color=\"#D1FFFFFF\" Offset=\"0.275\" />\r\n                                        <GradientStop Color=\"#C6FFFFFF\" Offset=\"0.4\" />\r\n                                        <GradientStop Color=\"#BFFFFFFF\" Offset=\"0.65\" />\r\n                                        <GradientStop Color=\"#A5FFFFFF\" Offset=\"0.75\" />\r\n                                        <GradientStop Color=\"#91FFFFFF\" Offset=\"0.85\" />\r\n                                        <GradientStop Color=\"#72FFFFFF\" Offset=\"1\" />\r\n                                    </LinearGradientBrush>\r\n                                </Rectangle.Fill>\r\n                            </Rectangle>\r\n                            <!-- Beginning of Indeterminate Progress Bar Visuals-->\r\n\r\n                            <Grid x:Name=\"IndeterminateRoot\" Visibility=\"Collapsed\">\r\n                                <Rectangle x:Name=\"IndeterminateSolidFill\" Stroke=\"#FF448DCA\" RadiusX=\"2\" RadiusY=\"2\" StrokeThickness=\"0\" Margin=\"{TemplateBinding BorderThickness}\" Fill=\"{TemplateBinding Foreground}\" Opacity=\"1\" RenderTransformOrigin=\"0.5,0.5\" />\r\n                                <Rectangle x:Name=\"IndeterminateGradientFill\" RadiusX=\"2\" RadiusY=\"2\" StrokeThickness=\"1\" Margin=\"{TemplateBinding BorderThickness}\" Opacity=\"0.7\">\r\n                                    <Rectangle.Fill>\r\n                                        <LinearGradientBrush SpreadMethod=\"Repeat\" MappingMode=\"Absolute\" EndPoint=\"0,1\" StartPoint=\"20,1\">\r\n                                            <LinearGradientBrush.Transform>\r\n                                                <TransformGroup>\r\n                                                    <TranslateTransform X=\"0\" />\r\n                                                    <SkewTransform AngleX=\"-30\" />\r\n                                                </TransformGroup>\r\n                                            </LinearGradientBrush.Transform>\r\n                                            <GradientStop Color=\"#FFFFFFFF\" Offset=\"0\" />\r\n                                            <GradientStop Color=\"#00FFFFFF\" Offset=\".25\" />\r\n                                            <GradientStop Color=\"#FFFFFFFF\" Offset=\"0.85\" />\r\n                                        </LinearGradientBrush>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                            </Grid>\r\n                            <!-- Beginning of Determinate Progress Bar Visuals-->\r\n\r\n                            <Grid x:Name=\"DeterminateRoot\" Margin=\"1\">\r\n                                <!--Background -->\r\n\r\n                                <Rectangle HorizontalAlignment=\"Left\" x:Name=\"ProgressBarIndicator\" Margin=\"{TemplateBinding BorderThickness}\" StrokeThickness=\"0.5\" RadiusX=\"1.5\" RadiusY=\"1.5\" Fill=\"{TemplateBinding Foreground}\" />\r\n                            </Grid>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"TextBox\">\r\n        <Setter Property=\"Cursor\" Value=\"IBeam\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Background\" Value=\"#FFFFFFFF\" />\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"Padding\" Value=\"2\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"TextBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Storyboard.TargetName=\"MouseOverBorder\" Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Color)\" To=\"#FF99C1E2\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"ReadOnlyVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"0\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <!--\r\n                            <vsm:VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <vsm:VisualState x:Name=\"Valid\" />\r\n                                <vsm:VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsOpen\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>\r\n                                                        True\r\n                                                    </sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            -->\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"1\" Opacity=\"1\" Background=\"{TemplateBinding Background}\" BorderBrush=\"{TemplateBinding BorderBrush}\">\r\n                            <Grid>\r\n                                <Border x:Name=\"ReadOnlyVisualElement\" Opacity=\"0\" Background=\"#5EC9C9C9\" />\r\n                                <Border x:Name=\"MouseOverBorder\" BorderThickness=\"1\" BorderBrush=\"Transparent\">\r\n                                    <ScrollViewer x:Name=\"ContentElement\" Padding=\"{TemplateBinding Padding}\" BorderThickness=\"0\" IsTabStop=\"False\" />\r\n                                </Border>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" Background=\"#A5F7F7F7\" BorderBrush=\"#A5F7F7F7\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" IsHitTestVisible=\"False\" />\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"#FF6DBDD1\" BorderThickness=\"{TemplateBinding BorderThickness}\" Margin=\"1\" Opacity=\"0\" IsHitTestVisible=\"False\" />\r\n                        <!--\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderThickness=\"1\" CornerRadius=\"1\" BorderBrush=\"#FFDB000C\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" Template=\"{StaticResource ValidationToolTipTemplate}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <EventTrigger.Actions>\r\n                                                <BeginStoryboard>\r\n                                                    <Storyboard>\r\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsHitTestVisible\">\r\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                <DiscreteObjectKeyFrame.Value>\r\n                                                                    <sys:Boolean>\r\n                                                                        true\r\n                                                                    </sys:Boolean>\r\n                                                                </DiscreteObjectKeyFrame.Value>\r\n                                                            </DiscreteObjectKeyFrame>\r\n                                                        </ObjectAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </BeginStoryboard>\r\n                                            </EventTrigger.Actions>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Width=\"12\" Height=\"12\" HorizontalAlignment=\"Right\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Background=\"Transparent\">\r\n                                <Path Margin=\"1,3,0,0\" Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"#FFDC000C\" />\r\n                                <Path Margin=\"1,3,0,0\" Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"#ffffff\" />\r\n                            </Grid>\r\n                        </Border>\r\n                        -->\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"PasswordBox\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Background\" Value=\"#FFFFFFFF\" />\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"Padding\" Value=\"2\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"PasswordBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Storyboard.TargetName=\"MouseOverBorder\" Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Color)\" To=\"#FF99C1E2\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"0\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            <!--\r\n                            <vsm:VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <vsm:VisualState x:Name=\"Valid\" />\r\n                                <vsm:VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>\r\n                                                        Visible\r\n                                                    </Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsOpen\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>\r\n                                                        True\r\n                                                    </sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                            -->\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"1\" Opacity=\"1\" Background=\"{TemplateBinding Background}\" BorderBrush=\"{TemplateBinding BorderBrush}\">\r\n                            <Border x:Name=\"MouseOverBorder\" BorderThickness=\"1\" BorderBrush=\"Transparent\">\r\n                                <Border x:Name=\"ContentElement\" Margin=\"{TemplateBinding Padding}\" />\r\n                            </Border>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" Background=\"#A5F7F7F7\" BorderBrush=\"#A5F7F7F7\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" IsHitTestVisible=\"False\" />\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"#FF6DBDD1\" BorderThickness=\"{TemplateBinding BorderThickness}\" Margin=\"1\" Opacity=\"0\" IsHitTestVisible=\"False\" />\r\n                        <!--\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderThickness=\"1\" CornerRadius=\"1\" BorderBrush=\"#FFDB000C\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" Template=\"{StaticResource ValidationToolTipTemplate}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <EventTrigger.Actions>\r\n                                                <BeginStoryboard>\r\n                                                    <Storyboard>\r\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsHitTestVisible\">\r\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                <DiscreteObjectKeyFrame.Value>\r\n                                                                    <sys:Boolean>\r\n                                                                        true\r\n                                                                    </sys:Boolean>\r\n                                                                </DiscreteObjectKeyFrame.Value>\r\n                                                            </DiscreteObjectKeyFrame>\r\n                                                        </ObjectAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </BeginStoryboard>\r\n                                            </EventTrigger.Actions>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Width=\"12\" Height=\"12\" HorizontalAlignment=\"Right\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Background=\"Transparent\">\r\n                                <Path Margin=\"1,3,0,0\" Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"#FFDC000C\" />\r\n                                <Path Margin=\"1,3,0,0\" Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"#ffffff\" />\r\n                            </Grid>\r\n                        </Border>\r\n                        -->\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"RichTextBox\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Background\" Value=\"#FFFFFFFF\" />\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"Padding\" Value=\"2\" />\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"RichTextBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <vsm:VisualStateManager.VisualStateGroups>\r\n                            <vsm:VisualStateGroup x:Name=\"CommonStates\">\r\n                                <vsm:VisualState x:Name=\"Normal\" />\r\n                                <vsm:VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Storyboard.TargetName=\"MouseOverBorder\" Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Color)\" To=\"#FF99C1E2\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"ReadOnly\" />\r\n                            </vsm:VisualStateGroup>\r\n                            <vsm:VisualStateGroup x:Name=\"FocusStates\">\r\n                                <vsm:VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                                <vsm:VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\" To=\"0\" Duration=\"0\" />\r\n                                    </Storyboard>\r\n                                </vsm:VisualState>\r\n                            </vsm:VisualStateGroup>\r\n                        </vsm:VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"1\" Opacity=\"1\" Background=\"{TemplateBinding Background}\" BorderBrush=\"{TemplateBinding BorderBrush}\">\r\n                            <Border x:Name=\"MouseOverBorder\" BorderThickness=\"1\" BorderBrush=\"Transparent\">\r\n                                <ScrollViewer x:Name=\"ContentElement\" Padding=\"{TemplateBinding Padding}\" BorderThickness=\"0\" IsTabStop=\"False\" />\r\n                            </Border>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" Background=\"#A5F7F7F7\" BorderBrush=\"#A5F7F7F7\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" IsHitTestVisible=\"False\" />\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"#FF6DBDD1\" BorderThickness=\"{TemplateBinding BorderThickness}\" Margin=\"1\" Opacity=\"0\" IsHitTestVisible=\"False\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <Style TargetType=\"HeaderedContentControl\">\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\" />\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HeaderedContentControl\">\r\n                    <StackPanel>\r\n                        <ContentPresenter Content=\"{TemplateBinding Header}\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Cursor=\"{TemplateBinding Cursor}\" Margin=\"{TemplateBinding Padding}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" />\r\n                        <ContentPresenter Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Cursor=\"{TemplateBinding Cursor}\" Margin=\"{TemplateBinding Padding}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" />\r\n                    </StackPanel>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n</ResourceDictionary>"
  },
  {
    "path": "test/fayde.json",
    "content": "{\n  \"libs\": {},\n  \"themes\": {}\n}"
  },
  {
    "path": "test/mocks/BaseTest.xml",
    "content": "<ResourceDictionary\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\">\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"mocks/TestDictionary.xml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n    <Color x:Key=\"AnotherColor\">#FF001100</Color>\r\n</ResourceDictionary>"
  },
  {
    "path": "test/mocks/TestControl.ts",
    "content": "class TestControl extends Fayde.Controls.ContentControl {\r\n    CallbackFired: boolean = false;\r\n    TestCallback(sender: any, e: nullstone.IEventArgs) {\r\n        this.CallbackFired = true;\r\n    }\r\n}\r\nexport = TestControl;"
  },
  {
    "path": "test/mocks/TestConverter.ts",
    "content": "class TestConverter implements Fayde.Data.IValueConverter {\r\n    Convert(value: any, targetType: IType, parameter: any, culture: any): any {\r\n        return value;\r\n    }\r\n    ConvertBack(value: any, targetType: IType, parameter: any, culture: any): any {\r\n        return value;\r\n    }\r\n}\r\nnullstone.addTypeInterfaces(TestConverter, Fayde.Data.IValueConverter_);\r\nexport = TestConverter;"
  },
  {
    "path": "test/mocks/TestDictionary.xml",
    "content": "<ResourceDictionary\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\">\r\n    <Color x:Key=\"TestColor\">#FF110000</Color>\r\n</ResourceDictionary>"
  },
  {
    "path": "test/mocks/TestObservable.ts",
    "content": "﻿class TestObservable extends Fayde.MVVM.ObservableObject {\r\n    Member1: number = 0;\r\n    Member2: string = \"\";\r\n} \r\nFayde.MVVM.NotifyProperties(TestObservable, [\"Member1\", \"Member2\"]);\r\nexport = TestObservable;"
  },
  {
    "path": "test/mocks/TestViewModel.ts",
    "content": "class TestViewModel extends Fayde.MVVM.ViewModelBase {\n    TeamId: number;\n\n    constructor(teamId: number) {\n        super();\n        this.TeamId = teamId;\n    }\n}\nexport = TestViewModel;"
  },
  {
    "path": "test/mocks/TestViewModelProvider.ts",
    "content": "import TestViewModel = require(\"../mocks/TestViewModel\");\n\nclass TestViewModelProvider implements Fayde.MVVM.IViewModelProvider {\n    ResolveViewModel(route: Fayde.Navigation.Route) {\n        switch(route.View.toString()) {\n            case \"/Views/FantasyTeam.fayde\":\n                return new TestViewModel(+route.HashParams[\"id\"]);\n                break;\n        }\n    }\n}\nexport = TestViewModelProvider;"
  },
  {
    "path": "test/runner.ts",
    "content": "module runner {\r\n    var testModules = [\r\n        \".build/tests/Matrix\",\r\n        \".build/tests/Format\",\r\n        \".build/tests/TypeConverter\",\r\n        \".build/tests/MarkupExpression\",\r\n        \".build/tests/XamlNode\",\r\n        \".build/tests/Provider\",\r\n        \".build/tests/DependencyProperty\",\r\n        \".build/tests/DataTemplate\",\r\n        \".build/tests/Transform\",\r\n        \".build/tests/Timeline\",\r\n        \".build/tests/ItemContainersManager\",\r\n        \".build/tests/Binding\",\r\n        \".build/tests/UriMapper\",\r\n        \".build/tests/DeepObservableCollection\",\r\n\r\n        \".build/tests/RouteMapper\",\r\n\r\n        \".build/tests/Markup/Basic\",\r\n        \".build/tests/Markup/Controls\",\r\n        \".build/tests/Markup/Framework\",\r\n        \".build/tests/Markup/Resources\",\r\n        \".build/tests/Markup/Media\",\r\n\r\n        \".build/tests/MVVM/AutoModel\",\r\n\r\n        \".build/tests/Primitives/DateTime\",\r\n\r\n        \".build/tests/Text/Proxy\",\r\n        \r\n        \".build/tests/RadialGradientBrush\",\r\n        \".build/tests/LinearGradientBrush\"\r\n    ];\r\n\r\n    Fayde.LoadConfigJson((config, err) => {\r\n        if (err)\r\n            console.warn(\"Error loading configuration file.\", err);\r\n\r\n        require(testModules, (...modules: any[]) => {\r\n            for (var i = 0; i < modules.length; i++) {\r\n                modules[i].load();\r\n            }\r\n            QUnit.load();\r\n            QUnit.start();\r\n        });\r\n    });\r\n}\r\n"
  },
  {
    "path": "test/tests/Binding.ts",
    "content": "export function load() {\r\n    QUnit.module(\"Binding\");\r\n\r\n    test(\"BindingExpression with Source\", () => {\r\n        var binding = new Fayde.Data.Binding(\"Value\");\r\n        var data = { Value: 12 };\r\n        binding.Source = data;\r\n        var r = new Fayde.Shapes.Rectangle();\r\n        var expr = <Fayde.Data.BindingExpression>r.SetBinding(Fayde.Shapes.Shape.WidthProperty, binding);\r\n\r\n        strictEqual(expr.DataItem, data, \"DataItem should be the source.\");\r\n        strictEqual(expr.ParentBinding, binding, \"ParentBinding on expression should be the same as specified binding.\");\r\n    });\r\n\r\n    test(\"BindingExpression with DataContext\", () => {\r\n        var binding = new Fayde.Data.Binding(\"Value\");\r\n\r\n        var vm = { Value: 23 };\r\n\r\n        var r = new Fayde.Shapes.Rectangle();\r\n        r.SetBinding(Fayde.Shapes.Shape.WidthProperty, binding);\r\n        r.DataContext = vm;\r\n\r\n        equal(r.Width, 23, \"Target of binding with datacontext set should have value provided.\");\r\n    });\r\n\r\n    test(\"TwoWay + OneWay Binding\", () => {\r\n        var Binding = Fayde.Data.Binding;\r\n        var BindingMode = Fayde.Data.BindingMode;\r\n\r\n        var vm = new Fayde.MVVM.ViewModelBase();\r\n        var backing = {};\r\n        Object.defineProperty(vm, \"SelectedItem\", {\r\n            get: function () { return backing; },\r\n            set: function (value) {\r\n                backing = value;\r\n                this.OnPropertyChanged(\"SelectedItem\");\r\n            }\r\n        });\r\n\r\n        var sp = new Fayde.Controls.StackPanel();\r\n        sp.DataContext = vm;\r\n\r\n        var binding = new Binding(\"SelectedItem\"); //2-way\r\n        binding.Mode = BindingMode.TwoWay;\r\n        var lb = new Fayde.Controls.ListBox();\r\n        lb.SetBinding(Fayde.Controls.Primitives.Selector.SelectedItemProperty, binding);\r\n        sp.Children.Add(lb);\r\n\r\n        var binding2 = new Binding(\"SelectedItem\");\r\n        var binding3 = new Binding(\"Test\");\r\n        var tb = new Fayde.Controls.TextBlock();\r\n        tb.SetBinding(Fayde.DependencyObject.DataContextProperty, binding2);\r\n        tb.SetBinding(Fayde.Controls.TextBlock.TextProperty, binding3);\r\n        sp.Children.Add(tb);\r\n\r\n        equal(tb.Text, \"\", \"TextBlock Text binding should be broken upon initialization since there is not selected item.\");\r\n\r\n        var si = { Test: \"Hey\" };\r\n        lb.ItemsSource = <nullstone.IEnumerable<any>><any>[si];\r\n        Fayde.Data.IsCounterEnabled = true;\r\n        Fayde.Data.DataContextCounter = 0;\r\n        lb.SelectedItem = si;\r\n        Fayde.Data.IsCounterEnabled = false;\r\n        ok(true, \"[INFO] Number of BindingExpression DataContext Changes: \" + Fayde.Data.DataContextCounter);\r\n\r\n        equal(tb.Text, \"Hey\", \"TextBlock Text should match new selected item on ListBox.\");\r\n    });\r\n\r\n    test(\"UpdateSource\", () => {\r\n        var data = { Value: 10 };\r\n\r\n        var binding = new Fayde.Data.Binding(\"Value\");\r\n        binding.Mode = Fayde.Data.BindingMode.TwoWay;\r\n        binding.Source = data;\r\n        binding.UpdateSourceTrigger = Fayde.Data.UpdateSourceTrigger.Explicit;\r\n\r\n        var r = new Fayde.Shapes.Rectangle();\r\n        var expr = <Fayde.Data.BindingExpression>r.SetBinding(Fayde.Shapes.Shape.WidthProperty, binding);\r\n        r.Width = 100;\r\n\r\n        equal(data.Value, 10, \"Explicit Two-Way Binding should not update data until explicitly called.\");\r\n        expr.UpdateSource();\r\n        equal(data.Value, 100, \"Explicit Two-Way Binding should update after UpdateSource()\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/DataTemplate.ts",
    "content": "export function load() {\r\n    QUnit.module(\"DataTemplate\");\r\n\r\n    test(\"Basic Load\", () => {\r\n        var xaml = \"<DataTemplate xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<Grid></Grid>\"\r\n            + \"</DataTemplate>\";\r\n\r\n        var dt: Fayde.DataTemplate;\r\n        try {\r\n            dt = Fayde.Markup.LoadXaml<Fayde.DataTemplate>(null, xaml);\r\n        } catch (err) {\r\n            ok(false, \"Loading a DataTemplate should not error. \" + err.toString());\r\n        }\r\n        strictEqual((<any>dt).constructor, Fayde.DataTemplate, \"Resulting object should be a DataTemplate.\");\r\n\r\n        var visual = dt.GetVisualTree(null);\r\n        strictEqual((<any>visual).constructor, Fayde.Controls.Grid, \"Root visual from created visual tree should be a Grid.\");\r\n    });\r\n\r\n    test(\"Implicit DataTemplate\", () => {\r\n        var xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<Grid.Resources>\"\r\n            + \"<DataTemplate DataType=\\\"Color\\\">\"\r\n            + \"<TextBlock Text=\\\"{Binding R}\\\" />\"\r\n            + \"</DataTemplate>\"\r\n            + \"</Grid.Resources>\"\r\n            + \"<ContentControl Content=\\\"{x:Static new Color()}\\\">\"\r\n            + \"</ContentControl>\"\r\n            + \"</Grid>\";\r\n        var grid: Fayde.Controls.Grid;\r\n        try {\r\n            grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        } catch (err) {\r\n            ok(false, \"Loading a DataTemplate should not error. \" + err.toString());\r\n        }\r\n        ok(grid.Resources.Contains(Color));\r\n        var dt = <Fayde.DataTemplate>grid.Resources.Get(Color);\r\n        ok(dt instanceof Fayde.DataTemplate);\r\n        strictEqual(dt.DataType, Color, \"DataType for DataTemplate should be Color.\");\r\n\r\n        strictEqual(grid.Children.Count, 1);\r\n        var cc = <Fayde.Controls.ContentControl>grid.Children.GetValueAt(0);\r\n        ok(cc instanceof Fayde.Controls.ContentControl, \"Grid should have a ContentControl.\");\r\n        cc.Measure(new minerva.Size());\r\n\r\n        var cp = <Fayde.Controls.ContentPresenter>Fayde.VisualTreeHelper.GetChild(cc, 0);\r\n        ok(cp instanceof Fayde.Controls.ContentPresenter, \"ContentControl should have a ContentPresenter.\");\r\n\r\n        var tb = <Fayde.Controls.TextBlock>Fayde.VisualTreeHelper.GetChild(cp, 0);\r\n        ok(tb instanceof Fayde.Controls.TextBlock, \"ContentPresenter should have a TextBlock.\");\r\n        strictEqual(tb.Text, \"0\");\r\n    });\r\n\r\n    test(\"Key/TargetType not specified\", () => {\r\n        var xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<Grid.Resources>\"\r\n            + \"<DataTemplate>\"\r\n            + \"<Grid></Grid>\"\r\n            + \"</DataTemplate>\"\r\n            + \"</Grid.Resources>\"\r\n            + \"</Grid>\";\r\n        var grid: Fayde.Controls.Grid;\r\n        try {\r\n            grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n            ok(false, \"Expected parse error in xaml load.\");\r\n        } catch (err) {\r\n            ok(err instanceof XamlParseException, err);\r\n        }\r\n    });\r\n}"
  },
  {
    "path": "test/tests/DeepObservableCollection.ts",
    "content": "import TestObservable = require(\"../mocks/TestObservable\");\r\nimport DeepObservableCollection = Fayde.Collections.DeepObservableCollection;\r\n\r\nexport function load() {\r\n    QUnit.module(\"DeepObservableCollection\");\r\n\r\n    test(\"ItemPropertyChanged\", () => {\r\n        var doc = new DeepObservableCollection<TestObservable>();\r\n        var to1 = new TestObservable();\r\n        var to2 = new TestObservable();\r\n        doc.AddRange([to1, to2]);\r\n\r\n        var to1changed = false;\r\n        var to2changed = false;\r\n        doc.ItemPropertyChanged.on(onItemPropertyChanged, {});\r\n        function onItemPropertyChanged(sender, e: Fayde.Collections.ItemPropertyChangedEventArgs<TestObservable>) {\r\n            to1changed = (e.Item === to1) ? true : to1changed;\r\n            to2changed = (e.Item === to2) ? true : to2changed;\r\n        }\r\n\r\n        to1.Member1 = 10;\r\n        ok(to1changed, \"Notification of item property changing for test observable 1\");\r\n        to2.Member2 = \"hey\";\r\n        ok(to2changed, \"Notification of item property changing for test observable 1\");\r\n    });\r\n\r\n    test(\"Cleanup\", () => {\r\n        var doc = new DeepObservableCollection<TestObservable>();\r\n        var to1 = new TestObservable();\r\n        var to2 = new TestObservable();\r\n        doc.AddRange([to1, to2]);\r\n        \r\n        var to1changed = false;\r\n        var to2changed = false;\r\n        doc.ItemPropertyChanged.on(onItemPropertyChanged, {});\r\n        function onItemPropertyChanged(sender, e: Fayde.Collections.ItemPropertyChangedEventArgs<TestObservable>) {\r\n            to1changed = (e.Item === to1) ? true : to1changed;\r\n            to2changed = (e.Item === to2) ? true : to2changed;\r\n        }\r\n\r\n        doc.Remove(to1);\r\n        to1.Member1 = 10;\r\n        ok(!to1changed, \"Collection should not notify if item was removed from collection\");\r\n        doc.Insert(0, to1);\r\n        \r\n        var to3 = new TestObservable();\r\n        doc.SetValueAt(0, to3);\r\n        to1.Member1 = 15;\r\n        ok(!to1changed, \"Collection should not notify if item was replaced in collection\");\r\n        doc.SetValueAt(0, to1);\r\n        to1.Member1 = 20;\r\n        ok(to1changed, \"Collection should notify of item that was placed back into collection\");\r\n\r\n        to1changed = false;\r\n        doc.Clear();\r\n        to1.Member1 = 25;\r\n        to2.Member2 = \"brad\";\r\n        ok(!to1changed, \"Collection should not notify item 1 property if collection was cleared\");\r\n        ok(!to2changed, \"Collection should not notify item 2 property if collection was cleared\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/DependencyProperty.ts",
    "content": "export function load() {\r\n    QUnit.module(\"DependencyProperty\");\r\n\r\n    function coercer(dobj: Fayde.DependencyObject, propd: DependencyProperty, value: any): any {\r\n        if (value < 0)\r\n            return 0;\r\n        return value;\r\n    }\r\n    function validator(dobj: Fayde.DependencyObject, propd: DependencyProperty, value: any): boolean {\r\n        return typeof value === \"string\";\r\n    }\r\n\r\n    var Mock3Property = DependencyProperty.RegisterFull(\"Mock3\", () => Number, Fayde.DependencyObject, undefined, undefined, coercer);\r\n    var Mock4Property = DependencyProperty.RegisterFull(\"Mock4\", () => String, Fayde.DependencyObject, undefined, undefined, undefined, false, validator);\r\n\r\n    test(\"Coerce\", () => {\r\n        var d = new Fayde.DependencyObject();\r\n        d.SetValue(Mock3Property, -1);\r\n        strictEqual(d.GetValue(Mock3Property), 0)\r\n        d.SetValue(Mock3Property, 1);\r\n        strictEqual(d.GetValue(Mock3Property), 1)\r\n    });\r\n\r\n    test(\"Validate\", () => {\r\n        var d = new Fayde.DependencyObject();\r\n        d.SetValue(Mock4Property, \"1\");\r\n        strictEqual(d.GetValue(Mock4Property), \"1\");\r\n        d.SetValue(Mock4Property, 1);\r\n        strictEqual(d.GetValue(Mock4Property), \"1\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Format.ts",
    "content": "﻿import Format = Fayde.Localization.Format;\r\n\r\nexport function load() {\r\n    QUnit.module(\"Format\");\r\n\r\n    function ft(format: string, num: number, expected: string) {\r\n        strictEqual(Format(format, num), expected);\r\n    }\r\n    function fdt(format: string, dt: DateTime, expected: string) {\r\n        strictEqual(Format(format, dt), expected);\r\n    }\r\n    function ftt(format: string, ts: TimeSpan, expected: string) {\r\n        strictEqual(Format(format, ts), expected);\r\n    }\r\n    function testCustomTimeSpan(msg: string, ts: TimeSpan, format: string, expected: string) {\r\n        strictEqual(Format(format, ts), expected, msg);\r\n    }\r\n    function testCustomDateTime(dt: DateTime, format: string, expected: string) {\r\n        strictEqual(Format(format, dt), expected, format);\r\n    }\r\n\r\n    var dt = new DateTime(2014, 4, 10, 8, 37, 46, 0, DateTimeKind.Local);\r\n    test(\"DateTime: Short date\", () => {\r\n        fdt(\"{0:d}\", dt, \"4/10/2014\");\r\n    });\r\n    test(\"DateTime: Long date\", () => {\r\n        fdt(\"{0:D}\", dt, \"Thursday, April 10, 2014\");\r\n    });\r\n    test(\"DateTime: Full date/time (short time)\", () => {\r\n        fdt(\"{0:f}\", dt, \"Thursday, April 10, 2014 8:37 AM\");\r\n    });\r\n    test(\"DateTime: Full date/time (long time)\", () => {\r\n        fdt(\"{0:F}\", dt, \"Thursday, April 10, 2014 8:37:46 AM\");\r\n    });\r\n    test(\"DateTime: General date/time (short time)\", () => {\r\n        fdt(\"{0:g}\", dt, \"4/10/2014 8:37 AM\");\r\n    });\r\n    test(\"DateTime: General date/time (long time)\", () => {\r\n        fdt(\"{0:G}\", dt, \"4/10/2014 8:37:46 AM\");\r\n    });\r\n    test(\"DateTime: Month/day\", () => {\r\n        fdt(\"{0:m}\", dt, \"April 10\");\r\n        fdt(\"{0:M}\", dt, \"April 10\");\r\n    });\r\n    var dt2 = new DateTime(2014, 4, 10, 12, 37, 46, 0, DateTimeKind.Utc);\r\n    test(\"DateTime: RFC123\", () => {\r\n        fdt(\"{0:r}\", dt2, \"Thu, 10 Apr 2014 12:37:46 GMT\");\r\n        fdt(\"{0:R}\", dt2, \"Thu, 10 Apr 2014 12:37:46 GMT\");\r\n    });\r\n    test(\"DateTime: Sortable date/time\", () => {\r\n        fdt(\"{0:s}\", dt, \"2014-04-10T08:37:46\");\r\n    });\r\n    test(\"DateTime: Short time\", () => {\r\n        fdt(\"{0:t}\", dt, \"8:37 AM\");\r\n    });\r\n    test(\"DateTime: Long time\", () => {\r\n        fdt(\"{0:T}\", dt, \"8:37:46 AM\");\r\n    });\r\n    test(\"DateTime: Universal sortable date/time\", () => {\r\n        fdt(\"{0:u}\", dt, \"2014-04-10 08:37:46Z\");\r\n    });\r\n    test(\"DateTime: Universal full date/time\", () => {\r\n        fdt(\"{0:U}\", dt, \"Thursday, April 10, 2014 8:37:46 AM\");\r\n    });\r\n    test(\"DateTime: Year month\", () => {\r\n        fdt(\"{0:y}\", dt, \"April, 2014\");\r\n        fdt(\"{0:Y}\", dt, \"April, 2014\");\r\n    });\r\n    test(\"DateTime: Custom\", () => {\r\n        var dt1 = new DateTime(2014, 1, 1, 5, 1, 2);\r\n        var dt2 = new DateTime(2014, 1, 15, 15, 16, 17);\r\n\r\n        testCustomDateTime(dt1, \"{0:%d}\", \"1\");\r\n        testCustomDateTime(dt2, \"{0:%d}\", \"15\");\r\n        testCustomDateTime(dt1, \"{0:dd}\", \"01\");\r\n        testCustomDateTime(dt2, \"{0:dd}\", \"15\");\r\n        testCustomDateTime(dt1, \"{0:ddd}\", \"Wed\");\r\n        testCustomDateTime(dt1, \"{0:dddd}\", \"Wednesday\");\r\n\r\n        testCustomDateTime(dt1, \"{0:%M}\", \"1\");\r\n        testCustomDateTime(dt1, \"{0:MM}\", \"01\");\r\n        testCustomDateTime(dt1, \"{0:MMM}\", \"Jan\");\r\n        testCustomDateTime(dt1, \"{0:MMMM}\", \"January\");\r\n\r\n        var dt3 = new DateTime(2009, 1, 1);\r\n        var dt4 = new DateTime(900, 1, 1);\r\n        testCustomDateTime(dt1, \"{0:%y}\", \"14\");\r\n        testCustomDateTime(dt3, \"{0:%y}\", \"9\");\r\n        testCustomDateTime(dt1, \"{0:yy}\", \"14\");\r\n        testCustomDateTime(dt3, \"{0:yy}\", \"09\");\r\n        testCustomDateTime(dt4, \"{0:yyy}\", \"900\");\r\n        testCustomDateTime(dt3, \"{0:yyy}\", \"2009\");\r\n        testCustomDateTime(dt4, \"{0:yyyy}\", \"0900\");\r\n        testCustomDateTime(dt3, \"{0:yyyy}\", \"2009\");\r\n\r\n        testCustomDateTime(dt1, \"{0:%t}\", \"A\");\r\n        testCustomDateTime(dt2, \"{0:%t}\", \"P\");\r\n        testCustomDateTime(dt1, \"{0:tt}\", \"AM\");\r\n        testCustomDateTime(dt2, \"{0:tt}\", \"PM\");\r\n\r\n        testCustomDateTime(dt2, \"{0:h}\", \"3\");\r\n        testCustomDateTime(dt2, \"{0:hh}\", \"03\");\r\n        testCustomDateTime(dt2, \"{0:H}\", \"15\");\r\n        testCustomDateTime(dt2, \"{0:HH}\", \"15\");\r\n        \r\n        testCustomDateTime(dt1, \"{0:%m}\", \"1\");\r\n        testCustomDateTime(dt2, \"{0:%m}\", \"16\");\r\n        testCustomDateTime(dt1, \"{0:mm}\", \"01\");\r\n        testCustomDateTime(dt2, \"{0:mm}\", \"16\");\r\n        \r\n        testCustomDateTime(dt1, \"{0:%s}\", \"2\");\r\n        testCustomDateTime(dt2, \"{0:%s}\", \"17\");\r\n        testCustomDateTime(dt1, \"{0:ss}\", \"02\");\r\n        testCustomDateTime(dt2, \"{0:ss}\", \"17\");\r\n\r\n        var dt5 = new DateTime(0, 0, 0, 0, 0, 0, 123);\r\n        testCustomDateTime(dt5, \"{0:%f}\", \"1\");\r\n        testCustomDateTime(dt5, \"{0:ff}\", \"12\");\r\n        testCustomDateTime(dt5, \"{0:fff}\", \"123\");\r\n        testCustomDateTime(dt5, \"{0:ffff}\", \"1230\");\r\n        testCustomDateTime(dt5, \"{0:fffff}\", \"12300\");\r\n        testCustomDateTime(dt5, \"{0:ffffff}\", \"123000\");\r\n        testCustomDateTime(dt5, \"{0:fffffff}\", \"1230000\");\r\n\r\n        testCustomDateTime(dt5, \"{0:%F}\", \"1\");\r\n        testCustomDateTime(dt5, \"{0:FF}\", \"12\");\r\n        testCustomDateTime(dt5, \"{0:FFF}\", \"123\");\r\n        testCustomDateTime(dt5, \"{0:FFFF}\", \"123\");\r\n        testCustomDateTime(dt5, \"{0:FFFFF}\", \"123\");\r\n        testCustomDateTime(dt5, \"{0:FFFFFF}\", \"123\");\r\n        testCustomDateTime(dt5, \"{0:FFFFFFF}\", \"123\");\r\n        \r\n        /*\r\n        testCustomDateTime(dt1, \"{0:z}\", \"-4\");\r\n        testCustomDateTime(dt1, \"{0:zz}\", \"-04\");\r\n        testCustomDateTime(dt1, \"{0:zzz}\", \"-04:00\");\r\n        \r\n        testCustomDateTime(dt1, \"{0:K}\", \"\");\r\n\r\n        testCustomDateTime(dt1, \"{0:g}\", \"A.D.\");\r\n        testCustomDateTime(dt1, \"{0:gg}\", \"A.D.\");\r\n        */\r\n    });\r\n\r\n    test(\"DateTime: Edge #1\", () => {\r\n        testCustomDateTime(new DateTime(2014, 4, 27), \"{0: dd MMM yyyy }\", \" 27 Apr 2014 \");\r\n        testCustomDateTime(new DateTime(0, 0, 0, 10, 30, 45), \"{0: HH:mm:ss}\", \" 10:30:45\");\r\n    });\r\n\r\n    test(\"TimeSpan: Constant\", () => {\r\n        ftt(\"{0:c}\", TimeSpan.Zero, \"00:00:00\");\r\n        ftt(\"{0:c}\", new TimeSpan(0, 0, 30, 0), \"00:30:00\");\r\n        ftt(\"{0:c}\", new TimeSpan(0, 0, -30, 0), \"-00:30:00\");\r\n        ftt(\"{0:c}\", new TimeSpan(3, 17, 25, 30, 500), \"3.17:25:30.5000000\");\r\n    });\r\n    test(\"TimeSpan: General short\", () => {\r\n        ftt(\"{0:g}\", new TimeSpan(1, 3, 16, 50, 500), \"1:3:16:50.5\");\r\n        ftt(\"{0:g}\", new TimeSpan(-1, -3, -16, -50, -500), \"-1:3:16:50.5\");\r\n        ftt(\"{0:g}\", new TimeSpan(1, 3, 16, 50, 599), \"1:3:16:50.599\");\r\n    });\r\n    test(\"TimeSpan: General long\", () => {\r\n        ftt(\"{0:G}\", new TimeSpan(18, 30, 0), \"0:18:30:00.0000000\");\r\n        ftt(\"{0:G}\", new TimeSpan(-18, -30, 0), \"-0:18:30:00.0000000\");\r\n    });\r\n    test(\"TimeSpan: Custom\", () => {\r\n        var ts1 = new TimeSpan(6, 14, 32, 17, 685);\r\n        var ts2 = new TimeSpan(6, 8, 32, 17, 685);\r\n        var ts3 = new TimeSpan(6, 14, 8, 17, 685);\r\n        var ts4 = new TimeSpan(6, 8, 5, 17, 685);\r\n\r\n        testCustomTimeSpan(\"d,%d\", ts1, \"{0:%d}\", \"6\");\r\n        testCustomTimeSpan(\"d,%d\", ts1, \"{0:d\\\\.hh\\\\:mm}\", \"6.14:32\");\r\n        testCustomTimeSpan(\"dd-dddddddd\", ts1, \"{0:ddd}\", \"006\");\r\n        testCustomTimeSpan(\"dd-dddddddd\", ts1, \"{0:dd\\\\.hh\\\\:mm}\", \"06.14:32\");\r\n\r\n        testCustomTimeSpan(\"h,%h\", ts1, \"{0:%h}\", \"14\");\r\n        testCustomTimeSpan(\"h,%h\", ts1, \"{0:hh\\\\:mm}\", \"14:32\");\r\n\r\n        testCustomTimeSpan(\"hh\", ts1, \"{0:hh}\", \"14\");\r\n        testCustomTimeSpan(\"hh\", ts2, \"{0:hh}\", \"08\");\r\n\r\n        testCustomTimeSpan(\"m,%m\", ts3, \"{0:%m}\", \"8\");\r\n        testCustomTimeSpan(\"m,%m\", ts3, \"{0:h\\\\:m}\", \"14:8\");\r\n\r\n        testCustomTimeSpan(\"mm\", ts3, \"{0:mm}\", \"08\");\r\n        testCustomTimeSpan(\"mm\", ts4, \"{0:d\\\\.hh\\\\:mm\\\\:ss}\", \"6.08:05:17\");\r\n\r\n        var ts5 = new TimeSpan(0, 0, 0, 12, 965);\r\n        testCustomTimeSpan(\"s,%s\", ts5, \"{0:%s}\", \"12\");\r\n        testCustomTimeSpan(\"s,%s\", ts5, \"{0:s\\\\.fff}\", \"12.965\");\r\n\r\n        var ts6 = new TimeSpan(0, 0, 0, 6, 965);\r\n        testCustomTimeSpan(\"ss\", ts6, \"{0:ss}\", \"06\");\r\n        testCustomTimeSpan(\"ss\", ts6, \"{0:ss\\\\.fff}\", \"06.965\");\r\n\r\n        var ts7 = new TimeSpan(0, 0, 0, 6, 895);\r\n        testCustomTimeSpan(\"f,%f\", ts7, \"{0:f}\", \"8\");\r\n        testCustomTimeSpan(\"f,%f\", ts7, \"{0:ss\\\\.f}\", \"06.8\");\r\n\r\n        testCustomTimeSpan(\"ff\", ts7, \"{0:ff}\", \"89\");\r\n        testCustomTimeSpan(\"ff\", ts7, \"{0:ss\\\\.ff}\", \"06.89\");\r\n\r\n        testCustomTimeSpan(\"fff\", ts7, \"{0:fff}\", \"895\");\r\n        testCustomTimeSpan(\"fff\", ts7, \"{0:ss\\\\.fff}\", \"06.895\");\r\n        \r\n        testCustomTimeSpan(\"ffff\", ts7, \"{0:ffff}\", \"8950\");\r\n        testCustomTimeSpan(\"ffff\", ts7, \"{0:ss\\\\.ffff}\", \"06.8950\");\r\n        \r\n        testCustomTimeSpan(\"F,%F\", ts7, \"{0:%F}\", \"8\");\r\n        testCustomTimeSpan(\"F,%F\", ts7, \"{0:ss\\\\.F}\", \"06.8\");\r\n\r\n        testCustomTimeSpan(\"FF\", ts7, \"{0:FF}\", \"89\");\r\n        testCustomTimeSpan(\"FF\", ts7, \"{0:ss\\\\.FF}\", \"06.89\");\r\n\r\n        testCustomTimeSpan(\"FFF\", ts7, \"{0:FFF}\", \"895\");\r\n        testCustomTimeSpan(\"FFF\", ts7, \"{0:ss\\\\.FFF}\", \"06.895\");\r\n        \r\n        testCustomTimeSpan(\"FFFF\", ts7, \"{0:FFFF}\", \"895\");\r\n        testCustomTimeSpan(\"FFFF\", ts7, \"{0:ss\\\\.FFFF}\", \"06.895\");\r\n    });\r\n\r\n    test(\"Number: Currency\", () => {\r\n        ft(\"{0:c}\", 123.456, \"$123.46\");\r\n        ft(\"{0:C}\", 123.456, \"$123.46\");\r\n\r\n        ft(\"{0:c3}\", 123.456, \"$123.456\");\r\n        ft(\"{0:C3}\", 123.456, \"$123.456\");\r\n\r\n        ft(\"{0:c3}\", -123.456, \"($123.456)\");\r\n        ft(\"{0:C3}\", -123.456, \"($123.456)\");\r\n    });\r\n    test(\"Number: Decimal\", () => {\r\n        ft(\"{0:d}\", 1234, \"1234\");\r\n        ft(\"{0:D}\", 1234, \"1234\");\r\n\r\n        ft(\"{0:d}\", -1234, \"-1234\");\r\n        ft(\"{0:D}\", -1234, \"-1234\");\r\n\r\n        ft(\"{0:d6}\", -1234, \"-001234\");\r\n        ft(\"{0:D6}\", -1234, \"-001234\");\r\n    });\r\n    test(\"Number: Exponential\", () => {\r\n        ft(\"{0:e}\", 1052.0329112756, \"1.052033e+003\");\r\n        ft(\"{0:E}\", 1052.0329112756, \"1.052033E+003\");\r\n        \r\n        ft(\"{0:e}\", -1052.0329112756, \"-1.052033e+003\");\r\n        ft(\"{0:E}\", -1052.0329112756, \"-1.052033E+003\");\r\n\r\n        ft(\"{0:e2}\", -1052.0329112756, \"-1.05e+003\");\r\n        ft(\"{0:E2}\", -1052.0329112756, \"-1.05E+003\");\r\n    });\r\n    test(\"Number: Fixed-point\", () => {\r\n        ft(\"{0:f}\", 1234.567, \"1234.57\");\r\n        ft(\"{0:F}\", 1234.567, \"1234.57\");\r\n        \r\n        ft(\"{0:f1}\", 1234, \"1234.0\");\r\n        ft(\"{0:F1}\", 1234, \"1234.0\");\r\n\r\n        ft(\"{0:f4}\", -1234.56, \"-1234.5600\");\r\n        ft(\"{0:F4}\", -1234.56, \"-1234.5600\");\r\n    });\r\n    test(\"Number: General\", () => {\r\n        ft(\"{0:g}\", -123.456, \"-123.456\");\r\n        ft(\"{0:G}\", -123.456, \"-123.456\");\r\n\r\n        ft(\"{0:g4}\", 123.4546, \"123.5\");\r\n        ft(\"{0:G4}\", 123.4546, \"123.5\");\r\n    });\r\n    test(\"Number: Number\", () => {\r\n        ft(\"{0:n}\", 1234.567, \"1,234.57\");\r\n        ft(\"{0:N}\", 1234.567, \"1,234.57\");\r\n\r\n        ft(\"{0:n1}\", 1234, \"1,234.0\");\r\n        ft(\"{0:N1}\", 1234, \"1,234.0\");\r\n        \r\n        ft(\"{0:n3}\", -1234.56, \"-1,234.560\");\r\n        ft(\"{0:N3}\", -1234.56, \"-1,234.560\");\r\n    });\r\n    test(\"Number: Percent\", () => {\r\n        ft(\"{0:p}\", 1, \"100.00 %\");\r\n        ft(\"{0:P}\", 1, \"100.00 %\");\r\n        \r\n        ft(\"{0:p0}\", 0.39678, \"40 %\");\r\n        ft(\"{0:P0}\", 0.39678, \"40 %\");\r\n        \r\n        ft(\"{0:p1}\", -0.39678, \"-39.7 %\");\r\n        ft(\"{0:P1}\", -0.39678, \"-39.7 %\");\r\n    });\r\n    test(\"Number: Hexadecimal\", () => {\r\n        ft(\"{0:x}\", -1, \"ff\");\r\n        ft(\"{0:X}\", -1, \"FF\");\r\n        \r\n        ft(\"{0:x}\", 255, \"ff\");\r\n        ft(\"{0:X}\", 255, \"FF\");\r\n\r\n        ft(\"{0:x4}\", 255, \"00ff\");\r\n        ft(\"{0:X4}\", 255, \"00FF\");\r\n        \r\n        ft(\"{0:x4}\", -1, \"ffff\");\r\n        ft(\"{0:X4}\", -1, \"FFFF\");\r\n    });\r\n\r\n    test(\"Interpolation\", () => {\r\n        var interp = Fayde.Localization.Format(\"Testing {0} {1} {2}\", 1, 2, 3);\r\n        strictEqual(interp, \"Testing 1 2 3\");\r\n    });\r\n} "
  },
  {
    "path": "test/tests/ItemContainersManager.ts",
    "content": "import DependencyObject = Fayde.DependencyObject;\r\nimport FrameworkElement = Fayde.FrameworkElement;\r\nimport ContentControl = Fayde.Controls.ContentControl;\r\nimport ItemContainersManager = Fayde.Controls.Internal.ItemContainersManager;\r\nimport ListBoxItem = Fayde.Controls.ListBoxItem;\r\n\r\nexport function load() {\r\n    QUnit.module(\"ItemContainersManager\");\r\n\r\n    var owner: Fayde.Controls.Internal.IItemContainersOwner = {\r\n        PrepareContainerForItem: function (container: Fayde.UIElement, item: any) {\r\n            if (!container)\r\n                return;\r\n            if (container === item)\r\n                return;\r\n            var cc = <ContentControl>container;\r\n            if (cc instanceof ContentControl)\r\n                cc.Content = item;\r\n        },\r\n        ClearContainerForItem: function (container: Fayde.UIElement, item: any) {\r\n        },\r\n        GetContainerForItem: function (): Fayde.UIElement {\r\n            return new ContentControl();\r\n        },\r\n        IsItemItsOwnContainer: function (item: any): boolean {\r\n            return item instanceof FrameworkElement;\r\n        }\r\n    };\r\n\r\n    test(\"Enumerator-Full\", () => {\r\n        var icm = new ItemContainersManager(owner);\r\n        icm.OnItemsAdded(0, [1, 2, 3, 4, 5]);\r\n\r\n        var count = 0;\r\n        for (var i = 0, enumerator = icm.GetEnumerator(0, 5); enumerator.moveNext(); i++) {\r\n            strictEqual(enumerator.CurrentItem, i + 1);\r\n            strictEqual(enumerator.CurrentIndex, i);\r\n            count++;\r\n        }\r\n        strictEqual(count, 5);\r\n\r\n    });\r\n    test(\"Enumerator-Partial\", () => {\r\n        var icm = new ItemContainersManager(owner);\r\n        icm.OnItemsAdded(0, [1, 2, 3, 4, 5]);\r\n\r\n        var count = 0;\r\n        for (var i = 2, enumerator = icm.GetEnumerator(2, 2); enumerator.moveNext(); i++) {\r\n            strictEqual(enumerator.CurrentItem, i + 1);\r\n            strictEqual(enumerator.CurrentIndex, i);\r\n            count++;\r\n        }\r\n        strictEqual(count, 2);\r\n    });\r\n    test(\"Enumerator-Overlap\", () => {\r\n        var icm = new ItemContainersManager(owner);\r\n        icm.OnItemsAdded(0, [1, 2, 3, 4, 5]);\r\n\r\n        var count = 0;\r\n        for (var i = 4, enumerator = icm.GetEnumerator(4, 2); enumerator.moveNext(); i++) {\r\n            strictEqual(enumerator.CurrentItem, i + 1);\r\n            strictEqual(enumerator.CurrentIndex, i);\r\n            count++;\r\n        }\r\n        strictEqual(count, 1);\r\n    });\r\n\r\n    test(\"Generator-ItemsSource\", () => {\r\n        var icm = new ItemContainersManager(owner);\r\n        icm.OnItemsAdded(0, [1, 2, 3, 4, 5]);\r\n\r\n        for (var i = 0, generator = icm.CreateGenerator(0, 5); generator.Generate(); i++) {\r\n            ok(generator.Current instanceof ContentControl);\r\n            if (generator.IsCurrentNew)\r\n                owner.PrepareContainerForItem(generator.Current, generator.CurrentItem);\r\n            strictEqual((<ContentControl>generator.Current).Content, generator.CurrentItem);\r\n            strictEqual(generator.CurrentItem, i + 1);\r\n            strictEqual(generator.CurrentIndex, i);\r\n        }\r\n    });\r\n    test(\"Generator-Items\", () => {\r\n        var icm = new ItemContainersManager(owner);\r\n        var lbi1 = new ListBoxItem();\r\n        lbi1.Content = \"ListBoxItem1\";\r\n        var lbi2 = new ListBoxItem();\r\n        lbi1.Content = \"ListBoxItem2\";\r\n        var lbi3 = new ListBoxItem();\r\n        lbi1.Content = \"ListBoxItem3\";\r\n        var items = [lbi1, lbi2, lbi3];\r\n        icm.OnItemsAdded(0, items);\r\n\r\n        for (var i = 0, generator = icm.CreateGenerator(0, 5); generator.Generate(); i++) {\r\n            strictEqual(generator.GenerateIndex, i);\r\n            ok(generator.Current instanceof ContentControl);\r\n            if (generator.IsCurrentNew)\r\n                owner.PrepareContainerForItem(generator.Current, generator.CurrentItem);\r\n            strictEqual(generator.CurrentItem, items[i]);\r\n            strictEqual(generator.CurrentIndex, i);\r\n        }\r\n    });\r\n    test(\"Generator-Existing\", () => {\r\n        var icm = new ItemContainersManager(owner);\r\n        icm.OnItemsAdded(0, [1, 2, 3, 4, 5]);\r\n        for (var i = 0, generator = icm.CreateGenerator(0, 3); generator.Generate(); i++) {\r\n            //Create 0,1,2\r\n        }\r\n        for (var i = 0, generator = icm.CreateGenerator(2, 3); generator.Generate(); i++) {\r\n            strictEqual(generator.GenerateIndex, i);\r\n            //Create 2,3,4 (2 is the only one that should exist already)\r\n            ok(generator.IsCurrentNew === (i > 0));\r\n        }\r\n    });\r\n}"
  },
  {
    "path": "test/tests/LinearGradientBrush.ts",
    "content": "export function load() {\r\n    QUnit.module(\"LinearGradientBrush\");\r\n\r\n    test(\"LinearGradientBrush\", () => {\r\n        var radBrush = new Fayde.Media.LinearGradientBrush();\r\n        var g1 = new Fayde.Media.GradientStop();\r\n        g1.Offset = 0.982;\r\n        radBrush.GradientStops.Add(g1);\r\n        var canvas = <CanvasRenderingContext2D>document.createElement('canvas').getContext('2d');\r\n        var bounds = new minerva.Rect();\r\n        bounds.width = 10;\r\n        bounds.height = 10;\r\n        bounds.x = 1;\r\n        bounds.y = 1;\r\n        var pad = radBrush.CreatePad(canvas, bounds);\r\n        ok(pad, \"Pad should be ok even when no gradient stop color is passed.\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/MVVM/AutoModel.ts",
    "content": "import Entity = Fayde.MVVM.Entity;\r\nimport IEntity = Fayde.MVVM.IEntity;\r\nimport AutoModel = Fayde.MVVM.AutoModel;\r\n\r\nclass Person extends Entity {\r\n    FirstName: string;\r\n    LastName: string;\r\n    Age: number = 10;\r\n}\r\nAutoModel(Person)\r\n    .Notify(\"FirstName\", \"LastName\", \"Age\")\r\n    .Validate(\"FirstName\", required)\r\n    .Validate(\"Age\", ageValidation)\r\n    .Finish();\r\n\r\nfunction required (value: any, propertyName: string, entity: any): any[] {\r\n    if (value == null || value === \"\")\r\n        return [propertyName + \" is required.\"];\r\n}\r\n\r\nfunction ageValidation (value: any, propertyName: string, entity: any): any[] {\r\n    if (value == null)\r\n        return [propertyName + \" is required.\"];\r\n    if (value <= 0)\r\n        return [propertyName + \" must be greater than 0.\"];\r\n}\r\n\r\nfunction toArray (errors: nullstone.IEnumerable<string>): string[] {\r\n    return errors ? nullstone.IEnumerable_.toArray(errors) : null;\r\n}\r\n\r\ninterface IUser {\r\n    UserName: string;\r\n}\r\ninterface IUserEntity extends IUser, IEntity {\r\n}\r\n\r\nexport function load () {\r\n    QUnit.module(\"MVVM/AutoModel\");\r\n\r\n    QUnit.test(\"Initial\", (assert) => {\r\n        var person = new Person();\r\n        var changed = {};\r\n        person.PropertyChanged.on((sender, args) => changed[args.PropertyName] = (changed[args.PropertyName] || 0) + 1, {});\r\n\r\n        person.Age = null;\r\n        strictEqual(changed[\"Age\"], 1);\r\n        deepEqual(toArray(person.GetErrors(\"Age\")), [\"Age is required.\"]);\r\n        person.Age = -1;\r\n        strictEqual(changed[\"Age\"], 2);\r\n        deepEqual(toArray(person.GetErrors(\"Age\")), [\"Age must be greater than 0.\"]);\r\n        person.Age = 10;\r\n        strictEqual(changed[\"Age\"], 3);\r\n        equal(person.GetErrors(\"Age\"), null);\r\n    });\r\n\r\n    QUnit.test(\"Apply\", (assert) => {\r\n        var user: IUser = {\r\n            UserName: \"BSick7\"\r\n        };\r\n        var entity = Entity.ApplyTo<IUser, IUserEntity>(user);\r\n        AutoModel(entity)\r\n            .Notify([\"UserName\"])\r\n            .Validate(\"UserName\", required)\r\n            .Finish();\r\n\r\n        strictEqual(entity.UserName, \"BSick7\");\r\n\r\n        var changed = {};\r\n        entity.PropertyChanged.on((sender, args) => changed[args.PropertyName] = (changed[args.PropertyName] || 0) + 1, {});\r\n\r\n        entity.UserName = null;\r\n        strictEqual(changed[\"UserName\"], 1);\r\n        deepEqual(toArray(entity.GetErrors(\"UserName\")), [\"UserName is required.\"]);\r\n        entity.UserName = \"BSick7\";\r\n        strictEqual(changed[\"UserName\"], 2);\r\n        equal(entity.GetErrors(\"UserName\"), null);\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Markup/Basic.ts",
    "content": "import TestControl = require('../../mocks/TestControl');\r\n\r\nexport function load () {\r\n    QUnit.module(\"Markup/Basic\");\r\n\r\n    test(\"Valid XAML Document\", () => {\r\n        try {\r\n            var xaml = \"<Border />\";\r\n            var root = Fayde.Markup.LoadXaml<Fayde.Controls.Border>(null, xaml);\r\n            ok(false, \"An error should let us know that there is no valid default namespace.\");\r\n        } catch (err) {\r\n            ok(err instanceof XamlParseException, \"An error should let us know that there is no valid default namespace.\");\r\n        }\r\n    });\r\n\r\n    test(\"Basic Load\", () => {\r\n        var xaml = \"<Border xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\" />\";\r\n        var root = Fayde.Markup.LoadXaml<Fayde.Controls.Border>(null, xaml);\r\n\r\n        strictEqual((<any>root).constructor, Fayde.Controls.Border, \"Root Object should be a Border.\");\r\n        equal(root.Child, null, \"Border should not have a child.\");\r\n    });\r\n\r\n    test(\"Basic attribute\", () => {\r\n        var xaml = \"<TextBlock xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\" Text=\\\"Testing!\\\" HorizontalAlignment=\\\"Right\\\" />\";\r\n        var root = Fayde.Markup.LoadXaml<Fayde.Controls.TextBlock>(null, xaml);\r\n\r\n        strictEqual(root.Text, \"Testing!\", \"TextBlock should have Text property set to 'Testing!'.\");\r\n        strictEqual(root.HorizontalAlignment, Fayde.HorizontalAlignment.Right, \"Enum Attribute\");\r\n    });\r\n\r\n    test(\"Simple tag\", () => {\r\n        var xaml = \"<StackPanel xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<StackPanel.Background>\"\r\n            + \"<SolidColorBrush>\"\r\n            + \"<SolidColorBrush.Color>\"\r\n            + \"<Color>#AABBCC</Color>\"\r\n            + \"</SolidColorBrush.Color>\"\r\n            + \"</SolidColorBrush>\"\r\n            + \"</StackPanel.Background>\"\r\n            + \"</StackPanel>\";\r\n        var sp = Fayde.Markup.LoadXaml<Fayde.Controls.StackPanel>(null, xaml);\r\n        var bg = <Fayde.Media.SolidColorBrush>sp.Background;\r\n        strictEqual(bg.Color.ToHexStringNoAlpha(), \"#aabbcc\", \"Color\");\r\n    });\r\n\r\n    test(\"Empty property value\", () => {\r\n        var xaml = \"<StackPanel xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<StackPanel.DataContext>\"\r\n            + \"<!-- someone commented out -->\"\r\n            + \"</StackPanel.DataContext>\"\r\n            + \"</StackPanel>\";\r\n        try {\r\n            var sp = Fayde.Markup.LoadXaml<Fayde.Controls.StackPanel>(null, xaml);\r\n            ok(true);\r\n        } catch (err) {\r\n            ok(false, err);\r\n        }\r\n    });\r\n\r\n    test(\"Enum tag\", () => {\r\n        var xaml = \"<StackPanel xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<StackPanel.Orientation>\"\r\n            + \"<Orientation>Horizontal</Orientation>\"\r\n            + \"</StackPanel.Orientation>\"\r\n            + \"</StackPanel>\";\r\n        var sp = Fayde.Markup.LoadXaml<Fayde.Controls.StackPanel>(null, xaml);\r\n        strictEqual(sp.Orientation, Fayde.Orientation.Horizontal, \"Orientation\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Markup/Controls.ts",
    "content": "import Grid = Fayde.Controls.Grid;\r\nimport GridLength = Fayde.Controls.GridLength;\r\nimport GridUnitType = minerva.controls.grid.GridUnitType;\r\n\r\nexport function load () {\r\n    QUnit.module(\"Markup/Controls\");\r\n\r\n    var nsdecl = 'xmlns=\"' + Fayde.XMLNS + '\" xmlns:x=\"' + Fayde.XMLNSX + '\"';\r\n\r\n    test(\"Border with Child\", () => {\r\n        var xaml = \"<Border \" + nsdecl + \"><TextBlock Text=\\\"Hey!\\\" /></Border>\";\r\n        var root = Fayde.Markup.LoadXaml<Fayde.Controls.Border>(null, xaml);\r\n        var child = <Fayde.Controls.TextBlock>root.Child;\r\n        strictEqual((<any>child).constructor, Fayde.Controls.TextBlock, \"Border Child should be a TextBlock.\");\r\n        strictEqual(child.Text, \"Hey!\", \"Border Child should have Text property set to 'Hey!'\");\r\n    });\r\n\r\n    test(\"Panel with Children\", () => {\r\n        var xaml = \"<StackPanel \" + nsdecl + \"><Border /><TextBlock /></StackPanel>\";\r\n        var root = Fayde.Markup.LoadXaml<Fayde.Controls.StackPanel>(null, xaml);\r\n        strictEqual(root.Children.Count, 2, \"There should be 2 children in StackPanel.\");\r\n        var child1 = <Fayde.Controls.Border>root.Children.GetValueAt(0);\r\n        var child2 = <Fayde.Controls.TextBlock>root.Children.GetValueAt(1);\r\n        strictEqual((<any>child1).constructor, Fayde.Controls.Border, \"First child should be a Border.\");\r\n        strictEqual((<any>child2).constructor, Fayde.Controls.TextBlock, \"Second child should be a TextBlock.\");\r\n    });\r\n\r\n    test(\"ContentControl\", () => {\r\n        var xaml = \"<CheckBox \" + nsdecl + \">Hey</CheckBox>\";\r\n        var checkbox = Fayde.Markup.LoadXaml<Fayde.Controls.CheckBox>(null, xaml);\r\n        strictEqual(checkbox.Content, \"Hey\", \"Text Content\");\r\n    });\r\n\r\n    test(\"TextBlock Text\", () => {\r\n        var xaml = \"<TextBlock \" + nsdecl + \">Hey</TextBlock>\";\r\n        var tb = Fayde.Markup.LoadXaml<Fayde.Controls.TextBlock>(null, xaml);\r\n        strictEqual(tb.Text, \"Hey\", \"Text Content\");\r\n    });\r\n\r\n    test(\"ControlTemplate\", () => {\r\n        var xaml = \"<ControlTemplate \" + nsdecl + \">\"\r\n            + \"<Grid></Grid>\"\r\n            + \"</ControlTemplate>\";\r\n\r\n        var ct: Fayde.Controls.ControlTemplate;\r\n        try {\r\n            ct = Fayde.Markup.LoadXaml<Fayde.Controls.ControlTemplate>(null, xaml);\r\n            ok(false, \"Loading a ControlTemplate should error if no TargetType is specified.\");\r\n        } catch (err) {\r\n            ok(err instanceof XamlParseException, \"Loading a ControlTemplate should error if no TargetType is specified.\");\r\n        }\r\n\r\n        xaml = \"<ControlTemplate \" + nsdecl + \" TargetType=\\\"Control\\\">\"\r\n        + \"<Grid></Grid>\"\r\n        + \"</ControlTemplate>\";\r\n\r\n        try {\r\n            ct = Fayde.Markup.LoadXaml<Fayde.Controls.ControlTemplate>(null, xaml);\r\n            ok(true, \"Loading a ControlTemplate with a TargetType should succeed.\");\r\n        } catch (err) {\r\n            ok(false, \"Loading a ControlTemplate with a TargetType should succeed.\");\r\n        }\r\n\r\n        strictEqual((<any>ct).constructor, Fayde.Controls.ControlTemplate, \"Template should be a ControlTemplate.\");\r\n        strictEqual(ct.TargetType, Fayde.Controls.Control, \"ControlTemplate.TargetType should be Control.\");\r\n\r\n        var visual = ct.GetVisualTree(null);\r\n        strictEqual((<any>visual).constructor, Fayde.Controls.Grid, \"Root visual from created visual tree should be a Grid.\");\r\n    });\r\n\r\n    test(\"ItemsPanelTemplate\", () => {\r\n        var xaml = \"<ItemsPanelTemplate \" + nsdecl + \">\"\r\n            + \"<Border />\"\r\n            + \"</ItemsPanelTemplate>\";\r\n\r\n        var ipt: Fayde.Controls.ItemsPanelTemplate;\r\n        try {\r\n            ipt = Fayde.Markup.LoadXaml<Fayde.Controls.ItemsPanelTemplate>(null, xaml);\r\n            var tempPanel = ipt.GetVisualTree(null);\r\n            ok(false, \"Getting the visual tree for an ItemsPanelTemplate with a non-Panel root visual should error.\");\r\n        } catch (err) {\r\n            ok(err instanceof XamlParseException, \"Getting the visual tree for an ItemsPanelTemplate with a non-Panel root visual should error.\");\r\n        }\r\n\r\n        xaml = \"<ItemsPanelTemplate \" + nsdecl + \">\"\r\n        + \"<Grid></Grid>\"\r\n        + \"</ItemsPanelTemplate>\";\r\n\r\n        try {\r\n            ipt = Fayde.Markup.LoadXaml<Fayde.Controls.ItemsPanelTemplate>(null, xaml);\r\n        } catch (err) {\r\n            ok(false, \"Loading a ItemsPanelTemplate should not error. \" + err.toString());\r\n        }\r\n        strictEqual((<any>ipt).constructor, Fayde.Controls.ItemsPanelTemplate, \"Resulting object should be a ItemsPanelTemplate.\");\r\n\r\n        var visual = ipt.GetVisualTree(null);\r\n        strictEqual((<any>visual).constructor, Fayde.Controls.Grid, \"Root visual from created visual tree should be a Grid.\");\r\n    });\r\n\r\n    test(\"Terse Grid Cols/Rows\", () => {\r\n        var xaml = \"<Grid \" + nsdecl + \" ColumnDefinitions=\\\"auto 200 *\\\" RowDefinitions=\\\"100 * auto\\\"></Grid>\";\r\n        var grid = Fayde.Markup.LoadXaml<Grid>(null, xaml);\r\n        var cols = grid.ColumnDefinitions.ToArray();\r\n        strictEqual(cols.length, 3);\r\n        deepEqual(cols[0].Width, new GridLength(0, GridUnitType.Auto));\r\n        deepEqual(cols[1].Width, new GridLength(200, GridUnitType.Pixel));\r\n        deepEqual(cols[2].Width, new GridLength(1, GridUnitType.Star));\r\n        var rows = grid.RowDefinitions.ToArray();\r\n        deepEqual(rows[0].Height, new GridLength(100, GridUnitType.Pixel));\r\n        deepEqual(rows[1].Height, new GridLength(1, GridUnitType.Star));\r\n        deepEqual(rows[2].Height, new GridLength(0, GridUnitType.Auto));\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Markup/Framework.ts",
    "content": "export function load () {\r\n    QUnit.module(\"Markup/Framework\");\r\n\r\n    var nsdecl = \"xmlns=\\\"\" + Fayde.XMLNS + \"\\\" xmlns:x=\\\"\" + Fayde.XMLNSX + \"\\\"\";\r\n\r\n    test(\"Style\", () => {\r\n        var xaml = \"<StackPanel xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<StackPanel.Resources>\"\r\n            + \"<Style x:Key=\\\"SomeStyle\\\" TargetType=\\\"Button\\\">\"\r\n            + \"<Setter Property=\\\"Margin\\\" Value=\\\"1\\\" />\"\r\n            + \"</Style>\"\r\n            + \"</StackPanel.Resources>\"\r\n            + \"</StackPanel>\";\r\n        var root = Fayde.Markup.LoadXaml<Fayde.Controls.StackPanel>(null, xaml);\r\n\r\n        var resources = root.Resources;\r\n        var style = <Fayde.Style>resources.Get(\"SomeStyle\");\r\n        style.Seal();\r\n        strictEqual(style.TargetType, Fayde.Controls.Button, \"TargetType on Style should be set to Button.\");\r\n        var setters = style.Setters;\r\n        strictEqual(setters.Count, 1, \"There should be 1 setter in the Style.\");\r\n        var setter = setters.GetValueAt(0);\r\n        strictEqual(setter.Property, Fayde.FrameworkElement.MarginProperty, \"Setter Property should be Margin property.\");\r\n        deepEqual(setter.ConvertedValue, new Thickness(1, 1, 1, 1), \"Setter Value should be a Thickness (1, 1, 1, 1).\")\r\n\r\n\r\n        xaml = \"<StackPanel xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n        + \"<StackPanel.Resources>\"\r\n        + \"<Style x:Key=\\\"SomeStyle\\\">\"\r\n        + \"<Setter Property=\\\"Margin\\\" Value=\\\"1\\\" />\"\r\n        + \"</Style>\"\r\n        + \"</StackPanel.Resources>\"\r\n        + \"</StackPanel>\";\r\n        try {\r\n            root = Fayde.Markup.LoadXaml<Fayde.Controls.StackPanel>(null, xaml);\r\n            ok(false, \"Loading a style without a TargetType should fail.\");\r\n        } catch (err) {\r\n            ok(err instanceof XamlParseException, \"Error from loading a Style without a TargetType should be a XamlParseException.\");\r\n            strictEqual(err.Message, \"Style must have a TargetType.\");\r\n        }\r\n    });\r\n\r\n    test(\"Setter+Template Binding\", () => {\r\n        var xaml = \"<CheckBox \" + nsdecl + \">\"\r\n            + \"<CheckBox.Style>\"\r\n            + \"<Style TargetType=\\\"CheckBox\\\">\"\r\n            + \"<Setter Property=\\\"HorizontalContentAlignment\\\" Value=\\\"Right\\\" />\"\r\n            + \"<Setter Property=\\\"Template\\\">\"\r\n            + \"<Setter.Value>\"\r\n            + \"<ControlTemplate TargetType=\\\"CheckBox\\\">\"\r\n            + \"<ContentPresenter HorizontalAlignment=\\\"{TemplateBinding HorizontalContentAlignment}\\\" />\"\r\n            + \"</ControlTemplate>\"\r\n            + \"</Setter.Value>\"\r\n            + \"</Setter>\"\r\n            + \"</Style>\"\r\n            + \"</CheckBox.Style>\"\r\n            + \"</CheckBox>\";\r\n\r\n        var checkbox = Fayde.Markup.LoadXaml<Fayde.Controls.CheckBox>(null, xaml);\r\n        checkbox.ApplyTemplate();\r\n        var cp = <Fayde.Controls.ContentPresenter>Fayde.VisualTreeHelper.GetChild(checkbox, 0);\r\n        strictEqual(cp.HorizontalAlignment, Fayde.HorizontalAlignment.Right, \"HorizontalAlignment\");\r\n\r\n\r\n        xaml = \"<CheckBox \" + nsdecl + \">\"\r\n        + \"<CheckBox.Style>\"\r\n        + \"<Style TargetType=\\\"CheckBox\\\">\"\r\n        + \"<Setter Property=\\\"BorderThickness\\\" Value=\\\"1\\\" />\"\r\n        + \"<Setter Property=\\\"Template\\\">\"\r\n        + \"<Setter.Value>\"\r\n        + \"<ControlTemplate TargetType=\\\"CheckBox\\\">\"\r\n        + \"<Rectangle StrokeThickness=\\\"{TemplateBinding BorderThickness}\\\" />\"\r\n        + \"</ControlTemplate>\"\r\n        + \"</Setter.Value>\"\r\n        + \"</Setter>\"\r\n        + \"</Style>\"\r\n        + \"</CheckBox.Style>\"\r\n        + \"</CheckBox>\";\r\n        checkbox = Fayde.Markup.LoadXaml<Fayde.Controls.CheckBox>(null, xaml);\r\n        checkbox.ApplyTemplate();\r\n        var r = <Fayde.Shapes.Rectangle>Fayde.VisualTreeHelper.GetChild(checkbox, 0);\r\n        strictEqual(r.StrokeThickness, 1, \"StrokeThickness\");\r\n    });\r\n\r\n    test(\"HierarchicalDataTemplate\", () => {\r\n        var xaml = \"<HierarchicalDataTemplate \" + nsdecl + \" ItemsSource=\\\"{Binding SomePath}\\\">\"\r\n            + \"<Grid></Grid>\"\r\n            + \"</HierarchicalDataTemplate>\";\r\n\r\n        var hdt: Fayde.HierarchicalDataTemplate;\r\n        try {\r\n            hdt = Fayde.Markup.LoadXaml<Fayde.HierarchicalDataTemplate>(null, xaml);\r\n        } catch (err) {\r\n            ok(false, \"Loading a HierarchicalDataTemplate should not error. \" + err.toString());\r\n        }\r\n        strictEqual((<any>hdt).constructor, Fayde.HierarchicalDataTemplate, \"Resulting object should be a HierarchicalDataTemplate.\");\r\n\r\n        var isexpr = hdt.GetBindingExpression(Fayde.HierarchicalDataTemplate.ItemsSourceProperty);\r\n        ok(isexpr, \"HierarchicalDataTemplate.ItemsSource should have a BindingExpression.\");\r\n        strictEqual(isexpr.ParentBinding.Path.Path, \"SomePath\", \"BindingExpression.ParentBinding should have `Path=SomePath`.\");\r\n\r\n        var visual = hdt.GetVisualTree(null);\r\n        strictEqual((<any>visual).constructor, Fayde.Controls.Grid, \"Root visual from created visual tree should be a Grid.\");\r\n    });\r\n\r\n    test(\"String to Collection conversion\", () => {\r\n        var xaml = \"<Polygon \" + nsdecl + \" Points=\\\"0,0 100,0 100,100 0,100\\\"></Polygon>\";\r\n        var pg = Fayde.Markup.LoadXaml<Fayde.Shapes.Polygon>(null, xaml);\r\n        strictEqual(pg.Points.Count, 4);\r\n        var actual = nullstone.IEnumerable_.toArray(pg.Points);\r\n        deepEqual(actual, [\r\n            new Point(0, 0),\r\n            new Point(100, 0),\r\n            new Point(100, 100),\r\n            new Point(0, 100)\r\n        ]);\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Markup/Media.ts",
    "content": "import TestControl = require('../../mocks/TestControl');\r\n\r\nexport function load () {\r\n    QUnit.module(\"Markup/Media\");\r\n\r\n    test(\"VisualStateManager\", () => {\r\n        var xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<VisualStateManager.VisualStateGroups>\"\r\n            + \"<VisualStateGroup x:Name=\\\"CommonStates\\\">\"\r\n            + \"<VisualState x:Name=\\\"Normal\\\" />\"\r\n            + \"<VisualState x:Name=\\\"Disabled\\\">\"\r\n            + \"    <!-- composite controls will gain focus and visualize it -->\"\r\n            + \"</VisualState>\"\r\n            + \"</VisualStateGroup>\"\r\n            + \"</VisualStateManager.VisualStateGroups>\"\r\n            + \"</Grid>\";\r\n\r\n        var root = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        var groups = Fayde.Media.VSM.VisualStateManager.GetVisualStateGroups(root);\r\n        strictEqual((<any>groups).constructor, Fayde.Media.VSM.VisualStateGroupCollection, \"VisualStateGroups on Grid should be a VisualStateGroupCollection.\");\r\n        strictEqual(groups.Count, 1, \"There should be 1 VisualStateGroup in collection.\");\r\n        var states = groups.GetValueAt(0).States;\r\n        strictEqual(states.Count, 2);\r\n        var storyboard = states.GetValueAt(0).Storyboard;\r\n        ok(storyboard == null || storyboard instanceof Fayde.Media.Animation.Storyboard);\r\n        storyboard = states.GetValueAt(1).Storyboard;\r\n        ok(storyboard == null || storyboard instanceof Fayde.Media.Animation.Storyboard);\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Markup/Resources.ts",
    "content": "export function load () {\r\n    QUnit.module(\"Markup/Resources\");\r\n\r\n    var nsdecl = \"xmlns=\\\"\" + Fayde.XMLNS + \"\\\" xmlns:x=\\\"\" + Fayde.XMLNSX + \"\\\"\";\r\n\r\n    test(\"FrameworkElement Resources\", () => {\r\n        var xaml = \"<StackPanel \" + nsdecl + \">\"\r\n            + \"<StackPanel.Resources>\"\r\n            + \"<Thickness x:Key=\\\"SomeThickness\\\">1,2,3,4</Thickness>\"\r\n            + \"</StackPanel.Resources>\"\r\n            + \"</StackPanel>\";\r\n        var root = Fayde.Markup.LoadXaml<Fayde.Controls.StackPanel>(null, xaml);\r\n        var resources = root.Resources;\r\n        ok(resources.Contains(\"SomeThickness\"), \"Resources should contain a resource with a key 'SomeThickness'\");\r\n        var thickness = <Thickness>resources.Get(\"SomeThickness\");\r\n        strictEqual(thickness.left, 1, \"Thickness.Left must equal 1 and not \\\"1\\\".\");\r\n        strictEqual(thickness.top, 2, \"Thickness.Top must equal 2 and not \\\"2\\\".\");\r\n        strictEqual(thickness.right, 3, \"Thickness.Right must equal 3 and not \\\"3\\\".\");\r\n        strictEqual(thickness.bottom, 4, \"Thickness.Bottom must equal 4 and not \\\"4\\\".\");\r\n    });\r\n\r\n    test(\"Explicit Resources\", () => {\r\n        var xaml = \"\\\r\n            <Grid \" + nsdecl + \">\\\r\n                <Grid.Resources>\\\r\n                    <ResourceDictionary>\\\r\n                        <SolidColorBrush x:Key=\\\"SomeColor\\\" Color=\\\"Yellow\\\" />\\\r\n                    </ResourceDictionary>\\\r\n                </Grid.Resources>\\\r\n            </Grid>\";\r\n\r\n        var grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        var scb = grid.Resources.Get(\"SomeColor\");\r\n        deepEqual(scb.Color, Color.KnownColors.Yellow);\r\n    });\r\n\r\n    test(\"StaticResource external context\", () => {\r\n        var xaml = \"\\\r\n            <Grid \" + nsdecl + \">\\\r\n                <Grid.Resources>\\\r\n                    <SolidColorBrush x:Key=\\\"SomeColor\\\" Color=\\\"Yellow\\\" />\\\r\n                    <DataTemplate x:Key=\\\"SomeTemplate\\\">\\\r\n                        <Grid Background=\\\"{StaticResource SomeColor}\\\">\\\r\n                        </Grid>\\\r\n                    </DataTemplate>\\\r\n                </Grid.Resources>\\\r\n            </Grid>\";\r\n\r\n        var grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        var dt = grid.Resources.Get(\"SomeTemplate\");\r\n        var grid2 = <Fayde.Controls.Grid>dt.GetVisualTree(grid);\r\n        ok(grid2.Background instanceof Fayde.Media.SolidColorBrush);\r\n        var scb = <Fayde.Media.SolidColorBrush>grid2.Background;\r\n        deepEqual(scb.Color, Color.KnownColors.Yellow);\r\n    });\r\n\r\n    asyncTest(\"ResourceDictionary.Source\", () => {\r\n        Fayde.Markup.Resolve(\"mocks/BaseTest.xml\")\r\n            .then(xm => {\r\n                QUnit.start();\r\n                var rd = Fayde.Markup.Load<Fayde.ResourceDictionary>(null, xm);\r\n                deepEqual(rd.Get(\"AnotherColor\"), Color.FromHex(\"#FF001100\"));\r\n                deepEqual(rd.Get(\"TestColor\"), Color.FromHex(\"#FF110000\"));\r\n            }, err => {\r\n                QUnit.start();\r\n                ok(false, err);\r\n            });\r\n    });\r\n}"
  },
  {
    "path": "test/tests/MarkupExpression.ts",
    "content": "import TestConverter = require('../mocks/TestConverter');\r\n\r\nexport function load () {\r\n    QUnit.module(\"MarkupExpression\");\r\n\r\n    test(\"x:Null\", () => {\r\n        var xaml = \"<Border xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\" Tag=\\\"{x:Null}\\\"></Border>\";\r\n        var border = Fayde.Markup.LoadXaml<Fayde.Controls.Border>(null, xaml);\r\n        strictEqual(border.Tag, null, \"x:Null\");\r\n    });\r\n\r\n    test(\"x:Type\", () => {\r\n        var xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\" Tag=\\\"{x:Type Border}\\\"></Grid>\";\r\n        var grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        strictEqual(grid.Tag, Fayde.Controls.Border, \"x:Type\");\r\n    });\r\n\r\n    test(\"x:Static\", () => {\r\n        (<any>window).TestConverter = TestConverter;\r\n        var xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\" Tag=\\\"{x:Static new TestConverter()}\\\"></Grid>\";\r\n        var grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        ok(grid.Tag instanceof TestConverter, \"x:Static\");\r\n    });\r\n\r\n    test(\"TemplateBinding\", () => {\r\n        var xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<Grid.Resources>\"\r\n            + \"<Style x:Key=\\\"SomeStyle\\\" TargetType=\\\"Button\\\">\"\r\n            + \"<Setter Property=\\\"Template\\\">\"\r\n            + \"<Setter.Value>\"\r\n            + \"<ControlTemplate TargetType=\\\"Button\\\">\"\r\n            + \"<Border Margin=\\\"{TemplateBinding Padding}\\\" />\"\r\n            + \"</ControlTemplate>\"\r\n            + \"</Setter.Value>\"\r\n            + \"</Setter>\"\r\n            + \"</Style>\"\r\n            + \"</Grid.Resources>\"\r\n            + \"</Grid>\";\r\n        var grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        var style = <Fayde.Style>grid.Resources.Get(\"SomeStyle\");\r\n        style.Seal();\r\n        var setter = style.Setters.GetValueAt(0);\r\n        var template = <Fayde.Controls.ControlTemplate>setter.ConvertedValue;\r\n        var button = new Fayde.Controls.Button();\r\n        var border = <Fayde.Controls.Border>template.GetVisualTree(button);\r\n\r\n        button.Padding = new Thickness(1, 2, 3, 4);\r\n        deepEqual(border.Margin, button.Padding, \"After\");\r\n    });\r\n\r\n    test(\"StaticResource\", () => {\r\n        var xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<Grid.Resources>\"\r\n            + \"<Thickness x:Key=\\\"TestThickness\\\">1,2,3,4</Thickness>\"\r\n            + \"</Grid.Resources>\"\r\n            + \"<Border Margin=\\\"{StaticResource TestThickness}\\\" />\"\r\n            + \"</Grid>\";\r\n        var grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        var border = <Fayde.Controls.Border>grid.Children.GetValueAt(0);\r\n        deepEqual(border.Margin, new Thickness(1, 2, 3, 4), \"Value\");\r\n    });\r\n\r\n    test(\"Binding\", () => {\r\n        var xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\" Margin=\\\"{Binding TestPath}\\\" />\";\r\n        var grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        var expr = grid.GetBindingExpression(Fayde.FrameworkElement.MarginProperty);\r\n        ok(expr instanceof Fayde.Data.BindingExpression, \"Type\");\r\n        var binding = expr.ParentBinding;\r\n        strictEqual(binding.Path.Path, \"TestPath\", \"Implicit Path\");\r\n\r\n        xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\" Margin=\\\"{Binding Path=TestPath}\\\" />\";\r\n        grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        expr = grid.GetBindingExpression(Fayde.FrameworkElement.MarginProperty);\r\n        binding = expr.ParentBinding;\r\n        strictEqual(binding.Path.Path, \"TestPath\", \"Explicit Path\");\r\n\r\n        xaml = \"<ComboBox xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\" xmlns:mocks=\\\".build/mocks\\\"\"\r\n        + \" SelectedItem=\\\"{Binding TestPath, Mode=TwoWay, UpdateSourceTrigger=Explicit, Converter={StaticResource testConverter}}\\\">\"\r\n        + \"<ComboBox.Resources>\"\r\n        + \"<mocks:TestConverter x:Key=\\\"testConverter\\\" />\"\r\n        + \"</ComboBox.Resources>\"\r\n        + \"</ComboBox>\";\r\n        var combobox = Fayde.Markup.LoadXaml<Fayde.Controls.ComboBox>(null, xaml);\r\n        expr = combobox.GetBindingExpression(Fayde.Controls.Primitives.Selector.SelectedItemProperty);\r\n        binding = expr.ParentBinding;\r\n        strictEqual(binding.Path.Path, \"TestPath\", \"Implicit Path\");\r\n        strictEqual(binding.Mode, Fayde.Data.BindingMode.TwoWay, \"Mode\");\r\n        strictEqual(binding.UpdateSourceTrigger, Fayde.Data.UpdateSourceTrigger.Explicit, \"UpdateSourceTrigger\");\r\n        ok(binding.Converter instanceof TestConverter, \"Converter\");\r\n\r\n        xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\" Margin=\\\"{Binding RelativeSource={RelativeSource TemplatedParent}}\\\" />\";\r\n        grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n        expr = grid.GetBindingExpression(Fayde.FrameworkElement.MarginProperty);\r\n        binding = expr.ParentBinding;\r\n        var rs = binding.RelativeSource;\r\n        strictEqual(rs.Mode, Fayde.Data.RelativeSourceMode.TemplatedParent, \"Mode\");\r\n    });\r\n\r\n    test(\"EventBinding\", () => {\r\n        var methodcalled = false;\r\n        var vm = {\r\n            TestMethod: function (e: Fayde.IEventBindingArgs<nullstone.IEventArgs>) {\r\n                methodcalled = true;\r\n            }\r\n        };\r\n\r\n        var xaml = \"<UserControl xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<Button Click=\\\"{EventBinding Command={Binding TestMethod}}\\\" />\"\r\n            + \"</UserControl > \";\r\n        var uc = Fayde.Markup.LoadXaml<Fayde.Controls.UserControl>(null, xaml);\r\n        uc.DataContext = vm;\r\n        var button = <Fayde.Controls.Button>uc.Content;\r\n        button.OnClick();\r\n        ok(methodcalled, \"Command.\");\r\n\r\n\r\n        xaml = \"<UserControl xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n        + \"<Button x:Name=\\\"MyButton\\\" Click=\\\"{EventBinding Command={Binding TestMethod}, CommandParameter={Binding ElementName=MyButton}}\\\" />\"\r\n        + \"</UserControl > \";\r\n        methodcalled = false;\r\n        vm = {\r\n            TestMethod: function (e: Fayde.IEventBindingArgs<nullstone.IEventArgs>) {\r\n                if (!(e.parameter instanceof Fayde.Controls.Button))\r\n                    throw new Exception(\"CommandParameter was not transmitted properly.\");\r\n                methodcalled = true;\r\n            }\r\n        };\r\n        var uc = Fayde.Markup.LoadXaml<Fayde.Controls.UserControl>(null, xaml);\r\n        uc.DataContext = vm;\r\n        var button = <Fayde.Controls.Button>uc.Content;\r\n        button.OnClick();\r\n        ok(methodcalled, \"Command, CommandParameter.\");\r\n\r\n\r\n        xaml = \"<UserControl xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n        + \"<Button x:Name=\\\"MyButton\\\" Click=\\\"{EventBinding TestMethod, CommandParameter={Binding ElementName=MyButton}}\\\" />\"\r\n        + \"</UserControl > \";\r\n        methodcalled = false;\r\n        uc = Fayde.Markup.LoadXaml<Fayde.Controls.UserControl>(null, xaml);\r\n        uc.DataContext = vm;\r\n        var button = <Fayde.Controls.Button>uc.Content;\r\n        button.OnClick();\r\n        ok(methodcalled, \"Implicit Command, CommandParameter.\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Matrix.ts",
    "content": "export function load() {\n    QUnit.module(\"Matrix\");\n\n    test(\"Matrix to Raw mapping\", () => {\n        var m: Fayde.Media.Matrix;\n\n\tm = new Fayde.Media.Matrix();\n\tm.M11 = 0;\n\tm.M12 = 1;\n\tm.M21 = 2;\n\tm.M22 = 3;\n\tm.OffsetX = 4;\n\tm.OffsetY = 5;\n\n\tfor (var i=0; i<6; i++)\n\t{\n\t    strictEqual(m._Raw[i], i, \"Matrix[\" + i + \"]\");\n\t}\n    });\n}\n"
  },
  {
    "path": "test/tests/Primitives/DateTime.ts",
    "content": "export function load () {\r\n    QUnit.module(\"Primitives/DateTime\");\r\n\r\n    test(\"ctor\", () => {\r\n        var d: DateTime;\r\n\r\n        d = new DateTime();\r\n        strictEqual(d.Ticks, 0, \"ctor1\");\r\n        strictEqual(d.Kind, DateTimeKind.Unspecified, \"ctor1 kind\");\r\n\r\n        d = new DateTime(1000);\r\n        strictEqual(d.Ticks, 1000, \"ctor1 ticks\");\r\n        strictEqual(d.Kind, DateTimeKind.Unspecified, \"ctor1 kind\");\r\n\r\n        d = new DateTime(new Date(500));\r\n        strictEqual(d.Ticks, 500, \"ctor1 ticks\");\r\n        strictEqual(d.Kind, DateTimeKind.Unspecified, \"ctor1 kind\");\r\n\r\n        d = new DateTime(new Date(500), DateTimeKind.Local);\r\n        strictEqual(d.Ticks, 500, \"ctor2 ticks\");\r\n        strictEqual(d.Kind, DateTimeKind.Local, \"ctor2 kind\");\r\n\r\n        d = new DateTime(1000, DateTimeKind.Local);\r\n        strictEqual(d.Ticks, 1000, \"ctor3 ticks\");\r\n        strictEqual(d.Kind, DateTimeKind.Local, \"ctor3 kind\");\r\n\r\n        d = new DateTime(2000, 1, 2);\r\n        strictEqual(d.Year, 2000, \"ctor4 year\");\r\n        strictEqual(d.Month, 1, \"ctor4 month\");\r\n        strictEqual(d.Day, 2, \"ctor4 day\");\r\n\r\n        d = new DateTime(2000, 1, 2, 5, 30, 45);\r\n        strictEqual(d.Year, 2000, \"ctor5 year\");\r\n        strictEqual(d.Month, 1, \"ctor5 month\");\r\n        strictEqual(d.Day, 2, \"ctor5 day\");\r\n        strictEqual(d.Hour, 5, \"ctor5 hour\");\r\n        strictEqual(d.Minute, 30, \"ctor5 minute\");\r\n        strictEqual(d.Second, 45, \"ctor5 second\");\r\n\r\n        d = new DateTime(2000, 1, 2, 5, 30, 45, 500);\r\n        strictEqual(d.Year, 2000, \"ctor6 year\");\r\n        strictEqual(d.Month, 1, \"ctor6 month\");\r\n        strictEqual(d.Day, 2, \"ctor6 day\");\r\n        strictEqual(d.Hour, 5, \"ctor6 hour\");\r\n        strictEqual(d.Minute, 30, \"ctor6 minute\");\r\n        strictEqual(d.Second, 45, \"ctor6 second\");\r\n        strictEqual(d.Millisecond, 500, \"ctor6 millisecond\");\r\n\r\n        d = new DateTime(2000, 1, 2, 5, 30, 45, 500, DateTimeKind.Utc);\r\n        strictEqual(d.Year, 2000, \"ctor7 year\");\r\n        strictEqual(d.Month, 1, \"ctor7 month\");\r\n        strictEqual(d.Day, 2, \"ctor7 day\");\r\n        strictEqual(d.Hour, 5, \"ctor7 hour\");\r\n        strictEqual(d.Minute, 30, \"ctor7 minute\");\r\n        strictEqual(d.Second, 45, \"ctor7 second\");\r\n        strictEqual(d.Millisecond, 500, \"ctor7 millisecond\");\r\n        strictEqual(d.Kind, DateTimeKind.Utc, \"ctor7 kind\");\r\n    });\r\n\r\n    test(\"~min/max\", () => {\r\n        var dt = DateTime.MinValue;\r\n        throws(() => {\r\n            var d = dt.AddSeconds(-1);\r\n            console.log(d.Ticks);\r\n        }, undefined, \"Should throw when exceeding lower bounds of Date.\");\r\n\r\n        dt = DateTime.MaxValue;\r\n        throws(() => {\r\n            var d = dt.AddSeconds(1);\r\n            console.log(d.Ticks);\r\n        }, undefined, \"Should throw when exceeding upper bounds of Date.\");\r\n    });\r\n\r\n    test(\"ToUniversalTime\", () => {\r\n        var dt = new DateTime(2014, 7, 14, 6, 12, 0, 0, DateTimeKind.Local);\r\n        //6 is very intentional - Month representation for Date is zero-indexed\r\n        var localHourDiff = new Date(2014, 6, 14, 12).getTimezoneOffset() / 60;\r\n        var utc = dt.ToUniversalTime();\r\n        var expectedHour = 6 + localHourDiff;\r\n        if (expectedHour < 0) expectedHour += 24;\r\n        else if (expectedHour > 24) expectedHour -= 24;\r\n        strictEqual(utc.Hour, expectedHour, \"ToUniversalTime Hour\");\r\n    });\r\n\r\n    test(\"DaysInMonth\", () => {\r\n        strictEqual(DateTime.DaysInMonth(2014, 1), 31);\r\n\r\n        strictEqual(DateTime.DaysInMonth(2012, 2), 29);\r\n        strictEqual(DateTime.DaysInMonth(2013, 2), 28);\r\n        strictEqual(DateTime.DaysInMonth(2014, 2), 28);\r\n        strictEqual(DateTime.DaysInMonth(2015, 2), 28);\r\n        strictEqual(DateTime.DaysInMonth(2016, 2), 29);\r\n\r\n        strictEqual(DateTime.DaysInMonth(2014, 3), 31);\r\n        strictEqual(DateTime.DaysInMonth(2014, 4), 30);\r\n        strictEqual(DateTime.DaysInMonth(2014, 5), 31);\r\n        strictEqual(DateTime.DaysInMonth(2014, 6), 30);\r\n        strictEqual(DateTime.DaysInMonth(2014, 7), 31);\r\n        strictEqual(DateTime.DaysInMonth(2014, 8), 31);\r\n        strictEqual(DateTime.DaysInMonth(2014, 9), 30);\r\n        strictEqual(DateTime.DaysInMonth(2014, 10), 31);\r\n        strictEqual(DateTime.DaysInMonth(2014, 11), 30);\r\n        strictEqual(DateTime.DaysInMonth(2014, 12), 31);\r\n    });\r\n\r\n    test(\"~statics\", () => {\r\n        var now = DateTime.Now;\r\n        strictEqual(now.Day, new Date().getDate(), \"Now day should match local day\");\r\n        strictEqual(now.Kind, DateTimeKind.Local, \"Now should be DateTimeKind.Local\");\r\n\r\n        var today = DateTime.Today;\r\n        strictEqual(today.Day, new Date().getDate(), \"Today day should match local day\");\r\n        strictEqual(today.Kind, DateTimeKind.Local, \"Today should be DateTimeKind.Local\");\r\n    });\r\n\r\n    test(\"~converter\", () => {\r\n        var now = DateTime.Now;\r\n        var dt1 = nullstone.convertAnyToType(now, DateTime);\r\n        strictEqual(dt1.Ticks, now.Ticks);\r\n\r\n        var dt = new Date();\r\n        dt1 = nullstone.convertAnyToType(dt, DateTime);\r\n        strictEqual(dt1.Ticks, dt.getTime());\r\n\r\n        dt1 = nullstone.convertAnyToType(\"Wed, 09 Aug 1995 00:00:00 GMT\", DateTime);\r\n        strictEqual(dt1.Ticks, 807926400000);\r\n\r\n        dt1 = nullstone.convertAnyToType(1000, DateTime);\r\n        strictEqual(dt1.Ticks, 1000);\r\n    });\r\n\r\n    test(\"AddYears\", () => {\r\n        var dt = new DateTime(2015, 11, 1, 1, 0, 0, 0, DateTimeKind.Local);\r\n        var dt2 = dt.AddYears(8);\r\n        strictEqual(dt2.Year, 2023);\r\n        strictEqual(dt2.Month, 11);\r\n        strictEqual(dt2.Day, 1);\r\n    });\r\n    test(\"AddMonths\", () => {\r\n        var dt = new DateTime(2015, 11, 1, 1, 0, 0, 0, DateTimeKind.Local);\r\n        var dt2 = dt.AddMonths(1);\r\n        strictEqual(dt2.Year, 2015);\r\n        strictEqual(dt2.Month, 12);\r\n        strictEqual(dt2.Day, 1);\r\n\r\n        dt = new DateTime(2015, 7, 14, 1, 0, 0, 0, DateTimeKind.Local);\r\n        dt2 = dt.AddMonths(48);\r\n        strictEqual(dt2.Year, 2019);\r\n        strictEqual(dt2.Month, 7);\r\n        strictEqual(dt2.Day, 14);\r\n    });\r\n    test(\"AddDays\", () => {\r\n        var dt = new DateTime(2015, 11, 1);\r\n        var dt2 = dt.AddDays(1);\r\n        strictEqual(dt2.Day, 2);\r\n\r\n        dt = new DateTime(2015, 7, 14);\r\n        dt2 = dt.AddDays(1);\r\n        strictEqual(dt2.Day, 15);\r\n    });\r\n    test(\"AddHours\", () => {\r\n        var dt = new DateTime(2015, 11, 1, 1, 0, 0, 0, DateTimeKind.Local);\r\n        var dt2 = dt.AddHours(1);\r\n        strictEqual(dt2.Month, 11);\r\n        strictEqual(dt2.Day, 1);\r\n        strictEqual(dt2.Hour, 2);\r\n\r\n        dt = new DateTime(2015, 7, 14, 0, 0, 0, 0, DateTimeKind.Local);\r\n        dt2 = dt.AddHours(1);\r\n        strictEqual(dt2.Month, 7);\r\n        strictEqual(dt2.Day, 14);\r\n        strictEqual(dt2.Hour, 1);\r\n    });\r\n    test(\"AddMinutes\", () => {\r\n        var dt = new DateTime(2015, 11, 1, 1, 59, 0, 0, DateTimeKind.Local);\r\n        var dt2 = dt.AddMinutes(1);\r\n        strictEqual(dt2.Day, 1);\r\n        strictEqual(dt2.Hour, 2);\r\n        strictEqual(dt2.Minute, 0);\r\n\r\n        dt = new DateTime(2015, 7, 14, 0, 0, 0, 0, DateTimeKind.Local);\r\n        dt2 = dt.AddMinutes(1);\r\n        strictEqual(dt2.Month, 7);\r\n        strictEqual(dt2.Day, 14);\r\n        strictEqual(dt2.Hour, 0);\r\n        strictEqual(dt2.Minute, 1);\r\n    });\r\n    test(\"AddSeconds\", () => {\r\n        var dt = new DateTime(2015, 11, 1, 1, 59, 59, 0, DateTimeKind.Local);\r\n        var dt2 = dt.AddSeconds(1);\r\n        strictEqual(dt2.Day, 1);\r\n        strictEqual(dt2.Hour, 2);\r\n        strictEqual(dt2.Minute, 0);\r\n        strictEqual(dt2.Second, 0);\r\n\r\n        dt = new DateTime(2015, 7, 14, 0, 0, 0, 0, DateTimeKind.Local);\r\n        dt2 = dt.AddSeconds(1);\r\n        strictEqual(dt2.Month, 7);\r\n        strictEqual(dt2.Day, 14);\r\n        strictEqual(dt2.Hour, 0);\r\n        strictEqual(dt2.Minute, 0);\r\n        strictEqual(dt2.Second, 1);\r\n    });\r\n    test(\"AddMilliseconds\", () => {\r\n        var dt = new DateTime(2015, 11, 1, 1, 59, 59, 999, DateTimeKind.Local);\r\n        var dt2 = dt.AddMilliseconds(1);\r\n        strictEqual(dt2.Day, 1);\r\n        strictEqual(dt2.Hour, 2);\r\n        strictEqual(dt2.Minute, 0);\r\n        strictEqual(dt2.Second, 0);\r\n        strictEqual(dt2.Millisecond, 0);\r\n\r\n        dt = new DateTime(2015, 7, 14, 0, 0, 0, 0, DateTimeKind.Local);\r\n        dt2 = dt.AddMilliseconds(1);\r\n        strictEqual(dt2.Month, 7);\r\n        strictEqual(dt2.Day, 14);\r\n        strictEqual(dt2.Hour, 0);\r\n        strictEqual(dt2.Minute, 0);\r\n        strictEqual(dt2.Second, 0);\r\n        strictEqual(dt2.Millisecond, 1);\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Provider.ts",
    "content": "import DependencyObject = Fayde.DependencyObject;\r\nimport FrameworkElement = Fayde.FrameworkElement;\r\nimport ResourceDictionary = Fayde.ResourceDictionary;\r\nimport Font = minerva.Font;\r\n\r\nexport function load () {\r\n    QUnit.module(\"Provider\");\r\n\r\n    var Mock1Property = DependencyProperty.Register(\"Mock1\", () => String, Fayde.DependencyObject);\r\n    var Mock2Property = DependencyProperty.Register(\"Mock2\", () => String, Fayde.DependencyObject, \"Default\");\r\n\r\n    test(\"Basic\", () => {\r\n        var dobj = new Fayde.DependencyObject();\r\n\r\n        var val;\r\n\r\n        val = dobj.ReadLocalValue(Mock1Property);\r\n        ok(val === DependencyProperty.UnsetValue, \"ReadLocalValue (Mock1) should return UnsetValue since value has not been set.\");\r\n\r\n        dobj.SetValue(Mock1Property, \"Modified\");\r\n        val = dobj.GetValue(Mock1Property);\r\n        strictEqual(val, \"Modified\", \"GetValue (Mock1) should return value from local value provider after a SetValue.\");\r\n\r\n\r\n        val = dobj.GetValue(Mock2Property);\r\n        strictEqual(val, \"Default\", \"Initial GetValue (Mock2) should return value from default value provider.\");\r\n\r\n        dobj.SetValue(Mock2Property, \"Modified\");\r\n        val = dobj.GetValue(Mock2Property);\r\n        strictEqual(val, \"Modified\", \"GetValue (Mock2) should return value from local value provider after a SetValue.\");\r\n\r\n        val = dobj.ClearValue(Mock2Property);\r\n        val = dobj.GetValue(Mock2Property);\r\n        strictEqual(val, \"Default\", \"GetValue (Mock2) after ClearValue should revert to using default value provider.\");\r\n\r\n        var mock2changed = false;\r\n        Mock2Property.ChangedCallback = (d, args) => mock2changed = true;\r\n        dobj.SetValue(Mock2Property, \"Default\");\r\n        ok(!mock2changed, \"SetValue to the same value as default should not trigger property changed.\");\r\n    });\r\n\r\n    test(\"Inherited\", () => {\r\n        var root = new Fayde.FrameworkElement();\r\n        var child = new Fayde.FrameworkElement();\r\n\r\n        root.UseLayoutRounding = false;\r\n\r\n        var val = child.UseLayoutRounding;\r\n        strictEqual(val, true, \"Inherited property that hasn't been propagated should default to true.\");\r\n\r\n        var error = new BError();\r\n        ok(root.XamlNode.AttachVisualChild(child, error), \"Attaching child to root should not fail: \" + error.Message);\r\n\r\n        val = child.UseLayoutRounding;\r\n        strictEqual(val, false, \"Inherited property should be propagated from root to false.\");\r\n\r\n        root.ClearValue(Fayde.UIElement.UseLayoutRoundingProperty);\r\n        val = child.UseLayoutRounding;\r\n        strictEqual(val, true, \"Inherited property should be reset to true after value at root is cleared.\");\r\n\r\n\r\n        if (Font.DEFAULT_SIZE === 50 || Font.DEFAULT_SIZE === 90 || Font.DEFAULT_SIZE === 120) {\r\n            ok(false, \"Further tests are invalid. Default font size cannot be equal to 50, 90, or 120.\");\r\n        }\r\n\r\n        var Controls = Fayde.Controls;\r\n        var root2 = new Controls.Control();\r\n        var xaml = \"<ControlTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\" xmlns:x=\\\"\" + Fayde.XMLNSX + \"\\\" TargetType=\\\"Control\\\"><Grid><Border x:Name=\\\"TheBorder\\\" /></Grid></ControlTemplate>\";\r\n        root2.Template = Fayde.Markup.LoadXaml<Fayde.Controls.ControlTemplate>(null, xaml);\r\n\r\n        var child2 = new Controls.Control();\r\n        var xaml = \"<ControlTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\" xmlns:x=\\\"\" + Fayde.XMLNSX + \"\\\" TargetType=\\\"Control\\\"><Grid /></ControlTemplate>\";\r\n        child2.Template = Fayde.Markup.LoadXaml<Fayde.Controls.ControlTemplate>(null, xaml);\r\n        root2.ApplyTemplate();\r\n\r\n        strictEqual(root2.FontSize, Font.DEFAULT_SIZE, \"Root FontSize should be default.\");\r\n        strictEqual(child2.FontSize, Font.DEFAULT_SIZE, \"Child FontSize should be default.\");\r\n\r\n        root2.FontSize = 120;\r\n        strictEqual(root2.FontSize, 120, \"Root FontSize should change to 120 after setting local value.\");\r\n        var theBorder = <Fayde.Controls.Border>root2.GetTemplateChild(\"TheBorder\");\r\n        theBorder.Child = child2;\r\n        strictEqual(child2.FontSize, 120, \"Child FontSize should inherited 120 immediately after attaching.\");\r\n        root2.ClearValue(Controls.Control.FontSizeProperty);\r\n\r\n        child2.FontSize = 50;\r\n        strictEqual(child2.FontSize, 50, \"Child FontSize should change to 50 after setting local value.\");\r\n        root2.FontSize = 90;\r\n        strictEqual(root2.FontSize, 90, \"Root FontSize should change to 90 after setting local value.\");\r\n\r\n        root2.ClearValue(Controls.Control.FontSizeProperty);\r\n        child2.ClearValue(Controls.Control.FontSizeProperty);\r\n        strictEqual(root2.FontSize, Font.DEFAULT_SIZE, \"Root FontSize should be default.\");\r\n        strictEqual(child2.FontSize, Font.DEFAULT_SIZE, \"Child FontSize should be default.\");\r\n\r\n        root2.FontSize = 90;\r\n        strictEqual(root2.FontSize, 90, \"Root FontSize should change to 90 after setting local value.\");\r\n        strictEqual(child2.FontSize, 90, \"Root FontSize should inherit 90 from Root.\");\r\n\r\n        child2.FontSize = 50;\r\n        strictEqual(child2.FontSize, 50, \"Child FontSize should override inherited with local value 50.\");\r\n\r\n        child2.ClearValue(Controls.Control.FontSizeProperty);\r\n        strictEqual(child2.FontSize, 90, \"Child FontSize should inherit 90 from root after clearing local value.\");\r\n\r\n        root2.ClearValue(Controls.Control.FontSizeProperty);\r\n        strictEqual(root2.FontSize, Font.DEFAULT_SIZE, \"Root FontSize should be default after clearing Root Value.\");\r\n        strictEqual(child2.FontSize, Font.DEFAULT_SIZE, \"Child FontSize should be default after clearing Root Value.\");\r\n\r\n        root2.FontSize = 90;\r\n        strictEqual(root2.FontSize, 90, \"Root FontSize should change to 90 after setting local value.\");\r\n        strictEqual(child2.FontSize, 90, \"Child FontSize should inherit 90 from Root.\");\r\n        theBorder.Child = null;\r\n        strictEqual(child2.FontSize, Font.DEFAULT_SIZE, \"Child FontSize should clear inherited 90 from Root immediately after detaching.\");\r\n\r\n\r\n        var tb1 = new Fayde.Controls.TextBlock();\r\n        tb1.FontSize = 40;\r\n        tb1.Text = \"Hey Brad!\";\r\n\r\n        var autogenRun = tb1.Inlines.GetValueAt(0);\r\n        strictEqual(autogenRun.FontSize, 40, \"FontSize set on a TextBlock should propagate to child inlines.\");\r\n    });\r\n    test(\"Styles\", () => {\r\n        var root = new Fayde.FrameworkElement();\r\n        var child = new Fayde.FrameworkElement();\r\n        var error = new BError();\r\n        ok(root.XamlNode.AttachVisualChild(child, error), \"Attaching child to root should not fail: \" + error.Message);\r\n\r\n        //Test implicit style\r\n        var val = child.GetValue(Fayde.UIElement.TagProperty);\r\n        strictEqual(val, undefined, \"Child Tag should be undefined by default.\");\r\n        var visualTreeStyle = new Fayde.Style();\r\n        visualTreeStyle.TargetType = Fayde.FrameworkElement;\r\n        var s1 = new Fayde.Setter();\r\n        s1.Property = Fayde.UIElement.TagProperty;\r\n        s1.Value = \"TagValue\";\r\n        visualTreeStyle.Setters.Add(s1);\r\n        var s2 = new Fayde.Setter();\r\n        s2.Property = Fayde.FrameworkElement.MaxWidthProperty;\r\n        s2.Value = Number.POSITIVE_INFINITY;\r\n        visualTreeStyle.Setters.Add(s2);\r\n\r\n        var maxwidthchanged = false;\r\n        var oldCallback = Fayde.FrameworkElement.MaxWidthProperty.ChangedCallback;\r\n        Fayde.FrameworkElement.MaxWidthProperty.ChangedCallback = () => maxwidthchanged = true;\r\n\r\n        Fayde.Providers.ImplicitStyleBroker.Set(child, Fayde.Providers.StyleMask.VisualTree, [visualTreeStyle, null, null]);\r\n        val = child.GetValue(Fayde.UIElement.TagProperty);\r\n        strictEqual(val, \"TagValue\", \"Child Tag should be \\\"TagValue\\\" after setting implicit style.\");\r\n\r\n        ok(!maxwidthchanged, \"MaxWidth Property was setting to same as default value and should not trigger property changed.\");\r\n\r\n        Fayde.Providers.ImplicitStyleBroker.Clear(child, Fayde.Providers.StyleMask.VisualTree);\r\n        val = child.GetValue(Fayde.UIElement.TagProperty);\r\n        strictEqual(val, undefined, \"Child Tag should be undefined after clearing implicit style.\");\r\n\r\n        ok(!maxwidthchanged, \"MaxWidth Property was setting to same as default value and should not trigger property changed.\");\r\n        Fayde.FrameworkElement.MaxWidthProperty.ChangedCallback = oldCallback;\r\n\r\n        Fayde.Providers.ImplicitStyleBroker.Set(child, Fayde.Providers.StyleMask.VisualTree, [visualTreeStyle, null, null]);\r\n\r\n        val = child.GetValue(Fayde.UIElement.VisibilityProperty);\r\n        strictEqual(val, Fayde.Visibility.Visible, \"Child Visibility should default to Visible.\");\r\n        //Test local style\r\n        var localStyle = new Fayde.Style();\r\n        var s3 = new Fayde.Setter();\r\n        s3.Property = Fayde.UIElement.TagProperty;\r\n        s3.Value = \"Overridden Value\";\r\n        localStyle.Setters.Add(s3);\r\n        var s4 = new Fayde.Setter();\r\n        s4.Property = Fayde.UIElement.VisibilityProperty;\r\n        s4.Value = \"Collapsed\";\r\n        localStyle.Setters.Add(s4);\r\n        var s5 = new Fayde.Setter();\r\n        s5.Property = Fayde.FrameworkElement.MaxHeightProperty;\r\n        s5.Value = Number.POSITIVE_INFINITY;\r\n        localStyle.Setters.Add(s5);\r\n\r\n        var maxheightchanged = false;\r\n        oldCallback = Fayde.FrameworkElement.MaxHeightProperty.ChangedCallback;\r\n        Fayde.FrameworkElement.MaxHeightProperty.ChangedCallback = () => maxheightchanged = true;\r\n\r\n        child.Style = localStyle;\r\n        val = child.GetValue(Fayde.UIElement.VisibilityProperty);\r\n        strictEqual(val, Fayde.Visibility.Collapsed, \"Child Visibility should have changed to default by local style.\");\r\n\r\n        val = child.GetValue(Fayde.UIElement.TagProperty);\r\n        strictEqual(val, \"Overridden Value\", \"Child Tag property should be overriden by a new local style over the implicit style.\");\r\n\r\n        ok(!maxheightchanged, \"MaxHeight Property was setting to same as default value and should not trigger property changed.\");\r\n\r\n        child.Style = new Fayde.Style();\r\n        val = child.GetValue(Fayde.UIElement.VisibilityProperty);\r\n        strictEqual(val, Fayde.Visibility.Visible, \"After a new style is applied without Visibility property, Visibility revert to default value.\");\r\n\r\n        ok(!maxheightchanged, \"MaxHeight Property was setting to same as default value and should not trigger property changed.\");\r\n        Fayde.FrameworkElement.MaxHeightProperty.ChangedCallback = oldCallback;\r\n    });\r\n\r\n    test(\"DataContext\", () => {\r\n        var root = new Fayde.FrameworkElement();\r\n        var child = new Fayde.FrameworkElement();\r\n\r\n        //Test inherited DataContext\r\n        var effectiveDataContext = {};\r\n\r\n        root.SetValue(Fayde.DependencyObject.DataContextProperty, effectiveDataContext);\r\n\r\n        var val = child.GetValue(Fayde.DependencyObject.DataContextProperty);\r\n        strictEqual(val, undefined, \"Child DataContext should be undefined before attaching to tree.\");\r\n\r\n        var error = new BError();\r\n        ok(root.XamlNode.AttachVisualChild(child, error), \"Attaching child to root should not fail: \" + error.Message);\r\n\r\n        val = child.GetValue(Fayde.DependencyObject.DataContextProperty);\r\n        strictEqual(val, effectiveDataContext, \"Child DataContext should inherit DataContext from root after attaching to tree.\");\r\n\r\n        root.ClearValue(Fayde.DependencyObject.DataContextProperty);\r\n        val = child.GetValue(Fayde.DependencyObject.DataContextProperty);\r\n        strictEqual(val, undefined, \"Child DataContext should be undefined after clearing root DataContext value.\");\r\n\r\n\r\n        //Test inherited  with binding expression\r\n        var root2 = new Fayde.Controls.Border();\r\n        var vm = {Child: {}};\r\n        root2.DataContext = vm;\r\n\r\n        var child2 = new Fayde.Controls.Border();\r\n        child2.SetBinding(Fayde.DependencyObject.DataContextProperty, new Fayde.Data.Binding(\"Child\"));\r\n        var grandchild2 = new Fayde.Controls.Border();\r\n        child2.Child = grandchild2;\r\n\r\n        root2.Child = child2;\r\n\r\n        strictEqual(grandchild2.DataContext, vm.Child, \"Child DataContext of Bound DataContext from Inherited DataContext.\");\r\n    });\r\n\r\n    test(\"IsEnabled\", () => {\r\n        var Controls = Fayde.Controls;\r\n        var root = new Controls.Control();\r\n        var xaml = \"<ControlTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\" xmlns:x=\\\"\" + Fayde.XMLNSX + \"\\\" TargetType=\\\"Control\\\"><Grid><Border x:Name=\\\"TheBorder\\\" /></Grid></ControlTemplate>\";\r\n        root.Template = Fayde.Markup.LoadXaml<Fayde.Controls.ControlTemplate>(null, xaml);\r\n\r\n        var child = new Controls.Control();\r\n        xaml = \"<ControlTemplate xmlns=\\\"\" + Fayde.XMLNS + \"\\\" xmlns:x=\\\"\" + Fayde.XMLNSX + \"\\\" TargetType=\\\"Control\\\"><Grid /></ControlTemplate>\";\r\n        child.Template = Fayde.Markup.LoadXaml<Fayde.Controls.ControlTemplate>(null, xaml);\r\n\r\n        root.ApplyTemplate();\r\n        var theBorder = <Fayde.Controls.Border>root.GetTemplateChild(\"TheBorder\");\r\n\r\n        theBorder.Child = child;\r\n\r\n        ok(root.IsEnabled, \"Root IsEnabled should default to true.\");\r\n        ok(child.IsEnabled, \"Child IsEnabled should default to true.\");\r\n\r\n        root.IsEnabled = false;\r\n        ok(!root.IsEnabled, \"Root IsEnabled should be false.\");\r\n        ok(!child.IsEnabled, \"Child IsEnabled should inherit from Root to false.\");\r\n\r\n        child.IsEnabled = false;\r\n        ok(!child.IsEnabled, \"Child IsEnabled local is false.\");\r\n\r\n        root.IsEnabled = true;\r\n        ok(root.IsEnabled, \"Root IsEnabled should revert to true.\");\r\n        ok(!child.IsEnabled, \"Child IsEnabled should reveal local value of false after Root IsEnabled reverted back to true.\");\r\n\r\n        root.IsEnabled = false;\r\n        child.IsEnabled = true;\r\n        ok(!root.IsEnabled, \"Root IsEnabled should be false.\");\r\n        ok(!child.IsEnabled, \"Child IsEnabled local is true, and should inherit from Root IsEnabled false.\");\r\n\r\n        theBorder.Child = null;\r\n        ok(child.IsEnabled, \"Child IsEnabled is no longer in the tree. IsEnabled should be local value true.\");\r\n    });\r\n\r\n    test(\"Resources\", () => {\r\n        var fe = new FrameworkElement();\r\n        strictEqual(fe.ReadLocalValue(FrameworkElement.ResourcesProperty), DependencyProperty.UnsetValue);\r\n        ok(fe.Resources instanceof ResourceDictionary);\r\n    });\r\n}"
  },
  {
    "path": "test/tests/RadialGradientBrush.ts",
    "content": "export function load () {\r\n    QUnit.module(\"RadialGradientBrush\");\r\n\t\r\n\ttest(\"RadialGradientBrush\", () => {\r\n\t\tvar radBrush = new Fayde.Media.RadialGradientBrush();\r\n\t\tvar g1 = new Fayde.Media.GradientStop();\r\n\t\tg1.Offset = 0.982;\r\n\t\tradBrush.GradientStops.Add(g1);\r\n\t\tvar canvas = <CanvasRenderingContext2D>document.createElement('canvas').getContext('2d');\r\n\t\tvar bounds = new minerva.Rect();\r\n\t\tbounds.width = 10;\r\n\t\tbounds.height = 10;\r\n\t\tbounds.x = 1;\r\n\t\tbounds.y = 1;\r\n\t\tvar pad = radBrush.CreatePad(canvas, bounds);\r\n\t\tok(pad, \"Pad should be ok even when no gradient stop color is passed.\");\r\n\t});\r\n}"
  },
  {
    "path": "test/tests/RouteMapper.ts",
    "content": "import TestViewModel = require(\"../mocks/TestViewModel\");\r\nimport TestViewModelProvider = require(\"../mocks/TestViewModelProvider\");\r\nimport Uri = nullstone.Uri;\r\nimport UriKind = nullstone.UriKind;\r\n\r\nexport function load () {\r\n    QUnit.module(\"RoutMapper\");\r\n\r\n    test(\"MapUri\", () => {\r\n        var mapper = new Fayde.Navigation.RouteMapper();\r\n        mapper.ViewModelProvider = new TestViewModelProvider();\r\n\r\n        var mapping1 = new Fayde.Navigation.RouteMapping();\r\n        mapping1.Uri = new Uri(\"\");\r\n        mapping1.View = new Uri(\"/Views/Home.fayde\");\r\n        mapper.RouteMappings.Add(mapping1);\r\n\r\n        var mapping2 = new Fayde.Navigation.RouteMapping();\r\n        mapping2.Uri = new Uri(\"/FantasyTeam/{id}\");\r\n        mapping2.View = new Uri(\"/Views/FantasyTeam.fayde\");\r\n        mapper.RouteMappings.Add(mapping2);\r\n\r\n        var mapped = mapper.MapUri(new Uri(\"\", UriKind.Relative));\r\n        strictEqual(mapped.View.toString(), \"/Views/Home.fayde\", \"Default\");\r\n\r\n        var mapped = mapper.MapUri(new Uri(\"/FantasyTeam/1\", UriKind.Relative));\r\n        strictEqual(mapped.View.toString(), \"/Views/FantasyTeam.fayde\", \"Id\");\r\n        strictEqual(mapped.HashParams[\"id\"], \"1\", \"HashParams\");\r\n        strictEqual((<TestViewModel>mapped.DataContext).TeamId, +mapped.HashParams[\"id\"], \"ViewModel\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Text/Proxy.ts",
    "content": "export function load () {\r\n    QUnit.module(\"Text/Proxy\");\r\n\r\n    test(\"Undo + Redo\", (assert) => {\r\n        var proxy = new Fayde.Text.Proxy(Fayde.Text.EmitChangedType.TEXT, 10);\r\n        proxy.setText(\"test1\");\r\n        assert.strictEqual(proxy.text, \"test1\");\r\n        proxy.undo();\r\n        assert.strictEqual(proxy.text, \"\");\r\n        proxy.redo();\r\n        assert.strictEqual(proxy.text, \"test1\");\r\n    });\r\n\r\n    test(\"Undo limit\", (assert) => {\r\n        var maxUndo = 3;\r\n        var proxy = new Fayde.Text.Proxy(Fayde.Text.EmitChangedType.TEXT, maxUndo);\r\n\r\n        for (var i = 0; i < (maxUndo + 1); i++) {\r\n            proxy.setText(\"test-\" + i.toString());\r\n        }\r\n        for (var i = maxUndo - 1; i >= 0; i--) {\r\n            proxy.undo();\r\n            assert.strictEqual(proxy.text, \"test-\" + i.toString());\r\n        }\r\n        proxy.undo();\r\n        assert.strictEqual(proxy.text, \"test-0\", \"Consecutive undo attempts after max should not change text.\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Timeline.ts",
    "content": "export function load() {\r\n    QUnit.module(\"Timeline\");\r\n\r\n    test(\"Storyboard Natural Duration\", () => {\r\n        var storyboard = new Fayde.Media.Animation.Storyboard();\r\n        var duration = storyboard.GetNaturalDuration();\r\n        ok(duration.IsAutomatic, \"By default, a storyboard should have an automatic duration.\");\r\n\r\n        var a1 = new Fayde.Media.Animation.DoubleAnimation();\r\n        storyboard.Children.Add(a1);\r\n        duration = storyboard.GetNaturalDuration();\r\n        ok(duration.IsAutomatic, \"Adding a default animation also gives an automatic duration for the owning storyboard.\");\r\n\r\n        a1.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 100));\r\n        duration = storyboard.GetNaturalDuration();\r\n        strictEqual(duration.TimeSpan.Milliseconds, 100, \"Storyboard natural duration should be 100 milliseconds.\");\r\n\r\n        var a2 = new Fayde.Media.Animation.DoubleAnimation();\r\n        a2.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 50));\r\n        storyboard.Children.Add(a2);\r\n        duration = storyboard.GetNaturalDuration();\r\n        strictEqual(duration.TimeSpan.Milliseconds, 100, \"Storyboard natural duration should still be 100 milliseconds.\");\r\n\r\n        a2.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200));\r\n        duration = storyboard.GetNaturalDuration();\r\n        strictEqual(duration.TimeSpan.Milliseconds, 200, \"Storyboard natural duration should now be 200 milliseconds.\");\r\n\r\n        a2.RepeatBehavior = Fayde.Media.Animation.RepeatBehavior.FromIterationCount(2);\r\n        duration = storyboard.GetNaturalDuration();\r\n        strictEqual(duration.TimeSpan.Milliseconds, 400, \"RepeatBehavior Iteration Count 2 on Animation #2 should double natural duration.\");\r\n\r\n        a2.AutoReverse = true;\r\n        duration = storyboard.GetNaturalDuration();\r\n        strictEqual(duration.TimeSpan.Milliseconds, 800, \"AutoReverse on Animation #2 should double natural duration.\");\r\n\r\n        a2.SpeedRatio = 2.0;\r\n        duration = storyboard.GetNaturalDuration();\r\n        strictEqual(duration.TimeSpan.Milliseconds, 400, \"Speed Ratio of 2.0 on Animation #2 should speed up natural duration.\");\r\n\r\n        a2.BeginTime = new TimeSpan(0, 0, 0, 0, 50);\r\n        duration = storyboard.GetNaturalDuration();\r\n        strictEqual(duration.TimeSpan.Milliseconds, 450, \"BeginTime of 0:0:0.05 on Animation #2 should increase natural duration.\");\r\n\r\n        a2.RepeatBehavior = Fayde.Media.Animation.RepeatBehavior.Forever;\r\n        duration = storyboard.GetNaturalDuration();\r\n        ok(duration.IsForever, \"Setting a forever repeat behavior should force the natural duration to be a forever duration.\");\r\n    });\r\n\r\n    test(\"Storyboard Update\", () => {\r\n        var storyboard = new Fayde.Media.Animation.Storyboard();\r\n\r\n        var a1 = new Fayde.Media.Animation.DoubleAnimation();\r\n        a1.From = 1.0;\r\n        a1.To = 2.0;\r\n        storyboard.Children.Add(a1);\r\n        a1.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 100));\r\n        //Animation #1 delays 0ms, duration of 200ms, no speed up, no auto reverse, run once\r\n        var b1 = new Fayde.Controls.Border();\r\n        Fayde.Media.Animation.Storyboard.SetTargetProperty(a1, new Fayde.Data.PropertyPath(\"(FrameworkElement.Height)\"));\r\n        Fayde.Media.Animation.Storyboard.SetTarget(a1, b1);\r\n\r\n        var a2 = new Fayde.Media.Animation.DoubleAnimation();\r\n        a2.From = 0.5;\r\n        a2.To = 1.0;\r\n        storyboard.Children.Add(a2);\r\n        a2.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200));\r\n        a2.RepeatBehavior = Fayde.Media.Animation.RepeatBehavior.FromIterationCount(2);\r\n        a2.AutoReverse = true;\r\n        a2.SpeedRatio = 2.0;\r\n        a2.BeginTime = new TimeSpan(0, 0, 0, 0, 50);\r\n        //Animation #2 delays 50ms, duration of 200ms, sped up x2, autoreverse, run twice\r\n        var b2 = new Fayde.Controls.Border();\r\n        Fayde.Media.Animation.Storyboard.SetTargetProperty(a2, new Fayde.Data.PropertyPath(\"(FrameworkElement.Height)\"));\r\n        Fayde.Media.Animation.Storyboard.SetTarget(a2, b2);\r\n\r\n        var a1completed = false;\r\n        var a2completed = false;\r\n        a1.Completed.on(() => a1completed = true, a1);\r\n        a2.Completed.on(() => a2completed = true, a2);\r\n\r\n        Fayde.Application.Current = new Fayde.Application();\r\n        storyboard.Begin();\r\n        storyboard.Update(0);\r\n        strictEqual(b1.Height, 1.0, \"Animation #1 hit its begin time setting the Height to 1.0.\");\r\n        ok(isNaN(b2.Height), \"Animation #2 hasn't hit its begin time, Height will default to NaN.\");\r\n\r\n        storyboard.Update(50);\r\n        strictEqual(b1.Height, 1.5, \"Animation #1 hit the midpoint setting the height to 1.5.\");\r\n        strictEqual(b2.Height, 0.5, \"Animation #2 hit its begin time setting the height to 0.5.\");\r\n\r\n        storyboard.Update(100);\r\n        strictEqual(b1.Height, 2.0, \"Animation #1 hit the end setting the height to 2.0.\");\r\n        ok(a1completed, \"Animation #1 should have raised Completed event.\");\r\n        strictEqual(b2.Height, 0.75, \"Animation #2 hit 100ms, 50ms past begin time, height should be 0.75.\");\r\n\r\n        storyboard.Update(150);\r\n        strictEqual(b2.Height, 1.0, \"Animation #2 hit 150ms, 100ms past begin time, height should be 0.5.\");\r\n\r\n        storyboard.Update(250);\r\n        strictEqual(b2.Height, 1.0, \"Animation #2 hit 250ms, 200ms past begin time, height should be 1.0.\");\r\n\r\n        storyboard.Update(350);\r\n        strictEqual(b2.Height, 1.0, \"Animation #2 hit 350ms, 300ms past begin time, height should be 0.5.\");\r\n\r\n        storyboard.Update(450);\r\n        strictEqual(b2.Height, 1.0, \"Animation #2 hit 450ms, 400ms past begin time, height should be 1.0.\");\r\n        ok(a2completed, \"Animation #2 should have raised Completed event.\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/Transform.ts",
    "content": "export function load () {\r\n    QUnit.module(\"Transform\");\r\n\r\n    function typedToArray (typed) {\r\n        var arr = [];\r\n        for (var i = 0; i < typed.length; i++) {\r\n            arr.push(typed[i]);\r\n        }\r\n        return arr;\r\n    }\r\n\r\n    test(\"Change Notification\", (assert) => {\r\n        var collchanged = false;\r\n        var coll = new Fayde.Media.TransformCollection();\r\n        var scope = {};\r\n        Fayde.ReactTo(coll, scope, () => collchanged = true);\r\n\r\n        var transformchanged = false;\r\n        var translate = new Fayde.Media.TranslateTransform();\r\n        Fayde.ReactTo(translate, scope, () => transformchanged = true);\r\n\r\n        translate.X = 10;\r\n        assert.ok(transformchanged, \"Translate should notify listener of change.\");\r\n        transformchanged = false;\r\n\r\n        Fayde.UnreactTo(translate, scope);\r\n        translate.X = 20;\r\n        assert.ok(!transformchanged, \"Translate should not notify detached listener of change.\");\r\n        transformchanged = false;\r\n\r\n        coll.Add(translate);\r\n        assert.ok(collchanged, \"Adding a transform to TransformCollection should notify listener of change.\");\r\n        collchanged = false;\r\n\r\n        translate.Y = 5;\r\n        assert.ok(collchanged, \"Changing TranslateTransform property in TransformCollection should notify Collection listener of change.\");\r\n        collchanged = false;\r\n    });\r\n\r\n    test(\"Binding\", () => {\r\n        var xaml = \"<Grid xmlns=\\\"http://schemas.wsick.com/fayde\\\" xmlns:x=\\\"http://schemas.wsick.com/fayde/x\\\">\"\r\n            + \"<Grid.RenderTransform>\"\r\n            + \"<TransformGroup>\"\r\n            + \"<ScaleTransform x:Name=\\\"Scale\\\" ScaleX=\\\"10\\\" />\"\r\n            + \"<TranslateTransform X=\\\"{Binding ElementName=Scale,Path=ScaleX}\\\" />\"\r\n            + \"</TransformGroup>\"\r\n            + \"</Grid.RenderTransform>\"\r\n            + \"</Grid>\";\r\n\r\n        var grid: Fayde.Controls.Grid;\r\n        try {\r\n            grid = Fayde.Markup.LoadXaml<Fayde.Controls.Grid>(null, xaml);\r\n            grid.XamlNode.SetIsAttached(true);\r\n        } catch (err) {\r\n            ok(false, err);\r\n        }\r\n        var xforms = <Fayde.Media.TransformGroup>grid.RenderTransform;\r\n        var tt = <Fayde.Media.TranslateTransform>xforms.Children.GetValueAt(1);\r\n        ok(tt instanceof Fayde.Media.TranslateTransform);\r\n        strictEqual(10, tt.X);\r\n    });\r\n\r\n    test(\"TransformGroup\", () => {\r\n        var tg = new Fayde.Media.TransformGroup();\r\n\r\n        var tt = new Fayde.Media.TranslateTransform();\r\n        tt.X = 10;\r\n        tt.Y = 20;\r\n        tg.Children.Add(tt);\r\n\r\n        var rt = new Fayde.Media.RotateTransform();\r\n        rt.Angle = 45;\r\n        tg.Children.Add(rt);\r\n\r\n        ok(mat3.equal(tg.Value._Raw, mat3.create([Math.SQRT1_2, Math.SQRT1_2, -Math.SQRT1_2, Math.SQRT1_2, -Math.SQRT1_2 * 10, Math.SQRT1_2 * 30])));\r\n    });\r\n\r\n    test(\"TransformGroup #2\", () => {\r\n        var grp = new Fayde.Media.TransformGroup();\r\n        grp.Children.Add(new Fayde.Media.ScaleTransform());\r\n        grp.Children.Add(new Fayde.Media.SkewTransform());\r\n\r\n        var rotate = new Fayde.Media.RotateTransform();\r\n        rotate.Angle = -125.73500000000001;\r\n        grp.Children.Add(rotate);\r\n\r\n        var translate = new Fayde.Media.TranslateTransform();\r\n        translate.X = 7.2898730908178564;\r\n        translate.Y = -0.1325903170362821;\r\n        grp.Children.Add(translate);\r\n\r\n        var val = grp.Value;\r\n        equal(val.M11, -0.584037184715271);\r\n        equal(val.M12, -0.81172692775726318);\r\n        equal(val.M21, 0.81172692775726318);\r\n        equal(val.M22, -0.584037184715271);\r\n        equal(val.OffsetX, 7.2898731231689453);\r\n        equal(val.OffsetY, -0.13259032368659973);\r\n    });\r\n}"
  },
  {
    "path": "test/tests/TypeConverter.ts",
    "content": "import GridLength = Fayde.Controls.GridLength;\r\nimport GridUnitType = minerva.controls.grid.GridUnitType;\r\n\r\nexport function load() {\r\n    QUnit.module(\"TypeConverter\");\r\n\r\n    test(\"Color\", () => {\r\n        strictEqual(<Color>nullstone.convertAnyToType(undefined, Color), undefined, \"undefined\");\r\n        strictEqual(<Color>nullstone.convertAnyToType(null, Color), null, \"null\");\r\n\r\n        var c = <Color>nullstone.convertAnyToType(\"White\", Color);\r\n        strictEqual(c, Color.KnownColors.White, \"Known Color\");\r\n\r\n        c = <Color>nullstone.convertAnyToType(\"#0066CC\", Color);\r\n        strictEqual(c.A, 1.0, \"RGB (a)\");\r\n        strictEqual(c.R, 0, \"RGB (R)\");\r\n        strictEqual(c.G, 102, \"RGB (G)\");\r\n        strictEqual(c.B, 204, \"RGB (B)\");\r\n\r\n        c = <Color>nullstone.convertAnyToType(\"#CCBB9977\", Color);\r\n        strictEqual(c.A, 0.8, \"aRGB (a)\");\r\n        strictEqual(c.R, 187, \"aRGB (R)\");\r\n        strictEqual(c.G, 153, \"aRGB (G)\");\r\n        strictEqual(c.B, 119, \"aRGB (B)\");\r\n    });\r\n\r\n    test(\"TimeSpan\", () => {\r\n        var ts = <TimeSpan>nullstone.convertAnyToType(\"01.02:03:04.10\", TimeSpan);\r\n        strictEqual(ts.CompareTo(new TimeSpan(1, 2, 3, 4, 100)), 0, \"Full TimeSpan\");\r\n\r\n        ts = <TimeSpan>nullstone.convertAnyToType(\"02:03:04\", TimeSpan);\r\n        strictEqual(ts.CompareTo(new TimeSpan(0, 2, 3, 4, 0)), 0, \"Short TimeSpan\");\r\n\r\n        ts = <TimeSpan>nullstone.convertAnyToType(\"01.02:03:04\", TimeSpan);\r\n        strictEqual(ts.CompareTo(new TimeSpan(1, 2, 3, 4, 0)), 0, \"Short+Days TimeSpan\");\r\n\r\n        ts = <TimeSpan>nullstone.convertAnyToType(\"02:03:04.10\", TimeSpan);\r\n        strictEqual(ts.CompareTo(new TimeSpan(0, 2, 3, 4, 100)), 0, \"Short+Milliseconds TimeSpan\");\r\n\r\n        ts = <TimeSpan>nullstone.convertAnyToType(\"00:00:00.001\", TimeSpan);\r\n        strictEqual(ts.Ticks, 1, \"Ticks (decimal seconds)\");\r\n\r\n        ts = <TimeSpan>nullstone.convertAnyToType(1000, TimeSpan);\r\n        strictEqual(ts.Ticks, 1000, \"Ticks (Number)\");\r\n\r\n        ts = <TimeSpan>nullstone.convertAnyToType(\"1000\", TimeSpan);\r\n        strictEqual(ts.Ticks, 1000, \"Ticks (String)\");\r\n\r\n        var its = TimeSpan.FromHours(10);\r\n        ts = <TimeSpan>nullstone.convertAnyToType(new Duration(its), TimeSpan);\r\n        strictEqual(ts.Ticks, TimeSpan._TicksPerHour * 10, \"Ticks (Duration TimeSpan)\");\r\n        notStrictEqual(ts, its, \"Type converter should clone duration timespan.\");\r\n    });\r\n\r\n    test(\"Thickness\", () => {\r\n        var t = <Thickness>nullstone.convertAnyToType(1, Thickness);\r\n        strictEqual(t.left, 1, \"Number (Left)\");\r\n        strictEqual(t.top, 1, \"Number (Top)\");\r\n        strictEqual(t.right, 1, \"Number (Right)\");\r\n        strictEqual(t.bottom, 1, \"Number (Bottom)\");\r\n\r\n        t = <Thickness>nullstone.convertAnyToType(\"2\", Thickness);\r\n        strictEqual(t.left, 2, \"Uniform (Left)\");\r\n        strictEqual(t.top, 2, \"Uniform (Top)\");\r\n        strictEqual(t.right, 2, \"Uniform (Right)\");\r\n        strictEqual(t.bottom, 2, \"Uniform (Bottom)\");\r\n\r\n        t = <Thickness>nullstone.convertAnyToType(\"4,6\", Thickness);\r\n        strictEqual(t.left, 4, \"Mid (Left)\");\r\n        strictEqual(t.top, 6, \"Mid (Top)\");\r\n        strictEqual(t.right, 4, \"Mid (Right)\");\r\n        strictEqual(t.bottom, 6, \"Mid (Bottom)\");\r\n\r\n        t = <Thickness>nullstone.convertAnyToType(\"0, 2, 4, 6\", Thickness);\r\n        strictEqual(t.left, 0, \"Full (Left)\");\r\n        strictEqual(t.top, 2, \"Full (Top)\");\r\n        strictEqual(t.right, 4, \"Full (Right)\");\r\n        strictEqual(t.bottom, 6, \"Full (Bottom)\");\r\n\r\n        t = <Thickness>nullstone.convertAnyToType(\"0 2 4 6\", Thickness);\r\n        strictEqual(t.left, 0, \"Full (Left)\");\r\n        strictEqual(t.top, 2, \"Full (Top)\");\r\n        strictEqual(t.right, 4, \"Full (Right)\");\r\n        strictEqual(t.bottom, 6, \"Full (Bottom)\");\r\n\r\n        t = <Thickness>nullstone.convertAnyToType(\"10.2,12.2,14.2,16.2\", Thickness);\r\n        strictEqual(t.left, 10.2, \"Full (Left)\");\r\n        strictEqual(t.top, 12.2, \"Full (Top)\");\r\n        strictEqual(t.right, 14.2, \"Full (Right)\");\r\n        strictEqual(t.bottom, 16.2, \"Full (Bottom)\");\r\n    });\r\n\r\n    test(\"CornerRadius\", () => {\r\n        var cr = <CornerRadius>nullstone.convertAnyToType(1, CornerRadius);\r\n        strictEqual(cr.topLeft, 1, \"Number (TopLeft)\");\r\n        strictEqual(cr.topRight, 1, \"Number (Top)\");\r\n        strictEqual(cr.bottomRight, 1, \"Number (BottomRight)\");\r\n        strictEqual(cr.bottomLeft, 1, \"Number (BottomLeft)\");\r\n\r\n        cr = <CornerRadius>nullstone.convertAnyToType(\"2\", CornerRadius);\r\n        strictEqual(cr.topLeft, 2, \"Uniform (TopLeft)\");\r\n        strictEqual(cr.topRight, 2, \"Uniform (TopRight)\");\r\n        strictEqual(cr.bottomRight, 2, \"Uniform (BottomRight)\");\r\n        strictEqual(cr.bottomLeft, 2, \"Uniform (BottomLeft)\");\r\n\r\n        cr = <CornerRadius>nullstone.convertAnyToType(\"0, 2, 4, 6\", CornerRadius);\r\n        strictEqual(cr.topLeft, 0, \"Full (TopLeft)\");\r\n        strictEqual(cr.topRight, 2, \"Full (TopRight)\");\r\n        strictEqual(cr.bottomRight, 4, \"Full (BottomRight)\");\r\n        strictEqual(cr.bottomLeft, 6, \"Full (BottomLeft)\");\r\n\r\n        cr = <CornerRadius>nullstone.convertAnyToType(\"0  2  4  6\", CornerRadius);\r\n        strictEqual(cr.topLeft, 0, \"Full (TopLeft)\");\r\n        strictEqual(cr.topRight, 2, \"Full (TopRight)\");\r\n        strictEqual(cr.bottomRight, 4, \"Full (BottomRight)\");\r\n        strictEqual(cr.bottomLeft, 6, \"Full (BottomLeft)\");\r\n\r\n        cr = <CornerRadius>nullstone.convertAnyToType(\"10.2,12.2,14.2,16.2\", CornerRadius);\r\n        strictEqual(cr.topLeft, 10.2, \"Full (TopLeft)\");\r\n        strictEqual(cr.topRight, 12.2, \"Full (TopRight)\");\r\n        strictEqual(cr.bottomRight, 14.2, \"Full (BottomRight)\");\r\n        strictEqual(cr.bottomLeft, 16.2, \"Full (BottomLeft)\");\r\n    });\r\n\r\n    test(\"Point\", () => {\r\n        var p = <Point>nullstone.convertAnyToType(\"1, 3\", Point);\r\n        strictEqual(p.x, 1, \"Point.X\");\r\n        strictEqual(p.y, 3, \"Point.Y\");\r\n\r\n        p = <Point>nullstone.convertAnyToType(\"1 3\", Point);\r\n        strictEqual(p.x, 1, \"Point.X\");\r\n        strictEqual(p.y, 3, \"Point.Y\");\r\n\r\n        p = <Point>nullstone.convertAnyToType(\"1  3\", Point);\r\n        strictEqual(p.x, 1, \"Point.X\");\r\n        strictEqual(p.y, 3, \"Point.Y\");\r\n\r\n        p = <Point>nullstone.convertAnyToType(\"122.5,113.1254\", Point);\r\n        strictEqual(p.x, 122.5, \"Point.X\");\r\n        strictEqual(p.y, 113.1254, \"Point.Y\");\r\n    });\r\n\r\n    test(\"Size\", () => {\r\n        var size = <Size>nullstone.convertAnyToType(\"1, 3\", Size);\r\n        strictEqual(size.width, 1);\r\n        strictEqual(size.height, 3);\r\n\r\n        size = <Size>nullstone.convertAnyToType(\"1 3\", Size);\r\n        strictEqual(size.width, 1);\r\n        strictEqual(size.height, 3);\r\n\r\n        size = <Size>nullstone.convertAnyToType(\"1  3\", Size);\r\n        strictEqual(size.width, 1);\r\n        strictEqual(size.height, 3);\r\n\r\n        size = <Size>nullstone.convertAnyToType(\"11.2,13.2\", Size);\r\n        strictEqual(size.width, 11.2);\r\n        strictEqual(size.height, 13.2);\r\n    });\r\n\r\n    test(\"Rect\", () => {\r\n        var r = <Rect>nullstone.convertAnyToType(\"1,3,5,7\", Rect);\r\n        strictEqual(r.x, 1, \"Rect.X\");\r\n        strictEqual(r.y, 3, \"Rect.Y\");\r\n        strictEqual(r.width, 5, \"Rect.X\");\r\n        strictEqual(r.height, 7, \"Rect.Y\");\r\n\r\n        var r = <Rect>nullstone.convertAnyToType(\"1, 3, 5, 7\", Rect);\r\n        strictEqual(r.x, 1, \"Rect.X\");\r\n        strictEqual(r.y, 3, \"Rect.Y\");\r\n        strictEqual(r.width, 5, \"Rect.X\");\r\n        strictEqual(r.height, 7, \"Rect.Y\");\r\n\r\n        var r = <Rect>nullstone.convertAnyToType(\"1 3 5 7\", Rect);\r\n        strictEqual(r.x, 1, \"Rect.X\");\r\n        strictEqual(r.y, 3, \"Rect.Y\");\r\n        strictEqual(r.width, 5, \"Rect.X\");\r\n        strictEqual(r.height, 7, \"Rect.Y\");\r\n\r\n        var r = <Rect>nullstone.convertAnyToType(\"11.2,13.2,15.2,17.2\", Rect);\r\n        strictEqual(r.x, 11.2, \"Rect.X\");\r\n        strictEqual(r.y, 13.2, \"Rect.Y\");\r\n        strictEqual(r.width, 15.2, \"Rect.X\");\r\n        strictEqual(r.height, 17.2, \"Rect.Y\");\r\n    });\r\n\r\n    test(\"Length\", () => {\r\n        var l = <number>nullstone.convertAnyToType(\"Auto\", Length);\r\n        ok(isNaN(l), \"Auto\");\r\n\r\n        l = <number>nullstone.convertAnyToType(\"234\", Length);\r\n        strictEqual(l, 234, \"Number\");\r\n    });\r\n\r\n    test(\"RepeatBehavior\", () => {\r\n        var RepeatBehavior = Fayde.Media.Animation.RepeatBehavior;\r\n\r\n        var rb = <Fayde.Media.Animation.RepeatBehavior>nullstone.convertAnyToType(\"Forever\", RepeatBehavior);\r\n        ok(rb.IsForever, \"Forever\");\r\n\r\n        rb = <Fayde.Media.Animation.RepeatBehavior>nullstone.convertAnyToType(\"2x\", RepeatBehavior);\r\n        ok(rb.HasCount, \"HasCount\");\r\n        strictEqual(rb.Count, 2, \"Count\");\r\n\r\n        rb = <Fayde.Media.Animation.RepeatBehavior>nullstone.convertAnyToType(\"00:10:15.02\", RepeatBehavior);\r\n        ok(rb.HasDuration, \"HasDuration\");\r\n        ok(rb.Duration.HasTimeSpan, \"HasTimeSpan\");\r\n        var ts = rb.Duration.TimeSpan;\r\n        strictEqual(ts.CompareTo(new TimeSpan(0, 0, 10, 15, 20)), 0, \"TimeSpan\");\r\n\r\n    });\r\n\r\n    test(\"GridLength\", () => {\r\n        var gl = <GridLength>nullstone.convertAnyToType(\"Auto\", GridLength);\r\n        strictEqual(gl.Type, GridUnitType.Auto, \"Auto GridLength\");\r\n        gl = <GridLength>nullstone.convertAnyToType(\"3*\", GridLength);\r\n        strictEqual(gl.Type, GridUnitType.Star, \"Star GridLength Type\");\r\n        strictEqual(gl.Value, 3, \"Star GridLength Value\");\r\n        gl = <GridLength>nullstone.convertAnyToType(\"25\", GridLength);\r\n        strictEqual(gl.Type, GridUnitType.Pixel, \"Pixel GridLength Type\");\r\n        strictEqual(gl.Value, 25, \"Pixel GridLength Value\");\r\n    });\r\n\r\n    test(\"KeyTime\", () => {\r\n        var kt = <KeyTime>nullstone.convertAnyToType(\"Uniform\", KeyTime);\r\n        ok(kt.IsUniform, \"Uniform\");\r\n\r\n        kt = <KeyTime>nullstone.convertAnyToType(\"02:03:04\", KeyTime);\r\n        strictEqual(kt.TimeSpan.CompareTo(new TimeSpan(0, 2, 3, 4, 0)), 0, \"TimeSpan\");\r\n    });\r\n\r\n    test(\"Duration\", () => {\r\n        var d = <Duration>nullstone.convertAnyToType(\"Automatic\", Duration);\r\n        strictEqual(d, Duration.Automatic, \"Automatic\");\r\n\r\n        var d = <Duration>nullstone.convertAnyToType(\"Forever\", Duration);\r\n        strictEqual(d, Duration.Forever, \"Forever\");\r\n\r\n        d = <Duration>nullstone.convertAnyToType(\"02:03:04\", Duration);\r\n        strictEqual(d.Type, DurationType.TimeSpan, \"TimeSpan #1\");\r\n        strictEqual(d.TimeSpan.CompareTo(new TimeSpan(0, 2, 3, 4, 0)), 0, \"TimeSpan #2\");\r\n    });\r\n\r\n    test(\"Brush\", () => {\r\n        strictEqual(<Fayde.Media.SolidColorBrush>nullstone.convertAnyToType(undefined, Fayde.Media.SolidColorBrush), undefined, \"undefined\");\r\n        strictEqual(<Fayde.Media.SolidColorBrush>nullstone.convertAnyToType(null, Fayde.Media.SolidColorBrush), null, \"null\");\r\n\r\n        var scb = <Fayde.Media.SolidColorBrush>nullstone.convertAnyToType(\"White\", Fayde.Media.Brush);\r\n        ok(scb.Color.Equals(Color.KnownColors.White), \"Known Color\");\r\n\r\n        scb = <Fayde.Media.SolidColorBrush>nullstone.convertAnyToType(\"#808080\", Fayde.Media.Brush);\r\n        ok(scb.Color.Equals(Color.FromRgba(128, 128, 128, 1.0)), \"Hex\");\r\n    });\r\n\r\n    test(\"FontFamily\", () => {\r\n        var ff = <FontFamily>nullstone.convertAnyToType(\"Segoe UI\", FontFamily);\r\n        equal(ff.FamilyNames, \"Segoe UI\", \"Normal\");\r\n    });\r\n\r\n    test(\"ImageSource\", () => {\r\n        var bi = <Fayde.Media.Imaging.BitmapImage>nullstone.convertAnyToType(\"http://domain/rawr.jpg\", Fayde.Media.Imaging.ImageSource);\r\n        var us = bi.UriSource;\r\n        ok(us != null, \"UriSource exists\");\r\n        strictEqual(us.toString(), \"http://domain/rawr.jpg\", \"Uri\");\r\n    });\r\n\r\n    test(\"PointCollection\", () => {\r\n        var str = \"1,1 2,2 3,3 4,4 5,5\";\r\n        var coll = <Fayde.Shapes.PointCollection>nullstone.convertAnyToType(str, Fayde.Shapes.PointCollection);\r\n\r\n        strictEqual(coll.Count, 5, \"Count\");\r\n        ok(Point.isEqual(new Point(1, 1), coll.GetValueAt(0)), \"P1\");\r\n        ok(Point.isEqual(new Point(2, 2), coll.GetValueAt(1)), \"P2\");\r\n        ok(Point.isEqual(new Point(3, 3), coll.GetValueAt(2)), \"P3\");\r\n        ok(Point.isEqual(new Point(4, 4), coll.GetValueAt(3)), \"P4\");\r\n        ok(Point.isEqual(new Point(5, 5), coll.GetValueAt(4)), \"P5\");\r\n    });\r\n\r\n    test(\"Geometry\", () => {\r\n        var str = \"M1,1 L2,2 Z\";\r\n        var geom = <Fayde.Media.PathGeometry>nullstone.convertAnyToType(str, Fayde.Media.Geometry);\r\n\r\n        ok(geom instanceof Fayde.Media.PathGeometry, \"PathGeometry\");\r\n        var rawpath = geom._Build();\r\n        strictEqual(rawpath.Serialize(), str, \"Serialize\");\r\n    });\r\n\r\n    test(\"ColumnDefinition\", () => {\r\n        var str = \"auto * 200\";\r\n        var cdc = <Fayde.Controls.ColumnDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.ColumnDefinitionCollection);\r\n        strictEqual(cdc.Count, 3, \"1.1\");\r\n\r\n        var cdw = cdc.GetValueAt(0).Width;\r\n        strictEqual(cdw.Type, GridUnitType.Auto, \"1.2\");\r\n\r\n        cdw = cdc.GetValueAt(1).Width;\r\n        strictEqual(cdw.Type, GridUnitType.Star, \"1.3\");\r\n        strictEqual(cdw.Value, 1, \"1.4\");\r\n\r\n        cdw = cdc.GetValueAt(2).Width;\r\n        strictEqual(cdw.Type, GridUnitType.Pixel, \"1.5\");\r\n        strictEqual(cdw.Value, 200, \"1.6\");\r\n\r\n\r\n        str = \"3* 100 auto\";\r\n        cdc = <Fayde.Controls.ColumnDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.ColumnDefinitionCollection);\r\n        strictEqual(cdc.Count, 3, \"2.1\");\r\n\r\n        cdw = cdc.GetValueAt(0).Width;\r\n        strictEqual(cdw.Type, GridUnitType.Star, \"2.2\");\r\n        strictEqual(cdw.Value, 3, \"2.3\");\r\n\r\n        cdw = cdc.GetValueAt(1).Width;\r\n        strictEqual(cdw.Type, GridUnitType.Pixel, \"2.4\");\r\n        strictEqual(cdw.Value, 100, \"2.5\");\r\n\r\n        cdw = cdc.GetValueAt(2).Width;\r\n        strictEqual(cdw.Type, GridUnitType.Auto, \"2.6\");\r\n\r\n\r\n        str = \"*\";\r\n        cdc = <Fayde.Controls.ColumnDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.ColumnDefinitionCollection);\r\n        strictEqual(cdc.Count, 1, \"3.1\");\r\n\r\n        cdw = cdc.GetValueAt(0).Width;\r\n        strictEqual(cdw.Type, GridUnitType.Star, \"3.2\");\r\n        strictEqual(cdw.Value, 1, \"3.3\");\r\n\r\n\r\n        str = \"auto\";\r\n        cdc = <Fayde.Controls.ColumnDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.ColumnDefinitionCollection);\r\n        strictEqual(cdc.Count, 1, \"4.1\");\r\n\r\n        cdw = cdc.GetValueAt(0).Width;\r\n        strictEqual(cdw.Type, GridUnitType.Auto, \"4.2\");\r\n\r\n\r\n        str = \"150\";\r\n        cdc = <Fayde.Controls.ColumnDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.ColumnDefinitionCollection);\r\n        strictEqual(cdc.Count, 1, \"5.1\");\r\n\r\n        cdw = cdc.GetValueAt(0).Width;\r\n        strictEqual(cdw.Type, GridUnitType.Pixel, \"5.2\");\r\n        strictEqual(cdw.Value, 150, \"5.3\");\r\n    });\r\n\r\n    test(\"RowDefinition\", () => {\r\n        var str = \"auto * 200\";\r\n        var rdc = <Fayde.Controls.RowDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.RowDefinitionCollection);\r\n        strictEqual(rdc.Count, 3, \"1.1\");\r\n\r\n        var rdh = rdc.GetValueAt(0).Height;\r\n        strictEqual(rdh.Type, GridUnitType.Auto, \"1.2\");\r\n\r\n        rdh = rdc.GetValueAt(1).Height;\r\n        strictEqual(rdh.Type, GridUnitType.Star, \"1.3\");\r\n        strictEqual(rdh.Value, 1, \"1.4\");\r\n\r\n        rdh = rdc.GetValueAt(2).Height;\r\n        strictEqual(rdh.Type, GridUnitType.Pixel, \"1.5\");\r\n        strictEqual(rdh.Value, 200, \"1.6\");\r\n\r\n\r\n        str = \"3* 100 auto\";\r\n        rdc = <Fayde.Controls.RowDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.RowDefinitionCollection);\r\n        strictEqual(rdc.Count, 3, \"2.1\");\r\n\r\n        rdh = rdc.GetValueAt(0).Height;\r\n        strictEqual(rdh.Type, GridUnitType.Star, \"2.2\");\r\n        strictEqual(rdh.Value, 3, \"2.3\");\r\n\r\n        rdh = rdc.GetValueAt(1).Height;\r\n        strictEqual(rdh.Type, GridUnitType.Pixel, \"2.4\");\r\n        strictEqual(rdh.Value, 100, \"2.5\");\r\n\r\n        rdh = rdc.GetValueAt(2).Height;\r\n        strictEqual(rdh.Type, GridUnitType.Auto, \"2.6\");\r\n\r\n\r\n        str = \"*\";\r\n        rdc = <Fayde.Controls.RowDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.RowDefinitionCollection);\r\n        strictEqual(rdc.Count, 1, \"3.1\");\r\n\r\n        rdh = rdc.GetValueAt(0).Height;\r\n        strictEqual(rdh.Type, GridUnitType.Star, \"3.2\");\r\n        strictEqual(rdh.Value, 1, \"3.3\");\r\n\r\n\r\n        str = \"auto\";\r\n        rdc = <Fayde.Controls.RowDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.RowDefinitionCollection);\r\n        strictEqual(rdc.Count, 1, \"4.1\");\r\n\r\n        rdh = rdc.GetValueAt(0).Height;\r\n        strictEqual(rdh.Type, GridUnitType.Auto, \"4.2\");\r\n\r\n\r\n        str = \"150\";\r\n        rdc = <Fayde.Controls.RowDefinitionCollection>nullstone.convertAnyToType(str, Fayde.Controls.RowDefinitionCollection);\r\n        strictEqual(rdc.Count, 1, \"5.1\");\r\n\r\n        rdh = rdc.GetValueAt(0).Height;\r\n        strictEqual(rdh.Type, GridUnitType.Pixel, \"5.2\");\r\n        strictEqual(rdh.Value, 150, \"5.3\");\r\n    });\r\n}\r\n"
  },
  {
    "path": "test/tests/UriMapper.ts",
    "content": "export function load() {\r\n    QUnit.module(\"UriMapper\");\r\n\r\n    test(\"MapUri\", () => {\r\n        var mapper = new Fayde.Navigation.UriMapper();\r\n\r\n        var mapping1 = new Fayde.Navigation.UriMapping();\r\n        mapping1.Uri = new Fayde.Uri(\"\");\r\n        mapping1.MappedUri = new Fayde.Uri(\"/Views/Home.fayde\");\r\n        mapper.UriMappings.Add(mapping1);\r\n\r\n        var mapping2 = new Fayde.Navigation.UriMapping();\r\n        mapping2.Uri = new Fayde.Uri(\"/{pageName}\");\r\n        mapping2.MappedUri = new Fayde.Uri(\"/Views/{pageName}.fayde\");\r\n        mapper.UriMappings.Add(mapping2);\r\n\r\n        var mapped = mapper.MapUri(new Fayde.Uri(\"\", nullstone.UriKind.Relative));\r\n        strictEqual(mapped.toString(), \"/Views/Home.fayde\", \"Default\");\r\n\r\n        var mapped = mapper.MapUri(new Fayde.Uri(\"/Core\", nullstone.UriKind.Relative));\r\n        strictEqual(mapped.toString(), \"/Views/Core.fayde\", \"PageName\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests/XamlNode.ts",
    "content": "//Test registering/unregistering names\r\n//Test find namescope\r\n//Test absorbing of namescopes\r\n//Test isattached modification\r\n//Test AttachTo/Detach\r\n\r\nexport function load() {\r\n    QUnit.module(\"XamlNode\");\r\n\r\n    test(\"AttachTo & Detach\", () => {\r\n        var root = new Fayde.XamlObject();\r\n        root.XamlNode.NameScope = new Fayde.NameScope(true);\r\n        root.XamlNode.SetIsAttached(true);\r\n        var child = new Fayde.XamlObject();\r\n        child.XamlNode.SetName(\"CHILD\");\r\n\r\n        var error = new BError();\r\n        ok(child.XamlNode.AttachTo(root.XamlNode, error), \"Error should not happen when attaching child node:\" + error.Message);\r\n\r\n        strictEqual(child.XamlNode.ParentNode, root.XamlNode, \"ParentNode of child needs to be its direct logical parent.\");\r\n        strictEqual(child.XamlNode.IsAttached, root.XamlNode.IsAttached, \"Child IsAttached should match Parent IsAttached after attaching.\");\r\n\r\n        var ns = root.XamlNode.FindNameScope();\r\n        strictEqual(ns.FindName(\"CHILD\"), child.XamlNode, \"Registered child should be returned from FindName on root namescope.\");\r\n\r\n        var childNs = child.XamlNode.FindNameScope();\r\n        strictEqual(childNs, ns, \"ChildNode.FindNameScope should be the same as the root NameScope.\");\r\n\r\n        child.XamlNode.Detach();\r\n        ok(!child.XamlNode.IsAttached, \"Child Node should be IsAttached=false after being detached.\");\r\n        equal(child.XamlNode.FindNameScope(), null, \"Child Node should no longer have a namescope after being detached.\");\r\n        equal(child.XamlNode.ParentNode, null, \"Child Node should no longer have a parent node after being detached.\");\r\n    });\r\n\r\n    test(\"Merge NameScopes\", () => {\r\n        var root = new Fayde.XamlObject();\r\n        root.XamlNode.NameScope = new Fayde.NameScope(true);\r\n        root.XamlNode.SetIsAttached(true);\r\n        var child = new Fayde.XamlObject();\r\n        child.XamlNode.NameScope = new Fayde.NameScope();\r\n        child.XamlNode.SetName(\"CHILD\");\r\n\r\n        var error = new BError();\r\n        ok(child.XamlNode.AttachTo(root.XamlNode, error), \"Error should not happen when attaching child node:\" + error.Message);\r\n\r\n        var ns = root.XamlNode.FindNameScope();\r\n        var childNs = child.XamlNode.FindNameScope();\r\n        strictEqual(childNs, ns, \"Child.FindNameScope should be the same as the root NameScope because AttachTo merges namescopes if NameScope.IsRoot=false.\");\r\n\r\n        strictEqual(ns.FindName(\"CHILD\"), child.XamlNode, \"Child should be registered in root namescope after merge.\");\r\n    });\r\n\r\n    test(\"Child Root NameScope\", () => {\r\n        var root = new Fayde.XamlObject();\r\n        root.XamlNode.NameScope = new Fayde.NameScope(true);\r\n        root.XamlNode.SetIsAttached(true);\r\n\r\n        var child = new Fayde.XamlObject();\r\n        child.XamlNode.NameScope = new Fayde.NameScope(true);\r\n        child.XamlNode.SetName(\"CHILD\");\r\n\r\n        var error = new BError();\r\n        ok(child.XamlNode.AttachTo(root.XamlNode, error), \"Error should not happen when attaching child node:\" + error.Message);\r\n\r\n        var childNs = child.XamlNode.FindNameScope();\r\n        notStrictEqual(childNs, root.XamlNode.FindNameScope(), \"Child NameScope should be absorbed by parent on attach when IsRoot=true.\");\r\n        strictEqual(childNs.FindName(\"CHILD\"), child.XamlNode, \"Child should be registered in its own namescope after merge.\");\r\n\r\n        child.XamlNode.Detach();\r\n        strictEqual(childNs.FindName(\"CHILD\"), child.XamlNode, \"Child should be still be registered in its own namescope after detach.\");\r\n    });\r\n\r\n    test(\"Name Collision\", () => {\r\n        var root = new Fayde.XamlObject();\r\n        root.XamlNode.NameScope = new Fayde.NameScope(true);\r\n        root.XamlNode.SetIsAttached(true);\r\n\r\n        var child1 = new Fayde.XamlObject();\r\n        child1.XamlNode.SetName(\"CHILD\");\r\n\r\n        var child2 = new Fayde.XamlObject();\r\n        child2.XamlNode.SetName(\"CHILD\");\r\n\r\n        var error = new BError();\r\n        ok(child1.XamlNode.AttachTo(root.XamlNode, error), \"Error should not happen when attaching child node 1:\" + error.Message);\r\n        ok(!child2.XamlNode.AttachTo(root.XamlNode, error), \"Attaching child node 2 with same Name as child node 1 should error because the name is already registered in the namescope.\");\r\n        ok(child1.XamlNode.AttachTo(root.XamlNode, error), \"Attaching child node 1 twice should not error because attaching parent is same as current parent.\");\r\n        ok(!root.XamlNode.AttachTo(child1.XamlNode, error), \"Attaching root to child node 1 should error because cycles are not allowed.\");\r\n    });\r\n}"
  },
  {
    "path": "test/tests.html",
    "content": "<!doctype html>\r\n<html>\r\n<head>\r\n    <meta charset='UTF-8'/>\r\n    <meta http-equiv='content-type' content='text/html; charset=utf-8'/>\r\n    <title>Fayde Tests</title>\r\n\r\n    <link rel=\"stylesheet\" href=\"lib/qunit/qunit/qunit.css\" type=\"text/css\"/>\r\n    <script src=\"lib/qunit/qunit/qunit.js\"></script>\r\n    <script>\r\n        QUnit.config.autostart = false;\r\n    </script>\r\n    <script src=\"lib/nullstone/dist/nullstone.js\"></script>\r\n    <script src=\"lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"lib/fayde/dist/fayde.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var require = {\r\n            baseUrl: \"./\",\r\n            paths: {\r\n                \"text\": \"lib/requirejs-text/text\"\r\n            },\r\n            deps: [\"text\"]\r\n        };\r\n    </script>\r\n    <script src=\"lib/requirejs/require.js\" data-main=\".build/runner.js\"></script>\r\n</head>\r\n<body>\r\n<div id=\"qunit\"></div>\r\n<!-- QUnit fills this with results, etc -->\r\n<div id='qunit-fixture'>\r\n    <!-- any HTML you want to be present in each test (will be reset for each test) -->\r\n</div>\r\n</body>\r\n</html>"
  },
  {
    "path": "testsite/Binding/DoubleListBoxViewModel.ts",
    "content": "import RelayCommand = Fayde.MVVM.RelayCommand;\r\n\r\nclass DoubleListBoxViewModel extends Fayde.MVVM.ViewModelBase {\r\n    AllItems = new Fayde.Collections.ObservableCollection<any>();\r\n    AddItemCommand: RelayCommand;\r\n    RemoveFirstItemCommand: RelayCommand;\r\n    constructor() {\r\n        super();\r\n        for (var i = 0; i < 6; i++) {\r\n            var ni = {\r\n                SubItems: new Fayde.Collections.ObservableCollection()\r\n            };\r\n            ni.SubItems.AddRange([1, 2, 3, 4, 5]);\r\n            this.AllItems.Add(ni);\r\n        }\r\n        this.AddItemCommand = new RelayCommand(() => this.Add());\r\n        this.RemoveFirstItemCommand = new RelayCommand(() => this.RemoveFirst());\r\n    }\r\n\r\n    private Add() {\r\n        if (this.AllItems.Count < 1)\r\n            return;\r\n        var first = this.AllItems.GetValueAt(0);\r\n        first.SubItems.Add(first.SubItems.Count);\r\n    }\r\n    private RemoveFirst() {\r\n        if (this.AllItems.Count < 1)\r\n            return;\r\n        var first = this.AllItems.GetValueAt(0);\r\n        if (first.SubItems.Count < 1)\r\n            return;\r\n        first.SubItems.RemoveAt(0);\r\n        if (first.SubItems.Count < 1)\r\n            this.AllItems.RemoveAt(0);\r\n    }\r\n}\r\nexport = DoubleListBoxViewModel;"
  },
  {
    "path": "testsite/Binding/TestViewModel.ts",
    "content": "interface IItem {\r\n    Name: string;\r\n    Data: number;\r\n}\r\n\r\nclass TestViewModel extends Fayde.MVVM.ViewModelBase {\r\n    ObsItems = new Fayde.Collections.ObservableCollection<string>();\r\n    AllItems = [\r\n        { Name: \"Item1\", Data: 0 },\r\n        { Name: \"Item2\", Data: 1 },\r\n        { Name: \"Item3\", Data: 2 }\r\n    ];\r\n    SomeText = \"\";\r\n    SelectedItem: any;\r\n    SomeDate: DateTime = DateTime.Now;\r\n    TestCommand: Fayde.MVVM.RelayCommand;\r\n    constructor() {\r\n        super();\r\n        this.SelectedItem = this.AllItems[0];\r\n        this.TestCommand = new Fayde.MVVM.RelayCommand(parameter => alert(\"TestCommand executed.\"));\r\n    }\r\n    TestMethod(e: Fayde.IEventBindingArgs<nullstone.IEventArgs>) {\r\n        if (!this || !(this instanceof TestViewModel))\r\n            alert(\"ERROR: this is not scoped to TestViewModel.\");\r\n        if (e.sender)\r\n            alert(\"TestMethod called. [\" + e.sender.constructor.name + \"]\");\r\n        else if (e.parameter)\r\n            alert(\"TestMethod called. [\" + e.parameter.Name + \"]\");\r\n    }\r\n    AddObservableItem(e: Fayde.IEventBindingArgs<Fayde.Input.MouseEventArgs>) {\r\n        this.ObsItems.Add(this.ObsItems.Count.toString());\r\n    }\r\n    private static ctor = (() => {\r\n        Fayde.MVVM.NotifyProperties(TestViewModel, [\"SelectedItem\", \"SomeText\"]);\r\n    })();\r\n}\r\nexport = TestViewModel;"
  },
  {
    "path": "testsite/Binding/double-listbox.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:local=\"Binding\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <local:DoubleListBoxViewModel />\r\n        </Grid.DataContext>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"100\" />\r\n            <ColumnDefinition />\r\n            <ColumnDefinition Width=\"100\" />\r\n        </Grid.ColumnDefinitions>\r\n        <ListBox ItemsSource=\"{Binding AllItems}\">\r\n            <ListBox.ItemTemplate>\r\n                <DataTemplate>\r\n                    <ListBox ItemsSource=\"{Binding SubItems}\">\r\n                        <ListBox.ItemTemplate>\r\n                            <DataTemplate>\r\n                                <TextBlock Text=\"{Binding}\" />\r\n                            </DataTemplate>\r\n                        </ListBox.ItemTemplate>\r\n                        <!--\r\n                        <ListBox.ItemsPanel>\r\n                            <ItemsPanelTemplate>\r\n                                <StackPanel />\r\n                            </ItemsPanelTemplate>\r\n                        </ListBox.ItemsPanel>\r\n                        -->\r\n                    </ListBox>\r\n                </DataTemplate>\r\n            </ListBox.ItemTemplate>\r\n        </ListBox>\r\n        <StackPanel Grid.Column=\"1\">\r\n            <Button Content=\"Add Item\" Margin=\"10,0,0,0\" Command=\"{Binding AddItemCommand}\" Width=\"150\" />\r\n            <Button Content=\"Remove First Item\" Margin=\"10,0,0,0\" Command=\"{Binding RemoveFirstItemCommand}\" Width=\"150\" />\r\n        </StackPanel>\r\n        <StackPanel Grid.Column=\"2\" Orientation=\"Vertical\">\r\n            <ListBox ItemsSource=\"{Binding AllItems[0].SubItems}\">\r\n                <ListBox.ItemTemplate>\r\n                    <DataTemplate>\r\n                        <TextBlock Text=\"{Binding}\" />\r\n                    </DataTemplate>\r\n                </ListBox.ItemTemplate>\r\n            </ListBox>\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Binding/dt-binding.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:local=\"Binding\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <local:TestViewModel />\r\n        </Grid.DataContext>\r\n        <StackPanel>\r\n            <TextBlock Text=\"{Binding SomeDate, StringFormat='dd MMM yyyy'}\" />\r\n            <TextBlock Text=\"{Binding SomeDate, StringFormat='HH:mm'}\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Binding/eventbinding.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:local=\"Binding\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel x:Name=\"RootStackPanel\">\r\n        <StackPanel.DataContext>\r\n            <local:TestViewModel />\r\n        </StackPanel.DataContext>\r\n        <Button Content=\"Click Me\" Click=\"{EventBinding TestMethod}\" />\r\n        <Button Content=\"Click Me (with Command Parameter)\" Click=\"{EventBinding TestMethod, CommandParameter={Binding ElementName=RootStackPanel}}\" />\r\n        <Button Content=\"RelativeSource Click\" DataContext=\"{x:Null}\" Click=\"{EventBinding Command={Binding DataContext.TestMethod, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type StackPanel}}}, CommandParameter={Binding ElementName=RootStackPanel}}\" />\r\n        <Button Content=\"Click Me (with ICommand)\" Click=\"{EventBinding TestCommand, CommandParameter={Binding ElementName=RootStackPanel}}\" />\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Binding/find-ancestor.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel Tag=\"StackPanel Tag\">\r\n        <TextBlock Text=\"Parent Tag: \" />\r\n        <TextBlock Text=\"{Binding Path=Tag, RelativeSource={RelativeSource AncestorType=StackPanel}}\" Height=\"20\" />\r\n        <TextBlock Text=\"{Binding Path=Tag, RelativeSource={RelativeSource Self, AncestorType=StackPanel}}\" Height=\"20\" />\r\n        <TextBlock Text=\"{Binding Path=Tag, RelativeSource={RelativeSource TemplatedParent, AncestorType=StackPanel}}\" Height=\"20\" />\r\n        <TextBlock Text=\"{Binding Path=Tag, RelativeSource={RelativeSource FindAncestor, AncestorType=StackPanel}}\" Height=\"20\" />\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Binding/observablecoll-count.fap",
    "content": "<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:local=\"Binding\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <local:TestViewModel />\r\n        </Grid.DataContext>\r\n        <StackPanel>\r\n            <TextBlock Text=\"{Binding ObsItems.Count}\" />\r\n            <Button Content=\"Add Item\" Click=\"{EventBinding AddObservableItem}\" />\r\n            <ListBox ItemsSource=\"{Binding ObsItems}\">\r\n            </ListBox>\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Binding/selected-item.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:local=\"Binding\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <local:TestViewModel />\r\n        </Grid.DataContext>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <ListBox SelectedValue=\"{Binding SelectedItem, Mode=TwoWay}\" ItemsSource=\"{Binding AllItems}\">\r\n            <ListBox.ItemTemplate>\r\n                <DataTemplate>\r\n                    <TextBlock Text=\"{Binding Name}\" />\r\n                </DataTemplate>\r\n            </ListBox.ItemTemplate>\r\n        </ListBox>\r\n        <StackPanel Orientation=\"Horizontal\" Grid.Column=\"1\" DataContext=\"{Binding SelectedItem}\">\r\n            <TextBlock Text=\"{Binding Data}\" />\r\n            <TextBlock Text=\". \" />\r\n            <TextBlock Text=\"{Binding Name}\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Binding/update-source-trigger.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:local=\"Binding\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel>\r\n        <StackPanel.DataContext>\r\n            <local:TestViewModel />\r\n        </StackPanel.DataContext>\r\n        <TextBox x:Name=\"TestTextBox\" Text=\"{Binding SomeText, Mode=TwoWay}\" />\r\n        <TextBox x:Name=\"Test2TextBox\" Text=\"{Binding SomeText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n        <Button Content=\"Focus\" />\r\n        <TextBlock Text=\"{Binding ElementName=TestTextBox, Path=Text}\" />\r\n        <TextBlock Text=\"{Binding SomeText}\" />\r\n    </StackPanel>\r\n</Application> "
  },
  {
    "path": "testsite/Clipping/grid.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        ThemeName=\"Metro\">\r\n    <Grid Background=\"#123456\">\r\n        <Grid.Clip>\r\n            <RectangleGeometry Rect=\"0, 0, 200, 100\"/>\r\n        </Grid.Clip>\r\n        <Image Stretch=\"Fill\" Source=\"Images/testing.jpg\" />\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/RepeatButtonViewModel.ts",
    "content": "class RepeatButtonViewModel extends Fayde.MVVM.ViewModelBase {\r\n    private _Counter: number = 0;\r\n    get Counter () {\r\n        return this._Counter;\r\n    }\r\n\r\n    set Counter (value: number) {\r\n        this._Counter = value;\r\n        this.OnPropertyChanged(\"Counter\");\r\n    }\r\n\r\n    RepeatBtn_Click () {\r\n        this.Counter++;\r\n    }\r\n}\r\nexport = RepeatButtonViewModel;"
  },
  {
    "path": "testsite/Controls/TestClass.ts",
    "content": "class TestClass {\r\n    Name = \"Brad\";\r\n    Age = 28;\r\n}\r\nexport = TestClass;"
  },
  {
    "path": "testsite/Controls/border.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid Background=\"Orange\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition />\r\n            <RowDefinition />\r\n            <RowDefinition />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n\r\n        <Grid Grid.Column=\"0\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Margin=\"5\" Background=\"Green\" />\r\n            <Border Grid.Column=\"1\" Margin=\"5\" Background=\"Transparent\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"1\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Margin=\"5\" BorderBrush=\"CadetBlue\" BorderThickness=\"10\" Background=\"Green\" />\r\n            <Border Grid.Column=\"1\" Margin=\"5\" BorderBrush=\"CadetBlue\" BorderThickness=\"10\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"2\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Margin=\"5\" BorderBrush=\"CadetBlue\" BorderThickness=\"10,20,30,40\" Background=\"Green\" />\r\n            <Border Grid.Column=\"1\" Margin=\"5\" BorderBrush=\"CadetBlue\" BorderThickness=\"10,20,30,40\" />\r\n        </Grid>\r\n\r\n        <Grid Grid.Column=\"0\" Grid.Row=\"1\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Margin=\"5\" CornerRadius=\"10\" Background=\"Green\" />\r\n            <Border Grid.Column=\"1\" Margin=\"5\" CornerRadius=\"10\" Background=\"Transparent\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"1\" Grid.Row=\"1\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Margin=\"5\" CornerRadius=\"10\" BorderBrush=\"CadetBlue\" BorderThickness=\"10\" Background=\"Green\" />\r\n            <Border Grid.Column=\"1\" Margin=\"5\" CornerRadius=\"10\" BorderBrush=\"CadetBlue\" BorderThickness=\"10\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"2\" Grid.Row=\"1\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Margin=\"5\" CornerRadius=\"10\" BorderBrush=\"CadetBlue\" BorderThickness=\"10,20,30,40\" Background=\"Green\" />\r\n            <Border Grid.Column=\"1\" Margin=\"5\" CornerRadius=\"10\" BorderBrush=\"CadetBlue\" BorderThickness=\"10,20,30,40\" />\r\n        </Grid>\r\n\r\n        <Grid Grid.Column=\"0\" Grid.Row=\"2\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Margin=\"5\" CornerRadius=\"10,20,30,40\" Background=\"Green\" />\r\n            <Border Grid.Column=\"1\" Margin=\"5\" CornerRadius=\"10,20,30,40\" Background=\"Transparent\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"1\" Grid.Row=\"2\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Margin=\"5\" CornerRadius=\"10,20,30,40\" BorderBrush=\"CadetBlue\" BorderThickness=\"10\" Background=\"Green\" />\r\n            <Border Grid.Column=\"1\" Margin=\"5\" CornerRadius=\"10,20,30,40\" BorderBrush=\"CadetBlue\" BorderThickness=\"10\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"2\" Grid.Row=\"2\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition />\r\n                <ColumnDefinition />\r\n            </Grid.ColumnDefinitions>\r\n            <Border Grid.Column=\"0\" Margin=\"5\" CornerRadius=\"10,20,30,40\" BorderBrush=\"CadetBlue\" BorderThickness=\"10,20,30,40\" Background=\"Green\" />\r\n            <Border Grid.Column=\"1\" Margin=\"5\" CornerRadius=\"10,20,30,40\" BorderBrush=\"CadetBlue\" BorderThickness=\"10,20,30,40\" />\r\n        </Grid>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/button.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\" >\r\n        <StackPanel HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\r\n            <Button Content=\"Button Test\" Margin=\"10\" Padding=\"10\" />\r\n            <Button Margin=\"10\" Padding=\"10\" />\r\n            <RepeatButton Content=\"RepeatButton Test\" Margin=\"10\" Padding=\"10\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/checkbox.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <CheckBox>Heyo</CheckBox>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/combobox.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <ComboBox x:Name=\"MyComboBox\" Width=\"200\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Watermark=\"Select one...\">\r\n            <ComboBoxItem Content=\"Text 1\" />\r\n            <ComboBoxItem Content=\"Text 2\" />\r\n            <ComboBoxItem Content=\"Text 3\" />\r\n            <ComboBoxItem Content=\"Text 4\" />\r\n            <ComboBoxItem Content=\"Text 5\" />\r\n            <ComboBoxItem Content=\"Text 6\" />\r\n            <ComboBoxItem Content=\"Text 7\" />\r\n            <ComboBoxItem Content=\"Text 8\" />\r\n            <ComboBoxItem Content=\"Text 9\" />\r\n            <ComboBoxItem Content=\"Text 10\" />\r\n        </ComboBox>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/contentcontrol.fap",
    "content": "<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:controls=\"Controls\"\r\n    ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n        <DataTemplate DataType=\"controls:TestClass\">\r\n            <StackPanel>\r\n                <TextBlock Text=\"Name:\" />\r\n                <TextBlock Text=\"{Binding Name}\" />\r\n                <TextBlock Text=\"Age:\" />\r\n                <TextBlock Text=\"{Binding Age}\" />\r\n            </StackPanel>\r\n        </DataTemplate>\r\n    </Application.Resources>\r\n    <Grid>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <ContentControl>\r\n            <ContentControl.Content>\r\n                <controls:TestClass />\r\n            </ContentControl.Content>\r\n        </ContentControl>\r\n        <ContentControl Grid.Column=\"1\" ContentUri=\"Controls/testview.fayde\">\r\n            <ContentControl.DataContext>\r\n                <controls:TestClass />\r\n            </ContentControl.DataContext>\r\n        </ContentControl>\r\n    </Grid>\r\n</Application> "
  },
  {
    "path": "testsite/Controls/grid.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid ShowGridLines=\"true\" Background=\"Yellow\" Width=\"300\" Height=\"300\"\r\n          ColumnDefinitions=\"100 auto\" RowDefinitions=\"100 auto\">\r\n        <TextBlock Text=\"Filler\" Grid.Column=\"1\" Grid.Row=\"1\" />\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/hyperlinkbutton.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n        <Style x:Key=\"LinkStyle\" TargetType=\"HyperlinkButton\">\r\n            <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n            <Setter Property=\"BorderBrush\" Value=\"#FF9D9492\" />\r\n            <Setter Property=\"Foreground\" Value=\"Black\" />\r\n            <Setter Property=\"FontFamily\" Value=\"Segoe UI Light, Lucida Sans Unicode, Verdana\" />\r\n            <Setter Property=\"FontSize\" Value=\"28\" />\r\n            <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n            <Setter Property=\"Cursor\" Value=\"Hand\" />\r\n            <Setter Property=\"MinHeight\" Value=\"28\" />\r\n            <Setter Property=\"MinWidth\" Value=\"78\" />\r\n            <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\r\n            <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\r\n            <Setter Property=\"Padding\" Value=\"8,4,18,4\" />\r\n            <Setter Property=\"Template\">\r\n                <Setter.Value>\r\n                    <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                        <Grid x:Name=\"ButtonGrid\" Cursor=\"{TemplateBinding Cursor}\">\r\n                            <VisualStateManager.VisualStateGroups>\r\n                                <VisualStateGroup x:Name=\"CommonStates\">\r\n                                    <VisualState x:Name=\"Normal\" />\r\n                                    <VisualState x:Name=\"MouseOver\">\r\n                                        <Storyboard>\r\n                                            <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                                <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                        <Visibility>\r\n                                                            Visible\r\n                                                        </Visibility>\r\n                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                </DiscreteObjectKeyFrame>\r\n                                            </ObjectAnimationUsingKeyFrames>\r\n                                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.95\" />\r\n                                            </DoubleAnimationUsingKeyFrames>\r\n                                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\r\n                                            </DoubleAnimationUsingKeyFrames>\r\n                                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\r\n                                            </DoubleAnimationUsingKeyFrames>\r\n                                        </Storyboard>\r\n                                    </VisualState>\r\n                                    <VisualState x:Name=\"Pressed\">\r\n                                        <Storyboard>\r\n                                            <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                                <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                        <Visibility>\r\n                                                            Visible\r\n                                                        </Visibility>\r\n                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                </DiscreteObjectKeyFrame>\r\n                                            </ObjectAnimationUsingKeyFrames>\r\n                                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.8\" />\r\n                                            </DoubleAnimationUsingKeyFrames>\r\n                                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\" />\r\n                                            </DoubleAnimationUsingKeyFrames>\r\n                                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\r\n                                            </DoubleAnimationUsingKeyFrames>\r\n                                        </Storyboard>\r\n                                    </VisualState>\r\n                                    <VisualState x:Name=\"Disabled\">\r\n                                        <Storyboard>\r\n                                            <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"Visibility\">\r\n                                                <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                        <Visibility>\r\n                                                            Visible\r\n                                                        </Visibility>\r\n                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                </DiscreteObjectKeyFrame>\r\n                                            </ObjectAnimationUsingKeyFrames>\r\n                                            <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(FrameworkElement.HorizontalAlignment)\">\r\n                                                <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                        <HorizontalAlignment>\r\n                                                            Center\r\n                                                        </HorizontalAlignment>\r\n                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                </DiscreteObjectKeyFrame>\r\n                                            </ObjectAnimationUsingKeyFrames>\r\n                                            <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(FrameworkElement.VerticalAlignment)\">\r\n                                                <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                        <VerticalAlignment>\r\n                                                            Center\r\n                                                        </VerticalAlignment>\r\n                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                </DiscreteObjectKeyFrame>\r\n                                            </ObjectAnimationUsingKeyFrames>\r\n                                            <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"(FrameworkElement.HorizontalAlignment)\">\r\n                                                <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                        <HorizontalAlignment>\r\n                                                            Center\r\n                                                        </HorizontalAlignment>\r\n                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                </DiscreteObjectKeyFrame>\r\n                                            </ObjectAnimationUsingKeyFrames>\r\n                                            <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"(FrameworkElement.VerticalAlignment)\">\r\n                                                <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                        <VerticalAlignment>\r\n                                                            Center\r\n                                                        </VerticalAlignment>\r\n                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                </DiscreteObjectKeyFrame>\r\n                                            </ObjectAnimationUsingKeyFrames>\r\n                                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\r\n                                            </DoubleAnimationUsingKeyFrames>\r\n                                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\" />\r\n                                            </DoubleAnimationUsingKeyFrames>\r\n                                        </Storyboard>\r\n                                    </VisualState>\r\n                                </VisualStateGroup>\r\n                                <VisualStateGroup x:Name=\"LinkStates\">\r\n                                    <VisualState x:Name=\"ActiveLink\">\r\n                                        <Storyboard>\r\n                                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\r\n                                            </DoubleAnimationUsingKeyFrames>\r\n                                        </Storyboard>\r\n                                    </VisualState>\r\n                                    <VisualState x:Name=\"InactiveLink\" />\r\n                                </VisualStateGroup>\r\n                            </VisualStateManager.VisualStateGroups>\r\n                            <Border x:Name=\"ContentBorder\" MinWidth=\"{TemplateBinding MinWidth}\" MinHeight=\"{TemplateBinding MinHeight}\" Opacity=\"0.4\" Padding=\"0\">\r\n                                <ContentPresenter x:Name=\"ContentPresenter\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" />\r\n                            </Border>\r\n                            <Border x:Name=\"InteractiveBorder\" MinWidth=\"{TemplateBinding MinWidth}\" MinHeight=\"{TemplateBinding MinHeight}\" Background=\"White\" BorderThickness=\"1,1,1,1\" Opacity=\"0\" BorderBrush=\"White\" CornerRadius=\"0\" />\r\n                            <Border x:Name=\"InteractiveElementBorder\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Visibility=\"Collapsed\">\r\n                                <TextBlock x:Name=\"InteractiveElement\" Foreground=\"Black\" FontSize=\"{TemplateBinding FontSize}\" FontWeight=\"{TemplateBinding FontWeight}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" />\r\n                            </Border>\r\n                            <TextBlock x:Name=\"DisabledOverlay\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" Foreground=\"#FFAAAAAA\" Visibility=\"Collapsed\" />\r\n                        </Grid>\r\n                    </ControlTemplate>\r\n                </Setter.Value>\r\n            </Setter>\r\n        </Style>\r\n    </Application.Resources>\r\n    <StackPanel>\r\n        <HyperlinkButton Content=\"Download\" Foreground=\"Teal\" NavigateUri=\"/Home\" TargetName=\"_Blank\" />\r\n        <HyperlinkButton Style=\"{StaticResource LinkStyle}\" NavigateUri=\"#/Home\" TargetName=\"ContentFrame\" Content=\"home\" \r\n                         HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" />\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/itemscontrol.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Border BorderBrush=\"Black\" BorderThickness=\"1\">\r\n            <ItemsControl x:Name=\"MyListBox\" Width=\"200\" Height=\"100\" Background=\"Yellow\" Tag=\"Test\">\r\n                <ListBoxItem Content=\"Text 1\" />\r\n                <ListBoxItem Content=\"Text 2\" />\r\n                <ListBoxItem Content=\"Text 3\" />\r\n                <ListBoxItem Content=\"Text 4\" />\r\n                <ListBoxItem Content=\"Text 5\" />\r\n                <ListBoxItem Content=\"Text 6\" />\r\n                <ListBoxItem Content=\"Text 7\" />\r\n                <ListBoxItem Content=\"Text 8\" />\r\n                <ListBoxItem Content=\"Text 9\" />\r\n                <ListBoxItem Content=\"Text 10\" />\r\n                <ListBoxItem>\r\n                    <ListBoxItem.ContentTemplate>\r\n                        <DataTemplate>\r\n                            <TextBlock Text=\"{Binding Path=Tag, RelativeSource={RelativeSource ItemsControlParent}}\" />\r\n                        </DataTemplate>\r\n                    </ListBoxItem.ContentTemplate>\r\n                </ListBoxItem>\r\n            </ItemsControl>\r\n        </Border>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/listbox.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <ListBox x:Name=\"MyListBox\" Width=\"200\" Height=\"100\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\r\n            <ListBoxItem Content=\"Text 1\" />\r\n            <ListBoxItem Content=\"Text 2\" />\r\n            <ListBoxItem Content=\"Text 3\" />\r\n            <ListBoxItem Content=\"Text 4\" />\r\n            <ListBoxItem Content=\"Text 5\" />\r\n            <ListBoxItem Content=\"Text 6\" />\r\n            <ListBoxItem Content=\"Text 7\" />\r\n            <ListBoxItem Content=\"Text 8\" />\r\n            <ListBoxItem Content=\"Text 9\" />\r\n            <ListBoxItem Content=\"Text 10\" />\r\n        </ListBox>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/passwordbox.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <PasswordBox Margin=\"5\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Width=\"100\" />\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/progressbar.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel Width=\"100\">\r\n        <ProgressBar Value=\"50\" Margin=\"0,5\" />\r\n        <ProgressBar Value=\"50\" Margin=\"0,5\" IsIndeterminate=\"True\" />\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/radiobutton.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <StackPanel>\r\n            <RadioButton Content=\"Radio 1-1\"></RadioButton>\r\n            <RadioButton Content=\"Radio 1-2\"></RadioButton>\r\n            <RadioButton Content=\"Radio 1-3\"></RadioButton>\r\n\r\n            <RadioButton Content=\"Radio 2-1\" GroupName=\"Group2\"></RadioButton>\r\n            <RadioButton Content=\"Radio 2-2\" GroupName=\"Group2\"></RadioButton>\r\n            <RadioButton Content=\"Radio 2-3\" GroupName=\"Group2\"></RadioButton>\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/repeatbutton.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        xmlns:controls=\"Controls\"\r\n        ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\" >\r\n        <Grid.DataContext>\r\n            <controls:RepeatButtonViewModel />\r\n        </Grid.DataContext>\r\n        <StackPanel HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\r\n            <RepeatButton x:Name=\"RepeatBtn\" Content=\"Click me!\" Click=\"{EventBinding RepeatBtn_Click}\" Delay=\"500\" Interval=\"100\" />\r\n            <TextBlock Text=\"{Binding Counter}\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/scrollbar.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <ScrollBar Width=\"30\" Height=\"300\" Orientation=\"Vertical\">\r\n        </ScrollBar>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/scrollviewer.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"200\" />\r\n            <RowDefinition Height=\"200\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"200\" />\r\n            <ColumnDefinition Width=\"200\" />\r\n        </Grid.ColumnDefinitions>\r\n\r\n        <!--\r\n        <ScrollViewer Grid.Row=\"0\" Grid.Column=\"0\" VerticalScrollBarVisibility=\"Auto\" HorizontalScrollBarVisibility=\"Disabled\" Margin=\"5\">\r\n            <Image Width=\"600\" Height=\"480\" Stretch=\"UniformToFill\" Source=\"Images/testing.jpg\" />\r\n        </ScrollViewer>\r\n        <ScrollViewer Grid.Row=\"0\" Grid.Column=\"1\" VerticalScrollBarVisibility=\"Auto\" HorizontalScrollBarVisibility=\"Auto\" Margin=\"5\">\r\n            <Image Width=\"600\" Height=\"480\" Stretch=\"UniformToFill\" Source=\"Images/testing.jpg\" />\r\n        </ScrollViewer>\r\n        <ScrollViewer Grid.Row=\"1\" Grid.Column=\"0\" VerticalScrollBarVisibility=\"Disabled\" HorizontalScrollBarVisibility=\"Auto\" Margin=\"5\">\r\n            <Image Width=\"600\" Height=\"480\" Stretch=\"UniformToFill\" Source=\"Images/testing.jpg\" />\r\n        </ScrollViewer>\r\n        <ScrollViewer Grid.Row=\"1\" Grid.Column=\"1\" VerticalScrollBarVisibility=\"Disabled\" HorizontalScrollBarVisibility=\"Disabled\" Margin=\"5\">\r\n            <Image Width=\"600\" Height=\"480\" Stretch=\"UniformToFill\" Source=\"Images/testing.jpg\" />\r\n        </ScrollViewer>\r\n        -->\r\n\r\n        <!--\r\n        <Border Grid.Row=\"0\" Grid.Column=\"0\" Background=\"Orange\" Margin=\"5\">\r\n        </Border>\r\n        <Border Grid.Row=\"0\" Grid.Column=\"1\" Background=\"Orange\" Margin=\"5\">\r\n        </Border>\r\n        <Border Grid.Row=\"1\" Grid.Column=\"0\" Background=\"Orange\" Margin=\"5\">\r\n        </Border>\r\n        <Border Grid.Row=\"1\" Grid.Column=\"1\" Background=\"Orange\" Margin=\"5\">\r\n        </Border>\r\n        -->\r\n\r\n        <ScrollViewer Grid.Row=\"0\" Grid.Column=\"0\" VerticalScrollBarVisibility=\"Auto\" HorizontalScrollBarVisibility=\"Disabled\" Margin=\"5\">\r\n            <Image Width=\"600\" Height=\"480\" Stretch=\"UniformToFill\" Source=\"Images/testing.jpg\" />\r\n        </ScrollViewer>\r\n        <ScrollViewer Grid.Row=\"0\" Grid.Column=\"1\" VerticalScrollBarVisibility=\"Auto\" HorizontalScrollBarVisibility=\"Auto\" Margin=\"5\">\r\n            <Image Width=\"600\" Height=\"480\" Stretch=\"UniformToFill\" Source=\"Images/testing.jpg\" />\r\n        </ScrollViewer>\r\n        <ScrollViewer Grid.Row=\"1\" Grid.Column=\"0\" VerticalScrollBarVisibility=\"Disabled\" HorizontalScrollBarVisibility=\"Auto\" Margin=\"5\">\r\n            <Image Width=\"600\" Height=\"480\" Stretch=\"UniformToFill\" Source=\"Images/testing.jpg\" />\r\n        </ScrollViewer>\r\n        <ScrollViewer Grid.Row=\"1\" Grid.Column=\"1\" VerticalScrollBarVisibility=\"Disabled\" HorizontalScrollBarVisibility=\"Disabled\" Margin=\"5\">\r\n            <Image Width=\"600\" Height=\"480\" Stretch=\"UniformToFill\" Source=\"Images/testing.jpg\" />\r\n        </ScrollViewer>\r\n\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/slider.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <StackPanel HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\r\n            <Slider x:Name=\"TheSlider\" Value=\"50\" Minimum=\"0\" Maximum=\"100\" Width=\"250\" />\r\n            <StackPanel Orientation=\"Horizontal\">\r\n                <TextBlock Text=\"Value: \" />\r\n                <TextBlock Text=\"{Binding ElementName=TheSlider, Path=Value}\" />\r\n            </StackPanel>\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/stackpanel.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel>\r\n        <TextBlock Text=\"Line 1\" />\r\n        <TextBlock Text=\"Line 2 - Centered\" HorizontalAlignment=\"Center\" />\r\n        <TextBlock Text=\"Line 3 - Right Aligned\" HorizontalAlignment=\"Right\" />\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/testview.fayde",
    "content": "﻿<Grid\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\">\r\n    <Border BorderThickness=\"5\" CornerRadius=\"5\" BorderBrush=\"Red\">\r\n        <TextBlock Text=\"{Binding Name}\">\r\n        </TextBlock>\r\n    </Border>\r\n</Grid>"
  },
  {
    "path": "testsite/Controls/textblock.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <TextBlock Margin=\"5\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"This is a test! Some more text. Let's make sure this wraps.\" TextWrapping=\"Wrap\" Width=\"100\" />\r\n        <Border BorderBrush=\"Orange\" BorderThickness=\"2\" CornerRadius=\"2\" Width=\"300\" Margin=\"0,50,0,0\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n            <TextBlock TextAlignment=\"Center\" Text=\"Center - Text Alignment\">\r\n            </TextBlock>\r\n        </Border>\r\n        <TextBlock>Inner Text</TextBlock>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/textbox.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"Green\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition />\r\n        </Grid.RowDefinitions>\r\n        <TextBox Grid.Row=\"0\" Margin=\"5\" Text=\"Enter Text here!\" Background=\"Yellow\" />\r\n        <TextBox Grid.Row=\"1\" Margin=\"5\" Text=\"Enter Text here!\" Background=\"Orange\" TextWrapping=\"Wrap\" HorizontalAlignment=\"Left\" Width=\"100\" Height=\"50\" VerticalScrollBarVisibility=\"Auto\" />\r\n        <StackPanel Orientation=\"Horizontal\" Grid.Row=\"2\">\r\n            <TextBlock Margin=\"5\" Text=\"{Binding ElementName=BigTextBox, Path=SelectionStart}\" />\r\n            <TextBlock Margin=\"5\" Text=\"{Binding ElementName=BigTextBox, Path=SelectionLength}\" />\r\n        </StackPanel>\r\n\r\n        <StackPanel Grid.Row=\"3\" Margin=\"5\" >\r\n            <TextBox x:Name=\"SelectionText0\" Margin=\"0,5\" Text=\"Unchanged\" SelectionOnFocus=\"Unchanged\" />\r\n            <TextBox x:Name=\"SelectionText1\" Margin=\"0,5\" Text=\"SelectAll\" SelectionOnFocus=\"SelectAll\" />\r\n            <TextBox x:Name=\"SelectionText2\" Margin=\"0,5\" Text=\"CaretToBeginning\" SelectionOnFocus=\"CaretToBeginning\" />\r\n            <TextBox x:Name=\"SelectionText3\" Margin=\"0,5\" Text=\"CaretToEnd\" SelectionOnFocus=\"CaretToEnd\" />\r\n            <TextBox x:Name=\"SelectionText4\" Margin=\"0,5\" Text=\"Default\" SelectionOnFocus=\"Default\" />\r\n            <TextBox x:Name=\"SelectionText5\" Margin=\"0,5\" Text=\"DefaultSelectAll\" SelectionOnFocus=\"DefaultSelectAll\" />\r\n        </StackPanel>\r\n        \r\n        <TextBox x:Name=\"BigTextBox\" Grid.Row=\"4\" Margin=\"5\" Text=\"Enter Text here!\" AcceptsReturn=\"True\" TextWrapping=\"Wrap\" />\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Controls/tooltip.fap",
    "content": "﻿<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <StackPanel HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\r\n            <Border Background=\"Green\">\r\n                <ToolTipService.ToolTip>\r\n                    <ToolTip Padding=\"0\">\r\n                        <Border Background=\"White\" BorderBrush=\"Black\" BorderThickness=\"1\" CornerRadius=\"5\" Margin=\"5\">\r\n                            <Grid Margin=\"5\">\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition Width=\"Auto\" />\r\n                                    <ColumnDefinition />\r\n                                </Grid.ColumnDefinitions>\r\n                                <Image Source=\"Images/github.png\" Width=\"32\" Height=\"32\" Margin=\"0,0,5,0\" />\r\n                                <TextBlock Grid.Column=\"1\" Foreground=\"Black\" Text=\"Infinitely extensible tooltip!\" VerticalAlignment=\"Center\" />\r\n                            </Grid>\r\n                        </Border>\r\n                    </ToolTip>\r\n                </ToolTipService.ToolTip>\r\n                <TextBlock Text=\"Mouse over me!\"></TextBlock>\r\n            </Border>\r\n            <Border Background=\"Orange\" ToolTipService.ToolTip=\"I am a normal tooltip\">\r\n                <TextBlock Text=\"Me too!\"></TextBlock>\r\n            </Border>\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Core/TestResourceDictionary.xml",
    "content": "﻿<ResourceDictionary xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\">\r\n    <Color x:Key=\"TestColor\">#FF110000</Color>\r\n</ResourceDictionary>"
  },
  {
    "path": "testsite/Core/layoutclip.fap",
    "content": "﻿<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"250\" />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Border BorderBrush=\"Orange\" BorderThickness=\"2\" CornerRadius=\"10\" Width=\"300\">\r\n            <TextBlock Text=\"The right side should be clipped\"/>\r\n        </Border>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Core/resourcedictionary.fap",
    "content": "﻿<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n        <ResourceDictionary Source=\"Core/TestResourceDictionary.xml\"/>\r\n    </Application.Resources>\r\n    <Border Background=\"{StaticResource TestColor}\">\r\n        <TextBlock Text=\"The background should not be white.\"/>\r\n    </Border>\r\n</Application>"
  },
  {
    "path": "testsite/Demo/TestResourceDictionary.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<ResourceDictionary xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\">\r\n    <Color x:Key=\"TestColor\">#FF110000</Color>\r\n</ResourceDictionary>"
  },
  {
    "path": "testsite/Demo/Views/Core.fayde",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<Page xmlns=\"http://schemas.wsick.com/fayde\"\r\n      xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n      Title=\"Fayde | Core Controls\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <Grid.Resources>\r\n            <Style x:Key=\"ControlLabelStyle\" TargetType=\"TextBlock\">\r\n                <Setter Property=\"Foreground\" Value=\"Black\" />\r\n                <Setter Property=\"FontFamily\" Value=\"Segoe UI, Lucida Sans Unicode, Verdana\" />\r\n                <Setter Property=\"FontSize\" Value=\"12\" />\r\n                <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n            </Style>\r\n        </Grid.Resources>\r\n        <ScrollViewer x:Name=\"PageScrollViewer\" Style=\"{StaticResource PageScrollViewerStyle}\">\r\n            <StackPanel x:Name=\"ContentStackPanel\">\r\n                <Grid Margin=\"21,0,50,0\" HorizontalAlignment=\"Left\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"0.2*\" />\r\n                        <ColumnDefinition Width=\"0.2*\" />\r\n                        <ColumnDefinition Width=\"0.2*\" />\r\n                        <ColumnDefinition Width=\"0.2*\" />\r\n                        <ColumnDefinition Width=\"0.2*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <StackPanel Width=\"260\" Margin=\"0\">\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"TEXTBOX\" Margin=\"0,10,30,0\" />\r\n                        <TextBox TextWrapping=\"Wrap\" Text=\"TextBox\" Margin=\"0,3,30,3\" />\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"TOOLTIP\" Margin=\"0,10,30,0\" />\r\n                        <Image Margin=\"0\" Source=\"Images/page01.JPG\" Stretch=\"Uniform\" ToolTipService.ToolTip=\"Lorem ipsum dolor\">\r\n                        </Image>\r\n                    </StackPanel>\r\n                    <StackPanel Grid.ColumnSpan=\"1\" Orientation=\"Vertical\" Margin=\"10,0\" Width=\"260\" Grid.Column=\"1\">\r\n                        <!--\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" TextWrapping=\"Wrap\" Text=\"SEARCHBUTTON\" Margin=\"30,10,30,0\" />\r\n                        <Grid Height=\"26\" Margin=\"30,5\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"0.896*\" />\r\n                                <ColumnDefinition Width=\"0.104*\" />\r\n                            </Grid.ColumnDefinitions>\r\n                            <HyperlinkButton Content=\"HyperlinkButton\" Style=\"{StaticResource SearchButtonStyle}\" Margin=\"0,1,0,4\" Grid.Column=\"1\" />\r\n                            <Border BorderBrush=\"#FFCCCCCC\" BorderThickness=\"1\" Grid.ColumnSpan=\"2\" Margin=\"0\" />\r\n                        </Grid>\r\n                        -->\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" TextWrapping=\"Wrap\" Text=\"PASSWORDBOX\" Margin=\"30,10,30,0\" />\r\n                        <PasswordBox Margin=\"30,5\"  />\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"BUTTON\" Margin=\"30,10,30,0\" />\r\n                        <Button Content=\"BUTTON\" Margin=\"30,5\" />\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"REPEATBUTTON\" Margin=\"30,10,30,0\" />\r\n                        <RepeatButton Content=\"REPEATBUTTON\" Margin=\"30,3\" />\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"TOGGLEBUTTON\" Margin=\"30,10,30,0\" />\r\n                        <ToggleButton Content=\"TOGGLEBUTTON\" Margin=\"30,3\" />\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"CHECKBOX\" Margin=\"30,41,30,0\" />\r\n                        <CheckBox Content=\"CheckBox\" Margin=\"30,3\" HorizontalAlignment=\"Left\" IsChecked=\"True\" />\r\n                        <CheckBox Content=\"CheckBox\" Margin=\"30,3\" HorizontalAlignment=\"Left\" IsThreeState=\"True\" IsChecked=\"True\" />\r\n                        <CheckBox Content=\"CheckBox\" Margin=\"30,3\" HorizontalAlignment=\"Left\" />\r\n                    </StackPanel>\r\n                    <StackPanel Margin=\"0,0,65,0\" VerticalAlignment=\"Top\" Grid.Column=\"2\" Width=\"200\">\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"HYPERLINKBUTTON\" Margin=\"0,10,0,0\" />\r\n                        <HyperlinkButton Content=\"HyperlinkButton\" Margin=\"0,5\" />\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"LISTBOX\" Margin=\"0,15,40,0\" />\r\n                        <ListBox Margin=\"-7,0,5,0\">\r\n                            <ListBoxItem Content=\"listboxitem01\" />\r\n                            <ListBoxItem Content=\"listboxitem02\" />\r\n                            <ListBoxItem Content=\"listboxitem03\" />\r\n                            <ListBoxItem Content=\"listboxitem04\" />\r\n                        </ListBox>\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"SLIDER\" Margin=\"0,20,-50,0\" />\r\n                        <Slider Margin=\"59,3,0,3\" />\r\n                        <Slider Margin=\"-105,-26,0,3\" Height=\"100\" Orientation=\"Vertical\" />\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"PROGRESSBAR\" Margin=\"0,15,0,0\" />\r\n                        <ProgressBar Value=\"50\" Margin=\"0,5\" />\r\n                        <ProgressBar Value=\"50\" Margin=\"0,5\" IsIndeterminate=\"True\" />\r\n                    </StackPanel>\r\n                    <StackPanel Margin=\"0\" VerticalAlignment=\"Top\" Grid.Column=\"3\" Width=\"200\">\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"COMBOBOX\" Margin=\"0,10,-93,0\" />\r\n                        <ComboBox Margin=\"0,5\">\r\n                            <ComboBoxItem Content=\"ComboBoxItem 1\" />\r\n                            <ComboBoxItem Content=\"ComboBoxItem 2\" />\r\n                            <ComboBoxItem Content=\"ComboBoxItem 3\" />\r\n                        </ComboBox>\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"SCROLLVIEWER\" Padding=\"0\" Margin=\"0,14,0,0\" />\r\n                        <ScrollViewer HorizontalAlignment=\"Left\" Height=\"81\" Width=\"200\">\r\n                            <TextBlock TextWrapping=\"Wrap\">\r\n                                <Span>\r\n                                    <Run Text=\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida laoreet vestibulum. Nunc suscipit laoreet neque, ac fermentum odio condimentum sit amet.\" />\r\n                                </Span>\r\n                                <LineBreak />\r\n                                <Run Text=\"\" />\r\n                            </TextBlock>\r\n                        </ScrollViewer>\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"RADIOBUTTON\" Margin=\"0,43,-68,0\" />\r\n                        <RadioButton Content=\"RadioButton\" Margin=\"0,3\" HorizontalAlignment=\"Left\" IsChecked=\"True\" />\r\n                        <RadioButton Content=\"RadioButton\" Margin=\"0,3\" HorizontalAlignment=\"Left\" />\r\n                        <RadioButton Content=\"RadioButton\" Margin=\"0,3\" HorizontalAlignment=\"Left\" />\r\n                        <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"TEXTBLOCK\" Margin=\"0,31,-77,0\" />\r\n                        <TextBlock Margin=\"0,5\" TextWrapping=\"Wrap\" Text=\"Pellentesque consectetuer pellentesque sollicitudin pellentesque consectetuer pellentesque sollicitudin pellentesque consectetuer pellentesque sollicitudin pellentesque consectetuer \" />\r\n                    </StackPanel>\r\n                </Grid>\r\n            </StackPanel>\r\n        </ScrollViewer>\r\n    </Grid>\r\n</Page>"
  },
  {
    "path": "testsite/Demo/Views/SDK.fayde",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<Page xmlns=\"http://schemas.wsick.com/fayde\"\r\n      xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n      Title=\"Fayde | SDK\">\r\n    <Grid>\r\n        \r\n    </Grid>\r\n</Page>"
  },
  {
    "path": "testsite/Demo/Views/Toolkit.fayde",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<Page xmlns=\"http://schemas.wsick.com/fayde\"\r\n      xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n      Title=\"Fayde | Toolkit\">\r\n</Page>"
  },
  {
    "path": "testsite/Demo/Views/contact.fayde",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<Page xmlns=\"http://schemas.wsick.com/fayde\"\r\n      xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n      Title=\"Fayde | Contact\">\r\n    <Grid>\r\n        <TextBlock Text=\"Placeholder Content - Content\"></TextBlock>\r\n    </Grid>\r\n</Page>"
  },
  {
    "path": "testsite/Demo/Views/home.fayde",
    "content": "﻿<Page xmlns=\"http://schemas.wsick.com/fayde\"\r\n      xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n      Title=\"Fayde | Home\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <ScrollViewer x:Name=\"PageScrollViewer\" Style=\"{StaticResource PageScrollViewerStyle}\">\r\n            <StackPanel x:Name=\"ContentStackPanel\" Margin=\"0,30,0,0\">\r\n                <Grid Height=\"420\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"0.639*\"/>\r\n                        <ColumnDefinition Width=\"0.361*\"/>\r\n                    </Grid.ColumnDefinitions>\r\n                    <StackPanel Margin=\"0,0,11,0\" Orientation=\"Vertical\">\r\n\r\n                        <TextBlock x:Name=\"HeaderText\" Style=\"{StaticResource HeaderTextStyle}\" Text=\"Fayde Cosmopolitan Theme\"/>\r\n\r\n                        <!--\r\n                        <RichTextBox>\r\n                            <Paragraph xml:space=\"preserve\">Click navigation links above to see the look and feel for this theme. Click a link below to begin using this theme...</Paragraph>\r\n                        </RichTextBox>\r\n                        <RichTextBox>\r\n                            <Paragraph xml:space=\"preserve\"><Hyperlink TargetName=\"_blank\" NavigateUri=\"http://visualstudiogallery.msdn.microsoft.com/en-us/9329bdf4-3be7-4347-b1cd-b2c5d4e5a293\">Open Project Template</Hyperlink>: Create a new project that includes the control theme and project navigation framework. The project template supports browser back and is a refresh of Visual Studio 2010 templates.</Paragraph>\r\n                        </RichTextBox>\r\n                        <RichTextBox>\r\n                            <Paragraph xml:space=\"preserve\"><Hyperlink TargetName=\"_blank\" NavigateUri=\"http://go.microsoft.com/fwlink/?LinkId=192411\">Unpack Theme files</Hyperlink>: Add resource files to an existing Visual Studio 2010 project to update an application with this look. Theming resources are in separate files for easy customization, such as replacing brushes.xaml for a new color scheme.</Paragraph>\r\n                        </RichTextBox>\r\n                        -->\r\n\r\n                    </StackPanel>\r\n                </Grid>\r\n            </StackPanel>\r\n        </ScrollViewer>\r\n    </Grid>\r\n</Page>"
  },
  {
    "path": "testsite/Demo/Views/smoke.fayde",
    "content": "﻿<Page xmlns=\"http://schemas.wsick.com/fayde\"\r\n      xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n      Title=\"Fayde | Smoke\">\r\n    <StackPanel>\r\n        <TextBlock TextWrapping=\"Wrap\">\r\n            <Run>\r\n                Have you ever used Silverlight to develop a web application? Then, once the web\r\n                application was successful, we now have to support Linux and Mac and on every modern browser. Ever been frustrated trying to design a silverlight\r\n                web application where lots of data needed to be shuffled back and forth from the server to the client? Like developing in .NET? Like MVVM?\r\n                If so, this project is especially for you. Fayde is a project that allows you to develop web applications using the same Silverlight and .NET\r\n                syntactical sugar that you love but do it across all platforms and all browsers. Best of all, no download or browser plugin is required. How\r\n                does it do this? Html5 With the advent of the canvas, web sockets, and other browser technologies; Fayde is now poised to become one of the leading\r\n                web application development tools. Interested? Browse around and take a look at why Fayde can solve some of the most frustrating issues with\r\n                web application development. Spend your time developing your application and not fighting with web technology.\r\n            </Run>\r\n        </TextBlock>\r\n        <TextBox Margin=\"20\" Text=\"This is a sample textbox.\"></TextBox>\r\n        <Button Margin=\"20,0,20,20\" Content=\"This is a sample button.\"/>\r\n        <Image Stretch=\"None\" Source=\"Images/testing.jpg\" />\r\n        <RepeatButton Margin=\"20\" Content=\"This is a repeat button.\"/>\r\n        <CheckBox Margin=\"20, 0, 20, 0\">CheckBox</CheckBox>\r\n        <RadioButton Margin=\"20, 0, 20, 0\">RadioButton 1</RadioButton>\r\n        <RadioButton Margin=\"20, 0, 20, 0\">RadioButton 2</RadioButton>\r\n        <Border Margin=\"20\" CornerRadius=\"2\" BorderThickness=\"1\">\r\n            <Border.BorderBrush>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\r\n                </LinearGradientBrush>\r\n            </Border.BorderBrush>\r\n            <ItemsControl>\r\n                <ItemsControl.Items>\r\n                    <TextBlock Padding=\"5\" Text=\"Item 1\"/>\r\n                    <TextBlock Padding=\"5\" Text=\"Item 2\"/>\r\n                </ItemsControl.Items>\r\n            </ItemsControl>\r\n        </Border>\r\n    </StackPanel>\r\n</Page>"
  },
  {
    "path": "testsite/Demo/default.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n        <ResourceDictionary>\r\n            <ResourceDictionary.MergedDictionaries>\r\n                <ResourceDictionary Source=\"Demo/TestResourceDictionary.xml\" />\r\n            </ResourceDictionary.MergedDictionaries>\r\n            <Style x:Key=\"LogoIcon\" TargetType=\"ContentControl\">\r\n                <Setter Property=\"Height\" Value=\"45\" />\r\n                <Setter Property=\"Width\" Value=\"280\" />\r\n                <Setter Property=\"Margin\" Value=\"0,0,100,0\" />\r\n                <Setter Property=\"VerticalAlignment\" Value=\"Top\" />\r\n                <Setter Property=\"HorizontalAlignment\" Value=\"Right\" />\r\n                <Setter Property=\"Template\">\r\n                    <Setter.Value>\r\n                        <ControlTemplate TargetType=\"ContentControl\">\r\n                            <Grid>\r\n                                <Rectangle Fill=\"#FF119EDA\" />\r\n                            </Grid>\r\n                        </ControlTemplate>\r\n                    </Setter.Value>\r\n                </Setter>\r\n            </Style>\r\n            <Style x:Key=\"ContentBorderStyle\" TargetType=\"Border\">\r\n                <Setter Property=\"Background\" Value=\"White\" />\r\n                <Setter Property=\"BorderBrush\" Value=\"#FFB2B2B2\" />\r\n                <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n                <Setter Property=\"Margin\" Value=\"10\" />\r\n                <Setter Property=\"VerticalAlignment\" Value=\"Stretch\" />\r\n                <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\r\n                <Setter Property=\"Effect\">\r\n                    <Setter.Value>\r\n                        <DropShadowEffect BlurRadius=\"10\" Opacity=\"0.25\" ShadowDepth=\"0\" />\r\n                    </Setter.Value>\r\n                </Setter>\r\n            </Style>\r\n            <Style x:Key=\"ApplicationNameStyle\" TargetType=\"TextBlock\">\r\n                <Setter Property=\"Foreground\">\r\n                    <Setter.Value>\r\n                        <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                            <GradientStop Color=\"#FF14BBD2\" Offset=\"0\" />\r\n                            <GradientStop Color=\"#FF013C6C\" Offset=\"1\" />\r\n                        </LinearGradientBrush>\r\n                    </Setter.Value>\r\n                </Setter>\r\n                <Setter Property=\"FontFamily\" Value=\"Segoe UI Light, Lucida Sans Unicode, Verdana\" />\r\n                <Setter Property=\"FontSize\" Value=\"50\" />\r\n                <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n                <Setter Property=\"Margin\" Value=\"43,33,0,0\" />\r\n                <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\r\n                <Setter Property=\"HorizontalAlignment\" Value=\"Left\" />\r\n            </Style>\r\n            <Style x:Key=\"LinkStyle\" TargetType=\"HyperlinkButton\">\r\n                <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n                <Setter Property=\"BorderBrush\" Value=\"#FF9D9492\" />\r\n                <Setter Property=\"Foreground\" Value=\"Black\" />\r\n                <Setter Property=\"FontFamily\" Value=\"Segoe UI Light, Lucida Sans Unicode, Verdana\" />\r\n                <Setter Property=\"FontSize\" Value=\"28\" />\r\n                <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n                <Setter Property=\"Cursor\" Value=\"Hand\" />\r\n                <Setter Property=\"MinHeight\" Value=\"28\" />\r\n                <Setter Property=\"MinWidth\" Value=\"78\" />\r\n                <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\r\n                <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\r\n                <Setter Property=\"Padding\" Value=\"8,4,18,4\" />\r\n                <Setter Property=\"Template\">\r\n                    <Setter.Value>\r\n                        <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                            <Grid x:Name=\"ButtonGrid\" Cursor=\"{TemplateBinding Cursor}\">\r\n                                <VisualStateManager.VisualStateGroups>\r\n                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                        <VisualState x:Name=\"Normal\" />\r\n                                        <VisualState x:Name=\"MouseOver\">\r\n                                            <Storyboard>\r\n                                                <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                                    <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                        <DiscreteObjectKeyFrame.Value>\r\n                                                            <Visibility>\r\n                                                                Visible\r\n                                                            </Visibility>\r\n                                                        </DiscreteObjectKeyFrame.Value>\r\n                                                    </DiscreteObjectKeyFrame>\r\n                                                </ObjectAnimationUsingKeyFrames>\r\n                                                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                    <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.95\" />\r\n                                                </DoubleAnimationUsingKeyFrames>\r\n                                                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                    <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\r\n                                                </DoubleAnimationUsingKeyFrames>\r\n                                                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                    <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\r\n                                                </DoubleAnimationUsingKeyFrames>\r\n                                            </Storyboard>\r\n                                        </VisualState>\r\n                                        <VisualState x:Name=\"Pressed\">\r\n                                            <Storyboard>\r\n                                                <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                                    <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                        <DiscreteObjectKeyFrame.Value>\r\n                                                            <Visibility>\r\n                                                                Visible\r\n                                                            </Visibility>\r\n                                                        </DiscreteObjectKeyFrame.Value>\r\n                                                    </DiscreteObjectKeyFrame>\r\n                                                </ObjectAnimationUsingKeyFrames>\r\n                                                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveElementBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                    <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.8\" />\r\n                                                </DoubleAnimationUsingKeyFrames>\r\n                                                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                    <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\" />\r\n                                                </DoubleAnimationUsingKeyFrames>\r\n                                                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"InteractiveBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                    <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\r\n                                                </DoubleAnimationUsingKeyFrames>\r\n                                            </Storyboard>\r\n                                        </VisualState>\r\n                                        <VisualState x:Name=\"Disabled\">\r\n                                            <Storyboard>\r\n                                                <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"Visibility\">\r\n                                                    <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                        <DiscreteObjectKeyFrame.Value>\r\n                                                            <Visibility>\r\n                                                                Visible\r\n                                                            </Visibility>\r\n                                                        </DiscreteObjectKeyFrame.Value>\r\n                                                    </DiscreteObjectKeyFrame>\r\n                                                </ObjectAnimationUsingKeyFrames>\r\n                                                <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(FrameworkElement.HorizontalAlignment)\">\r\n                                                    <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                        <DiscreteObjectKeyFrame.Value>\r\n                                                            <HorizontalAlignment>\r\n                                                                Center\r\n                                                            </HorizontalAlignment>\r\n                                                        </DiscreteObjectKeyFrame.Value>\r\n                                                    </DiscreteObjectKeyFrame>\r\n                                                </ObjectAnimationUsingKeyFrames>\r\n                                                <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(FrameworkElement.VerticalAlignment)\">\r\n                                                    <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                        <DiscreteObjectKeyFrame.Value>\r\n                                                            <VerticalAlignment>\r\n                                                                Center\r\n                                                            </VerticalAlignment>\r\n                                                        </DiscreteObjectKeyFrame.Value>\r\n                                                    </DiscreteObjectKeyFrame>\r\n                                                </ObjectAnimationUsingKeyFrames>\r\n                                                <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"(FrameworkElement.HorizontalAlignment)\">\r\n                                                    <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                        <DiscreteObjectKeyFrame.Value>\r\n                                                            <HorizontalAlignment>\r\n                                                                Center\r\n                                                            </HorizontalAlignment>\r\n                                                        </DiscreteObjectKeyFrame.Value>\r\n                                                    </DiscreteObjectKeyFrame>\r\n                                                </ObjectAnimationUsingKeyFrames>\r\n                                                <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"(FrameworkElement.VerticalAlignment)\">\r\n                                                    <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                        <DiscreteObjectKeyFrame.Value>\r\n                                                            <VerticalAlignment>\r\n                                                                Center\r\n                                                            </VerticalAlignment>\r\n                                                        </DiscreteObjectKeyFrame.Value>\r\n                                                    </DiscreteObjectKeyFrame>\r\n                                                </ObjectAnimationUsingKeyFrames>\r\n                                                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                    <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\r\n                                                </DoubleAnimationUsingKeyFrames>\r\n                                                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledOverlay\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                    <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\" />\r\n                                                </DoubleAnimationUsingKeyFrames>\r\n                                            </Storyboard>\r\n                                        </VisualState>\r\n                                    </VisualStateGroup>\r\n                                    <VisualStateGroup x:Name=\"LinkStates\">\r\n                                        <VisualState x:Name=\"ActiveLink\">\r\n                                            <Storyboard>\r\n                                                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"ContentBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                                    <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\r\n                                                </DoubleAnimationUsingKeyFrames>\r\n                                            </Storyboard>\r\n                                        </VisualState>\r\n                                        <VisualState x:Name=\"InactiveLink\" />\r\n                                    </VisualStateGroup>\r\n                                </VisualStateManager.VisualStateGroups>\r\n                                <Border x:Name=\"ContentBorder\" MinWidth=\"{TemplateBinding MinWidth}\" MinHeight=\"{TemplateBinding MinHeight}\" Opacity=\"0.4\" Padding=\"0\">\r\n                                    <ContentPresenter x:Name=\"ContentPresenter\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" />\r\n                                </Border>\r\n                                <Border x:Name=\"InteractiveBorder\" MinWidth=\"{TemplateBinding MinWidth}\" MinHeight=\"{TemplateBinding MinHeight}\" Background=\"White\" BorderThickness=\"1,1,1,1\" Opacity=\"0\" BorderBrush=\"White\" CornerRadius=\"0\" />\r\n                                <Border x:Name=\"InteractiveElementBorder\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Visibility=\"Collapsed\">\r\n                                    <TextBlock x:Name=\"InteractiveElement\" Foreground=\"Black\" FontSize=\"{TemplateBinding FontSize}\" FontWeight=\"{TemplateBinding FontWeight}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" />\r\n                                </Border>\r\n                                <TextBlock x:Name=\"DisabledOverlay\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" Foreground=\"#FFAAAAAA\" Visibility=\"Collapsed\" />\r\n                            </Grid>\r\n                        </ControlTemplate>\r\n                    </Setter.Value>\r\n                </Setter>\r\n            </Style>\r\n            <Style x:Key=\"PageScrollViewerStyle\" TargetType=\"ScrollViewer\">\r\n                <Setter Property=\"BorderBrush\" Value=\"Transparent\" />\r\n                <Setter Property=\"BorderThickness\" Value=\"0,1,0,1\" />\r\n                <Setter Property=\"Padding\" Value=\"58,0,58,0\" />\r\n                <Setter Property=\"VerticalScrollBarVisibility\" Value=\"Auto\" />\r\n                <Setter Property=\"HorizontalScrollBarVisibility\" Value=\"Auto\" />\r\n            </Style>\r\n            <Style x:Key=\"HeaderTextStyle\" TargetType=\"TextBlock\">\r\n                <Setter Property=\"Foreground\" Value=\"#FF119EDA\"/>\r\n                <Setter Property=\"FontFamily\" Value=\"Segoe UI Light, Lucida Sans Unicode, Verdana\"/>\r\n                <Setter Property=\"FontSize\" Value=\"21.333\"/>\r\n                <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n                <Setter Property=\"TextWrapping\" Value=\"Wrap\"/>\r\n                <Setter Property=\"Margin\" Value=\"0,15,0,4\"/>\r\n                <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\r\n            </Style>\r\n        </ResourceDictionary>\r\n    </Application.Resources>\r\n    <Grid Margin=\"5\">\r\n        <Border Style=\"{StaticResource ContentBorderStyle}\">\r\n            <Grid x:Name=\"LayoutRoot\">\r\n                <Grid.RowDefinitions>\r\n                    <RowDefinition Height=\"Auto\" />\r\n                    <RowDefinition Height=\"Auto\" />\r\n                    <RowDefinition Height=\"*\" />\r\n                </Grid.RowDefinitions>\r\n                <Border x:Name=\"BrandingBorder\" Margin=\"62,0,10,10\">\r\n                    <StackPanel x:Name=\"BrandingStackPanel\">\r\n                        <ContentControl Style=\"{StaticResource LogoIcon}\" />\r\n                        <TextBlock x:Name=\"ApplicationNameTextBlock\" Style=\"{StaticResource ApplicationNameStyle}\" Text=\"Welcome to Fayde\" />\r\n                    </StackPanel>\r\n                </Border>\r\n                <Border x:Name=\"LinksBorder\" Grid.Row=\"1\" Margin=\"0,0,10,0\"\r\n                        Height=\"82\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\"\r\n                        BorderThickness=\"30,0,0,0\">\r\n                    <Border.BorderBrush>\r\n                        <SolidColorBrush Color=\"#FF119EDA\" />\r\n                    </Border.BorderBrush>\r\n                    <StackPanel Margin=\"65,0,0,0\" Orientation=\"Horizontal\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n                        <HyperlinkButton Style=\"{StaticResource LinkStyle}\" NavigateUri=\"/Home\" TargetName=\"ContentFrame\" Content=\"home\" />\r\n                        <HyperlinkButton Style=\"{StaticResource LinkStyle}\" NavigateUri=\"/Core\" TargetName=\"ContentFrame\" Content=\"core controls\" />\r\n                        <HyperlinkButton Style=\"{StaticResource LinkStyle}\" NavigateUri=\"/SDK\" TargetName=\"ContentFrame\" Content=\"sdk controls\" />\r\n                        <HyperlinkButton Style=\"{StaticResource LinkStyle}\" NavigateUri=\"/Toolkit\" TargetName=\"ContentFrame\" Content=\"toolkit controls\" />\r\n                    </StackPanel>\r\n                </Border>\r\n                <Border x:Name=\"ContentBorder\" Grid.Row=\"2\" Margin=\"45,-42,0,0\">\r\n                    <Frame x:Name=\"ContentFrame\">\r\n                        <Frame.UriMapper>\r\n                            <UriMapper>\r\n                                <UriMapping Uri=\"\" MappedUri=\"Demo/Views/Home.fayde\" />\r\n                                <UriMapping Uri=\"/{pageName}\" MappedUri=\"Demo/Views/{pageName}.fayde\" />\r\n                            </UriMapper>\r\n                        </Frame.UriMapper>\r\n                    </Frame>\r\n                </Border>\r\n            </Grid>\r\n        </Border>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Format/TestViewModel.ts",
    "content": "class TestViewModel extends Fayde.MVVM.ViewModelBase {\r\n    private _Now: DateTime = DateTime.Now;\r\n\r\n    get Now(): DateTime {\r\n        return this._Now;\r\n    }\r\n    set Now(value: DateTime) {\r\n        this._Now = value;\r\n        this.OnPropertyChanged(\"Now\");\r\n    }\r\n}\r\nexport = TestViewModel;"
  },
  {
    "path": "testsite/Format/datetime.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:local=\"Format\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel>\r\n        <StackPanel.DataContext>\r\n            <local:TestViewModel />\r\n        </StackPanel.DataContext>\r\n        <TextBlock Text=\"{Binding Path=Now, StringFormat='{0: HH:mm:ss}'}\" />\r\n        <TextBlock Text=\"{Binding Path=Now, StringFormat='{0: dd MMM yyyy}'}\" />\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/FilteredViewModel.ts",
    "content": "import MVVM = Fayde.MVVM;\r\nimport RelayCommand = MVVM.RelayCommand;\r\nimport FilteredCollection = Fayde.Collections.FilteredCollection;\r\nimport DeepObservableCollection = Fayde.Collections.DeepObservableCollection;\r\nimport Item = require('./Item');\r\n\r\nclass FilteredViewModel extends MVVM.ViewModelBase {\r\n    ToggleEvenCommand: RelayCommand;\r\n    ToggleOddCommand: RelayCommand;\r\n    Items = new FilteredCollection<Item>();\r\n\r\n    private _Odd = true;\r\n    private _Even = true;\r\n\r\n    constructor () {\r\n        super();\r\n        var source = new DeepObservableCollection<Item>();\r\n        source.AddRange([\r\n            new Item(\"Item 0\"),\r\n            new Item(\"Item 1\"),\r\n            new Item(\"Item 2\"),\r\n            new Item(\"Item 3\"),\r\n            new Item(\"Item 4\"),\r\n            new Item(\"Item 5\"),\r\n            new Item(\"Item 6\"),\r\n            new Item(\"Item 7\"),\r\n            new Item(\"Item 8\"),\r\n            new Item(\"Item 9\"),\r\n            new Item(\"Item 10\")\r\n        ]);\r\n\r\n        this.Items = new FilteredCollection<Item>((item, index) => this.FilterItem(item, index), source);\r\n\r\n        this.ToggleEvenCommand = new RelayCommand((par) => this.ToggleEven());\r\n        this.ToggleOddCommand = new RelayCommand((par) => this.ToggleOdd());\r\n    }\r\n\r\n    ToggleOdd () {\r\n        this._Odd = !this._Odd;\r\n        this.Items.Update();\r\n    }\r\n\r\n    ToggleEven () {\r\n        this._Even = !this._Even;\r\n        this.Items.Update();\r\n    }\r\n\r\n    FilterItem (item: Item, index: number): boolean {\r\n        return ((index % 2 === 0) ? this._Even : this._Odd) === true;\r\n    }\r\n}\r\nexport = FilteredViewModel;"
  },
  {
    "path": "testsite/IssueTests/Issue92ViewModel.ts",
    "content": "class Issue92ViewModel extends Fayde.MVVM.ViewModelBase {\r\n    constructor() {\r\n        super();\r\n    }\r\n\r\n    Loaded(e: Fayde.IEventBindingArgs<nullstone.IEventArgs>) {\r\n        // ------------- Test 1 --------------\r\n        // Setting colors using #ff000000 or name notation fails\r\n        this.SetProperty(\"tb0\", \"Text\", \"Setting brush using #ff000000 notation fails.  See the javascript console\");\r\n        this.SetProperty(\"tb0\", \"Foreground\", \"#ffff0000\");\r\n        this.SetProperty(\"border0\", \"Background\", \"#fff0f0ff\");\r\n        this.SetProperty(\"border0\", \"Background\", \"Green\");\r\n        this.SetProperty(\"border0\", \"Background\", Fayde.Media.SolidColorBrush.FromColor(Color.KnownColors.Wheat));\r\n        this.SetProperty(\"tb0\", \"Foreground\", Fayde.Media.SolidColorBrush.FromColor(Color.KnownColors.Blue));\r\n\r\n        // ------------- Test 2 --------------\r\n        // Setting the width of the border to zero causes a busy loop or a render failure.\r\n        // If Height or Width is set to zero, the Border appears not to clip.\r\n        this.SetProperty(\"tb1\", \"Text\", \"Setting the padding, margin and width to zero causes a busy loop or a render failure.\\nUncomment Padding, Margin, Height and Width setting in MainViewModel.ts to see this.\\nAlso, Border is not clipping its child when width or height is zero.\\nTry uncommenting different blocks of code in MainViewModel.ts\");\r\n        // Uncomment the following four lines to see a render failure\r\n        //this.SetProperty(\"border1\", \"Padding\", \"0,0,0,0\");\r\n        //this.SetProperty(\"border1\", \"Margin\", \"0,0,0,0\");\r\n        //this.SetProperty(\"border1\", \"Width\", 0);\r\n        //this.SetProperty(\"border1\", \"Height\", 0);\r\n\r\n        // Or uncomment the next two lines to generate a busy loop.\r\n        //this.SetProperty(\"tb1\", \"TextWrapping\", true);\r\n        //this.SetProperty(\"border1\", \"Width\", 0);\r\n\r\n        // Or uncomment the next line to see a border clipping failure\r\n        //this.SetProperty(\"border1\", \"Width\", 0);\r\n\r\n        // ------------- Test 3 --------------\r\n        // Setting the BorderThickness or CornerRadius causes the Background to be ignored\r\n        this.SetProperty(\"tb2\", \"Text\", \"Setting BorderThickness or CornerRadius causes background to be ignored. Background here should be Green.\\nComment settings for BorderThickness and CornerRadius to see Green.\");\r\n        this.SetProperty(\"border2\", \"Background\", Fayde.Media.SolidColorBrush.FromColor(Color.KnownColors.LightGreen));\r\n        this.SetProperty(\"border2\", \"BorderThickness\", \"0,0,0,0\");\r\n        this.SetProperty(\"border2\", \"CornerRadius\", \"0,0,0,0\");\r\n    }\r\n\r\n    SetProperty(elementName: string, propertyName: string, value : any) {\r\n        try {\r\n            var root = Fayde.Application.Current;\r\n            var element = <Fayde.FrameworkElement>root.FindName(elementName);\r\n            console.log (\"Setting \" + elementName + \".\" + propertyName + \" = \" + value);\r\n            var propd = DependencyProperty.GetDependencyProperty(element.constructor, propertyName);\r\n            element.SetValue(propd, nullstone.convertAnyToType(value, <any>propd.GetTargetType()));\r\n            //element[propertyName] = value;\r\n        } catch (e) {\r\n            console.log (\"Failed to set \" + elementName + \".\" + propertyName + \": \" + e);\r\n        }\r\n    }\r\n\r\n}\r\nexport = Issue92ViewModel;"
  },
  {
    "path": "testsite/IssueTests/Item.ts",
    "content": "class Item extends Fayde.MVVM.ObservableObject {\r\n    Display: string;\r\n    Visible: boolean;\r\n\r\n    constructor (display: string) {\r\n        super();\r\n        this.Display = display;\r\n        this.Visible = true;\r\n    }\r\n}\r\nFayde.MVVM.NotifyProperties(Item, [\"Display\", \"Visible\"]);\r\nexport = Item;\r\n"
  },
  {
    "path": "testsite/IssueTests/ListBoxManagerViewModel.ts",
    "content": "import RelayCommand = Fayde.MVVM.RelayCommand;\r\nimport ObservableCollection = Fayde.Collections.ObservableCollection;\r\nimport Item = require('./Item');\r\n\r\nclass ListBoxManagerViewModel extends Fayde.MVVM.ViewModelBase {\r\n    HideCommand: RelayCommand;\r\n    RemoveCommand: RelayCommand;\r\n    Items = new ObservableCollection<Item>();\r\n\r\n    constructor () {\r\n        super();\r\n        this.Items.AddRange([\r\n            new Item(\"Item 1\"),\r\n            new Item(\"Item 2\"),\r\n            new Item(\"Item 3\"),\r\n            new Item(\"Item 4\"),\r\n            new Item(\"Item 5\"),\r\n            new Item(\"Item 6\"),\r\n            new Item(\"Item 7\"),\r\n            new Item(\"Item 8\"),\r\n            new Item(\"Item 9\"),\r\n            new Item(\"Item 10\")\r\n        ]);\r\n        this.RemoveCommand = new RelayCommand((par) => {\r\n            this.Items.Remove(par);\r\n        });\r\n        this.HideCommand = new RelayCommand((par) => {\r\n            par.Visible = false;\r\n        });\r\n    }\r\n}\r\nexport = ListBoxManagerViewModel;"
  },
  {
    "path": "testsite/IssueTests/TabIssueViewModel.ts",
    "content": "class TabIssueViewModel extends Fayde.MVVM.ViewModelBase {\r\n    UserName: string = \"\";\r\n    Password: string = \"\";\r\n\r\n    constructor () {\r\n        super();\r\n    }\r\n}\r\nFayde.MVVM.AutoModel(TabIssueViewModel)\r\n    .Notify(\"UserName\", \"PasswordText\")\r\n    .Validate(\"PasswordText\", (value, prop, ent) => {\r\n        if (!value || value.Length <= 7)\r\n            return [\"Enter a valid password\"];\r\n        return null;\r\n    })\r\n    .Validate(\"UserName\", (value, prop, ent) => {\r\n        if (!value || value.indexOf(\"@\") <= 1)\r\n            return [\"Enter a valid username\"];\r\n\r\n        return null;\r\n    })\r\n    .Finish();\r\n\r\nexport = TabIssueViewModel;"
  },
  {
    "path": "testsite/IssueTests/TextViewModel.ts",
    "content": "class TextViewModel extends Fayde.MVVM.ViewModelBase {\r\n    OnTextChanged(args: Fayde.IEventBindingArgs<Fayde.RoutedEventArgs>) {\r\n        var tb = <Fayde.Controls.TextBox>args.sender;\r\n        console.log(\"Text Changed\", tb.Text);\r\n    }\r\n}\r\nexport = TextViewModel;"
  },
  {
    "path": "testsite/IssueTests/dropshadowblur.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel>\r\n        <Border Width=\"200\" Height=\"100\" Background=\"Green\" Margin=\"20\">\r\n            <Border.Effect>\r\n                <DropShadowEffect BlurRadius=\"20\" ShadowDepth=\"20\" Color=\"Black\" />\r\n            </Border.Effect>\r\n        </Border>\r\n        <Border Width=\"200\" Height=\"100\" Background=\"Blue\"  Margin=\"20\">\r\n            <Border.Effect>\r\n                <DropShadowEffect BlurRadius=\"10\" ShadowDepth=\"20\" Color=\"Black\" />\r\n            </Border.Effect>\r\n        </Border>\r\n        <Border Width=\"200\" Height=\"100\" Background=\"Red\"  Margin=\"20\">\r\n            <Border.Effect>\r\n                <DropShadowEffect BlurRadius=\"0\" ShadowDepth=\"20\" Color=\"Black\" />\r\n            </Border.Effect>\r\n        </Border>\r\n        <Image Grid.Column=\"0\" Margin=\"-20, 0, 0, 0\" Width=\"200\" Source=\"Images/calvin_johnson.png\">\r\n            <Image.Effect>\r\n                <DropShadowEffect BlurRadius=\"20\" ShadowDepth=\"20\" Color=\"#2B2F33\"/>\r\n            </Image.Effect>\r\n        </Image>\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/filtereditemscontrol.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        xmlns:issuetests=\"IssueTests\"\r\n        ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <issuetests:FilteredViewModel/>\r\n        </Grid.DataContext>\r\n        <StackPanel VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\r\n            <StackPanel Orientation=\"Horizontal\">\r\n                <Button Content=\"Toggle Even\" Command=\"{Binding ToggleEvenCommand}\"/>\r\n                <Button Content=\"Toggle Odd\" Command=\"{Binding ToggleOddCommand}\"/>\r\n            </StackPanel>\r\n            <Border BorderThickness=\"1\" BorderBrush=\"Black\">\r\n                <ItemsControl ItemsSource=\"{Binding Items}\" DisplayMemberPath=\"Display\">\r\n                </ItemsControl>\r\n            </Border>\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/grid.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"*\"/>\r\n            <ColumnDefinition Width=\"*\"/>\r\n        </Grid.ColumnDefinitions>\r\n\r\n        <Grid Grid.Row=\"1\" Grid.Column=\"0\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition Width=\"100\"/>\r\n                <ColumnDefinition Width=\"Auto\"/>\r\n                <ColumnDefinition Width=\"100\"/>\r\n            </Grid.ColumnDefinitions>\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"100\"/>\r\n                <RowDefinition Height=\"Auto\"/>\r\n                <RowDefinition Height=\"100\"/>\r\n            </Grid.RowDefinitions>\r\n\r\n            <Rectangle Grid.Row=\"0\" Grid.Column=\"0\" Fill=\"Red\"/>\r\n            <Rectangle Grid.Row=\"0\" Grid.Column=\"2\" Fill=\"Green\"/>\r\n            <Rectangle Grid.Row=\"2\" Grid.Column=\"0\" Fill=\"Blue\"/>\r\n            <Rectangle Grid.Row=\"2\" Grid.Column=\"2\" Fill=\"Yellow\"/>\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\" Grid.Column=\"2\">\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"100\"/>\r\n                <RowDefinition Height=\"Auto\"/>\r\n                <RowDefinition Height=\"100\"/>\r\n                <RowDefinition Height=\"Auto\"/>\r\n                <RowDefinition Height=\"100\"/>\r\n            </Grid.RowDefinitions>\r\n\r\n            <Rectangle Grid.Row=\"0\" Fill=\"Red\"/>\r\n            <Rectangle Grid.Row=\"2\" Fill=\"Blue\"/>\r\n            <Rectangle Grid.Row=\"4\" Fill=\"Green\"/>\r\n        </Grid>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/imagebrushbg.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Border Height=\"100\" VerticalAlignment=\"Top\" BorderBrush=\"Black\" BorderThickness=\"1\">\r\n            <Border.Background>\r\n                <ImageBrush ImageSource=\"Images/footballfield.png\" AlignmentY=\"Bottom\" Stretch=\"Fill\" />\r\n            </Border.Background>\r\n        </Border>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/issue105.fap",
    "content": "<Application\n        xmlns=\"http://schemas.wsick.com/fayde\"\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\n        xmlns:vsm=\"http://schemas.wsick.com/fayde\"\n        xmlns:vms=\"ViewModels\"\n        ThemeName=\"Metro\">\n    <Application.Resources>\n        <Style TargetType=\"TextBox\" x:Key=\"InOutText\">\n            <Setter Property=\"IsReadOnly\" Value=\"True\"/>\n            <Setter Property=\"IsTabStop\" Value=\"True\"/>\n            <Setter Property=\"Background\" Value=\"Transparent\"/>\n\n            <Setter Property=\"Template\">\n                <Setter.Value>\n                    <ControlTemplate TargetType=\"TextBox\">\n                        <Border x:Name=\"MyBorder\" HorizontalAlignment=\"Stretch\"\n                                VerticalAlignment=\"Stretch\">\n                            <Grid x:Name=\"ContentElement\" Background=\"Orange\" VerticalAlignment=\"Center\"/>\n                            <vsm:VisualStateManager.VisualStateGroups>\n                                <vsm:VisualStateGroup x:Name=\"CommonStates\">\n                                    <vsm:VisualState x:Name=\"Normal\">\n                                        <Storyboard>\n                                            <ColorAnimation Storyboard.TargetName=\"ContentElement\"\n                                                            Storyboard.TargetProperty=\"(Panel.Background).Color\"\n                                                            To=\"Red\"\n                                                            Duration=\"0:0:0.25\"/>\n                                        </Storyboard>\n                                    </vsm:VisualState>\n                                    <vsm:VisualState x:Name=\"MouseOver\">\n                                        <Storyboard>\n                                            <ColorAnimation Storyboard.TargetName=\"ContentElement\"\n                                                            Storyboard.TargetProperty=\"(Panel.Background).Color\"\n                                                            To=\"Blue\"\n                                                            Duration=\"0:0:0.25\"/>\n                                        </Storyboard>\n                                    </vsm:VisualState>\n                                </vsm:VisualStateGroup>\n                            </vsm:VisualStateManager.VisualStateGroups>\n                        </Border>\n                    </ControlTemplate>\n                </Setter.Value>\n            </Setter>\n        </Style>\n    </Application.Resources>\n\n    <Grid x:Name=\"LayoutRoot\">\n        <Border>\n            <TextBox Text=\"abcdefgh\" MinWidth=\"100\"\n                     VerticalAlignment=\"Center\" Style=\"{StaticResource InOutText}\"/>\n        </Border>\n    </Grid>\n</Application>\n"
  },
  {
    "path": "testsite/IssueTests/issue109.fap",
    "content": "<Application\n        xmlns=\"http://schemas.wsick.com/fayde\"\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\n        xmlns:vsm=\"http://schemas.wsick.com/fayde\"\n        xmlns:vms=\"ViewModels\"\n        ThemeName=\"Metro\">\n    <Application.Resources>\n        <Style TargetType=\"Button\" x:Key=\"LightStyle\">\n            <Setter Property=\"Width\" Value=\"150\" />\n            <Setter Property=\"Height\" Value=\"150\" />\n            <Setter Property=\"Template\">\n                <Setter.Value>\n                    <ControlTemplate TargetType=\"Button\">\n                        <Grid x:Name=\"ControlRoot\" Background=\"Transparent\">\n                            <vsm:VisualStateManager.VisualStateGroups>\n                                <vsm:VisualStateGroup x:Name=\"LightStates\">\n                                    <vsm:VisualState x:Name=\"LightOn\"/>\n\n                                    <vsm:VisualState x:Name=\"LightFlashing\">\n                                        <Storyboard x:Name=\"LightFlashingStoryboard\" Duration=\"0:0:2.0\"\n                                                    AutoReverse=\"True\" RepeatBehavior=\"Forever\">\n                                            <DoubleAnimation From=\"0.5\" To=\"0.8\"\n                                                             Storyboard.TargetName=\"LastRectangleGradientStop\"\n                                                             Storyboard.TargetProperty=\"Offset\"/>\n                                            <DoubleAnimation From=\"1\" To=\"0\"\n                                                             Storyboard.TargetName=\"AnimatedEllipse\"\n                                                             Storyboard.TargetProperty=\"Opacity\"/>\n                                        </Storyboard>\n                                    </vsm:VisualState>\n\n                                    <vsm:VisualState x:Name=\"LightOff\">\n                                        <Storyboard x:Name=\"LightOffStoryboard\" AutoReverse=\"False\"\n                                                    FillBehavior=\"HoldEnd\">\n                                            <ColorAnimation To=\"#FF000000\" Duration=\"0:0:0.0\"\n                                                            Storyboard.TargetName=\"AnimatedEllipseBrush\"\n                                                            Storyboard.TargetProperty=\"Color\"/>\n                                        </Storyboard>\n                                    </vsm:VisualState>\n\n                                </vsm:VisualStateGroup>\n                            </vsm:VisualStateManager.VisualStateGroups>\n                            <Grid>\n                                <Ellipse Height=\"150\" Width=\"150\" HorizontalAlignment=\"Right\">\n                                    <Ellipse.Fill>\n                                        <LinearGradientBrush StartPoint=\"0,0\" EndPoint=\"0,1\">\n                                            <GradientStop Offset=\"0\" Color=\"White\"/>\n                                            <GradientStop Offset=\"1\" Color=\"Black\"/>\n                                            <GradientStop Color=\"#FF5A5959\" Offset=\"0.098\"/>\n                                            <GradientStop Color=\"#FF514F4F\" Offset=\"0.15\"/>\n                                            <GradientStop Color=\"#FFACABAB\" Offset=\"0.267\"/>\n                                        </LinearGradientBrush>\n                                    </Ellipse.Fill>\n                                </Ellipse>\n                                <Ellipse Height=\"145\" Width=\"145\" Margin=\"2.5,2.5,2.5,2.5\">\n                                    <Ellipse.Fill>\n                                        <LinearGradientBrush EndPoint=\"0,1\" StartPoint=\"0,0\">\n                                            <GradientStop Color=\"#FF4B4848\" Offset=\"0\"/>\n                                            <GradientStop Color=\"#FF969191\" Offset=\"1\"/>\n                                        </LinearGradientBrush>\n                                    </Ellipse.Fill>\n                                </Ellipse>\n                                <Rectangle x:Name=\"AnimatedRectangle\" Width=\"130\" Height=\"130\" RadiusX=\"75\" RadiusY=\"75\"\n                                           StrokeThickness=\"2\" Margin=\"0,0,10,10\"\n                                           HorizontalAlignment=\"Right\" VerticalAlignment=\"Bottom\">\n                                    <Rectangle.Fill>\n                                        <RadialGradientBrush GradientOrigin=\"0.5,0.5\">\n                                            <GradientStop Color=\"Yellow\" Offset=\"0\"/>\n                                            <GradientStop Color=\"Orange\" Offset=\"0.05\"/>\n                                            <GradientStop Color=\"Red\" Offset=\"0.25\"/>\n                                            <GradientStop x:Name=\"LastRectangleGradientStop\" Color=\"Black\"\n                                                          Offset=\"0.7\"/>\n                                        </RadialGradientBrush>\n                                    </Rectangle.Fill>\n                                    <Rectangle.Stroke>\n                                        <RadialGradientBrush GradientOrigin=\"0.5,0.5\">\n                                            <GradientStop Color=\"DarkSlateGray\" Offset=\"0.9\"/>\n                                            <GradientStop Color=\"Silver\" Offset=\"0.9\"/>\n                                            <GradientStop Color=\"#FF171515\" Offset=\"1.0\"/>\n                                        </RadialGradientBrush>\n                                    </Rectangle.Stroke>\n                                </Rectangle>\n                                <Ellipse x:Name=\"AnimatedEllipse\" Height=\"126\" Width=\"126\" Margin=\"0,0,12,12\"\n                                         HorizontalAlignment=\"Right\" VerticalAlignment=\"Bottom\">\n                                    <Ellipse.Fill>\n                                        <SolidColorBrush x:Name=\"AnimatedEllipseBrush\" Color=\"#20000000\"/>\n                                    </Ellipse.Fill>\n                                </Ellipse>\n\n                                <!-- Reflections on Glass Surface -->\n                                <Path x:Name=\"GlassReflection11\" Stretch=\"Fill\" Fill=\"#18FFFFFF\"\n                                      Data=\"F1 M73.513275,11.114881 C80.822575,11.114881 93.737426,12.633565 101.72215,16.667828 L100.85418,18.663431 C91.480155,14.758991 79.748782,13.631041 73.339682,13.631041 66.339982,13.631041 55.372296,15.887143 47.560595,19.530563 L46.519347,17.622254 C53.028732,14.065113 64.981175,11.114881 73.513275,11.114881 z\"\n                                      Height=\"7.348\" Margin=\"50.682,15.761,51.136,0\" VerticalAlignment=\"Top\"/>\n\n                                <Path x:Name=\"GlassReflection21\" Stretch=\"Fill\" Fill=\"#8DFFFFFF\"\n                                      Data=\"F1 M19.4206,49.9744 C19.3413,50.0273 17.4649,48.5473 17.7292,47.9658 20.2517,42.416 25.5294,33.4322 31.6565,28.2482 L34.80785,32.22886 C27.704517,37.267671 21.0064,46.5915 19.4206,49.9744 z\"\n                                      Width=\"14.929\" Height=\"18.973\" HorizontalAlignment=\"Left\"\n                                      Margin=\"24.623,36.324,0,0\" VerticalAlignment=\"Top\"/>\n                                <Path x:Name=\"GlassReflection22\" Stretch=\"Fill\" Fill=\"#B3FFFFFF\"\n                                      Data=\"F1 M 75.4166,11.5C 82.7259,11.5 90.142,13.6747 96.2188,15.6875L 94.3438,21.7292C 88.8547,20.0514 81.2529,18.4792 74.8438,18.4792C 67.8441,18.4792 60.1394,20.144 54.2188,22.2292L 52.0788,15.9034C 59.06,13.1583 66.8845,11.5 75.4166,11.5 Z \"\n                                      Height=\"9.369\" Margin=\"54.627,21.7,56.847,0\" VerticalAlignment=\"Top\"/>\n                                <Path x:Name=\"GlassReflection23\" Stretch=\"Fill\" Fill=\"#8DFFFFFF\"\n                                      Data=\"F1 M135.135,48.0071 C135.135,48.0071 133.274,49.4546 133.205,49.3856 131.344,46.4218 125.10277,37.924005 117.56577,33.106505 L120.514,28.4059 C126.783,33.5298 133.55,42.2173 135.135,48.0071 z\"\n                                      Width=\"15.336\" Height=\"18.322\" HorizontalAlignment=\"Right\"\n                                      Margin=\"0,36.462,22.879,0\" VerticalAlignment=\"Top\"/>\n\n                                <Path x:Name=\"GlassReflection31\" Stretch=\"Fill\" Fill=\"#67FFFFFF\"\n                                      Data=\"F1 M 41.3021,45.6875C 41.1543,45.4859 39.5365,46.3724 34.6771,48.1875L 29.8021,45.1875C 33.3021,42.0625 36.3021,41.1875 36.3021,41.0625\"\n                                      Width=\"10.037\" Height=\"6.222\" HorizontalAlignment=\"Left\"\n                                      Margin=\"35.183,47.513,0,0\" VerticalAlignment=\"Top\"/>\n                                <Path x:Name=\"GlassReflection32\" Stretch=\"Fill\" Fill=\"#67FFFFFF\"\n                                      Data=\"F1 M 79.6146,31.9583C 79.6146,31.7589 69.369,31.2892 61.3021,32.7083L 60.6621,28.7345C 70.0514,27.0358 79.7188,27.7978 79.8438,27.8975\"\n                                      Height=\"4.425\" Margin=\"62.118,35.794,71.139,0\" VerticalAlignment=\"Top\"/>\n                                <Path x:Name=\"GlassReflection33\" Stretch=\"Fill\" Fill=\"#67FFFFFF\"\n                                      Data=\"F1 M 119.854,42.8865C 119.722,42.7074 118.197,43.6637 115.31,46.4396L 108.537,42.6644C 111.645,39.8885 114.31,39.1113 114.31,39.0002\"\n                                      Width=\"9.878\" Height=\"6.497\" HorizontalAlignment=\"Right\"\n                                      Margin=\"0,45.713,36.217,0\" VerticalAlignment=\"Top\"/>\n\n                                <Path x:Name=\"GlassReflection41\" Stretch=\"Fill\" Fill=\"#4DFFFFFF\"\n                                      Data=\"F1 M 58.41,58.2115C 58.3384,58.1033 57.5853,58.554 55.3146,59.4598L 52.9888,57.8206C 54.6061,56.2075 56.0104,55.7781 56.0091,55.712\"\n                                      Width=\"4.732\" Height=\"3.273\" HorizontalAlignment=\"Left\" Margin=\"55.421,60.306,0,0\"\n                                      VerticalAlignment=\"Top\"/>\n                                <Path x:Name=\"GlassReflection42\" Stretch=\"Fill\" Fill=\"#4DFFFFFF\"\n                                      Data=\"F1 M 78.2572,53.6072C 78.2572,53.4972 71.5757,53.0193 68.084,53.9375L 67.2397,51.7575C 71.3569,50.5487 78.4784,51.2404 78.5521,51.2954\"\n                                      Height=\"2.523\" Margin=\"67.86,56.234,72.267,0\" VerticalAlignment=\"Top\"/>\n                                <Path x:Name=\"GlassReflection43\" Stretch=\"Fill\" Fill=\"#4DFFFFFF\"\n                                      Data=\"F1 M 93.8733,57.6169C 93.8069,57.5167 93.5912,57.9289 92.1249,59.4886L 88.6946,57.3789C 90.2736,55.8189 91.6254,55.3802 91.6255,55.318\"\n                                      Width=\"4.52\" Height=\"3.642\" HorizontalAlignment=\"Right\" Margin=\"0,59.962,58.894,0\"\n                                      VerticalAlignment=\"Top\"/>\n                                <Path x:Name=\"GlassReflection51\" Stretch=\"Fill\" Fill=\"#4DFFFFFF\"\n                                      Data=\"F1 M 80.6261,61.6314C 80.6261,61.5177 73.8057,61.0243 70.2414,61.9724L 69.3796,59.7214C 73.5823,58.4733 80.8518,59.1875 80.9271,59.2443\"\n                                      Height=\"2.604\" Margin=\"68.783,60.975,71.139,0\" VerticalAlignment=\"Top\"/>\n\n                                <Path x:Name=\"MetalReflection1\" Stretch=\"Fill\"\n                                      Data=\"F1 M72.551291,11.547777 C76.675498,11.645569 83.665941,11.734761 90.030663,13.313476 L90.123281,22.02957 C84.489409,20.748453 79.315223,20.093606 72.906123,20.093606 65.906423,20.093606 60.750901,20.795322 54.341024,22.423219 L54.414704,13.642125 C61.911611,11.838762 69.916053,11.485291 72.551291,11.547777 z\"\n                                      Height=\"9.503\" RenderTransformOrigin=\"0.5,0.5\" Width=\"31.23\"\n                                      HorizontalAlignment=\"Left\" Margin=\"-2.489,0,0,30.063\" VerticalAlignment=\"Bottom\">\n                                    <Path.RenderTransform>\n                                        <TransformGroup>\n                                            <ScaleTransform/>\n                                            <SkewTransform/>\n                                            <RotateTransform Angle=\"-125.73500000000001\"/>\n                                            <TranslateTransform X=\"7.2898730908178564\" Y=\"-0.1325903170362821\"/>\n                                        </TransformGroup>\n                                    </Path.RenderTransform>\n                                    <Path.Fill>\n                                        <LinearGradientBrush EndPoint=\"0,0\" StartPoint=\"1,0\">\n                                            <GradientStop Color=\"#FF7E7A7A\" Offset=\"0.139\"/>\n                                            <GradientStop Color=\"LightGray\" Offset=\"0.318\"/>\n                                            <GradientStop Color=\"#FFCACACA\" Offset=\"0.648\"/>\n                                            <GradientStop Color=\"#FF8B8686\" Offset=\"0.875\"/>\n                                        </LinearGradientBrush>\n                                    </Path.Fill>\n                                </Path>\n                                <Path x:Name=\"MetalReflection2\" Stretch=\"Fill\"\n                                      Data=\"F1 M72.551291,11.547777 C72.481308,11.488819 83.665941,11.734761 90.030663,13.313476 L90.123281,22.02957 C84.489409,20.748453 78.404819,20.089309 72.906123,20.093606 67.403882,20.097906 60.771905,20.823555 54.362028,22.451452 L54.414704,13.642125 C61.911611,11.838762 72.567634,11.561545 72.551291,11.547777 z\"\n                                      Height=\"9.529\" RenderTransformOrigin=\"0.5,0.5\" Margin=\"52.633,0,66.155,2.384\"\n                                      VerticalAlignment=\"Bottom\">\n                                    <Path.RenderTransform>\n                                        <TransformGroup>\n                                            <ScaleTransform/>\n                                            <SkewTransform/>\n                                            <RotateTransform Angle=\"-179.78200000000004\"/>\n                                            <TranslateTransform X=\"7.3142779141860217\" Y=\"-0.14608523592449529\"/>\n                                        </TransformGroup>\n                                    </Path.RenderTransform>\n                                    <Path.Fill>\n                                        <LinearGradientBrush EndPoint=\"0,0\" StartPoint=\"1,0\">\n                                            <GradientStop Color=\"#FF938E8E\" Offset=\"0\"/>\n                                            <GradientStop Color=\"LightGray\" Offset=\"0.139\"/>\n                                            <GradientStop Color=\"#FFCACACA\" Offset=\"0.868\"/>\n                                            <GradientStop Color=\"#FF938E8E\" Offset=\"1\"/>\n                                        </LinearGradientBrush>\n                                    </Path.Fill>\n                                </Path>\n                                <Path x:Name=\"MetalReflection3\" Stretch=\"Fill\"\n                                      Data=\"F1 M72.817867,11.499552 C78.584606,11.592788 83.665941,11.734761 90.030663,13.313476 L90.123281,22.02957 C84.489409,20.748453 79.315223,20.093606 72.906123,20.093606 65.906423,20.093606 60.780418,20.605079 54.370541,22.232976 L54.442711,13.502591 C61.939618,11.699228 70.182233,11.456939 72.817867,11.499552 z\"\n                                      Height=\"9.378\" RenderTransformOrigin=\"0.5,0.5\" Width=\"31.205\"\n                                      HorizontalAlignment=\"Right\" Margin=\"0,0,13.319,28.672\" VerticalAlignment=\"Bottom\">\n                                    <Path.RenderTransform>\n                                        <TransformGroup>\n                                            <ScaleTransform/>\n                                            <SkewTransform/>\n                                            <RotateTransform Angle=\"128.27200000000002\"/>\n                                            <TranslateTransform X=\"7.37882483268352\" Y=\"-0.026378358317671768\"/>\n                                        </TransformGroup>\n                                    </Path.RenderTransform>\n                                    <Path.Fill>\n                                        <LinearGradientBrush EndPoint=\"0,0\" StartPoint=\"1,0\">\n                                            <GradientStop Color=\"#FF8C8888\" Offset=\"0.139\"/>\n                                            <GradientStop Color=\"LightGray\" Offset=\"0.318\"/>\n                                            <GradientStop Color=\"#FFCACACA\" Offset=\"0.648\"/>\n                                            <GradientStop Color=\"#FF7F7B7B\" Offset=\"0.875\"/>\n                                        </LinearGradientBrush>\n                                    </Path.Fill>\n                                </Path>\n                            </Grid>\n                        </Grid>\n                    </ControlTemplate>\n                </Setter.Value>\n            </Setter>\n        </Style>\n    </Application.Resources>\n\n    <Grid x:Name=\"LayoutRoot\">\n        <Button x:Name=\"LightButton\" Style=\"{StaticResource LightStyle}\"\n                Margin=\"200, 200\"\n                HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" />\n    </Grid>\n</Application>\n"
  },
  {
    "path": "testsite/IssueTests/issue11.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid Background=\"Silver\">\r\n        <TextBlock FontSize=\"40\" Foreground=\"White\" Text=\"Testing Foreground and FontSize\" />\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/issue120.fap",
    "content": "<Application\n        xmlns=\"http://schemas.wsick.com/fayde\"\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\n        xmlns:vsm=\"http://schemas.wsick.com/fayde\"\n        xmlns:vms=\"ViewModels\"\n        ThemeName=\"Metro\">\n    <Application.Resources>\n    </Application.Resources>\n\n    <Grid x:Name=\"LayoutRoot\">\n        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Margin=\"200,200,0,0\" Width=\"500\" Height=\"500\">\n            <Border Width=\"200\" Height=\"200\" CornerRadius=\"10\" BorderBrush=\"Black\" BorderThickness=\"4\" Background=\"Orange\">\n                <Border.RenderTransform>\n                    <TransformGroup>\n                        <RotateTransform Angle=\"120\" />\n                        <TranslateTransform X=\"50\" Y=\"50\" />\n                    </TransformGroup>\n                </Border.RenderTransform>\n            </Border>\n        </Grid>\n    </Grid>\n</Application>\n"
  },
  {
    "path": "testsite/IssueTests/issue138.fap",
    "content": "<Application\n        xmlns=\"http://schemas.wsick.com/fayde\"\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\n        xmlns:vsm=\"http://schemas.wsick.com/fayde\"\n        xmlns:vms=\"ViewModels\"\n        ThemeName=\"Metro\">\n    <Application.Resources>\n    </Application.Resources>\n\n    <Grid x:Name=\"LayoutRoot\">\n        <ComboBox HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\n            <ComboBoxItem>\n                <ComboBoxItem.Content>\n                    <CheckBox Content=\"Test 1\" IsChecked=\"true\" />\n                </ComboBoxItem.Content>\n            </ComboBoxItem>\n            <ComboBoxItem>\n                <ComboBoxItem.Content>\n                    <CheckBox Content=\"Test 2\" IsChecked=\"{x:Null}\" />\n                </ComboBoxItem.Content>\n            </ComboBoxItem>\n        </ComboBox>\n    </Grid>\n</Application>\n"
  },
  {
    "path": "testsite/IssueTests/issue154.fap",
    "content": "<Application\n        xmlns=\"http://schemas.wsick.com/fayde\"\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\n        xmlns:vsm=\"http://schemas.wsick.com/fayde\"\n        xmlns:vms=\"ViewModels\"\n        ThemeName=\"Metro\">\n    <Application.Resources>\n    </Application.Resources>\n\n    <StackPanel x:Name=\"LayoutRoot\">\n        <Border BorderThickness=\"1\" BorderBrush=\"Black\" Width=\"250\">\n            <TextBlock HorizontalAlignment=\"Left\" VerticalAlignment=\"Bottom\" TextTrimming=\"WordEllipsis\">TextTrimming WordEllipsis has been turned on for this text block.</TextBlock>\n        </Border>\n        <Border BorderThickness=\"1\" BorderBrush=\"Black\" Width=\"250\">\n            <TextBlock HorizontalAlignment=\"Left\" VerticalAlignment=\"Bottom\" TextTrimming=\"CharacterEllipsis\">TextTrimming CharacterEllipsis has been turned on for this text block.</TextBlock>\n        </Border>\n        <Border BorderThickness=\"1\" BorderBrush=\"Black\" Width=\"150\">\n            <TextBlock HorizontalAlignment=\"Left\" VerticalAlignment=\"Bottom\" TextTrimming=\"CharacterEllipsis\">\nTextTrimming CharacterEllipsis has been\nturned on for this text block with new lines to\ntest edge cases.</TextBlock>\n        </Border>\n    </StackPanel>\n</Application>\n"
  },
  {
    "path": "testsite/IssueTests/issue161.fap",
    "content": "<Application\n        xmlns=\"http://schemas.wsick.com/fayde\"\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\n        xmlns:vsm=\"http://schemas.wsick.com/fayde\"\n        xmlns:local=\"IssueTests\"\n        ThemeName=\"Metro\">\n    <Application.Resources>\n    </Application.Resources>\n    <Grid>\n        <Grid.DataContext>\n            <local:TextViewModel />\n        </Grid.DataContext>\n        <TextBox Height=\"20\" Width=\"200\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" TextChanged=\"{EventBinding OnTextChanged}\" />\n    </Grid>\n</Application>\n"
  },
  {
    "path": "testsite/IssueTests/issue173.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n    </Application.Resources>\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <TextBox AcceptsReturn=\"false\"/>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/issue177.fap",
    "content": "<Application\n        xmlns=\"http://schemas.wsick.com/fayde\"\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\n        xmlns:vsm=\"http://schemas.wsick.com/fayde\"\n        xmlns:vms=\"ViewModels\"\n        ThemeName=\"Metro\">\n    <Application.Resources>\n    </Application.Resources>\n\n    <Grid x:Name=\"LayoutRoot\" ColumnDefinitions=\"* * *\" RowDefinitions=\"auto *\">\n        <TextBlock Text=\"Single\"   Grid.Row=\"0\" Grid.Column=\"0\" />\n        <TextBlock Text=\"Extended\" Grid.Row=\"0\" Grid.Column=\"1\" />\n        <TextBlock Text=\"Multiple\" Grid.Row=\"0\" Grid.Column=\"2\" />\n\n        <ListBox Grid.Row=\"1\" Grid.Column=\"0\" SelectionMode=\"Single\" VerticalAlignment=\"Top\">\n            <ListBoxItem Content=\"Text 1\" />\n            <ListBoxItem Content=\"Text 2\" />\n            <ListBoxItem Content=\"Text 3\" />\n            <ListBoxItem Content=\"Text 4\" />\n            <ListBoxItem Content=\"Text 5\" />\n            <ListBoxItem Content=\"Text 6\" />\n            <ListBoxItem Content=\"Text 7\" />\n            <ListBoxItem Content=\"Text 8\" />\n            <ListBoxItem Content=\"Text 9\" />\n            <ListBoxItem Content=\"Text 10\" />\n        </ListBox>\n        <ListBox Grid.Row=\"1\" Grid.Column=\"1\" SelectionMode=\"Extended\" VerticalAlignment=\"Top\">\n            <ListBoxItem Content=\"Text 1\" />\n            <ListBoxItem Content=\"Text 2\" />\n            <ListBoxItem Content=\"Text 3\" />\n            <ListBoxItem Content=\"Text 4\" />\n            <ListBoxItem Content=\"Text 5\" />\n            <ListBoxItem Content=\"Text 6\" />\n            <ListBoxItem Content=\"Text 7\" />\n            <ListBoxItem Content=\"Text 8\" />\n            <ListBoxItem Content=\"Text 9\" />\n            <ListBoxItem Content=\"Text 10\" />\n        </ListBox>\n        <ListBox Grid.Row=\"1\" Grid.Column=\"2\" SelectionMode=\"Multiple\" VerticalAlignment=\"Top\">\n            <ListBoxItem Content=\"Text 1\" />\n            <ListBoxItem Content=\"Text 2\" />\n            <ListBoxItem Content=\"Text 3\" />\n            <ListBoxItem Content=\"Text 4\" />\n            <ListBoxItem Content=\"Text 5\" />\n            <ListBoxItem Content=\"Text 6\" />\n            <ListBoxItem Content=\"Text 7\" />\n            <ListBoxItem Content=\"Text 8\" />\n            <ListBoxItem Content=\"Text 9\" />\n            <ListBoxItem Content=\"Text 10\" />\n        </ListBox>\n    </Grid>\n</Application>\n"
  },
  {
    "path": "testsite/IssueTests/issue83.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n    </Application.Resources>\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition />\r\n            <RowDefinition />\r\n        </Grid.RowDefinitions>\r\n        <TextBlock TextWrapping=\"Wrap\" Text=\"This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. \">\r\n        </TextBlock>\r\n        <TextBox Grid.Row=\"1\" TextWrapping=\"Wrap\" Text=\"This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. This is a huge wall of text with wrapping. \">\r\n        </TextBox>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/issue92.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        xmlns:local=\"IssueTests\"\r\n        ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n    </Application.Resources>\r\n    <Grid x:Name=\"LayoutRoot\" Loaded=\"{EventBinding Loaded}\">\r\n        <Grid.DataContext>\r\n            <local:Issue92ViewModel/>\r\n        </Grid.DataContext>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"*\"/>\r\n            <RowDefinition Height=\"*\"/>\r\n            <RowDefinition Height=\"*\"/>\r\n        </Grid.RowDefinitions>\r\n\r\n        <Border Grid.Row=\"0\" x:Name=\"border0\">\r\n            <TextBlock x:Name=\"tb0\" Text=\"Welcome to Fayde!\" />\r\n        </Border>\r\n\r\n        <Border Grid.Row=\"1\" x:Name=\"border1\">\r\n            <TextBlock x:Name=\"tb1\" Text=\"Welcome to Fayde!\" />\r\n        </Border>\r\n\r\n        <Border Grid.Row=\"2\" x:Name=\"border2\">\r\n            <TextBlock x:Name=\"tb2\" Text=\"Welcome to Fayde!\" />\r\n        </Border>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/listbox.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:issuetests=\"IssueTests\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <issuetests:ListBoxManagerViewModel />\r\n        </Grid.DataContext>\r\n        <StackPanel VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\">\r\n            <StackPanel Orientation=\"Horizontal\">\r\n                <Button Content=\"Remove\" Command=\"{Binding RemoveCommand}\" CommandParameter=\"{Binding ElementName=MyListBox, Path=SelectedItem}\" />\r\n                <Button Content=\"Hide\" Command=\"{Binding HideCommand}\" CommandParameter=\"{Binding ElementName=MyListBox, Path=SelectedItem}\" />\r\n            </StackPanel>\r\n            <ListBox x:Name=\"MyListBox\" Width=\"200\" Height=\"100\" ItemsSource=\"{Binding Items}\">\r\n                <ListBox.ItemTemplate>\r\n                    <DataTemplate>\r\n                        <TextBlock Text=\"{Binding Display}\" Visibility=\"{Binding Visible}\" />\r\n                    </DataTemplate>\r\n                </ListBox.ItemTemplate>\r\n            </ListBox>\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/path-extreme.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Path Fill=\"#224466\"\r\n              Data=\"M28.359835,24.709L34.154998,30.052877 27.489999,31.461998z M21.8047,9.3869993L35.634799,9.3869993 30.5925,14.785472 22.157498,14.785472 21.7942,26.555977C21.7942,26.555977,21.324199,34.340181,12.747299,33.399679L5.3957494,33.19948 5.3957494,66.641893C5.395749,67.386995,6.0026888,67.990496,6.7473091,67.990496L44.531299,67.990496C45.273398,67.990496,45.880099,67.386995,45.880099,66.641893L45.880099,26.531576 51.279998,21.086176 51.279998,66.641893C51.279998,70.368498,48.2578,73.386999,44.531299,73.386999L6.7473091,73.386999C3.020749,73.386999,-1.0840647E-06,70.368498,3.4106051E-13,66.641893L3.4106051E-13,32.391882 2.6718787,29.574478 2.674559,29.49638 16.676999,14.785472 16.637898,14.785472 12.894499,18.732675 16.816399,14.579372 16.872298,14.579372 16.996098,14.449471 17.007798,14.449471z M43.024932,5.7089984L52.443,14.399388 40.817794,27.000999 40.619792,25.005898 37.516936,23.951198 37.429824,21.838896 34.333331,21.018594 33.961013,18.635792 31.396998,18.307692z M49.488421,0.0016288757C49.906531,0.018204689,50.296157,0.1614809,50.599376,0.4401598L57.271087,6.5981958C58.080863,7.3442647,57.976867,8.7787952,57.033995,9.7973371L55.755431,11.184999 46.149001,2.3229232 47.428763,0.93428135C48.01562,0.298316,48.791575,-0.026000023,49.488421,0.0016288757z\">\r\n        </Path>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/IssueTests/tabissue.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        xmlns:issuetests=\"IssueTests\"\r\n        ThemeName=\"Metro\">\r\n\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <issuetests:TabIssueViewModel/>\r\n        </Grid.DataContext>\r\n\r\n        <Grid Grid.Column=\"1\"\r\n              Margin=\"0,0,10,0\">\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"Auto\"/>\r\n                <RowDefinition Height=\"Auto\"/>\r\n                <RowDefinition Height=\"Auto\"/>\r\n                <RowDefinition Height=\"Auto\"/>\r\n            </Grid.RowDefinitions>\r\n\r\n            <TextBlock Text=\"Username\"\r\n                       Margin=\"0,5\"\r\n                       Grid.Row=\"0\"\r\n                       VerticalAlignment=\"Top\"/>\r\n\r\n            <TextBox Text=\"{Binding Path=UserName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\"\r\n                     Grid.Row=\"1\"\r\n                     IsTabStop=\"true\"\r\n                     TabIndex=\"0\"\r\n                     Width=\"200\"\r\n                     Margin=\"0,5\"/>\r\n\r\n            <TextBlock Text=\"Password\"\r\n                       Grid.Row=\"2\"\r\n                       VerticalAlignment=\"Top\"\r\n                       Margin=\"0,5\"/>\r\n\r\n            <PasswordBox Password=\"{Binding Path=PasswordText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\"\r\n                         IsTabStop=\"true\"\r\n                         Grid.Row=\"3\"\r\n                         TabIndex=\"2\"\r\n                         Width=\"200\"\r\n                         Margin=\"0,5\"/>\r\n        </Grid>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Media/ImageSetSourceViewModel.ts",
    "content": "class ImageSetSourceViewModel extends Fayde.MVVM.ViewModelBase {\r\n    SomeBuffer: ArrayBuffer = null;\r\n    AnotherBuffer: ArrayBuffer = null;\r\n\r\n    constructor () {\r\n        super();\r\n        this.Load();\r\n    }\r\n\r\n    Load () {\r\n        var req = new XMLHttpRequest();\r\n        req.overrideMimeType('text/plain; charset=x-user-defined');\r\n        req.open('GET', 'Images/testing.jpg', true);\r\n        req.responseType = 'arraybuffer';\r\n        req.onload = () => this.SomeBuffer = req.response;\r\n        req.send(null);\r\n\r\n        var req2 = new XMLHttpRequest();\r\n        req2.overrideMimeType('text/plain; charset=x-user-defined');\r\n        req2.open('GET', 'Images/twitter.png', true);\r\n        req2.responseType = 'arraybuffer';\r\n        req2.onload = () => this.AnotherBuffer = req2.response;\r\n        req2.send(null);\r\n    }\r\n}\r\nFayde.MVVM.NotifyProperties(ImageSetSourceViewModel, [\"SomeBuffer\", \"AnotherBuffer\"]);\r\nexport = ImageSetSourceViewModel;"
  },
  {
    "path": "testsite/Media/gradient-brush.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\" ShowGridLines=\"true\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"30\" />\r\n            <RowDefinition Height=\"200\" />\r\n            <RowDefinition Height=\"200\" />\r\n            <RowDefinition Height=\"200\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"150\" />\r\n            <ColumnDefinition Width=\"300\" />\r\n            <ColumnDefinition Width=\"300\" />\r\n        </Grid.ColumnDefinitions>\r\n\r\n        <TextBlock Grid.Column=\"0\" Text=\"Spread Method\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" />\r\n        <TextBlock Grid.Column=\"1\" Text=\"Linear\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" />\r\n        <TextBlock Grid.Column=\"2\" Text=\"Radial\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" />\r\n\r\n        <TextBlock Grid.Row=\"1\" Grid.Column=\"0\" Text=\"Pad\" VerticalAlignment=\"Center\" />\r\n        <Grid Grid.Row=\"1\" Grid.Column=\"1\" Margin=\"4\">\r\n            <Grid.Background>\r\n                <LinearGradientBrush SpreadMethod=\"Pad\" StartPoint=\"0.25,0\" EndPoint=\"0.75,0\">\r\n                    <GradientStop Offset=\"0.2\" Color=\"Red\" />\r\n                    <GradientStop Offset=\"0.3\" Color=\"Orange\" />\r\n                    <GradientStop Offset=\"0.4\" Color=\"Yellow\" />\r\n                    <GradientStop Offset=\"0.5\" Color=\"Green\" />\r\n                    <GradientStop Offset=\"0.6\" Color=\"Blue\" />\r\n                    <GradientStop Offset=\"0.7\" Color=\"Purple\" />\r\n                </LinearGradientBrush>\r\n            </Grid.Background>\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\" Grid.Column=\"2\" Margin=\"4\">\r\n            <Grid.Background>\r\n                <RadialGradientBrush SpreadMethod=\"Pad\" RadiusX=\"0.2\" RadiusY=\"0.2\" GradientOrigin=\"0.4,0.4\">\r\n                    <GradientStop Offset=\"0.2\" Color=\"Red\" />\r\n                    <GradientStop Offset=\"0.3\" Color=\"Orange\" />\r\n                    <GradientStop Offset=\"0.4\" Color=\"Yellow\" />\r\n                    <GradientStop Offset=\"0.5\" Color=\"Green\" />\r\n                    <GradientStop Offset=\"0.6\" Color=\"Blue\" />\r\n                    <GradientStop Offset=\"0.7\" Color=\"Purple\" />\r\n                </RadialGradientBrush>\r\n            </Grid.Background>\r\n        </Grid>\r\n\r\n\r\n        <TextBlock Grid.Row=\"2\" Grid.Column=\"0\" Text=\"Repeat\" VerticalAlignment=\"Center\" />\r\n        <Grid Grid.Row=\"2\" Grid.Column=\"1\" Margin=\"4\">\r\n            <Grid.Background>\r\n                <LinearGradientBrush SpreadMethod=\"Repeat\" StartPoint=\"0.25,0\" EndPoint=\"0.75,0\">\r\n                    <GradientStop Offset=\"0.2\" Color=\"Red\" />\r\n                    <GradientStop Offset=\"0.3\" Color=\"Orange\" />\r\n                    <GradientStop Offset=\"0.4\" Color=\"Yellow\" />\r\n                    <GradientStop Offset=\"0.5\" Color=\"Green\" />\r\n                    <GradientStop Offset=\"0.6\" Color=\"Blue\" />\r\n                    <GradientStop Offset=\"0.7\" Color=\"Purple\" />\r\n                </LinearGradientBrush>\r\n            </Grid.Background>\r\n        </Grid>\r\n        <Grid Grid.Row=\"2\" Grid.Column=\"2\" Margin=\"4\">\r\n            <Grid.Background>\r\n                <RadialGradientBrush SpreadMethod=\"Repeat\" RadiusX=\"0.2\" RadiusY=\"0.2\" GradientOrigin=\"0.4,0.4\">\r\n                    <GradientStop Offset=\"0.2\" Color=\"Red\" />\r\n                    <GradientStop Offset=\"0.3\" Color=\"Orange\" />\r\n                    <GradientStop Offset=\"0.4\" Color=\"Yellow\" />\r\n                    <GradientStop Offset=\"0.5\" Color=\"Green\" />\r\n                    <GradientStop Offset=\"0.6\" Color=\"Blue\" />\r\n                    <GradientStop Offset=\"0.7\" Color=\"Purple\" />\r\n                </RadialGradientBrush>\r\n            </Grid.Background>\r\n        </Grid>\r\n\r\n\r\n        <TextBlock Grid.Row=\"3\" Grid.Column=\"0\" Text=\"Reflect\" VerticalAlignment=\"Center\" />\r\n        <Grid Grid.Row=\"3\" Grid.Column=\"1\" Margin=\"4\">\r\n            <Grid.Background>\r\n                <LinearGradientBrush SpreadMethod=\"Reflect\" StartPoint=\"0.25,0\" EndPoint=\"0.75,0\">\r\n                    <GradientStop Offset=\"0.2\" Color=\"Red\" />\r\n                    <GradientStop Offset=\"0.3\" Color=\"Orange\" />\r\n                    <GradientStop Offset=\"0.4\" Color=\"Yellow\" />\r\n                    <GradientStop Offset=\"0.5\" Color=\"Green\" />\r\n                    <GradientStop Offset=\"0.6\" Color=\"Blue\" />\r\n                    <GradientStop Offset=\"0.7\" Color=\"Purple\" />\r\n                </LinearGradientBrush>\r\n            </Grid.Background>\r\n        </Grid>\r\n        <Grid Grid.Row=\"3\" Grid.Column=\"2\" Margin=\"4\">\r\n            <Grid.Background>\r\n                <RadialGradientBrush SpreadMethod=\"Reflect\" RadiusX=\"0.2\" RadiusY=\"0.2\" GradientOrigin=\"0.4,0.4\">\r\n                    <GradientStop Offset=\"0.2\" Color=\"Red\" />\r\n                    <GradientStop Offset=\"0.3\" Color=\"Orange\" />\r\n                    <GradientStop Offset=\"0.4\" Color=\"Yellow\" />\r\n                    <GradientStop Offset=\"0.5\" Color=\"Green\" />\r\n                    <GradientStop Offset=\"0.6\" Color=\"Blue\" />\r\n                    <GradientStop Offset=\"0.7\" Color=\"Purple\" />\r\n                </RadialGradientBrush>\r\n            </Grid.Background>\r\n        </Grid>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Media/image-setsource.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:media=\"Media\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <Grid.DataContext>\r\n            <media:ImageSetSourceViewModel />\r\n        </Grid.DataContext>\r\n        <StackPanel HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n            <Image Source=\"{Binding SomeBuffer}\" Width=\"200\" Height=\"200\" />\r\n            <Image Source=\"{Binding AnotherBuffer}\" Margin=\"20,0,0,0\" Width=\"20\" Height=\"20\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Media/image-stack.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel>\r\n        <Image Source=\"Images/testing.jpg\" />\r\n        <Image Source=\"Images/testing.jpg\" />\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Media/image-stretch.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid Background=\"AntiqueWhite\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition />\r\n            <RowDefinition />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid>\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"Auto\" />\r\n                <RowDefinition />\r\n            </Grid.RowDefinitions>\r\n            <TextBlock Text=\"Stretch: None\" />\r\n            <Image Grid.Row=\"1\" Source=\"Images/testing.jpg\" Stretch=\"None\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"1\">\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"Auto\" />\r\n                <RowDefinition />\r\n            </Grid.RowDefinitions>\r\n            <TextBlock Text=\"Stretch: Uniform\" />\r\n            <Image Grid.Row=\"1\" Source=\"Images/testing.jpg\" Stretch=\"Uniform\" />\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\">\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"Auto\" />\r\n                <RowDefinition />\r\n            </Grid.RowDefinitions>\r\n            <TextBlock Text=\"Stretch: UniformToFill\" />\r\n            <Image Grid.Row=\"1\" Source=\"Images/testing.jpg\" Stretch=\"UniformToFill\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"1\" Grid.Row=\"1\">\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition Height=\"Auto\" />\r\n                <RowDefinition />\r\n            </Grid.RowDefinitions>\r\n            <TextBlock Text=\"Stretch: Fill\" />\r\n            <Image Grid.Row=\"1\" Source=\"Images/testing.jpg\" Stretch=\"Fill\" />\r\n        </Grid>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Media/imagebrush.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"400\" />\r\n            <RowDefinition Height=\"400\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"400\" />\r\n            <ColumnDefinition Width=\"400\" />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid>\r\n            <Grid.Background>\r\n                <ImageBrush Stretch=\"None\" ImageSource=\"Images/tile-test.png\" />\r\n            </Grid.Background>\r\n        </Grid>\r\n        <Grid Grid.Column=\"1\">\r\n            <Grid.Background>\r\n                <ImageBrush Stretch=\"Fill\" ImageSource=\"Images/tile-test.png\" />\r\n            </Grid.Background>\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\">\r\n            <Grid.Background>\r\n                <ImageBrush Stretch=\"Uniform\" ImageSource=\"Images/tile-test.png\" />\r\n            </Grid.Background>\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\" Grid.Column=\"1\">\r\n            <Grid.Background>\r\n                <ImageBrush Stretch=\"UniformToFill\" ImageSource=\"Images/tile-test.png\" />\r\n            </Grid.Background>\r\n        </Grid>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Media/imaging.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"#FFFFFF00\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"400\" />\r\n            <ColumnDefinition Width=\"400\" />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"400\" />\r\n            <RowDefinition Height=\"400\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid>\r\n            <Image Stretch=\"None\" Source=\"Images/testing.jpg\" />\r\n            <TextBlock Foreground=\"#FFFFFFFF\" FontSize=\"18\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"None\" />\r\n        </Grid>\r\n        <Grid Grid.Column=\"1\">\r\n            <Image Stretch=\"Fill\" Source=\"Images/testing.jpg\" />\r\n            <TextBlock Foreground=\"#FFFFFFFF\" FontSize=\"18\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"Fill\" />\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\">\r\n            <Image Stretch=\"Uniform\" Source=\"Images/testing.jpg\" />\r\n            <TextBlock Foreground=\"#FFFFFFFF\" FontSize=\"18\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"Uniform\" />\r\n        </Grid>\r\n        <Grid Grid.Row=\"1\" Grid.Column=\"1\">\r\n            <Image Stretch=\"UniformToFill\" Source=\"Images/testing.jpg\" />\r\n            <TextBlock Foreground=\"#FFFFFFFF\" FontSize=\"18\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Text=\"UniformToFill\" />\r\n        </Grid>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Media/mediaelement-basic.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <MediaElement AutoPlay=\"true\" Source=\"videos/test_movie.mp4\" />\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Media/mediaelement-stack.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel>\r\n        <MediaElement Source=\"videos/test_movie.mp4\" />\r\n        <MediaElement Source=\"videos/test_movie.mp4\" />\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Navigation/NavigationViewModel.ts",
    "content": "class NavigationViewModel extends Fayde.MVVM.ObservableObject {\r\n    Links: any[] = [];\r\n\r\n    constructor () {\r\n        super();\r\n        this.Links.push({ Name: \"Home\", Uri: \"\" });\r\n        this.Links.push({ Name: \"Page 1\", Uri: \"/page1\" });\r\n        this.Links.push({ Name: \"Page 2\", Uri: \"/page2\" });\r\n    }\r\n}\r\nexport = NavigationViewModel;"
  },
  {
    "path": "testsite/Navigation/Views/home.fayde",
    "content": "﻿<Page xmlns=\"http://schemas.wsick.com/fayde\"\r\n      xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n      Title=\"Fayde | Home\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <TextBlock Text=\"Home Page\"></TextBlock>\r\n    </Grid>\r\n</Page>"
  },
  {
    "path": "testsite/Navigation/Views/page1.fayde",
    "content": "﻿<Page xmlns=\"http://schemas.wsick.com/fayde\"\r\n      xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n      Title=\"Fayde | Page 1\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <StackPanel>\r\n            <TextBlock Text=\"Page 1\"></TextBlock>\r\n            <HyperlinkButton TargetName=\"ContentFrame\" NavigateUri=\"/page2\" Content=\"Go to Page 2 (TargetName=ContentFrame)\"></HyperlinkButton>\r\n            <HyperlinkButton TargetName=\"_self\" NavigateUri=\"/page2\" Content=\"Go to Page 2 (TargetName=_self)\"></HyperlinkButton>\r\n            <HyperlinkButton TargetName=\"_blank\" NavigateUri=\"/page2\" Content=\"Go to Page 2 (TargetName=_blank)\"></HyperlinkButton>\r\n        </StackPanel>\r\n    </Grid>\r\n</Page>"
  },
  {
    "path": "testsite/Navigation/Views/page2.fayde",
    "content": "﻿<Page xmlns=\"http://schemas.wsick.com/fayde\"\r\n      xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n      Title=\"Fayde | Page 2\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <TextBlock Text=\"Page 2\"></TextBlock>\r\n    </Grid>\r\n</Page>"
  },
  {
    "path": "testsite/Navigation/default.fap",
    "content": "﻿<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        xmlns:nav=\"Navigation\"\r\n        ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n    </Application.Resources>\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <Grid.DataContext>\r\n            <nav:NavigationViewModel />\r\n        </Grid.DataContext>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"Auto\"/>\r\n            <RowDefinition/>\r\n        </Grid.RowDefinitions>\r\n        <ItemsControl ItemsSource=\"{Binding Links}\">\r\n            <ItemsControl.ItemTemplate>\r\n                <DataTemplate>\r\n                    <HyperlinkButton NavigateUri=\"{Binding Uri}\" Content=\"{Binding Name}\" TargetName=\"ContentFrame\" />\r\n                </DataTemplate>\r\n            </ItemsControl.ItemTemplate>\r\n            <ItemsControl.ItemsPanel>\r\n                <ItemsPanelTemplate>\r\n                    <StackPanel Orientation=\"Horizontal\" />\r\n                </ItemsPanelTemplate>\r\n            </ItemsControl.ItemsPanel>\r\n        </ItemsControl>\r\n        <Frame x:Name=\"ContentFrame\" Grid.Row=\"1\">\r\n            <Frame.UriMapper>\r\n                <UriMapper>\r\n                    <UriMapping Uri=\"\" MappedUri=\"Navigation/Views/Home.fayde\" />\r\n                    <UriMapping Uri=\"/{pageName}\" MappedUri=\"Navigation/Views/{pageName}.fayde\" />\r\n                </UriMapper>\r\n            </Frame.UriMapper>\r\n        </Frame>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Overlay/ChooserViewModel.ts",
    "content": "class ChooserViewModel extends Fayde.MVVM.ViewModelBase {\r\n    OriginalColor: string;\r\n    Color: string;\r\n\r\n    constructor (color: string) {\r\n        super();\r\n        this.Color = this.OriginalColor = color;\r\n    }\r\n}\r\nFayde.MVVM.NotifyProperties(ChooserViewModel, [\"Color\"]);\r\nexport = ChooserViewModel;"
  },
  {
    "path": "testsite/Overlay/MainDialogViewModel.ts",
    "content": "import ChooserViewModel = require('./ChooserViewModel');\r\nimport DialogViewModel = Fayde.MVVM.DialogViewModel;\r\n\r\nclass MainDialogViewModel extends Fayde.MVVM.ViewModelBase {\r\n    Color: string = \"#ffffff\";\r\n    LaunchChooser: DialogViewModel<any, ChooserViewModel>;\r\n\r\n    constructor () {\r\n        super();\r\n        this.LaunchChooser = new DialogViewModel({\r\n            ViewModelBuilder: (builder: any) => new ChooserViewModel(this.Color),\r\n            AcceptAction: (data: ChooserViewModel) => this.Color = data.Color\r\n        });\r\n    }\r\n}\r\nFayde.MVVM.NotifyProperties(MainDialogViewModel, [\"Color\", \"LaunchChooser\"]);\r\nexport = MainDialogViewModel;"
  },
  {
    "path": "testsite/Overlay/basic.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <StackPanel HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n            <ToggleButton x:Name=\"Overlay1Toggle\" Content=\"Open Overlay\" />\r\n            <Overlay IsOpen=\"{Binding ElementName=Overlay1Toggle, Path=IsChecked, Mode=TwoWay}\">\r\n                <Overlay.Visual>\r\n                    <Border HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Background=\"Yellow\"\r\n                            Width=\"300\" Height=\"300\">\r\n                        <TextBlock Text=\"Hi! I am an overlay.\" />\r\n                    </Border>\r\n                </Overlay.Visual>\r\n            </Overlay>\r\n            <ToggleButton x:Name=\"Overlay2Toggle\" Content=\"Open Overlay no background on right\" />\r\n            <Overlay MaskBrush=\"Transparent\" IsOpen=\"{Binding ElementName=Overlay2Toggle, Path=IsChecked, Mode=TwoWay}\">\r\n                <Overlay.Visual>\r\n                    <Border HorizontalAlignment=\"Right\" VerticalAlignment=\"Center\" Background=\"Orange\">\r\n                        <TextBlock Text=\"I like the right side.\" />\r\n                    </Border>\r\n                </Overlay.Visual>\r\n            </Overlay>\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Overlay/dialog-window.fayde",
    "content": "﻿<Dialog\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    MinWidth=\"300\" MinHeight=\"300\">\r\n    <Grid RowDefinitions=\"* auto\">\r\n        <StackPanel Margin=\"4\">\r\n            <TextBox Text=\"{Binding Color, Mode=TwoWay}\" />\r\n        </StackPanel>\r\n        <Border Grid.Row=\"1\" Background=\"Orange\">\r\n            <StackPanel Orientation=\"Horizontal\" HorizontalAlignment=\"Right\">\r\n                <Button Content=\"OK\" Dialog.ClickResult=\"True\" Margin=\"4\" Padding=\"4\" />\r\n                <Button Content=\"Cancel\" Dialog.ClickResult=\"False\" Margin=\"4\" Padding=\"4\" />\r\n            </StackPanel>\r\n        </Border>\r\n    </Grid>\r\n</Dialog>"
  },
  {
    "path": "testsite/Overlay/dialog.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:overlay=\"Overlay\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <overlay:MainDialogViewModel />\r\n        </Grid.DataContext>\r\n        <StackPanel HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n            <TextBlock Text=\"{Binding Color}\" />\r\n            <Button Command=\"{Binding LaunchChooser.RequestOpenCommand}\" Content=\"Choose...\" />\r\n            <Overlay DataContext=\"{Binding LaunchChooser}\"\r\n                     VisualUri=\"Overlay/dialog-window.fayde\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Path/ArcViewModel.ts",
    "content": "import SweepDirection = minerva.SweepDirection;\r\n\r\nclass ArcViewModel extends Fayde.MVVM.ObservableObject {\r\n    IsLargeArc = true;\r\n    IsClockwise = true;\r\n    SPointX = 100.0;\r\n    SPointY = 100.0;\r\n    PointX = 200.0;\r\n    PointY = 200.0;\r\n    SizeX = 5.0;\r\n    SizeY = 5.0;\r\n    RotationAngle = 0.0;\r\n\r\n    get SweepDirection (): SweepDirection { return this.IsClockwise ? SweepDirection.Clockwise : SweepDirection.Counterclockwise; }\r\n    get SPoint (): Point { return new Point(this.SPointX, this.SPointY); }\r\n    get Point (): Point { return new Point(this.PointX, this.PointY); }\r\n    get Size (): Size { return new Size(this.SizeX, this.SizeY); }\r\n\r\n    OnPropertyChanged (propertyName: string) {\r\n        super.OnPropertyChanged(propertyName);\r\n        switch (propertyName) {\r\n            case \"IsClockwise\":\r\n                this.OnPropertyChanged(\"SweepDirection\");\r\n                break;\r\n            case \"SPointX\":\r\n            case \"SPointY\":\r\n                this.OnPropertyChanged(\"SPoint\");\r\n                break;\r\n            case \"PointX\":\r\n            case \"PointY\":\r\n                this.OnPropertyChanged(\"Point\");\r\n                break;\r\n            case \"SizeX\":\r\n            case \"SizeY\":\r\n                this.OnPropertyChanged(\"Size\");\r\n                break;\r\n        }\r\n    }\r\n}\r\nFayde.MVVM.NotifyProperties(ArcViewModel, [\"IsClockwise\", \"SPointX\", \"SPointY\", \"PointX\", \"PointY\", \"SizeX\", \"SizeY\", \"RotationAngle\"]);\r\nexport = ArcViewModel;"
  },
  {
    "path": "testsite/Path/arc-segment.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:path=\"Path\"\r\n    xmlns:res=\"Resources\"\r\n    ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n        <res:NumberConverter x:Key=\"numConverter\" Minimum=\"0\" Maximum=\"500\" />\r\n        <res:AngleConverter x:Key=\"angleConverter\" />\r\n    </Application.Resources>\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"White\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"200\" />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.DataContext>\r\n            <path:ArcViewModel />\r\n        </Grid.DataContext>\r\n        <StackPanel>\r\n            <TextBlock Text=\"Start Point (x, y)\" Margin=\"0,20,0,0\" />\r\n            <TextBox Text=\"{Binding SPointX, Mode=TwoWay, Converter={StaticResource numConverter}}\" />\r\n            <TextBox Text=\"{Binding SPointY, Mode=TwoWay, Converter={StaticResource numConverter}}\" />\r\n            <TextBlock Text=\"Point (x, y)\" Margin=\"0,20,0,0\" />\r\n            <TextBox Text=\"{Binding PointX, Mode=TwoWay, Converter={StaticResource numConverter}}\" />\r\n            <TextBox Text=\"{Binding PointY, Mode=TwoWay, Converter={StaticResource numConverter}}\" />\r\n            <TextBlock Text=\"Size (width, height)\" Margin=\"0,20,0,0\" />\r\n            <TextBox Text=\"{Binding SizeX, Mode=TwoWay, Converter={StaticResource numConverter}}\" />\r\n            <TextBox Text=\"{Binding SizeY, Mode=TwoWay, Converter={StaticResource numConverter}}\" />\r\n            <TextBlock Text=\"IsLargeArc\" Margin=\"0,20,0,0\" />\r\n            <ToggleButton IsChecked=\"{Binding IsLargeArc, Mode=TwoWay}\" Content=\"{Binding IsLargeArc}\" />\r\n            <TextBlock Text=\"Sweep Direction\" Margin=\"0,20,0,0\" />\r\n            <ToggleButton IsChecked=\"{Binding IsClockwise, Mode=TwoWay}\" Content=\"{Binding SweepDirection}\" />\r\n            <TextBlock Text=\"Rotation Angle\" Margin=\"0,20,0,0\" />\r\n            <TextBox Text=\"{Binding RotationAngle, Mode=TwoWay, Converter={StaticResource angleConverter}}\" />\r\n        </StackPanel>\r\n        <Path Stroke=\"Black\" StrokeThickness=\"2\" Grid.Column=\"1\">\r\n            <Path.Data>\r\n                <PathGeometry>\r\n                    <PathFigure StartPoint=\"{Binding SPoint}\">\r\n                        <ArcSegment x:Name=\"arc\"\r\n                                    IsLargeArc=\"{Binding IsLargeArc}\"\r\n                                    Size=\"{Binding Size}\"\r\n                                    Point=\"{Binding Point}\"\r\n                                    SweepDirection=\"{Binding SweepDirection}\"\r\n                                    RotationAngle=\"{Binding RotationAngle}\"\r\n                                />\r\n                    </PathFigure>\r\n                </PathGeometry>\r\n            </Path.Data>\r\n        </Path>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Path/arc-to.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script src=\"../lib/nullstone/dist/nullstone.js\"></script>\r\n    <script src=\"../lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"../lib/Fayde/dist/Fayde.js\"></script>\r\n    <script src=\"util.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var config = {\r\n            w: 800,\r\n            h: 800,\r\n            bg: \"#eeeeee\"\r\n        };\r\n        var canvas;\r\n        var ctx;\r\n        var info;\r\n\r\n        function load() {\r\n            var canvas = addCanvas(config);\r\n            ctx = canvas.getContext(\"2d\");\r\n            info = document.getElementById(\"info\");\r\n            go();\r\n        }\r\n\r\n        function go() {\r\n            var s = randomPoint(0, config.w, 0, config.h);\r\n            var ra = arcto.random(config);\r\n\r\n            var path = new minerva.path.Path();\r\n            path.move(s.x, s.y);\r\n            path.arcTo(ra.cpx, ra.cpy, ra.ex, ra.ey, ra.r);\r\n\r\n            var strokePars = randomStrokeParameters();\r\n\r\n            ctx.clearRect(0, 0, config.w, config.h);\r\n            path.draw(ctx);\r\n            pathStroke(ctx, \"rgb(0,0,0)\", strokePars);\r\n\r\n            drawGuideLine(ctx, s.x, s.y, ra.cpx, ra.cpy, 1);\r\n            drawGuideLine(ctx, ra.cpx, ra.cpy, ra.ex, ra.ey, 2);\r\n\r\n            drawStartPoint(ctx, s.x, s.y);\r\n            drawControlPoint(ctx, ra.cpx, ra.cpy, 1);\r\n            drawEndPoint(ctx, ra.ex, ra.ey);\r\n\r\n            drawBoundingBox(path, strokePars);\r\n\r\n            dumpinfo(ra.r, strokePars);\r\n        }\r\n\r\n        function dumpinfo(r, pars) {\r\n            info.innerText = strokeParamsToString(pars) + \"; radius:\" + r;\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load()\">\r\n    <input type=\"button\" value=\"again\" onclick=\"go()\" />\r\n    <span id=\"info\"></span>\r\n    <br />\r\n</body>\r\n</html>"
  },
  {
    "path": "testsite/Path/arc.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script src=\"../lib/nullstone/dist/nullstone.js\"></script>\r\n    <script src=\"../lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"../lib/Fayde/dist/Fayde.js\"></script>\r\n    <script src=\"util.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var config = {\r\n            w: 800,\r\n            h: 800,\r\n            bg: \"#eeeeee\"\r\n        };\r\n        var canvas;\r\n        var ctx;\r\n        var info;\r\n\r\n        function load() {\r\n            var canvas = addCanvas(config);\r\n            ctx = canvas.getContext(\"2d\");\r\n            info = document.getElementById(\"info\");\r\n            go();\r\n        }\r\n\r\n        function go() {\r\n            var ra = arc.random(config);\r\n\r\n            var path = new minerva.path.Path();\r\n            path.arc(ra.x, ra.y, ra.r, ra.sa, ra.ea, ra.cc);\r\n\r\n            var strokePars = randomStrokeParameters();\r\n\r\n            ctx.clearRect(0, 0, config.w, config.h);\r\n            path.draw(ctx);\r\n            pathStroke(ctx, \"rgb(0,0,0)\", strokePars);\r\n\r\n            drawStartPoint(ctx, ra.x + ra.r * Math.cos(ra.sa), ra.y + ra.r * Math.sin(ra.sa));\r\n            drawCenterPoint(ctx, ra.x, ra.y);\r\n            drawEndPoint(ctx, ra.x + ra.r * Math.cos(ra.ea), ra.y + ra.r * Math.sin(ra.ea));\r\n\r\n            drawBoundingBox(path, strokePars);\r\n\r\n            dumpinfo(ra.r, strokePars);\r\n        }\r\n\r\n        function dumpinfo(r, pars) {\r\n            info.innerText = strokeParamsToString(pars) + \"; radius:\" + r;\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load()\">\r\n    <input type=\"button\" value=\"again\" onclick=\"go()\" />\r\n    <span id=\"info\"></span>\r\n    <br />\r\n</body>\r\n</html>"
  },
  {
    "path": "testsite/Path/cubic-bezier.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script src=\"../lib/nullstone/dist/nullstone.js\"></script>\r\n    <script src=\"../lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"../lib/Fayde/dist/Fayde.js\"></script>\r\n    <script src=\"util.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var config = {\r\n            w: 800,\r\n            h: 800,\r\n            bg: \"#eeeeee\"\r\n        };\r\n        var canvas;\r\n        var ctx;\r\n        var info;\r\n\r\n        function load() {\r\n            var canvas = addCanvas(config);\r\n            ctx = canvas.getContext(\"2d\");\r\n            info = document.getElementById(\"info\");\r\n            go();\r\n        }\r\n\r\n        function go() {\r\n            var s = randomPoint(0, config.w, 0, config.h);\r\n            var rnd = cubicbezier.random(config);\r\n\r\n            var path = new minerva.path.Path();\r\n            path.move(s.x, s.y);\r\n            path.cubicBezier(rnd.cp1x, rnd.cp1y, rnd.cp2x, rnd.cp2y, rnd.x, rnd.y);\r\n\r\n            var strokePars = randomStrokeParameters();\r\n\r\n            ctx.clearRect(0, 0, config.w, config.h);\r\n            path.draw(ctx);\r\n            pathStroke(ctx, \"rgb(0,0,0)\", strokePars);\r\n\r\n            drawGuideLine(ctx, s.x, s.y, rnd.cp1x, rnd.cp1y, 1);\r\n            drawGuideLine(ctx, rnd.cp1x, rnd.cp1y, rnd.cp2x, rnd.cp2y, 2);\r\n            drawGuideLine(ctx, rnd.cp2x, rnd.cp2y, rnd.x, rnd.y, 3);\r\n\r\n            drawStartPoint(ctx, s.x, s.y);\r\n            drawControlPoint(ctx, rnd.cp1x, rnd.cp1y, 1);\r\n            drawControlPoint(ctx, rnd.cp2x, rnd.cp2y, 2);\r\n            drawEndPoint(ctx, rnd.x, rnd.y);\r\n\r\n            drawBoundingBox(path, strokePars);\r\n\r\n            var m = cubicbezier.maxima(s.x, rnd.cp1x, rnd.cp2x, rnd.x, s.y, rnd.cp1y, rnd.cp2y, rnd.y);\r\n            drawPoint(ctx, m[0].x, m[0].y, \"#0aaa00\");\r\n            drawPoint(ctx, m[1].x, m[1].y, \"#0aaa00\");\r\n            drawPoint(ctx, m[2].x, m[2].y, \"#0aaa00\");\r\n            drawPoint(ctx, m[3].x, m[3].y, \"#0aaa00\");\r\n\r\n            dumpinfo(strokePars);\r\n        }\r\n\r\n        function dumpinfo(pars) {\r\n            info.innerText = strokeParamsToString(pars);\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load()\">\r\n    <input type=\"button\" value=\"again\" onclick=\"go()\" />\r\n    <span id=\"info\"></span>\r\n    <br />\r\n</body>\r\n</html>"
  },
  {
    "path": "testsite/Path/join/bevel.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script src=\"../../lib/nullstone/dist/nullstone.js\"></script>\r\n    <script src=\"../../lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"../../lib/Fayde/dist/Fayde.js\"></script>\r\n    <script src=\"../util.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var config = {\r\n            w: 800,\r\n            h: 800,\r\n            bg: \"#eeeeee\"\r\n        };\r\n        var canvas;\r\n        var ctx;\r\n        var info;\r\n\r\n        function load() {\r\n            var canvas = addCanvas(config);\r\n            ctx = canvas.getContext(\"2d\");\r\n            info = document.getElementById(\"info\");\r\n            go();\r\n        }\r\n\r\n        function go() {\r\n            ctx.clearRect(0, 0, config.w, config.h);\r\n\r\n            var dx = 0;\r\n            var dy = 100;\r\n            var sx = 30;\r\n            var sy = 30;\r\n            for (var i = 0; i < 7; i++) {\r\n                triangle(ctx, sx, sy, dx, dy);\r\n                sx += dx + dx + 50;\r\n                dx += 10;\r\n            }\r\n\r\n\r\n            dx = 50;\r\n            dy = 100;\r\n            sx = 30;\r\n            sy = 160;\r\n            for (var i = 0; i < 7; i++) {\r\n                triangle(ctx, sx, sy, dx, dy);\r\n                sx += dx + dx + 30;\r\n                dy -= 20;\r\n            }\r\n        }\r\n\r\n        function triangle(ctx, sx, sy, dx, dy) {\r\n            var path = new minerva.path.Path();\r\n            path.move(sx, sy);\r\n            path.line(sx + dx, sy + dy);\r\n            path.line(sx + dx + dx, sy);\r\n            var pars = bevelstroke(30);\r\n            path.draw(ctx);\r\n            pathStroke(ctx, \"rgb(0,0,0)\", pars);\r\n            drawPoint(ctx, sx + dx, sy + dy, \"red\");\r\n        }\r\n        \r\n        function bevelstroke(thickness) {\r\n            return {\r\n                thickness: thickness,\r\n                join: 1,\r\n                startCap: 0,\r\n                endCap: 0,\r\n                miterLimit: 10\r\n            };\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load()\">\r\n    <input type=\"button\" value=\"again\" onclick=\"go()\" />\r\n    <span id=\"info\"></span>\r\n    <br />\r\n</body>\r\n</html>"
  },
  {
    "path": "testsite/Path/line.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script src=\"../lib/nullstone/dist/nullstone.js\"></script>\r\n    <script src=\"../lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"../lib/Fayde/dist/Fayde.js\"></script>\r\n    <script src=\"util.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var config = {\r\n            w: 800,\r\n            h: 800,\r\n            bg: \"#eeeeee\"\r\n        };\r\n        var canvas;\r\n        var ctx;\r\n        var info;\r\n\r\n        function load() {\r\n            var canvas = addCanvas(config);\r\n            ctx = canvas.getContext(\"2d\");\r\n            info = document.getElementById(\"info\");\r\n            go();\r\n        }\r\n\r\n        function go() {\r\n            var s = randomPoint(0, config.w, 0, config.h);\r\n            var rp = randomPoint(0, config.w, 0, config.h);\r\n\r\n            var path = new minerva.path.Path();\r\n            path.move(s.x, s.y);\r\n            path.line(rp.x, rp.y);\r\n\r\n            var strokePars = randomStrokeParameters();\r\n\r\n            ctx.clearRect(0, 0, config.w, config.h);\r\n            path.draw(ctx);\r\n            pathStroke(ctx, \"rgb(0,0,0)\", strokePars);\r\n\r\n            drawStartPoint(ctx, s.x, s.y);\r\n            drawEndPoint(ctx, rp.x, rp.y);\r\n\r\n            drawBoundingBox(path, strokePars);\r\n\r\n            dumpinfo(rp.x, rp.y, strokePars);\r\n        }\r\n\r\n        function dumpinfo(x, y, pars) {\r\n            info.innerText = strokeParamsToString(pars) + \"; x:\" + x + \"; y:\" + y;\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load()\">\r\n    <input type=\"button\" value=\"again\" onclick=\"go()\" />\r\n    <span id=\"info\"></span>\r\n    <br />\r\n</body>\r\n</html>"
  },
  {
    "path": "testsite/Path/multientry.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <script src=\"../lib/nullstone/dist/nullstone.js\"></script>\r\n    <script src=\"../lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"../lib/Fayde/dist/Fayde.js\"></script>\r\n    <script src=\"util.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var config = {\r\n            w: 800,\r\n            h: 800,\r\n            bg: \"#eeeeee\"\r\n        };\r\n        var canvas;\r\n        var ctx;\r\n        var info;\r\n\r\n        function load() {\r\n            var canvas = addCanvas(config);\r\n            ctx = canvas.getContext(\"2d\");\r\n            info = document.getElementById(\"info\");\r\n            go();\r\n        }\r\n\r\n        function go() {\r\n            var path = multipath.random(config);\r\n            var strokePars = randomStrokeParameters();\r\n\r\n            ctx.clearRect(0, 0, config.w, config.h);\r\n            path.draw(ctx);\r\n            pathStroke(ctx, \"rgba(0,0,0,0.7)\", strokePars);\r\n\r\n            var entries = path.$$entries;\r\n            var len = entries.length;\r\n            var entry = entries[0];\r\n            drawPoint(ctx, entry.ex, entry.ey, \"red\");\r\n            for (var i = 1; i < len; i++) {\r\n                entry = entries[i];\r\n                drawPoint(ctx, entry.ex, entry.ey, \"green\");\r\n            }\r\n\r\n            drawBoundingBox(path, strokePars);\r\n\r\n            var tips;\r\n            var hs = strokePars.thickness / 2;\r\n            var join = strokePars.join;\r\n            var entry;\r\n            for (var i = 2; i < len; i++) {\r\n                entry = entries[i];\r\n                \r\n                if (join === Fayde.Shapes.PenLineJoin.Bevel) {\r\n                    tips = minerva.path.findBevelTips(entries[i - 1], entries[i], hs);\r\n                } else if (join === Fayde.Shapes.PenLineJoin.Miter) {\r\n                    tips = minerva.path.findMiterTips(entries[i - 1], entries[i], hs);\r\n                } else {\r\n                    continue;\r\n                }\r\n                drawPoint(ctx, tips[0].x, tips[0].y, \"orange\");\r\n                drawPoint(ctx, tips[1].x, tips[1].y, \"orange\");\r\n            }\r\n\r\n            var r = path.calcBounds(strokePars);\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load()\">\r\n    <input type=\"button\" value=\"again\" onclick=\"go()\" />\r\n    <span id=\"info\"></span>\r\n    <br />\r\n</body>\r\n</html>"
  },
  {
    "path": "testsite/Path/quad-bezier.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script src=\"../lib/nullstone/dist/nullstone.js\"></script>\r\n    <script src=\"../lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"../lib/Fayde/dist/Fayde.js\"></script>\r\n    <script src=\"util.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var config = {\r\n            w: 800,\r\n            h: 800,\r\n            bg: \"#eeeeee\"\r\n        };\r\n        var canvas;\r\n        var ctx;\r\n        var info;\r\n\r\n        function load() {\r\n            var canvas = addCanvas(config);\r\n            ctx = canvas.getContext(\"2d\");\r\n            info = document.getElementById(\"info\");\r\n            go();\r\n        }\r\n\r\n        function go() {\r\n            var s = randomPoint(0, config.w, 0, config.h);\r\n            var rnd = quadbezier.random(config);\r\n\r\n            var path = new minerva.path.Path();\r\n            path.move(s.x, s.y);\r\n            path.quadraticBezier(rnd.cpx, rnd.cpy, rnd.x, rnd.y);\r\n\r\n            var strokePars = randomStrokeParameters();\r\n\r\n            ctx.clearRect(0, 0, config.w, config.h);\r\n            path.draw(ctx);\r\n            pathStroke(ctx, \"rgb(0,0,0)\", strokePars);\r\n\r\n            drawGuideLine(ctx, s.x, s.y, rnd.cpx, rnd.cpy, 1);\r\n            drawGuideLine(ctx, rnd.cpx, rnd.cpy, rnd.x, rnd.y, 2);\r\n\r\n            drawStartPoint(ctx, s.x, s.y);\r\n            drawControlPoint(ctx, rnd.cpx, rnd.cpy, 1);\r\n            drawEndPoint(ctx, rnd.x, rnd.y);\r\n\r\n            drawBoundingBox(path, strokePars);\r\n\r\n            var m = quadbezier.maxima(s.x, rnd.cpx, rnd.x, s.y, rnd.cpy, rnd.y);\r\n            drawPoint(ctx, m[0].x, m[0].y, \"#0aaa00\");\r\n            drawPoint(ctx, m[1].x, m[1].y, \"#0aaa00\");\r\n\r\n            dumpinfo(strokePars);\r\n        }\r\n\r\n        function dumpinfo(pars) {\r\n            info.innerText = strokeParamsToString(pars);\r\n        }\r\n    </script>\r\n</head>\r\n<body onload=\"load()\">\r\n    <input type=\"button\" value=\"again\" onclick=\"go()\" />\r\n    <span id=\"info\"></span>\r\n    <br />\r\n</body>\r\n</html>"
  },
  {
    "path": "testsite/Path/util.js",
    "content": "﻿function addCanvas(config) {\r\n    var canvas = document.createElement(\"canvas\");\r\n    canvas.width = config.w;\r\n    canvas.height = config.h;\r\n    canvas.style.background = config.bg;\r\n    document.body.appendChild(canvas);\r\n    return canvas;\r\n}\r\n\r\n\r\nfunction drawPoint(ctx, x, y, color) {\r\n    ctx.beginPath();\r\n    if (color) ctx.fillStyle = color;\r\n    ctx.fillRect(x - 2, y - 2, 4, 4);\r\n}\r\nfunction drawLine(ctx, x1, y1, x2, y2) {\r\n    ctx.beginPath();\r\n    ctx.moveTo(x1, y1);\r\n    ctx.lineTo(x2, y2);\r\n    ctx.stroke();\r\n}\r\n\r\nfunction drawStartPoint(ctx, x, y) {\r\n    ctx.fillStyle = \"rgb(255,0,0)\";\r\n    drawPoint(ctx, x, y);\r\n\r\n    ctx.font = \"14px Tahoma\";\r\n    ctx.fillStyle = \"#000000\";\r\n    ctx.fillText(\"S\", x + 5, y);\r\n}\r\nfunction drawControlPoint(ctx, x, y, num) {\r\n    ctx.fillStyle = \"rgb(0,0,255)\";\r\n    drawPoint(ctx, x, y);\r\n\r\n    ctx.font = \"14px Tahoma\";\r\n    ctx.fillStyle = \"#000000\";\r\n    ctx.fillText(num, x + 5, y);\r\n}\r\nfunction drawCenterPoint(ctx, x, y) {\r\n    ctx.fillStyle = \"rgb(0,0,255)\";\r\n    drawPoint(ctx, x, y);\r\n\r\n    ctx.font = \"14px Tahoma\";\r\n    ctx.fillStyle = \"#000000\";\r\n    ctx.fillText(\"C\", x + 5, y);\r\n}\r\nfunction drawEndPoint(ctx, x, y) {\r\n    ctx.fillStyle = \"rgb(0,255,0)\";\r\n    drawPoint(ctx, x, y);\r\n\r\n    ctx.font = \"14px Tahoma\";\r\n    ctx.fillStyle = \"#000000\";\r\n    ctx.fillText(\"E\", x + 5, y);\r\n}\r\n\r\nfunction drawGuideLine(ctx, x1, y1, x2, y2, num) {\r\n    var color = [\r\n        \"rgba(255,0,0,0.4)\",\r\n        \"rgba(0,0,255,0.4)\",\r\n        \"rgba(0,255,0,0.4)\"\r\n    ][num - 1];\r\n\r\n    ctx.lineWidth = 1;\r\n    if (color) ctx.strokeStyle = color;\r\n    drawLine(ctx, x1, y1, x2, y2);\r\n}\r\n\r\nfunction drawBoundingBox(path, pars) {\r\n    var r = path.calcBounds(pars);\r\n    ctx.lineWidth = 1;\r\n    ctx.strokeStyle = \"rgb(255,0,0)\";\r\n    ctx.strokeRect(r.x, r.y, r.width, r.height);\r\n}\r\n\r\nfunction randomInt(low, high) {\r\n    return Math.floor(Math.random() * (high - low) + low);\r\n}\r\nfunction randomPoint(lowx, highx, lowy, highy) {\r\n    return {\r\n        x: randomInt(lowx, highx),\r\n        y:randomInt(lowy,highy)\r\n    };\r\n}\r\n\r\n\r\nvar multipath = (function () {\r\n    function randomEntry(path, config) {\r\n        switch (randomInt(0, 3)) {\r\n            case 0:\r\n                var qb = quadbezier.random(config);\r\n                path.quadraticBezier(qb.cpx, qb.cpy, qb.x, qb.y);\r\n                break;\r\n            case 1:\r\n                var cb = cubicbezier.random(config);\r\n                path.cubicBezier(cb.cp1x, cb.cp1y, cb.cp2x, cb.cp2y, cb.x, cb.y);\r\n                break;\r\n            case 2:\r\n                var l = randomPoint(0, config.w, 0, config.h);\r\n                path.line(l.x, l.y);\r\n                break;\r\n        }\r\n    }\r\n\r\n    return {\r\n        random: function (config) {\r\n            var path = new minerva.path.Path();\r\n            var s = randomPoint(0, config.w, 0, config.h);\r\n            path.move(s.x, s.y);\r\n\r\n            var count = randomInt(3, 7);\r\n            for (var i = 0; i < count; i++) {\r\n                randomEntry(path, config);\r\n            }\r\n\r\n            return path;\r\n        }\r\n    };\r\n})();\r\n\r\nvar quadbezier = (function () {\r\n    function getMaxima(x1, x2, x3, y1, y2, y3) {\r\n        //change in x direction\r\n        var m1 = {\r\n            t: (x1 - x2) / (x1 - 2 * x2 + x3),\r\n            x: 0,\r\n            y: 0\r\n        };\r\n        m1.x = xoft(x1, x2, x3, m1.t);\r\n        m1.y = xoft(y1, y2, y3, m1.t);\r\n\r\n        //change in y direction\r\n        var m2 = {\r\n            t: (y1 - y2) / (y1 - 2 * y2 + y3),\r\n            x: 0,\r\n            y: 0\r\n        };\r\n        m2.y = xoft(y1, y2, y3, m2.t);\r\n        m2.x = xoft(x1, x2, x3, m2.t);\r\n\r\n        return [m1, m2];\r\n    }\r\n    function xoft(a, b, c, t) {\r\n        // x(t) = a(1-t)^2 + 2*b(1-t)t + c*t^2\r\n        // \"change of direction\" point (dx/dt = 0)\r\n        return (a * Math.pow(1 - t, 2)) + (2 * b * (1 - t) * t) + (c * Math.pow(t, 2));\r\n    }\r\n\r\n    return {\r\n        random: function (config) {\r\n            var cpx = randomInt(0, config.w);\r\n            var cpy = randomInt(0, config.h);\r\n            var x = randomInt(0, config.w);\r\n            var y = randomInt(0, config.h);\r\n\r\n            return {\r\n                cpx: cpx,\r\n                cpy: cpy,\r\n                x: x,\r\n                y: y\r\n            };\r\n        },\r\n        maxima: getMaxima\r\n    };\r\n})();\r\n\r\nvar cubicbezier = (function () {\r\n    function getMaxima(x1, x2, x3, x4, y1, y2, y3, y4) {\r\n        function x_t(t) {\r\n            var ot = 1 - t;\r\n            return (x1 * ot * ot * ot) + (3 * x2 * t * ot * ot) + (3 * x3 * ot * t * t) + (x4 * t * t * t);\r\n        };\r\n        function y_t(t) {\r\n            var ot = 1 - t;\r\n            return (y1 * ot * ot * ot) + (3 * y2 * t * ot * ot) + (3 * y3 * ot * t * t) + (y4 * t * t * t);\r\n        };\r\n        function createMaxima(t) {\r\n            return {\r\n                t: t,\r\n                x: x_t(t),\r\n                y: y_t(t)\r\n            };\r\n        };\r\n\r\n        var m = [{}, {}, {}, {}];\r\n\r\n        var txs = d_dt_0(x1, x2, x3, x4);\r\n        if (txs[0] >= 0 && txs[0] <= 1)\r\n            m[0] = createMaxima(txs[0]);\r\n        if (txs[1] >= 0 && txs[1] <= 1)\r\n            m[1] = createMaxima(txs[1]);\r\n\r\n        var tys = d_dt_0(y1, y2, y3, y4);\r\n        if (tys[0] >= 0 && tys[0] <= 1)\r\n            m[2] = createMaxima(tys[0]);\r\n        if (tys[1] >= 0 && tys[1] <= 1)\r\n            m[3] = createMaxima(tys[1]);\r\n\r\n        return m;\r\n    }\r\n    function d_dt_0(a, b, c, d) {\r\n        var u = 2 * a - 4 * b + 2 * c;\r\n        var v = b - a;\r\n        var w = -a + 3 * b + d - 3 * c;\r\n        var rt = Math.sqrt(u * u - 4 * v * w);\r\n        if (isNaN(rt))\r\n            return [NaN, NaN];\r\n        var z = [\r\n            (-u + rt) / (2 * w),\r\n            (-u - rt) / (2 * w)\r\n        ];\r\n        return z;\r\n    }\r\n\r\n    return {\r\n        random: function (config) {\r\n            var cp1x = randomInt(0, config.w);\r\n            var cp1y = randomInt(0, config.h);\r\n            var cp2x = randomInt(0, config.w);\r\n            var cp2y = randomInt(0, config.h);\r\n            var x = randomInt(0, config.w);\r\n            var y = randomInt(0, config.h);\r\n\r\n            return {\r\n                cp1x: cp1x,\r\n                cp1y: cp1y,\r\n                cp2x: cp2x,\r\n                cp2y: cp2y,\r\n                x: x,\r\n                y: y\r\n            };\r\n        },\r\n        maxima: getMaxima\r\n    };\r\n})();\r\n\r\nvar arcto = (function () {\r\n    return {\r\n        random: function (config) {\r\n            var cpx = randomInt(0, config.w);\r\n            var cpy = randomInt(0, config.h);\r\n            var ex = randomInt(0, config.w);\r\n            var ey = randomInt(0, config.h);\r\n\r\n            var r = Math.max(10, randomInt(0, 50));\r\n\r\n            return {\r\n                cpx: cpx,\r\n                cpy: cpy,\r\n                ex: ex,\r\n                ey: ey,\r\n                r: r\r\n            };\r\n        }\r\n    };\r\n})();\r\n\r\nvar arc = (function () {\r\n    return {\r\n        random: function (config) {\r\n            var x = randomInt(0, config.w);\r\n            var y = randomInt(0, config.h);\r\n            var rem = Math.min(\r\n                Math.min(x, Math.max(0, config.w - x)),\r\n                Math.min(y, Math.max(0, config.h - y)));\r\n            var radius = Math.max(10, randomInt(0, rem));\r\n\r\n            var f = Math.PI * 2;\r\n            var startingAngle = randomInt(0, f);\r\n            var endingAngle = randomInt(0, f);\r\n            var counterclockwise = randomInt(0, 2) === 0;\r\n\r\n            return {\r\n                x: x,\r\n                y: y,\r\n                r: radius,\r\n                sa: startingAngle,\r\n                ea: endingAngle,\r\n                cc: counterclockwise\r\n            };\r\n        }\r\n    };\r\n})();\r\n\r\n/*\r\nexport interface IStrokeParameters {\r\n    strokeThickness: number;\r\n    join: Shapes.PenLineJoin;\r\n    startCap: Shapes.PenLineCap;\r\n    endCap: Shapes.PenLineCap;\r\n    miterLimit: number;\r\n}\r\n*/\r\nfunction randomStrokeParameters() {\r\n    return {\r\n        strokeThickness: randomInt(1, 35),\r\n        strokeLineJoin: randomInt(0, 3),\r\n        strokeStartLineCap: randomInt(0, 3),\r\n        strokeEndLineCap: randomInt(0, 3),\r\n        strokeMiterLimit: 10\r\n    };\r\n}\r\nvar pathStroke;\r\nvar strokeParamsToString;\r\n(function () {\r\n    var caps = [\r\n        \"butt\", //flat\r\n        \"square\", //square\r\n        \"round\", //round\r\n        \"butt\" //triangle\r\n    ];\r\n    var joins = [\r\n        \"miter\",\r\n        \"bevel\",\r\n        \"round\"\r\n    ];\r\n    pathStroke = function (ctx, stroke, pars) {\r\n        if (!stroke || !pars) return;\r\n        ctx.lineWidth = pars.strokeThickness;\r\n        ctx.lineCap = caps[pars.strokeStartLineCap || pars.strokeEndLineCap || 0] || caps[0];\r\n        ctx.lineJoin = joins[pars.strokeLineJoin || 0] || joins[0];\r\n        ctx.miterLimit = pars.strokeMiterLimit;\r\n        ctx.strokeStyle = stroke;\r\n        ctx.stroke();\r\n    };\r\n    strokeParamsToString = function (pars) {\r\n        if (!pars) return \"thickness: 0\";\r\n        var thickness = pars.strokeThickness;\r\n        var scap = caps[pars.strokeStartLineCap || 0] || caps[0];\r\n        var ecap = caps[pars.strokeEndLineCap || 0] || caps[0];\r\n        var join = joins[pars.strokeLineJoin || 0] || joins[0];\r\n        var limit = pars.strokeMiterLimit;\r\n        return [\r\n            [\"thickness\", thickness],\r\n            [\"startcap\", scap],\r\n            [\"endcap\", ecap],\r\n            [\"join\", join]\r\n        ].map(function (kvp) { return kvp.join(\": \"); }).join(\"; \");\r\n    };\r\n})();"
  },
  {
    "path": "testsite/Resources/AngleConverter.ts",
    "content": "class AngleConverter implements Fayde.Data.IValueConverter {\r\n    Convert (value: any, targetType: IType, parameter: any, culture: any): any {\r\n        return value.toString();\r\n    }\r\n\r\n    ConvertBack (value: any, targetType: IType, parameter: any, culture: any): any {\r\n        var num = Math.abs(parseFloat(value));\r\n        num = num % 360;\r\n        return num;\r\n    }\r\n}\r\nFayde.Data.IValueConverter_.mark(AngleConverter);\r\nexport = AngleConverter;"
  },
  {
    "path": "testsite/Resources/NumberConverter.ts",
    "content": "class NumberConverter implements Fayde.Data.IValueConverter {\r\n    Minimum = 0;\r\n    Maximum = 100;\r\n\r\n    Convert (value: any, targetType: IType, parameter: any, culture: any): any {\r\n        return value.toString();\r\n    }\r\n\r\n    ConvertBack (value: any, targetType: IType, parameter: any, culture: any): any {\r\n        var min = parseFloat(this.Minimum.toString());\r\n        var max = parseFloat(this.Maximum.toString());\r\n        var num = parseFloat(value);\r\n        num = Math.min(Math.max(value, min), max);\r\n        return num;\r\n    }\r\n}\r\nFayde.Data.IValueConverter_.mark(NumberConverter);\r\nexport = NumberConverter;"
  },
  {
    "path": "testsite/Shapes/PathBoundViewModel.ts",
    "content": "import PathSegment = Fayde.Media.PathSegment;\r\nimport LineSegment = Fayde.Media.LineSegment;\r\n\r\nfunction randomInt(low: number, high: number): number {\r\n    return (Math.random() * (high - low)) + low;\r\n}\r\n\r\nclass PathBoundViewModel extends Fayde.MVVM.ViewModelBase {\r\n    Segments = new Fayde.Collections.ObservableCollection<PathSegment>();\r\n\r\n    AddSegment () {\r\n        var segment = new LineSegment();\r\n        var width = 500;\r\n        var height = 500;\r\n        segment.Point = new Point(randomInt(0, width), randomInt(0, height));\r\n        this.Segments.Add(segment);\r\n    }\r\n}\r\nexport = PathBoundViewModel;"
  },
  {
    "path": "testsite/Shapes/canvas.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Canvas>\r\n        <Ellipse Canvas.Left=\"50\" Canvas.Top=\"100\" Width=\"100\" Height=\"100\" Stroke=\"#FF000000\" StrokeThickness=\"5\">\r\n            <Ellipse.Fill>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"Red\" Offset=\"0\"/>\r\n                    <GradientStop Color=\"Orange\" Offset=\"0.2\"/>\r\n                    <GradientStop Color=\"Yellow\" Offset=\"0.4\"/>\r\n                    <GradientStop Color=\"Green\" Offset=\"0.6\"/>\r\n                    <GradientStop Color=\"Blue\" Offset=\"0.8\"/>\r\n                    <GradientStop Color=\"Violet\" Offset=\"1\"/>\r\n                </LinearGradientBrush>\r\n            </Ellipse.Fill>\r\n        </Ellipse>\r\n        <!--\r\n        <Path Canvas.Left=\"400\" Canvas.Top=\"0\" Stretch=\"Uniform\" Height=\"8\" Width=\"4\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \">\r\n            <Path.Fill>\r\n                <SolidColorBrush x:Name=\"ButtonColor\" Color=\"#FF333333\" />\r\n            </Path.Fill>\r\n        </Path>\r\n        -->\r\n        <Rectangle Canvas.Left=\"100\" Canvas.Top=\"150\" Width=\"100\" Height=\"100\" Opacity=\"0.5\" Fill=\"Black\" Stroke=\"Green\" StrokeThickness=\"10\" RadiusX=\"20\" RadiusY=\"40\">\r\n        </Rectangle>\r\n        <Line X1=\"0\" Y1=\"0\" X2=\"400\" Y2=\"400\" Stroke=\"Orange\" StrokeThickness=\"3\">\r\n        </Line>\r\n    </Canvas>\r\n</Application>"
  },
  {
    "path": "testsite/Shapes/map.fap",
    "content": "﻿<local:Map\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:local=\"Shapes\"\r\n    ThemeName=\"Metro\">\r\n    <Canvas Width=\"2500\" Height=\"1325\">\r\n        <Canvas.RenderTransform>\r\n            <ScaleTransform ScaleX=\"0.125\" ScaleY=\"0.125\" />\r\n        </Canvas.RenderTransform>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6755,1434L6751,1434L6746,1436L6751,1439L6753,1441L6751,1444L6751,1441L6749,1441L6742,1444L6740,1446L6733,1446L6731,1444L6727,1444L6723,1446L6723,1444L6720,1444L6718,1446L6697,1446L6697,1449L6690,1449L6688,1451L6686,1451L6686,1454L6679,1456L6673,1462L6673,1459L6671,1459L6666,1464L6660,1469L6658,1472L6660,1474L6662,1474L6664,1477L6664,1479L6666,1479L6668,1485L6668,1487L6671,1490L6671,1495L6668,1495L6668,1497L6671,1500L6668,1502L6668,1505L6662,1513L6658,1515L6655,1518L6655,1520L6653,1520L6653,1525L6655,1525L6655,1528L6658,1528L6658,1533L6655,1538L6649,1541L6632,1541L6629,1538L6623,1538L6621,1541L6623,1543L6625,1548L6629,1548L6632,1551L6632,1553L6629,1553L6629,1556L6632,1556L6634,1558L6634,1561L6629,1566L6625,1569L6612,1569L6612,1576L6610,1576L6610,1584L6608,1587L6606,1587L6606,1589L6603,1589L6603,1592L6606,1592L6606,1607L6601,1612L6601,1615L6599,1617L6593,1617L6586,1610L6584,1610L6584,1612L6586,1612L6586,1615L6584,1615L6577,1612L6575,1612L6575,1610L6573,1610L6573,1612L6569,1617L6564,1617L6564,1620L6558,1620L6558,1625L6564,1625L6564,1627L6558,1630L6543,1630L6543,1627L6538,1627L6534,1630L6534,1635L6532,1635L6528,1640L6525,1640L6521,1650L6521,1653L6523,1653L6523,1663L6521,1663L6521,1668L6523,1671L6523,1673L6521,1676L6517,1676L6510,1678L6506,1678L6504,1681L6486,1686L6482,1683L6471,1683L6469,1686L6465,1686L6463,1689L6458,1689L6450,1686L6445,1686L6437,1689L6411,1689L6406,1686L6404,1686L6376,1676L6372,1676L6374,1673L6376,1668L6396,1645L6400,1638L6398,1632L6398,1630L6396,1630L6398,1627L6396,1625L6387,1625L6380,1622L6372,1622L6370,1617L6370,1604L6372,1602L6372,1594L6363,1571L6363,1566L6365,1566L6367,1561L6370,1561L6370,1558L6372,1556L6374,1556L6374,1553L6363,1553L6363,1551L6361,1551L6361,1548L6363,1548L6363,1541L6361,1538L6361,1536L6365,1530L6367,1530L6367,1528L6372,1528L6370,1525L6370,1523L6367,1523L6367,1520L6372,1520L6374,1518L6376,1513L6378,1510L6378,1497L6380,1495L6383,1490L6383,1487L6387,1487L6387,1490L6389,1490L6389,1492L6404,1492L6406,1495L6409,1495L6411,1497L6411,1502L6413,1502L6413,1500L6415,1500L6415,1497L6417,1497L6417,1500L6422,1500L6424,1497L6426,1497L6430,1492L6435,1492L6435,1490L6432,1487L6435,1487L6435,1485L6437,1485L6435,1482L6435,1479L6441,1479L6445,1477L6448,1477L6448,1474L6454,1474L6456,1472L6458,1472L6461,1469L6463,1469L6469,1467L6471,1467L6476,1462L6476,1451L6478,1451L6478,1449L6480,1446L6480,1436L6482,1436L6486,1434L6502,1434L6504,1431L6504,1426L6506,1423L6508,1423L6515,1426L6517,1428L6519,1428L6521,1431L6528,1431L6528,1428L6532,1428L6534,1431L6536,1428L6543,1428L6549,1436L6549,1434L6562,1434L6564,1436L6564,1439L6569,1444L6571,1444L6575,1441L6577,1441L6580,1439L6582,1439L6586,1436L6586,1434L6588,1434L6593,1431L6597,1431L6603,1439L6606,1439L6608,1436L6610,1436L6610,1434L6608,1434L6608,1426L6612,1423L6619,1423L6621,1421L6623,1421L6623,1423L6629,1423L6634,1418L6634,1416L6632,1416L6632,1413L6629,1413L6629,1411L6634,1411L6634,1408L6645,1395L6647,1395L6651,1393L6653,1393L6658,1395L6658,1398L6662,1398L6662,1400L6664,1400L6664,1403L6662,1403L6662,1405L6660,1408L6660,1411L6662,1413L6664,1411L6668,1411L6668,1418L6666,1421L6666,1434L6664,1436L6664,1439L6668,1449L6668,1451L6677,1451L6681,1446L6688,1444L6690,1441L6699,1441L6701,1439L6701,1436L6703,1434L6705,1434L6710,1431L6712,1428L6714,1428L6716,1426L6725,1426L6727,1428L6727,1426L6729,1426L6729,1431L6727,1431L6725,1434L6733,1434L6738,1431L6740,1431L6742,1428L6755,1428L6759,1431L6762,1434L6755,1434L6755,1434L6755,1434z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5228,1258L5230,1258L5230,1263L5232,1263L5235,1260L5241,1260L5243,1263L5243,1268L5250,1268L5250,1270L5252,1270L5254,1275L5254,1281L5252,1283L5252,1291L5250,1293L5250,1296L5252,1298L5250,1298L5250,1301L5252,1303L5252,1306L5254,1309L5256,1309L5256,1314L5265,1314L5265,1324L5263,1329L5258,1329L5258,1334L5256,1334L5256,1339L5254,1339L5254,1342L5248,1342L5245,1344L5245,1347L5248,1347L5248,1349L5245,1349L5245,1352L5243,1354L5239,1354L5237,1352L5237,1347L5232,1342L5230,1342L5230,1339L5226,1339L5224,1337L5222,1337L5219,1334L5217,1329L5219,1329L5219,1332L5222,1332L5222,1324L5217,1324L5217,1321L5219,1321L5219,1316L5222,1314L5224,1314L5224,1311L5222,1311L5222,1309L5224,1303L5224,1301L5222,1301L5222,1298L5224,1291L5226,1291L5224,1288L5226,1288L5226,1283L5219,1283L5219,1273L5217,1273L5226,1260L5226,1258L5228,1258L5228,1258L5228,1258z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4769,2025L4769,2023L4771,2018L4773,2018L4771,2015L4771,2002L4765,2000L4762,1997L4752,1997L4749,1995L4747,1995L4747,1992L4745,1989L4743,1989L4743,1987L4741,1987L4741,1989L4734,1989L4732,1987L4730,1987L4728,1984L4728,1979L4726,1979L4726,1977L4721,1977L4719,1974L4713,1974L4713,1969L4715,1969L4715,1961L4713,1961L4684,1941L4682,1938L4680,1938L4548,1834L4546,1831L4544,1831L4520,1814L4518,1814L4496,1796L4494,1796L4481,1785L4479,1785L4455,1768L4453,1768L4442,1760L4440,1760L4440,1712L4444,1712L4444,1709L4448,1709L4448,1706L4453,1701L4455,1701L4466,1694L4468,1691L4474,1691L4477,1689L4477,1686L4479,1686L4481,1683L4483,1683L4483,1681L4492,1683L4500,1683L4500,1678L4503,1676L4518,1676L4520,1673L4529,1673L4531,1671L4533,1671L4539,1663L4539,1661L4542,1661L4542,1655L4544,1655L4544,1653L4546,1653L4552,1650L4559,1650L4559,1648L4563,1648L4563,1645L4565,1645L4570,1640L4581,1640L4581,1635L4578,1632L4574,1632L4576,1627L4576,1622L4574,1622L4574,1615L4587,1615L4589,1612L4596,1612L4598,1610L4600,1610L4600,1602L4602,1602L4613,1599L4624,1599L4626,1602L4648,1602L4648,1599L4645,1599L4645,1594L4648,1592L4650,1592L4652,1589L4654,1589L4645,1584L4643,1581L4639,1574L4641,1571L4639,1571L4639,1569L4635,1564L4635,1558L4637,1558L4637,1553L4635,1551L4632,1551L4632,1548L4635,1543L4635,1536L4632,1530L4632,1525L4635,1523L4632,1523L4630,1520L4630,1518L4632,1515L4630,1515L4630,1513L4624,1507L4622,1507L4619,1505L4622,1502L4622,1505L4628,1505L4632,1502L4637,1497L4643,1497L4645,1495L4645,1492L4648,1492L4648,1490L4652,1485L4656,1485L4658,1482L4663,1482L4663,1485L4665,1485L4667,1482L4667,1479L4671,1477L4674,1479L4678,1482L4680,1479L4682,1479L4682,1477L4684,1477L4684,1472L4687,1472L4691,1469L4695,1464L4702,1464L4704,1462L4706,1462L4706,1459L4710,1459L4715,1456L4739,1456L4741,1454L4754,1454L4758,1451L4760,1451L4762,1449L4782,1449L4782,1446L4784,1446L4786,1444L4791,1444L4791,1446L4793,1444L4795,1446L4799,1444L4804,1444L4808,1446L4812,1446L4814,1444L4823,1449L4823,1451L4825,1451L4827,1454L4832,1454L4832,1451L4836,1451L4836,1449L4840,1446L4849,1446L4853,1444L4856,1444L4856,1441L4858,1439L4862,1439L4862,1441L4864,1441L4873,1446L4875,1446L4879,1444L4882,1444L4882,1439L4884,1439L4888,1441L4892,1441L4897,1444L4897,1446L4905,1446L4908,1444L4921,1444L4921,1446L4916,1449L4916,1454L4914,1454L4910,1456L4908,1456L4908,1459L4914,1459L4914,1462L4912,1464L4912,1477L4910,1477L4910,1479L4912,1482L4912,1485L4914,1487L4912,1492L4912,1497L4914,1497L4914,1500L4912,1502L4912,1515L4910,1515L4910,1518L4908,1523L4905,1523L4899,1525L4899,1528L4897,1530L4897,1533L4892,1533L4890,1536L4890,1551L4897,1558L4897,1566L4903,1569L4905,1569L4912,1576L4912,1587L4914,1587L4914,1589L4927,1597L4931,1602L4934,1602L4934,1607L4936,1617L4938,1622L4940,1632L4940,1638L4942,1643L4942,1650L4944,1653L4947,1661L4947,1663L4944,1663L4942,1666L4940,1666L4940,1668L4942,1668L4942,1671L4944,1671L4947,1676L4947,1678L4951,1683L4951,1686L4953,1689L4955,1696L4955,1717L4953,1722L4953,1727L4955,1729L4955,1737L4957,1740L4957,1742L4955,1747L4955,1750L4953,1750L4953,1755L4951,1757L4951,1760L4953,1765L4953,1768L4955,1768L4955,1773L4957,1773L4957,1775L4955,1778L4957,1778L4955,1780L4955,1785L4953,1785L4944,1791L4944,1793L4942,1793L4942,1798L4944,1798L4953,1814L4960,1821L4960,1839L4962,1842L4966,1842L4966,1847L4970,1852L4973,1852L4975,1849L4977,1849L4979,1847L4979,1849L4981,1849L4986,1852L4990,1852L4994,1854L4999,1854L5001,1857L5003,1857L5007,1867L5007,1870L5014,1882L5007,1885L5007,1887L4981,1903L4977,1908L4923,1944L4921,1946L4905,1956L4901,1961L4897,1964L4895,1967L4892,1967L4888,1969L4843,2015L4838,2018L4806,2023L4801,2025L4795,2025L4791,2028L4784,2028L4773,2030L4769,2028L4769,2025L4769,2025L4769,2025z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5027,3106L5029,3104L5029,3089L5035,3083L5038,3078L5040,3076L5042,3076L5042,3073L5040,3071L5042,3068L5046,3066L5048,3063L5053,3063L5055,3061L5055,3058L5061,3050L5064,3043L5064,3022L5066,3022L5066,3007L5064,3007L5061,3004L5061,3002L5064,3002L5064,2999L5059,2997L5057,2992L5057,2987L5055,2987L5055,2984L5051,2976L5051,2974L5048,2971L5048,2966L5046,2959L5046,2956L5042,2951L5042,2948L5044,2946L5044,2941L5048,2941L5051,2938L5053,2938L5053,2923L5051,2920L5051,2918L5048,2915L5048,2913L5046,2910L5046,2908L5044,2905L5042,2900L5042,2895L5038,2882L5038,2879L5033,2872L5031,2869L5029,2869L5025,2857L5025,2854L5022,2854L5022,2851L5027,2849L5037,2849L5037,2846L5038,2845L5040,2844L5053,2844L5055,2841L5057,2844L5064,2844L5068,2841L5070,2841L5072,2844L5141,2844L5141,2849L5144,2851L5146,2851L5146,2859L5144,2859L5144,2862L5146,2862L5148,2869L5148,2874L5150,2874L5150,2877L5150,2874L5150,2877L5152,2877L5152,2890L5154,2892L5157,2892L5157,2895L5159,2897L5161,2902L5161,2905L5163,2908L5165,2908L5167,2913L5167,2915L5185,2915L5185,2913L5196,2913L5196,2910L5202,2910L5202,2913L5219,2913L5219,2900L5222,2900L5222,2897L5224,2895L5224,2892L5222,2890L5224,2887L5224,2879L5245,2879L5245,2877L5254,2877L5254,2879L5252,2882L5252,2890L5287,2890L5289,2892L5289,2900L5287,2900L5287,2908L5284,2910L5284,2913L5287,2913L5287,2918L5289,2920L5289,2925L5291,2925L5291,2933L5289,2936L5289,2943L5287,2948L5289,2951L5287,2956L5287,2959L5289,2966L5293,2974L5295,2974L5297,2976L5297,2984L5300,2984L5300,2987L5302,2989L5302,2992L5300,2992L5300,2997L5302,2999L5302,3002L5300,3004L5297,3004L5297,3012L5300,3012L5300,3020L5306,3015L5306,3012L5310,3012L5310,3015L5315,3015L5315,3012L5317,3012L5319,3015L5326,3015L5326,3012L5328,3012L5330,3010L5336,3010L5339,3012L5345,3012L5347,3010L5347,3007L5347,3015L5349,3020L5349,3025L5347,3033L5347,3050L5349,3053L5349,3055L5345,3068L5345,3073L5347,3073L5347,3076L5293,3076L5293,3183L5295,3186L5295,3191L5300,3196L5306,3201L5326,3224L5332,3226L5334,3229L5328,3229L5319,3231L5317,3231L5308,3234L5300,3234L5284,3239L5271,3239L5271,3237L5269,3237L5265,3239L5261,3239L5261,3242L5258,3239L5250,3239L5250,3237L5245,3234L5243,3237L5235,3237L5235,3234L5232,3234L5230,3237L5219,3237L5219,3234L5206,3234L5204,3231L5202,3231L5196,3224L5193,3219L5170,3219L5167,3221L5076,3219L5076,3221L5068,3221L5066,3219L5061,3216L5061,3214L5057,3211L5057,3208L5055,3208L5053,3206L5042,3206L5040,3208L5038,3208L5038,3211L5031,3214L5031,3216L5029,3216L5027,3214L5020,3214L5018,3211L5016,3211L5014,3214L5012,3214L5009,3216L5007,3216L5007,3201L5009,3201L5009,3173L5007,3173L5007,3168L5012,3168L5012,3165L5014,3163L5014,3160L5016,3160L5016,3150L5018,3145L5018,3142L5020,3137L5022,3135L5022,3124L5025,3122L5025,3117L5022,3117L5022,3114L5025,3112L5027,3106L5027,3106L5027,3106zM5044,2803L5038,2806L5035,2811L5033,2811L5033,2813L5029,2818L5029,2839L5020,2839L5018,2836L5018,2834L5020,2834L5020,2831L5020,2834L5020,2826L5018,2823L5016,2818L5016,2816L5018,2811L5020,2811L5020,2808L5025,2808L5025,2803L5027,2803L5027,2800L5033,2800L5033,2798L5035,2795L5040,2795L5040,2798L5044,2803L5044,2803L5044,2803z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5932,1352L5923,1352L5921,1349L5919,1349L5919,1347L5917,1344L5915,1344L5913,1342L5904,1342L5904,1344L5902,1342L5893,1339L5895,1339L5895,1337L5893,1334L5893,1332L5891,1329L5891,1326L5893,1326L5895,1324L5895,1319L5893,1314L5893,1311L5889,1311L5889,1306L5904,1306L5906,1303L5928,1303L5930,1301L5932,1301L5932,1303L5934,1303L5936,1306L5932,1306L5932,1309L5934,1309L5947,1314L5947,1319L5943,1319L5943,1324L5945,1329L5956,1334L5958,1334L5958,1339L5956,1342L5947,1342L5947,1344L5954,1344L5954,1349L5958,1349L5958,1352L5960,1352L5960,1354L5965,1357L5967,1357L5967,1354L5969,1354L5973,1357L5973,1360L5971,1362L5969,1362L5969,1365L5973,1367L5975,1367L5975,1370L5971,1370L5971,1372L5973,1372L5973,1380L5962,1380L5962,1377L5958,1370L5958,1367L5954,1365L5954,1357L5947,1357L5947,1360L5941,1360L5941,1357L5939,1357L5934,1352L5932,1352L5932,1352L5932,1352z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5122,1122L5120,1122L5115,1125L5098,1125L5094,1128L5094,1130L5092,1130L5085,1133L5072,1133L5072,1130L5057,1130L5055,1128L5038,1128L5035,1125L5025,1125L5025,1122L5020,1117L5018,1117L5018,1115L5020,1112L5016,1112L5007,1115L4992,1115L4988,1120L4988,1122L4981,1122L4981,1120L4979,1120L4979,1117L4977,1117L4977,1120L4973,1120L4973,1117L4970,1115L4968,1115L4968,1117L4966,1117L4964,1120L4960,1120L4957,1117L4955,1117L4955,1115L4951,1112L4949,1112L4949,1110L4947,1107L4947,1105L4949,1102L4951,1102L4949,1099L4947,1099L4947,1097L4953,1097L4953,1094L4957,1097L4960,1099L4966,1102L4964,1105L4968,1105L4973,1099L4970,1097L4970,1094L4973,1094L4975,1097L4983,1097L4986,1102L4990,1102L4999,1097L5003,1097L5005,1094L5020,1094L5020,1092L5027,1092L5029,1094L5031,1094L5031,1092L5035,1092L5038,1094L5035,1094L5038,1097L5042,1099L5044,1099L5044,1092L5040,1092L5040,1089L5042,1089L5042,1084L5040,1084L5038,1082L5038,1079L5035,1079L5035,1077L5038,1074L5042,1074L5046,1071L5051,1071L5053,1069L5055,1069L5055,1064L5066,1064L5066,1056L5068,1056L5070,1059L5072,1059L5072,1061L5074,1061L5079,1064L5081,1061L5087,1061L5089,1064L5089,1059L5092,1056L5096,1056L5098,1051L5098,1048L5109,1048L5109,1051L5113,1051L5113,1054L5122,1054L5124,1056L5128,1056L5135,1059L5137,1059L5137,1056L5146,1056L5148,1059L5150,1059L5152,1061L5152,1064L5148,1069L5150,1069L5150,1071L5152,1071L5152,1077L5154,1077L5157,1079L5157,1082L5159,1082L5157,1082L5154,1087L5154,1092L5146,1092L5146,1089L5141,1089L5137,1092L5139,1094L5144,1094L5146,1097L5144,1099L5139,1099L5137,1102L5139,1102L5139,1107L5137,1107L5137,1110L5139,1110L5139,1115L5133,1115L5128,1117L5128,1120L5124,1120L5124,1122L5122,1122L5122,1122L5122,1122z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5932,1352L5934,1352L5939,1357L5941,1357L5941,1360L5947,1360L5947,1357L5954,1357L5954,1365L5958,1367L5958,1370L5962,1377L5962,1380L5965,1380L5954,1380L5947,1377L5945,1377L5943,1375L5941,1370L5934,1370L5934,1365L5932,1365L5932,1362L5930,1362L5930,1360L5928,1360L5928,1354L5926,1354L5926,1352L5932,1352L5932,1352L5932,1352zM6047,1372L6042,1370L6040,1370L6040,1380L6038,1380L6038,1395L6038,1393L6036,1395L6032,1395L6029,1393L6027,1388L6025,1388L6023,1390L6023,1388L6021,1388L6021,1385L6019,1385L6019,1383L6014,1383L6014,1380L6016,1377L6023,1377L6023,1372L6021,1372L6019,1370L6019,1365L6023,1365L6025,1362L6023,1362L6023,1360L6021,1360L6016,1354L6014,1354L6014,1352L6010,1354L6008,1354L6001,1360L5997,1360L5997,1362L5995,1362L5995,1365L5991,1365L5988,1367L5988,1370L5982,1370L5980,1372L5980,1375L5975,1380L5973,1380L5973,1372L5971,1372L5971,1370L5975,1370L5975,1367L5973,1367L5969,1365L5969,1362L5971,1362L5973,1360L5973,1357L5969,1354L5967,1354L5967,1357L5965,1357L5960,1354L5960,1352L5958,1352L5958,1349L5954,1349L5954,1344L5947,1344L5947,1342L5956,1342L5958,1339L5958,1334L5956,1334L5945,1329L5943,1324L5943,1319L5947,1319L5947,1314L5934,1309L5932,1309L5932,1306L5936,1306L5934,1303L5932,1303L5932,1301L5934,1298L5936,1298L5939,1296L5941,1296L5947,1298L5952,1298L5952,1301L5954,1303L5958,1303L5958,1306L5960,1306L5962,1303L5967,1303L5967,1306L5969,1306L5973,1309L5975,1309L5978,1306L5978,1301L5975,1298L5973,1298L5969,1296L5965,1291L5965,1286L5969,1286L5971,1283L5971,1281L5975,1281L5975,1283L5980,1283L5980,1286L5982,1286L5988,1293L5988,1291L5991,1291L5991,1293L5995,1298L5993,1298L5995,1301L5997,1301L6001,1303L6012,1303L6012,1298L6016,1296L6019,1296L6019,1293L6021,1293L6025,1291L6027,1291L6029,1286L6029,1283L6032,1283L6038,1291L6038,1293L6040,1293L6047,1301L6047,1309L6053,1316L6058,1316L6058,1319L6055,1319L6055,1321L6058,1321L6058,1324L6071,1324L6077,1326L6079,1329L6079,1334L6077,1334L6077,1332L6066,1332L6058,1337L6055,1337L6055,1339L6053,1342L6055,1342L6055,1344L6053,1347L6053,1354L6051,1354L6051,1357L6049,1360L6051,1360L6051,1362L6053,1362L6053,1365L6049,1365L6049,1367L6047,1372L6047,1372L6047,1372z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6164,2242L6164,2237L6166,2234L6168,2234L6170,2237L6172,2237L6175,2239L6177,2239L6181,2237L6188,2237L6194,2239L6194,2242L6192,2245L6188,2245L6185,2247L6181,2247L6175,2250L6170,2247L6168,2247L6164,2242L6164,2242L6164,2242zM5882,2204L5882,2196L5878,2196L5878,2183L5876,2178L5876,2173L5874,2171L5874,2163L5871,2158L5871,2155L5869,2155L5867,2153L5867,2150L5869,2153L5869,2142L5867,2142L5867,2137L5869,2137L5869,2132L5871,2132L5871,2125L5869,2117L5871,2114L5874,2114L5878,2109L5878,2107L5880,2107L5880,2102L5878,2099L5878,2097L5880,2091L5880,2084L5882,2081L5884,2081L5884,2079L5893,2079L5893,2081L5895,2081L5895,2084L5897,2084L5902,2086L5906,2084L5908,2086L5934,2086L5939,2089L5965,2091L5971,2089L5986,2109L5991,2109L5997,2086L6016,2058L6084,2048L6125,2030L6146,2084L6146,2086L6149,2086L6157,2107L6153,2107L6151,2109L6149,2109L6146,2112L6142,2112L6140,2114L6138,2114L6131,2122L6129,2127L6129,2130L6131,2132L6131,2140L6127,2142L6125,2142L6118,2148L6116,2148L6116,2150L6112,2150L6105,2155L6097,2155L6094,2158L6090,2158L6086,2160L6081,2160L6071,2168L6071,2165L6068,2165L6049,2176L6045,2176L6045,2178L6042,2178L6042,2183L6038,2188L6034,2191L6034,2193L6032,2191L6029,2191L6029,2193L6019,2193L6016,2191L6014,2191L6012,2193L6010,2193L6010,2196L6006,2196L6006,2199L6003,2199L5999,2204L5997,2204L5997,2206L5991,2206L5986,2209L5982,2209L5982,2211L5978,2211L5971,2214L5969,2213L5949,2214L5949,2216L5947,2216L5945,2219L5945,2222L5943,2222L5943,2224L5939,2224L5936,2227L5934,2227L5934,2229L5926,2234L5923,2234L5921,2232L5919,2232L5915,2237L5910,2237L5908,2239L5902,2239L5902,2237L5897,2237L5895,2234L5891,2234L5891,2237L5889,2237L5889,2232L5887,2227L5882,2222L5882,2204L5882,2204L5882,2204z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5605,2969L5605,2966L5598,2966L5596,2961L5596,2959L5594,2959L5592,2956L5590,2956L5588,2953L5583,2953L5583,2951L5577,2951L5577,2948L5572,2948L5572,2946L5570,2946L5570,2948L5568,2948L5568,2943L5566,2943L5564,2941L5564,2943L5562,2943L5559,2941L5557,2941L5557,2938L5553,2933L5549,2933L5547,2936L5542,2937L5536,2934L5535,2931L5529,2932L5526,2925L5530,2923L5530,2920L5527,2920L5521,2923L5512,2923L5503,2925L5497,2925L5492,2928L5484,2928L5484,2931L5485,2932L5489,2930L5492,2935L5491,2942L5488,2947L5484,2950L5483,2955L5478,2961L5473,2961L5477,2969L5477,2976L5475,2979L5477,2984L5475,2987L5477,2994L5477,3002L5475,3002L5475,3007L5473,3010L5473,3020L5471,3020L5471,3022L5469,3025L5469,3030L5471,3030L5471,3038L5473,3040L5477,3043L5479,3043L5482,3048L5484,3050L5486,3050L5486,3053L5488,3055L5495,3055L5497,3058L5501,3058L5501,3055L5499,3055L5499,3053L5501,3050L5503,3050L5508,3048L5510,3048L5510,3091L5505,3091L5503,3089L5505,3086L5505,3083L5501,3083L5501,3086L5499,3086L5495,3089L5492,3091L5490,3089L5486,3089L5486,3083L5482,3078L5479,3073L5477,3071L5475,3071L5474,3070L5473,3068L5473,3066L5471,3061L5469,3058L5464,3058L5460,3055L5458,3053L5449,3053L5449,3050L5447,3050L5447,3048L5445,3048L5445,3043L5443,3040L5440,3040L5438,3038L5438,3030L5432,3030L5432,3040L5430,3040L5427,3043L5421,3043L5417,3040L5404,3040L5395,3035L5388,3035L5384,3030L5384,3017L5382,3017L5382,3020L5375,3020L5369,3022L5367,3022L5365,3025L5362,3025L5360,3027L5360,3025L5358,3025L5358,3020L5360,3020L5360,3017L5356,3012L5354,3012L5352,3010L5352,3007L5347,3007L5347,3015L5349,3020L5349,3025L5347,3033L5347,3050L5349,3053L5349,3055L5345,3068L5345,3073L5347,3073L5347,3076L5293,3076L5293,3183L5295,3186L5295,3191L5300,3196L5306,3201L5326,3224L5332,3226L5334,3229L5349,3224L5373,3224L5375,3226L5378,3226L5382,3231L5382,3234L5388,3234L5391,3237L5393,3234L5395,3234L5397,3237L5399,3237L5399,3239L5406,3239L5406,3237L5414,3237L5414,3239L5419,3239L5419,3242L5423,3242L5427,3239L5432,3239L5436,3237L5436,3234L5440,3226L5445,3221L5449,3219L5449,3214L5451,3211L5453,3206L5460,3203L5462,3201L5475,3193L5479,3193L5482,3191L5482,3180L5484,3175L5484,3173L5486,3173L5488,3170L5492,3168L5495,3168L5497,3165L5503,3163L5525,3163L5525,3152L5523,3152L5523,3150L5521,3150L5521,3142L5529,3137L5531,3137L5538,3135L5540,3135L5544,3132L5551,3132L5555,3129L5557,3129L5557,3127L5562,3124L5566,3124L5568,3122L5572,3122L5577,3119L5581,3119L5601,3109L5598,3106L5594,3104L5592,3099L5592,3096L5590,3096L5590,3094L5592,3094L5596,3089L5596,3078L5598,3078L5598,3073L5596,3071L5596,3068L5598,3063L5605,3063L5607,3061L5611,3058L5611,3055L5614,3055L5611,3053L5609,3055L5607,3055L5607,3053L5605,3048L5605,3045L5607,3045L5607,3030L5605,3030L5605,3022L5609,3017L5609,3015L5607,3015L5607,3012L5605,3007L5607,3004L5611,3004L5614,3002L5614,2999L5616,2999L5616,2994L5614,2992L5614,2987L5611,2984L5607,2981L5607,2971L5605,2969L5605,2969L5605,2969z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5588,903L5590,903L5590,906L5588,908L5583,911L5581,911L5577,916L5568,916L5564,913L5564,911L5553,911L5553,916L5551,916L5549,918L5553,921L5555,921L5555,924L5557,924L5559,926L5557,929L5555,929L5557,931L5559,931L5559,941L5562,944L5564,944L5564,946L5551,946L5551,949L5540,949L5540,952L5538,952L5531,959L5531,962L5529,962L5529,967L5531,967L5531,972L5529,975L5527,975L5525,972L5525,969L5521,967L5514,967L5512,969L5508,969L5508,967L5503,967L5499,969L5497,972L5495,972L5495,967L5492,967L5492,964L5490,964L5490,962L5488,962L5482,964L5482,967L5479,967L5479,969L5477,969L5477,964L5469,964L5466,962L5464,962L5464,964L5453,964L5453,967L5451,969L5449,967L5451,967L5451,964L5438,964L5436,962L5436,959L5425,959L5425,957L5414,957L5417,957L5408,957L5408,954L5384,954L5384,952L5378,952L5378,954L5358,954L5356,957L5356,959L5349,964L5345,964L5345,962L5339,962L5336,964L5339,964L5339,967L5336,967L5334,964L5334,962L5336,959L5336,952L5339,952L5339,949L5336,946L5330,944L5326,944L5326,941L5328,939L5330,934L5332,934L5334,931L5341,931L5345,929L5345,918L5343,911L5341,908L5339,903L5339,901L5336,898L5336,895L5334,890L5334,888L5356,888L5358,890L5358,888L5362,888L5365,885L5367,885L5369,888L5371,885L5371,883L5369,883L5371,880L5380,880L5382,878L5386,878L5388,875L5391,875L5391,872L5393,867L5397,867L5397,865L5395,865L5395,860L5397,860L5397,857L5399,855L5408,855L5410,852L5410,847L5421,847L5425,844L5425,842L5417,842L5419,839L5421,834L5421,829L5427,829L5427,827L5432,827L5436,824L5436,827L5449,827L5449,821L5451,821L5453,819L5456,819L5456,816L5458,816L5462,814L5464,814L5464,816L5466,819L5469,819L5469,816L5477,816L5477,819L5479,819L5479,821L5484,821L5486,819L5492,819L5497,821L5499,821L5499,824L5497,827L5497,829L5501,829L5512,824L5521,824L5531,829L5536,834L5538,832L5540,832L5540,839L5538,842L5538,844L5540,847L5542,847L5542,852L5540,855L5538,855L5536,857L5536,860L5540,860L5546,867L5544,867L5544,870L5549,870L5551,875L5551,878L5562,883L5566,883L5566,890L5564,890L5564,893L5570,893L5572,890L5583,895L5581,898L5581,901L5583,901L5588,903L5588,903L5588,903z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4843,980L4843,982L4838,987L4838,990L4840,990L4838,992L4849,992L4853,995L4856,995L4856,1000L4858,1000L4858,1003L4860,1005L4858,1005L4856,1008L4853,1008L4853,1010L4851,1010L4851,1013L4849,1010L4847,1010L4845,1013L4843,1018L4840,1018L4840,1023L4843,1023L4845,1026L4845,1031L4836,1031L4834,1033L4834,1031L4832,1031L4832,1028L4830,1028L4821,1023L4817,1023L4814,1015L4817,1015L4817,1010L4814,1010L4814,1013L4812,1013L4812,1015L4810,1015L4806,1018L4797,1018L4797,1008L4793,1005L4786,1005L4784,1003L4782,1003L4782,1000L4773,1000L4773,997L4771,995L4771,992L4769,992L4769,990L4767,990L4765,992L4758,992L4754,990L4754,985L4752,980L4760,977L4762,975L4767,975L4767,972L4775,972L4777,973L4796,973L4797,975L4799,972L4804,972L4804,969L4806,967L4808,967L4808,969L4812,969L4812,967L4817,967L4817,969L4814,969L4821,969L4821,967L4823,969L4823,972L4825,975L4836,975L4836,977L4843,977L4843,980L4843,980L4843,980z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2222,2120L2218,2120L2218,2122L2213,2127L2211,2127L2211,2132L2209,2132L2205,2130L2205,2084L2207,2071L2207,2069L2205,2063L2211,2063L2213,2066L2218,2061L2218,2056L2220,2056L2222,2053L2224,2048L2224,2046L2226,2046L2226,2048L2228,2048L2228,2051L2235,2051L2235,2061L2233,2063L2233,2066L2231,2069L2231,2081L2228,2084L2228,2091L2231,2091L2231,2102L2222,2120L2222,2120L2222,2120z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4728,2423L4728,2390L4726,2377L4726,2352L4723,2352L4723,2349L4721,2349L4721,2347L4719,2344L4719,2324L4717,2324L4715,2321L4710,2318L4708,2316L4702,2311L4704,2308L4704,2301L4706,2298L4706,2293L4708,2290L4708,2288L4710,2288L4715,2283L4719,2283L4719,2278L4739,2278L4743,2273L4743,2270L4745,2270L4747,2267L4747,2250L4756,2250L4756,2247L4760,2247L4765,2250L4771,2257L4771,2260L4773,2262L4778,2262L4778,2265L4780,2265L4780,2267L4782,2270L4780,2270L4780,2273L4778,2278L4782,2283L4784,2288L4784,2290L4786,2290L4786,2301L4788,2301L4788,2306L4786,2311L4782,2311L4780,2316L4782,2318L4784,2318L4784,2321L4782,2326L4780,2329L4778,2329L4775,2331L4773,2331L4773,2334L4775,2334L4769,2341L4769,2352L4767,2354L4758,2354L4758,2375L4756,2375L4756,2382L4758,2382L4758,2385L4756,2387L4756,2395L4758,2395L4758,2420L4756,2423L4758,2426L4758,2436L4756,2438L4756,2443L4745,2443L4739,2446L4732,2446L4730,2441L4728,2438L4728,2436L4726,2436L4726,2423L4728,2423L4728,2423L4728,2423z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7147,1763L7147,1760L7151,1760L7151,1752L7156,1752L7156,1747L7158,1747L7158,1742L7160,1742L7162,1740L7164,1740L7164,1734L7167,1734L7171,1729L7175,1729L7175,1727L7177,1727L7180,1724L7182,1724L7186,1727L7193,1727L7193,1729L7190,1729L7190,1732L7193,1734L7195,1732L7197,1734L7199,1734L7200,1736L7201,1734L7208,1734L7208,1737L7212,1737L7212,1734L7214,1734L7214,1732L7216,1732L7216,1734L7221,1734L7221,1737L7227,1737L7227,1745L7225,1745L7225,1750L7229,1755L7236,1755L7236,1752L7238,1757L7240,1757L7240,1760L7238,1763L7236,1763L7236,1765L7238,1768L7238,1770L7240,1770L7238,1773L7232,1773L7229,1775L7223,1775L7223,1773L7219,1773L7219,1775L7195,1775L7193,1773L7186,1773L7186,1775L7184,1775L7184,1778L7171,1778L7171,1775L7167,1775L7162,1773L7160,1773L7160,1775L7156,1775L7156,1773L7154,1770L7149,1770L7149,1765L7147,1765L7147,1763L7147,1763L7147,1763z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2872,3035L2874,3033L2874,3035L2876,3038L2876,3045L2882,3045L2882,3048L2887,3050L2889,3050L2889,3055L2891,3055L2891,3058L2893,3058L2895,3061L2908,3061L2908,3058L2913,3058L2919,3063L2919,3066L2930,3066L2930,3068L2934,3073L2937,3073L2939,3076L2941,3076L2941,3078L2947,3081L2956,3081L2956,3086L2958,3089L2960,3089L2963,3091L2963,3094L2986,3094L2989,3096L2993,3099L2995,3099L2997,3101L3002,3101L3002,3104L3004,3109L3004,3112L3002,3112L3002,3119L3004,3119L3008,3129L3008,3145L2999,3145L3004,3150L3008,3157L3010,3183L3060,3186L3060,3183L3062,3183L3062,3188L3060,3191L3060,3193L3058,3193L3058,3208L3060,3211L3060,3216L3062,3216L3067,3221L3069,3221L3071,3224L3073,3221L3073,3224L3077,3226L3077,3234L3082,3244L3084,3247L3084,3249L3082,3249L3082,3254L3077,3270L3080,3275L3077,3275L3075,3277L3075,3280L3071,3288L3069,3295L3075,3305L3073,3305L3067,3310L3067,3300L3064,3298L3062,3298L3041,3285L3038,3285L3032,3282L3012,3282L3004,3285L3002,3288L2993,3288L2978,3293L2967,3293L2965,3295L2963,3303L2963,3308L2956,3316L2954,3321L2952,3323L2952,3339L2950,3351L2945,3361L2945,3367L2943,3374L2941,3377L2941,3379L2937,3374L2937,3372L2906,3372L2904,3374L2900,3384L2900,3387L2898,3387L2898,3390L2895,3392L2895,3400L2893,3400L2893,3392L2891,3392L2891,3387L2889,3384L2889,3379L2887,3377L2885,3377L2878,3374L2854,3374L2846,3364L2841,3364L2841,3372L2839,3374L2837,3374L2835,3377L2828,3377L2828,3379L2826,3382L2826,3384L2824,3384L2822,3387L2820,3387L2820,3392L2815,3397L2811,3400L2798,3400L2796,3397L2796,3390L2798,3390L2794,3379L2796,3379L2794,3374L2794,3372L2791,3369L2789,3369L2789,3359L2787,3359L2787,3346L2781,3336L2778,3336L2776,3333L2776,3328L2778,3328L2778,3323L2774,3323L2774,3321L2772,3321L2772,3316L2774,3316L2772,3313L2772,3308L2776,3308L2776,3305L2778,3303L2776,3300L2776,3298L2774,3298L2774,3295L2776,3293L2776,3290L2778,3290L2781,3288L2781,3285L2778,3285L2778,3282L2774,3282L2774,3280L2772,3277L2768,3275L2765,3272L2768,3270L2765,3267L2765,3265L2763,3262L2763,3247L2761,3247L2761,3244L2763,3242L2761,3242L2757,3239L2757,3234L2752,3229L2750,3229L2750,3219L2748,3216L2746,3216L2750,3211L2752,3211L2757,3206L2759,3201L2761,3198L2763,3198L2763,3191L2765,3188L2770,3186L2770,3183L2765,3180L2763,3180L2763,3183L2761,3183L2761,3180L2759,3180L2752,3163L2757,3155L2757,3152L2759,3150L2761,3150L2761,3147L2759,3147L2755,3142L2755,3135L2757,3135L2759,3132L2759,3127L2761,3124L2765,3122L2765,3117L2770,3117L2770,3114L2768,3112L2768,3109L2765,3109L2765,3101L2763,3099L2763,3096L2765,3096L2765,3071L2768,3071L2768,3068L2770,3068L2772,3066L2772,3063L2774,3061L2774,3058L2772,3055L2768,3045L2768,3043L2765,3043L2765,3040L2763,3038L2763,3035L2759,3030L2759,3027L2750,3012L2748,3010L2763,3010L2770,3012L2772,3015L2778,3015L2778,3012L2785,3012L2785,3010L2789,3004L2789,3002L2791,3002L2791,2999L2798,2999L2800,3002L2804,2997L2804,2994L2807,2994L2811,2989L2815,2989L2817,2987L2820,2987L2822,2984L2822,2981L2824,2981L2828,2976L2830,2976L2830,2974L2837,2974L2843,2971L2854,2971L2859,2974L2861,2974L2861,2969L2865,2969L2867,2971L2867,2989L2865,2989L2865,2994L2863,2994L2863,2999L2865,3002L2867,3007L2867,3012L2865,3015L2865,3020L2867,3025L2867,3027L2869,3027L2872,3030L2872,3033L2869,3033L2869,3035L2872,3035L2872,3035L2872,3035z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5202,1181L5202,1184L5213,1184L5213,1181L5215,1181L5217,1184L5219,1184L5219,1186L5217,1189L5215,1194L5211,1199L5211,1201L5213,1201L5213,1204L5215,1204L5219,1207L5222,1209L5226,1212L5224,1214L5219,1214L5217,1212L5215,1212L5215,1214L5219,1217L5224,1222L5222,1227L5217,1227L5215,1230L5215,1227L5209,1227L5209,1232L5211,1235L5211,1237L5209,1237L5209,1235L5204,1235L5200,1237L5200,1245L5196,1245L5196,1247L5193,1247L5193,1250L5196,1252L5196,1255L5198,1255L5198,1258L5196,1258L5193,1260L5193,1258L5187,1258L5185,1255L5180,1252L5178,1250L5176,1250L5176,1247L5172,1247L5172,1242L5170,1242L5161,1237L5161,1230L5157,1230L5154,1227L5152,1227L5152,1224L5148,1222L5146,1219L5146,1217L5144,1217L5144,1214L5141,1212L5137,1212L5135,1209L5135,1207L5128,1207L5131,1201L5128,1196L5126,1194L5126,1191L5124,1189L5122,1189L5120,1186L5118,1186L5120,1181L5120,1173L5126,1173L5131,1179L5133,1179L5133,1181L5139,1173L5150,1173L5150,1171L5159,1176L5161,1176L5161,1173L5167,1176L5174,1176L5176,1179L5178,1179L5178,1176L5185,1176L5187,1179L5187,1176L5198,1176L5202,1181L5202,1181L5202,1181z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5300,3244L5306,3244L5310,3242L5321,3239L5328,3239L5328,3242L5330,3242L5330,3244L5332,3247L5334,3247L5334,3249L5336,3249L5336,3252L5334,3252L5336,3254L5336,3257L5339,3254L5341,3254L5343,3252L5343,3249L5345,3249L5345,3247L5347,3247L5347,3244L5356,3239L5360,3239L5360,3242L5365,3242L5371,3234L5380,3234L5380,3234L5382,3234L5382,3237L5384,3239L5384,3242L5388,3247L5388,3252L5391,3252L5395,3257L5395,3259L5397,3262L5399,3267L5401,3270L5404,3270L5404,3272L5401,3275L5401,3277L5404,3277L5404,3280L5406,3282L5406,3285L5408,3290L5410,3290L5410,3293L5412,3293L5414,3295L5419,3298L5419,3300L5423,3300L5423,3303L5430,3305L5434,3305L5436,3308L5438,3308L5438,3313L5440,3316L5438,3318L5438,3321L5451,3321L5451,3336L5449,3341L5451,3341L5451,3344L5453,3344L5453,3346L5456,3346L5456,3349L5458,3351L5460,3356L5469,3356L5469,3359L5477,3359L5484,3361L5484,3364L5488,3364L5488,3372L5490,3372L5490,3374L5492,3374L5495,3372L5495,3374L5497,3377L5488,3377L5486,3382L5486,3384L5484,3384L5482,3387L5477,3390L5466,3390L5464,3392L5464,3395L5458,3402L5458,3405L5453,3410L5447,3410L5447,3415L5443,3415L5440,3418L5436,3420L5434,3423L5434,3425L5430,3425L5430,3433L5427,3438L5427,3446L5423,3446L5419,3451L5417,3451L5417,3456L5410,3456L5408,3458L5404,3458L5401,3461L5399,3461L5399,3471L5395,3484L5393,3486L5393,3489L5391,3492L5386,3492L5386,3494L5378,3494L5378,3492L5375,3492L5375,3494L5373,3494L5371,3497L5365,3497L5365,3494L5358,3494L5356,3492L5354,3492L5354,3489L5347,3489L5347,3492L5341,3484L5339,3484L5339,3481L5336,3481L5334,3479L5332,3479L5328,3476L5326,3476L5321,3479L5319,3479L5317,3481L5315,3486L5315,3492L5313,3492L5313,3502L5310,3502L5310,3504L5306,3507L5302,3512L5300,3512L5297,3514L5297,3517L5293,3522L5287,3522L5287,3527L5284,3527L5284,3530L5278,3530L5276,3527L5274,3527L5274,3530L5265,3530L5263,3527L5258,3527L5258,3530L5256,3530L5254,3527L5254,3514L5256,3514L5256,3512L5258,3512L5258,3509L5261,3507L5258,3497L5256,3494L5256,3486L5254,3484L5254,3481L5252,3479L5250,3474L5243,3466L5241,3466L5237,3461L5237,3372L5265,3372L5265,3249L5300,3244L5300,3244z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7873,2494L7870,2494L7868,2497L7870,2502L7870,2515L7866,2520L7864,2520L7864,2517L7860,2515L7855,2510L7855,2505L7853,2505L7853,2502L7849,2502L7855,2502L7862,2497L7864,2497L7864,2494L7866,2494L7866,2492L7868,2492L7873,2487L7877,2487L7877,2489L7875,2492L7875,2493L7877,2494L7879,2492L7881,2492L7881,2497L7883,2500L7883,2502L7881,2502L7883,2505L7883,2507L7886,2510L7883,2510L7879,2507L7877,2507L7875,2500L7875,2497L7873,2494L7873,2494L7873,2494z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5460,1278L5451,1278L5449,1281L5447,1281L5443,1278L5440,1275L5432,1275L5430,1278L5421,1278L5419,1281L5419,1283L5414,1283L5412,1286L5412,1288L5414,1288L5410,1288L5410,1286L5408,1286L5406,1288L5406,1291L5408,1291L5408,1298L5404,1301L5399,1301L5397,1298L5393,1301L5391,1301L5384,1303L5382,1303L5382,1301L5380,1301L5378,1298L5369,1298L5365,1296L5362,1293L5356,1293L5356,1291L5354,1291L5354,1293L5349,1293L5349,1296L5343,1296L5341,1298L5326,1298L5326,1301L5323,1301L5319,1298L5319,1288L5321,1288L5321,1286L5319,1286L5319,1283L5317,1283L5317,1281L5315,1278L5310,1275L5308,1275L5306,1273L5304,1268L5302,1268L5304,1268L5304,1265L5306,1265L5306,1263L5308,1263L5308,1260L5306,1260L5304,1258L5304,1250L5308,1250L5308,1247L5310,1250L5313,1250L5319,1242L5319,1237L5315,1237L5315,1235L5313,1232L5310,1232L5308,1230L5306,1230L5304,1222L5302,1219L5304,1212L5308,1212L5308,1209L5310,1207L5310,1204L5310,1207L5313,1207L5317,1209L5321,1209L5321,1212L5317,1212L5317,1214L5315,1217L5317,1217L5319,1219L5323,1219L5326,1217L5334,1217L5334,1219L5341,1219L5347,1222L5360,1222L5362,1219L5365,1219L5365,1222L5382,1222L5384,1224L5393,1224L5395,1222L5397,1222L5401,1217L5406,1214L5408,1214L5408,1212L5417,1212L5421,1209L5430,1209L5432,1207L5434,1209L5440,1209L5443,1212L5451,1212L5451,1214L5456,1214L5456,1212L5458,1212L5458,1217L5460,1217L5462,1219L5466,1219L5471,1222L5475,1222L5475,1230L5473,1232L5462,1232L5462,1235L5460,1235L5460,1237L5458,1240L5456,1245L5456,1255L5451,1255L5449,1258L5445,1260L5443,1263L5449,1263L5449,1265L5451,1265L5451,1270L5453,1270L5460,1278L5460,1278L5460,1278z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4708,2209L4710,2211L4714,2212L4715,2214L4717,2214L4715,2216L4713,2216L4710,2214L4708,2214L4708,2227L4713,2227L4726,2239L4732,2239L4736,2234L4741,2234L4741,2237L4743,2239L4743,2245L4741,2245L4739,2247L4745,2260L4747,2262L4747,2267L4745,2270L4743,2270L4743,2273L4739,2278L4719,2278L4719,2283L4715,2283L4710,2288L4708,2288L4708,2290L4706,2293L4704,2290L4702,2290L4700,2293L4695,2293L4695,2290L4687,2290L4682,2288L4676,2288L4674,2285L4674,2288L4671,2288L4665,2295L4663,2293L4663,2290L4650,2290L4652,2290L4602,2290L4602,2295L4600,2301L4600,2308L4602,2313L4604,2316L4604,2339L4606,2339L4606,2344L4604,2344L4600,2339L4600,2336L4593,2329L4591,2329L4587,2326L4576,2326L4574,2329L4572,2329L4570,2331L4568,2329L4563,2334L4563,2336L4559,2336L4557,2334L4548,2334L4548,2329L4544,2326L4544,2321L4539,2313L4533,2313L4533,2316L4531,2316L4531,2313L4529,2313L4529,2301L4531,2301L4531,2295L4529,2290L4529,2288L4535,2288L4535,2283L4537,2278L4537,2273L4535,2273L4535,2265L4537,2260L4544,2260L4550,2257L4552,2257L4552,2255L4557,2250L4559,2250L4559,2242L4561,2242L4559,2239L4559,2237L4557,2237L4557,2234L4565,2234L4565,2227L4563,2227L4561,2222L4565,2216L4572,2211L4576,2214L4583,2222L4585,2222L4587,2219L4585,2219L4585,2216L4591,2216L4591,2204L4596,2204L4600,2206L4602,2204L4600,2204L4600,2199L4602,2193L4602,2191L4609,2188L4609,2186L4613,2183L4615,2186L4619,2186L4622,2188L4626,2188L4626,2178L4635,2178L4643,2171L4645,2171L4650,2168L4652,2168L4661,2158L4669,2158L4671,2160L4674,2158L4689,2163L4689,2165L4687,2165L4689,2168L4687,2171L4687,2181L4691,2181L4691,2183L4693,2186L4693,2188L4691,2188L4693,2196L4695,2199L4697,2204L4704,2204L4708,2209L4708,2209L4708,2209z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5498,2763L5497,2771L5498,2780L5502,2787L5505,2796L5504,2798L5505,2798L5508,2795L5512,2793L5518,2785L5523,2775L5525,2775L5525,2772L5527,2767L5529,2765L5531,2765L5533,2762L5531,2762L5531,2760L5536,2760L5538,2757L5538,2749L5533,2749L5533,2747L5527,2747L5527,2744L5525,2744L5529,2732L5531,2729L5527,2729L5527,2726L5525,2726L5523,2729L5518,2732L5514,2726L5512,2726L5512,2742L5503,2742L5501,2744L5499,2742L5497,2744L5497,2739L5495,2737L5488,2737L5488,2742L5486,2742L5486,2744L5490,2749L5492,2749L5492,2765L5493,2765L5494,2763L5498,2763L5498,2763L5498,2763z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7535,2257L7535,2245L7533,2239L7530,2239L7530,2237L7528,2237L7528,2227L7526,2222L7524,2222L7524,2206L7524,2209L7528,2209L7528,2206L7530,2206L7530,2204L7535,2201L7535,2196L7537,2196L7537,2193L7539,2193L7539,2188L7541,2186L7543,2186L7543,2183L7548,2183L7550,2181L7559,2181L7561,2178L7561,2181L7567,2183L7569,2183L7572,2181L7587,2181L7587,2178L7591,2178L7593,2181L7598,2181L7598,2186L7602,2186L7602,2181L7604,2183L7602,2183L7604,2183L7604,2188L7606,2191L7608,2191L7611,2188L7613,2188L7617,2191L7619,2191L7619,2193L7621,2196L7628,2196L7630,2191L7626,2186L7626,2181L7632,2181L7632,2178L7637,2178L7637,2176L7639,2176L7639,2173L7641,2173L7641,2176L7643,2178L7645,2178L7645,2181L7647,2183L7650,2183L7656,2181L7663,2173L7667,2173L7667,2171L7669,2171L7669,2173L7667,2176L7667,2181L7665,2181L7665,2178L7665,2181L7663,2181L7663,2193L7667,2196L7667,2199L7665,2201L7671,2209L7671,2214L7669,2216L7667,2227L7667,2232L7669,2232L7669,2247L7667,2247L7665,2250L7663,2250L7663,2247L7660,2247L7660,2250L7658,2250L7652,2257L7647,2257L7645,2260L7637,2260L7639,2262L7637,2265L7637,2267L7639,2270L7632,2270L7632,2267L7628,2267L7626,2265L7626,2267L7624,2270L7621,2270L7619,2273L7621,2273L7621,2283L7624,2285L7628,2288L7630,2288L7630,2298L7628,2298L7624,2295L7621,2295L7619,2290L7617,2290L7617,2293L7608,2293L7608,2295L7602,2295L7600,2293L7598,2295L7600,2298L7600,2301L7598,2301L7598,2303L7595,2303L7595,2306L7593,2306L7593,2308L7589,2308L7589,2306L7587,2306L7582,2311L7578,2308L7578,2306L7563,2306L7563,2308L7559,2308L7556,2306L7556,2301L7561,2301L7561,2290L7556,2288L7556,2285L7554,2288L7554,2290L7552,2293L7552,2295L7546,2295L7543,2293L7546,2293L7546,2285L7543,2285L7543,2275L7541,2275L7535,2257L7535,2257L7535,2257z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5115,2324L5113,2326L5105,2326L5105,2324L5100,2324L5100,2326L5087,2326L5083,2324L5076,2326L5074,2326L5074,2329L5072,2331L5070,2331L5070,2334L5068,2336L5070,2336L5079,2349L5081,2349L5079,2352L5085,2357L5087,2359L5094,2364L5094,2362L5094,2364L5096,2364L5100,2369L5102,2375L5105,2375L5105,2380L5107,2385L5109,2385L5109,2392L5111,2392L5111,2398L5113,2398L5113,2403L5111,2405L5111,2410L5109,2410L5107,2413L5105,2413L5105,2415L5102,2420L5102,2423L5100,2423L5100,2431L5096,2431L5096,2433L5094,2441L5092,2443L5092,2446L5085,2449L5083,2451L5083,2454L5081,2454L5083,2459L5085,2459L5085,2456L5087,2456L5087,2474L5085,2477L5085,2479L5087,2479L5087,2482L5089,2482L5089,2500L5092,2500L5092,2502L5094,2505L5096,2505L5100,2510L5100,2515L5102,2517L5098,2520L5100,2522L5100,2525L5102,2525L5105,2530L5113,2543L5120,2548L5120,2551L5124,2551L5128,2556L5128,2573L5131,2579L5131,2581L5128,2579L5128,2591L5131,2594L5128,2596L5126,2596L5126,2594L5124,2594L5120,2589L5115,2589L5111,2586L5107,2586L5105,2584L5102,2584L5100,2586L5094,2586L5094,2584L5092,2584L5089,2581L5051,2581L5051,2576L5046,2576L5042,2579L5031,2579L5029,2576L4996,2576L4996,2581L4957,2581L4957,2579L4955,2579L4955,2576L4953,2576L4953,2568L4955,2558L4955,2556L4957,2553L4957,2545L4949,2535L4951,2533L4949,2533L4947,2528L4949,2525L4951,2525L4951,2522L4949,2521L4947,2521L4944,2522L4942,2525L4942,2522L4940,2522L4938,2520L4934,2520L4931,2517L4929,2517L4931,2515L4931,2512L4929,2512L4929,2502L4927,2500L4927,2502L4923,2502L4923,2505L4918,2505L4918,2500L4921,2494L4921,2492L4923,2489L4923,2487L4925,2482L4927,2482L4927,2469L4929,2469L4929,2466L4927,2466L4927,2461L4934,2454L4938,2451L4940,2446L4942,2443L4944,2443L4944,2441L4947,2441L4949,2438L4951,2438L4951,2433L4953,2431L4953,2428L4955,2431L4955,2428L4962,2423L4964,2420L4964,2426L4973,2426L4975,2420L4977,2420L4979,2423L4983,2423L4983,2428L4986,2431L4990,2431L4990,2433L4988,2436L4990,2438L4990,2441L4999,2441L4999,2436L5001,2436L5003,2433L5003,2426L5005,2423L5007,2423L5012,2420L5012,2418L5009,2415L5009,2413L5007,2413L5009,2413L5009,2410L5012,2410L5012,2408L5016,2403L5016,2398L5018,2395L5018,2392L5020,2392L5020,2385L5022,2385L5022,2382L5020,2380L5020,2377L5022,2377L5022,2375L5025,2377L5025,2375L5027,2375L5027,2372L5025,2372L5025,2369L5033,2369L5033,2367L5038,2364L5038,2354L5042,2341L5046,2341L5046,2339L5048,2339L5048,2336L5051,2331L5048,2329L5048,2321L5053,2321L5055,2318L5055,2316L5057,2308L5057,2303L5059,2303L5059,2301L5061,2298L5061,2295L5066,2290L5068,2285L5070,2283L5076,2283L5079,2280L5081,2280L5081,2278L5083,2278L5087,2275L5087,2252L5085,2252L5085,2250L5083,2247L5074,2247L5074,2245L5076,2245L5076,2242L5074,2239L5072,2227L5072,2224L5083,2224L5083,2227L5085,2227L5085,2234L5089,2234L5094,2237L5094,2239L5096,2247L5096,2252L5094,2252L5094,2255L5098,2255L5098,2257L5100,2267L5100,2278L5098,2278L5098,2288L5100,2295L5100,2301L5102,2303L5102,2308L5109,2316L5111,2321L5113,2321L5113,2324L5115,2324L5115,2324L5115,2324z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5443,2484L5440,2484L5436,2482L5432,2482L5430,2484L5427,2484L5427,2487L5425,2487L5425,2484L5423,2484L5421,2487L5417,2487L5417,2484L5414,2484L5408,2479L5406,2479L5406,2482L5399,2482L5399,2479L5395,2479L5391,2474L5391,2477L5386,2477L5384,2479L5384,2482L5386,2482L5386,2484L5384,2484L5384,2487L5380,2487L5378,2489L5369,2489L5369,2492L5365,2489L5365,2487L5362,2484L5358,2484L5358,2487L5345,2494L5343,2494L5332,2500L5332,2502L5330,2502L5330,2500L5326,2497L5321,2497L5319,2494L5317,2494L5313,2500L5313,2502L5310,2505L5308,2505L5308,2512L5306,2512L5306,2515L5304,2515L5304,2517L5300,2517L5300,2515L5295,2515L5295,2512L5287,2512L5284,2510L5282,2510L5280,2512L5269,2512L5269,2510L5267,2510L5267,2507L5261,2507L5261,2505L5256,2507L5252,2507L5250,2505L5250,2500L5245,2494L5237,2489L5235,2489L5235,2487L5232,2487L5232,2484L5226,2484L5224,2482L5222,2484L5219,2484L5215,2487L5215,2489L5211,2489L5211,2492L5209,2494L5209,2497L5204,2502L5204,2505L5202,2505L5202,2507L5200,2507L5200,2510L5196,2510L5196,2512L5198,2512L5198,2515L5200,2520L5200,2522L5198,2525L5198,2535L5196,2533L5193,2533L5189,2535L5187,2535L5187,2538L5185,2538L5185,2535L5176,2535L5176,2533L5170,2533L5167,2530L5165,2530L5163,2533L5157,2535L5144,2535L5141,2538L5141,2543L5139,2545L5139,2561L5137,2563L5137,2566L5135,2571L5133,2573L5131,2579L5128,2573L5128,2556L5124,2551L5120,2551L5120,2548L5113,2543L5105,2530L5102,2525L5100,2525L5100,2522L5098,2520L5102,2517L5100,2515L5100,2510L5096,2505L5094,2505L5092,2502L5092,2500L5089,2500L5089,2482L5087,2482L5087,2479L5085,2479L5085,2477L5087,2474L5087,2456L5085,2456L5085,2459L5083,2459L5081,2454L5083,2454L5083,2451L5085,2449L5092,2446L5092,2443L5094,2441L5096,2433L5096,2431L5100,2431L5100,2423L5102,2423L5102,2420L5105,2415L5105,2413L5107,2413L5109,2410L5111,2410L5111,2405L5118,2405L5118,2408L5124,2408L5124,2405L5126,2405L5126,2403L5133,2403L5137,2400L5137,2398L5139,2395L5141,2395L5141,2398L5148,2403L5148,2405L5152,2400L5157,2400L5161,2395L5163,2395L5165,2392L5170,2392L5170,2390L5187,2390L5193,2387L5198,2387L5198,2385L5200,2385L5200,2382L5204,2382L5204,2380L5206,2377L5206,2375L5209,2375L5211,2372L5211,2369L5213,2367L5211,2364L5206,2364L5206,2359L5209,2359L5209,2357L5226,2357L5232,2354L5235,2354L5239,2352L5241,2352L5243,2354L5248,2354L5248,2352L5250,2352L5250,2349L5258,2344L5261,2341L5261,2339L5263,2336L5265,2331L5271,2326L5276,2326L5276,2324L5278,2321L5278,2318L5282,2318L5282,2316L5284,2316L5284,2303L5287,2303L5289,2301L5291,2301L5293,2298L5300,2295L5302,2293L5304,2293L5304,2290L5306,2290L5310,2293L5317,2293L5317,2295L5321,2301L5321,2303L5328,2308L5328,2311L5330,2311L5339,2329L5339,2339L5336,2339L5339,2341L5339,2349L5336,2352L5332,2352L5332,2357L5336,2357L5336,2362L5334,2362L5334,2367L5354,2367L5356,2369L5352,2375L5352,2380L5354,2380L5358,2382L5371,2382L5371,2385L5378,2392L5380,2392L5384,2398L5384,2403L5380,2403L5382,2405L5382,2408L5384,2408L5384,2410L5386,2410L5388,2413L5393,2415L5395,2418L5399,2418L5406,2426L5406,2428L5410,2431L5410,2433L5414,2433L5414,2436L5412,2438L5412,2443L5414,2443L5419,2449L5417,2449L5417,2451L5414,2451L5414,2454L5421,2454L5421,2456L5423,2454L5425,2456L5425,2459L5430,2459L5434,2461L5436,2461L5436,2464L5438,2466L5438,2479L5440,2479L5440,2482L5443,2482L5443,2484L5443,2484L5443,2484z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5115,2324L5113,2324L5113,2321L5111,2321L5109,2316L5102,2308L5102,2303L5100,2301L5100,2295L5098,2288L5098,2278L5100,2278L5100,2267L5098,2257L5098,2255L5094,2255L5094,2252L5096,2252L5096,2247L5094,2239L5094,2237L5089,2234L5085,2234L5085,2227L5083,2227L5083,2224L5072,2224L5064,2209L5059,2204L5059,2199L5057,2193L5055,2181L5055,2178L5057,2178L5057,2176L5061,2176L5061,2173L5064,2171L5064,2165L5066,2160L5070,2155L5072,2150L5076,2145L5076,2142L5081,2137L5085,2130L5096,2120L5100,2112L5111,2099L5118,2000L5120,1997L5124,1987L5126,1987L5113,1972L5113,1967L5115,1967L5113,1964L5113,1961L5105,1951L5105,1949L5102,1949L5102,1926L5098,1908L5098,1900L5126,1885L5347,2012L5347,2137L5343,2137L5339,2135L5336,2135L5336,2137L5323,2137L5319,2142L5317,2142L5317,2145L5319,2145L5319,2158L5315,2158L5315,2160L5313,2160L5310,2165L5310,2168L5313,2171L5306,2173L5304,2173L5304,2183L5306,2186L5308,2186L5308,2188L5304,2191L5302,2193L5300,2193L5297,2196L5295,2201L5295,2204L5300,2209L5300,2216L5297,2219L5295,2219L5295,2222L5293,2222L5289,2227L5287,2232L5287,2234L5289,2237L5297,2237L5297,2234L5306,2239L5304,2242L5304,2247L5306,2255L5308,2257L5308,2273L5310,2275L5315,2278L5319,2278L5319,2285L5317,2293L5310,2293L5306,2290L5304,2290L5304,2293L5302,2293L5300,2295L5293,2298L5291,2301L5289,2301L5287,2303L5284,2303L5284,2316L5282,2316L5282,2318L5278,2318L5278,2321L5276,2324L5276,2326L5271,2326L5265,2331L5263,2336L5261,2339L5261,2341L5258,2344L5250,2349L5250,2352L5248,2352L5248,2354L5243,2354L5241,2352L5239,2352L5235,2354L5232,2354L5226,2357L5209,2357L5209,2359L5206,2359L5206,2364L5211,2364L5213,2367L5211,2369L5211,2372L5209,2375L5206,2375L5206,2377L5204,2380L5204,2382L5200,2382L5200,2385L5198,2385L5198,2387L5193,2387L5187,2390L5170,2390L5170,2392L5165,2392L5163,2395L5161,2395L5157,2400L5152,2400L5148,2405L5148,2403L5141,2398L5141,2395L5139,2395L5137,2398L5137,2400L5133,2403L5126,2403L5126,2405L5124,2405L5124,2408L5118,2408L5118,2405L5111,2405L5113,2403L5113,2398L5111,2398L5111,2392L5109,2392L5109,2385L5107,2385L5105,2380L5105,2375L5102,2375L5100,2369L5096,2364L5094,2364L5094,2362L5094,2364L5087,2359L5085,2357L5079,2352L5081,2349L5079,2349L5070,2336L5068,2336L5070,2334L5070,2331L5072,2331L5074,2329L5074,2326L5076,2326L5083,2324L5087,2326L5100,2326L5100,2324L5105,2324L5105,2326L5113,2326L5115,2324L5115,2324L5115,2324z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2807,2449L2807,2454L2809,2454L2809,2456L2807,2456L2807,2459L2804,2461L2802,2461L2802,2469L2804,2469L2802,2471L2802,2474L2798,2474L2798,2497L2796,2502L2798,2510L2798,2515L2800,2517L2800,2520L2802,2522L2802,2528L2804,2528L2804,2530L2807,2530L2809,2533L2809,2538L2813,2538L2813,2540L2807,2548L2802,2551L2798,2558L2802,2558L2807,2563L2811,2571L2813,2571L2815,2573L2815,2581L2822,2596L2822,2604L2824,2609L2824,2612L2817,2612L2817,2604L2820,2604L2820,2599L2817,2599L2817,2594L2815,2591L2815,2589L2813,2589L2813,2586L2811,2584L2811,2581L2807,2581L2807,2584L2804,2584L2802,2586L2802,2589L2800,2591L2798,2591L2798,2594L2791,2594L2791,2589L2789,2589L2789,2586L2787,2586L2787,2589L2785,2591L2785,2594L2746,2594L2744,2596L2742,2596L2742,2617L2757,2617L2761,2622L2761,2630L2759,2632L2757,2632L2757,2630L2752,2627L2746,2630L2744,2630L2744,2632L2735,2632L2735,2658L2737,2658L2744,2665L2746,2665L2746,2668L2748,2668L2748,2675L2750,2681L2750,2683L2752,2683L2752,2688L2755,2691L2755,2696L2752,2701L2739,2790L2739,2788L2735,2788L2733,2785L2733,2780L2729,2775L2724,2775L2724,2777L2720,2777L2718,2775L2718,2772L2722,2767L2724,2760L2726,2760L2735,2742L2735,2739L2733,2739L2733,2737L2731,2737L2731,2734L2729,2734L2729,2732L2726,2732L2726,2734L2722,2732L2720,2732L2720,2729L2718,2729L2714,2724L2709,2726L2707,2726L2705,2729L2698,2729L2698,2726L2696,2724L2690,2724L2690,2721L2685,2726L2685,2729L2679,2729L2675,2734L2672,2732L2670,2732L2666,2729L2664,2732L2659,2732L2657,2734L2657,2732L2655,2729L2651,2729L2651,2724L2653,2721L2651,2714L2651,2711L2646,2711L2646,2714L2642,2711L2640,2709L2640,2704L2642,2704L2640,2701L2640,2698L2638,2698L2638,2696L2636,2693L2631,2693L2625,2686L2620,2686L2620,2683L2618,2683L2618,2678L2616,2675L2616,2668L2612,2665L2610,2663L2610,2665L2607,2665L2607,2663L2605,2663L2605,2658L2599,2658L2599,2655L2594,2653L2592,2653L2592,2655L2588,2655L2588,2653L2584,2653L2584,2650L2577,2650L2571,2642L2571,2640L2566,2640L2564,2637L2560,2637L2560,2642L2558,2642L2555,2645L2553,2642L2542,2642L2540,2640L2532,2640L2532,2637L2529,2635L2529,2632L2532,2632L2529,2630L2527,2630L2525,2627L2525,2624L2519,2624L2516,2622L2512,2622L2508,2617L2506,2617L2503,2614L2503,2612L2499,2612L2490,2602L2490,2599L2486,2599L2486,2596L2490,2591L2495,2591L2497,2594L2499,2594L2499,2584L2497,2584L2497,2576L2499,2573L2499,2573L2499,2571L2502,2568L2504,2565L2509,2564L2513,2564L2521,2562L2523,2558L2525,2549L2532,2540L2534,2540L2538,2530L2538,2525L2535,2525L2534,2519L2531,2521L2529,2516L2527,2513L2534,2505L2534,2489L2532,2484L2532,2474L2529,2471L2527,2471L2532,2466L2534,2466L2536,2464L2536,2461L2534,2456L2529,2451L2529,2446L2532,2446L2534,2443L2534,2436L2532,2433L2532,2431L2529,2431L2525,2426L2525,2423L2519,2415L2521,2408L2523,2408L2523,2403L2521,2403L2521,2400L2523,2400L2523,2398L2525,2400L2525,2405L2527,2405L2534,2400L2534,2398L2532,2398L2534,2392L2536,2392L2538,2390L2536,2387L2536,2382L2534,2382L2534,2380L2532,2380L2532,2375L2529,2375L2529,2372L2532,2372L2532,2367L2534,2367L2534,2372L2536,2372L2536,2375L2538,2375L2538,2377L2540,2377L2540,2380L2545,2382L2545,2385L2547,2385L2547,2387L2545,2387L2545,2392L2549,2392L2551,2387L2549,2387L2549,2375L2547,2375L2547,2372L2545,2372L2547,2369L2549,2369L2558,2358L2561,2358L2563,2356L2565,2351L2565,2348L2567,2346L2575,2341L2579,2344L2581,2341L2581,2334L2579,2331L2581,2329L2581,2326L2582,2317L2583,2313L2583,2309L2584,2306L2586,2303L2588,2303L2590,2301L2590,2298L2592,2298L2597,2295L2597,2293L2599,2293L2603,2288L2612,2293L2614,2293L2610,2295L2610,2298L2614,2298L2614,2301L2616,2301L2616,2295L2618,2293L2618,2290L2619,2287L2619,2282L2620,2280L2627,2280L2629,2283L2646,2283L2653,2275L2659,2270L2662,2270L2662,2267L2668,2265L2670,2265L2674,2262L2676,2254L2676,2250L2683,2250L2687,2245L2691,2243L2696,2243L2701,2246L2706,2257L2702,2260L2702,2262L2701,2264L2698,2265L2696,2265L2692,2267L2688,2267L2683,2270L2679,2275L2677,2283L2668,2288L2666,2290L2664,2295L2662,2298L2659,2306L2657,2308L2657,2313L2655,2321L2655,2329L2653,2331L2651,2336L2651,2339L2646,2344L2644,2349L2644,2352L2649,2352L2649,2349L2651,2349L2653,2347L2655,2349L2655,2352L2657,2354L2659,2354L2662,2359L2664,2369L2670,2377L2670,2380L2672,2385L2672,2387L2670,2387L2668,2392L2668,2405L2670,2408L2670,2410L2675,2410L2677,2413L2677,2415L2679,2415L2679,2420L2681,2420L2681,2423L2688,2423L2690,2420L2701,2420L2703,2423L2711,2423L2711,2420L2714,2420L2718,2418L2722,2420L2724,2423L2729,2423L2729,2426L2731,2423L2733,2423L2752,2451L2757,2451L2759,2454L2759,2451L2761,2451L2761,2449L2772,2449L2772,2451L2776,2451L2778,2449L2796,2449L2796,2446L2807,2446L2807,2449L2807,2449L2807,2449zM2618,2293L2618,2290L2618,2293M2499,2573L2499,2571L2499,2573L2499,2573L2499,2573z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5064,2798L5064,2800L5061,2806L5059,2808L5057,2808L5053,2811L5048,2806L5048,2803L5046,2803L5046,2800L5044,2800L5044,2803L5040,2798L5040,2795L5035,2795L5033,2798L5033,2800L5027,2800L5027,2803L5025,2803L5025,2808L5020,2808L5020,2811L5018,2811L5016,2816L5014,2816L5014,2813L5009,2808L5009,2800L5007,2800L5007,2798L5003,2793L4996,2788L4996,2785L4994,2785L4992,2783L4992,2780L4990,2780L4992,2777L4992,2772L4994,2772L4994,2770L5001,2767L5001,2765L5007,2772L5012,2772L5012,2770L5009,2770L5009,2767L5012,2762L5014,2762L5014,2760L5009,2757L5007,2757L5007,2752L5009,2749L5005,2744L5003,2744L5003,2739L5005,2739L5005,2734L5003,2732L5003,2726L5007,2732L5007,2729L5009,2729L5014,2726L5014,2729L5016,2729L5027,2726L5029,2724L5029,2719L5027,2719L5027,2714L5029,2714L5031,2711L5035,2711L5035,2714L5038,2714L5038,2716L5040,2721L5040,2724L5041,2725L5042,2726L5044,2726L5048,2729L5051,2729L5053,2732L5055,2732L5061,2724L5064,2724L5064,2719L5066,2721L5066,2732L5068,2732L5072,2734L5072,2732L5074,2732L5074,2729L5076,2729L5076,2716L5079,2714L5081,2714L5081,2704L5083,2704L5083,2688L5081,2686L5081,2681L5083,2681L5083,2673L5085,2673L5085,2670L5083,2670L5083,2668L5081,2668L5079,2665L5074,2665L5074,2660L5068,2660L5066,2658L5066,2655L5068,2655L5068,2640L5070,2640L5072,2635L5072,2632L5074,2632L5074,2635L5076,2635L5079,2632L5079,2630L5083,2624L5083,2619L5081,2619L5079,2614L5079,2607L5072,2607L5070,2604L5064,2604L5064,2607L5059,2609L5053,2609L5051,2612L5046,2612L5046,2609L5048,2609L5048,2602L5046,2602L5046,2594L5048,2591L5048,2586L5051,2584L5051,2581L5089,2581L5092,2584L5094,2584L5094,2586L5100,2586L5102,2584L5105,2584L5107,2586L5111,2586L5115,2589L5120,2589L5124,2594L5126,2594L5126,2596L5128,2596L5131,2594L5128,2591L5128,2579L5131,2581L5131,2579L5133,2573L5135,2571L5137,2566L5137,2563L5139,2561L5139,2545L5141,2543L5141,2538L5144,2535L5157,2535L5163,2533L5165,2530L5167,2530L5170,2533L5176,2533L5176,2535L5185,2535L5185,2538L5187,2538L5187,2535L5189,2535L5193,2533L5196,2533L5198,2535L5198,2538L5200,2543L5200,2545L5198,2548L5198,2551L5196,2551L5193,2556L5193,2561L5191,2563L5191,2566L5189,2566L5189,2568L5187,2568L5187,2573L5183,2579L5183,2602L5180,2612L5180,2614L5178,2614L5178,2632L5180,2635L5180,2640L5178,2640L5178,2642L5176,2645L5176,2647L5174,2650L5174,2670L5172,2670L5170,2673L5170,2675L5161,2686L5157,2686L5152,2688L5152,2691L5150,2691L5150,2693L5148,2693L5148,2696L5146,2698L5146,2701L5144,2704L5144,2706L5141,2709L5141,2711L5139,2711L5139,2714L5137,2716L5135,2716L5135,2719L5133,2719L5133,2721L5131,2721L5131,2762L5128,2767L5128,2770L5126,2770L5124,2775L5124,2777L5120,2783L5113,2783L5113,2785L5111,2785L5111,2790L5109,2793L5109,2790L5107,2790L5107,2793L5102,2793L5102,2795L5094,2806L5094,2808L5089,2811L5081,2811L5081,2798L5083,2798L5083,2795L5081,2790L5079,2793L5070,2795L5070,2798L5068,2798L5066,2795L5064,2795L5064,2798L5064,2798L5064,2798z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2386,2335L2384,2334L2380,2334L2378,2329L2378,2326L2376,2326L2363,2308L2363,2306L2360,2301L2360,2295L2358,2295L2358,2298L2354,2298L2354,2301L2350,2301L2350,2298L2343,2298L2339,2293L2330,2288L2324,2293L2317,2290L2315,2290L2313,2288L2308,2288L2306,2285L2304,2285L2302,2288L2302,2293L2298,2293L2295,2295L2298,2295L2300,2298L2302,2298L2304,2303L2302,2303L2302,2306L2298,2311L2298,2321L2302,2326L2302,2329L2311,2329L2315,2334L2317,2339L2320,2332L2324,2331L2321,2329L2321,2326L2317,2324L2313,2318L2319,2318L2319,2321L2324,2324L2326,2326L2328,2326L2330,2331L2330,2339L2334,2339L2339,2341L2341,2341L2343,2344L2345,2344L2347,2347L2350,2347L2354,2352L2356,2352L2356,2354L2358,2357L2358,2359L2358,2366L2356,2367L2355,2371L2360,2375L2365,2375L2365,2377L2367,2377L2368,2376L2368,2374L2367,2372L2365,2372L2365,2369L2363,2367L2367,2367L2369,2369L2371,2369L2373,2375L2373,2377L2371,2377L2373,2380L2376,2381L2378,2386L2379,2385L2378,2380L2379,2379L2380,2377L2380,2367L2378,2367L2378,2364L2380,2362L2382,2362L2384,2359L2384,2357L2380,2354L2378,2354L2378,2341L2380,2339L2380,2336L2382,2336L2382,2339L2384,2339L2384,2341L2386,2341L2389,2339L2386,2335L2386,2335z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5107,1156L5111,1153L5118,1153L5118,1145L5115,1145L5115,1140L5120,1140L5126,1138L5128,1135L5128,1133L5133,1133L5133,1130L5139,1130L5141,1133L5144,1133L5148,1135L5150,1135L5150,1138L5152,1138L5152,1140L5157,1140L5161,1145L5161,1148L5163,1148L5165,1150L5165,1148L5170,1148L5170,1150L5172,1150L5172,1153L5187,1153L5187,1156L5193,1156L5196,1153L5198,1153L5200,1150L5204,1150L5206,1153L5209,1153L5209,1158L5206,1158L5206,1163L5209,1163L5209,1168L5213,1171L5220,1171L5219,1173L5213,1173L5211,1176L5213,1179L5209,1184L5202,1184L5202,1181L5198,1176L5187,1176L5187,1179L5185,1176L5178,1176L5178,1179L5176,1179L5174,1176L5167,1176L5161,1173L5161,1176L5159,1176L5150,1171L5150,1173L5139,1173L5133,1181L5133,1179L5131,1179L5126,1173L5120,1173L5120,1181L5118,1186L5120,1186L5122,1189L5124,1189L5126,1191L5126,1194L5128,1196L5131,1201L5128,1207L5135,1207L5135,1209L5137,1212L5141,1212L5144,1214L5144,1217L5146,1217L5146,1219L5148,1222L5152,1224L5152,1227L5154,1227L5157,1230L5161,1230L5161,1237L5170,1242L5172,1242L5172,1247L5167,1247L5167,1245L5165,1245L5163,1242L5160,1241L5159,1240L5157,1240L5154,1237L5148,1232L5144,1232L5144,1230L5139,1230L5139,1227L5135,1227L5131,1230L5126,1230L5124,1227L5124,1222L5120,1219L5118,1219L5115,1217L5113,1217L5111,1214L5109,1214L5102,1207L5102,1196L5100,1196L5098,1194L5096,1194L5096,1189L5094,1189L5094,1184L5096,1184L5096,1181L5094,1176L5089,1176L5089,1173L5087,1171L5083,1171L5083,1168L5079,1168L5079,1171L5076,1173L5076,1176L5074,1176L5074,1181L5072,1181L5070,1184L5070,1186L5068,1186L5061,1179L5059,1173L5059,1171L5057,1166L5057,1163L5059,1163L5059,1166L5070,1166L5070,1163L5083,1163L5083,1161L5085,1161L5085,1158L5087,1158L5087,1161L5092,1166L5094,1166L5094,1163L5100,1163L5102,1166L5105,1166L5107,1163L5107,1156L5107,1156L5107,1156z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4598,2484L4593,2484L4593,2482L4593,2481L4593,2479L4593,2477L4591,2477L4591,2479L4589,2484L4585,2484L4583,2482L4576,2482L4573,2480L4573,2478L4571,2477L4566,2480L4552,2479L4550,2482L4548,2482L4548,2484L4544,2484L4542,2482L4539,2482L4538,2482L4533,2482L4531,2482L4531,2484L4529,2484L4520,2487L4516,2487L4513,2489L4511,2489L4509,2492L4507,2492L4503,2494L4498,2494L4498,2497L4492,2497L4490,2500L4485,2502L4483,2505L4479,2505L4474,2510L4472,2510L4472,2494L4470,2494L4470,2492L4472,2487L4472,2484L4477,2477L4474,2474L4474,2471L4477,2469L4477,2466L4474,2464L4474,2459L4472,2461L4472,2459L4468,2456L4468,2459L4466,2456L4466,2454L4464,2449L4464,2446L4455,2446L4448,2443L4446,2441L4446,2441L4445,2439L4444,2436L4446,2436L4446,2433L4448,2433L4448,2431L4451,2431L4451,2415L4448,2415L4448,2405L4446,2405L4448,2403L4451,2403L4453,2405L4455,2403L4457,2398L4457,2395L4455,2395L4457,2392L4457,2390L4461,2390L4461,2387L4459,2385L4457,2385L4455,2382L4453,2382L4453,2375L4455,2372L4461,2372L4464,2375L4466,2375L4466,2377L4468,2377L4468,2369L4466,2367L4466,2364L4461,2364L4459,2362L4461,2359L4461,2357L4464,2354L4466,2354L4466,2352L4461,2352L4461,2347L4464,2347L4461,2344L4457,2344L4457,2341L4455,2341L4455,2331L4457,2331L4457,2329L4455,2329L4455,2324L4457,2324L4457,2321L4459,2321L4459,2318L4464,2318L4466,2316L4466,2311L4474,2311L4479,2316L4483,2316L4485,2318L4487,2318L4487,2313L4496,2313L4496,2303L4498,2303L4500,2306L4505,2306L4503,2306L4503,2301L4509,2301L4509,2316L4511,2318L4516,2318L4516,2316L4518,2313L4518,2311L4524,2311L4526,2308L4529,2311L4529,2313L4531,2313L4531,2316L4533,2316L4533,2313L4539,2313L4544,2321L4544,2326L4548,2329L4548,2334L4557,2334L4559,2336L4563,2336L4563,2334L4568,2329L4570,2331L4572,2329L4574,2329L4576,2326L4587,2326L4591,2329L4593,2329L4600,2336L4600,2339L4604,2344L4606,2344L4606,2341L4606,2352L4604,2354L4604,2357L4606,2357L4609,2359L4609,2364L4611,2367L4611,2369L4613,2382L4611,2385L4609,2385L4606,2390L4604,2392L4604,2395L4602,2398L4600,2403L4600,2408L4598,2413L4598,2420L4596,2420L4596,2423L4591,2428L4591,2441L4596,2451L4596,2456L4598,2459L4598,2464L4600,2466L4604,2466L4604,2482L4606,2482L4606,2484L4598,2484L4598,2484L4598,2484zM4596,2484L4593,2484L4596,2484L4596,2484L4596,2484z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5585,1502L5588,1500L5590,1500L5592,1502L5594,1502L5594,1500L5596,1500L5596,1495L5607,1495L5607,1497L5611,1497L5616,1495L5622,1495L5624,1492L5633,1487L5635,1487L5640,1485L5642,1485L5635,1490L5633,1492L5631,1492L5629,1495L5624,1497L5622,1497L5622,1502L5624,1505L5627,1505L5627,1507L5616,1507L5616,1513L5611,1513L5607,1515L5605,1515L5603,1518L5598,1518L5598,1520L5596,1520L5596,1518L5583,1518L5583,1515L5581,1515L5579,1513L5579,1510L5577,1505L5577,1502L5579,1502L5579,1505L5583,1505L5583,1502L5585,1502L5585,1502L5585,1502z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5105,985L5105,987L5107,987L5107,990L5115,990L5124,995L5135,995L5137,997L5137,1000L5135,1000L5131,1003L5133,1003L5135,1005L5139,1005L5141,1008L5141,1013L5148,1013L5148,1010L5154,1010L5152,1005L5150,1003L5157,1003L5159,1005L5161,1005L5163,1008L5172,1008L5172,1005L5174,1005L5174,1010L5170,1010L5176,1018L5178,1018L5180,1015L5185,1015L5189,1018L5198,1018L5198,1026L5202,1026L5204,1028L5204,1033L5196,1033L5191,1038L5189,1038L5187,1041L5187,1043L5185,1043L5185,1046L5183,1048L5178,1048L5174,1054L5157,1054L5154,1056L5154,1059L5152,1059L5152,1061L5150,1059L5148,1059L5146,1056L5137,1056L5137,1059L5135,1059L5128,1056L5124,1056L5122,1054L5113,1054L5113,1051L5109,1051L5109,1048L5098,1048L5098,1051L5096,1056L5092,1056L5089,1059L5089,1064L5087,1061L5081,1061L5079,1064L5074,1061L5072,1061L5072,1059L5070,1059L5068,1056L5064,1056L5064,1054L5061,1054L5061,1051L5057,1051L5053,1048L5051,1046L5046,1043L5042,1038L5035,1038L5033,1036L5031,1031L5029,1028L5029,1026L5027,1026L5027,1023L5029,1020L5029,1018L5027,1018L5027,1015L5022,1015L5020,1013L5020,1010L5018,1005L5020,1005L5022,1010L5025,1010L5025,1005L5029,1005L5029,1003L5042,1003L5044,1000L5048,1000L5048,997L5053,995L5053,997L5055,997L5059,992L5068,992L5068,990L5074,990L5079,987L5081,985L5076,985L5076,982L5085,982L5087,985L5087,990L5092,990L5094,987L5098,987L5098,985L5102,982L5105,985L5105,985L5105,985z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8150,1329L8154,1329L8154,1326L8156,1324L8161,1321L8165,1321L8167,1319L8169,1319L8172,1316L8178,1314L8180,1314L8185,1309L8189,1306L8189,1303L8193,1298L8195,1298L8198,1293L8198,1291L8195,1291L8198,1288L8202,1288L8204,1286L8206,1286L8211,1288L8211,1291L8213,1291L8213,1293L8215,1296L8228,1296L8232,1298L8232,1296L8237,1296L8237,1298L8241,1298L8241,1296L8243,1296L8243,1293L8245,1291L8243,1291L8243,1288L8241,1288L8239,1286L8239,1281L8237,1278L8243,1275L8245,1275L8247,1278L8263,1278L8263,1275L8265,1275L8267,1273L8269,1273L8269,1270L8271,1265L8273,1263L8276,1263L8278,1265L8282,1263L8284,1263L8284,1255L8286,1250L8286,1247L8289,1245L8291,1245L8293,1247L8299,1247L8299,1250L8297,1252L8297,1255L8299,1255L8302,1258L8306,1260L8308,1263L8308,1265L8310,1265L8310,1268L8308,1270L8308,1268L8304,1268L8297,1273L8295,1275L8291,1278L8291,1281L8289,1286L8284,1286L8284,1288L8282,1291L8282,1296L8284,1296L8284,1298L8286,1298L8286,1301L8284,1301L8284,1316L8280,1316L8269,1321L8269,1326L8267,1326L8267,1329L8260,1329L8260,1332L8258,1332L8254,1334L8252,1337L8245,1342L8237,1342L8232,1347L8228,1349L8224,1349L8224,1352L8221,1352L8221,1354L8224,1360L8224,1362L8219,1362L8219,1370L8221,1370L8224,1372L8230,1372L8230,1375L8232,1377L8237,1380L8239,1380L8239,1383L8241,1385L8245,1385L8245,1393L8243,1393L8243,1395L8241,1398L8213,1398L8211,1400L8208,1400L8208,1403L8206,1403L8206,1405L8204,1408L8202,1408L8202,1411L8200,1411L8200,1413L8198,1416L8193,1416L8193,1413L8187,1413L8185,1416L8185,1418L8182,1418L8182,1413L8180,1411L8178,1413L8176,1411L8176,1408L8169,1408L8169,1411L8174,1411L8172,1416L8167,1416L8163,1418L8163,1416L8165,1416L8167,1413L8165,1411L8163,1413L8161,1413L8161,1411L8159,1411L8159,1413L8152,1413L8152,1411L8156,1408L8159,1408L8161,1405L8143,1405L8143,1403L8148,1403L8150,1400L8150,1398L8152,1393L8152,1390L8154,1390L8156,1388L8163,1388L8163,1385L8159,1385L8156,1383L8156,1380L8159,1377L8159,1375L8161,1375L8161,1370L8163,1370L8163,1367L8165,1367L8165,1365L8163,1365L8163,1360L8165,1357L8163,1357L8161,1360L8156,1357L8154,1357L8152,1354L8148,1352L8146,1349L8146,1354L8143,1357L8141,1357L8143,1354L8141,1349L8137,1349L8135,1347L8135,1339L8137,1339L8141,1337L8141,1334L8146,1334L8150,1329L8150,1329L8150,1329z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5508,2650L5508,2645L5510,2645L5510,2640L5514,2635L5514,2632L5512,2632L5512,2627L5514,2624L5514,2622L5518,2622L5521,2619L5521,2614L5523,2614L5525,2612L5527,2612L5528,2611L5527,2602L5549,2579L5549,2579L5544,2576L5542,2573L5540,2573L5540,2576L5538,2576L5536,2571L5536,2563L5538,2561L5538,2553L5536,2553L5536,2548L5538,2545L5538,2543L5540,2540L5540,2535L5538,2535L5536,2533L5531,2533L5531,2530L5529,2525L5527,2525L5525,2522L5521,2522L5518,2520L5518,2517L5516,2517L5516,2515L5514,2512L5514,2510L5510,2510L5510,2502L5505,2500L5503,2500L5501,2497L5499,2500L5499,2502L5497,2507L5495,2507L5492,2510L5488,2505L5482,2505L5482,2502L5479,2502L5477,2505L5477,2507L5473,2507L5473,2510L5464,2510L5458,2502L5453,2502L5453,2494L5445,2489L5445,2484L5440,2484L5436,2482L5432,2482L5430,2484L5427,2484L5427,2487L5425,2487L5425,2484L5423,2484L5421,2487L5417,2487L5417,2484L5414,2484L5408,2479L5406,2479L5406,2482L5399,2482L5399,2479L5395,2479L5391,2474L5391,2477L5386,2477L5384,2479L5384,2482L5386,2482L5386,2484L5384,2484L5384,2487L5380,2487L5378,2489L5369,2489L5369,2492L5365,2489L5365,2487L5362,2484L5358,2484L5358,2487L5345,2494L5343,2494L5332,2500L5332,2502L5330,2502L5330,2500L5326,2497L5321,2497L5319,2494L5317,2494L5313,2500L5313,2502L5310,2505L5308,2505L5308,2512L5306,2512L5306,2515L5304,2515L5304,2517L5300,2517L5300,2515L5295,2515L5295,2512L5287,2512L5284,2510L5282,2510L5280,2512L5269,2512L5269,2510L5267,2510L5267,2507L5261,2507L5261,2505L5256,2507L5252,2507L5250,2505L5250,2500L5245,2494L5237,2489L5235,2489L5235,2487L5232,2487L5232,2484L5226,2484L5224,2482L5222,2484L5219,2484L5215,2487L5215,2489L5211,2489L5211,2492L5209,2494L5209,2497L5204,2502L5204,2505L5202,2505L5202,2507L5200,2507L5200,2510L5196,2510L5196,2512L5198,2512L5198,2515L5200,2520L5200,2522L5198,2525L5198,2538L5200,2543L5200,2545L5198,2548L5198,2551L5196,2551L5193,2556L5193,2561L5191,2563L5191,2566L5189,2566L5189,2568L5187,2568L5187,2573L5183,2579L5183,2602L5180,2612L5180,2614L5178,2614L5178,2632L5180,2635L5180,2640L5178,2640L5178,2642L5176,2645L5176,2647L5174,2650L5174,2670L5172,2670L5170,2673L5170,2675L5161,2686L5157,2686L5152,2688L5152,2691L5150,2691L5150,2693L5148,2693L5148,2696L5146,2698L5146,2701L5144,2704L5144,2706L5141,2709L5141,2711L5139,2711L5139,2714L5137,2716L5135,2716L5135,2719L5133,2719L5133,2721L5131,2721L5131,2762L5128,2767L5128,2770L5126,2770L5124,2775L5124,2777L5120,2783L5113,2783L5113,2785L5111,2785L5111,2790L5109,2793L5109,2790L5107,2790L5107,2793L5102,2793L5102,2795L5094,2806L5094,2808L5089,2811L5081,2811L5081,2798L5083,2798L5083,2795L5081,2790L5079,2793L5070,2795L5070,2798L5068,2798L5066,2795L5064,2795L5064,2800L5061,2806L5059,2808L5057,2808L5053,2811L5048,2806L5048,2803L5046,2803L5046,2800L5044,2800L5044,2803L5038,2806L5035,2811L5033,2811L5033,2813L5029,2818L5029,2839L5020,2839L5020,2841L5027,2849L5037,2849L5037,2846L5040,2844L5053,2844L5055,2841L5057,2844L5064,2844L5068,2841L5070,2841L5072,2844L5141,2844L5141,2849L5144,2851L5146,2851L5146,2859L5144,2859L5144,2862L5146,2862L5148,2869L5148,2874L5150,2874L5150,2877L5152,2877L5152,2890L5154,2892L5157,2892L5157,2895L5159,2897L5161,2902L5161,2905L5163,2908L5165,2908L5167,2913L5167,2915L5185,2915L5185,2913L5196,2913L5196,2910L5202,2910L5202,2913L5219,2913L5219,2900L5222,2900L5222,2897L5224,2895L5224,2892L5222,2890L5224,2887L5224,2879L5245,2879L5245,2877L5254,2877L5254,2879L5252,2882L5252,2890L5287,2890L5289,2892L5289,2900L5287,2900L5287,2908L5284,2910L5284,2913L5287,2913L5287,2918L5289,2920L5289,2925L5291,2925L5291,2933L5289,2936L5289,2943L5287,2948L5289,2951L5287,2956L5287,2959L5289,2966L5293,2974L5295,2974L5297,2976L5297,2984L5300,2984L5300,2987L5302,2989L5302,2992L5300,2992L5300,2997L5302,2999L5302,3002L5300,3004L5297,3004L5297,3012L5300,3012L5300,3020L5306,3015L5306,3012L5310,3012L5310,3015L5315,3015L5315,3012L5317,3012L5319,3015L5326,3015L5326,3012L5328,3012L5330,3010L5336,3010L5339,3012L5345,3012L5347,3010L5347,3007L5352,3007L5352,3010L5354,3012L5356,3012L5360,3017L5360,3020L5358,3020L5358,3025L5360,3025L5360,3027L5362,3025L5365,3025L5367,3022L5369,3022L5375,3020L5382,3020L5382,3017L5384,3017L5384,3030L5388,3035L5395,3035L5404,3040L5417,3040L5421,3043L5427,3043L5430,3040L5432,3040L5432,3030L5438,3030L5438,3038L5440,3040L5443,3040L5445,3043L5445,3048L5447,3048L5447,3050L5449,3050L5449,3053L5458,3053L5460,3055L5464,3058L5469,3058L5471,3061L5473,3066L5473,3068L5474,3070L5475,3071L5477,3071L5479,3073L5482,3078L5486,3083L5486,3089L5490,3089L5492,3091L5495,3089L5499,3086L5501,3086L5501,3083L5505,3083L5505,3086L5503,3089L5505,3091L5510,3091L5510,3048L5508,3048L5503,3050L5501,3050L5499,3053L5499,3055L5501,3055L5501,3058L5497,3058L5495,3055L5488,3055L5486,3053L5486,3050L5484,3050L5482,3048L5479,3043L5477,3043L5473,3040L5471,3038L5471,3030L5469,3030L5469,3025L5471,3022L5471,3020L5473,3020L5473,3010L5475,3007L5475,3002L5477,3002L5477,2994L5475,2987L5477,2984L5475,2979L5477,2976L5477,2969L5473,2961L5469,2962L5467,2946L5473,2943L5481,2933L5485,2932L5484,2931L5484,2928L5492,2928L5497,2925L5503,2925L5512,2923L5521,2923L5527,2920L5530,2920L5530,2917L5524,2913L5520,2890L5513,2883L5506,2882L5492,2851L5492,2845L5498,2838L5490,2815L5491,2800L5494,2797L5493,2791L5489,2788L5490,2771L5493,2765L5492,2765L5492,2749L5490,2749L5486,2744L5486,2742L5488,2742L5488,2739L5484,2739L5482,2734L5484,2729L5486,2726L5490,2726L5490,2721L5492,2721L5492,2719L5490,2719L5490,2711L5495,2706L5495,2704L5497,2701L5499,2701L5503,2696L5503,2673L5505,2670L5505,2653L5508,2653L5508,2650L5508,2650L5508,2650z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5869,2245L5869,2242L5871,2242L5874,2239L5878,2237L5880,2237L5880,2239L5882,2239L5884,2242L5884,2245L5887,2250L5887,2260L5880,2260L5880,2262L5878,2265L5876,2265L5871,2267L5869,2267L5867,2270L5865,2275L5871,2273L5880,2273L5882,2275L5882,2278L5880,2278L5880,2280L5878,2283L5878,2285L5876,2290L5874,2290L5874,2293L5869,2293L5869,2288L5865,2288L5861,2290L5852,2290L5850,2293L5843,2293L5841,2290L5843,2288L5843,2283L5841,2280L5841,2270L5843,2267L5845,2267L5845,2265L5850,2260L5854,2250L5856,2250L5856,2247L5861,2242L5863,2242L5865,2245L5865,2247L5869,2247L5869,2245L5869,2245L5869,2245z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2722,2053L2722,2051L2720,2051L2720,2048L2718,2048L2718,2051L2716,2051L2714,2053L2707,2053L2707,2061L2705,2066L2703,2066L2703,2069L2698,2076L2692,2069L2692,2063L2690,2063L2690,2061L2688,2061L2690,2061L2690,2058L2688,2058L2688,2056L2690,2053L2690,2051L2688,2051L2685,2048L2685,2046L2683,2046L2681,2043L2688,2043L2688,2040L2690,2040L2690,2033L2688,2030L2690,2030L2692,2025L2692,2023L2690,2023L2690,2007L2688,2007L2690,2007L2690,2005L2688,2005L2692,2000L2696,2000L2698,2002L2707,2002L2707,2000L2714,2000L2718,2005L2726,2005L2726,2007L2729,2007L2729,2010L2735,2010L2735,2007L2739,2007L2739,2012L2742,2015L2742,2018L2744,2020L2757,2020L2757,2018L2759,2018L2761,2020L2759,2023L2759,2025L2755,2023L2748,2023L2748,2028L2755,2028L2759,2030L2765,2030L2765,2028L2768,2028L2768,2030L2772,2030L2772,2033L2774,2033L2781,2040L2783,2040L2783,2043L2781,2051L2776,2051L2774,2053L2774,2056L2772,2056L2772,2053L2770,2051L2763,2051L2761,2048L2752,2048L2750,2051L2750,2048L2737,2048L2735,2051L2735,2053L2733,2056L2722,2056L2722,2053L2722,2053L2722,2053z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2454,2749L2450,2749L2451,2744L2455,2741L2458,2739L2460,2739L2461,2740L2460,2742L2456,2747L2456,2749L2454,2749L2454,2749L2454,2749zM2194,2683L2192,2681L2194,2681L2194,2678L2196,2678L2196,2675L2198,2675L2200,2673L2202,2673L2202,2675L2198,2681L2198,2683L2194,2683L2194,2683L2194,2683zM2172,2678L2168,2673L2166,2673L2168,2670L2168,2668L2176,2668L2176,2673L2172,2678L2172,2678L2172,2678zM2140,2668L2137,2665L2135,2665L2135,2663L2137,2660L2144,2660L2144,2665L2142,2665L2140,2668L2140,2668L2140,2668zM2166,2663L2159,2663L2157,2660L2159,2658L2159,2655L2161,2658L2166,2658L2166,2663L2166,2663L2166,2663zM2148,2686L2146,2686L2146,2683L2144,2686L2142,2686L2142,2683L2140,2681L2140,2678L2142,2678L2146,2673L2150,2673L2153,2670L2150,2670L2142,2658L2144,2658L2144,2655L2142,2653L2137,2653L2137,2650L2140,2650L2144,2647L2146,2647L2146,2650L2148,2653L2148,2658L2153,2663L2155,2663L2155,2670L2157,2673L2159,2673L2159,2675L2157,2681L2157,2683L2150,2686L2148,2686L2148,2686L2148,2686zM2586,2658L2586,2665L2590,2665L2590,2668L2592,2670L2592,2673L2590,2673L2590,2678L2592,2683L2588,2683L2588,2681L2586,2686L2586,2691L2584,2701L2581,2701L2581,2704L2571,2716L2568,2721L2545,2739L2542,2739L2521,2747L2521,2749L2516,2749L2514,2755L2514,2757L2512,2757L2512,2760L2510,2760L2510,2765L2508,2767L2508,2762L2506,2762L2506,2770L2503,2772L2503,2775L2501,2777L2501,2780L2499,2780L2499,2785L2497,2790L2497,2800L2495,2800L2495,2803L2490,2803L2490,2808L2486,2813L2486,2816L2484,2813L2480,2813L2475,2808L2473,2803L2473,2798L2471,2798L2471,2795L2469,2795L2469,2798L2464,2798L2460,2795L2456,2790L2456,2793L2454,2793L2451,2795L2451,2798L2447,2798L2447,2793L2449,2790L2449,2788L2447,2790L2447,2785L2445,2783L2451,2783L2456,2777L2454,2777L2454,2765L2451,2762L2449,2762L2451,2762L2451,2760L2456,2760L2458,2757L2460,2757L2460,2755L2462,2752L2462,2749L2464,2747L2464,2742L2462,2737L2458,2737L2458,2734L2456,2734L2456,2737L2454,2737L2451,2739L2443,2734L2443,2732L2441,2729L2436,2729L2432,2724L2434,2724L2436,2721L2438,2721L2438,2709L2436,2706L2436,2698L2438,2698L2438,2693L2434,2688L2434,2686L2436,2681L2443,2681L2445,2678L2445,2673L2447,2670L2447,2668L2445,2665L2445,2663L2451,2655L2454,2655L2456,2653L2456,2650L2458,2650L2458,2640L2460,2640L2460,2637L2458,2637L2458,2635L2460,2632L2458,2632L2458,2630L2456,2630L2456,2627L2458,2624L2460,2624L2462,2622L2464,2622L2467,2619L2473,2619L2473,2617L2482,2617L2482,2614L2484,2614L2486,2612L2488,2612L2490,2607L2493,2604L2499,2612L2503,2612L2503,2614L2506,2617L2508,2617L2512,2622L2516,2622L2519,2624L2525,2624L2525,2627L2527,2630L2529,2630L2532,2632L2529,2632L2529,2635L2532,2637L2532,2640L2540,2640L2542,2642L2553,2642L2555,2645L2558,2642L2560,2642L2560,2637L2564,2637L2566,2640L2571,2640L2571,2642L2577,2650L2584,2650L2584,2653L2588,2653L2588,2655L2590,2655L2588,2655L2586,2658L2586,2658L2586,2658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5585,1635L5588,1635L5590,1638L5592,1635L5598,1632L5601,1632L5603,1635L5601,1635L5607,1635L5609,1632L5611,1632L5611,1635L5616,1635L5616,1632L5624,1632L5624,1630L5629,1630L5631,1627L5633,1627L5633,1632L5642,1655L5640,1655L5640,1658L5642,1658L5646,1668L5646,1671L5648,1678L5650,1681L5650,1689L5648,1689L5646,1691L5646,1694L5644,1699L5644,1701L5642,1709L5642,1714L5640,1717L5637,1722L5637,1737L5635,1740L5633,1740L5633,1745L5631,1742L5629,1742L5620,1737L5618,1734L5618,1732L5614,1727L5611,1727L5611,1724L5609,1724L5607,1719L5605,1719L5605,1717L5603,1717L5603,1704L5596,1696L5594,1696L5590,1689L5590,1678L5588,1677L5588,1669L5579,1650L5580,1634L5578,1630L5583,1631L5585,1635L5585,1635L5585,1635zM5531,1622L5539,1623L5544,1622L5551,1618L5557,1621L5565,1622L5571,1633L5574,1634L5574,1650L5582,1667L5583,1676L5579,1681L5579,1686L5583,1686L5588,1696L5588,1704L5590,1706L5590,1709L5592,1709L5592,1712L5594,1712L5594,1714L5596,1717L5596,1719L5598,1719L5598,1722L5601,1724L5601,1727L5603,1729L5605,1729L5607,1734L5609,1734L5614,1740L5614,1742L5611,1742L5611,1747L5616,1752L5616,1757L5618,1757L5618,1760L5620,1760L5620,1765L5624,1770L5624,1780L5627,1780L5627,1785L5631,1791L5631,1796L5635,1801L5637,1806L5640,1808L5640,1811L5642,1811L5642,1814L5644,1816L5644,1819L5646,1824L5648,1826L5648,1829L5650,1831L5650,1834L5653,1836L5655,1842L5655,1844L5657,1849L5659,1852L5659,1854L5661,1854L5666,1859L5666,1862L5670,1865L5672,1867L5674,1867L5676,1870L5670,1870L5668,1867L5666,1870L5666,1872L5668,1875L5668,1890L5670,1890L5670,1895L5672,1895L5672,1900L5674,1903L5676,1908L5679,1908L5681,1910L5687,1910L5689,1913L5692,1918L5696,1923L5702,1926L5702,1928L5705,1928L5705,1931L5555,1931L5557,1926L5555,1926L5555,1923L5553,1923L5553,1926L5551,1928L5551,1931L5375,1931L5375,1694L5373,1689L5373,1686L5371,1686L5373,1683L5371,1676L5371,1671L5369,1668L5369,1666L5367,1666L5367,1663L5369,1663L5369,1661L5371,1658L5371,1655L5373,1655L5373,1653L5375,1650L5375,1643L5371,1632L5371,1625L5373,1625L5378,1620L5378,1617L5380,1617L5380,1620L5382,1620L5384,1622L5386,1622L5388,1620L5395,1620L5397,1617L5406,1617L5408,1620L5414,1620L5417,1622L5427,1622L5434,1625L5440,1625L5440,1627L5443,1630L5445,1630L5447,1632L5449,1632L5453,1630L5456,1630L5456,1635L5471,1635L5475,1638L5479,1638L5484,1643L5497,1643L5501,1640L5505,1635L5508,1635L5510,1632L5514,1630L5516,1627L5518,1630L5523,1630L5523,1627L5525,1622L5531,1622L5531,1622L5531,1622z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2215,2219L2211,2214L2207,2214L2205,2211L2200,2211L2198,2209L2187,2209L2187,2206L2185,2206L2185,2204L2183,2204L2179,2201L2179,2199L2185,2191L2189,2191L2189,2188L2192,2188L2192,2186L2196,2186L2194,2183L2194,2181L2198,2181L2200,2178L2200,2181L2205,2181L2207,2183L2209,2183L2211,2186L2213,2186L2213,2191L2215,2191L2215,2188L2218,2188L2218,2193L2224,2193L2224,2199L2228,2199L2228,2196L2231,2196L2233,2193L2235,2193L2237,2196L2237,2199L2239,2196L2243,2196L2243,2199L2246,2199L2246,2201L2243,2206L2243,2209L2246,2209L2246,2211L2243,2211L2243,2214L2241,2211L2241,2216L2242,2217L2241,2219L2239,2222L2231,2222L2226,2219L2215,2219L2215,2219L2215,2219z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4953,2576L4955,2576L4955,2579L4957,2579L4957,2581L4996,2581L4996,2619L4957,2619L4957,2622L4955,2619L4953,2619L4953,2617L4955,2617L4953,2614L4940,2614L4942,2612L4942,2609L4944,2607L4944,2604L4949,2599L4949,2596L4951,2594L4953,2589L4953,2576L4953,2576L4953,2576zM4923,2545L4916,2545L4916,2538L4921,2538L4921,2530L4923,2530L4925,2528L4929,2528L4929,2533L4927,2535L4927,2538L4925,2540L4925,2543L4923,2545L4923,2545L4923,2545z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5869,2245L5869,2247L5865,2247L5865,2245L5863,2242L5861,2242L5858,2245L5858,2242L5856,2242L5856,2239L5854,2237L5854,2234L5852,2234L5852,2232L5848,2232L5845,2229L5845,2227L5843,2224L5843,2222L5837,2214L5835,2214L5832,2211L5826,2206L5824,2204L5824,2199L5822,2199L5822,2196L5819,2196L5817,2193L5817,2191L5815,2188L5811,2188L5809,2186L5804,2186L5804,2183L5802,2183L5802,2181L5800,2181L5798,2178L5791,2178L5791,2181L5789,2181L5789,2178L5787,2178L5787,2176L5785,2176L5785,2178L5783,2178L5780,2176L5778,2176L5774,2178L5770,2178L5770,2173L5765,2173L5765,2176L5763,2176L5761,2178L5759,2178L5752,2181L5748,2181L5746,2176L5746,2173L5744,2171L5737,2171L5737,2168L5735,2168L5735,2165L5724,2191L5724,2188L5720,2186L5720,2181L5718,2181L5718,2178L5713,2178L5713,2181L5711,2181L5711,2183L5709,2186L5707,2183L5696,2183L5696,2186L5694,2155L5696,2153L5696,2150L5698,2148L5698,2145L5700,2140L5700,2137L5702,2135L5707,2122L5707,2120L5709,2120L5707,2114L5707,2104L5709,2104L5709,2094L5720,2094L5724,2089L5724,2086L5722,2084L5728,2084L5733,2081L5735,2081L5735,2079L5737,2079L5737,2076L5739,2076L5739,2079L5744,2079L5746,2074L5750,2069L5750,2066L5752,2063L5754,2063L5754,2069L5759,2074L5761,2081L5763,2084L5765,2089L5765,2094L5767,2099L5767,2102L5770,2107L5770,2122L5772,2125L5772,2132L5774,2132L5776,2135L5776,2142L5778,2145L5778,2142L5780,2142L5780,2145L5783,2150L5785,2153L5785,2155L5783,2155L5783,2158L5787,2158L5789,2155L5787,2153L5785,2148L5787,2145L5789,2145L5793,2150L5793,2155L5796,2160L5798,2163L5802,2163L5804,2160L5809,2163L5811,2163L5813,2165L5813,2168L5815,2171L5817,2171L5824,2173L5830,2181L5832,2186L5835,2186L5837,2191L5839,2193L5839,2196L5843,2199L5848,2199L5850,2201L5850,2204L5854,2209L5854,2206L5856,2206L5856,2214L5858,2214L5858,2219L5861,2219L5863,2222L5867,2224L5867,2227L5869,2229L5869,2232L5876,2232L5876,2229L5878,2232L5878,2237L5874,2239L5871,2242L5869,2242L5869,2245L5869,2245L5869,2245z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5453,719L5453,717L5458,712L5464,712L5464,709L5462,707L5458,707L5458,709L5456,709L5447,707L5425,707L5423,704L5414,704L5410,702L5397,702L5395,699L5395,704L5393,704L5393,702L5388,699L5388,704L5386,707L5384,707L5384,704L5369,704L5367,707L5356,707L5356,709L5354,712L5352,712L5352,709L5349,709L5349,712L5345,714L5345,712L5341,712L5341,714L5332,714L5332,717L5334,719L5332,719L5332,722L5339,722L5336,725L5332,725L5334,727L5342,731L5336,731L5334,732L5334,737L5336,737L5341,742L5343,742L5345,745L5349,745L5349,748L5352,748L5354,745L5356,745L5356,742L5362,742L5362,745L5360,745L5360,753L5358,755L5358,758L5360,758L5362,755L5369,755L5375,753L5388,753L5388,755L5397,760L5404,760L5410,768L5412,768L5417,770L5421,770L5423,768L5434,768L5440,770L5440,768L5447,760L5453,760L5453,758L5450,754L5446,752L5443,748L5445,742L5435,740L5436,736L5434,732L5431,729L5430,725L5435,722L5442,721L5446,719L5450,722L5450,723L5451,722L5453,719L5453,719L5453,719zM5326,731L5324,733L5325,735L5324,737L5319,735L5302,735L5297,737L5295,740L5293,737L5289,737L5288,739L5289,740L5291,740L5293,742L5291,742L5291,744L5289,745L5293,748L5293,750L5297,750L5297,753L5295,753L5291,755L5293,758L5295,758L5300,753L5300,748L5313,748L5321,742L5323,740L5328,740L5328,737L5325,737L5327,736L5329,737L5331,736L5329,733L5326,731L5326,731L5326,731zM5304,726L5295,724L5304,723L5306,722L5308,719L5310,719L5313,722L5319,722L5321,727L5317,727L5317,730L5315,730L5315,727L5313,727L5313,730L5310,730L5310,732L5306,732L5306,730L5304,726L5304,726L5304,726z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5655,2273L5655,2275L5653,2280L5653,2288L5650,2293L5653,2295L5650,2301L5646,2301L5646,2298L5644,2298L5642,2295L5637,2298L5635,2303L5633,2306L5635,2313L5635,2321L5631,2324L5631,2326L5629,2331L5629,2372L5627,2372L5624,2375L5622,2375L5620,2377L5616,2377L5616,2375L5605,2375L5603,2377L5603,2385L5598,2390L5598,2398L5611,2398L5616,2400L5618,2400L5627,2410L5627,2415L5629,2415L5631,2418L5631,2423L5635,2423L5637,2426L5640,2426L5640,2431L5644,2431L5644,2433L5646,2436L5648,2443L5648,2446L5650,2449L5650,2451L5653,2451L5653,2459L5655,2461L5657,2466L5661,2471L5661,2477L5663,2477L5666,2474L5668,2474L5674,2477L5676,2477L5676,2479L5674,2479L5676,2482L5676,2484L5674,2484L5674,2494L5679,2500L5679,2501L5682,2497L5686,2500L5686,2507L5689,2507L5694,2507L5698,2505L5700,2507L5709,2507L5713,2512L5737,2530L5737,2533L5754,2533L5757,2535L5767,2535L5770,2538L5778,2538L5778,2540L5780,2540L5780,2538L5787,2530L5789,2525L5791,2522L5802,2517L5804,2517L5811,2512L5817,2512L5819,2517L5822,2517L5822,2520L5824,2520L5824,2522L5835,2522L5837,2520L5841,2520L5841,2522L5845,2522L5845,2517L5848,2517L5850,2515L5858,2515L5861,2512L5869,2512L5871,2510L5874,2510L5874,2505L5876,2505L5876,2502L5878,2502L5878,2500L5880,2500L5880,2497L5884,2497L5884,2494L5889,2494L5891,2492L5900,2492L5900,2489L5930,2492L5930,2489L5932,2489L5958,2456L5958,2454L6001,2403L6006,2400L6014,2390L5986,2390L5904,2357L5893,2347L5891,2347L5889,2344L5887,2344L5887,2339L5884,2336L5882,2336L5882,2329L5880,2329L5878,2326L5876,2326L5876,2321L5874,2321L5874,2318L5871,2318L5871,2313L5869,2313L5869,2308L5867,2308L5867,2303L5869,2298L5874,2293L5869,2293L5869,2288L5865,2288L5861,2290L5852,2290L5850,2293L5843,2293L5841,2290L5843,2288L5843,2283L5841,2280L5841,2270L5843,2267L5845,2267L5845,2265L5850,2260L5854,2250L5856,2250L5856,2247L5858,2245L5858,2242L5856,2242L5856,2239L5854,2237L5854,2234L5852,2234L5852,2232L5848,2232L5845,2229L5845,2227L5843,2224L5843,2222L5837,2214L5835,2214L5832,2211L5826,2206L5824,2204L5824,2199L5822,2199L5822,2196L5819,2196L5817,2193L5817,2191L5815,2188L5811,2188L5809,2186L5804,2186L5804,2183L5802,2183L5802,2181L5800,2181L5798,2178L5791,2178L5791,2181L5789,2181L5789,2178L5787,2178L5787,2176L5785,2176L5785,2178L5783,2178L5780,2176L5778,2176L5774,2178L5770,2178L5770,2173L5765,2173L5765,2176L5763,2176L5761,2178L5759,2178L5752,2181L5748,2181L5746,2176L5746,2173L5744,2171L5737,2171L5737,2168L5735,2168L5735,2165L5724,2191L5724,2188L5720,2186L5720,2181L5718,2181L5718,2178L5713,2178L5713,2181L5711,2181L5711,2183L5709,2186L5707,2183L5696,2183L5696,2186L5694,2196L5694,2204L5692,2204L5692,2209L5687,2214L5685,2224L5685,2237L5683,2237L5683,2234L5681,2234L5672,2237L5672,2239L5663,2252L5663,2255L5661,2260L5661,2262L5657,2262L5657,2265L5655,2265L5655,2273L5655,2273L5655,2273z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2867,4438L2865,4438L2856,4440L2854,4438L2848,4435L2841,4435L2839,4433L2833,4430L2830,4427L2828,4427L2828,4425L2824,4425L2813,4420L2811,4417L2807,4415L2804,4415L2804,4412L2802,4410L2800,4410L2798,4407L2794,4405L2791,4402L2791,4397L2789,4397L2789,4394L2781,4394L2778,4392L2776,4392L2776,4417L2774,4427L2776,4427L2774,4435L2774,4443L2776,4445L2785,4445L2785,4443L2789,4443L2789,4445L2815,4445L2820,4448L2828,4448L2828,4450L2837,4450L2839,4448L2841,4450L2846,4450L2846,4448L2850,4448L2850,4445L2856,4445L2856,4448L2859,4448L2863,4445L2865,4448L2867,4448L2867,4445L2869,4443L2872,4438L2867,4438L2867,4438L2867,4438zM2904,4440L2893,4440L2889,4443L2882,4443L2882,4445L2885,4445L2885,4448L2887,4445L2893,4445L2893,4443L2895,4443L2895,4445L2898,4445L2900,4443L2908,4443L2908,4440L2904,4440L2904,4440L2904,4440zM3054,3540L3054,3545L3056,3545L3056,3543L3075,3543L3077,3545L3082,3545L3086,3548L3090,3548L3090,3550L3097,3550L3099,3548L3103,3548L3103,3550L3108,3550L3110,3548L3110,3550L3112,3550L3114,3553L3116,3553L3119,3550L3119,3548L3121,3545L3129,3545L3129,3548L3134,3548L3136,3545L3138,3545L3138,3537L3142,3535L3142,3532L3147,3532L3151,3530L3151,3527L3155,3527L3155,3522L3158,3522L3162,3514L3164,3512L3164,3486L3166,3486L3168,3489L3171,3489L3171,3486L3177,3486L3179,3484L3186,3489L3186,3499L3188,3504L3192,3509L3192,3512L3190,3512L3190,3522L3188,3525L3190,3527L3190,3532L3188,3535L3188,3537L3186,3540L3181,3540L3181,3543L3177,3543L3175,3548L3173,3548L3173,3550L3166,3550L3164,3553L3160,3553L3158,3555L3158,3558L3155,3558L3153,3560L3153,3563L3145,3563L3145,3565L3142,3565L3142,3571L3136,3571L3136,3573L3132,3573L3132,3576L3136,3576L3136,3581L3134,3581L3134,3578L3129,3578L3127,3583L3125,3586L3125,3588L3121,3591L3119,3591L3119,3594L3114,3601L3112,3604L3110,3604L3108,3606L3108,3611L3106,3611L3103,3614L3101,3619L3097,3622L3097,3624L3090,3624L3090,3632L3088,3632L3084,3637L3082,3637L3082,3642L3077,3647L3075,3647L3075,3650L3073,3650L3073,3652L3075,3652L3075,3668L3073,3673L3073,3675L3069,3680L3071,3683L3071,3685L3069,3690L3069,3693L3064,3693L3064,3696L3067,3696L3067,3701L3064,3703L3067,3703L3067,3706L3069,3706L3069,3708L3067,3708L3067,3711L3064,3713L3067,3716L3067,3734L3060,3734L3060,3741L3058,3744L3058,3757L3058,3757L3058,3764L3060,3764L3060,3769L3056,3775L3056,3777L3058,3780L3058,3782L3060,3782L3060,3785L3062,3785L3064,3787L3069,3787L3071,3790L3075,3790L3075,3792L3088,3800L3095,3808L3095,3813L3093,3813L3093,3815L3088,3821L3088,3828L3090,3831L3090,3833L3093,3833L3093,3836L3095,3836L3095,3838L3097,3838L3099,3841L3101,3841L3103,3838L3106,3838L3108,3841L3108,3859L3106,3859L3106,3861L3099,3869L3097,3874L3097,3877L3095,3877L3084,3889L3084,3897L3082,3897L3082,3900L3080,3900L3067,3907L3064,3907L3062,3910L3051,3912L3049,3912L3049,3915L3043,3917L3036,3917L3030,3920L3021,3920L3019,3923L3010,3923L3002,3925L2991,3925L2984,3928L2982,3928L2978,3925L2976,3925L2973,3928L2969,3928L2965,3925L2956,3925L2956,3923L2954,3920L2947,3920L2950,3923L2950,3935L2954,3935L2958,3936L2959,3940L2958,3943L2956,3948L2956,3953L2954,3956L2952,3953L2952,3956L2950,3961L2950,3966L2947,3966L2945,3968L2947,3974L2952,3979L2954,3979L2954,3981L2952,3984L2952,3986L2950,3986L2950,3989L2947,3989L2932,3996L2906,3996L2906,3994L2902,3994L2900,3991L2895,3991L2891,3989L2889,3989L2885,3986L2882,3986L2882,3984L2880,3981L2878,3981L2878,3984L2876,3984L2872,3986L2872,3999L2874,4007L2876,4007L2876,4019L2874,4022L2874,4025L2878,4030L2880,4030L2882,4032L2891,4032L2891,4035L2889,4035L2887,4037L2887,4038L2900,4038L2902,4037L2902,4032L2900,4032L2904,4030L2906,4027L2911,4027L2913,4030L2913,4032L2915,4032L2914,4049L2912,4049L2912,4052L2900,4053L2898,4050L2898,4045L2895,4042L2882,4042L2882,4044L2877,4044L2876,4047L2876,4050L2878,4050L2882,4053L2885,4053L2885,4055L2894,4056L2893,4058L2889,4060L2887,4060L2885,4063L2880,4063L2876,4068L2874,4068L2872,4073L2867,4078L2867,4086L2869,4086L2869,4093L2867,4093L2867,4096L2869,4098L2869,4101L2865,4106L2859,4111L2856,4114L2856,4119L2861,4119L2859,4124L2854,4124L2852,4121L2843,4121L2835,4127L2833,4129L2824,4129L2822,4132L2820,4132L2820,4134L2813,4142L2811,4142L2811,4149L2809,4149L2807,4152L2804,4152L2804,4157L2802,4157L2802,4162L2804,4162L2804,4165L2807,4170L2809,4172L2809,4175L2811,4175L2815,4178L2817,4180L2822,4183L2828,4190L2852,4190L2852,4193L2856,4198L2856,4203L2854,4206L2854,4208L2852,4213L2852,4216L2854,4218L2854,4221L2852,4221L2852,4218L2850,4218L2850,4223L2846,4223L2839,4231L2837,4231L2835,4234L2830,4234L2830,4236L2828,4236L2828,4239L2824,4239L2822,4241L2817,4241L2817,4244L2815,4246L2813,4246L2813,4249L2809,4249L2807,4251L2807,4254L2804,4254L2802,4257L2802,4269L2800,4274L2800,4282L2798,4282L2798,4285L2796,4285L2796,4287L2791,4287L2791,4290L2783,4290L2783,4292L2778,4292L2778,4295L2772,4295L2770,4297L2768,4297L2768,4300L2765,4300L2763,4302L2763,4305L2761,4305L2761,4315L2759,4318L2761,4318L2761,4323L2763,4331L2765,4333L2765,4341L2768,4341L2768,4343L2770,4346L2770,4348L2772,4348L2774,4354L2776,4354L2776,4356L2778,4356L2779,4358L2782,4361L2782,4362L2769,4362L2766,4361L2759,4356L2752,4356L2744,4354L2739,4354L2739,4351L2683,4351L2683,4346L2679,4343L2675,4343L2675,4341L2670,4336L2672,4336L2672,4328L2675,4328L2675,4325L2672,4325L2670,4323L2672,4320L2675,4320L2675,4313L2672,4313L2672,4305L2666,4305L2666,4308L2655,4308L2655,4310L2649,4310L2649,4305L2646,4302L2646,4297L2642,4292L2640,4292L2640,4285L2638,4285L2640,4282L2640,4280L2642,4280L2640,4274L2640,4272L2638,4272L2640,4269L2640,4267L2642,4264L2651,4264L2651,4262L2649,4262L2651,4257L2653,4257L2653,4254L2655,4254L2655,4251L2662,4251L2666,4249L2666,4236L2668,4234L2670,4234L2675,4231L2672,4226L2672,4223L2670,4221L2668,4221L2668,4218L2666,4218L2668,4213L2670,4211L2672,4211L2672,4203L2675,4203L2675,4200L2679,4200L2681,4198L2685,4195L2685,4193L2683,4190L2683,4183L2685,4183L2690,4178L2692,4178L2692,4172L2690,4172L2690,4162L2685,4162L2685,4160L2690,4160L2690,4157L2692,4155L2692,4152L2690,4152L2690,4149L2688,4149L2688,4142L2690,4142L2690,4139L2696,4139L2701,4132L2701,4129L2696,4124L2694,4124L2694,4121L2688,4121L2683,4119L2679,4119L2679,4114L2681,4114L2681,4116L2688,4116L2688,4114L2690,4114L2690,4116L2692,4116L2694,4114L2696,4114L2698,4116L2703,4116L2703,4111L2705,4109L2707,4109L2707,4106L2705,4106L2705,4104L2685,4104L2685,4101L2688,4101L2688,4093L2692,4088L2688,4083L2688,4081L2690,4081L2690,4076L2685,4073L2683,4073L2683,4070L2685,4068L2690,4068L2690,4063L2685,4063L2685,4060L2679,4060L2679,4042L2681,4037L2679,4035L2681,4030L2688,4030L2690,4027L2690,4025L2688,4025L2688,4019L2683,4014L2683,4012L2685,4012L2685,3989L2683,3986L2683,3981L2685,3981L2685,3976L2688,3974L2690,3974L2692,3971L2692,3968L2688,3968L2688,3963L2690,3963L2692,3961L2692,3956L2690,3953L2690,3945L2692,3945L2692,3948L2696,3948L2696,3940L2698,3938L2698,3923L2701,3923L2703,3920L2707,3920L2707,3917L2714,3917L2714,3910L2711,3910L2711,3907L2709,3907L2709,3897L2707,3889L2705,3887L2705,3882L2707,3879L2707,3874L2705,3874L2705,3866L2707,3864L2705,3861L2705,3854L2707,3846L2709,3843L2718,3843L2718,3838L2720,3833L2726,3833L2726,3823L2729,3823L2726,3821L2726,3808L2722,3805L2722,3803L2724,3803L2726,3800L2726,3795L2733,3780L2735,3777L2735,3772L2742,3772L2742,3767L2739,3759L2739,3754L2742,3749L2742,3744L2744,3744L2744,3739L2737,3739L2735,3736L2735,3731L2737,3729L2737,3726L2735,3726L2733,3724L2733,3713L2731,3708L2729,3708L2729,3706L2726,3701L2729,3698L2731,3698L2731,3696L2729,3693L2724,3693L2720,3683L2722,3683L2722,3670L2724,3668L2726,3668L2729,3665L2729,3655L2731,3652L2731,3650L2735,3645L2739,3645L2739,3642L2742,3639L2742,3634L2739,3632L2739,3622L2737,3622L2737,3606L2739,3604L2744,3604L2744,3588L2746,3586L2746,3581L2748,3578L2750,3578L2755,3573L2755,3571L2757,3568L2757,3565L2761,3565L2761,3558L2763,3555L2763,3553L2768,3545L2768,3540L2770,3540L2770,3537L2774,3537L2774,3540L2781,3537L2785,3532L2785,3530L2778,3522L2778,3520L2776,3520L2776,3512L2778,3512L2778,3509L2781,3507L2781,3499L2778,3494L2778,3492L2776,3489L2776,3479L2778,3479L2778,3474L2783,3474L2783,3471L2778,3466L2778,3463L2776,3463L2776,3461L2778,3461L2778,3458L2783,3453L2785,3453L2785,3448L2787,3448L2802,3441L2804,3441L2811,3438L2815,3420L2815,3415L2817,3415L2817,3412L2820,3407L2820,3402L2815,3397L2820,3392L2820,3387L2822,3387L2824,3384L2826,3384L2826,3382L2828,3379L2828,3377L2835,3377L2837,3374L2839,3374L2841,3372L2841,3364L2846,3364L2854,3374L2878,3374L2885,3377L2887,3377L2889,3379L2889,3384L2891,3387L2891,3392L2893,3392L2893,3400L2895,3400L2895,3392L2898,3390L2898,3387L2900,3387L2900,3384L2904,3374L2906,3372L2937,3372L2937,3374L2941,3379L2943,3379L2947,3384L2950,3384L2950,3387L2952,3387L2952,3390L2956,3395L2956,3397L2958,3400L2958,3402L2960,3402L2960,3405L2963,3405L2963,3407L2967,3410L2967,3412L2971,3412L2976,3418L2978,3418L2982,3423L2984,3423L2986,3428L2986,3430L2991,3430L2993,3433L2999,3433L2999,3435L3002,3435L3006,3438L3012,3438L3012,3435L3015,3435L3015,3438L3028,3446L3034,3453L3041,3456L3043,3458L3045,3458L3047,3461L3049,3461L3051,3463L3058,3463L3060,3469L3069,3469L3073,3471L3075,3471L3077,3474L3077,3476L3080,3479L3080,3481L3082,3481L3082,3484L3084,3484L3077,3492L3077,3494L3075,3494L3075,3499L3073,3499L3073,3502L3075,3502L3071,3504L3069,3504L3067,3509L3067,3512L3064,3514L3064,3520L3067,3520L3067,3522L3064,3522L3062,3530L3060,3530L3060,3532L3058,3532L3058,3535L3056,3537L3054,3537L3054,3540L3054,3540L3054,3540zM2783,4384L2785,4384L2785,4382L2783,4382L2776,4374L2776,4389L2778,4389L2783,4384L2783,4384L2783,4384z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5583,3349L5581,3349L5551,3384L5549,3382L5542,3382L5540,3379L5536,3379L5533,3382L5523,3382L5512,3377L5510,3377L5508,3374L5505,3374L5499,3377L5497,3377L5495,3374L5495,3372L5492,3374L5490,3374L5490,3372L5488,3372L5488,3364L5484,3364L5484,3361L5477,3359L5469,3359L5469,3356L5460,3356L5458,3351L5456,3349L5456,3346L5453,3346L5453,3344L5451,3344L5451,3341L5449,3341L5451,3336L5451,3321L5438,3321L5438,3318L5440,3316L5438,3313L5438,3308L5436,3308L5434,3305L5430,3305L5423,3303L5423,3300L5419,3300L5419,3298L5414,3295L5412,3293L5410,3293L5410,3290L5408,3290L5406,3285L5406,3282L5404,3280L5404,3277L5401,3277L5401,3275L5404,3272L5404,3270L5401,3270L5399,3267L5397,3262L5395,3259L5395,3257L5391,3252L5388,3252L5388,3247L5384,3242L5384,3239L5382,3237L5382,3234L5388,3234L5391,3237L5393,3234L5395,3234L5397,3237L5399,3237L5399,3239L5406,3239L5406,3237L5414,3237L5414,3239L5419,3239L5419,3242L5423,3242L5427,3239L5432,3239L5436,3237L5436,3234L5440,3226L5445,3221L5449,3219L5449,3214L5451,3211L5453,3206L5460,3203L5462,3201L5475,3193L5479,3193L5482,3191L5482,3180L5484,3175L5484,3173L5486,3173L5488,3170L5492,3168L5495,3168L5497,3165L5503,3163L5527,3163L5527,3175L5551,3175L5551,3178L5553,3180L5562,3180L5564,3183L5568,3186L5568,3188L5579,3188L5579,3191L5581,3191L5585,3193L5590,3193L5590,3198L5596,3198L5596,3203L5594,3203L5596,3208L5596,3216L5598,3216L5598,3219L5596,3224L5596,3226L5598,3226L5598,3234L5596,3234L5596,3244L5598,3247L5596,3247L5596,3249L5598,3249L5598,3252L5601,3252L5596,3257L5594,3257L5594,3259L5596,3262L5596,3265L5592,3265L5590,3267L5590,3272L5594,3272L5594,3282L5592,3285L5592,3288L5594,3288L5594,3293L5598,3298L5598,3303L5596,3305L5594,3310L5594,3316L5588,3323L5585,3323L5583,3326L5583,3339L5581,3341L5579,3341L5579,3344L5583,3349L5583,3349L5583,3349z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9640,3229L9642,3234L9642,3237L9644,3242L9642,3242L9640,3244L9640,3242L9636,3244L9631,3244L9631,3247L9629,3247L9629,3249L9621,3249L9614,3247L9612,3244L9605,3244L9605,3242L9603,3239L9603,3237L9605,3234L9608,3234L9610,3231L9608,3229L9614,3221L9621,3219L9621,3221L9623,3221L9627,3219L9629,3219L9629,3216L9631,3216L9631,3221L9634,3221L9640,3229L9640,3229L9640,3229zM9679,3180L9673,3188L9673,3191L9670,3191L9668,3193L9666,3198L9668,3198L9670,3197L9673,3196L9673,3193L9675,3193L9677,3191L9679,3191L9679,3193L9677,3193L9677,3196L9679,3198L9677,3201L9677,3198L9673,3198L9668,3200L9662,3201L9662,3198L9657,3198L9653,3201L9653,3203L9655,3203L9653,3206L9651,3203L9647,3203L9647,3208L9644,3208L9644,3206L9642,3203L9642,3201L9638,3201L9638,3198L9640,3198L9640,3196L9644,3196L9647,3193L9649,3193L9651,3191L9660,3188L9664,3188L9664,3186L9666,3183L9670,3183L9675,3180L9679,3180L9679,3180L9679,3180z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4923,1278L4925,1275L4923,1275L4918,1270L4923,1270L4923,1268L4921,1268L4921,1265L4918,1265L4923,1260L4934,1255L4940,1255L4940,1245L4944,1245L4944,1260L4944,1258L4947,1260L4947,1275L4944,1278L4942,1278L4942,1291L4940,1291L4938,1293L4938,1298L4936,1298L4934,1296L4929,1296L4929,1293L4925,1293L4925,1291L4927,1291L4927,1288L4929,1288L4925,1288L4923,1286L4925,1283L4925,1281L4921,1281L4921,1278L4923,1278L4923,1278L4923,1278zM4721,1263L4721,1258L4719,1255L4713,1255L4713,1252L4706,1252L4704,1250L4700,1250L4700,1255L4680,1255L4678,1252L4676,1252L4674,1250L4671,1250L4669,1252L4665,1252L4661,1250L4661,1247L4654,1247L4654,1245L4648,1245L4645,1242L4643,1245L4641,1245L4641,1240L4643,1240L4643,1237L4641,1237L4639,1235L4632,1235L4632,1232L4637,1232L4637,1230L4639,1230L4639,1227L4641,1224L4641,1219L4643,1212L4643,1209L4645,1207L4645,1196L4648,1194L4648,1191L4652,1193L4655,1191L4646,1185L4646,1181L4650,1177L4649,1173L4650,1164L4653,1165L4659,1170L4665,1178L4662,1170L4658,1164L4654,1160L4646,1158L4646,1152L4644,1150L4641,1146L4648,1147L4651,1152L4652,1151L4650,1145L4648,1143L4642,1141L4650,1140L4650,1135L4648,1138L4645,1138L4635,1133L4626,1122L4624,1122L4624,1120L4622,1120L4622,1117L4624,1117L4624,1115L4626,1112L4624,1112L4622,1110L4624,1105L4631,1102L4627,1100L4620,1102L4618,1105L4613,1105L4611,1105L4611,1102L4615,1102L4615,1099L4613,1099L4613,1097L4606,1097L4604,1099L4602,1099L4602,1097L4604,1097L4606,1094L4600,1094L4595,1097L4596,1099L4593,1099L4593,1094L4591,1094L4585,1089L4574,1089L4574,1087L4572,1087L4570,1084L4568,1087L4565,1087L4565,1089L4559,1089L4559,1087L4561,1087L4561,1084L4559,1084L4559,1082L4550,1082L4550,1079L4563,1079L4563,1077L4561,1077L4561,1074L4555,1074L4553,1073L4555,1072L4561,1072L4562,1070L4554,1070L4550,1071L4548,1071L4548,1064L4555,1064L4555,1061L4561,1059L4572,1059L4572,1061L4574,1061L4574,1059L4583,1059L4583,1054L4596,1054L4602,1059L4602,1061L4606,1064L4606,1066L4617,1059L4622,1061L4624,1061L4626,1064L4626,1059L4630,1059L4630,1061L4643,1061L4641,1059L4639,1059L4637,1056L4637,1051L4639,1048L4637,1048L4637,1041L4635,1038L4632,1038L4632,1036L4630,1036L4630,1028L4628,1028L4628,1026L4635,1026L4635,1028L4641,1028L4641,1026L4645,1026L4648,1028L4645,1031L4645,1033L4648,1033L4650,1036L4656,1036L4658,1038L4674,1038L4676,1041L4678,1038L4684,1038L4684,1036L4691,1036L4693,1033L4682,1033L4682,1031L4687,1026L4689,1026L4697,1020L4702,1020L4710,1018L4715,1018L4719,1015L4719,1013L4721,1013L4723,1010L4723,1005L4726,1005L4726,1003L4723,1003L4726,1000L4726,987L4730,985L4734,985L4743,982L4752,982L4752,980L4754,985L4754,990L4758,992L4765,992L4767,990L4769,990L4769,992L4771,992L4771,995L4773,997L4773,1000L4782,1000L4782,1003L4784,1003L4786,1005L4793,1005L4797,1008L4797,1018L4806,1018L4810,1015L4812,1015L4812,1013L4814,1013L4814,1010L4817,1010L4817,1015L4814,1015L4817,1023L4821,1023L4830,1028L4832,1028L4832,1031L4834,1031L4834,1033L4836,1031L4843,1031L4843,1033L4860,1033L4869,1043L4871,1043L4871,1041L4873,1041L4877,1043L4877,1046L4884,1046L4886,1043L4888,1043L4892,1046L4895,1048L4905,1048L4908,1051L4910,1051L4908,1054L4905,1054L4905,1056L4899,1064L4897,1069L4897,1071L4895,1071L4892,1077L4892,1084L4890,1087L4890,1099L4882,1099L4879,1097L4875,1097L4873,1102L4875,1102L4875,1105L4871,1110L4866,1112L4866,1115L4862,1115L4860,1117L4860,1122L4858,1122L4858,1125L4856,1125L4851,1128L4851,1138L4849,1140L4847,1140L4847,1143L4851,1143L4853,1140L4856,1140L4856,1138L4853,1138L4853,1135L4856,1135L4858,1133L4871,1133L4871,1135L4869,1143L4871,1143L4875,1148L4877,1148L4877,1150L4875,1150L4873,1153L4871,1153L4871,1156L4875,1161L4875,1163L4877,1163L4879,1166L4879,1171L4877,1173L4873,1173L4871,1176L4871,1173L4869,1173L4866,1176L4864,1176L4866,1179L4869,1184L4875,1184L4877,1186L4877,1189L4875,1189L4875,1191L4871,1194L4871,1196L4873,1199L4873,1201L4875,1204L4877,1204L4886,1209L4888,1209L4890,1207L4895,1207L4895,1212L4890,1217L4890,1219L4888,1219L4887,1220L4886,1222L4882,1222L4877,1227L4874,1229L4871,1232L4866,1235L4866,1240L4853,1240L4853,1242L4851,1242L4853,1242L4843,1242L4834,1237L4830,1237L4830,1232L4827,1235L4821,1235L4821,1233L4823,1232L4825,1232L4827,1230L4821,1227L4821,1230L4820,1231L4819,1232L4814,1232L4817,1232L4812,1232L4814,1232L4812,1232L4810,1235L4808,1232L4808,1230L4799,1230L4801,1230L4797,1230L4797,1227L4791,1227L4788,1230L4780,1235L4775,1235L4773,1237L4771,1237L4767,1242L4767,1247L4765,1250L4762,1250L4765,1252L4765,1258L4767,1258L4767,1260L4769,1260L4769,1263L4762,1263L4756,1265L4756,1268L4749,1268L4749,1265L4745,1265L4745,1263L4741,1265L4736,1265L4734,1263L4721,1263L4721,1263L4721,1263z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4940,2711L4938,2711L4938,2704L4936,2704L4936,2698L4934,2696L4931,2696L4931,2688L4929,2683L4925,2678L4923,2673L4923,2670L4925,2670L4925,2673L4927,2675L4929,2675L4931,2674L4934,2673L4934,2670L4936,2670L4936,2668L4940,2668L4940,2640L4942,2640L4942,2645L4947,2645L4951,2647L4953,2647L4957,2645L4951,2645L4947,2642L4944,2642L4944,2637L4942,2637L4942,2635L4940,2635L4940,2630L4947,2630L4947,2635L4949,2635L4949,2624L4947,2619L4949,2617L4953,2617L4953,2619L4955,2619L4957,2622L4957,2619L4996,2619L4996,2576L5029,2576L5031,2579L5042,2579L5046,2576L5051,2576L5051,2584L5048,2586L5048,2591L5046,2594L5046,2602L5048,2602L5048,2609L5046,2609L5046,2612L5051,2612L5053,2609L5059,2609L5064,2607L5064,2604L5070,2604L5072,2607L5079,2607L5079,2614L5081,2619L5083,2619L5083,2624L5079,2630L5079,2632L5076,2635L5074,2635L5074,2632L5072,2632L5072,2635L5070,2640L5068,2640L5068,2655L5066,2655L5066,2658L5068,2660L5074,2660L5074,2665L5079,2665L5081,2668L5083,2668L5083,2670L5085,2670L5085,2673L5083,2673L5083,2681L5081,2681L5081,2686L5083,2688L5083,2704L5081,2704L5081,2714L5079,2714L5076,2716L5076,2729L5074,2729L5074,2732L5072,2732L5072,2734L5068,2732L5066,2732L5066,2721L5064,2719L5064,2724L5061,2724L5055,2732L5053,2732L5051,2729L5048,2729L5044,2726L5042,2727L5040,2724L5040,2721L5038,2716L5038,2714L5035,2714L5035,2711L5031,2711L5029,2714L5027,2714L5027,2719L5029,2719L5029,2724L5027,2726L5016,2729L5014,2729L5014,2726L5009,2729L5007,2729L5007,2732L5003,2726L5003,2732L5005,2734L5005,2739L5003,2739L5003,2744L5005,2744L5009,2749L5007,2752L5007,2757L5009,2757L5014,2760L5014,2762L5012,2762L5009,2767L5009,2770L5012,2770L5012,2772L5007,2772L5001,2765L5001,2767L4994,2770L4994,2772L4992,2772L4992,2777L4990,2780L4988,2777L4988,2775L4986,2775L4986,2770L4981,2767L4977,2762L4977,2760L4968,2749L4964,2747L4964,2744L4962,2742L4960,2742L4957,2739L4955,2739L4955,2737L4951,2732L4949,2732L4949,2729L4947,2729L4947,2721L4944,2721L4944,2719L4942,2719L4942,2716L4940,2714L4940,2711L4940,2711L4940,2711zM4931,2693L4931,2696L4934,2696z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4227,2216L4223,2214L4223,2211L4221,2209L4221,2206L4251,2206L4250,2204L4253,2201L4259,2201L4261,2199L4266,2201L4270,2201L4270,2204L4273,2206L4272,2204L4276,2204L4277,2206L4279,2206L4279,2209L4282,2209L4282,2211L4286,2211L4286,2209L4290,2209L4292,2206L4295,2209L4297,2209L4297,2211L4299,2211L4299,2214L4297,2214L4297,2216L4288,2216L4288,2219L4282,2219L4277,2216L4275,2214L4271,2214L4271,2211L4266,2211L4264,2209L4262,2209L4262,2206L4260,2206L4260,2211L4258,2211L4258,2214L4243,2214L4243,2222L4217,2222L4217,2224L4214,2222L4214,2214L4217,2211L4221,2211L4219,2211L4221,2211L4221,2216L4226,2218L4227,2216L4227,2216L4227,2216z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5793,1232L5793,1227L5802,1227L5806,1230L5809,1230L5809,1227L5813,1227L5813,1230L5817,1230L5819,1232L5826,1232L5832,1235L5835,1237L5837,1237L5848,1240L5850,1240L5852,1237L5861,1237L5863,1240L5871,1240L5874,1242L5876,1242L5880,1247L5887,1247L5889,1250L5893,1250L5893,1252L5900,1252L5900,1255L5897,1255L5895,1258L5910,1258L5910,1255L5913,1255L5917,1252L5921,1252L5923,1255L5926,1255L5928,1252L5930,1252L5930,1255L5936,1255L5941,1260L5952,1260L5952,1265L5949,1268L5949,1270L5958,1278L5967,1278L5969,1281L5971,1281L5971,1283L5969,1286L5965,1286L5965,1291L5969,1296L5973,1298L5975,1298L5978,1301L5978,1306L5975,1309L5973,1309L5969,1306L5967,1306L5967,1303L5962,1303L5960,1306L5958,1306L5958,1303L5954,1303L5952,1301L5952,1298L5947,1298L5941,1296L5939,1296L5936,1298L5934,1298L5932,1301L5930,1301L5928,1303L5906,1303L5904,1306L5889,1306L5887,1303L5882,1303L5878,1301L5871,1293L5871,1291L5865,1291L5861,1296L5856,1296L5856,1293L5845,1293L5845,1296L5841,1296L5841,1293L5835,1293L5837,1291L5839,1291L5839,1288L5841,1288L5841,1278L5839,1273L5837,1270L5837,1265L5835,1265L5835,1258L5830,1252L5824,1252L5824,1250L5822,1250L5822,1245L5819,1245L5819,1247L5817,1247L5817,1245L5815,1242L5811,1242L5802,1240L5798,1235L5796,1235L5793,1232L5793,1232L5793,1232z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4988,872L4986,872L4988,872L4988,872L4988,872zM5079,895L5079,901L5081,908L5081,916L5079,916L5079,918L5074,918L5074,924L5076,924L5079,926L5081,926L5083,929L5083,931L5087,931L5087,936L5085,936L5085,941L5089,941L5089,944L5092,949L5089,952L5089,954L5087,954L5087,957L5089,959L5089,962L5092,962L5092,964L5089,964L5089,967L5096,967L5096,969L5098,969L5098,982L5096,982L5096,985L5092,990L5087,990L5087,985L5085,982L5076,982L5076,985L5081,985L5079,987L5074,990L5068,990L5068,992L5059,992L5055,997L5053,997L5053,995L5048,997L5048,1000L5044,1000L5042,1003L5029,1003L5029,1005L5025,1005L5025,1010L5022,1010L5020,1005L5018,1005L5020,1010L5020,1013L5022,1015L5027,1015L5027,1018L5029,1018L5029,1020L5027,1023L5027,1026L5029,1026L5029,1028L5031,1031L5033,1036L5035,1038L5042,1038L5046,1043L5051,1046L5053,1048L5057,1051L5061,1051L5061,1054L5064,1054L5064,1056L5066,1056L5066,1064L5055,1064L5055,1069L5053,1069L5051,1071L5046,1071L5042,1074L5038,1074L5035,1077L5035,1079L5038,1079L5038,1082L5040,1084L5042,1084L5042,1089L5040,1089L5040,1092L5044,1092L5044,1099L5042,1099L5038,1097L5035,1094L5038,1094L5035,1092L5031,1092L5031,1094L5029,1094L5027,1092L5020,1092L5020,1094L5005,1094L5003,1097L4999,1097L4990,1102L4986,1102L4983,1097L4975,1097L4973,1094L4970,1094L4970,1097L4973,1099L4968,1105L4964,1105L4966,1102L4960,1099L4957,1097L4953,1094L4953,1097L4947,1097L4944,1094L4938,1092L4929,1092L4929,1094L4925,1089L4916,1089L4914,1092L4916,1092L4916,1096L4916,1097L4914,1094L4905,1094L4905,1097L4892,1097L4895,1094L4890,1094L4890,1087L4892,1084L4892,1077L4895,1071L4897,1071L4897,1069L4899,1064L4905,1056L4905,1054L4908,1054L4910,1051L4908,1051L4905,1048L4895,1048L4892,1046L4888,1043L4886,1043L4884,1046L4877,1046L4877,1043L4873,1041L4871,1041L4871,1043L4869,1043L4860,1033L4858,1033L4858,1031L4860,1028L4860,1026L4862,1026L4862,1023L4860,1023L4858,1020L4853,1020L4853,1018L4851,1015L4851,1010L4853,1010L4853,1008L4856,1008L4858,1005L4860,1005L4858,1003L4858,1000L4856,1000L4856,995L4853,995L4849,992L4849,987L4849,990L4849,985L4845,985L4845,982L4847,980L4851,980L4851,977L4849,977L4849,975L4851,975L4853,972L4853,967L4847,959L4847,957L4851,954L4853,954L4858,957L4860,957L4862,954L4871,954L4871,952L4869,949L4869,946L4873,946L4875,944L4877,944L4877,939L4875,936L4866,936L4866,934L4869,934L4869,929L4873,929L4873,931L4877,931L4877,924L4879,921L4882,921L4882,908L4879,908L4878,907L4877,906L4876,905L4877,903L4877,898L4882,898L4882,895L4903,895L4905,898L4908,898L4908,901L4905,901L4905,903L4910,906L4912,906L4912,901L4910,901L4910,898L4912,898L4915,900L4916,903L4917,906L4921,906L4921,899L4918,898L4916,898L4916,895L4918,890L4921,890L4921,888L4923,888L4923,890L4929,890L4932,892L4934,891L4940,892L4942,895L4952,904L4957,904L4939,887L4927,888L4927,885L4931,885L4931,880L4927,883L4927,875L4923,878L4921,878L4921,872L4927,872L4931,870L4925,862L4923,862L4917,858L4914,859L4913,861L4909,861L4910,859L4909,855L4914,852L4917,853L4917,855L4918,857L4920,857L4925,857L4925,855L4929,855L4936,857L4938,857L4938,860L4942,860L4942,857L4944,860L4957,860L4960,862L4960,867L4957,870L4955,870L4962,870L4968,872L4977,872L4977,875L4983,875L4983,872L4988,872L4990,878L4990,880L4988,880L4983,883L4979,883L4979,885L4983,885L4983,888L4986,885L4992,885L4994,888L5001,888L5001,885L5003,885L5005,883L5005,880L5018,880L5021,878L5024,878L5028,876L5026,871L5026,867L5031,868L5031,872L5033,874L5040,869L5043,872L5047,875L5049,872L5046,870L5045,867L5049,866L5052,866L5051,863L5055,862L5056,865L5056,868L5058,869L5062,867L5063,871L5061,872L5057,876L5054,877L5050,880L5057,883L5063,881L5066,883L5071,883L5071,884L5075,886L5078,887L5079,887L5080,890L5072,890L5068,892L5079,895L5079,895L5079,895z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4600,2466L4598,2464L4598,2459L4596,2456L4596,2451L4591,2441L4591,2428L4596,2423L4596,2420L4598,2420L4598,2413L4600,2408L4600,2403L4602,2398L4604,2395L4604,2392L4606,2390L4609,2385L4611,2385L4613,2382L4611,2369L4611,2367L4609,2364L4609,2359L4606,2357L4604,2357L4604,2354L4606,2352L4606,2339L4604,2339L4604,2316L4602,2313L4600,2308L4600,2301L4602,2295L4602,2290L4652,2290L4650,2290L4663,2290L4663,2293L4665,2295L4671,2288L4674,2288L4674,2285L4676,2288L4682,2288L4682,2293L4680,2295L4680,2298L4678,2301L4678,2303L4680,2303L4687,2311L4689,2311L4691,2316L4691,2321L4693,2321L4693,2324L4691,2324L4691,2331L4689,2334L4689,2336L4687,2339L4687,2344L4689,2344L4691,2341L4695,2341L4697,2344L4695,2349L4695,2352L4693,2354L4693,2357L4695,2359L4695,2364L4691,2364L4693,2367L4693,2369L4695,2369L4695,2372L4700,2375L4700,2377L4702,2380L4700,2382L4697,2382L4697,2400L4695,2403L4695,2410L4700,2410L4700,2415L4697,2420L4697,2423L4695,2423L4697,2428L4700,2431L4700,2436L4702,2436L4702,2441L4704,2441L4706,2443L4708,2443L4710,2449L4713,2451L4715,2451L4713,2454L4710,2454L4710,2456L4708,2459L4708,2461L4706,2461L4704,2464L4693,2464L4691,2461L4689,2461L4689,2464L4684,2464L4680,2469L4676,2471L4671,2471L4667,2477L4663,2477L4663,2479L4661,2479L4658,2482L4650,2482L4650,2484L4645,2484L4641,2487L4637,2487L4626,2494L4624,2497L4619,2492L4617,2492L4617,2489L4609,2489L4604,2487L4596,2487L4596,2484L4606,2484L4606,2482L4604,2482L4604,2466L4600,2466L4600,2466L4600,2466z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5397,1497L5397,1500L5395,1500L5395,1502L5399,1502L5401,1500L5410,1500L5412,1497L5412,1502L5408,1507L5406,1507L5404,1505L5393,1507L5380,1507L5375,1510L5371,1510L5369,1507L5369,1505L5367,1502L5367,1505L5365,1505L5365,1502L5362,1502L5358,1500L5336,1500L5334,1497L5336,1490L5339,1490L5341,1488L5343,1490L5349,1490L5349,1487L5354,1487L5354,1490L5352,1490L5352,1492L5354,1492L5356,1495L5365,1495L5369,1492L5375,1495L5386,1495L5386,1497L5391,1497L5393,1495L5397,1495L5397,1497L5397,1497L5397,1497zM5464,1459L5466,1459L5464,1462L5464,1464L5462,1467L5462,1469L5460,1469L5460,1472L5458,1472L5458,1474L5456,1474L5456,1477L5451,1477L5451,1469L5453,1467L5453,1464L5456,1464L5460,1462L5462,1462L5464,1459L5464,1459L5464,1459zM5388,1444L5384,1439L5386,1439L5388,1436L5393,1436L5393,1441L5391,1441L5391,1444L5388,1444L5388,1444L5388,1444zM5425,1421L5425,1418L5419,1418L5421,1416L5432,1416L5434,1418L5432,1418L5427,1421L5425,1421L5425,1421L5425,1421zM5261,1421L5258,1421L5254,1416L5254,1413L5256,1411L5258,1413L5261,1413L5261,1416L5265,1418L5261,1418L5261,1421L5261,1421L5261,1421zM5375,1418L5373,1418L5369,1413L5367,1413L5367,1411L5369,1408L5375,1413L5375,1418L5375,1418L5375,1418zM5252,1393L5254,1395L5258,1405L5252,1405L5248,1403L5245,1403L5248,1400L5248,1398L5252,1398L5252,1393L5252,1393L5252,1393zM5404,1403L5401,1403L5399,1400L5401,1400L5401,1398L5404,1398L5404,1395L5401,1393L5399,1393L5399,1390L5408,1390L5408,1398L5404,1403L5404,1403L5404,1403zM5365,1385L5360,1380L5360,1377L5365,1377L5367,1383L5365,1383L5365,1385L5365,1385L5365,1385zM5339,1393L5334,1388L5326,1383L5323,1380L5323,1375L5330,1375L5330,1377L5334,1383L5336,1383L5341,1385L5343,1388L5352,1388L5352,1390L5354,1395L5354,1400L5356,1400L5356,1403L5365,1403L5365,1408L5362,1408L5362,1411L5360,1411L5358,1408L5356,1408L5354,1403L5349,1398L5349,1395L5341,1395L5339,1393L5339,1393L5339,1393zM5406,1372L5399,1372L5399,1367L5404,1367L5408,1365L5414,1365L5414,1367L5417,1370L5419,1370L5421,1375L5419,1377L5412,1377L5408,1375L5406,1375L5406,1372L5406,1372L5406,1372zM5232,1349L5235,1349L5235,1352L5232,1352L5232,1354L5235,1360L5239,1362L5241,1365L5239,1365L5232,1362L5232,1357L5230,1357L5230,1354L5228,1354L5226,1352L5228,1349L5232,1349L5232,1349L5232,1349zM5267,1395L5267,1393L5265,1388L5261,1385L5258,1385L5255,1386L5256,1383L5258,1380L5263,1379L5266,1380L5270,1379L5270,1375L5260,1376L5256,1377L5256,1372L5252,1370L5250,1367L5245,1367L5245,1365L5243,1362L5243,1360L5241,1354L5243,1354L5245,1352L5245,1349L5248,1349L5248,1347L5245,1347L5245,1344L5248,1342L5254,1342L5254,1339L5256,1339L5256,1334L5258,1334L5258,1329L5263,1329L5265,1324L5265,1316L5269,1316L5274,1314L5287,1314L5289,1309L5291,1309L5291,1306L5313,1306L5313,1301L5315,1301L5315,1298L5319,1298L5323,1301L5326,1301L5326,1298L5341,1298L5343,1296L5349,1296L5349,1293L5354,1293L5354,1291L5356,1291L5356,1293L5362,1293L5365,1296L5369,1298L5378,1298L5380,1301L5382,1301L5382,1303L5384,1303L5391,1301L5393,1301L5397,1298L5399,1301L5404,1301L5408,1298L5408,1291L5406,1291L5406,1288L5408,1286L5410,1286L5410,1288L5414,1288L5419,1291L5421,1293L5421,1301L5414,1301L5414,1303L5412,1301L5412,1309L5414,1309L5414,1311L5412,1311L5412,1314L5410,1314L5408,1316L5408,1319L5404,1319L5404,1316L5395,1316L5391,1314L5386,1314L5384,1311L5382,1314L5380,1314L5380,1311L5378,1311L5373,1314L5371,1314L5371,1316L5369,1322L5364,1322L5365,1311L5362,1311L5360,1314L5356,1314L5356,1316L5352,1319L5339,1319L5339,1321L5343,1324L5343,1329L5345,1329L5346,1330L5349,1329L5353,1333L5354,1334L5358,1337L5358,1339L5356,1339L5352,1334L5349,1334L5348,1333L5347,1332L5339,1332L5339,1334L5341,1335L5343,1337L5345,1337L5345,1339L5347,1339L5347,1344L5345,1344L5343,1342L5343,1339L5341,1339L5340,1338L5339,1337L5332,1334L5330,1334L5331,1336L5331,1340L5334,1342L5336,1344L5341,1344L5341,1347L5336,1347L5332,1344L5330,1344L5330,1339L5329,1337L5328,1337L5327,1334L5326,1334L5323,1334L5317,1332L5315,1329L5317,1326L5319,1326L5319,1324L5317,1321L5317,1324L5315,1324L5313,1326L5310,1326L5308,1329L5310,1332L5308,1334L5308,1344L5313,1344L5317,1349L5317,1357L5319,1357L5323,1362L5328,1365L5330,1370L5328,1372L5326,1372L5326,1367L5323,1367L5319,1365L5315,1367L5315,1370L5317,1370L5319,1372L5319,1375L5321,1375L5321,1377L5319,1377L5315,1380L5306,1380L5308,1383L5313,1383L5319,1385L5321,1385L5323,1388L5330,1388L5330,1390L5328,1390L5330,1390L5332,1393L5336,1393L5336,1395L5339,1398L5345,1398L5349,1403L5347,1405L5347,1411L5349,1413L5349,1421L5347,1418L5345,1418L5345,1416L5343,1416L5341,1413L5336,1411L5336,1408L5332,1408L5332,1411L5321,1411L5319,1413L5323,1413L5323,1421L5326,1421L5328,1423L5330,1423L5330,1421L5332,1423L5332,1426L5334,1426L5334,1428L5326,1428L5326,1431L5321,1431L5321,1428L5323,1428L5323,1426L5319,1423L5313,1423L5313,1428L5315,1431L5317,1436L5317,1439L5319,1439L5319,1441L5321,1441L5321,1446L5323,1446L5323,1449L5321,1449L5321,1454L5322,1455L5323,1456L5326,1459L5323,1459L5319,1456L5317,1454L5315,1449L5308,1449L5306,1451L5306,1462L5302,1456L5302,1451L5300,1446L5297,1444L5295,1444L5297,1441L5291,1441L5291,1449L5289,1451L5289,1449L5287,1449L5284,1446L5284,1444L5280,1439L5280,1434L5282,1434L5284,1431L5284,1428L5282,1428L5282,1426L5280,1423L5276,1421L5274,1416L5269,1416L5269,1413L5267,1413L5267,1411L5271,1411L5271,1408L5274,1408L5274,1405L5276,1405L5276,1403L5282,1403L5284,1400L5293,1398L5293,1400L5297,1403L5302,1403L5304,1405L5310,1405L5315,1411L5318,1410L5319,1408L5317,1408L5319,1405L5321,1405L5321,1408L5323,1408L5323,1405L5326,1405L5326,1403L5323,1403L5321,1400L5319,1403L5317,1403L5315,1400L5313,1400L5310,1398L5306,1398L5306,1395L5302,1395L5304,1398L5297,1398L5295,1395L5291,1395L5282,1398L5278,1398L5274,1395L5271,1398L5267,1398L5267,1395L5267,1395L5267,1395z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2205,2130L2209,2132L2218,2132L2218,2135L2220,2137L2222,2134L2222,2130L2226,2132L2231,2137L2224,2145L2222,2145L2220,2150L2215,2150L2211,2155L2205,2158L2205,2171L2207,2171L2205,2173L2202,2173L2202,2176L2198,2181L2194,2181L2194,2183L2196,2186L2192,2186L2192,2188L2189,2188L2189,2191L2185,2191L2179,2199L2179,2201L2174,2201L2172,2199L2170,2199L2170,2196L2146,2196L2144,2193L2140,2193L2140,2191L2135,2191L2135,2188L2133,2188L2129,2183L2127,2183L2120,2176L2120,2173L2122,2171L2122,2168L2120,2165L2122,2165L2122,2160L2124,2160L2124,2158L2120,2153L2131,2132L2131,2130L2133,2125L2170,2125L2170,2117L2172,2117L2168,2112L2163,2112L2163,2107L2159,2102L2157,2102L2153,2097L2148,2094L2144,2089L2142,2089L2142,2086L2155,2086L2155,2069L2207,2069L2207,2071L2205,2084L2205,2130L2205,2130L2205,2130z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4420,2398L4420,2395L4418,2392L4420,2392L4420,2390L4418,2385L4418,2377L4414,2375L4412,2375L4409,2372L4407,2375L4407,2372L4405,2375L4399,2372L4399,2375L4396,2375L4394,2372L4392,2375L4392,2377L4390,2377L4390,2380L4383,2380L4383,2377L4386,2372L4390,2367L4388,2362L4388,2354L4383,2354L4383,2349L4386,2349L4386,2347L4383,2347L4383,2344L4381,2341L4379,2336L4370,2326L4370,2324L4351,2324L4351,2326L4344,2329L4342,2326L4336,2329L4334,2329L4331,2336L4331,2339L4329,2341L4329,2344L4325,2347L4325,2349L4325,2347L4323,2347L4321,2349L4321,2354L4318,2354L4318,2357L4316,2357L4316,2354L4312,2354L4312,2349L4305,2341L4301,2339L4303,2334L4299,2334L4299,2329L4297,2329L4295,2326L4290,2324L4288,2324L4286,2321L4279,2316L4277,2311L4277,2308L4273,2308L4275,2303L4273,2303L4273,2301L4269,2295L4269,2293L4266,2293L4266,2298L4262,2298L4262,2295L4266,2290L4266,2288L4269,2285L4269,2280L4271,2280L4271,2278L4273,2275L4279,2275L4279,2273L4282,2273L4284,2270L4299,2270L4301,2267L4301,2257L4299,2257L4297,2255L4292,2255L4292,2252L4295,2252L4297,2250L4299,2250L4297,2250L4301,2250L4301,2247L4303,2245L4303,2242L4301,2242L4301,2237L4318,2237L4318,2245L4321,2245L4321,2242L4325,2242L4327,2245L4331,2245L4331,2247L4338,2247L4338,2250L4342,2247L4344,2247L4347,2245L4351,2245L4353,2247L4357,2247L4357,2245L4366,2245L4366,2247L4364,2250L4364,2252L4362,2252L4364,2255L4366,2255L4366,2257L4368,2260L4370,2257L4373,2257L4373,2255L4375,2252L4379,2252L4381,2255L4383,2260L4383,2262L4386,2262L4388,2260L4390,2255L4394,2255L4394,2252L4401,2252L4405,2255L4407,2257L4414,2257L4414,2255L4416,2252L4420,2250L4422,2250L4422,2245L4420,2245L4420,2242L4427,2242L4431,2247L4433,2247L4433,2250L4431,2250L4431,2252L4433,2252L4438,2260L4438,2262L4435,2270L4440,2270L4440,2275L4444,2275L4444,2278L4448,2278L4448,2283L4446,2283L4440,2290L4440,2293L4442,2293L4444,2290L4451,2290L4451,2308L4453,2311L4455,2311L4459,2313L4461,2316L4459,2318L4459,2321L4457,2321L4457,2324L4455,2324L4455,2329L4457,2329L4457,2331L4455,2331L4455,2341L4457,2341L4457,2344L4461,2344L4464,2347L4461,2347L4461,2352L4466,2352L4466,2354L4464,2354L4461,2357L4461,2359L4459,2362L4461,2364L4466,2364L4466,2367L4468,2369L4468,2377L4466,2377L4466,2375L4464,2375L4461,2372L4455,2372L4453,2375L4453,2382L4455,2382L4457,2385L4459,2385L4461,2387L4461,2390L4457,2390L4457,2392L4455,2395L4457,2395L4457,2398L4455,2403L4453,2405L4451,2403L4448,2403L4446,2405L4446,2403L4444,2403L4444,2400L4440,2400L4440,2405L4438,2408L4438,2410L4433,2415L4433,2413L4431,2415L4429,2415L4422,2408L4420,2408L4420,2398L4420,2398L4420,2398z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4232,2290L4230,2288L4232,2285L4234,2285L4236,2285L4234,2285L4234,2288L4236,2288L4236,2290L4232,2290L4232,2290L4232,2290zM4236,2278L4236,2273L4240,2273L4240,2275L4238,2278L4236,2278L4236,2278L4236,2278zM4218,2248L4221,2247L4225,2247L4232,2245L4247,2245L4253,2242L4258,2237L4301,2237L4301,2242L4303,2242L4303,2245L4301,2247L4301,2250L4297,2250L4299,2250L4297,2250L4295,2252L4292,2252L4292,2255L4297,2255L4299,2257L4301,2257L4301,2267L4299,2270L4284,2270L4282,2273L4279,2273L4279,2275L4273,2275L4271,2278L4271,2280L4269,2280L4269,2285L4266,2288L4266,2290L4264,2293L4262,2293L4262,2288L4256,2288L4253,2285L4253,2280L4251,2280L4251,2278L4253,2273L4258,2273L4258,2270L4249,2270L4249,2267L4251,2264L4247,2265L4245,2265L4240,2267L4238,2267L4238,2265L4236,2264L4235,2266L4234,2264L4232,2262L4230,2264L4227,2260L4227,2255L4230,2252L4223,2252L4221,2250L4218,2248L4218,2248L4218,2248z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3108,2584L3110,2584L3110,2586L3112,2586L3112,2589L3097,2589L3097,2586L3093,2586L3093,2589L3090,2586L3088,2586L3086,2589L3086,2591L3084,2594L3084,2596L3080,2596L3077,2594L3077,2596L3073,2596L3071,2599L3071,2602L3067,2602L3062,2599L3060,2602L3060,2604L3056,2604L3058,2607L3058,2609L3051,2609L3051,2612L3045,2612L3045,2609L3043,2609L3041,2607L3036,2607L3032,2599L3030,2596L3028,2596L3025,2594L3023,2594L3025,2591L3021,2591L3021,2584L3023,2579L3023,2576L3019,2576L3019,2571L3017,2568L3017,2566L3015,2563L3015,2556L3017,2553L3017,2545L3021,2540L3021,2538L3019,2535L3028,2525L3028,2520L3023,2515L3023,2507L3021,2505L3010,2505L3010,2502L3012,2502L3012,2500L3015,2497L3015,2484L3012,2482L3012,2479L3008,2479L3006,2482L2995,2482L2976,2456L2978,2456L2980,2454L2980,2451L2984,2446L2984,2441L2982,2438L2982,2433L2984,2431L2991,2431L2993,2428L2995,2431L2995,2428L2999,2428L2999,2426L3002,2426L3006,2420L3008,2420L3008,2418L3006,2418L3006,2415L3002,2415L3002,2418L2999,2418L2997,2415L2997,2413L2999,2413L2999,2410L2997,2410L2997,2408L2995,2408L2995,2403L2999,2403L2999,2395L3002,2395L3006,2392L3008,2392L3010,2390L3012,2390L3012,2387L3015,2387L3015,2385L3017,2382L3019,2382L3021,2380L3021,2377L3025,2377L3032,2385L3038,2387L3049,2400L3049,2403L3054,2403L3057,2408L3057,2421L3056,2423L3056,2426L3064,2426L3064,2428L3071,2428L3071,2431L3073,2431L3073,2433L3077,2436L3081,2440L3082,2441L3084,2446L3084,2443L3086,2443L3090,2449L3093,2449L3093,2451L3095,2454L3095,2456L3093,2466L3093,2469L3090,2471L3090,2477L3088,2477L3092,2482L3090,2484L3088,2484L3088,2487L3086,2489L3082,2487L3080,2487L3075,2489L3073,2492L3073,2494L3075,2497L3075,2500L3071,2510L3071,2512L3069,2512L3069,2520L3073,2525L3073,2528L3075,2528L3075,2533L3077,2533L3080,2535L3080,2540L3082,2540L3084,2543L3086,2543L3090,2540L3090,2551L3093,2551L3093,2558L3095,2561L3099,2571L3101,2571L3103,2576L3103,2579L3108,2584L3108,2584L3108,2584z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2659,2040L2657,2038L2653,2038L2649,2035L2646,2035L2646,2030L2649,2030L2653,2033L2655,2033L2657,2035L2659,2035L2659,2040L2659,2040L2659,2040zM2688,2051L2690,2051L2690,2053L2688,2056L2688,2058L2690,2058L2690,2061L2688,2061L2683,2056L2662,2056L2662,2058L2655,2058L2653,2056L2644,2056L2646,2056L2644,2056L2644,2053L2640,2053L2631,2058L2631,2061L2629,2061L2625,2056L2623,2056L2620,2053L2616,2053L2614,2051L2614,2043L2616,2043L2618,2040L2623,2040L2625,2043L2636,2046L2644,2046L2649,2048L2664,2048L2664,2046L2666,2043L2668,2046L2672,2046L2672,2040L2670,2040L2666,2038L2666,2035L2659,2028L2662,2025L2659,2023L2659,2020L2662,2018L2662,2015L2653,2010L2642,2010L2641,2007L2641,2005L2642,2002L2646,2002L2649,2000L2664,2000L2672,2005L2677,2005L2679,2007L2690,2007L2690,2023L2692,2023L2692,2025L2690,2030L2688,2030L2690,2033L2690,2040L2688,2040L2688,2043L2681,2043L2683,2046L2685,2046L2685,2048L2688,2051L2688,2051L2688,2051z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2295,2127L2300,2127L2302,2130L2304,2130L2304,2132L2315,2132L2317,2130L2319,2130L2321,2127L2324,2130L2330,2132L2330,2135L2337,2135L2334,2132L2345,2137L2353,2147L2358,2148L2363,2148L2367,2158L2369,2158L2369,2160L2363,2160L2360,2163L2352,2168L2347,2168L2343,2171L2341,2171L2334,2173L2326,2168L2326,2165L2324,2168L2321,2168L2321,2171L2319,2171L2319,2176L2317,2176L2317,2178L2315,2181L2317,2181L2317,2183L2313,2183L2306,2191L2304,2191L2300,2193L2300,2199L2298,2199L2293,2196L2293,2191L2291,2191L2289,2193L2285,2201L2272,2201L2272,2211L2274,2211L2274,2216L2269,2216L2267,2219L2267,2224L2265,2227L2256,2227L2256,2224L2248,2214L2243,2214L2243,2211L2246,2211L2246,2209L2243,2209L2243,2206L2246,2201L2246,2199L2243,2199L2243,2196L2239,2196L2237,2199L2237,2196L2235,2193L2233,2193L2231,2196L2228,2196L2228,2199L2224,2199L2224,2193L2218,2193L2218,2188L2215,2188L2215,2191L2213,2191L2213,2186L2211,2186L2209,2183L2207,2183L2205,2181L2200,2181L2200,2178L2202,2176L2202,2173L2205,2173L2207,2171L2205,2171L2205,2158L2211,2155L2215,2150L2220,2150L2222,2145L2224,2145L2231,2137L2235,2137L2239,2132L2246,2132L2246,2130L2250,2135L2254,2135L2256,2132L2259,2135L2287,2135L2287,2132L2293,2132L2293,2130L2295,2130L2295,2127L2295,2127L2295,2127z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5282,1115L5282,1117L5280,1120L5278,1120L5278,1122L5280,1122L5278,1125L5276,1125L5274,1128L5274,1130L5269,1135L5269,1138L5267,1140L5265,1140L5265,1138L5258,1138L5258,1140L5256,1140L5256,1143L5252,1143L5252,1140L5250,1140L5245,1143L5239,1143L5235,1140L5232,1143L5230,1143L5228,1140L5224,1140L5224,1143L5222,1145L5217,1148L5213,1148L5213,1145L5211,1145L5209,1148L5204,1150L5200,1150L5198,1153L5196,1153L5193,1156L5187,1156L5187,1153L5172,1153L5172,1150L5170,1150L5170,1148L5165,1148L5165,1150L5163,1148L5161,1148L5161,1145L5157,1140L5152,1140L5152,1138L5150,1138L5150,1135L5148,1135L5144,1133L5141,1133L5139,1130L5137,1125L5135,1122L5135,1120L5133,1120L5133,1117L5131,1120L5128,1120L5128,1117L5133,1115L5139,1115L5139,1110L5137,1110L5137,1107L5139,1107L5139,1102L5137,1102L5139,1099L5144,1099L5146,1097L5144,1094L5139,1094L5137,1092L5141,1089L5146,1089L5146,1092L5154,1092L5154,1087L5157,1082L5163,1082L5167,1087L5174,1089L5202,1089L5202,1082L5204,1082L5204,1079L5222,1079L5222,1077L5224,1077L5224,1074L5230,1074L5230,1077L5239,1077L5239,1074L5245,1074L5245,1071L5248,1071L5248,1069L5252,1064L5278,1064L5282,1066L5284,1069L5284,1071L5287,1071L5289,1069L5300,1069L5302,1074L5306,1074L5308,1077L5308,1079L5317,1079L5317,1084L5315,1087L5310,1089L5302,1089L5300,1092L5297,1092L5297,1094L5295,1094L5293,1097L5293,1102L5291,1102L5289,1105L5289,1107L5284,1112L5282,1112L5282,1115L5282,1115L5282,1115z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4069,546L4069,544L4072,541L4076,538L4080,538L4082,541L4085,541L4082,538L4080,538L4085,538L4078,538L4072,541L4069,541L4067,544L4065,544L4061,541L4059,538L4061,536L4063,536L4059,531L4056,533L4037,533L4035,531L4028,531L4026,533L4024,533L4020,536L4017,533L4015,533L4015,531L4013,531L4013,528L4028,528L4033,526L4054,526L4056,523L4063,523L4063,526L4076,526L4076,523L4078,521L4078,518L4076,518L4076,521L4074,521L4069,523L4067,523L4063,521L4054,521L4056,518L4059,518L4061,515L4065,515L4069,513L4076,513L4078,510L4076,513L4074,510L4065,510L4065,513L4063,513L4063,510L4061,510L4063,510L4063,508L4065,508L4067,505L4065,508L4061,508L4056,510L4054,508L4052,508L4050,510L4048,510L4046,508L4039,508L4037,510L4024,510L4022,513L4015,513L4015,510L4000,510L4002,508L4004,508L4004,505L4011,505L4013,508L4020,508L4017,508L4015,505L4013,505L4020,505L4015,505L4015,503L4011,503L4011,500L4015,500L4020,503L4026,503L4026,505L4033,505L4033,503L4028,503L4037,503L4037,500L4022,500L4020,498L4017,498L4020,495L4024,498L4037,498L4026,498L4026,495L4022,495L4020,493L4020,490L4022,490L4024,493L4033,493L4028,493L4028,490L4024,490L4026,487L4039,487L4041,490L4043,490L4043,493L4050,493L4050,490L4052,493L4054,493L4054,498L4052,498L4054,495L4059,495L4059,498L4056,498L4059,498L4059,493L4056,490L4050,490L4048,487L4043,487L4043,485L4059,485L4052,485L4050,482L4037,482L4039,482L4043,477L4046,477L4050,480L4059,480L4063,482L4065,485L4072,485L4076,487L4078,487L4080,490L4080,493L4080,490L4085,490L4087,493L4085,495L4082,495L4091,495L4091,498L4089,503L4080,503L4080,500L4076,500L4080,505L4089,505L4089,508L4091,510L4093,510L4093,515L4095,518L4095,521L4095,510L4098,510L4100,513L4100,510L4098,510L4098,508L4100,508L4100,505L4102,505L4106,503L4108,503L4108,508L4113,510L4119,503L4119,500L4115,495L4115,490L4123,490L4128,495L4130,495L4130,498L4134,498L4134,500L4136,500L4136,503L4141,503L4143,500L4143,498L4141,495L4141,490L4152,490L4152,487L4165,487L4167,490L4167,495L4173,495L4175,500L4175,503L4180,505L4180,498L4178,498L4178,495L4175,495L4173,493L4173,490L4171,487L4184,487L4193,493L4199,493L4199,490L4201,487L4210,487L4212,490L4221,490L4219,490L4219,487L4223,487L4225,485L4223,480L4221,477L4230,477L4232,475L4236,475L4238,477L4240,477L4240,480L4245,480L4245,485L4249,485L4253,487L4256,487L4256,485L4262,485L4264,482L4266,482L4266,480L4269,480L4273,482L4271,482L4266,485L4264,485L4266,485L4266,487L4260,487L4260,490L4264,493L4269,493L4271,490L4273,490L4273,493L4275,493L4275,498L4271,498L4269,500L4269,503L4271,503L4273,500L4284,500L4284,503L4282,505L4277,508L4277,510L4277,508L4284,505L4297,505L4301,508L4303,510L4303,513L4301,513L4299,515L4303,515L4303,518L4305,518L4297,518L4292,521L4303,521L4305,523L4303,526L4295,526L4292,523L4292,526L4297,526L4299,528L4301,528L4290,528L4297,528L4299,531L4297,531L4297,533L4290,533L4292,533L4292,536L4284,536L4282,533L4277,533L4279,533L4282,536L4282,538L4275,538L4277,538L4277,541L4279,541L4277,546L4273,546L4269,549L4266,549L4266,551L4264,551L4262,549L4256,549L4253,546L4253,551L4245,551L4243,554L4236,554L4236,556L4232,556L4232,559L4227,559L4225,561L4223,561L4219,564L4212,564L4210,561L4208,564L4208,566L4204,566L4201,564L4201,566L4199,566L4188,569L4186,566L4184,566L4182,569L4182,572L4184,572L4184,574L4182,574L4178,577L4165,577L4162,579L4160,579L4152,577L4143,577L4136,574L4119,574L4113,569L4111,569L4111,566L4117,566L4106,566L4108,566L4106,564L4104,564L4104,566L4102,566L4102,564L4093,564L4093,561L4098,561L4093,559L4091,561L4089,561L4089,564L4050,564L4050,556L4054,556L4054,559L4061,559L4059,559L4065,559L4069,556L4074,556L4072,554L4078,554L4078,551L4074,551L4076,549L4078,549L4078,546L4089,546L4076,546L4076,549L4067,549L4069,546L4069,546L4069,546z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7288,2415L7288,2418L7290,2420L7290,2428L7288,2428L7288,2431L7286,2431L7286,2426L7284,2423L7284,2420L7281,2420L7281,2418L7284,2415L7288,2415L7288,2415L7288,2415zM7251,2298L7253,2301L7251,2306L7251,2308L7249,2308L7247,2306L7247,2298L7249,2295L7251,2295L7251,2298L7251,2298L7251,2298zM7258,2257L7258,2273L7255,2275L7253,2273L7251,2265L7251,2262L7253,2262L7253,2255L7255,2252L7258,2252L7258,2257L7258,2257L7258,2257zM7260,2250L7258,2250L7255,2247L7255,2245L7258,2237L7258,2232L7260,2229L7262,2229L7262,2232L7264,2237L7264,2242L7262,2245L7260,2245L7260,2247L7262,2247L7262,2250L7260,2250L7260,2250L7260,2250zM7260,2228L7258,2224L7260,2224L7260,2214L7262,2211L7262,2209L7264,2206L7266,2206L7266,2224L7262,2224L7264,2224L7262,2224L7260,2228L7260,2228L7260,2228zM7355,1696L7355,1699L7353,1699L7351,1701L7351,1706L7353,1706L7355,1704L7355,1701L7362,1701L7362,1706L7364,1709L7364,1712L7359,1717L7357,1717L7357,1722L7359,1724L7359,1722L7364,1719L7366,1719L7366,1722L7368,1722L7368,1724L7381,1724L7381,1727L7383,1727L7383,1729L7385,1729L7383,1732L7385,1734L7385,1737L7379,1742L7377,1745L7375,1745L7372,1747L7372,1755L7375,1757L7377,1757L7377,1760L7379,1765L7375,1765L7375,1763L7370,1763L7372,1760L7370,1760L7370,1757L7359,1757L7353,1760L7351,1760L7349,1763L7346,1763L7346,1768L7342,1768L7338,1773L7338,1775L7333,1775L7333,1778L7331,1778L7327,1780L7327,1778L7325,1780L7323,1780L7320,1785L7320,1791L7323,1793L7323,1796L7325,1798L7325,1801L7323,1801L7323,1803L7320,1803L7320,1811L7316,1816L7314,1816L7314,1819L7310,1819L7310,1821L7307,1824L7307,1829L7312,1829L7312,1834L7310,1839L7310,1842L7307,1842L7301,1854L7301,1857L7299,1859L7299,1867L7297,1872L7294,1870L7292,1870L7290,1867L7288,1870L7286,1870L7286,1867L7277,1867L7275,1865L7273,1865L7273,1867L7275,1872L7275,1893L7273,1898L7273,1900L7271,1900L7271,1898L7268,1898L7268,1900L7266,1903L7266,1916L7268,1916L7268,1921L7271,1923L7268,1923L7268,1926L7266,1926L7264,1928L7264,1931L7260,1931L7255,1926L7255,1931L7253,1933L7253,1921L7251,1921L7251,1908L7249,1908L7247,1900L7247,1887L7245,1885L7245,1875L7242,1877L7240,1875L7240,1877L7236,1877L7236,1875L7234,1875L7234,1877L7236,1880L7236,1882L7234,1885L7232,1885L7232,1887L7229,1887L7229,1893L7232,1893L7232,1898L7229,1898L7229,1900L7223,1900L7223,1895L7221,1893L7221,1890L7219,1890L7219,1895L7216,1893L7216,1885L7212,1880L7212,1875L7214,1875L7216,1872L7214,1870L7216,1867L7219,1862L7221,1862L7221,1865L7225,1865L7229,1862L7234,1862L7234,1854L7236,1857L7240,1854L7240,1849L7242,1849L7242,1842L7245,1839L7242,1839L7242,1836L7247,1836L7247,1839L7249,1839L7249,1834L7247,1834L7242,1829L7216,1829L7216,1826L7210,1826L7210,1829L7190,1829L7186,1826L7182,1826L7180,1824L7175,1824L7175,1819L7177,1816L7177,1811L7175,1806L7177,1803L7175,1801L7175,1798L7173,1796L7171,1796L7171,1793L7169,1793L7169,1801L7162,1801L7160,1798L7156,1796L7156,1788L7151,1785L7151,1791L7154,1793L7149,1793L7145,1791L7145,1788L7141,1783L7136,1783L7134,1785L7138,1785L7138,1788L7141,1788L7141,1791L7134,1791L7134,1796L7130,1796L7130,1798L7128,1803L7128,1806L7130,1808L7132,1808L7138,1811L7138,1814L7143,1819L7145,1819L7147,1816L7149,1819L7149,1824L7154,1824L7151,1829L7149,1829L7145,1826L7138,1826L7138,1831L7136,1834L7136,1836L7134,1839L7132,1836L7130,1836L7130,1839L7125,1844L7128,1849L7130,1849L7132,1852L7136,1852L7138,1854L7138,1857L7145,1857L7145,1859L7147,1859L7145,1859L7145,1865L7147,1865L7145,1870L7143,1870L7143,1872L7141,1875L7141,1880L7145,1885L7147,1885L7145,1887L7145,1890L7147,1893L7147,1890L7149,1890L7151,1893L7151,1895L7149,1895L7149,1900L7151,1903L7154,1949L7146,1947L7142,1950L7136,1950L7130,1947L7125,1947L7130,1934L7128,1932L7121,1941L7119,1941L7117,1944L7110,1944L7106,1946L7104,1946L7102,1949L7099,1949L7097,1951L7095,1956L7093,1956L7093,1967L7095,1967L7095,1969L7097,1969L7097,1972L7095,1972L7095,1974L7097,1974L7097,1977L7093,1979L7091,1979L7091,1987L7089,1987L7089,1989L7084,1989L7082,1992L7082,1997L7080,1997L7080,2000L7078,2000L7073,2002L7067,2002L7067,2005L7063,2005L7060,2007L7039,2023L7037,2025L7034,2025L7034,2030L7032,2033L7030,2033L7028,2038L7017,2051L7017,2053L7015,2053L7013,2056L7011,2056L7008,2058L7002,2061L7002,2063L7000,2066L6998,2071L6995,2071L6993,2076L6991,2076L6991,2079L6987,2079L6982,2081L6980,2084L6976,2086L6974,2086L6967,2094L6965,2099L6969,2102L6967,2104L6967,2109L6963,2112L6961,2114L6956,2114L6952,2117L6943,2117L6941,2114L6941,2117L6937,2117L6935,2125L6935,2130L6933,2130L6933,2132L6931,2132L6930,2136L6929,2138L6926,2137L6926,2132L6918,2132L6913,2135L6913,2137L6911,2137L6911,2140L6909,2140L6909,2142L6907,2148L6907,2150L6905,2150L6905,2165L6907,2168L6907,2171L6909,2173L6909,2183L6907,2183L6907,2193L6909,2196L6909,2204L6913,2214L6913,2216L6911,2219L6911,2234L6909,2237L6907,2245L6907,2247L6902,2252L6902,2255L6900,2255L6900,2257L6898,2260L6898,2267L6896,2267L6898,2267L6896,2267L6896,2278L6898,2278L6898,2306L6900,2311L6899,2316L6895,2316L6892,2313L6885,2313L6885,2316L6883,2316L6883,2318L6881,2318L6883,2321L6883,2324L6879,2329L6876,2334L6874,2336L6872,2341L6876,2347L6881,2347L6885,2349L6887,2352L6885,2352L6884,2350L6883,2349L6870,2349L6861,2354L6859,2354L6855,2359L6853,2359L6853,2362L6850,2369L6850,2375L6848,2377L6848,2380L6846,2380L6837,2385L6835,2385L6835,2387L6833,2387L6829,2385L6827,2385L6822,2380L6820,2380L6820,2377L6818,2377L6816,2372L6814,2369L6811,2364L6807,2362L6805,2352L6803,2349L6803,2347L6801,2344L6801,2333L6796,2321L6796,2318L6790,2301L6790,2295L6788,2293L6783,2280L6783,2278L6781,2275L6781,2273L6779,2273L6779,2267L6772,2260L6770,2260L6770,2257L6768,2257L6768,2252L6762,2239L6762,2234L6759,2234L6759,2232L6757,2224L6757,2216L6755,2209L6755,2206L6753,2199L6753,2196L6751,2191L6749,2188L6749,2183L6746,2181L6746,2178L6749,2178L6746,2176L6744,2176L6744,2171L6742,2171L6742,2168L6738,2168L6740,2165L6738,2163L6736,2158L6736,2155L6731,2145L6729,2145L6727,2137L6727,2135L6725,2132L6725,2130L6723,2130L6723,2127L6720,2127L6720,2120L6718,2114L6718,2109L6716,2099L6716,2089L6714,2084L6714,2079L6712,2076L6712,2069L6710,2066L6710,2063L6707,2056L6707,2051L6705,2051L6705,2040L6703,2033L6703,2020L6701,2018L6701,2005L6699,2005L6699,2000L6701,1997L6701,1987L6703,1987L6703,1982L6705,1982L6705,1979L6707,1972L6705,1972L6705,1969L6703,1967L6705,1964L6705,1961L6699,1961L6699,1955L6700,1947L6705,1948L6708,1942L6702,1944L6696,1944L6697,1939L6703,1933L6702,1930L6695,1934L6696,1929L6702,1922L6699,1920L6690,1924L6688,1935L6689,1946L6681,1961L6668,1967L6666,1967L6666,1969L6664,1969L6660,1972L6658,1972L6651,1974L6645,1974L6634,1967L6627,1959L6625,1959L6623,1954L6614,1944L6612,1944L6610,1938L6608,1936L6606,1936L6597,1926L6597,1923L6595,1921L6597,1921L6597,1918L6599,1916L6603,1921L6601,1921L6601,1923L6606,1923L6621,1916L6625,1916L6625,1913L6629,1913L6632,1910L6634,1905L6638,1900L6632,1900L6621,1903L6621,1905L6619,1905L6616,1908L6608,1905L6603,1905L6599,1900L6595,1900L6590,1895L6588,1895L6584,1890L6582,1885L6582,1880L6575,1880L6574,1880L6575,1877L6575,1870L6577,1870L6577,1867L6590,1867L6590,1857L6593,1854L6595,1857L6614,1857L6614,1859L6616,1859L6619,1862L6625,1862L6629,1857L6632,1857L6632,1854L6636,1854L6640,1852L6642,1852L6642,1854L6640,1857L6642,1857L6642,1859L6647,1859L6651,1854L6655,1854L6655,1852L6653,1852L6653,1844L6655,1844L6653,1839L6651,1836L6651,1831L6649,1829L6649,1826L6647,1826L6647,1824L6645,1821L6645,1811L6634,1811L6629,1803L6627,1801L6627,1798L6629,1796L6629,1783L6627,1783L6627,1780L6623,1783L6619,1783L6619,1780L6616,1780L6616,1778L6612,1778L6612,1775L6610,1775L6610,1773L6614,1763L6625,1750L6627,1750L6627,1742L6629,1742L6636,1734L6642,1734L6642,1737L6645,1737L6645,1745L6653,1745L6655,1742L6658,1742L6660,1740L6673,1740L6677,1737L6677,1734L6684,1727L6684,1724L6686,1722L6688,1717L6688,1714L6692,1709L6697,1706L6699,1706L6701,1704L6703,1704L6707,1701L6707,1699L6710,1696L6712,1696L6716,1686L6716,1683L6720,1673L6720,1671L6725,1671L6727,1668L6731,1668L6736,1663L6736,1661L6733,1661L6733,1658L6736,1653L6738,1650L6740,1650L6742,1648L6742,1645L6746,1640L6751,1638L6753,1635L6751,1635L6751,1625L6753,1625L6753,1620L6751,1617L6751,1615L6753,1610L6755,1607L6757,1607L6759,1604L6762,1604L6762,1602L6764,1604L6766,1604L6770,1602L6775,1597L6770,1592L6766,1589L6755,1589L6755,1579L6753,1579L6751,1581L6746,1579L6746,1571L6742,1571L6738,1566L6736,1566L6736,1564L6738,1564L6738,1561L6740,1561L6742,1556L6742,1553L6738,1553L6738,1551L6736,1551L6736,1546L6740,1546L6742,1543L6744,1543L6744,1538L6733,1538L6733,1536L6736,1536L6736,1533L6738,1533L6736,1530L6733,1530L6731,1528L6731,1525L6733,1523L6733,1518L6740,1518L6742,1515L6755,1515L6755,1518L6768,1518L6768,1520L6775,1520L6781,1523L6788,1523L6788,1520L6792,1520L6792,1518L6794,1518L6794,1520L6798,1520L6798,1518L6801,1518L6803,1515L6814,1515L6814,1518L6818,1518L6818,1510L6820,1507L6822,1507L6822,1505L6820,1505L6820,1502L6827,1500L6829,1500L6831,1497L6842,1492L6842,1490L6844,1492L6846,1492L6846,1490L6850,1490L6850,1492L6848,1492L6848,1500L6850,1502L6853,1507L6853,1510L6855,1510L6855,1518L6857,1518L6857,1520L6866,1520L6866,1523L6868,1523L6874,1528L6874,1530L6876,1530L6876,1533L6874,1533L6872,1536L6868,1536L6868,1541L6870,1546L6870,1556L6872,1556L6872,1558L6874,1558L6874,1561L6876,1561L6879,1564L6881,1564L6881,1566L6883,1566L6885,1569L6885,1574L6887,1574L6887,1576L6889,1579L6889,1584L6887,1584L6887,1587L6883,1589L6879,1589L6874,1594L6868,1587L6870,1587L6870,1584L6866,1584L6866,1587L6859,1587L6859,1589L6861,1592L6861,1597L6863,1599L6863,1602L6866,1602L6866,1604L6870,1604L6870,1607L6868,1607L6868,1615L6870,1615L6870,1620L6868,1620L6868,1627L6872,1627L6876,1625L6876,1622L6879,1622L6881,1625L6881,1627L6883,1630L6883,1632L6885,1632L6885,1635L6887,1635L6889,1640L6894,1640L6894,1638L6900,1638L6900,1640L6902,1640L6902,1643L6909,1645L6911,1645L6909,1650L6911,1653L6913,1653L6918,1655L6920,1655L6924,1658L6924,1661L6931,1661L6931,1663L6928,1666L6926,1666L6924,1671L6920,1671L6920,1673L6918,1676L6915,1676L6915,1678L6913,1678L6913,1681L6915,1681L6915,1683L6913,1683L6913,1686L6911,1686L6909,1689L6911,1694L6911,1696L6905,1704L6905,1709L6907,1709L6909,1712L6911,1712L6911,1714L6913,1714L6915,1717L6918,1717L6918,1714L6920,1714L6922,1717L6928,1722L6933,1722L6935,1724L6937,1724L6939,1729L6941,1729L6943,1732L6943,1734L6948,1734L6952,1740L6963,1740L6967,1745L6969,1745L6969,1747L6974,1747L6976,1745L6978,1745L6978,1750L6980,1752L6985,1752L6987,1755L6993,1755L6993,1757L6995,1757L6998,1755L6998,1752L7004,1752L7006,1755L7008,1755L7008,1757L7011,1757L7011,1755L7015,1755L7015,1752L7017,1752L7021,1755L7024,1755L7026,1757L7032,1757L7032,1768L7039,1768L7041,1770L7047,1775L7050,1778L7052,1778L7054,1775L7056,1775L7056,1773L7060,1773L7060,1775L7063,1775L7063,1780L7065,1783L7067,1783L7067,1780L7076,1780L7076,1783L7078,1780L7089,1785L7091,1788L7093,1788L7095,1785L7095,1783L7097,1783L7102,1788L7117,1788L7119,1785L7123,1785L7123,1788L7128,1788L7128,1783L7130,1780L7130,1773L7128,1770L7128,1768L7125,1768L7125,1752L7128,1750L7128,1747L7130,1747L7130,1740L7128,1740L7130,1737L7136,1737L7138,1734L7141,1734L7143,1732L7145,1734L7149,1734L7149,1747L7147,1747L7147,1755L7149,1757L7151,1757L7151,1760L7147,1760L7147,1765L7149,1765L7149,1770L7154,1770L7156,1773L7156,1775L7160,1775L7160,1773L7162,1773L7167,1775L7171,1775L7171,1778L7184,1778L7184,1775L7186,1775L7186,1773L7193,1773L7195,1775L7219,1775L7219,1773L7223,1773L7223,1775L7229,1775L7232,1773L7238,1773L7240,1770L7238,1770L7238,1768L7236,1765L7236,1763L7238,1763L7240,1760L7240,1757L7238,1757L7236,1752L7236,1755L7229,1755L7225,1750L7225,1745L7227,1745L7227,1742L7232,1742L7234,1745L7238,1745L7238,1742L7242,1742L7242,1740L7245,1740L7245,1742L7249,1742L7251,1740L7253,1740L7253,1737L7255,1737L7255,1732L7258,1729L7262,1729L7262,1727L7266,1727L7268,1724L7271,1724L7271,1722L7273,1719L7273,1717L7275,1714L7290,1714L7292,1712L7292,1709L7294,1706L7297,1706L7297,1704L7303,1696L7307,1696L7307,1694L7310,1691L7312,1691L7318,1699L7323,1699L7329,1701L7333,1701L7333,1699L7338,1694L7342,1691L7346,1691L7349,1689L7351,1689L7351,1691L7353,1691L7353,1694L7355,1696L7355,1696L7355,1696z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6244,1770L6242,1773L6240,1773L6240,1775L6237,1775L6235,1778L6227,1778L6224,1780L6218,1783L6216,1783L6216,1780L6218,1780L6222,1778L6224,1778L6227,1775L6231,1775L6231,1773L6229,1773L6229,1770L6237,1770L6240,1768L6244,1768L6244,1770L6244,1770L6244,1770zM6380,1469L6380,1477L6383,1477L6383,1490L6380,1495L6378,1497L6378,1510L6376,1513L6374,1518L6372,1520L6367,1520L6367,1523L6370,1523L6370,1525L6372,1528L6367,1528L6367,1530L6365,1530L6361,1536L6361,1538L6363,1541L6363,1548L6361,1548L6361,1551L6363,1551L6363,1553L6374,1553L6374,1556L6372,1556L6370,1558L6370,1561L6367,1561L6365,1566L6363,1566L6363,1571L6372,1594L6372,1602L6370,1604L6370,1617L6372,1622L6380,1622L6387,1625L6396,1625L6398,1627L6396,1630L6398,1630L6398,1632L6400,1638L6396,1645L6376,1668L6374,1673L6372,1676L6385,1691L6385,1694L6387,1699L6391,1704L6391,1706L6400,1717L6400,1719L6402,1719L6409,1722L6415,1722L6417,1724L6417,1727L6426,1727L6426,1729L6424,1734L6424,1737L6426,1742L6426,1755L6424,1760L6426,1760L6428,1763L6430,1763L6430,1760L6439,1760L6439,1763L6441,1763L6441,1765L6439,1765L6439,1770L6437,1773L6437,1780L6422,1780L6419,1783L6415,1783L6413,1785L6411,1785L6411,1791L6409,1788L6406,1788L6406,1791L6404,1791L6400,1793L6398,1793L6398,1808L6393,1808L6393,1824L6387,1831L6383,1829L6380,1829L6376,1826L6365,1826L6365,1821L6363,1821L6363,1819L6361,1819L6359,1821L6359,1824L6361,1824L6361,1826L6359,1826L6357,1824L6357,1821L6335,1821L6335,1819L6326,1819L6324,1821L6320,1821L6318,1819L6318,1816L6311,1816L6307,1814L6300,1814L6300,1816L6294,1816L6294,1814L6292,1814L6292,1811L6285,1811L6285,1808L6283,1808L6283,1811L6281,1811L6279,1808L6272,1808L6272,1803L6270,1801L6270,1798L6266,1788L6266,1785L6268,1785L6268,1783L6266,1780L6266,1773L6263,1773L6261,1768L6261,1765L6259,1765L6255,1763L6240,1763L6235,1765L6235,1768L6227,1768L6227,1770L6224,1770L6224,1775L6222,1775L6216,1775L6214,1778L6205,1783L6203,1785L6201,1785L6194,1783L6190,1778L6172,1778L6170,1775L6166,1773L6166,1770L6164,1768L6159,1768L6157,1765L6153,1765L6149,1763L6149,1760L6146,1760L6144,1757L6142,1757L6142,1752L6140,1750L6140,1747L6131,1747L6131,1745L6129,1745L6129,1742L6125,1742L6120,1740L6118,1740L6118,1742L6114,1742L6114,1740L6110,1737L6107,1734L6105,1729L6103,1727L6101,1722L6101,1719L6099,1717L6099,1709L6094,1709L6094,1706L6092,1706L6092,1704L6094,1704L6097,1701L6094,1701L6094,1699L6088,1699L6088,1686L6084,1683L6077,1676L6077,1673L6075,1673L6073,1666L6073,1666L6073,1663L6066,1663L6066,1666L6064,1666L6062,1668L6058,1671L6055,1668L6055,1666L6051,1666L6049,1663L6042,1659L6040,1659L6040,1663L6040,1668L6038,1671L6036,1671L6034,1668L6032,1671L6027,1671L6025,1668L6025,1663L6019,1655L6014,1655L6014,1638L6006,1638L6006,1622L6008,1620L6008,1617L6010,1615L6010,1612L6008,1610L6008,1607L6003,1604L6003,1602L6001,1599L5999,1594L5999,1592L5997,1589L5988,1589L5984,1584L5982,1584L5982,1581L5980,1581L5980,1579L5978,1579L5973,1576L5971,1574L5962,1574L5962,1569L5965,1566L5965,1564L5962,1564L5962,1561L5960,1561L5960,1556L5956,1556L5958,1553L5956,1551L5954,1551L5954,1553L5952,1553L5952,1551L5949,1551L5949,1546L5945,1541L5943,1541L5943,1538L5945,1538L5945,1536L5947,1536L5947,1528L5943,1528L5943,1525L5947,1520L5952,1520L5952,1518L5949,1518L5949,1513L5952,1513L5954,1510L5956,1510L5956,1502L5958,1505L5960,1505L5962,1502L5965,1502L5965,1500L5962,1500L5962,1497L5958,1492L5958,1487L5960,1485L5965,1485L5967,1482L5969,1482L5969,1479L5952,1479L5952,1477L5949,1477L5949,1474L5943,1474L5941,1472L5941,1467L5939,1462L5939,1459L5936,1459L5936,1462L5934,1462L5934,1459L5932,1456L5932,1449L5926,1449L5926,1446L5928,1446L5928,1439L5923,1439L5926,1436L5926,1431L5921,1428L5919,1428L5919,1418L5921,1418L5919,1416L5910,1413L5910,1411L5913,1405L5915,1403L5917,1398L5915,1395L5913,1395L5913,1388L5910,1388L5910,1385L5913,1383L5910,1380L5908,1380L5908,1372L5906,1365L5904,1365L5904,1362L5915,1362L5917,1354L5917,1352L5919,1349L5921,1349L5926,1354L5928,1354L5928,1360L5930,1360L5930,1362L5932,1362L5932,1365L5934,1365L5934,1370L5941,1370L5943,1375L5945,1377L5947,1377L5954,1380L5975,1380L5980,1375L5980,1372L5982,1370L5988,1370L5988,1367L5991,1365L5995,1365L5995,1362L5997,1362L5997,1360L6001,1360L6008,1354L6010,1354L6014,1352L6014,1354L6016,1354L6021,1360L6023,1360L6023,1362L6025,1362L6023,1365L6019,1365L6019,1370L6021,1372L6023,1372L6023,1377L6016,1377L6014,1380L6014,1383L6019,1383L6019,1385L6021,1385L6021,1388L6023,1388L6023,1390L6025,1388L6027,1388L6029,1393L6032,1395L6036,1395L6038,1393L6038,1398L6040,1408L6040,1413L6042,1416L6042,1418L6045,1418L6045,1421L6047,1421L6049,1423L6051,1423L6053,1426L6068,1426L6075,1428L6077,1431L6077,1436L6079,1436L6079,1439L6084,1441L6086,1441L6088,1444L6094,1446L6097,1449L6099,1449L6101,1451L6112,1451L6112,1454L6133,1454L6138,1451L6142,1451L6146,1449L6155,1449L6159,1446L6166,1446L6168,1444L6178,1444L6177,1446L6172,1446L6177,1449L6179,1449L6183,1444L6181,1441L6181,1439L6179,1434L6179,1431L6185,1431L6190,1428L6194,1428L6196,1426L6203,1426L6203,1418L6205,1418L6205,1416L6207,1416L6211,1411L6214,1411L6216,1408L6220,1408L6220,1405L6246,1405L6246,1400L6261,1400L6263,1403L6266,1403L6268,1400L6270,1400L6274,1405L6274,1411L6283,1411L6296,1416L6298,1416L6298,1418L6302,1421L6313,1421L6315,1418L6318,1418L6318,1421L6322,1421L6324,1423L6328,1423L6331,1426L6331,1431L6333,1434L6335,1434L6339,1436L6341,1436L6348,1439L6348,1441L6350,1441L6350,1444L6352,1444L6352,1446L6359,1454L6380,1454L6380,1469L6380,1469L6380,1469z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5999,1594L6001,1599L6003,1602L6003,1604L6008,1607L6008,1610L6010,1612L6010,1615L6008,1617L6008,1620L6006,1622L6006,1638L6014,1638L6014,1655L6019,1655L6025,1663L6025,1668L6027,1671L6029,1671L6029,1673L6025,1673L6023,1671L6021,1671L6019,1668L6012,1668L6010,1669L5993,1668L5991,1671L5991,1673L5988,1673L5988,1676L5986,1681L5984,1683L5984,1686L5978,1694L5978,1696L5975,1696L5975,1699L5973,1699L5971,1701L5923,1696L5804,1607L5770,1599L5772,1597L5772,1594L5765,1594L5763,1589L5767,1589L5759,1561L5759,1558L5763,1558L5819,1525L5822,1523L5822,1520L5826,1515L5826,1495L5828,1495L5828,1490L5830,1487L5830,1477L5826,1472L5828,1462L5830,1459L5830,1456L5843,1454L5858,1439L5863,1436L5865,1436L5867,1431L5869,1428L5871,1428L5871,1431L5876,1431L5880,1428L5889,1434L5902,1434L5902,1431L5906,1431L5910,1434L5910,1436L5908,1439L5910,1441L5913,1441L5915,1439L5917,1439L5919,1436L5926,1436L5923,1439L5928,1439L5928,1446L5926,1446L5926,1449L5932,1449L5932,1456L5934,1459L5934,1462L5936,1462L5936,1459L5939,1459L5939,1462L5941,1467L5941,1472L5943,1474L5949,1474L5949,1477L5952,1477L5952,1479L5969,1479L5969,1482L5967,1482L5965,1485L5960,1485L5958,1487L5958,1492L5962,1497L5962,1500L5965,1500L5965,1502L5962,1502L5960,1505L5958,1505L5956,1502L5956,1510L5954,1510L5952,1513L5949,1513L5949,1518L5952,1518L5952,1520L5947,1520L5943,1525L5943,1528L5947,1528L5947,1536L5945,1536L5945,1538L5943,1538L5943,1541L5945,1541L5949,1546L5949,1551L5952,1551L5952,1553L5954,1553L5954,1551L5956,1551L5958,1553L5956,1556L5960,1556L5960,1561L5962,1561L5962,1564L5965,1564L5965,1566L5962,1569L5962,1574L5971,1574L5973,1576L5978,1579L5980,1579L5980,1581L5982,1581L5982,1584L5984,1584L5988,1589L5997,1589L5999,1592L5999,1594L5999,1594L5999,1594z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4408,890L4403,889L4397,886L4398,884L4400,883L4403,884L4405,883L4405,880L4403,878L4407,878L4403,878L4407,878L4407,875L4425,875L4425,878L4427,878L4427,880L4429,878L4429,875L4433,875L4434,877L4444,875L4440,875L4442,872L4446,870L4451,870L4451,867L4455,867L4455,865L4438,865L4438,862L4440,860L4446,860L4446,852L4455,847L4459,847L4461,845L4472,844L4474,842L4477,842L4477,839L4485,844L4490,844L4487,846L4485,847L4483,847L4472,860L4466,862L4461,862L4461,865L4466,865L4464,867L4461,867L4457,870L4455,870L4459,875L4464,875L4464,880L4472,880L4479,883L4483,878L4481,875L4483,875L4485,872L4490,872L4490,875L4492,875L4494,880L4496,883L4496,885L4498,885L4498,883L4509,883L4511,885L4505,885L4505,890L4507,890L4507,895L4509,895L4509,898L4511,898L4513,901L4511,906L4509,906L4509,908L4513,913L4513,924L4511,924L4511,926L4509,929L4509,934L4507,934L4505,939L4500,939L4503,941L4505,941L4505,944L4492,944L4492,946L4490,946L4490,944L4487,941L4487,946L4470,946L4470,949L4472,949L4468,954L4466,954L4464,952L4464,954L4461,954L4459,957L4457,957L4448,959L4448,962L4444,962L4440,964L4431,964L4427,967L4425,967L4422,968L4420,968L4418,967L4410,967L4414,962L4409,962L4405,964L4401,964L4405,959L4403,959L4405,959L4401,959L4399,957L4396,957L4394,959L4393,956L4393,953L4401,949L4403,949L4409,946L4392,946L4392,949L4390,946L4390,944L4394,944L4396,941L4399,941L4405,944L4409,944L4409,941L4407,941L4407,939L4412,934L4414,934L4414,931L4409,932L4409,929L4416,926L4420,921L4418,921L4422,913L4427,913L4427,916L4429,913L4433,913L4433,908L4431,908L4429,911L4414,911L4414,908L4416,908L4416,906L4412,906L4412,908L4407,908L4407,906L4409,906L4399,906L4399,901L4403,898L4405,898L4405,893L4414,893L4414,890L4416,890L4416,888L4409,888L4408,890L4408,890L4408,890z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5660,1612L5660,1615L5653,1617L5653,1622L5650,1622L5650,1627L5653,1627L5657,1625L5661,1625L5663,1622L5666,1622L5666,1635L5661,1645L5661,1648L5659,1650L5657,1655L5657,1668L5655,1671L5655,1676L5653,1681L5653,1686L5650,1686L5650,1681L5648,1678L5646,1671L5646,1668L5642,1658L5640,1658L5640,1655L5642,1655L5633,1632L5633,1630L5635,1630L5635,1625L5640,1622L5640,1620L5642,1620L5640,1617L5642,1615L5644,1610L5644,1607L5646,1607L5646,1602L5648,1599L5648,1594L5650,1592L5650,1581L5653,1579L5655,1579L5655,1571L5657,1569L5661,1569L5663,1571L5666,1569L5668,1569L5668,1566L5670,1564L5672,1564L5672,1571L5670,1571L5670,1576L5672,1576L5670,1579L5672,1579L5672,1581L5670,1581L5670,1584L5668,1592L5666,1592L5666,1589L5663,1589L5663,1587L5661,1589L5661,1587L5659,1587L5655,1589L5655,1597L5653,1599L5653,1610L5660,1610L5660,1612L5660,1612L5660,1612z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5113,1400L5113,1405L5111,1405L5109,1408L5109,1411L5105,1416L5105,1418L5102,1421L5102,1423L5100,1423L5100,1431L5102,1436L5105,1436L5105,1439L5107,1439L5107,1441L5105,1441L5105,1444L5102,1444L5100,1446L5100,1449L5102,1451L5100,1454L5098,1451L5089,1451L5085,1449L5081,1444L5081,1441L5079,1441L5076,1439L5066,1439L5064,1436L5061,1436L5061,1434L5057,1434L5057,1431L5053,1431L5051,1428L5048,1428L5048,1426L5044,1426L5042,1423L5033,1423L5029,1421L5027,1418L5027,1411L5029,1408L5029,1405L5031,1405L5035,1403L5040,1408L5042,1408L5044,1405L5044,1403L5046,1403L5051,1400L5053,1403L5053,1405L5061,1411L5066,1411L5068,1408L5085,1408L5087,1405L5092,1403L5098,1403L5100,1405L5102,1403L5107,1403L5111,1400L5113,1398L5113,1400L5113,1400L5113,1400zM4951,1321L4951,1324L4953,1324L4953,1332L4951,1332L4949,1334L4949,1339L4951,1339L4951,1349L4949,1349L4949,1352L4951,1352L4949,1357L4949,1365L4947,1367L4947,1372L4942,1372L4942,1370L4940,1370L4931,1367L4931,1377L4929,1380L4927,1380L4923,1377L4921,1380L4921,1377L4918,1375L4916,1375L4916,1377L4914,1377L4914,1372L4916,1372L4916,1370L4914,1370L4916,1367L4914,1365L4914,1360L4916,1354L4916,1352L4918,1352L4918,1347L4914,1347L4914,1342L4916,1339L4916,1332L4914,1326L4912,1324L4908,1324L4908,1319L4910,1314L4912,1316L4921,1316L4921,1314L4925,1314L4931,1306L4934,1306L4936,1303L4938,1303L4944,1306L4947,1306L4949,1311L4944,1314L4949,1314L4949,1316L4951,1321L4951,1321L4951,1321zM4957,1135L4960,1138L4960,1140L4964,1140L4964,1135L4962,1133L4960,1133L4960,1130L4962,1128L4964,1128L4966,1125L4966,1128L4968,1130L4973,1130L4973,1128L4970,1122L4973,1120L4977,1120L4977,1117L4979,1117L4979,1120L4981,1120L4981,1122L4988,1122L4988,1120L4992,1115L5007,1115L5016,1112L5020,1112L5018,1115L5018,1117L5020,1117L5025,1122L5025,1125L5035,1125L5038,1128L5055,1128L5057,1130L5061,1130L5061,1133L5057,1135L5055,1135L5053,1138L5053,1140L5061,1140L5061,1143L5059,1143L5055,1148L5059,1148L5059,1150L5064,1156L5066,1156L5068,1158L5066,1161L5061,1156L5059,1156L5059,1154L5057,1153L5057,1156L5055,1158L5055,1156L5044,1156L5044,1158L5042,1158L5040,1161L5038,1161L5033,1163L5031,1163L5031,1161L5029,1161L5025,1163L5022,1163L5022,1166L5018,1168L5018,1171L5025,1179L5027,1179L5029,1181L5029,1184L5025,1184L5025,1186L5022,1186L5022,1199L5025,1204L5029,1209L5033,1212L5033,1214L5040,1214L5044,1217L5048,1222L5051,1222L5051,1224L5057,1224L5059,1227L5059,1230L5066,1242L5066,1247L5068,1247L5068,1252L5083,1270L5087,1270L5087,1273L5089,1273L5089,1275L5094,1275L5094,1278L5098,1278L5100,1281L5131,1281L5131,1286L5128,1286L5126,1288L5124,1288L5124,1291L5122,1291L5122,1293L5124,1293L5124,1296L5126,1296L5128,1298L5131,1298L5139,1303L5144,1303L5154,1309L5159,1309L5163,1314L5178,1321L5180,1321L5183,1324L5183,1326L5185,1326L5189,1329L5193,1334L5193,1337L5196,1339L5193,1342L5193,1344L5191,1344L5191,1349L5187,1349L5185,1347L5183,1347L5183,1342L5180,1339L5178,1334L5167,1334L5165,1332L5159,1329L5163,1329L5163,1326L5152,1326L5152,1329L5150,1329L5150,1332L5148,1334L5146,1334L5146,1339L5141,1339L5141,1347L5139,1349L5139,1354L5144,1354L5146,1357L5148,1357L5152,1360L5154,1360L5157,1362L5157,1375L5159,1375L5159,1377L5157,1377L5157,1380L5152,1377L5148,1377L5148,1380L5146,1380L5144,1383L5141,1383L5141,1385L5139,1385L5141,1388L5141,1395L5139,1395L5139,1398L5135,1398L5131,1403L5131,1405L5128,1405L5128,1411L5115,1411L5115,1400L5120,1400L5120,1398L5122,1393L5124,1393L5124,1390L5122,1390L5122,1388L5124,1385L5131,1385L5131,1380L5133,1380L5126,1372L5126,1362L5124,1362L5124,1360L5122,1360L5122,1357L5120,1354L5120,1347L5118,1347L5118,1344L5115,1342L5111,1342L5109,1344L5107,1344L5107,1342L5105,1342L5100,1337L5096,1337L5096,1332L5098,1332L5098,1329L5096,1329L5096,1326L5094,1324L5094,1321L5087,1321L5085,1324L5081,1324L5081,1321L5083,1321L5083,1319L5079,1316L5072,1316L5070,1314L5070,1311L5064,1303L5061,1303L5059,1301L5059,1303L5057,1303L5051,1301L5046,1301L5046,1303L5044,1303L5044,1301L5042,1301L5042,1298L5038,1298L5033,1296L5031,1293L5029,1293L5025,1288L5020,1286L5020,1283L5016,1278L5009,1278L5009,1275L5007,1273L5007,1270L5005,1268L5001,1268L5001,1265L4990,1265L4990,1263L4992,1263L4992,1260L4990,1258L4986,1255L4986,1252L4983,1252L4981,1250L4981,1247L4975,1247L4975,1237L4973,1237L4970,1232L4970,1230L4968,1230L4968,1227L4966,1227L4966,1217L4962,1212L4960,1212L4951,1209L4949,1209L4942,1204L4940,1201L4938,1201L4927,1199L4921,1199L4916,1201L4916,1204L4914,1207L4912,1207L4912,1209L4910,1209L4908,1212L4908,1214L4905,1217L4901,1217L4897,1219L4890,1219L4890,1217L4895,1212L4895,1207L4890,1207L4888,1209L4886,1209L4877,1204L4875,1204L4873,1201L4873,1199L4871,1196L4871,1194L4875,1191L4875,1189L4877,1189L4877,1186L4875,1184L4869,1184L4866,1179L4864,1176L4866,1176L4869,1173L4871,1173L4871,1176L4873,1173L4877,1173L4879,1171L4879,1166L4877,1163L4875,1163L4875,1161L4871,1156L4871,1153L4873,1153L4875,1150L4888,1150L4888,1148L4895,1148L4897,1150L4899,1150L4899,1148L4903,1148L4908,1143L4908,1140L4912,1133L4916,1133L4916,1140L4921,1143L4927,1143L4927,1148L4929,1148L4929,1153L4931,1153L4934,1150L4931,1150L4931,1145L4934,1143L4936,1143L4936,1140L4938,1140L4938,1138L4940,1138L4940,1133L4938,1133L4938,1130L4942,1130L4944,1133L4944,1135L4947,1138L4951,1138L4953,1135L4957,1135L4957,1135L4957,1135z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2538,2071L2538,2074L2534,2069L2532,2069L2532,2066L2529,2069L2523,2069L2521,2066L2521,2063L2519,2063L2519,2061L2516,2061L2514,2056L2506,2056L2506,2051L2510,2048L2514,2048L2516,2046L2523,2046L2525,2048L2525,2046L2527,2046L2529,2048L2542,2048L2545,2051L2547,2051L2549,2053L2551,2053L2553,2056L2558,2056L2560,2058L2562,2058L2562,2061L2564,2063L2564,2066L2562,2066L2562,2069L2555,2069L2553,2066L2551,2066L2551,2063L2547,2063L2547,2066L2545,2069L2542,2069L2542,2066L2538,2066L2538,2071L2538,2071L2538,2071z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5709,1622L5718,1630L5722,1638L5737,1653L5726,1661L5722,1671L5720,1671L5702,1676L5696,1686L5683,1696L5653,1691L5653,1681L5655,1676L5655,1671L5657,1668L5657,1655L5659,1650L5661,1648L5661,1645L5666,1635L5666,1622L5666,1622L5666,1620L5668,1617L5668,1599L5670,1597L5668,1592L5670,1584L5670,1581L5679,1581L5683,1587L5685,1587L5685,1589L5687,1587L5692,1592L5694,1592L5696,1594L5705,1594L5757,1561L5759,1561L5767,1589L5763,1589L5765,1594L5772,1594L5772,1597L5770,1599L5765,1602L5765,1604L5709,1622L5709,1622z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6881,1126L6878,1128L6876,1132L6860,1133L6858,1137L6852,1135L6844,1135L6841,1133L6815,1131L6807,1128L6801,1130L6775,1129L6767,1135L6767,1132L6763,1133L6759,1137L6759,1143L6756,1145L6742,1146L6744,1153L6744,1158L6740,1161L6739,1165L6742,1170L6742,1176L6739,1181L6736,1179L6736,1173L6725,1160L6721,1158L6722,1156L6725,1152L6727,1147L6727,1141L6732,1139L6736,1139L6751,1124L6756,1122L6784,1123L6792,1120L6799,1120L6805,1123L6811,1124L6818,1127L6846,1125L6852,1128L6858,1129L6860,1126L6869,1122L6882,1123L6881,1126L6881,1126L6881,1126zM7034,1117L7034,1120L7041,1120L7041,1117L7045,1117L7047,1115L7047,1112L7056,1112L7060,1107L7060,1099L7058,1099L7058,1087L7056,1087L7056,1082L7058,1082L7058,1077L7063,1069L7067,1069L7069,1066L7073,1066L7073,1069L7076,1069L7078,1066L7082,1066L7086,1064L7086,1061L7089,1061L7089,1059L7091,1059L7093,1054L7091,1054L7091,1048L7093,1046L7106,1046L7106,1043L7104,1041L7099,1041L7095,1038L7093,1033L7091,1031L7086,1031L7086,1028L7091,1028L7091,1023L7086,1023L7084,1026L7084,1028L7078,1028L7078,1031L7076,1033L7073,1033L7069,1031L7063,1031L7060,1028L7058,1031L7054,1031L7054,1028L7052,1028L7052,1031L7050,1031L7047,1028L7047,1026L7043,1020L7041,1020L7041,1015L7043,1015L7043,1013L7037,1013L7032,1010L7024,1010L7021,1008L7019,1003L7019,997L7017,995L7015,995L7013,992L7013,990L7011,987L7008,987L7000,985L6989,985L6989,987L6978,987L6978,990L6974,992L6959,992L6956,990L6954,990L6952,992L6943,992L6943,985L6933,985L6933,982L6935,980L6935,977L6928,977L6926,975L6920,975L6920,977L6915,977L6915,982L6918,982L6915,985L6913,985L6913,987L6911,987L6905,990L6902,990L6902,987L6894,977L6889,969L6889,967L6868,939L6866,934L6859,926L6855,924L6850,916L6848,916L6848,913L6842,906L6840,906L6835,903L6835,901L6831,901L6820,893L6818,893L6807,885L6805,885L6805,883L6803,880L6811,880L6816,875L6814,870L6811,870L6811,872L6809,872L6805,875L6796,875L6798,878L6783,883L6775,883L6777,885L6775,885L6770,890L6766,893L6762,890L6757,890L6755,893L6755,895L6749,895L6749,898L6751,898L6749,903L6746,903L6744,901L6744,898L6727,898L6725,901L6720,903L6718,903L6720,901L6716,901L6716,895L6718,895L6718,893L6720,890L6729,890L6729,883L6725,883L6723,885L6725,888L6716,888L6710,885L6710,883L6707,883L6707,880L6705,883L6701,880L6697,880L6697,883L6699,883L6701,885L6701,888L6692,888L6692,885L6694,883L6694,880L6690,880L6690,878L6686,872L6681,872L6684,878L6686,878L6686,880L6684,880L6681,878L6673,878L6673,880L6671,883L6666,883L6666,880L6662,878L6658,883L6655,880L6655,878L6653,878L6653,875L6660,875L6660,872L6658,870L6658,865L6662,865L6660,862L6655,862L6651,857L6653,855L6653,850L6649,844L6649,842L6642,842L6642,844L6640,844L6638,842L6634,847L6632,847L6632,850L6629,847L6623,847L6623,844L6621,842L6610,842L6608,839L6603,842L6601,839L6595,839L6595,842L6590,842L6588,844L6588,847L6575,847L6575,850L6580,850L6580,852L6575,855L6569,855L6569,852L6567,855L6564,855L6562,857L6549,857L6549,860L6536,860L6536,862L6521,862L6521,865L6515,865L6515,862L6510,862L6508,865L6499,865L6495,867L6493,867L6493,875L6489,875L6486,872L6482,872L6480,875L6478,875L6474,872L6469,875L6458,875L6458,878L6456,880L6456,878L6445,878L6443,880L6435,880L6435,883L6419,883L6419,890L6417,890L6413,885L6404,885L6404,888L6400,888L6400,885L6389,885L6389,883L6385,883L6380,885L6378,888L6376,888L6376,890L6383,890L6383,893L6380,893L6376,898L6378,898L6380,901L6383,901L6380,906L6380,908L6387,908L6387,911L6396,911L6398,913L6406,913L6406,918L6402,921L6400,918L6378,918L6378,921L6376,921L6367,926L6367,931L6372,931L6372,934L6374,934L6374,936L6376,939L6374,941L6372,941L6372,944L6367,944L6367,946L6359,946L6354,952L6348,952L6348,954L6350,954L6350,957L6352,957L6352,954L6354,954L6361,957L6361,959L6359,959L6359,962L6363,964L6374,964L6374,967L6376,967L6378,969L6389,969L6391,975L6391,977L6389,982L6389,987L6387,990L6385,990L6383,992L6374,992L6370,995L6357,995L6354,992L6352,992L6352,987L6348,987L6348,990L6346,990L6346,992L6344,995L6344,997L6341,997L6341,1000L6333,1000L6333,997L6335,997L6333,995L6318,995L6318,992L6311,990L6309,987L6307,987L6309,985L6309,982L6307,982L6302,980L6298,980L6298,982L6296,982L6287,980L6285,980L6285,987L6274,987L6272,982L6270,982L6268,980L6268,982L6259,982L6259,980L6257,980L6257,985L6253,985L6253,982L6248,982L6248,985L6246,987L6242,987L6240,990L6240,992L6237,995L6233,995L6231,997L6229,997L6229,1000L6227,1000L6227,997L6224,997L6224,995L6216,995L6209,987L6201,982L6196,982L6196,987L6201,987L6201,990L6198,992L6201,995L6201,997L6198,997L6196,1000L6194,1000L6194,997L6192,997L6192,992L6194,992L6194,987L6190,987L6188,985L6185,985L6185,980L6179,977L6172,977L6170,975L6170,972L6166,967L6155,967L6153,969L6151,969L6149,967L6144,967L6144,969L6140,969L6140,967L6138,967L6138,964L6136,959L6129,959L6129,962L6123,962L6120,964L6120,967L6118,969L6116,969L6116,967L6112,967L6110,969L6105,967L6105,964L6110,964L6107,962L6094,962L6094,959L6090,959L6092,962L6092,964L6090,964L6088,962L6086,962L6086,969L6079,969L6079,975L6071,975L6071,977L6068,977L6066,980L6053,980L6053,982L6051,985L6053,985L6053,990L6045,990L6045,992L6042,992L6042,995L6038,997L6034,997L6034,1005L6036,1008L6036,1010L6040,1015L6038,1018L6036,1018L6034,1020L6027,1020L6027,1023L6025,1023L6021,1020L6019,1018L6019,1013L6016,1013L6012,1008L6003,1003L5999,1003L5999,1005L5997,1005L5995,1008L5995,1013L5997,1013L5995,1015L5993,1015L5993,1018L5988,1018L5988,1020L5984,1020L5982,1031L5982,1038L5984,1038L5984,1041L5988,1041L5988,1046L5986,1046L5986,1048L5984,1048L5982,1051L5980,1051L5975,1061L5973,1064L5973,1069L5978,1069L5982,1071L5986,1071L5991,1074L5991,1089L5993,1089L5997,1092L5997,1087L6001,1087L6003,1089L6019,1089L6021,1092L6021,1094L6023,1097L6025,1097L6032,1105L6034,1112L6042,1120L6042,1122L6040,1125L6036,1125L6034,1122L6027,1122L6027,1125L6029,1128L6029,1130L6032,1130L6034,1128L6034,1130L6038,1130L6038,1133L6040,1130L6047,1135L6063,1138L6066,1138L6066,1133L6066,1131L6073,1122L6077,1122L6077,1120L6079,1120L6081,1117L6092,1117L6092,1115L6097,1112L6099,1114L6105,1112L6116,1112L6116,1117L6123,1117L6127,1120L6131,1120L6138,1117L6138,1115L6142,1115L6142,1117L6146,1117L6153,1124L6153,1127L6155,1130L6155,1133L6152,1134L6152,1141L6150,1144L6150,1147L6150,1150L6148,1152L6149,1156L6146,1158L6146,1163L6142,1168L6140,1166L6138,1166L6127,1168L6123,1168L6120,1166L6118,1166L6116,1168L6110,1168L6105,1171L6105,1176L6103,1179L6099,1181L6097,1181L6097,1186L6101,1186L6101,1189L6105,1189L6105,1194L6101,1196L6097,1196L6097,1194L6094,1194L6094,1191L6077,1191L6077,1201L6081,1201L6081,1204L6090,1204L6092,1207L6094,1207L6094,1212L6097,1217L6099,1219L6101,1224L6103,1224L6105,1227L6105,1230L6107,1232L6107,1235L6105,1235L6105,1240L6116,1240L6118,1245L6120,1245L6120,1247L6123,1250L6140,1250L6140,1252L6142,1252L6144,1255L6146,1255L6146,1258L6144,1258L6142,1265L6142,1268L6140,1268L6140,1270L6136,1275L6138,1278L6138,1281L6140,1281L6140,1283L6138,1283L6138,1286L6140,1286L6153,1273L6162,1270L6166,1270L6166,1268L6179,1268L6181,1265L6183,1265L6185,1268L6188,1268L6190,1270L6201,1275L6203,1275L6207,1281L6207,1286L6209,1286L6211,1288L6211,1291L6214,1291L6214,1293L6216,1293L6216,1296L6218,1296L6218,1298L6220,1298L6220,1301L6237,1301L6237,1179L6244,1179L6248,1176L6255,1176L6257,1173L6259,1173L6274,1168L6281,1168L6285,1166L6292,1166L6307,1161L6308,1161L6310,1155L6311,1151L6314,1149L6314,1147L6326,1147L6328,1145L6330,1145L6331,1147L6327,1151L6328,1154L6331,1154L6334,1151L6334,1147L6336,1144L6335,1140L6334,1138L6333,1135L6334,1134L6342,1136L6342,1141L6344,1143L6346,1143L6348,1140L6360,1140L6364,1141L6367,1141L6368,1138L6368,1136L6365,1135L6362,1137L6360,1136L6359,1134L6351,1134L6346,1132L6346,1129L6348,1127L6350,1126L6352,1123L6356,1123L6357,1126L6360,1126L6362,1128L6365,1128L6366,1125L6365,1123L6362,1121L6372,1122L6370,1126L6369,1129L6371,1132L6380,1132L6380,1128L6383,1124L6387,1121L6391,1121L6393,1123L6391,1124L6387,1131L6379,1140L6375,1141L6373,1143L6376,1147L6371,1152L6371,1157L6372,1161L6379,1168L6383,1167L6383,1172L6384,1177L6395,1181L6386,1188L6380,1189L6376,1192L6375,1194L6376,1198L6375,1202L6374,1203L6385,1209L6398,1224L6402,1227L6404,1230L6413,1227L6426,1227L6437,1224L6445,1224L6452,1227L6471,1227L6482,1222L6484,1222L6486,1224L6493,1230L6493,1232L6499,1235L6502,1235L6504,1240L6508,1245L6508,1250L6517,1245L6517,1265L6515,1265L6515,1278L6530,1278L6530,1288L6534,1306L6556,1306L6560,1303L6569,1303L6569,1306L6573,1309L6573,1316L6571,1316L6575,1321L6577,1321L6582,1324L6588,1324L6588,1321L6586,1319L6586,1314L6588,1311L6590,1311L6590,1309L6593,1309L6595,1306L6599,1303L6599,1298L6603,1296L6608,1296L6614,1288L6623,1288L6627,1286L6632,1281L6634,1275L6640,1275L6640,1278L6642,1278L6642,1275L6645,1275L6647,1270L6651,1270L6649,1268L6651,1265L6651,1263L6655,1258L6658,1258L6658,1255L6660,1252L6673,1252L6673,1250L6679,1250L6681,1252L6690,1252L6694,1255L6699,1255L6701,1258L6703,1258L6703,1260L6718,1260L6718,1263L6723,1265L6723,1263L6720,1260L6720,1255L6723,1255L6723,1247L6727,1242L6733,1242L6733,1240L6742,1240L6742,1237L6744,1237L6746,1240L6753,1240L6753,1242L6755,1245L6762,1245L6770,1250L6781,1250L6781,1252L6783,1252L6785,1250L6785,1247L6816,1247L6816,1245L6820,1245L6822,1247L6846,1247L6846,1250L6866,1250L6876,1252L6881,1252L6881,1258L6885,1258L6885,1260L6887,1260L6887,1263L6902,1263L6907,1268L6907,1270L6911,1270L6911,1268L6909,1265L6907,1258L6909,1252L6911,1252L6911,1250L6920,1250L6920,1247L6915,1247L6913,1245L6920,1240L6922,1240L6922,1242L6924,1242L6926,1240L6924,1237L6924,1230L6920,1224L6920,1222L6918,1219L6918,1214L6913,1209L6913,1191L6918,1189L6915,1189L6911,1186L6902,1186L6900,1184L6905,1179L6915,1179L6918,1176L6928,1176L6931,1173L6937,1173L6937,1171L6948,1171L6948,1168L6952,1168L6952,1173L6956,1173L6959,1176L6959,1173L6965,1173L6965,1171L6967,1171L6967,1173L6972,1176L6974,1176L6974,1173L6976,1173L6976,1166L6974,1166L6974,1163L6967,1163L6967,1161L6969,1156L6972,1153L6972,1150L6974,1150L6974,1140L6976,1140L6976,1138L6978,1138L6978,1135L6980,1133L6980,1125L6982,1125L6982,1120L6985,1120L6985,1117L6987,1117L6987,1107L6993,1107L6993,1110L7000,1110L7002,1112L7006,1112L7006,1115L7034,1115L7034,1117L7034,1117L7034,1117z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5841,2522L5841,2520L5837,2520L5835,2522L5824,2522L5824,2520L5822,2520L5822,2517L5819,2517L5817,2512L5811,2512L5804,2517L5802,2517L5791,2522L5789,2525L5787,2530L5780,2538L5780,2540L5778,2540L5778,2538L5770,2538L5767,2535L5757,2535L5754,2533L5737,2533L5737,2530L5713,2512L5709,2507L5700,2507L5698,2505L5694,2507L5689,2507L5686,2507L5688,2538L5693,2550L5702,2557L5703,2564L5700,2572L5693,2567L5685,2550L5680,2544L5678,2517L5679,2509L5677,2502L5679,2501L5679,2500L5635,2500L5635,2502L5629,2510L5624,2512L5627,2512L5627,2515L5629,2517L5629,2522L5631,2525L5631,2528L5635,2530L5637,2530L5637,2545L5640,2548L5642,2548L5642,2556L5644,2558L5646,2558L5646,2561L5648,2561L5648,2566L5650,2568L5650,2576L5653,2579L5653,2599L5650,2599L5650,2604L5648,2604L5648,2612L5644,2612L5642,2614L5640,2614L5640,2619L5637,2622L5637,2624L5633,2630L5631,2630L5631,2632L5629,2632L5629,2640L5627,2642L5625,2653L5631,2658L5638,2659L5644,2656L5648,2658L5647,2661L5624,2665L5626,2673L5631,2678L5625,2681L5627,2683L5627,2686L5637,2691L5640,2693L5646,2696L5683,2721L5685,2724L5713,2742L5715,2742L5715,2744L5720,2747L5724,2747L5728,2752L5728,2760L5726,2762L5726,2767L5731,2767L5731,2770L5750,2788L5754,2790L5765,2800L5770,2803L5772,2803L5772,2800L5774,2803L5776,2803L5783,2785L5787,2780L5787,2775L5789,2772L5789,2770L5791,2765L5791,2762L5793,2760L5796,2760L5796,2752L5798,2749L5798,2747L5796,2747L5798,2742L5798,2739L5800,2737L5802,2737L5802,2734L5811,2734L5815,2729L5813,2726L5815,2724L5817,2724L5817,2726L5819,2726L5819,2724L5818,2721L5819,2718L5822,2720L5824,2716L5828,2716L5832,2711L5832,2709L5835,2706L5835,2704L5819,2681L5819,2558L5830,2548L5841,2525L5845,2522L5841,2522L5841,2522L5841,2522z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5975,1699L5975,1696L5978,1696L5978,1694L5984,1686L5984,1683L5986,1681L5988,1676L5988,1673L5991,1673L5991,1671L5993,1668L6019,1668L6021,1671L6022,1674L6025,1676L6027,1680L6019,1686L6016,1683L6012,1683L6006,1689L6006,1691L6014,1691L6016,1694L6016,1696L6019,1699L6019,1704L6025,1712L6025,1717L6023,1719L6006,1719L6003,1717L6003,1712L6001,1712L6001,1706L5999,1704L5982,1701L5975,1699L5975,1699L5975,1699z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6849,1261L6845,1262L6841,1264L6841,1271L6835,1273L6798,1265L6810,1262L6814,1258L6834,1256L6838,1254L6845,1254L6849,1252L6853,1254L6855,1259L6849,1261L6849,1261L6849,1261zM6642,1342L6642,1344L6640,1347L6638,1347L6638,1344L6640,1344L6640,1342L6636,1342L6634,1339L6627,1337L6621,1337L6616,1339L6612,1339L6612,1342L6610,1342L6612,1344L6612,1347L6610,1347L6608,1344L6606,1344L6606,1349L6603,1352L6606,1352L6606,1360L6612,1360L6612,1357L6621,1357L6621,1360L6625,1357L6645,1357L6645,1362L6655,1362L6655,1360L6658,1360L6662,1357L6664,1357L6666,1354L6666,1357L6668,1357L6668,1362L6673,1362L6673,1360L6675,1360L6675,1362L6673,1365L6675,1367L6677,1367L6679,1365L6684,1365L6684,1367L6688,1370L6690,1367L6690,1365L6699,1365L6699,1362L6701,1362L6703,1365L6714,1365L6723,1360L6727,1362L6731,1360L6733,1360L6736,1357L6733,1354L6733,1352L6731,1352L6731,1349L6736,1342L6738,1342L6742,1339L6749,1339L6753,1334L6757,1332L6759,1332L6759,1326L6764,1326L6764,1329L6770,1329L6772,1326L6775,1326L6777,1324L6779,1324L6779,1321L6781,1321L6781,1326L6783,1332L6783,1334L6790,1334L6792,1332L6794,1332L6798,1329L6801,1332L6805,1329L6807,1329L6807,1324L6809,1324L6809,1319L6814,1314L6814,1311L6816,1311L6818,1309L6822,1309L6822,1311L6827,1311L6829,1309L6831,1309L6831,1311L6840,1311L6842,1309L6853,1309L6853,1306L6855,1306L6855,1303L6857,1303L6857,1298L6859,1298L6861,1296L6866,1293L6868,1293L6874,1291L6876,1288L6879,1288L6894,1281L6898,1281L6898,1278L6909,1278L6909,1275L6911,1275L6909,1273L6909,1270L6907,1270L6907,1268L6902,1263L6887,1263L6887,1260L6885,1260L6885,1258L6881,1258L6881,1252L6876,1252L6866,1250L6846,1250L6846,1247L6822,1247L6820,1245L6816,1245L6816,1247L6785,1247L6785,1250L6783,1252L6781,1252L6781,1250L6770,1250L6762,1245L6755,1245L6753,1242L6753,1240L6746,1240L6744,1237L6742,1237L6742,1240L6733,1240L6733,1242L6727,1242L6723,1247L6723,1255L6720,1255L6720,1260L6723,1263L6723,1265L6718,1263L6718,1260L6703,1260L6703,1258L6701,1258L6699,1255L6694,1255L6690,1252L6681,1252L6679,1250L6673,1250L6673,1252L6660,1252L6658,1255L6658,1258L6655,1258L6651,1263L6651,1265L6649,1268L6651,1270L6653,1270L6653,1268L6658,1268L6658,1270L6660,1270L6660,1273L6653,1275L6649,1275L6649,1281L6645,1281L6640,1283L6640,1286L6638,1286L6638,1288L6634,1291L6629,1291L6629,1293L6636,1293L6636,1296L6638,1296L6638,1298L6640,1296L6645,1296L6647,1298L6647,1303L6653,1303L6658,1306L6658,1303L6660,1303L6664,1306L6666,1306L6666,1301L6671,1301L6671,1293L6673,1293L6677,1298L6677,1303L6686,1303L6686,1311L6690,1309L6692,1309L6694,1311L6697,1311L6697,1314L6710,1314L6712,1316L6712,1319L6707,1319L6705,1321L6703,1321L6699,1326L6697,1326L6692,1324L6690,1324L6694,1329L6692,1329L6692,1332L6690,1329L6684,1329L6681,1332L6681,1334L6677,1334L6673,1339L6668,1337L6666,1337L6666,1334L6653,1334L6653,1337L6649,1337L6645,1339L6642,1339L6642,1342L6642,1342L6642,1342z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7576,2066L7576,2063L7572,2058L7572,2056L7569,2053L7569,2051L7567,2051L7567,2053L7565,2053L7563,2051L7559,2051L7556,2048L7550,2048L7550,2051L7548,2051L7548,2053L7546,2058L7543,2058L7543,2063L7537,2063L7533,2069L7530,2066L7530,2063L7526,2063L7522,2061L7520,2058L7520,2056L7515,2056L7511,2061L7507,2061L7507,2063L7504,2066L7502,2066L7502,2069L7500,2071L7496,2074L7496,2076L7491,2079L7491,2081L7489,2081L7489,2079L7487,2079L7485,2076L7483,2076L7485,2076L7485,2069L7487,2066L7489,2066L7489,2061L7491,2061L7491,2051L7489,2051L7487,2048L7489,2046L7491,2046L7491,2043L7494,2043L7494,2030L7496,2030L7496,2028L7494,2028L7491,2018L7491,2015L7494,2015L7494,2010L7483,2010L7483,2012L7481,2012L7481,2015L7478,2012L7476,2012L7474,2015L7470,2010L7470,2002L7472,2002L7472,2000L7474,1997L7474,1992L7472,1992L7470,1989L7470,1987L7468,1984L7465,1984L7463,1987L7461,1987L7461,1984L7463,1982L7463,1974L7465,1972L7468,1972L7468,1969L7470,1969L7470,1972L7474,1972L7474,1969L7476,1969L7472,1969L7472,1967L7474,1964L7476,1964L7476,1961L7478,1959L7478,1954L7483,1954L7487,1951L7491,1946L7489,1946L7491,1946L7494,1951L7494,1959L7496,1959L7496,1956L7502,1956L7504,1959L7509,1959L7509,1956L7507,1954L7507,1949L7509,1944L7507,1941L7507,1938L7502,1926L7504,1923L7504,1916L7509,1916L7511,1918L7517,1918L7517,1921L7520,1921L7520,1923L7522,1926L7526,1928L7526,1931L7528,1933L7530,1933L7533,1936L7533,1944L7535,1944L7537,1941L7541,1941L7541,1946L7539,1946L7539,1959L7543,1964L7543,1967L7546,1967L7546,1969L7548,1969L7550,1972L7554,1972L7559,1974L7561,1974L7561,1977L7563,1974L7563,1972L7565,1969L7572,1967L7576,1967L7582,1974L7587,1974L7587,1977L7582,1982L7580,1982L7580,1984L7587,1984L7589,1987L7593,1989L7598,1995L7598,1997L7595,1997L7593,2000L7591,2000L7591,2002L7593,2002L7593,2005L7589,2005L7589,2007L7587,2007L7587,2010L7582,2010L7580,2007L7569,2007L7572,2010L7572,2018L7569,2015L7569,2018L7565,2020L7569,2023L7574,2023L7576,2025L7578,2025L7578,2028L7585,2030L7585,2033L7587,2033L7589,2035L7591,2035L7591,2038L7598,2038L7600,2040L7602,2040L7602,2043L7600,2046L7600,2048L7606,2056L7606,2053L7606,2058L7611,2058L7615,2063L7617,2069L7617,2074L7621,2074L7621,2076L7630,2086L7632,2086L7634,2089L7637,2094L7637,2097L7641,2097L7641,2107L7643,2112L7645,2114L7647,2114L7647,2109L7650,2109L7650,2112L7652,2117L7652,2120L7654,2117L7656,2117L7656,2122L7658,2122L7663,2127L7663,2125L7665,2125L7667,2127L7665,2127L7665,2130L7660,2132L7658,2132L7658,2135L7660,2140L7665,2145L7667,2145L7671,2150L7671,2158L7669,2158L7669,2160L7665,2160L7667,2160L7667,2163L7669,2165L7669,2171L7667,2171L7667,2173L7663,2173L7656,2181L7650,2183L7647,2183L7645,2181L7645,2178L7643,2178L7641,2176L7641,2173L7639,2173L7639,2176L7637,2176L7637,2178L7632,2178L7632,2181L7626,2181L7626,2186L7630,2191L7628,2196L7621,2196L7619,2193L7619,2191L7617,2191L7613,2188L7611,2188L7608,2191L7606,2191L7604,2188L7604,2183L7602,2183L7604,2183L7606,2181L7608,2181L7611,2178L7611,2176L7613,2176L7613,2173L7611,2168L7611,2165L7613,2165L7613,2158L7611,2158L7611,2155L7613,2148L7615,2148L7615,2137L7613,2137L7611,2135L7608,2135L7606,2130L7608,2130L7608,2127L7602,2127L7600,2125L7598,2125L7598,2120L7595,2120L7595,2117L7591,2112L7591,2097L7589,2097L7591,2094L7591,2081L7587,2076L7582,2074L7578,2069L7576,2069L7576,2066L7576,2066L7576,2066z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5464,806L5462,804L5460,799L5456,793L5458,793L5456,791L5451,791L5456,781L5456,778L5453,776L5451,776L5447,773L5445,773L5447,770L5440,770L5434,768L5423,768L5421,770L5417,770L5412,768L5410,768L5404,760L5397,760L5388,755L5388,753L5375,753L5369,755L5362,755L5360,758L5356,758L5356,765L5358,768L5358,776L5360,778L5358,778L5358,781L5354,783L5352,783L5347,786L5345,788L5336,788L5330,786L5328,786L5328,783L5326,781L5326,778L5323,776L5321,776L5319,773L5317,773L5313,770L5310,768L5308,768L5308,763L5306,763L5295,768L5284,768L5278,776L5278,778L5276,778L5276,786L5271,791L5269,791L5267,793L5267,796L5265,799L5265,801L5267,804L5267,806L5265,806L5265,804L5263,809L5263,814L5265,814L5265,816L5271,816L5271,814L5274,811L5280,811L5284,809L5289,809L5293,806L5310,806L5310,809L5315,809L5315,806L5319,806L5319,809L5321,809L5323,811L5323,809L5347,809L5349,811L5356,811L5356,809L5358,809L5358,811L5362,811L5365,809L5367,809L5373,806L5373,809L5375,809L5375,811L5378,814L5388,814L5393,816L5395,816L5399,819L5401,821L5406,821L5408,824L5410,824L5410,827L5412,829L5417,829L5417,832L5421,832L5421,829L5427,829L5427,827L5432,827L5436,824L5436,827L5449,827L5449,821L5451,821L5453,819L5456,819L5456,816L5458,816L5462,814L5464,814L5466,811L5464,806L5464,806L5464,806z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5674,1561L5670,1564L5668,1566L5668,1569L5666,1569L5663,1571L5661,1569L5657,1569L5659,1566L5659,1561L5661,1558L5661,1556L5663,1556L5663,1551L5666,1551L5666,1543L5670,1543L5670,1538L5672,1536L5670,1536L5670,1533L5672,1533L5672,1530L5679,1523L5681,1523L5681,1518L5694,1518L5694,1520L5692,1520L5692,1523L5694,1523L5696,1525L5696,1528L5698,1533L5696,1536L5692,1538L5692,1541L5689,1541L5689,1543L5692,1543L5692,1546L5687,1543L5683,1546L5681,1546L5681,1548L5679,1551L5681,1551L5683,1553L5679,1556L5679,1558L5676,1558L5676,1561L5674,1561L5674,1561L5674,1561z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5488,3632L5484,3634L5482,3634L5477,3637L5469,3637L5469,3639L5466,3639L5466,3642L5464,3650L5462,3650L5462,3655L5460,3652L5451,3652L5449,3647L5447,3647L5447,3645L5445,3642L5443,3642L5440,3639L5440,3634L5438,3632L5436,3632L5436,3627L5434,3624L5434,3622L5432,3622L5432,3619L5436,3619L5436,3616L5440,3616L5440,3614L5443,3609L5445,3609L5449,3604L5449,3601L5453,3596L5460,3596L5460,3594L5464,3588L5464,3591L5466,3591L5469,3588L5471,3588L5471,3586L5477,3586L5482,3591L5484,3591L5484,3594L5486,3596L5492,3601L5497,3601L5497,3604L5499,3609L5499,3614L5495,3614L5495,3619L5492,3619L5492,3622L5490,3624L5490,3627L5492,3629L5490,3629L5490,3632L5488,3632L5488,3632L5488,3632z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4445,2439L4448,2443L4455,2446L4464,2446L4464,2449L4466,2454L4466,2456L4468,2459L4468,2456L4472,2459L4472,2461L4474,2459L4474,2464L4477,2466L4477,2469L4474,2471L4474,2474L4477,2477L4472,2484L4472,2487L4470,2492L4470,2494L4472,2494L4472,2510L4466,2510L4466,2507L4464,2507L4464,2505L4459,2505L4457,2502L4453,2502L4451,2500L4444,2497L4442,2494L4440,2494L4435,2489L4431,2487L4427,2487L4416,2474L4416,2471L4414,2471L4412,2469L4409,2469L4403,2459L4401,2459L4396,2454L4394,2454L4394,2451L4392,2449L4383,2449L4381,2446L4381,2441L4379,2441L4379,2438L4377,2438L4366,2433L4366,2428L4364,2426L4364,2423L4366,2423L4366,2418L4368,2415L4370,2415L4370,2413L4373,2413L4373,2410L4377,2405L4379,2405L4383,2400L4383,2398L4386,2398L4388,2395L4388,2385L4394,2385L4394,2382L4396,2375L4399,2375L4399,2372L4405,2375L4407,2372L4407,2375L4409,2372L4412,2375L4414,2375L4418,2377L4418,2385L4420,2390L4420,2392L4418,2392L4420,2395L4420,2408L4422,2408L4429,2415L4431,2415L4433,2413L4433,2415L4438,2410L4438,2408L4440,2405L4440,2400L4444,2400L4444,2403L4446,2403L4446,2405L4448,2405L4448,2415L4451,2415L4451,2431L4448,2431L4448,2433L4446,2433L4446,2436L4444,2436L4445,2439L4445,2439L4445,2439z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4955,1658L4964,1648L4964,1645L4966,1645L4966,1630L4962,1625L4962,1622L4964,1620L4966,1615L4973,1615L4983,1602L4983,1599L4988,1599L4990,1597L4992,1597L4996,1594L4999,1594L5001,1592L5003,1592L5003,1587L5001,1587L5001,1566L5003,1569L5009,1569L5012,1571L5014,1571L5016,1574L5020,1576L5022,1576L5025,1579L5040,1579L5042,1576L5046,1576L5048,1574L5051,1574L5051,1576L5055,1576L5057,1579L5068,1579L5068,1581L5076,1581L5081,1587L5083,1587L5083,1589L5092,1589L5096,1592L5102,1592L5109,1599L5107,1604L5107,1607L5109,1607L5109,1610L5111,1615L5111,1617L5115,1622L5118,1622L5118,1625L5120,1625L5122,1627L5124,1627L5128,1630L5146,1630L5150,1632L5157,1632L5161,1635L5165,1635L5165,1638L5170,1638L5176,1640L5178,1643L5183,1643L5185,1645L5187,1645L5191,1650L5198,1655L5200,1658L5204,1658L5206,1661L5219,1661L5231,1654L5232,1650L5238,1646L5238,1643L5240,1643L5240,1638L5242,1638L5242,1631L5239,1627L5239,1625L5237,1625L5237,1620L5236,1619L5236,1604L5237,1602L5245,1592L5261,1581L5263,1581L5267,1579L5278,1579L5278,1576L5280,1576L5282,1574L5287,1574L5289,1576L5291,1576L5293,1574L5293,1576L5304,1576L5306,1579L5308,1579L5315,1581L5317,1581L5319,1584L5323,1584L5324,1590L5321,1594L5326,1594L5326,1597L5328,1597L5328,1599L5343,1599L5347,1602L5347,1604L5373,1604L5375,1607L5375,1610L5380,1615L5380,1617L5378,1617L5378,1620L5373,1625L5371,1625L5371,1632L5375,1643L5375,1650L5373,1653L5373,1655L5371,1655L5371,1658L5369,1661L5369,1663L5367,1663L5367,1666L5369,1666L5369,1668L5371,1671L5371,1676L5373,1683L5371,1686L5373,1686L5373,1689L5375,1694L5375,1997L5347,1997L5347,2012L5126,1885L5098,1900L5094,1900L5094,1903L5083,1908L5081,1908L5081,1910L5076,1913L5059,1895L5057,1895L5057,1893L5053,1893L5040,1887L5031,1887L5027,1885L5022,1885L5016,1882L5014,1882L5007,1870L5007,1867L5003,1857L5001,1857L4999,1854L4994,1854L4990,1852L4986,1852L4981,1849L4979,1849L4979,1847L4977,1849L4975,1849L4973,1852L4970,1852L4966,1847L4966,1842L4962,1842L4960,1839L4960,1821L4953,1814L4944,1798L4942,1798L4942,1793L4944,1793L4944,1791L4953,1785L4955,1785L4955,1780L4957,1778L4955,1778L4957,1775L4957,1773L4955,1773L4955,1768L4953,1768L4953,1765L4951,1760L4951,1757L4953,1755L4953,1750L4955,1750L4955,1747L4957,1742L4957,1740L4955,1737L4955,1729L4953,1727L4953,1722L4955,1717L4955,1696L4953,1689L4951,1686L4951,1683L4947,1678L4947,1676L4944,1671L4942,1671L4942,1668L4940,1668L4940,1666L4942,1666L4944,1663L4947,1663L4949,1661L4951,1661L4955,1658L4955,1658L4955,1658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5391,875L5388,875L5386,878L5382,878L5380,880L5371,880L5369,883L5371,883L5371,885L5369,888L5367,885L5365,885L5362,888L5358,888L5358,890L5356,888L5334,888L5334,880L5332,880L5330,878L5326,875L5323,875L5319,872L5313,872L5313,870L5310,870L5310,867L5313,867L5313,862L5315,860L5317,860L5317,857L5315,857L5313,855L5310,855L5306,850L5297,850L5297,852L5293,852L5284,850L5284,847L5280,847L5276,844L5271,844L5271,842L5269,842L5271,839L5271,837L5268,836L5269,832L5267,829L5267,827L5265,824L5265,821L5267,821L5267,819L5265,816L5271,816L5271,814L5274,811L5280,811L5284,809L5289,809L5293,806L5310,806L5310,809L5315,809L5315,806L5319,806L5319,809L5321,809L5323,811L5323,809L5347,809L5349,811L5356,811L5356,809L5358,809L5358,811L5362,811L5365,809L5367,809L5373,806L5373,809L5375,809L5375,811L5378,814L5388,814L5393,816L5395,816L5399,819L5401,821L5406,821L5408,824L5410,824L5410,827L5412,829L5417,829L5417,832L5421,832L5421,834L5419,839L5417,842L5425,842L5425,844L5421,847L5410,847L5410,852L5408,855L5399,855L5397,857L5397,860L5395,860L5395,865L5397,865L5397,867L5393,867L5391,872L5391,875L5391,875L5391,875z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4858,1031L4858,1033L4843,1033L4843,1031L4845,1031L4845,1026L4843,1023L4840,1023L4840,1018L4843,1018L4845,1013L4847,1010L4849,1010L4851,1013L4851,1015L4853,1018L4853,1020L4858,1020L4860,1023L4862,1023L4862,1026L4860,1026L4860,1028L4858,1031L4858,1031L4858,1031z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5908,3471L5906,3471L5904,3469L5904,3463L5902,3463L5902,3456L5900,3456L5900,3453L5897,3453L5897,3451L5895,3451L5895,3448L5893,3446L5893,3423L5895,3423L5897,3418L5895,3418L5895,3415L5893,3415L5893,3407L5891,3405L5889,3405L5889,3402L5887,3400L5884,3400L5884,3387L5882,3379L5882,3367L5884,3367L5884,3361L5887,3359L5889,3359L5889,3349L5891,3349L5891,3346L5897,3346L5897,3344L5900,3344L5900,3333L5902,3333L5902,3331L5906,3326L5913,3310L5913,3308L5915,3308L5917,3305L5917,3300L5915,3300L5913,3298L5915,3290L5917,3290L5917,3288L5915,3285L5913,3280L5910,3277L5910,3265L5908,3262L5908,3259L5906,3257L5906,3254L5904,3254L5904,3229L5902,3229L5902,3221L5904,3219L5906,3214L5908,3211L5908,3208L5910,3203L5915,3198L5917,3191L5915,3191L5915,3180L5928,3180L5930,3178L5932,3178L5936,3173L5939,3173L5939,3178L5943,3178L5943,3175L5941,3175L5941,3173L5947,3173L5947,3175L5949,3175L5949,3170L5952,3168L5956,3168L5960,3165L5965,3165L5965,3162L5969,3163L5971,3157L5975,3157L5982,3150L5984,3150L5984,3147L5986,3147L5986,3150L5987,3152L5988,3155L5986,3155L5986,3160L5988,3157L5993,3157L5993,3155L5988,3150L5988,3145L5991,3145L5995,3140L5995,3135L5997,3135L5997,3132L6001,3132L6001,3137L5999,3137L5999,3140L5997,3140L5997,3145L5999,3145L6003,3141L6005,3138L6004,3135L6006,3132L6010,3129L6008,3129L6006,3127L6006,3119L6008,3117L6012,3117L6012,3112L6014,3115L6016,3114L6016,3112L6014,3112L6012,3109L6014,3109L6014,3106L6012,3106L6012,3104L6010,3104L6010,3101L6012,3099L6012,3096L6014,3096L6016,3094L6019,3096L6019,3101L6021,3104L6023,3104L6023,3101L6025,3096L6023,3096L6023,3094L6027,3094L6027,3091L6034,3091L6036,3089L6036,3083L6038,3081L6038,3076L6040,3076L6040,3066L6038,3063L6037,3061L6034,3060L6034,3056L6037,3056L6040,3061L6040,3055L6042,3055L6045,3053L6047,3053L6047,3048L6045,3048L6049,3043L6051,3043L6051,3047L6050,3049L6050,3051L6054,3052L6055,3055L6058,3055L6058,3066L6060,3066L6064,3071L6066,3076L6068,3078L6068,3089L6071,3091L6071,3094L6073,3094L6073,3101L6075,3104L6073,3104L6073,3109L6075,3109L6075,3127L6077,3132L6077,3140L6081,3145L6081,3147L6084,3147L6084,3155L6079,3168L6077,3170L6077,3173L6073,3173L6071,3170L6071,3168L6068,3165L6066,3160L6066,3155L6062,3155L6062,3157L6060,3157L6060,3165L6062,3170L6062,3180L6066,3180L6066,3183L6064,3186L6064,3188L6066,3188L6066,3193L6064,3196L6062,3196L6062,3201L6064,3201L6060,3203L6058,3203L6058,3208L6053,3216L6053,3219L6055,3221L6055,3239L6053,3239L6048,3257L6047,3270L6045,3272L6045,3275L6042,3280L6042,3285L6040,3288L6040,3290L6038,3293L6038,3300L6036,3303L6036,3308L6034,3310L6034,3313L6032,3316L6032,3321L6029,3321L6029,3328L6027,3336L6027,3339L6019,3369L6016,3369L6016,3374L6014,3377L6012,3384L6012,3387L6010,3392L6010,3402L6008,3402L6008,3407L6003,3423L6003,3430L6001,3433L6001,3435L5999,3438L5999,3441L5995,3446L5995,3453L5993,3461L5991,3463L5991,3466L5988,3469L5980,3474L5978,3476L5975,3474L5967,3474L5967,3476L5965,3476L5958,3479L5956,3479L5952,3484L5949,3484L5949,3486L5943,3486L5936,3489L5934,3486L5928,3481L5926,3479L5917,3479L5908,3471L5908,3471L5908,3471z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5616,2997L5616,2999L5614,2999L5614,3002L5611,3004L5607,3004L5605,3007L5607,3012L5607,3015L5609,3015L5609,3017L5605,3022L5605,3030L5607,3030L5607,3045L5605,3045L5605,3048L5607,3053L5607,3055L5609,3055L5611,3053L5614,3055L5611,3055L5611,3058L5607,3061L5605,3063L5598,3063L5596,3068L5596,3071L5598,3073L5598,3078L5596,3078L5596,3089L5592,3094L5590,3094L5590,3096L5592,3096L5592,3099L5594,3104L5598,3106L5601,3109L5605,3109L5605,3114L5607,3114L5607,3117L5609,3119L5611,3124L5616,3127L5620,3127L5622,3124L5629,3124L5635,3122L5637,3124L5637,3127L5640,3127L5640,3129L5642,3135L5642,3152L5640,3152L5637,3157L5637,3163L5633,3168L5633,3173L5635,3173L5637,3175L5637,3183L5640,3183L5642,3186L5642,3188L5644,3188L5646,3191L5646,3193L5653,3201L5657,3201L5657,3206L5655,3206L5655,3211L5661,3211L5661,3196L5657,3196L5657,3193L5659,3191L5661,3191L5661,3180L5663,3178L5668,3178L5668,3180L5672,3178L5674,3178L5674,3175L5676,3175L5676,3142L5679,3140L5679,3129L5676,3129L5668,3117L5668,3114L5650,3094L5650,3098L5654,3102L5659,3111L5661,3120L5656,3114L5651,3111L5646,3115L5643,3114L5641,3109L5643,3106L5644,3100L5636,3094L5631,3064L5633,3057L5628,3057L5627,3049L5629,3041L5636,3033L5633,3025L5633,3012L5631,3004L5632,2987L5626,2983L5623,2973L5624,2969L5622,2969L5622,2966L5620,2964L5614,2964L5614,2966L5609,2966L5609,2964L5607,2961L5601,2961L5598,2959L5596,2959L5596,2961L5598,2966L5605,2966L5605,2969L5607,2971L5607,2981L5611,2984L5614,2987L5614,2992L5616,2994L5616,2997L5616,2997L5616,2997z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7554,2510L7554,2515L7552,2515L7552,2525L7550,2528L7550,2530L7552,2530L7552,2533L7554,2535L7554,2558L7556,2558L7556,2561L7559,2563L7561,2563L7563,2566L7565,2566L7565,2571L7567,2573L7569,2579L7569,2581L7572,2584L7572,2586L7574,2591L7576,2594L7576,2599L7578,2604L7578,2607L7572,2607L7572,2602L7569,2602L7566,2601L7563,2602L7559,2604L7559,2607L7556,2609L7554,2609L7554,2604L7550,2599L7548,2599L7537,2591L7533,2591L7533,2589L7528,2584L7526,2584L7526,2581L7522,2581L7520,2579L7517,2579L7517,2576L7515,2573L7511,2573L7509,2571L7509,2568L7507,2566L7504,2566L7502,2563L7500,2563L7498,2561L7498,2558L7494,2558L7494,2556L7496,2556L7496,2548L7494,2545L7494,2543L7491,2543L7491,2540L7487,2535L7487,2533L7483,2528L7481,2528L7481,2525L7478,2525L7478,2520L7483,2520L7478,2515L7476,2515L7474,2512L7474,2494L7472,2492L7470,2492L7470,2487L7468,2484L7470,2484L7470,2469L7468,2469L7468,2466L7470,2466L7470,2461L7468,2459L7468,2454L7465,2451L7465,2449L7463,2446L7461,2441L7463,2441L7463,2431L7465,2433L7468,2433L7468,2436L7470,2438L7476,2441L7478,2438L7483,2443L7483,2449L7485,2449L7485,2446L7489,2446L7489,2459L7487,2459L7485,2461L7489,2466L7491,2466L7498,2459L7504,2459L7504,2464L7507,2464L7507,2461L7509,2464L7513,2459L7513,2454L7515,2454L7517,2451L7517,2449L7524,2449L7524,2451L7526,2454L7528,2459L7530,2461L7533,2461L7533,2464L7537,2469L7541,2469L7541,2471L7543,2471L7543,2474L7546,2474L7546,2477L7548,2479L7548,2482L7550,2484L7552,2489L7552,2492L7554,2494L7554,2510M7946,2515L7942,2515L7942,2512L7938,2510L7907,2510L7905,2512L7903,2512L7903,2510L7899,2507L7899,2510L7894,2515L7894,2517L7892,2525L7892,2530L7890,2530L7890,2535L7892,2535L7892,2540L7890,2540L7890,2548L7888,2551L7888,2553L7881,2553L7879,2556L7879,2558L7877,2566L7881,2566L7881,2571L7877,2571L7873,2576L7870,2576L7870,2579L7868,2579L7868,2584L7870,2584L7870,2589L7866,2594L7866,2596L7864,2604L7860,2604L7860,2602L7858,2602L7855,2604L7845,2604L7845,2607L7842,2607L7842,2609L7840,2609L7838,2612L7836,2612L7836,2609L7832,2609L7829,2607L7823,2604L7819,2599L7806,2599L7797,2604L7797,2607L7797,2604L7797,2607L7795,2614L7790,2614L7788,2617L7788,2619L7784,2619L7784,2617L7782,2617L7780,2619L7775,2619L7773,2617L7762,2617L7760,2619L7758,2619L7758,2622L7756,2622L7754,2624L7751,2624L7751,2622L7749,2622L7745,2619L7741,2612L7738,2612L7736,2609L7734,2604L7732,2604L7730,2602L7728,2602L7728,2596L7725,2594L7725,2591L7723,2591L7723,2589L7725,2584L7728,2586L7726,2587L7726,2589L7728,2589L7728,2591L7730,2591L7734,2594L7734,2596L7743,2596L7745,2594L7745,2591L7749,2596L7749,2599L7754,2599L7756,2602L7756,2604L7758,2604L7758,2599L7760,2599L7762,2602L7764,2602L7764,2596L7767,2596L7769,2589L7769,2584L7771,2581L7769,2581L7769,2573L7771,2573L7771,2571L7773,2570L7770,2563L7770,2560L7772,2558L7775,2559L7775,2567L7776,2568L7776,2564L7777,2563L7777,2561L7782,2558L7784,2558L7786,2557L7791,2557L7795,2556L7797,2556L7800,2554L7806,2553L7810,2551L7816,2551L7819,2548L7821,2548L7821,2545L7827,2538L7827,2535L7834,2528L7834,2525L7836,2525L7840,2520L7845,2512L7847,2512L7847,2502L7853,2502L7853,2505L7855,2505L7855,2510L7860,2515L7864,2517L7864,2520L7866,2520L7870,2515L7870,2502L7868,2497L7870,2494L7873,2494L7874,2496L7875,2497L7875,2500L7877,2507L7879,2507L7883,2510L7886,2510L7883,2507L7883,2505L7881,2502L7883,2502L7883,2500L7881,2497L7881,2492L7879,2492L7881,2489L7883,2489L7883,2492L7886,2492L7886,2489L7888,2489L7888,2487L7890,2487L7890,2482L7888,2482L7886,2477L7886,2474L7890,2471L7899,2471L7899,2466L7901,2466L7901,2464L7903,2461L7905,2461L7905,2451L7920,2433L7920,2428L7922,2423L7925,2423L7925,2420L7927,2423L7927,2431L7925,2431L7925,2436L7927,2436L7929,2431L7931,2428L7931,2426L7933,2423L7938,2423L7938,2433L7940,2436L7944,2438L7948,2438L7951,2441L7951,2446L7948,2446L7948,2449L7946,2449L7948,2451L7948,2456L7946,2459L7953,2459L7957,2454L7959,2454L7959,2456L7961,2459L7961,2461L7955,2461L7955,2464L7957,2466L7961,2466L7964,2461L7970,2461L7970,2464L7972,2464L7974,2466L7977,2466L7977,2469L7981,2471L7983,2474L7992,2474L7994,2477L7994,2482L7992,2482L7992,2484L7987,2484L7987,2487L7981,2487L7981,2489L7974,2489L7970,2487L7968,2487L7964,2489L7961,2492L7964,2497L7966,2497L7970,2502L7970,2500L7973,2499L7974,2502L7974,2505L7977,2505L7977,2507L7974,2510L7961,2510L7959,2512L7955,2512L7951,2507L7948,2510L7947,2509L7947,2511L7950,2512L7953,2513L7955,2514L7956,2517L7956,2518L7954,2519L7952,2517L7952,2519L7950,2520L7949,2520L7947,2518L7946,2515L7946,2515L7946,2515zM7933,2413L7935,2410L7938,2410L7938,2415L7935,2418L7931,2418L7929,2413L7933,2413L7933,2413L7933,2413z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4769,2025L4769,2028L4773,2030L4784,2028L4791,2028L4795,2025L4799,2025L4799,2099L4797,2102L4797,2117L4795,2117L4795,2120L4791,2130L4791,2137L4788,2137L4788,2140L4784,2140L4780,2145L4780,2150L4773,2148L4765,2148L4765,2150L4717,2150L4708,2160L4702,2163L4697,2163L4695,2160L4693,2160L4693,2163L4691,2160L4687,2160L4687,2163L4689,2163L4674,2158L4671,2160L4669,2158L4661,2158L4652,2168L4650,2168L4645,2171L4643,2171L4635,2178L4626,2178L4626,2188L4622,2188L4619,2186L4615,2186L4613,2183L4609,2186L4609,2188L4602,2191L4602,2193L4600,2199L4600,2204L4602,2204L4600,2206L4596,2204L4591,2204L4591,2216L4585,2216L4585,2219L4587,2219L4585,2222L4583,2222L4576,2214L4572,2211L4565,2216L4561,2222L4563,2227L4565,2227L4565,2234L4557,2234L4557,2237L4559,2237L4559,2239L4561,2242L4559,2242L4559,2250L4557,2250L4552,2255L4552,2257L4550,2257L4544,2260L4537,2260L4535,2265L4535,2273L4537,2273L4537,2278L4535,2283L4535,2288L4529,2288L4529,2290L4531,2295L4531,2301L4529,2301L4529,2311L4526,2308L4524,2311L4518,2311L4518,2313L4516,2316L4516,2318L4511,2318L4509,2316L4509,2301L4503,2301L4503,2306L4505,2306L4500,2306L4498,2303L4496,2303L4496,2313L4487,2313L4487,2318L4485,2318L4483,2316L4479,2316L4474,2311L4466,2311L4466,2316L4464,2318L4459,2318L4461,2316L4459,2313L4455,2311L4453,2311L4451,2308L4451,2290L4444,2290L4442,2293L4440,2293L4440,2290L4446,2283L4448,2283L4448,2278L4444,2278L4444,2275L4440,2275L4440,2270L4435,2270L4438,2262L4438,2260L4433,2252L4431,2252L4431,2250L4433,2250L4433,2247L4431,2247L4427,2242L4420,2242L4420,2245L4422,2245L4422,2250L4420,2250L4416,2252L4414,2255L4414,2257L4407,2257L4405,2255L4401,2252L4394,2252L4394,2255L4390,2255L4388,2260L4386,2262L4383,2262L4383,2260L4381,2255L4379,2252L4375,2252L4373,2255L4373,2257L4370,2257L4368,2260L4366,2257L4366,2255L4364,2255L4362,2252L4364,2252L4364,2250L4366,2247L4366,2245L4364,2242L4364,2232L4366,2229L4366,2227L4364,2224L4362,2224L4362,2222L4360,2219L4362,2219L4362,2216L4360,2216L4360,2214L4355,2214L4353,2216L4351,2214L4351,2211L4347,2206L4347,2201L4349,2201L4349,2193L4347,2193L4349,2191L4349,2188L4347,2186L4347,2183L4343,2181L4341,2181L4341,2168L4339,2168L4343,2168L4347,2171L4351,2165L4353,2165L4353,2158L4353,2160L4353,2150L4355,2148L4355,2142L4362,2142L4362,2140L4364,2140L4368,2145L4368,2148L4370,2148L4377,2153L4377,2155L4379,2158L4379,2155L4381,2150L4383,2150L4383,2148L4414,2148L4420,2145L4418,2142L4422,2137L4422,2145L4529,2145L4529,2142L4531,2132L4531,2125L4533,2125L4533,2117L4526,2112L4524,2104L4520,2040L4518,2038L4518,2018L4516,2007L4516,2002L4513,1992L4513,1972L4511,1964L4511,1951L4509,1946L4507,1910L4505,1903L4503,1870L4500,1862L4500,1847L4498,1834L4548,1834L4680,1938L4682,1938L4684,1941L4713,1961L4715,1961L4715,1969L4713,1969L4713,1974L4719,1974L4721,1977L4726,1977L4726,1979L4728,1979L4728,1984L4730,1987L4732,1987L4734,1989L4741,1989L4741,1987L4743,1987L4743,1989L4745,1989L4747,1992L4747,1995L4749,1995L4752,1997L4762,1997L4765,2000L4771,2002L4771,2015L4773,2018L4771,2018L4769,2023L4769,2025L4769,2025L4769,2025z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4440,1760L4440,1747L4316,1747L4314,1752L4314,1755L4312,1757L4312,1760L4310,1760L4310,1763L4309,1764L4309,1767L4307,1773L4305,1773L4305,1775L4300,1780L4294,1786L4289,1786L4289,1788L4285,1788L4285,1791L4283,1791L4283,1793L4281,1793L4279,1796L4279,1801L4276,1803L4276,1806L4274,1806L4274,1811L4272,1814L4270,1819L4270,1824L4268,1824L4268,1844L4266,1844L4263,1849L4259,1849L4259,1852L4257,1852L4257,1854L4256,1854L4256,1857L4251,1859L4249,1862L4249,1865L4245,1867L4243,1870L4243,1877L4240,1877L4238,1880L4238,1885L4236,1885L4236,1888L4234,1888L4234,1890L4232,1898L4232,1903L4230,1903L4227,1905L4227,1913L4225,1913L4225,1916L4223,1918L4223,1921L4221,1921L4221,1923L4217,1923L4211,1928L4211,1933L4209,1939L4209,1946L4207,1949L4207,1961L4205,1972L4208,1972L4209,1961L4211,1956L4213,1959L4213,1962L4218,1977L4220,1977L4220,1979L4222,1979L4222,1977L4221,1974L4222,1974L4224,1974L4224,1977L4227,1979L4227,1984L4231,1990L4231,1997L4229,2002L4228,2007L4225,2004L4223,2008L4224,2013L4226,2012L4228,2014L4222,2020L4222,2023L4227,2023L4229,2025L4229,2028L4231,2030L4231,2033L4232,2036L4232,2041L4233,2043L4233,2046L4235,2048L4235,2076L4233,2076L4233,2079L4234,2083L4232,2086L4232,2088L4230,2093L4228,2096L4225,2101L4225,2106L4223,2106L4223,2116L4221,2116L4222,2127L4222,2125L4224,2122L4224,2120L4227,2120L4227,2112L4229,2112L4231,2109L4233,2109L4233,2112L4248,2112L4250,2109L4261,2109L4263,2107L4263,2104L4266,2107L4283,2107L4292,2117L4292,2120L4296,2125L4300,2122L4300,2125L4305,2125L4309,2127L4311,2130L4313,2137L4313,2140L4315,2143L4315,2145L4320,2145L4322,2148L4322,2150L4324,2150L4324,2153L4328,2158L4330,2158L4333,2160L4335,2160L4335,2163L4339,2168L4343,2168L4347,2171L4351,2165L4353,2165L4353,2158L4353,2160L4353,2150L4355,2148L4355,2142L4362,2142L4362,2140L4364,2140L4368,2145L4368,2148L4370,2148L4377,2153L4377,2155L4379,2158L4379,2155L4381,2150L4383,2150L4383,2148L4414,2148L4420,2145L4418,2142L4422,2137L4422,2145L4529,2145L4529,2142L4531,2132L4531,2125L4533,2125L4533,2117L4526,2112L4524,2104L4520,2040L4518,2038L4518,2018L4516,2007L4516,2002L4513,1992L4513,1972L4511,1964L4511,1951L4509,1946L4507,1910L4505,1903L4503,1870L4500,1862L4500,1847L4498,1834L4548,1834L4546,1831L4544,1831L4520,1814L4518,1814L4496,1796L4494,1796L4481,1785L4479,1785L4455,1768L4453,1768L4442,1760L4440,1760z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1563,1712L1563,1696L1557,1696L1557,1699L1555,1706L1557,1709L1561,1709L1562,1711L1563,1712L1563,1712L1563,1712zM1537,1701L1533,1696L1531,1696L1529,1691L1527,1689L1527,1683L1529,1683L1529,1686L1531,1686L1533,1689L1533,1694L1535,1694L1537,1696L1537,1701L1537,1701L1537,1701zM1758,1645L1763,1645L1763,1648L1765,1650L1767,1650L1769,1653L1769,1658L1774,1663L1774,1673L1778,1681L1780,1683L1782,1683L1784,1686L1786,1686L1786,1689L1789,1689L1793,1694L1795,1694L1806,1699L1808,1701L1810,1701L1812,1704L1817,1704L1819,1699L1825,1691L1825,1689L1830,1678L1834,1678L1838,1676L1841,1673L1841,1676L1856,1676L1856,1678L1864,1678L1867,1681L1867,1683L1871,1686L1873,1686L1877,1691L1882,1694L1886,1699L1886,1706L1888,1706L1888,1709L1890,1709L1890,1714L1893,1714L1893,1717L1895,1719L1895,1722L1897,1727L1899,1729L1901,1729L1901,1732L1903,1732L1906,1737L1908,1740L1908,1742L1910,1742L1910,1745L1912,1745L1912,1747L1916,1747L1916,1750L1919,1750L1919,1768L1923,1773L1925,1773L1925,1775L1927,1778L1927,1783L1929,1788L1934,1788L1938,1791L1940,1791L1942,1793L1947,1793L1951,1798L1953,1798L1958,1801L1960,1801L1960,1798L1964,1798L1968,1801L1971,1801L1975,1806L1977,1806L1977,1803L1984,1803L1984,1808L1981,1811L1979,1816L1979,1821L1977,1821L1977,1824L1975,1826L1975,1829L1973,1832L1971,1828L1971,1826L1969,1826L1967,1829L1968,1833L1970,1835L1968,1838L1968,1865L1966,1867L1966,1905L1964,1905L1964,1910L1962,1910L1962,1913L1964,1913L1964,1921L1966,1921L1966,1934L1970,1938L1968,1940L1969,1945L1972,1949L1973,1947L1972,1943L1972,1940L1976,1941L1977,1946L1976,1951L1974,1953L1974,1957L1977,1959L1977,1961L1979,1967L1981,1969L1981,1974L1984,1974L1984,1977L1992,1989L1994,1989L1997,1992L1999,1997L2003,2002L2003,2005L2005,2007L2005,2012L2007,2018L2007,2020L2010,2020L2010,2023L2012,2023L2012,2028L2014,2028L2016,2030L2016,2033L2018,2033L2018,2035L2020,2038L2029,2040L2038,2040L2042,2043L2042,2046L2049,2046L2051,2048L2051,2051L2055,2056L2055,2058L2064,2058L2064,2056L2070,2056L2073,2052L2079,2049L2094,2048L2094,2051L2096,2051L2101,2048L2103,2048L2103,2046L2105,2046L2105,2043L2107,2046L2109,2043L2114,2040L2121,2041L2124,2039L2127,2040L2128,2043L2128,2046L2131,2048L2131,2051L2133,2048L2142,2048L2142,2046L2146,2043L2148,2040L2146,2037L2145,2037L2141,2036L2139,2034L2146,2030L2150,2030L2153,2028L2157,2025L2161,2020L2161,2015L2163,2010L2161,2007L2166,2002L2168,2002L2168,1979L2170,1974L2170,1969L2172,1967L2172,1964L2174,1961L2185,1956L2187,1956L2189,1954L2207,1954L2213,1951L2218,1951L2218,1949L2220,1949L2220,1946L2231,1946L2233,1944L2235,1944L2237,1946L2248,1949L2250,1949L2263,1944L2263,1946L2265,1946L2267,1951L2269,1951L2269,1959L2272,1959L2269,1964L2269,1967L2267,1972L2261,1979L2259,1979L2259,1982L2256,1982L2256,1984L2254,1989L2252,1989L2252,2002L2252,2000L2252,2002L2250,2002L2250,2005L2250,2002L2250,2005L2248,2005L2248,2007L2243,2007L2243,2010L2246,2010L2246,2012L2248,2012L2250,2010L2254,2010L2252,2012L2252,2015L2250,2018L2250,2015L2248,2018L2246,2018L2246,2023L2248,2023L2248,2020L2252,2020L2250,2025L2248,2028L2248,2038L2246,2038L2246,2040L2243,2043L2243,2051L2241,2051L2239,2048L2237,2048L2235,2046L2237,2040L2237,2035L2235,2035L2231,2040L2233,2040L2231,2046L2228,2046L2228,2048L2226,2048L2226,2046L2224,2046L2224,2048L2222,2053L2220,2056L2218,2056L2218,2061L2213,2066L2211,2063L2205,2063L2207,2069L2155,2069L2155,2086L2142,2086L2142,2089L2144,2089L2148,2094L2153,2097L2157,2102L2159,2102L2163,2107L2163,2112L2168,2112L2172,2117L2170,2117L2170,2125L2133,2125L2131,2130L2131,2132L2120,2153L2124,2158L2124,2160L2122,2160L2122,2165L2120,2165L2122,2168L2122,2171L2120,2173L2120,2176L2111,2165L2109,2165L2109,2163L2101,2153L2098,2153L2096,2150L2096,2148L2094,2148L2094,2145L2092,2145L2083,2135L2081,2135L2072,2125L2051,2122L2051,2120L2055,2120L2055,2117L2051,2117L2049,2120L2049,2114L2044,2114L2042,2117L2042,2120L2046,2120L2046,2122L2038,2122L2033,2127L2031,2127L2031,2130L2027,2130L2016,2135L2014,2137L2007,2137L2007,2140L2005,2140L2005,2137L2003,2137L2001,2140L1999,2140L1992,2137L1986,2132L1984,2132L1981,2130L1964,2130L1964,2127L1962,2125L1958,2122L1955,2122L1953,2120L1947,2120L1945,2117L1942,2117L1942,2114L1940,2114L1940,2112L1938,2109L1932,2109L1925,2107L1916,2107L1908,2102L1908,2099L1906,2099L1897,2097L1897,2094L1893,2094L1890,2091L1886,2091L1882,2089L1880,2089L1875,2086L1875,2084L1873,2084L1869,2081L1867,2079L1864,2079L1860,2074L1858,2074L1858,2071L1851,2063L1845,2063L1845,2066L1843,2066L1843,2063L1836,2063L1832,2061L1825,2061L1825,2058L1821,2058L1819,2056L1817,2056L1810,2053L1808,2053L1808,2051L1806,2051L1806,2048L1804,2046L1802,2040L1799,2040L1793,2033L1789,2033L1786,2030L1784,2030L1784,2028L1782,2025L1774,2025L1771,2023L1767,2020L1765,2020L1765,2018L1763,2015L1763,2010L1758,2010L1758,2007L1756,2007L1756,2005L1754,2002L1754,2000L1752,2000L1752,1997L1750,1995L1750,1989L1746,1985L1748,1982L1752,1982L1756,1979L1758,1979L1758,1974L1756,1972L1750,1972L1756,1964L1758,1964L1758,1954L1761,1951L1752,1941L1752,1938L1748,1933L1748,1921L1745,1918L1745,1913L1743,1910L1739,1908L1739,1905L1737,1905L1735,1903L1735,1900L1730,1898L1728,1893L1724,1887L1724,1885L1715,1880L1715,1875L1713,1875L1713,1870L1711,1870L1711,1867L1709,1867L1700,1859L1698,1859L1696,1857L1696,1854L1691,1854L1687,1847L1683,1847L1683,1844L1680,1842L1683,1842L1680,1838L1680,1833L1680,1831L1678,1831L1678,1829L1672,1829L1672,1826L1670,1826L1670,1824L1665,1824L1661,1821L1661,1816L1657,1816L1657,1819L1652,1819L1650,1816L1650,1814L1646,1808L1644,1808L1641,1806L1641,1801L1644,1801L1644,1798L1648,1793L1648,1791L1650,1788L1646,1785L1641,1778L1639,1775L1635,1780L1635,1778L1631,1778L1631,1770L1628,1770L1628,1765L1620,1765L1613,1757L1611,1757L1609,1750L1609,1745L1613,1740L1600,1740L1598,1737L1596,1737L1592,1734L1592,1732L1589,1732L1589,1729L1583,1722L1579,1722L1579,1717L1576,1717L1576,1714L1574,1714L1572,1712L1572,1709L1568,1704L1566,1704L1566,1694L1563,1691L1561,1691L1559,1689L1559,1683L1557,1683L1555,1681L1555,1678L1550,1673L1550,1663L1546,1658L1546,1655L1544,1650L1542,1650L1542,1648L1540,1645L1540,1643L1542,1635L1542,1632L1540,1630L1533,1630L1531,1627L1527,1627L1527,1622L1524,1622L1524,1620L1520,1620L1516,1617L1516,1622L1511,1622L1509,1620L1503,1617L1503,1615L1501,1615L1498,1612L1496,1612L1494,1615L1494,1617L1492,1617L1492,1625L1490,1632L1492,1632L1492,1638L1494,1638L1494,1640L1496,1640L1496,1653L1497,1654L1497,1661L1496,1663L1498,1666L1501,1671L1507,1678L1509,1678L1514,1681L1514,1683L1518,1686L1518,1689L1520,1689L1529,1699L1529,1706L1531,1706L1531,1704L1533,1704L1533,1706L1535,1709L1537,1709L1540,1714L1540,1719L1542,1722L1546,1722L1546,1727L1548,1727L1548,1734L1550,1734L1550,1742L1555,1747L1557,1747L1561,1750L1561,1752L1563,1760L1572,1770L1572,1773L1579,1773L1579,1775L1581,1775L1581,1778L1583,1778L1583,1783L1585,1783L1587,1791L1587,1796L1589,1796L1589,1808L1594,1814L1594,1816L1598,1816L1598,1821L1600,1826L1600,1829L1602,1831L1605,1831L1605,1834L1607,1836L1607,1839L1609,1839L1607,1842L1607,1854L1609,1854L1609,1857L1613,1859L1618,1857L1618,1854L1620,1854L1622,1857L1626,1859L1626,1865L1631,1865L1633,1867L1631,1867L1631,1870L1633,1870L1633,1872L1635,1872L1635,1877L1637,1880L1641,1880L1644,1885L1641,1893L1641,1895L1637,1895L1637,1898L1635,1898L1635,1900L1631,1903L1626,1903L1624,1900L1624,1895L1622,1893L1622,1887L1618,1882L1618,1880L1615,1880L1615,1877L1611,1877L1605,1870L1598,1865L1598,1862L1596,1862L1585,1857L1585,1854L1583,1852L1581,1852L1581,1849L1576,1849L1576,1847L1572,1842L1568,1842L1566,1839L1562,1841L1564,1836L1566,1834L1568,1829L1568,1826L1570,1824L1570,1814L1568,1814L1568,1816L1568,1808L1566,1803L1566,1801L1563,1801L1561,1798L1561,1793L1557,1793L1548,1788L1546,1785L1546,1783L1544,1783L1542,1780L1540,1780L1535,1775L1531,1775L1531,1773L1529,1775L1529,1778L1527,1778L1522,1775L1522,1770L1520,1770L1518,1768L1516,1768L1516,1770L1514,1768L1514,1765L1511,1765L1511,1763L1507,1763L1503,1760L1503,1757L1498,1752L1496,1752L1490,1745L1488,1745L1488,1742L1485,1742L1488,1740L1490,1742L1505,1742L1507,1740L1507,1737L1509,1734L1511,1734L1511,1724L1514,1722L1514,1717L1511,1714L1509,1714L1505,1709L1505,1706L1503,1706L1490,1691L1488,1691L1485,1689L1481,1689L1481,1686L1479,1686L1472,1683L1468,1678L1468,1673L1466,1666L1466,1661L1464,1661L1464,1658L1459,1653L1459,1645L1457,1645L1453,1640L1453,1638L1451,1632L1451,1630L1444,1622L1442,1622L1442,1620L1440,1620L1442,1617L1442,1610L1440,1607L1436,1604L1436,1597L1431,1597L1431,1594L1429,1594L1429,1587L1446,1587L1453,1584L1477,1584L1481,1581L1494,1581L1494,1587L1492,1589L1494,1589L1514,1597L1520,1597L1524,1599L1533,1602L1542,1607L1546,1607L1598,1627L1676,1627L1676,1612L1726,1612L1728,1615L1728,1617L1730,1617L1730,1620L1732,1622L1735,1622L1735,1625L1739,1625L1741,1627L1741,1630L1743,1630L1743,1632L1745,1632L1748,1635L1750,1635L1750,1638L1754,1643L1758,1645L1758,1645L1758,1645z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5462,1161L5464,1161L5464,1156L5462,1150L5462,1140L5464,1135L5466,1133L5466,1125L5464,1125L5464,1122L5462,1120L5462,1115L5460,1115L5458,1112L5456,1112L5453,1110L5453,1107L5451,1105L5449,1105L5440,1094L5440,1092L5438,1092L5438,1089L5436,1087L5436,1082L5432,1077L5430,1077L5425,1074L5421,1074L5421,1071L5425,1071L5430,1069L5438,1069L5445,1066L5453,1066L5456,1069L5456,1071L5462,1071L5462,1074L5469,1074L5469,1077L5482,1077L5482,1079L5486,1084L5488,1084L5488,1082L5490,1082L5492,1084L5495,1089L5492,1094L5490,1094L5490,1097L5492,1099L5495,1099L5497,1102L5497,1105L5501,1105L5501,1102L5503,1102L5503,1117L5508,1117L5510,1120L5514,1120L5514,1128L5512,1130L5514,1133L5518,1133L5518,1135L5510,1135L5508,1133L5505,1135L5503,1135L5501,1133L5501,1130L5499,1130L5497,1133L5495,1133L5495,1135L5492,1135L5492,1130L5488,1130L5486,1133L5484,1133L5486,1138L5488,1140L5486,1148L5479,1148L5479,1153L5477,1153L5477,1156L5473,1156L5473,1163L5464,1163L5464,1166L5464,1163L5462,1161L5462,1161L5462,1161z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7329,1204L7329,1212L7336,1212L7338,1217L7338,1222L7340,1224L7340,1227L7342,1227L7342,1230L7344,1232L7344,1237L7346,1237L7351,1242L7357,1247L7357,1255L7359,1255L7364,1252L7390,1252L7392,1255L7405,1255L7409,1258L7439,1258L7444,1260L7465,1258L7468,1255L7483,1255L7485,1258L7491,1258L7498,1260L7509,1260L7513,1268L7515,1268L7515,1270L7526,1273L7533,1273L7552,1281L7554,1281L7565,1286L7572,1283L7585,1283L7585,1288L7589,1291L7593,1288L7595,1288L7598,1291L7604,1286L7606,1286L7611,1283L7613,1281L7647,1268L7654,1268L7667,1263L7669,1265L7678,1265L7686,1263L7695,1263L7699,1265L7704,1265L7708,1263L7723,1263L7728,1260L7730,1260L7734,1258L7738,1258L7741,1255L7747,1252L7749,1252L7749,1250L7751,1250L7751,1247L7754,1247L7756,1245L7756,1242L7760,1240L7764,1235L7767,1235L7771,1232L7773,1232L7782,1227L7784,1224L7788,1224L7790,1222L7790,1217L7786,1212L7782,1212L7780,1207L7775,1201L7775,1199L7780,1194L7780,1191L7782,1186L7786,1181L7786,1179L7788,1179L7790,1176L7795,1176L7795,1179L7801,1179L7803,1176L7808,1181L7823,1186L7834,1186L7834,1189L7838,1189L7845,1181L7851,1181L7853,1179L7858,1176L7860,1173L7862,1168L7868,1166L7870,1166L7873,1168L7875,1168L7879,1166L7894,1166L7901,1158L7907,1158L7907,1156L7909,1156L7909,1148L7912,1148L7912,1145L7914,1145L7914,1143L7916,1143L7918,1140L7918,1138L7920,1135L7942,1135L7942,1128L7946,1128L7948,1130L7955,1130L7955,1128L7957,1128L7966,1122L7970,1122L7970,1125L7981,1125L7981,1122L7987,1122L7987,1125L7990,1125L7994,1128L7998,1128L7998,1125L8000,1128L8007,1128L8009,1125L8011,1125L8011,1117L8009,1117L8009,1115L8007,1115L8007,1110L8005,1107L8003,1107L7998,1102L7996,1102L7996,1099L7992,1097L7990,1097L7990,1092L7985,1092L7981,1089L7979,1089L7972,1082L7953,1082L7948,1084L7948,1087L7942,1092L7940,1092L7933,1089L7933,1087L7927,1084L7925,1087L7905,1087L7905,1089L7903,1089L7903,1092L7901,1092L7892,1084L7890,1077L7892,1077L7899,1074L7899,1069L7896,1064L7901,1061L7901,1059L7905,1056L7905,1054L7907,1051L7912,1038L7914,1036L7916,1031L7922,1023L7922,1020L7920,1018L7912,1018L7912,1015L7905,1015L7899,1018L7899,1020L7886,1020L7881,1018L7881,1015L7877,1013L7875,1010L7873,1010L7870,1008L7851,1008L7847,1010L7847,1013L7840,1013L7840,1015L7836,1015L7834,1018L7832,1018L7829,1020L7825,1023L7823,1028L7823,1031L7814,1033L7810,1033L7808,1031L7806,1031L7803,1033L7797,1033L7795,1036L7780,1036L7780,1038L7767,1038L7767,1041L7764,1041L7764,1043L7749,1043L7745,1041L7745,1043L7738,1043L7730,1041L7721,1041L7719,1038L7695,1038L7691,1036L7689,1033L7684,1031L7682,1031L7682,1028L7680,1028L7680,1018L7665,1018L7660,1015L7658,1015L7656,1013L7654,1013L7654,1010L7647,1008L7647,1005L7632,1005L7632,1008L7628,1005L7626,1003L7613,1003L7608,1000L7604,1000L7604,1003L7595,1003L7589,1005L7580,1005L7580,1008L7578,1008L7576,1010L7572,1010L7572,1013L7569,1010L7563,1010L7563,1013L7559,1013L7559,1010L7550,1010L7550,1008L7548,1008L7548,1005L7543,1005L7541,1008L7541,1005L7537,1005L7535,1003L7530,1003L7528,1000L7526,1000L7524,997L7522,997L7522,995L7524,995L7524,992L7522,990L7520,990L7520,987L7522,987L7522,985L7520,982L7520,980L7517,977L7517,975L7520,975L7520,972L7515,972L7513,969L7507,969L7502,967L7500,967L7498,969L7496,969L7496,967L7489,967L7487,964L7483,964L7481,962L7478,962L7474,959L7455,959L7455,957L7452,957L7452,954L7446,954L7435,949L7431,949L7429,946L7426,946L7426,949L7424,952L7424,954L7420,959L7411,959L7411,962L7409,964L7409,969L7407,969L7407,967L7405,967L7405,969L7400,975L7403,975L7403,977L7400,977L7400,982L7398,982L7398,985L7400,985L7400,987L7403,987L7403,992L7407,997L7411,997L7411,1008L7407,1013L7407,1015L7405,1015L7400,1018L7394,1018L7392,1020L7392,1023L7388,1023L7385,1026L7381,1026L7381,1023L7379,1023L7370,1018L7366,1018L7366,1020L7364,1020L7364,1018L7362,1018L7359,1020L7357,1020L7357,1018L7353,1018L7351,1015L7349,1015L7349,1018L7344,1018L7344,1015L7342,1015L7340,1018L7336,1020L7333,1020L7331,1018L7320,1018L7320,1015L7310,1015L7307,1013L7307,1010L7303,1010L7303,1008L7301,1008L7301,997L7279,997L7277,995L7275,995L7275,997L7264,997L7264,990L7258,990L7258,992L7255,995L7253,995L7249,990L7245,990L7245,992L7242,992L7240,995L7238,995L7238,992L7229,992L7229,995L7227,995L7225,997L7221,1000L7219,1000L7212,1003L7208,1003L7206,1005L7201,1008L7199,1010L7197,1010L7197,1008L7195,1008L7195,1010L7188,1010L7188,1013L7182,1013L7182,1018L7171,1018L7171,1023L7173,1023L7173,1026L7169,1026L7169,1028L7164,1028L7164,1031L7162,1031L7162,1028L7158,1028L7158,1031L7160,1031L7158,1031L7158,1033L7151,1033L7151,1031L7149,1031L7149,1036L7145,1033L7130,1033L7130,1041L7125,1043L7121,1043L7121,1046L7123,1048L7121,1051L7119,1051L7119,1054L7121,1056L7125,1056L7128,1059L7125,1061L7123,1061L7123,1064L7125,1064L7130,1066L7134,1066L7138,1069L7141,1069L7141,1071L7143,1074L7143,1077L7149,1079L7154,1079L7154,1082L7162,1082L7164,1079L7169,1079L7169,1082L7171,1084L7175,1087L7180,1087L7180,1084L7182,1084L7184,1087L7184,1092L7188,1092L7193,1097L7195,1105L7195,1107L7197,1107L7201,1112L7201,1115L7206,1115L7206,1117L7208,1117L7210,1122L7210,1130L7208,1135L7206,1135L7206,1138L7208,1140L7208,1143L7210,1143L7210,1148L7208,1148L7206,1150L7203,1150L7199,1161L7199,1163L7201,1163L7201,1166L7208,1173L7214,1173L7214,1176L7223,1176L7223,1179L7232,1179L7236,1176L7238,1176L7245,1179L7268,1179L7271,1181L7281,1181L7284,1184L7286,1184L7288,1186L7290,1186L7299,1191L7303,1196L7307,1196L7307,1199L7312,1199L7312,1201L7320,1204L7329,1204L7329,1204L7329,1204z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4600,1495L4597,1490L4597,1493L4592,1498L4589,1500L4581,1500L4581,1497L4576,1500L4572,1500L4572,1497L4570,1500L4563,1500L4561,1502L4559,1502L4557,1500L4548,1500L4546,1497L4544,1497L4544,1495L4537,1490L4533,1485L4533,1479L4531,1477L4529,1477L4529,1479L4522,1479L4520,1482L4516,1482L4516,1487L4513,1492L4511,1495L4509,1500L4509,1505L4507,1507L4507,1513L4505,1513L4505,1515L4498,1528L4496,1528L4496,1530L4494,1533L4492,1538L4487,1543L4485,1543L4472,1551L4470,1553L4464,1553L4464,1556L4461,1556L4457,1558L4451,1558L4451,1561L4448,1561L4448,1564L4444,1564L4444,1566L4442,1566L4442,1569L4438,1571L4433,1576L4433,1579L4431,1579L4427,1584L4425,1584L4425,1587L4422,1587L4425,1589L4425,1599L4422,1599L4422,1604L4420,1604L4412,1615L4412,1620L4409,1622L4409,1630L4408,1629L4408,1639L4409,1640L4409,1645L4407,1645L4407,1650L4409,1650L4412,1653L4414,1658L4414,1668L4409,1673L4409,1676L4403,1683L4401,1683L4401,1689L4396,1694L4394,1694L4394,1696L4392,1696L4392,1699L4388,1704L4386,1704L4383,1706L4377,1709L4375,1712L4373,1712L4373,1714L4370,1714L4368,1717L4368,1719L4362,1727L4357,1727L4355,1729L4349,1732L4347,1732L4331,1737L4321,1737L4321,1742L4318,1745L4316,1745L4316,1747L4440,1747L4440,1712L4444,1712L4444,1709L4448,1709L4448,1706L4453,1701L4455,1701L4466,1694L4468,1691L4474,1691L4477,1689L4477,1686L4479,1686L4481,1683L4483,1683L4483,1681L4492,1683L4500,1683L4500,1678L4503,1676L4518,1676L4520,1673L4529,1673L4531,1671L4533,1671L4539,1663L4539,1661L4542,1661L4542,1655L4544,1655L4544,1653L4546,1653L4552,1650L4559,1650L4559,1648L4563,1648L4563,1645L4565,1645L4570,1640L4581,1640L4581,1635L4578,1632L4574,1632L4576,1627L4576,1622L4574,1622L4574,1615L4587,1615L4589,1612L4596,1612L4598,1610L4600,1610L4600,1602L4602,1602L4613,1599L4624,1599L4626,1602L4648,1602L4648,1599L4645,1599L4645,1594L4648,1592L4650,1592L4652,1589L4654,1589L4645,1584L4643,1581L4639,1574L4641,1571L4639,1571L4639,1569L4635,1564L4635,1558L4637,1558L4637,1553L4635,1551L4632,1551L4632,1548L4635,1543L4635,1536L4632,1530L4632,1525L4635,1523L4632,1523L4630,1520L4630,1518L4632,1515L4630,1515L4630,1513L4624,1507L4622,1507L4619,1505L4619,1502L4611,1502L4611,1505L4609,1502L4602,1503L4601,1500L4600,1495L4600,1495L4600,1495z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5663,3374L5663,3372L5661,3367L5661,3359L5659,3356L5659,3354L5655,3349L5655,3341L5657,3336L5655,3336L5653,3331L5653,3328L5650,3326L5646,3323L5644,3318L5646,3310L5646,3298L5644,3298L5644,3293L5648,3298L5648,3300L5650,3300L5657,3295L5663,3288L5666,3288L5666,3285L5670,3282L5670,3280L5676,3272L5679,3272L5683,3267L5685,3267L5685,3270L5687,3270L5689,3265L5692,3265L5692,3262L5702,3249L5707,3247L5707,3239L5709,3239L5715,3231L5731,3221L5733,3219L5739,3219L5744,3214L5748,3214L5757,3208L5761,3208L5767,3206L5767,3203L5770,3201L5772,3201L5776,3196L5778,3196L5783,3193L5785,3193L5788,3187L5790,3187L5790,3184L5796,3178L5796,3173L5800,3170L5802,3165L5804,3163L5804,3160L5809,3160L5809,3157L5811,3152L5811,3147L5806,3147L5806,3145L5811,3145L5813,3142L5813,3137L5815,3135L5815,3122L5811,3122L5813,3119L5813,3117L5811,3114L5811,3117L5809,3117L5806,3114L5809,3114L5811,3112L5811,3106L5809,3106L5806,3099L5806,3096L5809,3096L5809,3094L5806,3094L5806,3091L5809,3089L5809,3086L5806,3086L5809,3083L5809,3076L5806,3076L5806,3078L5804,3076L5804,3073L5806,3073L5811,3068L5809,3068L5809,3061L5804,3061L5806,3058L5806,3043L5804,3038L5804,3027L5806,3025L5804,3025L5802,3022L5804,3020L5804,3017L5806,3017L5809,3012L5806,3012L5806,3007L5809,3007L5809,3004L5806,3004L5809,3002L5809,2997L5806,2994L5804,2994L5802,2997L5796,2999L5793,3004L5789,3004L5789,3007L5787,3007L5785,3010L5778,3010L5778,3012L5776,3015L5772,3015L5772,3017L5770,3017L5767,3015L5763,3017L5761,3017L5754,3020L5750,3025L5748,3025L5748,3022L5746,3022L5741,3020L5733,3020L5733,3022L5731,3025L5731,3030L5728,3030L5726,3033L5722,3035L5715,3035L5713,3033L5711,3033L5709,3030L5702,3030L5702,3033L5700,3033L5700,3035L5696,3035L5692,3033L5689,3033L5689,3035L5685,3035L5685,3030L5679,3025L5676,3025L5672,3030L5652,3030L5652,3038L5650,3044L5645,3053L5646,3061L5649,3068L5646,3070L5649,3076L5647,3079L5650,3089L5650,3094L5668,3114L5668,3117L5676,3129L5679,3129L5679,3140L5676,3142L5676,3175L5674,3175L5674,3178L5672,3178L5668,3180L5668,3178L5663,3178L5661,3180L5661,3191L5659,3191L5657,3193L5657,3196L5661,3196L5661,3211L5655,3211L5655,3206L5657,3206L5657,3201L5653,3201L5646,3193L5646,3191L5644,3188L5642,3188L5642,3186L5640,3183L5637,3183L5637,3175L5635,3173L5633,3173L5633,3168L5637,3163L5637,3157L5640,3152L5642,3152L5642,3135L5640,3129L5640,3127L5637,3127L5637,3124L5635,3122L5629,3124L5622,3124L5620,3127L5616,3127L5611,3124L5609,3119L5607,3117L5607,3114L5605,3114L5605,3109L5601,3109L5581,3119L5577,3119L5572,3122L5568,3122L5566,3124L5562,3124L5557,3127L5557,3129L5555,3129L5551,3132L5544,3132L5540,3135L5538,3135L5531,3137L5529,3137L5521,3142L5521,3150L5523,3150L5523,3152L5525,3152L5525,3163L5527,3163L5527,3175L5551,3175L5551,3178L5553,3180L5562,3180L5564,3183L5568,3186L5568,3188L5579,3188L5579,3191L5581,3191L5585,3193L5590,3193L5590,3198L5596,3198L5596,3203L5594,3203L5596,3208L5596,3216L5598,3216L5598,3219L5596,3224L5596,3226L5598,3226L5598,3234L5596,3234L5596,3244L5598,3247L5596,3247L5596,3249L5598,3249L5598,3252L5601,3252L5596,3257L5594,3257L5594,3259L5596,3262L5596,3265L5592,3265L5590,3267L5590,3272L5594,3272L5594,3282L5592,3285L5592,3288L5594,3288L5594,3293L5598,3298L5598,3303L5596,3305L5594,3310L5594,3316L5588,3323L5585,3323L5583,3326L5583,3339L5581,3341L5579,3341L5579,3344L5583,3349L5581,3349L5551,3384L5557,3405L5557,3420L5559,3420L5559,3423L5562,3423L5562,3428L5566,3433L5566,3441L5570,3451L5570,3492L5568,3494L5568,3499L5570,3502L5572,3502L5572,3517L5575,3527L5575,3530L5594,3530L5594,3525L5596,3512L5596,3504L5594,3504L5594,3512L5590,3507L5588,3502L5585,3502L5590,3497L5590,3494L5592,3492L5592,3489L5594,3486L5598,3484L5603,3479L5605,3479L5607,3476L5624,3469L5629,3469L5633,3466L5635,3466L5637,3463L5642,3463L5644,3461L5648,3461L5653,3458L5655,3456L5657,3456L5659,3453L5659,3451L5661,3451L5661,3448L5663,3446L5663,3443L5666,3441L5668,3441L5668,3438L5666,3438L5668,3435L5668,3430L5666,3430L5666,3433L5663,3435L5663,3425L5666,3423L5666,3410L5668,3405L5670,3402L5668,3402L5668,3374L5663,3374L5663,3374L5663,3374z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7281,2033L7281,2035L7284,2035L7284,2033L7286,2035L7286,2040L7281,2040L7277,2035L7277,2033L7281,2033L7281,2033L7281,2033zM7288,2023L7290,2028L7292,2030L7292,2033L7290,2033L7290,2035L7288,2033L7284,2030L7284,2028L7277,2020L7277,2018L7279,2015L7281,2018L7281,2020L7284,2020L7284,2023L7288,2023L7288,2023L7288,2023zM7420,2252L7418,2252L7418,2250L7422,2250L7422,2247L7420,2247L7420,2239L7422,2237L7420,2229L7420,2219L7416,2219L7416,2211L7411,2206L7411,2204L7410,2202L7409,2204L7407,2209L7405,2201L7405,2186L7403,2183L7403,2181L7398,2171L7398,2168L7396,2165L7396,2163L7398,2158L7398,2155L7396,2155L7396,2145L7394,2135L7396,2135L7396,2132L7394,2132L7394,2130L7392,2130L7392,2125L7394,2120L7392,2117L7392,2119L7388,2119L7387,2117L7388,2112L7385,2112L7381,2102L7381,2099L7379,2094L7379,2091L7377,2086L7375,2086L7375,2084L7372,2086L7370,2086L7370,2091L7372,2091L7372,2099L7370,2099L7370,2104L7368,2104L7368,2107L7366,2109L7364,2109L7362,2112L7355,2112L7355,2114L7353,2117L7351,2117L7349,2114L7349,2120L7346,2122L7346,2120L7344,2120L7340,2122L7340,2125L7338,2127L7338,2132L7333,2135L7332,2138L7329,2138L7329,2135L7327,2135L7325,2134L7321,2135L7321,2137L7318,2138L7316,2136L7314,2136L7312,2133L7303,2127L7301,2130L7299,2130L7297,2127L7299,2117L7301,2112L7301,2109L7303,2102L7303,2099L7305,2097L7307,2089L7305,2089L7307,2084L7307,2079L7310,2079L7310,2076L7307,2076L7307,2071L7305,2069L7305,2061L7303,2051L7301,2051L7299,2046L7299,2038L7294,2036L7294,2029L7293,2026L7288,2018L7284,2015L7282,2011L7285,2010L7286,2008L7281,2006L7279,2007L7277,2006L7275,2004L7277,1998L7274,1994L7272,1997L7265,1995L7264,1993L7262,1995L7260,1995L7260,1992L7258,1992L7258,1989L7255,1989L7255,1987L7251,1977L7249,1977L7249,1974L7247,1974L7247,1972L7245,1969L7245,1964L7242,1964L7242,1951L7247,1949L7251,1951L7253,1956L7255,1954L7253,1954L7253,1933L7255,1931L7255,1926L7260,1931L7264,1931L7264,1928L7266,1926L7268,1926L7268,1923L7271,1923L7268,1921L7268,1916L7266,1916L7266,1903L7268,1900L7268,1898L7271,1898L7271,1900L7273,1900L7273,1898L7275,1893L7275,1872L7273,1867L7273,1865L7275,1865L7277,1867L7286,1867L7286,1870L7288,1870L7290,1867L7292,1870L7294,1870L7297,1872L7299,1867L7299,1859L7301,1857L7301,1854L7307,1842L7310,1842L7310,1839L7312,1834L7312,1829L7307,1829L7307,1824L7310,1821L7310,1819L7314,1819L7314,1816L7316,1816L7320,1811L7320,1803L7323,1803L7323,1801L7325,1801L7325,1798L7323,1796L7323,1793L7320,1791L7320,1785L7323,1780L7325,1780L7327,1778L7327,1780L7331,1778L7333,1778L7333,1775L7338,1775L7338,1773L7342,1768L7346,1768L7346,1763L7349,1763L7351,1760L7353,1760L7359,1757L7370,1757L7370,1760L7372,1760L7370,1763L7375,1763L7375,1765L7379,1765L7377,1760L7377,1757L7375,1757L7372,1755L7372,1747L7375,1745L7377,1745L7379,1742L7385,1737L7385,1734L7383,1732L7385,1729L7385,1727L7388,1727L7388,1724L7390,1722L7390,1717L7392,1717L7394,1719L7396,1719L7396,1724L7400,1724L7403,1727L7403,1729L7407,1729L7407,1734L7409,1742L7409,1745L7411,1747L7411,1752L7413,1752L7413,1750L7416,1750L7416,1747L7418,1747L7420,1750L7422,1750L7422,1757L7424,1757L7422,1757L7422,1765L7424,1768L7424,1788L7422,1788L7422,1798L7420,1798L7420,1796L7418,1796L7418,1798L7420,1801L7420,1803L7422,1803L7422,1806L7420,1808L7420,1806L7418,1806L7416,1808L7416,1811L7413,1814L7413,1816L7411,1816L7409,1814L7407,1816L7407,1821L7405,1824L7400,1826L7398,1826L7398,1829L7396,1829L7396,1836L7392,1842L7390,1842L7390,1844L7392,1844L7390,1847L7390,1852L7394,1852L7394,1854L7396,1857L7396,1862L7394,1862L7394,1865L7390,1867L7390,1870L7394,1870L7394,1872L7394,1870L7396,1870L7398,1867L7400,1867L7400,1865L7405,1865L7407,1862L7418,1862L7420,1865L7426,1862L7429,1862L7429,1865L7426,1865L7424,1867L7422,1867L7422,1872L7424,1875L7426,1875L7426,1877L7424,1880L7424,1882L7426,1882L7429,1885L7429,1893L7433,1895L7444,1895L7444,1898L7446,1898L7446,1903L7444,1903L7439,1908L7442,1913L7442,1916L7439,1918L7435,1926L7435,1928L7450,1928L7450,1931L7450,1928L7455,1931L7457,1931L7459,1933L7457,1933L7457,1941L7461,1941L7463,1944L7461,1946L7461,1949L7463,1949L7463,1951L7465,1949L7468,1949L7468,1946L7470,1946L7472,1949L7478,1949L7481,1946L7481,1944L7489,1938L7491,1944L7491,1946L7489,1946L7491,1946L7487,1951L7483,1954L7478,1954L7478,1959L7476,1961L7476,1964L7474,1964L7472,1967L7472,1969L7476,1969L7474,1969L7474,1972L7470,1972L7470,1969L7468,1969L7468,1972L7465,1972L7463,1974L7463,1982L7461,1984L7461,1987L7457,1982L7455,1982L7455,1987L7444,1987L7446,1989L7446,1992L7444,1995L7437,1995L7435,1992L7433,1995L7431,1995L7431,2005L7426,2005L7426,2002L7420,2005L7418,2007L7409,2007L7407,2005L7405,2005L7405,2002L7405,2005L7403,2007L7405,2007L7405,2010L7400,2010L7400,2012L7398,2012L7396,2018L7398,2018L7398,2028L7396,2028L7394,2033L7396,2033L7396,2043L7394,2043L7392,2046L7385,2046L7385,2043L7385,2046L7388,2048L7388,2053L7390,2053L7390,2051L7392,2051L7392,2053L7394,2053L7392,2053L7392,2056L7394,2056L7394,2058L7396,2063L7394,2066L7394,2069L7396,2074L7398,2074L7398,2076L7400,2076L7407,2084L7407,2086L7409,2086L7411,2089L7411,2091L7413,2094L7416,2094L7418,2097L7418,2102L7416,2102L7416,2104L7422,2112L7422,2120L7426,2114L7429,2114L7429,2120L7426,2122L7426,2125L7422,2125L7420,2127L7420,2130L7418,2137L7418,2142L7420,2145L7420,2150L7418,2150L7418,2148L7416,2148L7416,2150L7413,2150L7413,2153L7409,2153L7409,2168L7413,2173L7416,2173L7416,2176L7418,2178L7418,2181L7420,2183L7424,2186L7424,2188L7426,2188L7429,2191L7431,2191L7431,2196L7435,2201L7435,2209L7437,2211L7437,2219L7435,2219L7433,2222L7433,2224L7437,2234L7442,2239L7442,2242L7444,2247L7444,2252L7446,2255L7446,2262L7448,2265L7448,2267L7444,2273L7439,2280L7439,2283L7437,2285L7437,2288L7435,2290L7433,2290L7433,2293L7429,2298L7426,2298L7426,2301L7424,2303L7424,2306L7426,2308L7424,2308L7424,2313L7422,2316L7422,2318L7419,2324L7418,2325L7418,2311L7416,2311L7416,2301L7418,2301L7420,2295L7422,2295L7422,2285L7424,2285L7424,2283L7422,2280L7422,2270L7420,2270L7420,2265L7422,2262L7422,2257L7420,2252L7420,2252L7420,2252z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5380,3234L5371,3234L5365,3242L5360,3242L5360,3239L5356,3239L5347,3244L5347,3247L5345,3247L5345,3249L5343,3249L5343,3252L5341,3254L5339,3254L5336,3257L5336,3254L5334,3252L5336,3252L5336,3249L5334,3249L5334,3247L5332,3247L5330,3244L5330,3242L5328,3242L5328,3239L5321,3239L5310,3242L5306,3244L5265,3249L5265,3372L5237,3372L5237,3581L5232,3583L5224,3583L5224,3586L5222,3588L5222,3591L5215,3591L5215,3596L5213,3599L5211,3599L5209,3596L5206,3596L5202,3594L5200,3594L5191,3596L5183,3596L5183,3594L5178,3594L5174,3591L5170,3591L5170,3588L5167,3588L5165,3591L5163,3583L5163,3581L5165,3581L5165,3578L5163,3576L5163,3573L5161,3573L5161,3576L5159,3576L5159,3571L5157,3571L5157,3568L5150,3568L5150,3571L5148,3576L5148,3581L5146,3583L5146,3581L5144,3581L5144,3583L5139,3586L5135,3586L5131,3581L5131,3578L5128,3578L5126,3576L5126,3573L5122,3573L5120,3568L5118,3568L5118,3563L5115,3563L5115,3560L5113,3560L5113,3555L5111,3555L5109,3550L5107,3548L5107,3545L5105,3543L5105,3532L5102,3532L5102,3530L5100,3527L5100,3522L5102,3522L5102,3517L5100,3517L5100,3514L5098,3514L5098,3512L5096,3512L5096,3507L5098,3507L5098,3504L5096,3502L5096,3499L5094,3494L5094,3481L5092,3481L5092,3476L5094,3474L5094,3469L5092,3466L5092,3461L5089,3458L5089,3456L5087,3456L5087,3451L5085,3448L5085,3443L5083,3443L5083,3433L5085,3430L5083,3423L5083,3407L5081,3405L5081,3402L5083,3400L5083,3402L5085,3402L5085,3390L5081,3382L5081,3379L5079,3374L5074,3369L5072,3369L5072,3367L5068,3364L5070,3361L5068,3361L5068,3359L5066,3356L5066,3351L5064,3351L5061,3349L5059,3341L5053,3333L5053,3326L5051,3323L5051,3321L5048,3321L5048,3313L5046,3310L5046,3308L5044,3308L5044,3305L5042,3303L5042,3300L5040,3300L5040,3298L5038,3293L5038,3290L5035,3290L5033,3285L5033,3280L5029,3275L5027,3270L5027,3267L5022,3262L5020,3262L5020,3259L5018,3259L5016,3257L5016,3254L5014,3254L5014,3247L5012,3247L5012,3244L5009,3244L5009,3242L5007,3239L5007,3216L5009,3216L5012,3214L5014,3214L5016,3211L5018,3211L5020,3214L5027,3214L5029,3216L5031,3216L5031,3214L5038,3211L5038,3208L5040,3208L5042,3206L5053,3206L5055,3208L5057,3208L5057,3211L5061,3214L5061,3216L5066,3219L5068,3221L5076,3221L5076,3219L5167,3221L5170,3219L5193,3219L5196,3224L5202,3231L5204,3231L5206,3234L5219,3234L5219,3237L5230,3237L5232,3234L5235,3234L5235,3237L5243,3237L5245,3234L5250,3237L5250,3239L5258,3239L5261,3242L5261,3239L5265,3239L5269,3237L5271,3237L5271,3239L5284,3239L5300,3234L5308,3234L5317,3231L5319,3231L5328,3229L5334,3229L5349,3224L5373,3224L5375,3226L5378,3226L5382,3231L5382,3234L5380,3234L5380,3234L5380,3234z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6946,1658L6948,1655L6950,1658L6961,1658L6961,1661L6963,1666L6963,1668L6965,1668L6976,1673L6976,1676L6980,1678L6982,1681L6987,1681L6989,1683L6993,1683L6998,1689L6998,1691L7002,1696L7002,1699L7004,1699L7006,1696L7011,1694L7017,1694L7019,1696L7019,1699L7021,1701L7021,1706L7026,1706L7026,1712L7032,1712L7034,1714L7034,1717L7037,1717L7041,1719L7043,1717L7043,1714L7045,1714L7047,1717L7047,1719L7045,1719L7045,1727L7063,1727L7063,1729L7067,1729L7067,1732L7069,1734L7069,1740L7071,1740L7073,1737L7073,1734L7071,1732L7076,1729L7076,1734L7080,1737L7082,1740L7084,1737L7084,1732L7091,1732L7091,1734L7095,1737L7099,1737L7099,1740L7102,1740L7102,1742L7106,1742L7108,1740L7112,1742L7119,1742L7119,1740L7130,1740L7130,1747L7128,1747L7128,1750L7125,1752L7125,1768L7128,1768L7128,1770L7130,1773L7130,1780L7128,1783L7128,1788L7123,1788L7123,1785L7119,1785L7117,1788L7102,1788L7097,1783L7095,1783L7095,1785L7093,1788L7091,1788L7089,1785L7078,1780L7076,1783L7076,1780L7067,1780L7067,1783L7065,1783L7063,1780L7063,1775L7060,1775L7060,1773L7056,1773L7056,1775L7054,1775L7052,1778L7050,1778L7047,1775L7041,1770L7039,1768L7032,1768L7032,1757L7026,1757L7024,1755L7021,1755L7017,1752L7015,1752L7015,1755L7011,1755L7011,1757L7008,1757L7008,1755L7006,1755L7004,1752L6998,1752L6998,1755L6995,1757L6993,1757L6993,1755L6987,1755L6985,1752L6980,1752L6978,1750L6978,1745L6976,1745L6974,1747L6969,1747L6969,1745L6967,1745L6963,1740L6952,1740L6948,1734L6943,1734L6943,1732L6941,1729L6939,1729L6937,1724L6935,1724L6933,1722L6928,1722L6922,1717L6920,1714L6918,1714L6918,1717L6915,1717L6913,1714L6911,1714L6911,1712L6909,1712L6907,1709L6905,1709L6905,1704L6911,1696L6911,1694L6909,1689L6911,1686L6913,1686L6913,1683L6915,1683L6915,1681L6913,1681L6913,1678L6915,1678L6915,1676L6918,1676L6920,1673L6920,1671L6924,1671L6926,1666L6928,1666L6931,1663L6933,1666L6933,1668L6935,1671L6935,1668L6937,1671L6937,1668L6939,1668L6941,1666L6941,1658L6946,1658L6946,1658L6946,1658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7560,2608L7560,2605L7562,2603L7566,2602L7570,2603L7568,2608L7565,2609L7563,2609L7560,2609L7560,2608L7560,2608L7560,2608z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5274,1270L5287,1270L5287,1268L5297,1268L5302,1265L5302,1268L5304,1268L5304,1265L5306,1265L5306,1263L5308,1263L5308,1260L5306,1260L5304,1258L5304,1250L5308,1250L5308,1247L5310,1250L5313,1250L5319,1242L5319,1237L5315,1237L5315,1235L5313,1232L5310,1232L5308,1230L5306,1230L5304,1222L5302,1219L5304,1212L5308,1212L5308,1209L5310,1207L5310,1204L5308,1204L5308,1201L5306,1201L5306,1199L5304,1196L5306,1196L5308,1194L5310,1194L5310,1196L5313,1196L5313,1194L5310,1191L5306,1191L5306,1189L5304,1189L5302,1191L5300,1191L5300,1194L5297,1196L5295,1196L5293,1194L5293,1191L5282,1191L5282,1189L5280,1189L5280,1186L5274,1186L5274,1184L5280,1184L5280,1181L5276,1181L5276,1179L5276,1179L5278,1176L5278,1173L5271,1173L5258,1163L5258,1156L5256,1156L5254,1153L5254,1150L5250,1150L5248,1148L5245,1148L5245,1145L5243,1143L5239,1143L5235,1140L5232,1143L5230,1143L5228,1140L5224,1140L5224,1143L5222,1145L5217,1148L5213,1148L5213,1145L5211,1145L5209,1148L5204,1150L5206,1153L5209,1153L5209,1158L5206,1158L5206,1163L5209,1163L5209,1168L5213,1171L5220,1171L5219,1173L5213,1173L5211,1176L5213,1179L5209,1184L5213,1184L5213,1181L5215,1181L5217,1184L5219,1184L5219,1186L5217,1189L5215,1194L5211,1199L5211,1201L5213,1201L5213,1204L5215,1204L5219,1207L5222,1209L5226,1212L5224,1214L5219,1214L5217,1212L5215,1212L5215,1214L5219,1217L5224,1222L5222,1227L5217,1227L5215,1230L5217,1232L5222,1232L5222,1235L5224,1235L5224,1237L5226,1237L5226,1240L5230,1240L5232,1242L5237,1242L5237,1245L5241,1245L5243,1247L5245,1247L5248,1250L5243,1253L5237,1252L5237,1255L5239,1255L5239,1260L5241,1260L5244,1263L5243,1268L5250,1268L5250,1270L5252,1270L5254,1275L5254,1283L5256,1283L5258,1280L5258,1275L5267,1270L5269,1270L5272,1273L5274,1273L5274,1270z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4849,990L4849,992L4838,992L4840,990L4838,990L4838,987L4843,982L4843,977L4836,977L4836,975L4825,975L4823,972L4823,969L4821,967L4821,969L4814,969L4817,969L4817,967L4812,967L4812,969L4808,969L4808,967L4806,967L4804,969L4804,972L4801,972L4798,973L4797,975L4796,973L4777,973L4777,971L4784,970L4780,968L4778,967L4778,964L4790,966L4791,969L4794,969L4797,970L4801,969L4798,966L4793,965L4792,963L4785,960L4789,958L4796,961L4800,962L4803,961L4817,961L4817,958L4798,958L4795,956L4793,953L4799,949L4800,946L4808,941L4807,938L4810,935L4809,931L4812,925L4811,921L4811,916L4813,914L4816,913L4818,913L4817,917L4818,921L4821,920L4823,921L4824,926L4828,927L4829,929L4826,931L4823,930L4822,932L4825,934L4822,936L4821,939L4824,941L4835,932L4842,933L4844,931L4838,929L4837,926L4840,923L4834,923L4831,922L4831,913L4836,908L4845,906L4856,906L4860,903L4873,903L4873,908L4875,908L4877,911L4882,911L4882,921L4879,921L4877,924L4877,931L4873,931L4873,929L4869,929L4869,934L4866,934L4866,936L4875,936L4877,939L4877,944L4875,944L4873,946L4869,946L4869,949L4871,952L4871,954L4862,954L4860,957L4858,957L4853,954L4851,954L4847,957L4847,959L4853,967L4853,972L4851,975L4849,975L4849,977L4851,977L4851,980L4847,980L4845,982L4845,985L4849,985L4849,990L4849,990L4849,990z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9348,4180L9350,4183L9352,4183L9352,4185L9348,4185L9354,4188L9354,4190L9352,4190L9352,4193L9345,4193L9343,4195L9341,4193L9339,4193L9337,4195L9339,4195L9337,4198L9332,4198L9332,4195L9335,4195L9337,4193L9339,4188L9341,4185L9341,4183L9339,4183L9341,4180L9341,4178L9348,4178L9348,4180L9348,4180L9348,4180zM9514,4007L9514,4009L9517,4009L9519,4012L9519,4014L9521,4017L9521,4019L9519,4019L9519,4022L9517,4022L9512,4027L9512,4032L9510,4032L9508,4035L9501,4040L9501,4042L9499,4045L9499,4047L9497,4047L9497,4050L9495,4053L9495,4055L9493,4055L9488,4060L9484,4060L9482,4063L9480,4063L9480,4065L9478,4070L9480,4078L9486,4078L9488,4081L9488,4086L9486,4086L9484,4083L9484,4086L9478,4086L9478,4083L9475,4083L9471,4081L9469,4081L9469,4086L9465,4086L9462,4088L9460,4088L9458,4091L9456,4091L9452,4093L9447,4093L9447,4096L9445,4096L9441,4098L9439,4098L9439,4104L9436,4106L9436,4114L9434,4121L9430,4127L9430,4129L9426,4134L9428,4134L9426,4137L9426,4139L9423,4142L9421,4147L9423,4149L9423,4152L9415,4152L9415,4155L9410,4155L9410,4160L9408,4160L9408,4162L9404,4162L9400,4167L9397,4167L9397,4170L9393,4172L9393,4175L9387,4175L9382,4178L9378,4178L9376,4175L9376,4178L9371,4178L9371,4175L9363,4175L9358,4172L9358,4170L9356,4170L9354,4167L9339,4167L9341,4165L9339,4162L9334,4159L9331,4159L9329,4162L9309,4161L9308,4157L9304,4157L9304,4153L9303,4150L9304,4148L9304,4147L9304,4143L9305,4141L9308,4143L9311,4141L9311,4138L9312,4134L9315,4132L9315,4130L9317,4127L9320,4125L9321,4123L9328,4118L9327,4115L9332,4115L9336,4113L9337,4108L9339,4111L9348,4101L9350,4101L9350,4098L9352,4098L9356,4093L9356,4091L9369,4091L9374,4086L9376,4086L9380,4081L9384,4081L9389,4078L9393,4078L9400,4070L9402,4070L9410,4060L9415,4060L9417,4058L9419,4058L9421,4055L9423,4055L9436,4040L9436,4037L9439,4037L9439,4027L9441,4027L9443,4019L9445,4017L9449,4017L9452,4014L9454,4014L9454,4012L9458,4007L9460,4007L9460,3989L9465,3984L9467,3984L9469,3981L9472,3979L9473,3976L9477,3974L9488,3974L9488,3976L9480,3976L9475,3981L9478,3984L9482,3986L9484,3986L9484,3984L9486,3984L9486,3994L9488,4002L9493,4002L9500,3994L9503,3992L9505,3989L9509,3987L9508,3986L9506,3984L9508,3982L9512,3982L9513,3986L9512,3989L9515,3990L9520,3988L9520,3992L9522,3993L9524,3996L9524,3999L9522,3999L9520,4000L9520,4003L9516,4003L9514,4007L9514,4007L9514,4007zM9556,3841L9551,3836L9551,3831L9553,3831L9556,3833L9558,3838L9556,3841L9556,3841L9556,3841zM9499,3795L9501,3795L9501,3792L9517,3800L9514,3800L9514,3803L9517,3803L9517,3805L9521,3805L9523,3803L9523,3808L9525,3810L9527,3810L9530,3815L9530,3818L9527,3818L9527,3828L9536,3838L9534,3841L9534,3851L9538,3856L9543,3856L9543,3859L9549,3859L9549,3861L9551,3861L9551,3864L9549,3864L9549,3866L9551,3866L9551,3869L9558,3869L9558,3866L9556,3861L9556,3859L9553,3859L9553,3854L9556,3854L9556,3851L9551,3846L9551,3843L9556,3846L9558,3849L9558,3851L9562,3851L9564,3854L9564,3856L9566,3859L9566,3872L9569,3874L9569,3877L9570,3881L9572,3883L9575,3882L9577,3884L9582,3887L9584,3887L9588,3889L9590,3889L9590,3892L9599,3892L9599,3894L9608,3894L9610,3892L9612,3892L9612,3889L9614,3889L9614,3887L9616,3884L9618,3884L9618,3882L9625,3882L9625,3879L9634,3879L9634,3882L9638,3882L9640,3884L9638,3889L9636,3889L9634,3894L9636,3894L9636,3897L9634,3900L9634,3912L9629,3915L9627,3917L9623,3917L9623,3930L9625,3930L9623,3935L9621,3935L9621,3930L9616,3930L9614,3928L9608,3928L9608,3930L9603,3930L9601,3933L9599,3933L9595,3938L9595,3948L9601,3948L9599,3951L9597,3951L9595,3961L9595,3963L9592,3963L9592,3966L9590,3966L9588,3971L9586,3971L9586,3974L9579,3981L9577,3986L9573,3991L9573,3994L9571,3994L9571,3996L9564,4004L9562,4004L9553,4009L9551,4012L9547,4012L9547,4007L9543,4004L9540,4004L9540,4007L9538,4007L9538,3999L9536,3999L9534,4002L9536,4002L9536,4004L9532,4004L9532,4002L9530,4002L9530,3999L9534,3999L9536,3994L9538,3991L9540,3991L9543,3986L9545,3984L9545,3979L9547,3979L9547,3963L9545,3963L9543,3958L9540,3956L9534,3956L9530,3953L9527,3953L9523,3948L9523,3945L9512,3945L9510,3943L9510,3940L9508,3940L9508,3938L9506,3935L9508,3933L9508,3930L9514,3930L9519,3925L9525,3925L9530,3923L9530,3920L9532,3915L9532,3907L9534,3900L9536,3900L9536,3884L9534,3879L9534,3872L9534,3874L9534,3872L9532,3872L9532,3869L9530,3866L9530,3864L9532,3864L9534,3866L9538,3864L9536,3861L9536,3859L9532,3859L9532,3861L9530,3861L9527,3864L9527,3861L9525,3859L9525,3853L9523,3849L9519,3848L9518,3844L9520,3842L9523,3846L9526,3848L9526,3842L9524,3842L9521,3838L9519,3837L9519,3839L9516,3842L9513,3841L9514,3836L9497,3815L9497,3813L9488,3803L9489,3802L9491,3800L9491,3795L9484,3787L9482,3782L9480,3782L9478,3780L9478,3777L9484,3777L9484,3782L9486,3785L9488,3790L9497,3791L9499,3795L9499,3795L9499,3795z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2324,2290L2321,2291L2315,2289L2313,2287L2310,2287L2306,2284L2303,2283L2297,2273L2295,2267L2294,2260L2294,2257L2300,2257L2304,2259L2307,2263L2311,2264L2313,2268L2316,2270L2319,2275L2321,2279L2325,2282L2327,2287L2324,2290L2324,2290zM2367,2165L2367,2163L2371,2163L2373,2160L2363,2160L2360,2163L2352,2168L2347,2168L2343,2171L2341,2171L2334,2173L2326,2168L2326,2165L2324,2168L2321,2168L2321,2171L2319,2171L2319,2176L2317,2176L2317,2178L2315,2181L2317,2181L2317,2183L2313,2183L2306,2191L2304,2191L2300,2193L2300,2199L2298,2199L2293,2196L2293,2193L2293,2191L2291,2191L2289,2193L2285,2201L2272,2201L2272,2211L2274,2211L2274,2216L2269,2216L2267,2219L2267,2224L2265,2227L2256,2227L2256,2229L2252,2229L2252,2227L2250,2227L2250,2224L2248,2224L2248,2227L2246,2227L2246,2229L2248,2229L2248,2232L2252,2234L2254,2237L2254,2239L2259,2242L2263,2247L2265,2247L2265,2250L2267,2250L2272,2252L2272,2255L2274,2257L2274,2260L2276,2260L2278,2265L2278,2267L2282,2270L2285,2273L2289,2275L2298,2285L2298,2288L2302,2288L2304,2285L2306,2285L2308,2288L2313,2288L2315,2290L2317,2290L2324,2293L2330,2288L2339,2293L2343,2298L2350,2298L2350,2301L2354,2301L2354,2298L2358,2298L2358,2293L2356,2293L2354,2290L2354,2288L2352,2285L2352,2278L2354,2273L2358,2273L2358,2267L2356,2265L2354,2265L2354,2262L2356,2260L2357,2249L2359,2246L2362,2245L2361,2241L2360,2211L2363,2206L2363,2199L2365,2196L2365,2193L2369,2188L2369,2186L2371,2186L2371,2178L2369,2176L2369,2173L2365,2168L2365,2165L2367,2165L2367,2165z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4708,2209L4704,2204L4697,2204L4695,2199L4693,2196L4691,2188L4693,2188L4693,2186L4691,2183L4691,2181L4687,2181L4687,2171L4689,2168L4687,2165L4689,2165L4689,2163L4687,2163L4687,2160L4691,2160L4693,2163L4693,2160L4695,2160L4697,2163L4702,2163L4708,2160L4717,2150L4765,2150L4765,2148L4773,2148L4780,2150L4780,2145L4784,2140L4788,2140L4788,2137L4791,2137L4791,2130L4795,2120L4795,2117L4797,2117L4797,2102L4799,2099L4799,2025L4801,2025L4806,2023L4838,2018L4843,2015L4888,1969L4892,1967L4895,1967L4897,1964L4901,1961L4905,1956L4921,1946L4923,1944L4977,1908L4981,1903L5007,1887L5007,1885L5014,1882L5016,1882L5022,1885L5027,1885L5031,1887L5040,1887L5053,1893L5057,1893L5057,1895L5059,1895L5076,1913L5081,1910L5081,1908L5083,1908L5094,1903L5094,1900L5098,1900L5098,1908L5102,1926L5102,1949L5105,1949L5105,1951L5113,1961L5113,1964L5115,1967L5113,1967L5113,1972L5126,1987L5124,1987L5120,1997L5118,2000L5111,2099L5100,2112L5096,2120L5085,2130L5081,2137L5076,2142L5076,2145L5072,2150L5070,2155L5066,2160L5064,2165L5064,2171L5061,2173L5061,2176L5057,2176L5057,2178L5055,2178L5055,2181L5057,2193L5059,2199L5059,2204L5053,2204L5048,2206L5051,2206L5048,2206L5048,2209L5042,2209L5040,2211L5035,2214L5033,2216L5031,2216L5031,2219L5029,2219L5029,2224L5025,2224L5020,2222L5014,2222L5009,2216L5001,2214L4975,2214L4973,2216L4964,2216L4960,2222L4957,2222L4949,2232L4931,2232L4927,2229L4923,2229L4923,2227L4921,2227L4921,2224L4914,2224L4914,2222L4912,2219L4910,2219L4908,2216L4905,2216L4899,2214L4886,2224L4886,2222L4882,2222L4877,2227L4873,2227L4871,2222L4869,2222L4866,2214L4860,2206L4858,2206L4856,2204L4847,2204L4845,2201L4840,2199L4838,2199L4836,2196L4834,2196L4830,2199L4830,2201L4817,2201L4810,2204L4806,2204L4799,2211L4797,2211L4797,2222L4791,2234L4782,2242L4782,2245L4784,2250L4782,2252L4782,2255L4784,2260L4782,2262L4782,2265L4784,2265L4784,2267L4782,2270L4780,2267L4780,2265L4778,2265L4778,2262L4773,2262L4771,2260L4771,2257L4765,2250L4760,2247L4756,2247L4756,2250L4747,2250L4747,2262L4745,2260L4739,2247L4741,2245L4743,2245L4743,2239L4741,2237L4741,2234L4736,2234L4732,2239L4726,2239L4713,2227L4708,2227L4708,2214L4710,2214L4713,2216L4715,2216L4717,2214L4715,2214L4714,2212L4710,2211L4708,2209L4708,2209L4708,2209z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4912,2497L4914,2500L4912,2502L4903,2502L4897,2505L4894,2504L4880,2508L4880,2506L4877,2505L4874,2508L4869,2510L4863,2510L4849,2512L4845,2507L4840,2505L4836,2500L4836,2497L4834,2494L4834,2492L4832,2489L4832,2484L4834,2484L4834,2482L4830,2482L4830,2478L4833,2478L4834,2475L4833,2473L4831,2474L4826,2473L4826,2470L4827,2468L4823,2466L4823,2464L4821,2459L4819,2459L4817,2454L4812,2451L4812,2449L4808,2446L4806,2446L4806,2443L4801,2443L4795,2441L4784,2441L4785,2437L4776,2438L4779,2441L4775,2441L4773,2443L4756,2443L4756,2438L4758,2436L4758,2426L4756,2423L4758,2420L4758,2395L4756,2395L4756,2387L4758,2385L4758,2382L4756,2382L4756,2375L4758,2375L4758,2354L4767,2354L4769,2352L4769,2341L4775,2334L4773,2334L4773,2331L4775,2331L4778,2329L4780,2329L4782,2326L4784,2321L4784,2318L4782,2318L4780,2316L4782,2311L4786,2311L4788,2306L4788,2301L4786,2301L4786,2290L4784,2290L4784,2288L4782,2283L4778,2278L4780,2273L4780,2270L4782,2270L4784,2267L4784,2265L4782,2265L4782,2262L4784,2260L4782,2255L4782,2252L4784,2250L4782,2245L4782,2242L4791,2234L4797,2222L4797,2211L4799,2211L4806,2204L4810,2204L4817,2201L4830,2201L4830,2199L4834,2196L4836,2196L4838,2199L4840,2199L4845,2201L4847,2204L4856,2204L4858,2206L4860,2206L4866,2214L4869,2222L4871,2222L4873,2227L4877,2227L4882,2222L4886,2222L4886,2224L4899,2214L4905,2216L4908,2216L4910,2219L4912,2219L4914,2222L4914,2224L4921,2224L4921,2227L4923,2227L4923,2229L4927,2229L4931,2232L4949,2232L4957,2222L4960,2222L4964,2216L4973,2216L4975,2214L5001,2214L5009,2216L5014,2222L5020,2222L5025,2224L5029,2224L5029,2219L5031,2219L5031,2216L5033,2216L5035,2214L5040,2211L5042,2209L5048,2209L5048,2206L5051,2206L5048,2206L5053,2204L5059,2204L5064,2209L5072,2224L5072,2227L5074,2239L5076,2242L5076,2245L5074,2245L5074,2247L5083,2247L5085,2250L5085,2252L5087,2252L5087,2275L5083,2278L5081,2278L5081,2280L5079,2280L5076,2283L5070,2283L5068,2285L5066,2290L5061,2295L5061,2298L5059,2301L5059,2303L5057,2303L5057,2308L5055,2316L5055,2318L5053,2321L5048,2321L5048,2329L5051,2331L5048,2336L5048,2339L5046,2339L5046,2341L5042,2341L5038,2354L5038,2364L5033,2367L5033,2369L5025,2369L5025,2372L5027,2372L5027,2375L5025,2375L5025,2377L5022,2375L5022,2377L5020,2377L5020,2380L5022,2382L5022,2385L5020,2385L5020,2392L5018,2392L5018,2395L5016,2398L5016,2403L5012,2408L5012,2410L5009,2410L5009,2413L5007,2413L5009,2413L5009,2415L5012,2418L5012,2420L5007,2423L5005,2423L5003,2426L5003,2433L5001,2436L4999,2436L4999,2441L4990,2441L4990,2438L4988,2436L4990,2433L4990,2431L4986,2431L4983,2428L4983,2423L4979,2423L4977,2420L4975,2420L4973,2426L4964,2426L4964,2420L4962,2423L4955,2428L4955,2431L4953,2428L4953,2431L4951,2433L4951,2438L4949,2438L4947,2441L4944,2441L4944,2443L4942,2443L4940,2446L4938,2451L4934,2454L4927,2461L4927,2466L4929,2466L4929,2469L4927,2469L4927,2482L4925,2482L4923,2487L4923,2489L4921,2492L4921,2494L4918,2494L4918,2497L4912,2497L4912,2497L4912,2497z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5660,1612L5660,1610L5653,1610L5653,1599L5655,1597L5655,1589L5659,1587L5661,1587L5661,1589L5663,1587L5663,1589L5666,1589L5666,1592L5668,1592L5670,1597L5668,1599L5668,1617L5666,1620L5666,1622L5663,1622L5661,1625L5657,1625L5653,1627L5650,1627L5650,1622L5653,1622L5653,1617L5660,1615L5660,1612L5660,1612L5660,1612z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6237,1836L6235,1836L6235,1839L6237,1842L6242,1842L6242,1839L6244,1839L6244,1836L6246,1836L6246,1834L6250,1844L6250,1847L6253,1847L6253,1852L6255,1852L6259,1857L6259,1859L6261,1859L6261,1862L6266,1867L6268,1867L6268,1870L6270,1870L6287,1875L6294,1875L6296,1877L6300,1877L6300,1880L6305,1880L6305,1877L6309,1877L6309,1880L6315,1887L6318,1887L6318,1890L6320,1893L6320,1895L6322,1898L6324,1898L6324,1900L6326,1900L6331,1910L6333,1910L6333,1913L6341,1913L6341,1916L6344,1916L6344,1923L6341,1923L6341,1926L6339,1928L6337,1933L6337,1936L6335,1938L6333,1938L6333,1944L6328,1951L6326,1951L6324,1954L6322,1954L6318,1959L6318,1961L6315,1961L6315,1964L6313,1964L6311,1969L6311,1974L6307,1979L6307,1984L6305,1984L6305,1987L6300,1984L6298,1984L6298,1982L6300,1979L6300,1977L6298,1977L6296,1979L6294,1979L6294,1982L6287,1989L6287,1997L6285,2002L6285,2005L6283,2005L6283,2007L6285,2015L6285,2023L6287,2025L6287,2030L6285,2033L6268,2033L6266,2035L6261,2035L6255,2043L6255,2048L6253,2051L6253,2058L6250,2058L6250,2061L6248,2061L6248,2063L6242,2063L6237,2066L6222,2066L6222,2069L6220,2069L6220,2071L6216,2076L6216,2081L6218,2081L6218,2084L6214,2089L6211,2094L6209,2094L6207,2097L6201,2097L6201,2094L6183,2094L6179,2099L6175,2099L6170,2104L6164,2104L6157,2107L6149,2086L6146,2086L6146,2084L6125,2030L6209,1997L6227,1931L6214,1908L6216,1905L6216,1903L6214,1903L6214,1898L6218,1893L6218,1887L6222,1877L6224,1875L6224,1870L6222,1867L6227,1865L6229,1865L6231,1867L6233,1865L6237,1865L6235,1859L6231,1859L6231,1847L6233,1844L6231,1844L6231,1836L6233,1836L6233,1834L6237,1834L6237,1836L6237,1836L6237,1836zM6246,1792L6246,1790L6250,1790L6251,1795L6248,1796L6247,1798L6249,1799L6248,1806L6246,1806L6246,1808L6244,1808L6244,1814L6242,1814L6242,1811L6240,1811L6240,1806L6242,1803L6242,1798L6240,1798L6240,1796L6242,1793L6246,1792L6246,1792L6246,1792z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6751,1638L6746,1640L6742,1645L6742,1648L6740,1650L6738,1650L6736,1653L6733,1658L6733,1661L6736,1661L6736,1663L6731,1668L6727,1668L6725,1671L6720,1671L6720,1673L6716,1683L6716,1686L6712,1696L6710,1696L6707,1699L6707,1701L6703,1704L6701,1704L6699,1706L6697,1706L6692,1709L6688,1714L6688,1717L6686,1722L6684,1724L6684,1727L6677,1734L6677,1737L6673,1740L6660,1740L6658,1742L6655,1742L6653,1745L6645,1745L6645,1737L6642,1737L6642,1734L6636,1734L6629,1742L6627,1742L6627,1750L6625,1750L6614,1763L6610,1773L6610,1775L6612,1775L6612,1778L6616,1778L6616,1780L6619,1780L6619,1783L6623,1783L6627,1780L6627,1783L6629,1783L6629,1796L6627,1798L6627,1801L6629,1803L6634,1811L6645,1811L6645,1821L6647,1824L6647,1826L6649,1826L6649,1829L6651,1831L6651,1836L6653,1839L6655,1844L6653,1844L6653,1852L6655,1852L6655,1854L6651,1854L6647,1859L6642,1859L6642,1857L6640,1857L6642,1854L6642,1852L6640,1852L6636,1854L6632,1854L6632,1857L6629,1857L6625,1862L6619,1862L6616,1859L6614,1859L6614,1857L6595,1857L6593,1854L6590,1857L6590,1867L6577,1867L6577,1870L6575,1870L6575,1877L6569,1875L6567,1872L6567,1870L6564,1870L6564,1872L6558,1872L6558,1870L6556,1870L6556,1865L6551,1865L6549,1862L6549,1852L6547,1849L6547,1847L6545,1847L6545,1844L6547,1844L6549,1842L6545,1842L6541,1839L6532,1839L6532,1836L6534,1831L6534,1826L6532,1824L6530,1824L6530,1816L6525,1814L6521,1814L6519,1816L6519,1819L6519,1816L6519,1819L6512,1821L6508,1821L6506,1824L6504,1824L6502,1821L6493,1821L6493,1824L6478,1824L6478,1829L6476,1829L6476,1826L6474,1824L6474,1826L6469,1826L6461,1824L6456,1824L6456,1821L6448,1821L6445,1824L6443,1824L6443,1826L6417,1826L6413,1829L6411,1829L6411,1826L6406,1826L6406,1829L6402,1829L6400,1831L6398,1831L6398,1834L6396,1834L6396,1831L6398,1829L6398,1826L6391,1826L6393,1824L6393,1808L6398,1808L6398,1793L6400,1793L6404,1791L6406,1791L6406,1788L6409,1788L6411,1791L6411,1785L6413,1785L6415,1783L6419,1783L6422,1780L6437,1780L6437,1773L6439,1770L6439,1765L6441,1765L6441,1763L6439,1763L6439,1760L6430,1760L6430,1763L6428,1763L6426,1760L6424,1760L6426,1755L6426,1742L6424,1737L6424,1734L6426,1729L6426,1727L6417,1727L6417,1724L6415,1722L6409,1722L6402,1719L6400,1719L6400,1717L6391,1706L6391,1704L6387,1699L6385,1694L6385,1691L6372,1676L6376,1676L6404,1686L6406,1686L6411,1689L6437,1689L6445,1686L6450,1686L6458,1689L6463,1689L6465,1686L6469,1686L6471,1683L6482,1683L6486,1686L6504,1681L6506,1678L6510,1678L6517,1676L6521,1676L6523,1673L6523,1671L6521,1668L6521,1663L6523,1663L6523,1653L6521,1653L6521,1650L6525,1640L6528,1640L6532,1635L6534,1635L6534,1630L6538,1627L6543,1627L6543,1630L6558,1630L6564,1627L6564,1625L6558,1625L6558,1620L6564,1620L6564,1617L6569,1617L6573,1612L6573,1610L6575,1610L6575,1612L6577,1612L6584,1615L6586,1615L6586,1612L6584,1612L6584,1610L6586,1610L6593,1617L6599,1617L6601,1615L6601,1612L6606,1607L6606,1592L6603,1592L6603,1589L6606,1589L6606,1587L6608,1587L6610,1584L6610,1576L6612,1576L6612,1569L6625,1569L6629,1566L6634,1561L6634,1558L6632,1556L6629,1556L6629,1553L6632,1553L6632,1551L6629,1548L6625,1548L6623,1543L6621,1541L6623,1538L6629,1538L6632,1541L6649,1541L6655,1538L6658,1533L6658,1528L6655,1528L6655,1525L6653,1525L6653,1520L6655,1520L6655,1518L6658,1515L6662,1513L6668,1505L6668,1502L6671,1500L6668,1497L6668,1495L6671,1495L6671,1490L6668,1487L6668,1485L6666,1479L6664,1479L6664,1477L6662,1474L6660,1474L6658,1472L6660,1469L6666,1464L6671,1459L6673,1459L6673,1462L6679,1456L6686,1454L6686,1451L6688,1451L6690,1449L6697,1449L6697,1446L6718,1446L6720,1444L6723,1444L6723,1446L6727,1444L6731,1444L6733,1446L6740,1446L6742,1444L6749,1441L6751,1441L6751,1444L6755,1439L6759,1441L6770,1441L6770,1444L6775,1444L6777,1446L6777,1451L6779,1451L6779,1449L6785,1449L6785,1451L6788,1451L6790,1454L6794,1467L6792,1469L6790,1469L6790,1474L6796,1474L6796,1479L6805,1479L6807,1477L6807,1482L6811,1482L6811,1485L6814,1485L6816,1487L6822,1490L6827,1490L6831,1492L6837,1492L6839,1490L6842,1490L6842,1492L6831,1497L6829,1500L6827,1500L6820,1502L6820,1505L6822,1505L6822,1507L6820,1507L6818,1510L6818,1518L6814,1518L6814,1515L6803,1515L6801,1518L6798,1518L6798,1520L6794,1520L6794,1518L6792,1518L6792,1520L6788,1520L6788,1523L6781,1523L6775,1520L6768,1520L6768,1518L6755,1518L6755,1515L6742,1515L6740,1518L6733,1518L6733,1523L6731,1525L6731,1528L6733,1530L6736,1530L6738,1533L6736,1533L6736,1536L6733,1536L6733,1538L6744,1538L6744,1543L6742,1543L6740,1546L6736,1546L6736,1551L6738,1551L6738,1553L6742,1553L6742,1556L6740,1561L6738,1561L6738,1564L6736,1564L6736,1566L6738,1566L6742,1571L6746,1571L6746,1579L6751,1581L6753,1579L6755,1579L6755,1589L6766,1589L6770,1592L6775,1597L6770,1602L6766,1604L6764,1604L6762,1602L6762,1604L6759,1604L6757,1607L6755,1607L6753,1610L6751,1615L6751,1617L6753,1620L6753,1625L6751,1625L6751,1635L6753,1635L6751,1638L6751,1638L6751,1638zM6575,1875L6575,1872z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8880,2984L8878,2984L8878,2981L8873,2981L8873,2979L8869,2974L8869,2971L8867,2969L8869,2969L8873,2974L8875,2979L8878,2979L8880,2976L8882,2976L8882,2981L8880,2984L8880,2984L8880,2984zM8871,2969L8869,2966L8860,2966L8860,2964L8858,2961L8858,2956L8862,2956L8862,2959L8865,2959L8865,2961L8867,2961L8867,2959L8869,2959L8869,2961L8873,2966L8873,2969L8871,2969L8871,2969L8871,2969zM8856,2964L8852,2961L8849,2959L8849,2953L8856,2953L8858,2959L8856,2961L8856,2964L8856,2964L8856,2964zM8925,2953L8919,2946L8917,2946L8919,2943L8921,2943L8925,2946L8927,2946L8930,2948L8932,2948L8932,2951L8930,2951L8925,2953L8925,2953L8925,2953zM8791,2841L8789,2841L8787,2839L8787,2836L8785,2836L8785,2831L8787,2831L8791,2834L8793,2834L8793,2841L8791,2841L8791,2841L8791,2841zM8997,2846L8997,2851L8999,2854L9003,2854L9012,2864L9012,2874L9010,2872L9008,2872L9008,2874L9005,2874L9005,2877L9003,2877L9001,2874L8999,2874L8995,2872L8992,2867L8990,2867L8992,2864L8992,2857L8988,2857L8986,2854L8984,2849L8982,2849L8979,2846L8977,2841L8977,2836L8979,2831L8982,2834L8988,2834L8992,2844L8997,2846L8997,2846L8997,2846zM8767,2828L8763,2826L8763,2823L8765,2823L8767,2821L8769,2823L8769,2828L8767,2828L8767,2828L8767,2828zM8975,2828L8975,2826L8973,2823L8973,2818L8975,2816L8977,2816L8977,2828L8975,2828L8975,2828L8975,2828zM8847,2857L8834,2857L8834,2851L8832,2851L8828,2849L8823,2851L8821,2854L8821,2849L8817,2849L8817,2846L8815,2846L8810,2841L8802,2841L8802,2839L8800,2839L8800,2836L8802,2831L8804,2828L8806,2831L8823,2831L8823,2834L8834,2834L8834,2831L8839,2831L8839,2834L8843,2831L8845,2831L8847,2828L8845,2828L8845,2826L8847,2821L8847,2816L8852,2816L8852,2818L8849,2818L8849,2821L8847,2826L8849,2826L8849,2831L8852,2834L8856,2834L8856,2831L8858,2828L8860,2828L8862,2831L8865,2831L8865,2834L8867,2834L8873,2831L8873,2828L8875,2828L8875,2821L8878,2821L8878,2818L8882,2813L8893,2813L8893,2798L8891,2795L8891,2793L8888,2790L8888,2788L8897,2788L8897,2790L8899,2790L8899,2793L8901,2793L8906,2788L8908,2788L8910,2790L8908,2790L8908,2793L8912,2793L8914,2803L8914,2808L8912,2808L8912,2811L8910,2813L8908,2813L8908,2816L8906,2816L8906,2813L8901,2813L8901,2821L8904,2823L8906,2823L8906,2828L8897,2834L8895,2834L8895,2831L8888,2831L8886,2834L8886,2841L8884,2844L8875,2849L8869,2849L8869,2851L8867,2851L8865,2854L8865,2851L8860,2854L8860,2857L8847,2857L8847,2857L8847,2857zM8704,2902L8696,2902L8696,2897L8694,2897L8694,2900L8691,2897L8691,2902L8689,2900L8687,2900L8687,2905L8683,2905L8678,2902L8676,2900L8676,2908L8678,2910L8678,2915L8674,2915L8674,2913L8665,2913L8668,2915L8670,2920L8661,2920L8659,2923L8646,2923L8646,2925L8648,2925L8650,2928L8655,2928L8659,2931L8659,2933L8661,2933L8663,2938L8663,2946L8659,2946L8657,2948L8652,2948L8648,2953L8646,2953L8646,2956L8639,2956L8639,2953L8637,2953L8631,2951L8626,2951L8624,2953L8611,2953L8611,2951L8605,2951L8603,2953L8600,2953L8598,2951L8598,2877L8596,2877L8594,2874L8594,2867L8596,2864L8596,2859L8598,2859L8598,2737L8596,2737L8605,2737L8605,2739L8609,2739L8609,2742L8613,2742L8613,2744L8616,2744L8620,2747L8622,2749L8624,2747L8629,2752L8631,2752L8639,2757L8644,2757L8650,2760L8652,2760L8652,2762L8665,2762L8672,2770L8674,2770L8678,2772L8678,2775L8681,2775L8687,2777L8687,2775L8694,2775L8696,2777L8696,2783L8702,2783L8704,2785L8707,2790L8709,2790L8709,2793L8711,2795L8717,2795L8720,2798L8722,2798L8722,2800L8726,2806L8726,2808L8728,2808L8730,2813L8730,2823L8728,2826L8728,2831L8739,2831L8741,2834L8750,2834L8750,2836L8752,2839L8756,2839L8756,2841L8761,2841L8765,2846L8778,2846L8782,2851L8785,2857L8787,2859L8787,2862L8789,2869L8787,2869L8787,2872L8763,2872L8763,2879L8765,2882L8767,2887L8767,2892L8769,2895L8769,2897L8774,2897L8776,2900L8782,2905L8782,2910L8789,2910L8789,2913L8791,2913L8791,2915L8795,2915L8797,2920L8797,2931L8800,2933L8802,2933L8804,2936L8804,2941L8806,2941L8806,2946L8808,2948L8815,2948L8821,2946L8828,2946L8828,2951L8823,2956L8823,2959L8826,2961L8828,2961L8828,2964L8832,2964L8832,2966L8847,2966L8847,2971L8839,2971L8839,2974L8841,2974L8843,2979L8845,2979L8845,2981L8854,2981L8854,2984L8858,2984L8862,2987L8871,2987L8867,2989L8856,2989L8856,2992L8862,2994L8865,2994L8867,2997L8865,2997L8862,2999L8860,2999L8858,3002L8854,3002L8849,2999L8847,2997L8843,2997L8843,2994L8849,2994L8847,2992L8843,2992L8841,2989L8828,2989L8826,2987L8813,2987L8810,2984L8800,2984L8800,2981L8793,2981L8793,2984L8791,2984L8789,2981L8789,2979L8780,2979L8780,2976L8778,2974L8778,2971L8772,2964L8772,2961L8765,2961L8761,2956L8761,2948L8759,2948L8754,2946L8752,2946L8752,2938L8750,2938L8750,2936L8748,2933L8746,2933L8746,2931L8743,2928L8743,2923L8741,2923L8741,2920L8739,2918L8739,2915L8733,2915L8730,2913L8726,2913L8726,2910L8720,2910L8715,2908L8709,2908L8704,2905L8704,2902L8704,2902L8704,2902zM8871,2737L8873,2739L8878,2742L8880,2744L8884,2744L8886,2747L8888,2747L8893,2752L8895,2752L8895,2755L8897,2757L8897,2755L8899,2755L8899,2757L8904,2757L8904,2760L8908,2762L8908,2764L8910,2765L8912,2767L8913,2769L8917,2770L8917,2772L8919,2775L8919,2777L8923,2777L8923,2780L8927,2783L8934,2790L8934,2795L8932,2795L8932,2800L8930,2808L8927,2808L8921,2800L8921,2788L8919,2783L8919,2780L8917,2780L8917,2777L8912,2772L8912,2770L8910,2767L8906,2765L8901,2765L8895,2760L8893,2757L8893,2755L8888,2755L8888,2752L8886,2752L8884,2749L8882,2749L8882,2747L8880,2747L8875,2742L8867,2742L8867,2739L8871,2739L8871,2737L8871,2739L8871,2737L8871,2737L8871,2737zM8858,2739L8852,2739L8849,2737L8845,2734L8845,2732L8849,2729L8854,2729L8858,2732L8860,2732L8860,2739L8858,2739L8858,2739L8858,2739zM8776,2719L8772,2721L8769,2721L8769,2724L8761,2724L8759,2721L8756,2721L8752,2724L8750,2724L8750,2721L8752,2716L8759,2716L8761,2714L8767,2716L8772,2716L8776,2719L8776,2719L8776,2719zM8838,2702L8836,2704L8834,2701L8834,2696L8839,2696L8839,2698L8840,2701L8838,2702L8838,2702L8838,2702z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3073,3328L3075,3328L3075,3349L3073,3351L3073,3354L3071,3354L3073,3359L3073,3364L3071,3369L3071,3374L3080,3374L3082,3377L3095,3377L3099,3379L3106,3379L3106,3377L3108,3377L3108,3379L3110,3377L3110,3374L3114,3374L3114,3372L3116,3374L3116,3377L3121,3379L3129,3379L3134,3384L3134,3390L3136,3390L3136,3392L3138,3395L3136,3395L3136,3400L3138,3405L3138,3415L3140,3415L3138,3418L3140,3423L3140,3425L3142,3425L3142,3435L3158,3435L3158,3433L3164,3430L3166,3430L3171,3433L3175,3438L3173,3438L3173,3446L3175,3446L3175,3451L3173,3451L3173,3458L3168,3469L3168,3471L3171,3474L3168,3479L3166,3479L3166,3481L3164,3484L3164,3512L3162,3514L3158,3522L3155,3522L3155,3527L3151,3527L3151,3530L3147,3532L3142,3532L3142,3535L3138,3537L3138,3545L3136,3545L3134,3548L3129,3548L3129,3545L3121,3545L3119,3548L3119,3550L3116,3553L3114,3553L3112,3550L3110,3550L3110,3548L3108,3550L3103,3550L3103,3548L3099,3548L3097,3550L3090,3550L3090,3548L3086,3548L3082,3545L3077,3545L3075,3543L3056,3543L3056,3545L3054,3545L3054,3537L3056,3537L3058,3535L3058,3532L3060,3532L3060,3530L3062,3530L3064,3522L3067,3522L3067,3520L3064,3520L3064,3514L3067,3512L3067,3509L3069,3504L3071,3504L3075,3502L3073,3502L3073,3499L3075,3499L3075,3494L3077,3494L3077,3492L3084,3484L3082,3484L3082,3481L3080,3481L3080,3479L3077,3476L3077,3474L3075,3471L3073,3471L3069,3469L3060,3469L3058,3463L3051,3463L3049,3461L3047,3461L3045,3458L3043,3458L3041,3456L3034,3453L3028,3446L3015,3438L3015,3435L3012,3435L3012,3438L3006,3438L3002,3435L2999,3435L2999,3433L2993,3433L2991,3430L2986,3430L2986,3428L2984,3423L2982,3423L2978,3418L2976,3418L2971,3412L2967,3412L2967,3410L2963,3407L2963,3405L2960,3405L2960,3402L2958,3402L2958,3400L2956,3397L2956,3395L2952,3390L2952,3387L2950,3387L2950,3384L2947,3384L2943,3379L2941,3379L2941,3377L2943,3374L2945,3367L2945,3361L2950,3351L2952,3339L2952,3323L2954,3321L2956,3316L2963,3308L2963,3303L2965,3295L2967,3293L2978,3293L2993,3288L3002,3288L3004,3285L3012,3282L3032,3282L3038,3285L3041,3285L3062,3298L3064,3298L3067,3300L3067,3316L3069,3316L3069,3318L3071,3321L3071,3328L3073,3328L3073,3328L3073,3328z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2586,2658L2588,2655L2592,2655L2592,2653L2594,2653L2599,2655L2599,2658L2605,2658L2605,2663L2607,2663L2607,2665L2610,2665L2610,2663L2612,2665L2616,2668L2616,2675L2618,2678L2618,2683L2620,2683L2620,2686L2625,2686L2631,2693L2636,2693L2638,2696L2638,2698L2640,2698L2640,2701L2642,2704L2640,2704L2640,2709L2642,2711L2646,2714L2646,2711L2651,2711L2651,2714L2653,2721L2651,2724L2651,2729L2655,2729L2657,2732L2657,2734L2659,2732L2664,2732L2666,2729L2670,2732L2672,2732L2675,2734L2679,2729L2685,2729L2685,2726L2690,2721L2690,2724L2696,2724L2698,2726L2698,2729L2705,2729L2707,2726L2709,2726L2714,2724L2718,2729L2720,2729L2720,2732L2722,2732L2726,2734L2726,2732L2729,2732L2729,2734L2731,2734L2731,2737L2733,2737L2733,2739L2735,2739L2735,2742L2726,2760L2724,2760L2722,2767L2718,2772L2718,2775L2720,2777L2724,2777L2724,2775L2729,2775L2733,2780L2733,2785L2735,2788L2739,2788L2739,2790L2737,2793L2731,2793L2729,2790L2729,2788L2726,2785L2724,2785L2724,2788L2714,2788L2714,2790L2711,2795L2709,2795L2707,2793L2705,2793L2703,2795L2698,2795L2692,2798L2685,2798L2679,2806L2675,2806L2675,2808L2672,2806L2672,2808L2670,2808L2670,2811L2668,2813L2664,2816L2662,2818L2657,2818L2657,2826L2655,2828L2655,2839L2653,2841L2651,2841L2651,2844L2649,2849L2649,2857L2651,2859L2651,2864L2649,2864L2649,2867L2644,2867L2638,2872L2633,2877L2631,2882L2631,2885L2633,2885L2633,2892L2629,2892L2629,2895L2627,2897L2627,2900L2629,2900L2629,2902L2631,2902L2631,2905L2636,2905L2636,2908L2633,2908L2633,2913L2636,2913L2638,2918L2638,2920L2640,2923L2640,2925L2642,2928L2644,2933L2646,2936L2649,2936L2651,2938L2653,2943L2655,2943L2655,2951L2651,2956L2649,2956L2649,2959L2662,2959L2666,2961L2672,2961L2672,2964L2675,2966L2675,2971L2677,2971L2677,2979L2701,2979L2705,2976L2705,2974L2707,2974L2709,2971L2711,2971L2714,2966L2716,2966L2722,2959L2722,2964L2720,2964L2720,3010L2724,3010L2724,3012L2733,3012L2735,3010L2739,3010L2739,3007L2744,3010L2748,3010L2750,3012L2759,3027L2759,3030L2763,3035L2763,3038L2765,3040L2765,3043L2768,3043L2768,3045L2772,3055L2774,3058L2774,3061L2772,3063L2772,3066L2770,3068L2768,3068L2768,3071L2765,3071L2765,3096L2763,3096L2763,3099L2765,3101L2765,3109L2768,3109L2768,3112L2770,3114L2770,3117L2765,3117L2765,3122L2761,3124L2759,3127L2759,3132L2757,3135L2755,3135L2755,3142L2759,3147L2761,3147L2761,3150L2759,3150L2757,3152L2757,3155L2752,3163L2759,3180L2761,3180L2761,3183L2763,3183L2763,3180L2765,3180L2770,3183L2770,3186L2765,3188L2763,3191L2763,3198L2761,3198L2759,3201L2757,3206L2752,3211L2750,3211L2746,3216L2748,3216L2750,3219L2750,3224L2746,3229L2742,3229L2742,3234L2744,3239L2744,3242L2737,3249L2733,3249L2733,3252L2731,3252L2729,3249L2726,3249L2726,3252L2722,3247L2720,3247L2718,3244L2711,3239L2711,3237L2709,3237L2707,3234L2705,3234L2705,3231L2701,3231L2701,3226L2698,3224L2698,3219L2696,3219L2696,3216L2694,3216L2692,3214L2685,3214L2685,3211L2683,3211L2683,3208L2681,3208L2679,3206L2675,3203L2672,3201L2672,3198L2668,3198L2668,3196L2659,3196L2659,3193L2655,3193L2655,3191L2653,3191L2646,3188L2646,3186L2642,3186L2642,3183L2636,3183L2631,3180L2625,3173L2620,3170L2616,3170L2616,3168L2614,3168L2614,3165L2612,3165L2610,3163L2607,3163L2599,3157L2597,3157L2597,3155L2594,3155L2594,3152L2592,3150L2592,3147L2590,3147L2584,3140L2584,3137L2581,3137L2579,3135L2575,3132L2573,3129L2573,3127L2566,3119L2568,3119L2562,3112L2562,3106L2560,3106L2560,3104L2562,3101L2562,3104L2564,3104L2564,3096L2566,3096L2566,3091L2564,3091L2564,3086L2562,3086L2560,3081L2558,3081L2558,3076L2555,3076L2555,3073L2553,3071L2553,3068L2549,3061L2549,3055L2547,3055L2547,3053L2545,3053L2542,3048L2540,3048L2540,3045L2538,3043L2538,3033L2529,3022L2525,3022L2525,3017L2523,3010L2523,3007L2521,3002L2519,2999L2519,2997L2516,2997L2516,2994L2512,2989L2508,2976L2508,2971L2506,2969L2506,2966L2503,2964L2503,2959L2501,2956L2501,2951L2499,2948L2497,2948L2497,2943L2495,2941L2495,2933L2493,2933L2493,2931L2488,2925L2488,2923L2488,2920L2480,2910L2477,2910L2477,2908L2475,2905L2475,2902L2473,2900L2473,2897L2471,2897L2471,2890L2469,2890L2469,2887L2467,2887L2467,2882L2464,2879L2462,2879L2462,2877L2460,2877L2460,2872L2456,2869L2451,2864L2447,2864L2445,2862L2445,2859L2441,2859L2430,2851L2428,2851L2425,2846L2428,2844L2428,2841L2430,2841L2430,2844L2434,2844L2434,2828L2432,2828L2430,2826L2430,2823L2428,2823L2425,2821L2428,2818L2428,2816L2430,2816L2430,2813L2428,2813L2425,2811L2423,2806L2421,2806L2421,2803L2423,2803L2423,2790L2425,2790L2428,2785L2430,2785L2432,2783L2432,2780L2434,2780L2434,2777L2436,2777L2436,2775L2441,2770L2443,2770L2445,2767L2445,2765L2449,2765L2449,2762L2451,2762L2454,2765L2454,2777L2456,2777L2451,2783L2445,2783L2447,2785L2447,2790L2449,2788L2449,2790L2447,2793L2447,2798L2451,2798L2451,2795L2454,2793L2456,2793L2456,2790L2460,2795L2464,2798L2469,2798L2469,2795L2471,2795L2471,2798L2473,2798L2473,2803L2475,2808L2480,2813L2484,2813L2486,2816L2486,2813L2490,2808L2490,2803L2495,2803L2495,2800L2497,2800L2497,2790L2499,2785L2499,2780L2501,2780L2501,2777L2503,2775L2503,2772L2506,2770L2506,2762L2508,2762L2508,2767L2510,2765L2510,2760L2512,2760L2512,2757L2514,2757L2514,2755L2516,2749L2521,2749L2521,2747L2542,2739L2545,2739L2568,2721L2571,2716L2581,2704L2581,2701L2584,2701L2586,2691L2586,2686L2588,2681L2588,2683L2592,2683L2590,2678L2590,2673L2592,2673L2592,2670L2590,2668L2590,2665L2586,2665L2586,2658L2586,2658L2586,2658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5098,973L5098,969L5096,969L5096,967L5089,967L5089,964L5092,964L5092,962L5089,962L5089,959L5087,957L5087,954L5089,954L5089,952L5092,949L5089,944L5089,941L5085,941L5085,936L5087,936L5087,931L5083,931L5083,929L5081,926L5079,926L5076,924L5074,924L5074,918L5079,918L5079,916L5081,916L5081,908L5079,901L5079,895L5085,895L5087,893L5087,890L5081,890L5081,888L5085,888L5085,885L5092,885L5105,880L5115,880L5118,878L5126,878L5134,876L5139,876L5135,872L5135,872L5137,870L5139,870L5139,867L5150,867L5150,865L5154,865L5154,862L5163,862L5165,860L5178,860L5183,857L5191,857L5191,860L5193,860L5193,865L5196,865L5196,867L5198,867L5198,872L5202,872L5204,875L5216,875L5218,876L5222,878L5227,874L5230,872L5232,870L5236,870L5237,872L5248,872L5256,875L5313,875L5315,872L5319,872L5323,875L5326,875L5330,878L5332,880L5334,880L5334,890L5336,895L5336,898L5339,901L5339,903L5341,908L5343,911L5345,918L5345,929L5341,931L5334,931L5332,934L5330,934L5328,939L5326,941L5326,944L5330,944L5336,946L5339,949L5339,952L5336,952L5336,959L5334,962L5334,964L5336,967L5339,967L5339,975L5341,977L5343,977L5345,982L5345,985L5347,985L5349,987L5352,987L5352,990L5347,990L5347,992L5349,992L5352,995L5352,997L5347,1003L5341,1003L5336,1008L5334,1008L5334,1010L5330,1010L5330,1013L5328,1013L5315,1028L5313,1028L5310,1031L5310,1033L5313,1036L5313,1043L5315,1043L5317,1046L5317,1048L5313,1048L5308,1046L5306,1046L5302,1043L5293,1043L5293,1041L5289,1036L5276,1036L5271,1033L5267,1036L5265,1036L5265,1038L5258,1038L5256,1036L5245,1036L5243,1038L5241,1038L5239,1041L5239,1043L5237,1043L5237,1041L5235,1041L5232,1043L5230,1043L5230,1041L5232,1041L5230,1038L5230,1036L5228,1036L5226,1033L5224,1033L5224,1031L5217,1031L5215,1033L5215,1036L5209,1036L5209,1033L5204,1033L5204,1028L5202,1026L5198,1026L5198,1018L5189,1018L5185,1015L5180,1015L5178,1018L5176,1018L5170,1010L5174,1010L5174,1005L5172,1005L5172,1008L5163,1008L5161,1005L5159,1005L5157,1003L5150,1003L5152,1005L5154,1010L5148,1010L5148,1013L5141,1013L5141,1008L5139,1005L5135,1005L5133,1003L5131,1003L5135,1000L5137,1000L5137,997L5135,995L5124,995L5115,990L5107,990L5107,987L5105,987L5105,985L5102,982L5098,985L5098,987L5094,987L5096,985L5096,982L5098,982L5098,973L5098,973L5098,973z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4210,1584L4208,1584L4206,1581L4204,1581L4204,1579L4201,1579L4204,1576L4206,1576L4206,1579L4210,1579L4212,1576L4217,1579L4217,1581L4214,1584L4210,1584L4210,1584L4210,1584zM3974,1418L3968,1418L3968,1416L3965,1416L3963,1413L3965,1411L3965,1413L3983,1413L3983,1418L3974,1418L3974,1418L3974,1418zM3900,1395L3898,1395L3896,1397L3892,1397L3890,1395L3890,1393L3887,1393L3887,1390L3894,1390L3896,1393L3900,1393L3900,1395L3900,1395L3900,1395zM3929,1388L3922,1388L3922,1385L3920,1385L3920,1383L3929,1383L3931,1385L3931,1388L3929,1388L3929,1388L3929,1388zM4487,1281L4500,1281L4500,1286L4498,1288L4507,1288L4507,1291L4509,1291L4509,1293L4503,1301L4500,1301L4498,1303L4496,1303L4494,1306L4494,1309L4490,1309L4490,1311L4492,1311L4492,1334L4487,1334L4487,1337L4485,1337L4487,1339L4490,1339L4490,1342L4487,1352L4487,1354L4472,1354L4472,1357L4477,1360L4479,1362L4479,1365L4481,1370L4483,1372L4487,1372L4487,1375L4485,1380L4485,1383L4483,1383L4481,1385L4479,1385L4479,1395L4483,1400L4483,1403L4486,1403L4487,1408L4483,1409L4479,1411L4479,1416L4477,1416L4474,1418L4472,1423L4474,1426L4474,1436L4470,1436L4470,1439L4466,1441L4457,1441L4457,1439L4435,1439L4433,1441L4431,1441L4431,1439L4433,1437L4433,1436L4435,1434L4435,1428L4438,1426L4438,1411L4435,1408L4438,1405L4438,1395L4440,1395L4438,1393L4431,1393L4429,1395L4427,1395L4427,1390L4425,1390L4425,1389L4427,1388L4429,1388L4431,1385L4433,1385L4433,1383L4431,1383L4431,1377L4429,1380L4429,1384L4427,1385L4425,1385L4422,1388L4420,1385L4418,1385L4418,1380L4420,1377L4420,1370L4422,1370L4422,1367L4420,1365L4422,1365L4422,1362L4425,1362L4429,1357L4429,1352L4431,1349L4433,1344L4433,1342L4435,1342L4435,1332L4438,1329L4438,1324L4440,1321L4440,1319L4440,1321L4440,1314L4442,1311L4440,1309L4440,1303L4438,1296L4438,1293L4435,1291L4435,1281L4438,1281L4438,1278L4442,1275L4451,1275L4453,1273L4457,1275L4457,1278L4455,1278L4453,1281L4453,1283L4464,1283L4466,1281L4468,1281L4470,1283L4479,1283L4481,1281L4481,1278L4485,1278L4485,1281L4487,1281L4487,1281L4487,1281z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2852,2061L2852,2063L2850,2063L2843,2066L2841,2066L2841,2063L2824,2063L2822,2066L2820,2063L2817,2063L2815,2066L2815,2053L2813,2053L2813,2051L2815,2046L2828,2046L2833,2048L2854,2048L2859,2051L2859,2056L2856,2056L2852,2061L2852,2061L2852,2061z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6103,1847L6101,1849L6097,1847L6092,1842L6094,1842L6094,1839L6092,1836L6092,1831L6092,1829L6092,1819L6095,1817L6094,1808L6097,1808L6097,1803L6099,1801L6099,1798L6103,1798L6103,1796L6105,1796L6105,1798L6107,1798L6107,1803L6114,1803L6114,1811L6112,1814L6112,1816L6110,1816L6112,1816L6112,1824L6114,1824L6114,1836L6112,1839L6112,1842L6107,1847L6103,1847L6103,1847L6103,1847z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8204,1553L8206,1556L8206,1561L8204,1561L8202,1564L8198,1564L8195,1566L8193,1566L8193,1564L8189,1564L8189,1566L8187,1566L8187,1564L8185,1564L8185,1561L8189,1558L8191,1556L8198,1556L8200,1553L8204,1553L8204,1553L8204,1553zM8193,1452L8191,1455L8185,1451L8186,1445L8188,1445L8188,1442L8191,1441L8196,1439L8198,1442L8204,1443L8204,1439L8192,1432L8194,1430L8199,1432L8201,1431L8198,1426L8200,1426L8200,1423L8198,1423L8198,1421L8195,1421L8195,1416L8198,1416L8199,1415L8200,1413L8200,1411L8202,1411L8202,1408L8204,1408L8206,1405L8206,1403L8208,1403L8208,1400L8211,1400L8213,1398L8241,1398L8243,1395L8243,1393L8245,1393L8245,1388L8247,1390L8254,1403L8254,1405L8265,1418L8265,1421L8271,1428L8273,1434L8273,1436L8276,1439L8276,1449L8278,1449L8278,1451L8276,1451L8276,1464L8273,1464L8276,1472L8276,1474L8278,1474L8278,1472L8280,1472L8280,1474L8278,1485L8278,1490L8271,1497L8271,1500L8269,1502L8267,1502L8263,1505L8256,1505L8256,1502L8252,1502L8249,1507L8250,1510L8253,1508L8256,1507L8257,1510L8256,1513L8252,1515L8248,1515L8246,1509L8243,1510L8237,1510L8237,1507L8230,1507L8226,1510L8226,1507L8224,1510L8226,1513L8230,1513L8230,1515L8228,1515L8226,1520L8224,1518L8224,1513L8219,1513L8219,1518L8221,1518L8221,1520L8224,1520L8221,1520L8219,1525L8217,1525L8215,1523L8213,1524L8211,1523L8217,1518L8217,1515L8215,1515L8211,1518L8208,1520L8208,1523L8206,1523L8206,1525L8202,1525L8202,1520L8198,1530L8195,1530L8195,1528L8193,1528L8193,1523L8191,1523L8189,1520L8189,1515L8191,1518L8191,1520L8193,1520L8193,1515L8191,1513L8191,1510L8189,1510L8189,1507L8187,1502L8191,1502L8189,1502L8191,1502L8191,1495L8193,1495L8193,1490L8200,1490L8200,1487L8193,1487L8198,1482L8202,1482L8202,1477L8198,1477L8198,1474L8200,1474L8195,1469L8195,1467L8193,1462L8193,1452L8193,1452L8193,1452z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5282,1115L5282,1112L5284,1112L5289,1107L5289,1105L5291,1102L5293,1102L5293,1097L5295,1094L5297,1094L5297,1092L5300,1092L5302,1089L5310,1089L5315,1087L5317,1084L5319,1084L5321,1082L5323,1082L5323,1079L5328,1079L5328,1082L5343,1082L5347,1084L5367,1084L5367,1087L5371,1087L5371,1089L5373,1092L5375,1092L5378,1089L5380,1089L5380,1087L5382,1087L5382,1084L5399,1084L5399,1082L5408,1082L5412,1077L5417,1074L5425,1074L5430,1077L5432,1077L5436,1082L5436,1087L5438,1089L5438,1092L5440,1092L5440,1094L5449,1105L5451,1105L5453,1107L5453,1110L5456,1112L5458,1112L5460,1115L5462,1115L5462,1120L5464,1122L5464,1125L5466,1125L5466,1133L5464,1135L5462,1140L5462,1150L5464,1156L5464,1161L5462,1161L5464,1163L5464,1166L5466,1166L5466,1168L5469,1168L5469,1171L5475,1171L5477,1173L5482,1173L5482,1171L5492,1166L5503,1166L5503,1168L5505,1168L5505,1181L5503,1184L5503,1186L5488,1186L5488,1181L5490,1181L5488,1179L5486,1179L5484,1181L5484,1184L5485,1188L5484,1196L5477,1201L5477,1214L5475,1217L5475,1222L5471,1222L5466,1219L5462,1219L5460,1217L5458,1217L5458,1212L5456,1212L5456,1214L5451,1214L5451,1212L5443,1212L5440,1209L5434,1209L5432,1207L5430,1209L5421,1209L5417,1212L5408,1212L5408,1214L5406,1214L5401,1217L5397,1222L5395,1222L5393,1224L5384,1224L5382,1222L5365,1222L5365,1219L5362,1219L5360,1222L5347,1222L5341,1219L5334,1219L5334,1217L5326,1217L5323,1219L5319,1219L5317,1217L5315,1217L5317,1214L5317,1212L5321,1212L5321,1209L5317,1209L5313,1207L5310,1207L5310,1204L5308,1204L5308,1201L5306,1201L5306,1199L5304,1196L5306,1196L5308,1194L5310,1194L5310,1196L5313,1196L5313,1194L5310,1191L5306,1191L5306,1189L5304,1189L5302,1191L5300,1191L5300,1194L5297,1196L5295,1196L5293,1194L5293,1191L5282,1191L5282,1189L5280,1189L5280,1186L5274,1186L5274,1184L5280,1184L5280,1181L5276,1181L5276,1179L5278,1176L5278,1173L5271,1173L5258,1163L5258,1156L5256,1156L5254,1153L5254,1150L5250,1150L5248,1148L5245,1148L5245,1145L5243,1143L5245,1143L5250,1140L5252,1140L5252,1143L5256,1143L5256,1140L5258,1140L5258,1138L5265,1138L5265,1140L5267,1140L5269,1138L5269,1135L5274,1130L5274,1128L5276,1125L5278,1125L5280,1122L5278,1122L5278,1120L5280,1120L5282,1117L5282,1115L5282,1115L5282,1115z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5538,2719L5538,2729L5527,2729L5527,2726L5525,2726L5523,2729L5518,2732L5514,2726L5512,2726L5512,2742L5503,2742L5501,2744L5499,2742L5497,2744L5497,2739L5495,2737L5488,2737L5488,2742L5488,2739L5484,2739L5482,2734L5484,2729L5486,2726L5490,2726L5490,2721L5492,2721L5492,2719L5490,2719L5490,2711L5495,2706L5495,2704L5497,2701L5499,2701L5503,2696L5508,2696L5510,2693L5510,2696L5512,2696L5512,2698L5514,2698L5518,2696L5518,2693L5521,2693L5523,2691L5523,2688L5525,2686L5527,2686L5527,2688L5529,2696L5533,2696L5536,2698L5536,2701L5538,2706L5538,2719L5538,2719L5538,2719z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4324,2153L4328,2158L4330,2158L4333,2160L4335,2160L4335,2163L4339,2168L4341,2168L4341,2181L4343,2181L4347,2183L4347,2186L4349,2188L4349,2191L4347,2193L4349,2193L4349,2201L4347,2201L4347,2206L4351,2211L4351,2214L4353,2216L4355,2214L4360,2214L4360,2216L4362,2216L4362,2219L4360,2219L4362,2222L4362,2224L4364,2224L4366,2227L4366,2229L4364,2232L4364,2242L4366,2245L4357,2245L4357,2247L4353,2247L4351,2245L4347,2245L4344,2247L4342,2247L4338,2250L4338,2247L4331,2247L4331,2245L4327,2245L4325,2242L4321,2242L4321,2245L4318,2245L4318,2237L4258,2237L4253,2242L4247,2245L4232,2245L4225,2247L4217,2247L4214,2245L4214,2242L4217,2242L4217,2239L4214,2239L4214,2229L4217,2229L4217,2222L4243,2222L4243,2214L4258,2214L4258,2211L4260,2211L4260,2206L4262,2206L4262,2209L4264,2209L4266,2211L4271,2211L4271,2214L4275,2214L4277,2216L4282,2219L4288,2219L4288,2216L4297,2216L4297,2214L4299,2214L4299,2211L4297,2211L4297,2209L4295,2209L4292,2206L4290,2209L4286,2209L4286,2211L4282,2211L4282,2209L4279,2209L4279,2206L4277,2206L4276,2204L4272,2204L4273,2206L4270,2204L4270,2201L4266,2201L4261,2199L4259,2201L4253,2201L4250,2204L4251,2206L4221,2206L4218,2204L4218,2201L4216,2201L4216,2194L4214,2194L4214,2188L4211,2188L4211,2186L4209,2181L4207,2178L4205,2178L4205,2173L4203,2173L4203,2171L4200,2171L4198,2170L4196,2171L4196,2173L4194,2168L4198,2168L4203,2166L4203,2163L4205,2163L4209,2158L4211,2153L4214,2150L4214,2148L4218,2143L4222,2127L4222,2125L4224,2122L4224,2120L4227,2120L4227,2112L4229,2112L4231,2109L4233,2109L4233,2112L4248,2112L4250,2109L4261,2109L4263,2107L4263,2104L4266,2107L4283,2107L4292,2117L4292,2120L4296,2125L4300,2122L4300,2125L4305,2125L4309,2127L4311,2130L4313,2137L4313,2140L4315,2143L4315,2145L4320,2145L4322,2148L4322,2150L4324,2150L4324,2153L4324,2153L4324,2153z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4330,2407L4321,2405L4319,2401L4334,2403L4331,2400L4329,2400L4327,2398L4323,2395L4321,2392L4323,2392L4323,2385L4321,2385L4321,2382L4316,2382L4314,2380L4312,2375L4318,2375L4321,2372L4323,2372L4323,2369L4318,2369L4316,2372L4314,2372L4314,2362L4316,2362L4316,2359L4312,2359L4312,2355L4316,2354L4316,2357L4318,2357L4318,2354L4321,2354L4321,2349L4323,2347L4325,2347L4325,2349L4325,2347L4329,2344L4329,2341L4331,2339L4331,2336L4334,2329L4336,2329L4342,2326L4344,2329L4351,2326L4351,2324L4370,2324L4370,2326L4379,2336L4381,2341L4383,2344L4383,2347L4386,2347L4386,2349L4383,2349L4383,2354L4388,2354L4388,2362L4390,2367L4386,2372L4383,2377L4383,2380L4390,2380L4390,2377L4392,2377L4392,2375L4394,2372L4396,2375L4394,2382L4394,2385L4388,2385L4388,2395L4386,2398L4383,2398L4383,2400L4379,2405L4377,2405L4373,2410L4373,2413L4370,2413L4370,2415L4368,2415L4366,2418L4366,2423L4364,2423L4364,2426L4362,2426L4362,2423L4357,2423L4357,2420L4355,2420L4353,2418L4351,2418L4340,2413L4338,2410L4334,2410L4334,2408L4330,2407L4330,2407L4330,2407z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5202,1087L5202,1089L5174,1089L5167,1087L5163,1082L5157,1082L5157,1079L5154,1077L5152,1077L5152,1071L5150,1071L5150,1069L5148,1069L5152,1064L5152,1059L5154,1059L5154,1056L5157,1054L5174,1054L5178,1048L5183,1048L5185,1046L5185,1043L5187,1043L5187,1041L5189,1038L5191,1038L5196,1033L5209,1033L5209,1036L5215,1036L5215,1033L5217,1031L5224,1031L5224,1033L5226,1033L5228,1036L5230,1036L5230,1038L5232,1041L5230,1041L5230,1043L5232,1043L5235,1041L5237,1041L5237,1043L5239,1043L5239,1041L5241,1038L5243,1038L5245,1036L5256,1036L5258,1038L5265,1038L5265,1036L5267,1036L5271,1033L5276,1036L5289,1036L5293,1041L5293,1043L5302,1043L5306,1046L5308,1046L5308,1048L5306,1048L5306,1051L5304,1054L5304,1056L5300,1061L5297,1061L5297,1069L5289,1069L5287,1071L5284,1071L5284,1069L5282,1066L5278,1064L5252,1064L5248,1069L5248,1071L5245,1071L5245,1074L5239,1074L5239,1077L5230,1077L5230,1074L5224,1074L5224,1077L5222,1077L5222,1079L5204,1079L5204,1082L5202,1082L5202,1087L5202,1087L5202,1087z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5124,1122L5124,1120L5131,1120L5133,1117L5133,1120L5135,1120L5135,1122L5137,1125L5139,1130L5141,1133L5139,1130L5133,1130L5133,1133L5128,1133L5128,1135L5126,1138L5120,1140L5115,1140L5115,1145L5118,1145L5118,1153L5111,1153L5107,1156L5107,1163L5105,1166L5102,1166L5100,1163L5094,1163L5094,1166L5092,1166L5087,1161L5087,1158L5085,1158L5085,1161L5083,1161L5083,1163L5070,1163L5070,1166L5059,1166L5059,1163L5064,1163L5064,1161L5066,1161L5068,1158L5066,1156L5064,1156L5059,1150L5059,1148L5055,1148L5059,1143L5061,1143L5061,1140L5053,1140L5053,1138L5055,1135L5057,1135L5061,1133L5061,1130L5072,1130L5072,1133L5085,1133L5092,1130L5094,1130L5094,1128L5098,1125L5115,1125L5120,1122L5124,1122L5124,1122L5124,1122z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6100,2308L6101,2303L6101,2288L6103,2288L6103,2285L6099,2285L6099,2280L6101,2275L6103,2273L6103,2270L6105,2270L6105,2265L6094,2260L6088,2260L6086,2262L6084,2262L6084,2267L6081,2270L6073,2275L6071,2275L6064,2278L6062,2278L6062,2275L6060,2275L6058,2278L6055,2278L6055,2280L6053,2280L6047,2283L6036,2283L6034,2280L6029,2280L6023,2283L6021,2285L6019,2285L6019,2288L6003,2288L6001,2285L5997,2285L5991,2288L5991,2290L5988,2290L5988,2293L5986,2293L5980,2298L5978,2301L5967,2301L5967,2298L5956,2298L5954,2295L5952,2295L5949,2298L5945,2301L5943,2303L5939,2303L5939,2306L5936,2306L5930,2311L5926,2311L5923,2308L5921,2308L5921,2311L5910,2311L5910,2308L5908,2308L5900,2298L5897,2298L5895,2293L5889,2285L5889,2280L5887,2280L5882,2275L5882,2278L5880,2278L5880,2280L5878,2283L5878,2285L5876,2290L5874,2290L5874,2293L5869,2298L5867,2303L5867,2308L5869,2308L5869,2313L5871,2313L5871,2318L5874,2318L5874,2321L5876,2321L5876,2326L5878,2326L5880,2329L5882,2329L5882,2336L5884,2336L5887,2339L5887,2344L5889,2344L5891,2347L5893,2347L5904,2357L5986,2390L6014,2390L6006,2400L6001,2403L5958,2454L5958,2456L5932,2489L5930,2489L5930,2492L5900,2489L5900,2492L5891,2492L5889,2494L5884,2494L5884,2497L5880,2497L5880,2500L5878,2500L5878,2502L5876,2502L5876,2505L5874,2505L5874,2510L5871,2510L5869,2512L5861,2512L5858,2515L5850,2515L5848,2517L5845,2517L5845,2522L5841,2525L5830,2548L5819,2558L5819,2681L5835,2704L5835,2706L5837,2706L5837,2704L5839,2704L5839,2701L5845,2688L5848,2686L5850,2681L5856,2673L5858,2668L5861,2668L5861,2665L5863,2663L5863,2660L5865,2660L5882,2640L5882,2637L5884,2637L5884,2635L5893,2624L5897,2622L5902,2617L5906,2614L5906,2612L5908,2612L5913,2607L5919,2602L5919,2599L5928,2594L5930,2591L5932,2591L5932,2589L5934,2589L5936,2586L5939,2586L5941,2584L5945,2581L5947,2581L5949,2579L5954,2576L5958,2571L5960,2571L5965,2566L5965,2563L5969,2561L5984,2543L5986,2538L5988,2538L5988,2535L5991,2535L5993,2533L5993,2530L5997,2528L6001,2522L6001,2520L6006,2515L6010,2507L6012,2507L6012,2505L6014,2505L6014,2502L6016,2500L6016,2497L6019,2494L6019,2492L6021,2492L6023,2487L6023,2484L6025,2484L6029,2477L6034,2471L6036,2464L6038,2461L6042,2451L6043,2449L6045,2448L6045,2438L6049,2431L6049,2428L6051,2423L6053,2420L6055,2415L6060,2410L6060,2408L6062,2403L6064,2400L6064,2392L6068,2387L6071,2387L6071,2385L6073,2385L6073,2380L6075,2380L6075,2377L6079,2372L6079,2369L6081,2362L6084,2359L6084,2357L6086,2357L6088,2354L6088,2349L6090,2349L6090,2347L6092,2344L6092,2336L6094,2324L6094,2313L6097,2313L6100,2308L6100,2308L6100,2308z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5453,3596L5449,3601L5449,3604L5445,3609L5443,3609L5440,3614L5440,3616L5436,3616L5436,3619L5432,3619L5432,3622L5434,3622L5434,3624L5436,3627L5436,3632L5438,3632L5440,3634L5440,3639L5443,3642L5445,3642L5447,3645L5447,3647L5449,3647L5451,3652L5460,3652L5462,3655L5462,3650L5464,3650L5466,3642L5466,3639L5469,3639L5469,3637L5477,3637L5482,3634L5484,3634L5488,3632L5490,3632L5490,3629L5492,3629L5490,3627L5490,3624L5492,3622L5492,3619L5495,3619L5495,3614L5499,3614L5499,3609L5497,3604L5497,3601L5492,3601L5486,3596L5484,3594L5484,3591L5482,3591L5477,3586L5471,3586L5471,3588L5469,3588L5466,3591L5464,3591L5464,3588L5460,3594L5460,3596L5453,3596L5453,3596L5453,3596zM5360,3494L5365,3494L5365,3497L5371,3497L5373,3494L5375,3494L5375,3492L5378,3492L5378,3494L5386,3494L5386,3492L5391,3492L5393,3489L5393,3486L5395,3484L5399,3471L5399,3461L5401,3461L5404,3458L5408,3458L5410,3456L5417,3456L5417,3451L5419,3451L5423,3446L5427,3446L5427,3438L5430,3433L5430,3425L5434,3425L5434,3423L5436,3420L5440,3418L5443,3415L5447,3415L5447,3410L5453,3410L5458,3405L5458,3402L5464,3395L5464,3392L5466,3390L5477,3390L5482,3387L5484,3384L5486,3384L5486,3382L5488,3377L5499,3377L5505,3374L5508,3374L5510,3377L5512,3377L5523,3382L5533,3382L5536,3379L5540,3379L5542,3382L5549,3382L5551,3384L5557,3405L5557,3420L5559,3420L5559,3423L5562,3423L5562,3428L5566,3433L5566,3441L5570,3451L5570,3492L5568,3494L5568,3499L5566,3502L5564,3499L5562,3499L5559,3497L5553,3492L5544,3502L5544,3504L5542,3507L5542,3509L5538,3514L5538,3517L5536,3517L5536,3525L5538,3525L5538,3527L5540,3527L5544,3537L5549,3543L5553,3543L5557,3545L5570,3545L5570,3543L5568,3543L5568,3535L5570,3527L5572,3527L5575,3530L5594,3530L5594,3537L5590,3545L5590,3550L5588,3550L5588,3558L5585,3563L5585,3573L5583,3576L5583,3578L5581,3578L5581,3586L5577,3588L5570,3596L5566,3596L5566,3599L5562,3599L5562,3601L5557,3604L5557,3606L5555,3609L5553,3609L5553,3611L5551,3611L5546,3622L5544,3622L5542,3629L5542,3632L5540,3632L5538,3634L5538,3637L5536,3642L5531,3647L5521,3668L5512,3678L5510,3678L5510,3680L5505,3680L5505,3683L5503,3683L5499,3688L5495,3690L5495,3693L5492,3696L5490,3701L5484,3706L5475,3716L5473,3716L5469,3721L5466,3721L5462,3726L5460,3726L5453,3734L5451,3734L5447,3736L5443,3741L5440,3741L5436,3747L5434,3747L5432,3749L5427,3749L5423,3752L5421,3754L5419,3754L5417,3757L5412,3754L5395,3754L5395,3757L5393,3759L5393,3762L5395,3762L5395,3764L5386,3764L5384,3762L5373,3762L5373,3764L5371,3769L5360,3769L5360,3767L5358,3767L5339,3762L5334,3762L5332,3764L5330,3764L5330,3767L5319,3767L5315,3764L5297,3764L5297,3767L5295,3767L5291,3769L5291,3772L5289,3775L5287,3775L5284,3777L5282,3775L5276,3775L5276,3777L5269,3777L5269,3775L5261,3775L5261,3777L5250,3777L5250,3780L5248,3780L5248,3782L5243,3785L5241,3785L5237,3790L5235,3790L5235,3787L5224,3787L5224,3785L5222,3782L5217,3782L5219,3780L5217,3777L5213,3777L5211,3775L5204,3775L5204,3767L5202,3767L5202,3764L5196,3764L5196,3767L5193,3767L5193,3769L5196,3775L5193,3775L5191,3772L5189,3764L5191,3759L5193,3759L5193,3754L5189,3747L5189,3744L5187,3744L5185,3741L5185,3736L5183,3731L5178,3731L5176,3724L5178,3724L5180,3721L5183,3724L5185,3724L5189,3718L5189,3716L5191,3713L5191,3706L5189,3703L5189,3693L5187,3690L5187,3688L5178,3678L5178,3675L5176,3673L5176,3670L5174,3670L5174,3668L5170,3662L5167,3655L5165,3652L5165,3650L5161,3645L5161,3642L5159,3639L5159,3634L5157,3629L5157,3627L5154,3624L5154,3616L5152,3616L5152,3611L5150,3611L5148,3604L5148,3601L5144,3596L5142,3591L5139,3588L5139,3586L5144,3583L5144,3581L5146,3581L5146,3583L5148,3581L5148,3576L5150,3571L5150,3568L5157,3568L5157,3571L5159,3571L5159,3576L5161,3576L5161,3573L5163,3573L5163,3576L5165,3578L5165,3581L5163,3581L5163,3583L5165,3591L5167,3588L5170,3588L5170,3591L5174,3591L5178,3594L5183,3594L5183,3596L5191,3596L5200,3594L5202,3594L5206,3596L5209,3596L5211,3599L5213,3599L5215,3596L5215,3591L5222,3591L5222,3588L5224,3586L5224,3583L5232,3583L5237,3581L5237,3461L5241,3466L5243,3466L5250,3474L5252,3479L5254,3481L5254,3484L5256,3486L5256,3494L5258,3497L5261,3507L5258,3509L5258,3512L5256,3512L5256,3514L5254,3514L5254,3527L5256,3530L5258,3530L5258,3527L5263,3527L5265,3530L5274,3530L5274,3527L5276,3527L5278,3530L5284,3530L5284,3527L5287,3527L5287,3522L5293,3522L5297,3517L5297,3514L5300,3512L5302,3512L5306,3507L5310,3504L5310,3502L5313,3502L5313,3492L5315,3492L5315,3486L5317,3481L5319,3479L5321,3479L5326,3476L5328,3476L5332,3479L5334,3479L5336,3481L5339,3481L5339,3484L5341,3484L5347,3492L5347,3489L5354,3489L5354,3492L5356,3492L5358,3494L5360,3494L5360,3494L5360,3494z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4249,1745L4245,1745L4243,1742L4243,1734L4245,1734L4245,1729L4247,1729L4253,1732L4253,1742L4249,1742L4249,1745L4249,1745L4249,1745zM4219,1737L4217,1734L4217,1732L4214,1732L4214,1729L4212,1724L4217,1724L4221,1722L4223,1722L4225,1719L4227,1719L4230,1717L4232,1717L4232,1719L4230,1719L4230,1722L4227,1724L4225,1729L4225,1732L4223,1732L4223,1734L4221,1734L4219,1737L4219,1737L4219,1737zM4286,1727L4287,1724L4287,1721L4289,1719L4289,1716L4292,1714L4292,1712L4297,1712L4297,1724L4295,1724L4295,1729L4290,1729L4284,1734L4279,1734L4286,1727L4286,1727L4286,1727zM4187,1722L4185,1722L4184,1717L4182,1712L4182,1709L4188,1709L4188,1717L4187,1722L4187,1722L4187,1722zM4299,1709L4297,1709L4297,1704L4299,1701L4308,1696L4308,1704L4305,1704L4303,1706L4299,1706L4299,1709L4299,1709L4299,1709zM4719,1383L4719,1380L4715,1380L4715,1377L4717,1375L4719,1375L4721,1372L4726,1372L4726,1375L4719,1383L4719,1383L4719,1383zM4747,1360L4747,1357L4752,1352L4756,1349L4758,1349L4765,1347L4767,1347L4769,1349L4769,1352L4773,1352L4773,1349L4775,1352L4778,1352L4778,1354L4771,1362L4771,1365L4767,1367L4765,1367L4765,1365L4758,1365L4758,1362L4756,1360L4758,1360L4756,1357L4752,1360L4747,1360L4747,1360L4747,1360zM4799,1349L4795,1347L4793,1347L4791,1346L4791,1347L4788,1347L4786,1342L4797,1342L4801,1347L4801,1349L4799,1349L4799,1349L4799,1349zM4487,1281L4485,1281L4485,1278L4481,1278L4481,1281L4479,1283L4470,1283L4468,1281L4466,1281L4464,1283L4453,1283L4453,1281L4455,1278L4457,1278L4457,1275L4453,1273L4451,1275L4442,1275L4438,1278L4438,1281L4435,1281L4434,1276L4435,1274L4440,1272L4436,1271L4438,1268L4440,1267L4433,1265L4434,1263L4436,1262L4438,1261L4438,1258L4440,1255L4435,1255L4431,1260L4429,1260L4429,1258L4433,1252L4427,1252L4429,1250L4427,1250L4427,1247L4422,1247L4425,1245L4425,1240L4431,1240L4433,1237L4431,1237L4431,1235L4440,1235L4448,1232L4451,1232L4453,1227L4459,1222L4461,1219L4464,1219L4464,1222L4477,1222L4477,1224L4479,1224L4479,1227L4516,1227L4518,1224L4520,1224L4522,1227L4535,1227L4535,1230L4546,1230L4548,1232L4568,1232L4570,1230L4585,1230L4589,1232L4591,1232L4593,1235L4598,1235L4598,1232L4611,1232L4613,1235L4626,1235L4630,1232L4632,1232L4632,1235L4639,1235L4641,1237L4643,1237L4643,1240L4641,1240L4641,1245L4643,1245L4645,1242L4648,1245L4654,1245L4654,1247L4661,1247L4661,1250L4665,1252L4669,1252L4671,1250L4674,1250L4676,1252L4678,1252L4680,1255L4700,1255L4700,1250L4704,1250L4706,1252L4713,1252L4713,1255L4719,1255L4721,1258L4721,1263L4734,1263L4736,1265L4741,1265L4745,1263L4745,1265L4749,1265L4749,1268L4756,1268L4756,1265L4762,1263L4769,1263L4769,1268L4773,1268L4773,1270L4767,1270L4767,1273L4769,1273L4769,1275L4771,1275L4771,1281L4769,1283L4765,1286L4762,1286L4762,1288L4756,1291L4752,1291L4745,1296L4743,1296L4741,1298L4741,1301L4736,1301L4734,1303L4723,1303L4723,1306L4715,1306L4710,1309L4708,1309L4708,1311L4706,1311L4702,1316L4700,1316L4702,1319L4706,1319L4706,1321L4697,1324L4695,1326L4693,1329L4691,1334L4689,1337L4687,1337L4682,1342L4682,1344L4676,1352L4671,1360L4671,1362L4674,1372L4680,1380L4684,1380L4684,1383L4687,1383L4687,1385L4684,1385L4682,1388L4680,1388L4680,1390L4678,1390L4674,1393L4671,1393L4671,1395L4667,1398L4661,1413L4656,1418L4658,1418L4658,1421L4661,1421L4656,1423L4643,1423L4641,1426L4639,1426L4639,1428L4635,1428L4635,1431L4632,1434L4630,1434L4630,1439L4628,1441L4628,1444L4626,1444L4626,1446L4624,1449L4622,1449L4622,1451L4619,1451L4619,1449L4617,1446L4611,1446L4609,1449L4609,1451L4600,1451L4600,1449L4589,1449L4587,1451L4583,1451L4581,1449L4578,1449L4578,1451L4576,1449L4570,1449L4565,1451L4557,1451L4557,1454L4552,1456L4550,1459L4548,1459L4546,1456L4544,1459L4539,1459L4533,1467L4533,1469L4531,1469L4531,1472L4526,1474L4520,1472L4520,1469L4513,1469L4513,1467L4507,1459L4509,1459L4509,1454L4503,1454L4503,1449L4505,1446L4485,1434L4479,1434L4479,1436L4477,1436L4474,1434L4474,1426L4472,1423L4474,1418L4477,1416L4479,1416L4479,1411L4487,1408L4486,1406L4486,1403L4483,1403L4483,1400L4479,1395L4479,1385L4481,1385L4483,1383L4485,1383L4485,1380L4487,1375L4487,1372L4483,1372L4481,1370L4479,1365L4479,1362L4477,1360L4472,1357L4472,1354L4487,1354L4487,1352L4490,1342L4490,1339L4487,1339L4485,1337L4487,1337L4487,1334L4492,1334L4492,1311L4490,1311L4490,1309L4494,1309L4494,1306L4496,1303L4498,1303L4500,1301L4503,1301L4509,1293L4509,1291L4507,1291L4507,1288L4498,1288L4500,1286L4500,1281L4487,1281L4487,1281L4487,1281z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6898,2423L6898,2398L6896,2392L6896,2390L6898,2390L6898,2382L6900,2372L6902,2369L6902,2364L6900,2362L6900,2359L6902,2357L6905,2357L6905,2354L6907,2352L6907,2347L6905,2344L6907,2344L6908,2340L6906,2338L6900,2336L6900,2333L6907,2328L6911,2328L6924,2347L6926,2347L6926,2349L6928,2357L6928,2359L6931,2359L6937,2367L6937,2372L6935,2372L6935,2375L6939,2375L6939,2372L6941,2375L6941,2377L6943,2382L6941,2385L6941,2387L6943,2387L6946,2390L6948,2395L6950,2398L6950,2403L6952,2403L6952,2408L6954,2408L6954,2418L6956,2423L6954,2423L6954,2431L6952,2433L6952,2436L6950,2438L6950,2441L6948,2441L6941,2446L6939,2449L6933,2451L6931,2451L6928,2454L6924,2454L6924,2456L6922,2456L6920,2459L6915,2456L6911,2456L6905,2449L6905,2443L6902,2441L6902,2436L6900,2433L6900,2431L6898,2428L6898,2423L6898,2423L6898,2423z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3108,2584L3103,2579L3103,2576L3101,2571L3099,2571L3095,2561L3093,2558L3093,2551L3090,2551L3090,2540L3086,2543L3084,2543L3082,2540L3080,2540L3080,2535L3077,2533L3075,2533L3075,2528L3073,2528L3073,2525L3069,2520L3069,2512L3071,2512L3071,2510L3075,2500L3075,2497L3073,2494L3073,2492L3075,2489L3080,2487L3082,2487L3086,2489L3088,2487L3088,2484L3090,2484L3092,2482L3088,2477L3090,2477L3090,2471L3093,2469L3093,2466L3094,2460L3097,2456L3112,2456L3125,2461L3129,2461L3127,2459L3129,2459L3129,2456L3145,2456L3147,2459L3149,2459L3149,2456L3164,2456L3173,2459L3177,2459L3181,2461L3181,2471L3180,2472L3179,2474L3175,2479L3173,2479L3173,2482L3168,2487L3168,2500L3171,2500L3171,2502L3168,2502L3168,2507L3171,2507L3171,2520L3173,2520L3173,2522L3177,2528L3179,2528L3181,2533L3181,2538L3179,2543L3177,2545L3177,2548L3175,2548L3177,2551L3177,2561L3175,2561L3175,2563L3173,2566L3173,2568L3171,2568L3171,2571L3168,2573L3164,2576L3162,2576L3162,2571L3158,2571L3155,2568L3151,2568L3134,2573L3129,2571L3129,2568L3127,2568L3123,2573L3123,2579L3125,2579L3129,2584L3129,2589L3127,2591L3123,2591L3121,2589L3112,2589L3112,2586L3110,2586L3110,2584L3108,2584L3108,2584L3108,2584z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5540,3527L5538,3527L5538,3525L5536,3525L5536,3517L5538,3517L5538,3514L5542,3509L5542,3507L5544,3504L5544,3502L5553,3492L5559,3497L5562,3499L5564,3499L5566,3502L5568,3499L5570,3502L5572,3502L5572,3517L5575,3527L5575,3530L5572,3527L5570,3527L5568,3535L5568,3543L5570,3543L5570,3545L5557,3545L5553,3543L5549,3543L5544,3537L5540,3527L5540,3527L5540,3527z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4849,1140L4851,1138L4851,1128L4856,1125L4858,1125L4858,1122L4860,1122L4860,1117L4862,1115L4866,1115L4866,1112L4871,1110L4875,1105L4875,1102L4873,1102L4875,1097L4879,1097L4882,1099L4890,1099L4890,1094L4895,1094L4892,1097L4905,1097L4905,1094L4914,1094L4916,1097L4916,1092L4914,1092L4916,1089L4925,1089L4929,1094L4929,1092L4938,1092L4944,1094L4947,1097L4947,1099L4949,1099L4951,1102L4949,1102L4947,1105L4946,1107L4949,1110L4949,1112L4951,1112L4955,1115L4955,1117L4957,1117L4960,1120L4964,1120L4966,1117L4968,1117L4968,1115L4970,1115L4973,1117L4973,1120L4970,1122L4973,1128L4973,1130L4968,1130L4966,1128L4966,1125L4964,1128L4962,1128L4960,1130L4960,1133L4962,1133L4964,1135L4964,1140L4960,1140L4960,1138L4957,1135L4953,1135L4951,1138L4947,1138L4944,1135L4944,1133L4942,1130L4938,1130L4938,1133L4940,1133L4940,1138L4938,1138L4938,1140L4936,1140L4936,1143L4934,1143L4931,1145L4931,1150L4934,1150L4931,1153L4929,1153L4929,1148L4927,1148L4927,1143L4921,1143L4916,1140L4916,1133L4912,1133L4908,1140L4908,1143L4903,1148L4899,1148L4899,1150L4897,1150L4895,1148L4888,1148L4888,1150L4877,1150L4877,1148L4875,1148L4871,1143L4869,1143L4871,1135L4871,1133L4858,1133L4856,1135L4853,1135L4853,1138L4856,1138L4856,1140L4853,1140L4851,1143L4847,1143L4847,1140L4849,1140L4849,1140L4849,1140z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5679,1500L5679,1492L5676,1492L5674,1487L5676,1485L5676,1482L5679,1479L5679,1477L5681,1477L5685,1479L5685,1477L5687,1477L5687,1474L5692,1474L5692,1467L5700,1467L5700,1464L5698,1462L5696,1462L5696,1459L5700,1449L5700,1446L5707,1449L5709,1449L5709,1451L5720,1451L5720,1454L5728,1449L5735,1449L5735,1446L5739,1446L5741,1444L5748,1444L5748,1446L5752,1446L5757,1451L5780,1451L5787,1449L5791,1449L5791,1446L5798,1444L5800,1444L5804,1441L5806,1441L5811,1439L5815,1439L5817,1436L5824,1439L5835,1439L5843,1436L5850,1436L5850,1434L5852,1434L5852,1431L5854,1431L5856,1434L5858,1434L5858,1439L5843,1454L5830,1456L5830,1459L5828,1462L5826,1472L5830,1477L5830,1487L5828,1490L5828,1495L5826,1495L5826,1515L5822,1520L5822,1523L5819,1525L5763,1558L5759,1558L5759,1561L5757,1561L5705,1594L5696,1594L5694,1592L5692,1592L5687,1587L5685,1589L5685,1587L5683,1587L5679,1581L5672,1581L5672,1579L5670,1579L5672,1576L5670,1576L5670,1571L5672,1571L5672,1564L5670,1564L5674,1561L5676,1561L5676,1558L5679,1558L5679,1556L5683,1553L5681,1551L5679,1551L5681,1548L5681,1546L5683,1546L5687,1543L5692,1546L5692,1543L5689,1543L5689,1541L5692,1541L5692,1538L5696,1536L5698,1533L5696,1528L5696,1525L5694,1523L5692,1523L5692,1520L5694,1520L5694,1518L5679,1518L5679,1510L5676,1510L5679,1507L5679,1500L5679,1500L5679,1500z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8018,1882L8018,1877L8020,1875L8020,1872L8022,1870L8022,1867L8026,1862L8026,1859L8029,1857L8029,1854L8031,1854L8031,1852L8033,1849L8033,1847L8039,1839L8039,1836L8044,1831L8046,1831L8048,1829L8055,1829L8052,1829L8052,1826L8055,1826L8055,1824L8057,1824L8061,1829L8065,1829L8070,1834L8068,1834L8065,1836L8065,1839L8063,1839L8063,1847L8065,1847L8065,1852L8063,1852L8063,1857L8061,1859L8059,1859L8059,1870L8055,1882L8055,1887L8052,1895L8046,1908L8044,1908L8042,1910L8042,1913L8039,1916L8037,1921L8037,1923L8039,1928L8037,1931L8037,1933L8033,1933L8033,1926L8031,1923L8031,1921L8029,1921L8029,1918L8026,1918L8026,1916L8022,1916L8022,1913L8022,1916L8022,1913L8020,1910L8020,1905L8018,1903L8018,1898L8016,1898L8016,1890L8018,1890L8018,1882L8018,1882L8018,1882z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6668,1360L6668,1362L6673,1362L6673,1360L6675,1360L6675,1362L6673,1365L6675,1367L6677,1367L6679,1365L6684,1365L6684,1367L6688,1370L6690,1367L6690,1365L6699,1365L6699,1362L6701,1362L6703,1365L6714,1365L6723,1360L6727,1362L6727,1367L6725,1367L6729,1372L6729,1375L6731,1375L6731,1377L6729,1377L6729,1383L6731,1388L6731,1390L6738,1390L6740,1388L6746,1388L6755,1390L6757,1390L6759,1393L6759,1408L6762,1408L6762,1416L6764,1416L6762,1418L6762,1423L6766,1423L6766,1426L6770,1428L6762,1434L6759,1431L6755,1428L6742,1428L6740,1431L6738,1431L6733,1434L6725,1434L6727,1431L6729,1431L6729,1426L6727,1426L6727,1428L6725,1426L6716,1426L6714,1428L6712,1428L6710,1431L6705,1434L6703,1434L6701,1436L6701,1439L6699,1441L6690,1441L6688,1444L6681,1446L6677,1451L6668,1451L6668,1449L6664,1439L6664,1436L6666,1434L6666,1421L6668,1418L6668,1411L6664,1411L6662,1413L6660,1411L6660,1408L6662,1405L6662,1403L6664,1403L6664,1400L6662,1400L6662,1398L6658,1398L6658,1395L6653,1393L6651,1393L6647,1395L6645,1395L6634,1408L6634,1411L6629,1411L6629,1413L6632,1413L6632,1416L6634,1416L6634,1418L6629,1423L6623,1423L6623,1421L6621,1421L6619,1423L6612,1423L6608,1426L6608,1434L6610,1434L6610,1436L6608,1436L6606,1439L6603,1439L6597,1431L6593,1431L6588,1434L6586,1434L6586,1436L6582,1439L6580,1439L6577,1441L6575,1441L6571,1444L6569,1444L6564,1439L6564,1426L6567,1423L6567,1421L6569,1421L6569,1418L6571,1418L6571,1416L6573,1416L6573,1411L6577,1411L6580,1408L6580,1400L6577,1398L6575,1398L6573,1395L6571,1390L6571,1388L6573,1383L6575,1383L6575,1380L6573,1377L6573,1375L6569,1375L6567,1377L6562,1377L6562,1375L6560,1375L6562,1372L6560,1372L6560,1370L6551,1370L6551,1367L6554,1367L6554,1360L6556,1360L6560,1357L6562,1354L6564,1354L6564,1357L6575,1357L6580,1360L6582,1360L6586,1354L6586,1352L6588,1349L6588,1347L6590,1347L6590,1349L6595,1347L6590,1342L6597,1342L6597,1339L6586,1339L6586,1337L6606,1337L6608,1332L6606,1332L6606,1324L6608,1319L6608,1316L6610,1316L6612,1319L6614,1319L6616,1321L6621,1321L6621,1319L6627,1319L6632,1316L6634,1314L6636,1314L6636,1309L6638,1309L6645,1316L6645,1319L6647,1319L6647,1321L6645,1321L6636,1326L6636,1329L6634,1329L6636,1332L6638,1332L6642,1334L6642,1337L6649,1337L6645,1339L6642,1339L6642,1344L6640,1347L6638,1347L6638,1344L6640,1344L6640,1342L6636,1342L6634,1339L6627,1337L6621,1337L6616,1339L6612,1339L6612,1342L6610,1342L6612,1344L6612,1347L6610,1347L6608,1344L6606,1344L6606,1349L6603,1352L6606,1352L6606,1360L6612,1360L6612,1357L6621,1357L6621,1360L6625,1357L6645,1357L6645,1362L6655,1362L6655,1360L6658,1360L6662,1357L6664,1357L6666,1354L6666,1357L6668,1357L6668,1360L6668,1360L6668,1360z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7496,2426L7500,2426L7500,2428L7502,2428L7502,2431L7507,2436L7507,2438L7509,2438L7509,2441L7515,2446L7517,2449L7517,2451L7515,2454L7513,2454L7513,2459L7509,2464L7507,2461L7507,2464L7504,2464L7504,2459L7498,2459L7491,2466L7489,2466L7485,2461L7487,2459L7489,2459L7489,2446L7485,2446L7485,2449L7483,2449L7483,2443L7478,2438L7476,2441L7470,2438L7468,2436L7468,2433L7465,2433L7463,2431L7463,2441L7461,2441L7461,2438L7459,2438L7459,2436L7457,2436L7457,2433L7452,2428L7450,2428L7450,2418L7446,2418L7446,2415L7442,2413L7439,2410L7439,2408L7437,2403L7437,2400L7435,2398L7433,2398L7433,2400L7431,2400L7431,2392L7429,2390L7424,2390L7424,2382L7422,2380L7420,2380L7420,2377L7418,2377L7416,2380L7416,2382L7414,2388L7412,2388L7411,2382L7411,2380L7409,2377L7409,2362L7411,2359L7411,2357L7413,2354L7411,2349L7413,2349L7413,2344L7418,2334L7418,2326L7422,2318L7422,2316L7424,2313L7424,2308L7426,2308L7424,2306L7424,2303L7426,2301L7426,2298L7429,2298L7433,2293L7433,2290L7435,2290L7437,2288L7437,2285L7439,2283L7439,2280L7444,2273L7448,2267L7448,2265L7446,2262L7446,2255L7444,2252L7444,2247L7442,2242L7442,2239L7437,2234L7433,2224L7433,2222L7435,2219L7437,2219L7437,2211L7435,2209L7435,2201L7431,2196L7431,2191L7429,2191L7426,2188L7424,2188L7424,2186L7420,2183L7418,2181L7418,2178L7416,2176L7416,2173L7413,2173L7409,2168L7409,2153L7413,2153L7413,2150L7416,2150L7416,2148L7418,2148L7418,2150L7420,2150L7420,2145L7418,2142L7418,2137L7420,2130L7420,2127L7422,2125L7426,2125L7426,2122L7429,2120L7429,2114L7426,2114L7422,2120L7422,2112L7416,2104L7416,2102L7418,2102L7418,2097L7416,2094L7413,2094L7411,2091L7411,2089L7409,2086L7407,2086L7407,2084L7400,2076L7398,2076L7398,2074L7396,2074L7394,2069L7394,2066L7396,2063L7394,2058L7394,2056L7392,2056L7392,2053L7394,2053L7392,2053L7392,2051L7390,2051L7390,2053L7388,2053L7388,2048L7385,2046L7385,2043L7385,2046L7392,2046L7394,2043L7396,2043L7396,2033L7394,2033L7396,2028L7398,2028L7398,2018L7396,2018L7398,2012L7400,2012L7400,2010L7405,2010L7405,2007L7403,2007L7405,2005L7405,2002L7405,2005L7407,2005L7409,2007L7418,2007L7420,2005L7426,2002L7426,2005L7431,2005L7431,1995L7433,1995L7435,1992L7437,1995L7444,1995L7446,1992L7446,1989L7444,1987L7455,1987L7455,1982L7457,1982L7461,1987L7463,1987L7465,1984L7468,1984L7470,1987L7470,1989L7472,1992L7474,1992L7474,1997L7472,2000L7472,2002L7470,2002L7470,2010L7474,2015L7476,2012L7478,2012L7481,2015L7481,2012L7483,2012L7483,2010L7494,2010L7494,2015L7491,2015L7491,2018L7494,2028L7496,2028L7496,2030L7494,2030L7494,2043L7491,2043L7491,2046L7489,2046L7487,2048L7489,2051L7491,2051L7491,2061L7489,2061L7489,2066L7487,2066L7485,2069L7485,2076L7483,2076L7485,2076L7487,2079L7489,2079L7489,2081L7491,2081L7491,2079L7496,2076L7496,2074L7500,2071L7502,2069L7502,2066L7504,2066L7507,2063L7507,2061L7511,2061L7515,2056L7520,2056L7520,2058L7522,2061L7526,2063L7530,2063L7530,2066L7533,2069L7537,2063L7543,2063L7543,2058L7546,2058L7548,2053L7548,2051L7550,2051L7550,2048L7556,2048L7559,2051L7563,2051L7565,2053L7567,2053L7567,2051L7569,2051L7569,2053L7572,2056L7572,2058L7576,2063L7576,2069L7578,2069L7582,2074L7587,2076L7591,2081L7591,2094L7589,2097L7591,2097L7591,2112L7595,2117L7595,2120L7598,2120L7598,2125L7600,2125L7602,2127L7608,2127L7608,2130L7606,2130L7608,2135L7611,2135L7613,2137L7615,2137L7615,2148L7613,2148L7611,2155L7611,2158L7613,2158L7613,2165L7611,2165L7611,2168L7613,2173L7613,2176L7611,2176L7611,2178L7608,2181L7606,2181L7604,2183L7602,2181L7602,2186L7598,2186L7598,2181L7593,2181L7591,2178L7587,2178L7587,2181L7572,2181L7569,2183L7567,2183L7561,2181L7561,2178L7559,2181L7550,2181L7548,2183L7543,2183L7543,2186L7541,2186L7539,2188L7539,2193L7537,2193L7537,2196L7535,2196L7535,2201L7530,2204L7530,2206L7528,2206L7528,2209L7524,2209L7524,2206L7524,2222L7526,2222L7528,2227L7528,2237L7530,2237L7530,2239L7533,2239L7535,2245L7535,2255L7533,2252L7528,2252L7528,2255L7524,2252L7522,2250L7520,2250L7520,2247L7517,2245L7515,2245L7515,2239L7513,2239L7513,2242L7511,2239L7511,2237L7504,2237L7502,2239L7496,2239L7496,2237L7485,2237L7485,2239L7483,2237L7481,2237L7481,2234L7483,2234L7485,2227L7483,2224L7485,2219L7483,2216L7485,2216L7485,2211L7481,2211L7478,2209L7474,2209L7472,2211L7459,2211L7459,2214L7457,2216L7457,2219L7459,2219L7459,2222L7461,2222L7461,2227L7459,2227L7457,2234L7457,2245L7459,2247L7459,2252L7457,2255L7457,2257L7455,2257L7455,2262L7452,2262L7452,2267L7450,2270L7448,2275L7448,2278L7446,2280L7444,2285L7444,2295L7442,2298L7442,2303L7439,2303L7435,2313L7435,2336L7437,2341L7439,2344L7437,2344L7437,2349L7442,2352L7444,2352L7444,2349L7446,2349L7450,2347L7455,2347L7455,2352L7457,2357L7457,2369L7461,2375L7461,2377L7463,2377L7463,2375L7465,2375L7465,2385L7468,2387L7468,2395L7470,2398L7471,2398L7470,2404L7471,2408L7473,2409L7472,2413L7473,2416L7477,2416L7478,2420L7478,2423L7481,2423L7483,2426L7485,2426L7487,2428L7491,2428L7496,2426L7496,2426L7496,2426z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5258,1314L5256,1314L5256,1309L5254,1309L5252,1306L5252,1303L5250,1301L5250,1298L5252,1298L5250,1296L5250,1293L5252,1291L5252,1283L5254,1281L5254,1283L5256,1283L5258,1281L5258,1275L5267,1270L5269,1270L5271,1273L5274,1273L5274,1270L5287,1270L5287,1268L5297,1268L5302,1265L5302,1268L5304,1268L5306,1273L5308,1275L5310,1275L5315,1278L5317,1281L5317,1283L5319,1283L5319,1286L5321,1286L5321,1288L5319,1288L5319,1298L5315,1298L5315,1301L5313,1301L5313,1306L5291,1306L5291,1309L5289,1309L5287,1314L5274,1314L5269,1316L5265,1316L5265,1314L5258,1314L5258,1314L5258,1314z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4726,2423L4726,2436L4728,2436L4728,2438L4730,2441L4732,2446L4728,2446L4726,2449L4719,2449L4717,2451L4713,2451L4710,2449L4708,2443L4706,2443L4704,2441L4702,2441L4702,2436L4700,2436L4700,2431L4697,2428L4695,2423L4697,2423L4697,2420L4700,2415L4700,2410L4695,2410L4695,2403L4697,2400L4697,2382L4700,2382L4702,2380L4700,2377L4700,2375L4695,2372L4695,2369L4693,2369L4693,2367L4691,2364L4695,2364L4695,2359L4693,2357L4693,2354L4695,2352L4695,2349L4697,2344L4695,2341L4691,2341L4689,2344L4687,2344L4687,2339L4689,2336L4689,2334L4691,2331L4691,2324L4693,2324L4693,2321L4691,2321L4691,2316L4689,2311L4687,2311L4680,2303L4678,2303L4678,2301L4680,2298L4680,2295L4682,2293L4682,2288L4678,2288L4682,2288L4687,2290L4695,2290L4695,2293L4700,2293L4702,2290L4704,2290L4706,2293L4706,2298L4704,2301L4704,2308L4702,2311L4708,2316L4710,2318L4715,2321L4717,2324L4719,2324L4719,2344L4721,2347L4721,2349L4723,2349L4723,2352L4726,2352L4726,2377L4728,2390L4728,2423L4726,2423L4726,2423L4726,2423z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4955,1658L4951,1661L4949,1661L4947,1663L4947,1661L4944,1653L4942,1650L4942,1643L4940,1638L4940,1632L4938,1622L4936,1617L4934,1607L4934,1602L4931,1602L4927,1597L4914,1589L4914,1587L4912,1587L4912,1576L4905,1569L4903,1569L4897,1566L4897,1558L4890,1551L4890,1536L4892,1533L4897,1533L4897,1530L4899,1528L4899,1525L4905,1523L4908,1523L4910,1518L4910,1515L4912,1515L4912,1502L4914,1500L4914,1497L4912,1497L4912,1492L4914,1487L4912,1485L4912,1482L4910,1479L4910,1477L4912,1477L4912,1464L4914,1462L4914,1459L4908,1459L4908,1456L4910,1456L4914,1454L4916,1454L4916,1449L4921,1446L4921,1444L4925,1444L4927,1441L4929,1441L4929,1439L4931,1439L4931,1436L4936,1436L4947,1431L4955,1431L4960,1434L4964,1434L4966,1436L4964,1436L4964,1441L4968,1444L4968,1446L4964,1446L4964,1449L4968,1449L4968,1451L4970,1451L4973,1449L4975,1449L4975,1446L4979,1446L4979,1444L4981,1444L4983,1441L4983,1439L4988,1439L4990,1444L4988,1446L4988,1449L4986,1449L4983,1454L4981,1456L4981,1459L4977,1459L4975,1462L4973,1462L4973,1474L4975,1479L4977,1479L4979,1482L4981,1482L4981,1485L4988,1485L4988,1497L4990,1497L4990,1500L4988,1502L4988,1505L4981,1513L4979,1518L4977,1518L4977,1520L4975,1520L4975,1523L4970,1523L4970,1525L4968,1525L4964,1528L4962,1528L4962,1530L4960,1533L4960,1538L4962,1541L4962,1543L4966,1548L4968,1548L4968,1551L4975,1551L4979,1547L4979,1543L4985,1542L4989,1545L4988,1548L4985,1550L4980,1549L4981,1551L4979,1552L4978,1556L4980,1557L4985,1556L4987,1551L4991,1552L4991,1556L4990,1558L4990,1564L4992,1566L5001,1566L5001,1587L5003,1587L5003,1592L5001,1592L4999,1594L4996,1594L4992,1597L4990,1597L4988,1599L4983,1599L4983,1602L4973,1615L4966,1615L4964,1620L4962,1622L4962,1625L4966,1630L4966,1645L4964,1645L4964,1648L4955,1658L4955,1658L4955,1658z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5466,1446L5466,1451L5464,1451L5464,1455L5458,1457L5459,1453L5462,1449L5460,1449L5455,1451L5454,1451L5452,1451L5451,1451L5445,1451L5445,1454L5443,1451L5440,1451L5445,1449L5451,1449L5460,1446L5460,1444L5469,1441L5440,1441L5440,1444L5438,1444L5438,1439L5440,1436L5443,1436L5443,1439L5447,1436L5447,1434L5445,1434L5443,1431L5443,1428L5440,1428L5440,1431L5436,1431L5436,1428L5438,1426L5436,1423L5436,1421L5438,1418L5438,1411L5432,1405L5430,1405L5425,1403L5421,1403L5421,1405L5419,1405L5419,1403L5417,1403L5414,1400L5410,1400L5412,1398L5417,1398L5417,1393L5414,1393L5412,1390L5412,1388L5419,1388L5419,1390L5421,1390L5421,1398L5427,1398L5431,1396L5427,1393L5425,1388L5423,1388L5423,1385L5425,1385L5427,1383L5432,1380L5434,1380L5432,1377L5427,1377L5427,1379L5425,1377L5425,1375L5427,1375L5427,1372L5425,1370L5423,1370L5421,1367L5427,1360L5430,1360L5430,1357L5421,1357L5419,1360L5410,1360L5408,1362L5406,1362L5406,1357L5408,1357L5408,1344L5412,1344L5414,1339L5416,1337L5419,1337L5421,1334L5425,1332L5432,1332L5433,1330L5434,1329L5440,1329L5438,1329L5440,1329L5440,1332L5443,1332L5445,1334L5453,1334L5454,1330L5451,1328L5454,1326L5461,1326L5461,1328L5458,1329L5458,1332L5464,1332L5466,1329L5473,1332L5488,1332L5490,1329L5484,1329L5484,1326L5482,1326L5482,1324L5486,1324L5486,1321L5499,1321L5499,1319L5497,1316L5495,1316L5495,1314L5490,1314L5489,1311L5489,1306L5490,1303L5499,1303L5503,1306L5521,1306L5523,1303L5525,1303L5525,1306L5531,1306L5536,1309L5549,1309L5551,1306L5553,1306L5553,1301L5557,1298L5559,1298L5575,1291L5577,1288L5585,1283L5596,1283L5596,1281L5601,1281L5603,1278L5631,1278L5633,1281L5648,1281L5648,1278L5650,1278L5650,1275L5655,1275L5657,1278L5655,1281L5657,1281L5657,1283L5659,1286L5661,1286L5661,1288L5666,1288L5666,1291L5672,1291L5674,1288L5679,1288L5679,1286L5681,1286L5685,1291L5685,1296L5687,1298L5692,1301L5692,1303L5696,1303L5696,1301L5698,1298L5705,1298L5707,1301L5709,1301L5709,1306L5718,1306L5720,1309L5726,1309L5726,1306L5731,1306L5731,1309L5733,1311L5741,1311L5746,1314L5750,1314L5757,1311L5759,1311L5763,1309L5776,1309L5776,1306L5778,1306L5778,1309L5780,1309L5783,1311L5789,1311L5793,1314L5796,1314L5800,1311L5802,1311L5804,1309L5811,1309L5815,1303L5822,1303L5824,1301L5826,1301L5828,1298L5832,1298L5835,1296L5835,1293L5841,1293L5841,1296L5845,1296L5845,1293L5856,1293L5856,1296L5861,1296L5865,1291L5871,1291L5871,1293L5878,1301L5882,1303L5887,1303L5889,1306L5889,1311L5893,1311L5893,1314L5895,1319L5895,1324L5893,1326L5891,1326L5891,1329L5893,1332L5893,1334L5895,1337L5895,1339L5893,1339L5902,1342L5904,1344L5904,1342L5913,1342L5915,1344L5917,1344L5919,1347L5919,1349L5921,1349L5923,1352L5926,1352L5926,1354L5921,1349L5919,1349L5917,1352L5917,1354L5915,1362L5904,1362L5904,1365L5906,1365L5908,1372L5908,1380L5910,1380L5913,1383L5910,1385L5910,1388L5913,1388L5913,1395L5915,1395L5917,1398L5915,1403L5913,1405L5910,1411L5910,1413L5919,1416L5921,1418L5919,1418L5919,1428L5921,1428L5926,1431L5926,1436L5919,1436L5917,1439L5915,1439L5913,1441L5910,1441L5908,1439L5910,1436L5910,1434L5906,1431L5902,1431L5902,1434L5889,1434L5880,1428L5876,1431L5871,1431L5871,1428L5869,1428L5867,1431L5865,1436L5863,1436L5858,1439L5858,1434L5856,1434L5854,1431L5852,1431L5852,1434L5850,1434L5850,1436L5843,1436L5835,1439L5824,1439L5817,1436L5815,1439L5811,1439L5806,1441L5804,1441L5800,1444L5798,1444L5791,1446L5791,1449L5787,1449L5780,1451L5757,1451L5752,1446L5748,1446L5748,1444L5741,1444L5739,1446L5735,1446L5735,1449L5728,1449L5720,1454L5720,1451L5709,1451L5709,1449L5707,1449L5700,1446L5700,1449L5696,1459L5696,1462L5698,1462L5700,1464L5700,1467L5692,1467L5692,1474L5687,1474L5687,1477L5685,1477L5685,1479L5681,1477L5679,1477L5681,1474L5681,1472L5679,1472L5676,1467L5674,1464L5679,1459L5683,1456L5685,1454L5687,1454L5687,1449L5683,1444L5679,1444L5679,1446L5676,1449L5670,1449L5670,1454L5666,1454L5663,1456L5655,1451L5650,1451L5650,1449L5646,1449L5646,1446L5644,1449L5642,1449L5640,1451L5635,1454L5633,1454L5633,1456L5631,1456L5629,1459L5629,1462L5627,1462L5627,1464L5622,1464L5620,1467L5618,1467L5618,1469L5616,1467L5614,1469L5605,1469L5598,1472L5592,1472L5592,1474L5588,1472L5583,1472L5575,1462L5575,1459L5572,1459L5572,1456L5570,1456L5566,1454L5562,1454L5553,1449L5551,1449L5551,1446L5531,1446L5531,1449L5529,1449L5529,1459L5527,1459L5527,1462L5529,1462L5529,1464L5527,1467L5525,1467L5523,1464L5518,1464L5518,1467L5514,1467L5508,1469L5503,1469L5503,1467L5495,1467L5495,1464L5490,1464L5490,1456L5488,1456L5488,1451L5486,1449L5484,1449L5484,1451L5482,1451L5478,1450L5476,1448L5466,1446L5466,1446L5466,1446zM5475,1311L5473,1311L5471,1309L5458,1309L5458,1311L5445,1311L5445,1314L5443,1316L5440,1321L5438,1321L5436,1324L5432,1324L5430,1326L5424,1327L5423,1328L5420,1330L5419,1332L5418,1332L5416,1333L5413,1335L5410,1340L5408,1340L5410,1337L5410,1332L5419,1326L5421,1326L5423,1326L5425,1324L5425,1321L5421,1321L5419,1324L5406,1324L5406,1321L5404,1319L5408,1319L5408,1316L5410,1314L5412,1314L5412,1311L5414,1311L5414,1309L5412,1309L5412,1301L5414,1303L5414,1301L5421,1301L5421,1293L5419,1291L5414,1288L5412,1288L5412,1286L5414,1283L5419,1283L5419,1281L5421,1278L5430,1278L5432,1275L5440,1275L5443,1278L5447,1281L5449,1281L5451,1278L5460,1278L5460,1281L5458,1281L5458,1283L5462,1288L5462,1291L5464,1293L5466,1293L5466,1296L5471,1296L5486,1303L5487,1303L5485,1312L5484,1311L5475,1311L5475,1311L5475,1311z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6380,1469L6380,1454L6359,1454L6352,1446L6352,1444L6350,1444L6350,1441L6348,1441L6348,1439L6341,1436L6339,1436L6335,1434L6333,1434L6331,1431L6331,1426L6328,1423L6324,1423L6322,1421L6318,1421L6318,1418L6315,1418L6313,1421L6302,1421L6298,1418L6298,1416L6296,1416L6283,1411L6274,1411L6274,1405L6270,1400L6268,1400L6266,1403L6263,1403L6261,1400L6246,1400L6246,1405L6220,1405L6220,1408L6216,1408L6214,1411L6211,1411L6207,1416L6205,1416L6205,1418L6203,1418L6203,1426L6196,1426L6194,1428L6190,1428L6185,1431L6179,1431L6179,1426L6177,1423L6177,1416L6176,1414L6175,1408L6177,1405L6177,1385L6181,1380L6177,1375L6172,1375L6170,1372L6170,1365L6157,1365L6157,1362L6159,1357L6162,1358L6168,1358L6170,1357L6168,1354L6164,1354L6164,1352L6166,1347L6168,1347L6168,1344L6151,1344L6151,1347L6146,1342L6146,1337L6144,1334L6146,1329L6146,1324L6149,1321L6151,1309L6149,1308L6148,1300L6144,1296L6143,1295L6142,1293L6142,1288L6138,1288L6138,1286L6140,1286L6153,1273L6162,1270L6166,1270L6166,1268L6179,1268L6181,1265L6183,1265L6185,1268L6188,1268L6190,1270L6201,1275L6203,1275L6207,1281L6207,1286L6209,1286L6211,1288L6211,1291L6214,1291L6214,1293L6216,1293L6216,1296L6218,1296L6218,1298L6220,1298L6220,1301L6266,1301L6268,1298L6266,1298L6266,1296L6263,1288L6263,1281L6268,1281L6268,1278L6270,1278L6270,1275L6272,1275L6272,1273L6287,1273L6292,1268L6292,1265L6289,1263L6292,1263L6294,1260L6294,1263L6302,1263L6302,1260L6298,1260L6298,1258L6296,1258L6300,1255L6305,1255L6305,1258L6307,1258L6307,1255L6309,1255L6309,1252L6313,1255L6313,1258L6315,1258L6318,1260L6324,1260L6326,1263L6326,1265L6328,1265L6328,1268L6346,1268L6348,1270L6348,1278L6352,1281L6352,1283L6350,1283L6350,1288L6352,1288L6352,1291L6350,1293L6350,1298L6354,1298L6357,1301L6359,1301L6359,1303L6367,1303L6367,1301L6370,1301L6374,1303L6380,1303L6383,1306L6385,1306L6385,1303L6387,1303L6387,1301L6393,1301L6393,1303L6396,1303L6400,1306L6402,1309L6402,1316L6404,1319L6406,1324L6409,1326L6409,1329L6413,1329L6415,1334L6415,1342L6419,1344L6419,1347L6424,1349L6426,1349L6428,1352L6430,1352L6430,1354L6432,1354L6432,1357L6437,1357L6439,1360L6441,1360L6443,1362L6445,1362L6445,1365L6448,1365L6450,1367L6450,1370L6454,1370L6458,1375L6461,1375L6463,1377L6469,1377L6469,1380L6471,1380L6476,1383L6478,1385L6480,1385L6482,1388L6486,1388L6489,1390L6491,1390L6491,1393L6493,1395L6495,1395L6502,1400L6517,1400L6521,1403L6521,1405L6523,1405L6525,1408L6532,1408L6532,1413L6530,1416L6528,1423L6528,1428L6530,1428L6528,1428L6528,1431L6521,1431L6519,1428L6517,1428L6515,1426L6508,1423L6506,1423L6504,1426L6504,1431L6502,1434L6486,1434L6482,1436L6480,1436L6480,1446L6478,1449L6478,1451L6476,1451L6476,1462L6471,1467L6469,1467L6463,1469L6461,1469L6458,1472L6456,1472L6454,1474L6448,1474L6448,1477L6445,1477L6441,1479L6435,1479L6435,1482L6437,1485L6435,1485L6435,1487L6432,1487L6435,1490L6435,1492L6430,1492L6426,1497L6424,1497L6422,1500L6417,1500L6417,1497L6415,1497L6415,1500L6413,1500L6413,1502L6411,1502L6411,1497L6409,1495L6406,1495L6404,1492L6389,1492L6389,1490L6387,1490L6387,1487L6383,1487L6383,1477L6380,1477L6380,1469L6380,1469L6380,1469z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5650,2576L5650,2568L5648,2566L5648,2561L5646,2561L5646,2558L5644,2558L5642,2556L5642,2548L5640,2548L5637,2545L5637,2530L5635,2530L5631,2528L5631,2525L5629,2522L5629,2517L5627,2515L5627,2512L5624,2512L5611,2528L5601,2528L5598,2525L5596,2525L5594,2528L5581,2528L5575,2533L5575,2535L5572,2535L5570,2533L5568,2533L5568,2530L5566,2528L5564,2528L5562,2530L5557,2533L5553,2528L5546,2528L5542,2530L5540,2530L5540,2540L5538,2543L5538,2545L5536,2548L5536,2553L5538,2553L5538,2561L5536,2563L5536,2571L5538,2576L5540,2576L5540,2573L5542,2573L5544,2576L5549,2579L5549,2579L5552,2575L5553,2580L5553,2592L5536,2608L5535,2616L5528,2615L5528,2611L5527,2612L5525,2612L5523,2614L5521,2614L5521,2619L5518,2622L5514,2622L5514,2624L5512,2627L5512,2632L5514,2632L5514,2635L5510,2640L5510,2645L5508,2645L5508,2653L5505,2653L5505,2670L5503,2673L5503,2696L5508,2696L5510,2693L5510,2696L5512,2696L5512,2698L5514,2698L5518,2696L5518,2693L5521,2693L5523,2691L5523,2688L5525,2686L5533,2686L5533,2683L5564,2682L5563,2677L5565,2673L5565,2666L5569,2667L5572,2663L5573,2660L5569,2654L5583,2649L5588,2645L5591,2648L5599,2648L5601,2646L5603,2638L5606,2636L5609,2638L5613,2644L5617,2642L5621,2643L5627,2642L5629,2640L5629,2632L5631,2632L5631,2630L5633,2630L5637,2624L5637,2622L5640,2619L5640,2614L5642,2614L5644,2612L5648,2612L5648,2604L5650,2604L5650,2599L5653,2599L5653,2579L5650,2576L5650,2576L5650,2576z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5787,1054L5787,1056L5785,1056L5785,1059L5783,1061L5783,1064L5789,1064L5789,1069L5791,1071L5791,1074L5789,1074L5789,1077L5787,1082L5787,1087L5759,1087L5759,1092L5757,1092L5754,1094L5746,1094L5746,1097L5744,1097L5744,1102L5746,1105L5744,1107L5741,1107L5741,1110L5744,1110L5739,1112L5724,1112L5720,1117L5709,1117L5709,1120L5705,1120L5705,1122L5692,1122L5692,1125L5687,1128L5687,1125L5679,1125L5676,1128L5674,1128L5672,1130L5670,1130L5670,1133L5666,1133L5663,1135L5659,1133L5659,1135L5657,1138L5655,1138L5650,1141L5626,1141L5625,1143L5630,1145L5635,1145L5637,1148L5642,1149L5644,1155L5650,1155L5651,1157L5655,1158L5656,1164L5655,1167L5666,1171L5668,1171L5676,1166L5679,1166L5679,1168L5683,1168L5683,1166L5698,1166L5698,1168L5694,1168L5694,1171L5692,1173L5692,1176L5694,1176L5694,1179L5681,1179L5681,1181L5676,1181L5676,1179L5674,1179L5672,1176L5668,1176L5666,1179L5663,1179L5659,1181L5657,1184L5657,1186L5646,1186L5640,1189L5637,1189L5637,1191L5635,1191L5635,1194L5629,1199L5616,1199L5614,1196L5609,1196L5609,1194L5611,1194L5614,1191L5611,1186L5614,1186L5614,1184L5616,1184L5616,1181L5614,1181L5614,1176L5611,1176L5609,1173L5607,1173L5605,1176L5605,1173L5601,1173L5601,1171L5598,1171L5596,1168L5588,1168L5588,1171L5585,1168L5583,1168L5583,1166L5585,1166L5585,1163L5588,1163L5594,1161L5594,1158L5598,1158L5603,1156L5607,1156L5607,1153L5611,1153L5614,1150L5618,1150L5618,1148L5616,1148L5616,1143L5611,1143L5611,1145L5609,1145L5609,1143L5585,1143L5585,1145L5581,1145L5579,1143L5577,1143L5577,1140L5570,1138L5564,1138L5563,1136L5570,1134L5568,1132L5562,1132L5557,1129L5560,1126L5556,1125L5546,1128L5540,1128L5536,1133L5536,1135L5518,1153L5512,1153L5510,1156L5510,1158L5505,1158L5505,1153L5503,1153L5503,1163L5505,1166L5508,1163L5508,1173L5505,1173L5505,1168L5503,1168L5503,1166L5492,1166L5482,1171L5482,1173L5477,1173L5475,1171L5469,1171L5469,1168L5466,1168L5466,1166L5464,1166L5464,1163L5473,1163L5473,1156L5477,1156L5477,1153L5479,1153L5479,1148L5486,1148L5488,1140L5486,1138L5484,1133L5486,1133L5488,1130L5492,1130L5492,1135L5495,1135L5495,1133L5497,1133L5499,1130L5501,1130L5501,1133L5503,1135L5505,1135L5508,1133L5510,1135L5518,1135L5518,1133L5514,1133L5512,1130L5514,1128L5514,1120L5510,1120L5508,1117L5503,1117L5503,1102L5501,1102L5501,1105L5497,1105L5497,1102L5495,1099L5492,1099L5490,1097L5490,1094L5492,1094L5495,1089L5492,1084L5490,1082L5488,1082L5488,1084L5486,1084L5482,1079L5482,1077L5469,1077L5469,1074L5462,1074L5462,1071L5456,1071L5456,1069L5453,1066L5445,1066L5438,1069L5430,1069L5425,1071L5421,1071L5421,1074L5417,1074L5412,1077L5408,1082L5399,1082L5399,1084L5382,1084L5382,1087L5380,1087L5380,1089L5378,1089L5375,1092L5373,1092L5371,1089L5371,1087L5367,1087L5367,1084L5347,1084L5343,1082L5328,1082L5328,1079L5323,1079L5323,1082L5321,1082L5319,1084L5317,1084L5317,1079L5308,1079L5308,1077L5306,1074L5302,1074L5300,1069L5297,1069L5297,1061L5300,1061L5304,1056L5304,1054L5306,1051L5306,1048L5308,1048L5308,1046L5313,1048L5317,1048L5317,1046L5315,1043L5313,1043L5313,1036L5310,1033L5310,1031L5313,1028L5315,1028L5328,1013L5330,1013L5330,1010L5334,1010L5334,1008L5336,1008L5341,1003L5347,1003L5352,997L5352,995L5349,992L5347,992L5347,990L5352,990L5352,987L5349,987L5347,985L5345,985L5345,982L5343,977L5341,977L5339,975L5339,967L5336,967L5339,967L5339,964L5336,964L5339,962L5345,962L5345,964L5349,964L5356,959L5356,957L5358,954L5378,954L5378,952L5384,952L5384,954L5408,954L5408,957L5417,957L5414,957L5425,957L5425,959L5436,959L5436,962L5438,964L5451,964L5451,967L5449,967L5451,969L5453,967L5453,964L5464,964L5464,962L5466,962L5469,964L5477,964L5477,969L5479,969L5479,967L5482,967L5482,964L5488,962L5490,962L5490,964L5492,964L5492,967L5495,967L5495,972L5497,972L5499,969L5503,967L5508,967L5508,969L5512,969L5514,967L5521,967L5525,969L5525,972L5527,975L5529,975L5531,972L5531,967L5529,967L5529,962L5531,962L5531,959L5538,952L5540,952L5540,949L5551,949L5551,946L5566,946L5566,949L5577,949L5577,946L5579,946L5579,941L5581,941L5581,939L5585,941L5592,941L5594,944L5596,944L5596,941L5598,941L5603,939L5609,939L5611,941L5614,939L5620,939L5627,944L5629,946L5627,946L5627,949L5629,949L5629,952L5633,954L5635,957L5637,957L5637,959L5635,959L5633,962L5629,962L5631,964L5631,967L5633,967L5633,969L5635,975L5637,975L5642,977L5657,977L5657,982L5663,982L5661,985L5663,985L5663,987L5666,990L5666,992L5668,995L5663,995L5666,1000L5670,1005L5672,1005L5674,1003L5687,1003L5687,1005L5689,1008L5692,1008L5692,1005L5694,1008L5696,1008L5696,1010L5698,1010L5702,1005L5715,1005L5715,1003L5722,1003L5726,1010L5728,1013L5731,1013L5731,1015L5735,1015L5735,1018L5737,1018L5737,1020L5741,1015L5746,1013L5746,1015L5748,1018L5757,1018L5759,1020L5761,1020L5763,1023L5767,1023L5767,1020L5770,1020L5772,1023L5772,1026L5776,1026L5776,1023L5778,1023L5778,1026L5780,1026L5780,1028L5783,1028L5787,1031L5791,1031L5791,1028L5793,1028L5796,1031L5793,1031L5793,1033L5796,1036L5796,1038L5798,1038L5798,1041L5793,1043L5791,1043L5791,1048L5783,1048L5783,1051L5787,1051L5787,1054L5787,1054L5787,1054z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6227,1816L6227,1814L6227,1816L6227,1816L6227,1816zM6237,1836L6237,1834L6233,1834L6233,1836L6231,1836L6231,1844L6233,1844L6231,1847L6231,1859L6235,1859L6237,1865L6233,1865L6231,1867L6229,1865L6227,1865L6222,1867L6224,1870L6224,1875L6222,1877L6218,1887L6218,1893L6214,1898L6214,1903L6216,1903L6216,1905L6214,1908L6214,1910L6142,1900L6114,1862L6114,1857L6118,1857L6118,1862L6120,1865L6120,1867L6136,1867L6140,1862L6143,1861L6144,1862L6166,1862L6168,1865L6177,1865L6183,1862L6185,1862L6185,1859L6192,1859L6192,1857L6194,1854L6194,1852L6196,1852L6198,1844L6198,1842L6201,1839L6207,1836L6209,1834L6211,1834L6211,1831L6214,1829L6216,1829L6216,1826L6218,1824L6218,1821L6222,1821L6222,1816L6227,1816L6227,1814L6229,1814L6229,1811L6233,1811L6237,1806L6237,1801L6240,1801L6240,1798L6242,1798L6242,1803L6240,1806L6240,1811L6242,1811L6242,1814L6246,1814L6246,1836L6244,1836L6244,1839L6242,1839L6242,1842L6237,1842L6235,1839L6235,1836L6237,1836L6237,1836L6237,1836z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5599,2928L5565,2892L5559,2899L5578,2929L5580,2922L5588,2929L5599,2928L5599,2928L5599,2928zM5564,2682L5567,2690L5565,2699L5563,2702L5563,2706L5561,2716L5566,2719L5565,2722L5561,2722L5560,2727L5567,2726L5568,2731L5564,2733L5564,2736L5568,2738L5572,2734L5573,2728L5571,2723L5577,2724L5582,2727L5585,2724L5586,2728L5590,2730L5594,2730L5598,2728L5602,2729L5606,2733L5621,2723L5618,2721L5610,2722L5599,2720L5594,2721L5592,2714L5593,2708L5599,2709L5604,2712L5607,2712L5609,2707L5612,2708L5615,2703L5617,2696L5621,2693L5624,2688L5627,2686L5637,2691L5640,2693L5646,2696L5683,2721L5685,2724L5713,2742L5715,2742L5715,2744L5720,2747L5724,2747L5728,2752L5728,2760L5726,2762L5726,2767L5731,2767L5731,2770L5750,2788L5754,2790L5765,2800L5770,2803L5770,2811L5767,2811L5767,2823L5765,2826L5765,2831L5763,2834L5759,2846L5759,2851L5761,2857L5761,2862L5763,2862L5763,2864L5765,2864L5767,2867L5770,2867L5772,2872L5772,2874L5778,2874L5778,2879L5780,2879L5778,2882L5778,2885L5776,2887L5776,2890L5774,2890L5772,2895L5772,2905L5774,2905L5776,2908L5776,2913L5774,2923L5772,2923L5774,2925L5774,2936L5777,2941L5776,2943L5783,2951L5783,2959L5785,2964L5785,2971L5787,2971L5787,2979L5789,2979L5793,2984L5796,2984L5796,2987L5798,2989L5798,2984L5800,2984L5802,2989L5804,2992L5804,2994L5802,2997L5796,2999L5793,3004L5789,3004L5789,3007L5787,3007L5785,3010L5778,3010L5778,3012L5776,3015L5772,3015L5772,3017L5770,3017L5767,3015L5763,3017L5761,3017L5754,3020L5750,3025L5748,3025L5748,3022L5746,3022L5741,3020L5733,3020L5733,3022L5731,3025L5731,3030L5728,3030L5726,3033L5722,3035L5715,3035L5713,3033L5711,3033L5709,3030L5702,3030L5702,3033L5700,3033L5700,3035L5696,3035L5692,3033L5689,3033L5689,3035L5685,3035L5685,3030L5679,3025L5676,3025L5672,3030L5652,3030L5653,3027L5651,3024L5642,3014L5640,2976L5635,2971L5634,2968L5624,2961L5624,2969L5622,2969L5622,2966L5620,2964L5614,2964L5614,2966L5609,2966L5609,2964L5607,2961L5601,2961L5598,2959L5594,2959L5592,2956L5590,2956L5588,2953L5583,2953L5583,2951L5577,2951L5577,2948L5572,2948L5572,2946L5570,2946L5570,2948L5568,2948L5568,2943L5566,2943L5564,2941L5564,2943L5562,2943L5559,2941L5557,2941L5557,2938L5553,2933L5549,2933L5551,2929L5546,2924L5531,2895L5534,2892L5533,2886L5526,2868L5518,2863L5512,2858L5510,2847L5515,2842L5509,2827L5511,2820L5507,2815L5503,2807L5504,2798L5505,2798L5508,2795L5512,2793L5518,2785L5523,2775L5525,2775L5525,2772L5527,2767L5529,2765L5531,2765L5533,2762L5531,2762L5531,2760L5536,2760L5538,2757L5538,2749L5533,2749L5533,2747L5527,2747L5527,2744L5525,2744L5529,2732L5531,2729L5538,2729L5538,2706L5536,2701L5536,2698L5533,2696L5529,2696L5527,2688L5527,2686L5533,2686L5533,2683L5564,2682L5564,2682L5564,2682zM5787,2828L5787,2823L5789,2823L5789,2821L5787,2818L5787,2816L5789,2816L5789,2811L5783,2811L5783,2818L5785,2821L5785,2823L5783,2823L5783,2828L5785,2831L5787,2828L5787,2828L5787,2828zM5770,2844L5772,2844L5772,2839L5774,2839L5774,2844L5774,2846L5776,2849L5776,2851L5779,2854L5780,2859L5780,2862L5776,2862L5776,2859L5775,2857L5774,2857L5770,2857L5770,2844L5770,2844L5770,2844z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2380,1951L2378,1949L2371,1949L2371,1944L2373,1946L2378,1946L2378,1944L2376,1944L2373,1938L2373,1936L2378,1933L2382,1933L2384,1936L2384,1938L2386,1938L2386,1941L2389,1946L2386,1946L2386,1949L2384,1949L2380,1951L2380,1951L2380,1951zM2523,1936L2519,1931L2516,1931L2516,1928L2525,1928L2525,1933L2523,1933L2523,1936L2523,1936L2523,1936zM2592,2000L2590,2002L2584,2002L2581,2000L2579,2000L2573,1997L2573,2000L2568,1997L2560,1997L2558,2000L2545,2000L2542,2002L2542,2000L2540,2002L2538,2000L2534,2000L2534,2002L2523,2002L2523,2000L2532,1989L2536,1989L2540,1984L2540,1982L2538,1977L2536,1977L2534,1974L2512,1974L2510,1972L2510,1969L2508,1967L2506,1967L2501,1964L2501,1959L2499,1956L2499,1949L2497,1949L2497,1946L2495,1944L2490,1944L2490,1946L2473,1946L2473,1944L2469,1941L2460,1941L2458,1938L2456,1938L2456,1936L2451,1936L2449,1933L2449,1929L2447,1928L2445,1928L2445,1931L2432,1931L2430,1928L2421,1928L2421,1926L2408,1926L2404,1923L2402,1921L2399,1921L2399,1918L2412,1918L2415,1916L2415,1913L2410,1910L2384,1910L2384,1908L2382,1908L2382,1913L2380,1913L2376,1916L2373,1916L2373,1921L2369,1921L2367,1923L2367,1926L2350,1926L2350,1928L2347,1931L2350,1931L2350,1933L2345,1933L2341,1936L2339,1936L2339,1938L2334,1938L2334,1933L2330,1933L2326,1938L2324,1938L2321,1936L2324,1933L2324,1936L2326,1936L2332,1931L2339,1931L2339,1928L2337,1926L2337,1921L2341,1918L2343,1913L2345,1910L2347,1910L2376,1898L2376,1900L2378,1900L2378,1898L2389,1898L2391,1895L2393,1895L2395,1893L2406,1893L2406,1895L2417,1895L2417,1898L2421,1895L2423,1895L2428,1898L2430,1898L2438,1895L2443,1895L2443,1898L2445,1900L2449,1900L2451,1903L2454,1903L2456,1900L2460,1900L2460,1903L2464,1905L2467,1908L2469,1908L2469,1910L2471,1910L2473,1913L2473,1916L2475,1916L2480,1921L2486,1921L2486,1918L2493,1918L2503,1923L2506,1926L2512,1928L2514,1928L2514,1931L2521,1938L2529,1937L2532,1938L2540,1945L2542,1946L2542,1949L2545,1949L2547,1951L2547,1954L2549,1951L2560,1956L2564,1956L2564,1959L2566,1959L2568,1961L2581,1961L2581,1969L2577,1969L2577,1974L2599,1974L2605,1977L2605,1979L2607,1979L2610,1982L2610,1984L2612,1984L2612,1987L2620,1987L2623,1989L2623,1992L2620,1995L2605,1995L2603,1997L2599,2000L2592,2000L2592,2000L2592,2000z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3067,3734L3060,3734L3060,3741L3058,3744L3058,3759L3060,3759L3060,3762L3062,3762L3064,3764L3064,3767L3067,3769L3069,3769L3073,3775L3073,3777L3075,3780L3080,3777L3095,3777L3101,3785L3103,3785L3114,3790L3116,3792L3127,3792L3127,3790L3132,3790L3134,3787L3138,3787L3142,3790L3145,3790L3147,3792L3155,3792L3155,3795L3158,3795L3158,3792L3162,3792L3162,3790L3166,3790L3173,3787L3173,3785L3177,3785L3177,3782L3179,3782L3184,3777L3186,3777L3188,3775L3188,3772L3192,3767L3194,3767L3194,3762L3196,3759L3196,3757L3199,3757L3199,3754L3194,3752L3194,3746L3193,3745L3194,3742L3191,3738L3193,3732L3195,3728L3199,3726L3201,3721L3205,3718L3203,3718L3194,3713L3194,3711L3192,3711L3192,3706L3186,3698L3186,3696L3184,3696L3179,3693L3177,3693L3173,3690L3171,3688L3168,3688L3168,3683L3166,3680L3160,3680L3158,3678L3155,3678L3155,3675L3151,3675L3147,3673L3145,3668L3138,3660L3136,3660L3136,3662L3132,3668L3125,3668L3125,3662L3127,3662L3127,3660L3119,3650L3116,3650L3108,3639L3103,3637L3101,3634L3099,3634L3097,3637L3095,3637L3095,3639L3093,3642L3084,3642L3082,3639L3082,3642L3077,3647L3075,3647L3075,3650L3073,3650L3073,3652L3075,3652L3075,3668L3073,3673L3073,3675L3069,3680L3071,3683L3071,3685L3069,3690L3069,3693L3064,3693L3064,3696L3067,3696L3067,3701L3064,3703L3067,3703L3067,3706L3069,3706L3069,3708L3067,3708L3067,3711L3064,3713L3067,3716L3067,3734L3067,3734L3067,3734z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6302,1260L6298,1260L6298,1258L6296,1258L6300,1255L6305,1255L6305,1258L6307,1258L6307,1255L6309,1255L6309,1252L6313,1255L6313,1258L6315,1258L6318,1260L6324,1260L6326,1263L6326,1265L6328,1265L6328,1268L6346,1268L6348,1270L6348,1278L6352,1281L6352,1283L6350,1283L6350,1288L6352,1288L6352,1291L6350,1293L6350,1298L6354,1298L6357,1301L6359,1301L6359,1303L6367,1303L6367,1301L6370,1301L6374,1303L6380,1303L6383,1306L6385,1306L6385,1303L6387,1303L6387,1301L6393,1301L6393,1303L6396,1303L6400,1306L6402,1309L6402,1316L6404,1319L6406,1324L6409,1326L6409,1329L6413,1329L6415,1334L6415,1342L6419,1344L6419,1347L6424,1349L6426,1349L6428,1352L6430,1352L6430,1354L6432,1354L6432,1357L6437,1357L6439,1360L6441,1360L6443,1362L6445,1362L6445,1365L6448,1365L6450,1367L6450,1370L6454,1370L6458,1375L6461,1375L6463,1377L6469,1377L6469,1380L6471,1380L6476,1383L6478,1385L6480,1385L6482,1388L6486,1388L6489,1390L6491,1390L6491,1393L6493,1395L6495,1395L6502,1400L6517,1400L6521,1403L6521,1405L6523,1405L6525,1408L6532,1408L6532,1413L6530,1416L6528,1423L6528,1428L6532,1428L6534,1431L6536,1428L6543,1428L6549,1436L6549,1434L6562,1434L6564,1436L6564,1426L6567,1423L6567,1421L6569,1421L6569,1418L6571,1418L6571,1416L6573,1416L6573,1411L6577,1411L6580,1408L6580,1400L6577,1398L6575,1398L6573,1395L6571,1390L6571,1388L6573,1383L6575,1383L6575,1380L6573,1377L6573,1375L6569,1375L6567,1377L6562,1377L6562,1375L6560,1375L6562,1372L6560,1372L6560,1370L6551,1370L6551,1367L6554,1367L6554,1360L6556,1360L6560,1357L6562,1354L6564,1354L6564,1357L6575,1357L6580,1360L6582,1360L6586,1354L6586,1352L6588,1349L6588,1347L6590,1347L6590,1349L6595,1347L6590,1342L6597,1342L6597,1339L6586,1339L6586,1337L6606,1337L6608,1332L6606,1332L6606,1324L6608,1319L6608,1316L6610,1316L6612,1319L6614,1319L6616,1321L6621,1321L6621,1319L6627,1319L6632,1316L6634,1314L6636,1314L6636,1309L6638,1309L6645,1316L6645,1319L6647,1319L6647,1321L6645,1321L6636,1326L6636,1329L6634,1329L6636,1332L6638,1332L6642,1334L6642,1337L6653,1337L6653,1334L6666,1334L6666,1337L6668,1337L6673,1339L6677,1334L6681,1334L6681,1332L6684,1329L6690,1329L6692,1332L6692,1329L6694,1329L6690,1324L6692,1324L6697,1326L6699,1326L6703,1321L6705,1321L6707,1319L6712,1319L6712,1316L6710,1314L6697,1314L6697,1311L6694,1311L6692,1309L6690,1309L6686,1311L6686,1303L6677,1303L6677,1298L6673,1293L6671,1293L6671,1301L6666,1301L6666,1306L6664,1306L6660,1303L6658,1303L6658,1306L6653,1303L6647,1303L6647,1298L6645,1296L6640,1296L6638,1298L6638,1296L6636,1296L6636,1293L6629,1293L6629,1291L6634,1291L6638,1288L6638,1286L6640,1286L6640,1283L6645,1281L6649,1281L6649,1275L6653,1275L6660,1273L6660,1270L6658,1270L6658,1268L6653,1268L6653,1270L6647,1270L6645,1275L6642,1275L6642,1278L6640,1278L6640,1275L6634,1275L6632,1281L6627,1286L6623,1288L6614,1288L6608,1296L6603,1296L6599,1298L6599,1303L6595,1306L6593,1309L6590,1309L6590,1311L6588,1311L6586,1314L6586,1319L6588,1321L6588,1324L6582,1324L6577,1321L6575,1321L6571,1316L6573,1316L6573,1309L6569,1306L6569,1303L6560,1303L6556,1306L6534,1306L6530,1288L6530,1278L6515,1278L6515,1265L6517,1265L6517,1245L6508,1250L6508,1245L6504,1240L6502,1235L6499,1235L6493,1232L6493,1230L6486,1224L6484,1222L6482,1222L6471,1227L6452,1227L6445,1224L6437,1224L6426,1227L6413,1227L6404,1230L6402,1227L6398,1224L6385,1209L6374,1203L6373,1204L6370,1207L6367,1209L6364,1209L6349,1222L6345,1230L6340,1233L6339,1230L6341,1222L6336,1221L6334,1216L6321,1216L6318,1214L6315,1213L6311,1213L6309,1214L6312,1218L6310,1219L6304,1219L6301,1217L6303,1213L6303,1207L6300,1204L6299,1198L6299,1194L6301,1189L6298,1186L6308,1161L6307,1161L6292,1166L6285,1166L6281,1168L6274,1168L6259,1173L6257,1173L6255,1176L6248,1176L6244,1179L6237,1179L6237,1301L6266,1301L6268,1298L6266,1298L6266,1296L6263,1288L6263,1281L6268,1281L6268,1278L6270,1278L6270,1275L6272,1275L6272,1273L6287,1273L6292,1268L6292,1265L6289,1263L6292,1263L6294,1260L6294,1263L6302,1263L6302,1260L6302,1260L6302,1260z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2902,2295L2900,2293L2893,2293L2893,2290L2898,2288L2898,2290L2900,2290L2902,2293L2904,2293L2904,2288L2906,2288L2906,2285L2908,2288L2908,2293L2906,2295L2902,2295L2902,2295L2902,2295zM2997,2403L2995,2403L2995,2408L2997,2408L2997,2410L2999,2410L2999,2413L2997,2413L2997,2415L2999,2418L3002,2418L3002,2415L3006,2415L3006,2418L3008,2418L3008,2420L3006,2420L3002,2426L2999,2426L2999,2428L2995,2428L2995,2431L2993,2428L2991,2431L2984,2431L2982,2433L2982,2438L2984,2441L2984,2446L2980,2451L2980,2454L2978,2456L2976,2456L2995,2482L2997,2482L2999,2487L2999,2489L2997,2492L2997,2494L2995,2494L2991,2497L2989,2500L2989,2505L2978,2505L2973,2507L2973,2512L2965,2512L2965,2515L2958,2515L2958,2517L2952,2517L2952,2515L2947,2515L2943,2520L2939,2520L2939,2533L2937,2533L2934,2535L2926,2525L2926,2522L2919,2522L2919,2525L2917,2525L2915,2522L2906,2522L2906,2525L2902,2525L2902,2520L2898,2515L2891,2515L2889,2517L2887,2517L2887,2512L2882,2512L2882,2515L2885,2515L2885,2520L2887,2520L2887,2522L2891,2528L2893,2528L2898,2533L2898,2535L2900,2535L2898,2538L2898,2548L2900,2551L2900,2553L2902,2556L2902,2558L2904,2563L2904,2568L2902,2568L2902,2571L2921,2571L2921,2581L2915,2581L2915,2584L2911,2586L2904,2586L2904,2589L2902,2589L2902,2599L2900,2599L2895,2604L2893,2602L2889,2604L2889,2607L2887,2607L2885,2609L2885,2612L2882,2612L2882,2609L2880,2609L2876,2614L2872,2614L2872,2622L2867,2622L2865,2624L2865,2627L2863,2630L2861,2630L2861,2624L2863,2624L2863,2622L2861,2622L2861,2619L2856,2619L2852,2622L2850,2622L2850,2624L2848,2624L2846,2627L2839,2627L2824,2612L2824,2609L2822,2604L2822,2596L2815,2581L2815,2573L2813,2571L2811,2571L2807,2563L2802,2558L2798,2558L2802,2551L2807,2548L2813,2540L2813,2538L2809,2538L2809,2533L2807,2530L2804,2530L2804,2528L2802,2528L2802,2522L2800,2520L2800,2517L2798,2515L2798,2510L2796,2502L2798,2497L2798,2474L2802,2474L2802,2471L2804,2469L2802,2469L2802,2461L2804,2461L2807,2459L2807,2456L2809,2456L2809,2454L2807,2454L2807,2446L2796,2446L2796,2449L2778,2449L2776,2451L2772,2451L2772,2449L2761,2449L2761,2451L2759,2451L2759,2454L2757,2451L2752,2451L2733,2423L2731,2423L2729,2426L2729,2423L2724,2423L2722,2420L2718,2418L2714,2420L2711,2420L2711,2423L2703,2423L2701,2420L2690,2420L2688,2423L2681,2423L2681,2420L2679,2420L2679,2415L2677,2415L2677,2413L2675,2410L2670,2410L2670,2408L2668,2405L2668,2392L2670,2387L2672,2387L2672,2385L2670,2380L2670,2377L2664,2369L2662,2359L2659,2354L2657,2354L2655,2352L2655,2349L2653,2347L2651,2349L2649,2349L2649,2352L2644,2352L2644,2349L2646,2344L2651,2339L2651,2336L2653,2331L2655,2329L2655,2321L2657,2313L2657,2308L2659,2306L2662,2298L2664,2295L2666,2290L2668,2288L2677,2283L2679,2275L2683,2270L2688,2267L2692,2267L2696,2265L2701,2265L2698,2267L2694,2267L2692,2270L2688,2270L2683,2273L2683,2280L2685,2283L2685,2285L2690,2290L2688,2290L2690,2298L2692,2298L2692,2311L2688,2311L2688,2316L2685,2316L2685,2321L2683,2321L2679,2329L2679,2334L2681,2334L2681,2336L2683,2336L2683,2341L2689,2344L2689,2346L2688,2349L2688,2354L2690,2354L2692,2357L2694,2357L2696,2354L2701,2354L2703,2352L2703,2349L2705,2349L2705,2347L2707,2347L2707,2329L2705,2326L2702,2324L2701,2318L2698,2316L2697,2312L2696,2308L2695,2306L2695,2297L2696,2295L2696,2293L2703,2293L2707,2288L2709,2288L2711,2285L2716,2285L2720,2283L2726,2283L2729,2280L2731,2280L2733,2278L2735,2278L2736,2276L2737,2275L2739,2278L2742,2278L2742,2276L2743,2275L2742,2272L2742,2270L2736,2270L2733,2273L2731,2273L2731,2267L2729,2262L2731,2260L2731,2257L2735,2252L2739,2252L2739,2255L2742,2257L2742,2265L2744,2270L2744,2273L2746,2273L2746,2275L2761,2275L2765,2278L2770,2278L2774,2280L2776,2283L2778,2283L2781,2285L2785,2295L2783,2295L2783,2298L2785,2303L2785,2306L2787,2308L2798,2308L2804,2306L2817,2306L2820,2303L2837,2303L2838,2304L2839,2303L2843,2303L2846,2306L2846,2311L2850,2313L2851,2316L2854,2316L2856,2318L2856,2316L2861,2318L2865,2318L2874,2324L2880,2321L2885,2321L2885,2318L2887,2316L2893,2316L2893,2311L2898,2311L2902,2308L2902,2311L2911,2311L2913,2308L2911,2308L2908,2306L2898,2306L2895,2303L2924,2303L2926,2301L2963,2301L2963,2303L2952,2303L2952,2306L2937,2306L2938,2309L2944,2316L2946,2318L2946,2322L2949,2326L2951,2322L2954,2322L2957,2325L2960,2327L2964,2330L2966,2331L2969,2327L2973,2328L2977,2333L2986,2339L2989,2339L2993,2344L2993,2347L2994,2352L2992,2356L2994,2360L2995,2365L2998,2371L3003,2371L3004,2369L3010,2369L3015,2372L3021,2380L3019,2382L3017,2382L3015,2385L3015,2387L3012,2387L3012,2390L3010,2390L3008,2392L3006,2392L3002,2395L2999,2395L2999,2403L2997,2403L2997,2403L2997,2403z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7569,2311L7572,2311L7572,2316L7569,2321L7569,2318L7565,2313L7565,2311L7569,2311L7569,2311L7569,2311zM7643,1967L7645,1967L7643,1967L7643,1964L7643,1967L7643,1967L7643,1967zM7600,2326L7600,2324L7598,2321L7593,2321L7593,2318L7591,2318L7591,2316L7589,2316L7589,2318L7587,2318L7587,2316L7585,2316L7582,2311L7587,2306L7589,2306L7589,2308L7593,2308L7593,2306L7595,2306L7595,2303L7598,2303L7598,2301L7600,2301L7600,2298L7598,2295L7600,2293L7602,2295L7608,2295L7608,2293L7617,2293L7617,2290L7619,2290L7621,2295L7624,2295L7628,2298L7630,2298L7630,2288L7628,2288L7624,2285L7621,2283L7621,2273L7619,2273L7621,2270L7624,2270L7626,2267L7626,2265L7628,2267L7632,2267L7632,2270L7639,2270L7637,2267L7637,2265L7639,2262L7637,2260L7645,2260L7647,2257L7652,2257L7658,2250L7660,2250L7660,2247L7663,2247L7663,2250L7665,2250L7667,2247L7669,2247L7669,2232L7667,2232L7667,2227L7669,2216L7671,2214L7671,2209L7665,2201L7667,2199L7667,2196L7663,2193L7663,2181L7665,2181L7665,2178L7665,2181L7667,2181L7667,2176L7669,2173L7669,2171L7667,2171L7669,2171L7669,2165L7667,2163L7667,2160L7665,2160L7669,2160L7669,2158L7671,2158L7671,2150L7667,2145L7665,2145L7660,2140L7658,2135L7658,2132L7660,2132L7665,2130L7665,2127L7667,2127L7665,2125L7663,2125L7663,2127L7658,2122L7656,2122L7656,2117L7654,2117L7652,2120L7652,2117L7650,2112L7650,2109L7647,2109L7647,2114L7645,2114L7643,2112L7641,2107L7641,2097L7637,2097L7637,2094L7634,2089L7632,2086L7630,2086L7621,2076L7621,2074L7617,2074L7617,2069L7615,2063L7611,2058L7606,2058L7606,2053L7606,2056L7600,2048L7600,2046L7602,2043L7602,2040L7600,2040L7598,2038L7591,2038L7591,2035L7589,2035L7587,2033L7585,2033L7585,2030L7578,2028L7578,2025L7576,2025L7574,2023L7569,2023L7565,2020L7569,2018L7569,2015L7572,2018L7572,2010L7569,2007L7580,2007L7582,2010L7587,2010L7587,2007L7589,2007L7589,2005L7593,2005L7593,2002L7591,2002L7591,2000L7593,2000L7595,1997L7598,1997L7598,1995L7593,1989L7589,1987L7587,1984L7580,1984L7580,1982L7582,1982L7587,1977L7587,1974L7582,1974L7576,1967L7572,1967L7565,1969L7563,1972L7563,1974L7561,1977L7561,1974L7559,1974L7554,1972L7550,1972L7548,1969L7546,1969L7546,1967L7543,1967L7543,1964L7539,1959L7539,1946L7541,1946L7541,1941L7537,1941L7535,1944L7533,1944L7533,1936L7530,1933L7528,1933L7526,1931L7526,1928L7522,1926L7520,1923L7520,1921L7517,1921L7517,1918L7520,1918L7526,1910L7526,1908L7528,1905L7528,1908L7537,1913L7539,1913L7539,1916L7541,1918L7543,1918L7546,1916L7546,1913L7550,1905L7552,1905L7552,1908L7554,1908L7554,1913L7556,1913L7559,1910L7556,1910L7556,1908L7559,1905L7561,1905L7563,1910L7567,1916L7569,1916L7569,1910L7572,1908L7572,1905L7576,1905L7576,1908L7580,1910L7582,1908L7582,1905L7589,1905L7593,1900L7593,1895L7595,1893L7604,1890L7606,1887L7606,1890L7608,1890L7613,1893L7613,1898L7619,1898L7619,1900L7621,1900L7621,1903L7624,1900L7632,1900L7632,1903L7639,1903L7639,1900L7641,1903L7645,1903L7645,1905L7647,1905L7647,1908L7643,1913L7641,1913L7641,1921L7643,1921L7645,1926L7643,1926L7645,1931L7650,1933L7654,1933L7654,1938L7658,1941L7663,1941L7663,1946L7667,1946L7671,1944L7678,1944L7678,1946L7676,1946L7676,1949L7673,1951L7669,1954L7669,1956L7667,1956L7667,1954L7665,1954L7663,1956L7663,1964L7658,1964L7656,1967L7650,1967L7652,1967L7650,1967L7650,1969L7647,1967L7647,1964L7643,1964L7643,1967L7645,1967L7645,1972L7647,1974L7643,1977L7641,1987L7641,1989L7637,1989L7628,2000L7626,1997L7624,2000L7624,2005L7619,2010L7619,2020L7617,2023L7615,2028L7615,2033L7617,2035L7617,2038L7619,2038L7619,2043L7621,2043L7621,2048L7626,2053L7630,2053L7639,2063L7639,2066L7637,2066L7637,2071L7641,2076L7643,2081L7645,2081L7645,2084L7647,2086L7652,2089L7654,2091L7656,2091L7656,2094L7658,2099L7663,2102L7665,2107L7667,2109L7669,2109L7671,2112L7676,2114L7676,2117L7676,2114L7676,2120L7678,2120L7678,2117L7682,2117L7682,2120L7686,2122L7691,2122L7691,2125L7689,2125L7689,2130L7693,2135L7697,2145L7702,2148L7704,2148L7706,2153L7706,2163L7708,2163L7708,2165L7710,2171L7710,2176L7712,2181L7712,2183L7715,2183L7715,2188L7717,2199L7715,2204L7715,2214L7719,2227L7721,2227L7721,2232L7719,2232L7715,2237L7715,2242L7719,2247L7715,2247L7715,2260L7715,2255L7715,2262L7712,2262L7712,2265L7715,2265L7715,2267L7712,2270L7712,2273L7710,2273L7708,2275L7708,2283L7706,2283L7706,2280L7704,2280L7699,2285L7695,2285L7695,2288L7689,2293L7684,2293L7684,2295L7682,2295L7682,2301L7676,2301L7676,2303L7673,2303L7669,2306L7667,2308L7665,2308L7663,2311L7658,2311L7658,2308L7654,2308L7654,2306L7652,2306L7650,2303L7645,2303L7647,2306L7645,2306L7645,2308L7647,2311L7647,2316L7643,2316L7643,2318L7647,2318L7647,2321L7643,2326L7646,2327L7643,2330L7641,2330L7641,2339L7638,2339L7636,2337L7630,2341L7630,2347L7626,2347L7621,2349L7619,2349L7615,2352L7613,2352L7613,2354L7611,2354L7611,2357L7608,2357L7608,2359L7606,2362L7606,2364L7600,2369L7598,2369L7593,2372L7591,2369L7595,2364L7591,2364L7591,2357L7593,2349L7593,2331L7595,2331L7598,2326L7600,2326L7600,2326L7600,2326z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5700,1806L5700,1798L5696,1798L5694,1796L5687,1780L5685,1778L5683,1778L5683,1773L5681,1773L5681,1770L5679,1770L5679,1768L5676,1765L5676,1763L5674,1757L5670,1757L5670,1755L5668,1752L5668,1747L5663,1742L5663,1740L5661,1740L5655,1732L5650,1732L5648,1734L5646,1732L5644,1732L5644,1734L5642,1734L5642,1729L5644,1729L5644,1727L5646,1722L5646,1719L5648,1719L5648,1706L5650,1699L5650,1696L5653,1691L5683,1696L5696,1686L5702,1676L5720,1671L5722,1671L5726,1661L5737,1653L5722,1638L5718,1630L5709,1622L5765,1604L5765,1602L5770,1599L5804,1607L5923,1696L5971,1701L5973,1699L5975,1699L5982,1701L5999,1704L6001,1706L6001,1712L6003,1712L6003,1717L6006,1719L6023,1719L6025,1717L6025,1719L6027,1719L6029,1722L6029,1724L6032,1732L6032,1734L6038,1740L6038,1745L6038,1742L6036,1742L6036,1745L6040,1750L6040,1747L6042,1747L6042,1750L6049,1750L6051,1752L6051,1755L6049,1755L6049,1752L6047,1752L6045,1755L6049,1757L6053,1763L6053,1765L6055,1765L6055,1763L6058,1763L6060,1768L6060,1770L6062,1770L6064,1773L6068,1773L6073,1778L6068,1778L6071,1783L6071,1785L6073,1785L6075,1788L6075,1798L6073,1798L6071,1796L6068,1796L6068,1798L6073,1803L6073,1806L6075,1808L6079,1816L6079,1819L6084,1819L6084,1826L6086,1831L6090,1836L6090,1844L6092,1844L6092,1842L6097,1847L6101,1849L6103,1847L6112,1847L6107,1852L6105,1852L6105,1857L6112,1857L6112,1859L6114,1859L6114,1862L6142,1900L6214,1910L6214,1908L6227,1931L6209,1997L6084,2048L6016,2058L5997,2086L5991,2109L5986,2109L5971,2089L5965,2091L5939,2089L5934,2086L5908,2086L5906,2084L5902,2086L5897,2084L5895,2084L5895,2081L5893,2081L5893,2079L5884,2079L5884,2081L5882,2081L5880,2084L5880,2091L5878,2097L5878,2099L5880,2102L5880,2107L5878,2107L5878,2109L5874,2114L5871,2114L5869,2117L5869,2112L5867,2112L5867,2102L5863,2102L5863,2094L5858,2091L5856,2089L5856,2081L5850,2074L5843,2069L5841,2069L5841,2066L5837,2061L5837,2058L5832,2053L5832,2048L5830,2046L5830,2043L5828,2043L5826,2040L5826,2035L5824,2035L5824,2028L5822,2028L5822,2023L5819,2015L5815,2012L5813,2010L5815,2010L5815,2007L5813,2007L5813,2005L5811,2005L5806,1997L5804,1997L5802,1995L5800,1995L5793,1987L5787,1987L5780,1979L5780,1977L5776,1972L5776,1969L5774,1969L5772,1967L5770,1961L5770,1959L5767,1956L5770,1951L5770,1949L5767,1946L5767,1944L5765,1941L5765,1938L5763,1938L5765,1928L5765,1926L5767,1921L5763,1903L5761,1900L5757,1893L5757,1887L5752,1882L5750,1877L5750,1875L5744,1867L5739,1865L5737,1865L5733,1862L5731,1857L5726,1857L5726,1859L5724,1857L5722,1857L5722,1852L5720,1849L5720,1847L5718,1847L5718,1844L5715,1844L5713,1839L5715,1839L5715,1826L5713,1826L5713,1824L5711,1824L5711,1819L5707,1814L5705,1808L5702,1808L5702,1811L5700,1808L5700,1806L5700,1806L5700,1806z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5228,1258L5226,1258L5226,1260L5217,1273L5219,1273L5219,1283L5217,1281L5213,1281L5213,1275L5211,1275L5211,1273L5209,1273L5206,1268L5204,1268L5196,1263L5193,1263L5193,1260L5196,1258L5198,1258L5198,1255L5196,1255L5196,1252L5193,1250L5193,1247L5196,1247L5196,1245L5200,1245L5200,1237L5204,1235L5209,1235L5209,1237L5211,1237L5211,1235L5209,1232L5209,1227L5215,1227L5215,1230L5217,1232L5222,1232L5222,1235L5224,1235L5224,1237L5226,1237L5226,1240L5230,1240L5232,1242L5237,1242L5237,1245L5241,1245L5243,1247L5245,1247L5248,1250L5243,1252L5237,1252L5237,1255L5239,1255L5239,1260L5235,1260L5232,1263L5230,1263L5230,1258L5228,1258L5228,1258L5228,1258z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7219,1917L7222,1921L7226,1921L7226,1918L7224,1913L7220,1913L7219,1917L7219,1917L7219,1917zM7219,1895L7219,1890L7221,1890L7221,1893L7223,1895L7223,1900L7229,1900L7229,1898L7232,1898L7232,1893L7229,1893L7229,1887L7232,1887L7232,1885L7234,1885L7236,1882L7236,1880L7234,1877L7234,1875L7236,1875L7236,1877L7240,1877L7240,1875L7242,1877L7245,1875L7245,1885L7247,1887L7247,1900L7249,1908L7251,1908L7251,1921L7253,1921L7253,1954L7255,1954L7253,1956L7251,1951L7247,1949L7242,1951L7242,1967L7240,1961L7238,1961L7238,1954L7236,1954L7236,1949L7233,1947L7234,1933L7232,1928L7231,1921L7228,1913L7225,1910L7221,1907L7211,1906L7210,1907L7214,1912L7213,1913L7212,1914L7214,1923L7213,1928L7210,1930L7210,1919L7208,1914L7206,1912L7205,1914L7206,1916L7204,1926L7202,1931L7200,1932L7197,1929L7197,1933L7187,1940L7183,1938L7181,1934L7178,1932L7178,1937L7173,1940L7166,1940L7160,1949L7154,1949L7151,1903L7149,1900L7149,1895L7151,1895L7151,1893L7149,1890L7147,1890L7147,1893L7145,1890L7145,1887L7147,1885L7145,1885L7141,1880L7141,1875L7143,1872L7143,1870L7145,1870L7147,1865L7145,1865L7145,1859L7147,1859L7145,1859L7145,1857L7138,1857L7138,1854L7136,1852L7132,1852L7130,1849L7128,1849L7125,1844L7130,1839L7130,1836L7132,1836L7134,1839L7136,1836L7136,1834L7138,1831L7138,1826L7145,1826L7149,1829L7151,1829L7154,1824L7149,1824L7149,1819L7147,1816L7145,1819L7143,1819L7138,1814L7138,1811L7132,1808L7130,1808L7128,1806L7128,1803L7130,1798L7130,1796L7134,1796L7134,1791L7141,1791L7141,1788L7138,1788L7138,1785L7134,1785L7136,1783L7141,1783L7145,1788L7145,1791L7149,1793L7154,1793L7151,1791L7151,1785L7156,1788L7156,1796L7160,1798L7162,1801L7169,1801L7169,1793L7171,1793L7171,1796L7173,1796L7175,1798L7175,1801L7177,1803L7175,1806L7177,1811L7177,1816L7175,1819L7175,1824L7180,1824L7182,1826L7186,1826L7190,1829L7210,1829L7210,1826L7216,1826L7216,1829L7242,1829L7247,1834L7249,1834L7249,1839L7247,1839L7247,1836L7242,1836L7242,1839L7245,1839L7242,1842L7242,1849L7240,1849L7240,1854L7236,1857L7234,1854L7234,1862L7229,1862L7225,1865L7221,1865L7221,1862L7219,1862L7216,1867L7214,1870L7216,1872L7214,1875L7212,1875L7212,1880L7216,1885L7216,1893L7219,1895L7219,1895L7219,1895z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4907,575L4899,576L4896,579L4906,582L4911,579L4910,575L4907,575L4907,575L4907,575zM4914,575L4927,574L4933,573L4937,570L4933,567L4929,568L4927,566L4922,566L4923,568L4919,570L4922,572L4914,575L4914,575L4914,575zM5006,501L5010,507L5013,508L5017,507L5015,501L5006,501L5006,501L5006,501zM5034,434L5029,436L5031,441L5035,438L5035,435L5034,434L5034,434L5034,434zM5054,422L5050,422L5048,425L5046,425L5042,426L5040,430L5036,431L5038,435L5041,432L5048,429L5052,431L5054,428L5057,425L5054,422L5054,422L5054,422zM5072,417L5067,417L5059,418L5056,420L5059,423L5069,423L5073,422L5072,417L5072,417L5072,417zM5216,353L5211,353L5211,358L5214,359L5217,359L5216,353L5216,353L5216,353zM5227,358L5232,360L5236,362L5239,359L5240,356L5235,355L5231,351L5227,351L5223,352L5227,358L5227,358L5227,358zM5290,342L5299,345L5309,345L5330,340L5336,334L5330,333L5323,334L5319,337L5310,337L5306,340L5296,341L5291,339L5290,342L5290,342L5290,342zM5109,477L5109,480L5111,482L5111,485L5089,487L5085,490L5085,495L5087,498L5087,500L5085,503L5083,508L5083,515L5079,521L5079,523L5076,523L5072,528L5068,531L5061,538L5061,541L5068,541L5070,544L5074,544L5074,554L5070,559L5040,556L5038,559L5033,559L5029,564L5027,564L5025,566L5018,572L5020,574L5014,582L5016,584L5018,589L5020,592L5018,592L5016,595L5016,597L5018,600L5016,600L5016,607L5018,610L5020,610L5020,612L5022,612L5022,620L5020,623L5020,628L5018,630L5018,633L5025,638L5029,638L5035,643L5038,646L5038,648L5033,653L5033,656L5020,656L5020,658L5022,658L5022,661L5025,661L5025,666L5027,666L5031,671L5031,676L5029,679L5029,686L5027,686L5022,691L5018,691L5018,694L5014,694L5014,691L5012,694L5009,694L5012,697L5012,699L5009,702L5005,702L5009,712L5009,714L5007,714L5007,719L5005,725L4999,725L4999,722L4996,719L4992,719L4988,717L4981,717L4981,714L4978,714L4979,702L4978,698L4981,695L4980,691L4977,688L4974,691L4974,696L4975,700L4975,704L4973,704L4970,707L4973,709L4973,714L4968,714L4966,719L4964,722L4964,719L4962,719L4957,725L4955,725L4955,722L4953,722L4949,717L4947,717L4947,719L4949,719L4951,722L4949,725L4944,725L4940,730L4936,732L4934,735L4929,735L4927,740L4923,740L4923,742L4914,748L4910,748L4910,750L4908,750L4908,753L4895,753L4892,755L4886,755L4882,753L4877,753L4877,755L4875,755L4873,753L4869,750L4869,753L4864,753L4864,750L4866,748L4869,748L4864,745L4851,745L4851,742L4847,742L4847,740L4840,740L4838,737L4838,734L4836,732L4834,729L4836,725L4835,721L4839,721L4842,716L4844,717L4843,720L4843,723L4847,725L4849,722L4846,714L4849,710L4849,706L4844,708L4842,712L4839,712L4835,715L4830,716L4827,718L4827,705L4831,700L4844,700L4845,697L4828,695L4828,699L4825,702L4823,694L4824,690L4827,686L4831,688L4839,689L4843,687L4840,681L4836,682L4833,685L4830,685L4831,682L4826,682L4823,685L4820,684L4818,681L4820,678L4823,675L4833,676L4833,673L4824,672L4816,666L4818,664L4825,666L4826,663L4819,662L4818,661L4819,657L4811,657L4810,653L4817,650L4824,651L4825,649L4822,648L4820,645L4815,642L4819,641L4821,643L4824,641L4824,638L4821,637L4818,635L4824,634L4830,629L4826,628L4820,632L4815,632L4816,626L4820,628L4820,626L4822,623L4839,622L4836,620L4827,620L4825,619L4825,615L4828,616L4831,618L4833,618L4832,614L4835,616L4838,615L4834,611L4840,608L4842,613L4845,610L4849,609L4850,612L4855,612L4857,613L4867,611L4873,612L4875,611L4874,609L4874,604L4878,603L4885,603L4889,602L4888,600L4875,600L4873,603L4872,607L4861,609L4857,607L4858,604L4862,604L4877,592L4884,591L4887,588L4898,587L4900,590L4896,592L4890,593L4891,595L4903,593L4904,590L4902,587L4905,587L4910,590L4912,589L4908,586L4910,583L4915,582L4919,585L4921,584L4917,580L4936,576L4939,573L4944,571L4948,573L4953,571L4955,575L4958,579L4961,579L4964,578L4975,576L4979,578L4985,577L4984,576L4980,573L4981,571L4985,570L4985,568L4977,569L4972,572L4960,575L4957,569L4948,568L4948,565L4952,563L4961,562L4960,560L4955,560L4952,557L4956,556L4961,556L4964,553L4967,552L4968,550L4967,548L4973,546L4984,538L4998,537L5001,536L4999,534L4994,535L4992,532L4985,530L4979,531L4978,529L4982,525L4987,524L4993,526L4994,528L5010,528L5008,526L5001,524L5003,521L5010,520L5012,522L5018,520L5020,521L5017,519L5018,515L5016,510L5019,510L5025,513L5024,510L5021,507L5019,505L5017,500L5021,500L5025,503L5025,499L5018,495L5018,492L5022,491L5024,490L5025,487L5032,487L5035,488L5036,485L5034,482L5034,479L5039,479L5042,485L5045,483L5042,475L5037,475L5032,472L5036,471L5045,472L5049,470L5050,466L5065,460L5063,458L5063,455L5068,454L5074,452L5075,449L5080,449L5079,446L5083,444L5085,446L5088,442L5091,442L5094,434L5093,432L5097,431L5108,424L5116,423L5121,423L5124,421L5131,423L5131,420L5134,418L5135,415L5121,416L5120,418L5115,418L5112,416L5092,420L5089,419L5084,419L5080,421L5076,420L5075,418L5086,414L5105,412L5105,409L5100,407L5094,406L5090,408L5084,406L5082,402L5083,399L5089,400L5092,397L5095,397L5097,395L5102,393L5107,396L5112,396L5113,391L5129,383L5132,384L5134,390L5133,394L5134,397L5143,395L5146,397L5144,399L5142,401L5142,403L5145,405L5148,406L5150,404L5151,400L5155,400L5157,405L5159,404L5158,400L5160,397L5164,398L5168,397L5168,395L5171,393L5176,389L5173,387L5169,389L5167,392L5164,388L5162,392L5148,395L5146,392L5149,390L5151,387L5153,385L5153,382L5155,379L5161,379L5164,379L5164,376L5166,373L5185,381L5187,380L5191,380L5194,383L5198,384L5201,382L5197,379L5199,375L5188,377L5184,376L5182,373L5179,375L5178,372L5188,369L5193,370L5193,366L5197,365L5200,368L5201,366L5201,360L5202,356L5204,353L5206,352L5208,354L5208,358L5210,361L5212,363L5215,361L5216,362L5219,362L5221,360L5224,360L5226,363L5234,365L5231,367L5231,371L5234,372L5235,368L5239,367L5240,363L5246,361L5248,363L5249,366L5247,368L5247,373L5248,377L5252,377L5253,371L5252,366L5255,366L5258,368L5259,367L5258,364L5256,362L5252,362L5248,360L5248,356L5255,351L5264,354L5264,357L5265,362L5266,367L5270,368L5271,366L5271,361L5278,360L5281,364L5287,365L5289,364L5289,361L5283,361L5280,358L5272,359L5269,358L5269,354L5284,350L5287,350L5289,352L5291,351L5295,351L5300,353L5304,351L5330,345L5336,340L5339,346L5340,345L5339,338L5341,334L5346,337L5350,337L5355,341L5357,339L5354,333L5346,333L5346,330L5345,325L5347,322L5350,322L5352,324L5352,327L5354,330L5357,331L5359,333L5362,334L5363,326L5367,323L5371,325L5373,328L5375,324L5377,327L5377,330L5382,332L5384,331L5384,328L5386,325L5394,323L5401,323L5409,327L5411,330L5401,332L5401,335L5396,340L5388,341L5386,344L5385,348L5383,348L5382,350L5378,353L5379,355L5382,356L5385,356L5386,354L5388,353L5389,350L5393,349L5410,337L5412,334L5414,334L5419,332L5423,332L5423,340L5417,340L5414,342L5422,343L5421,348L5425,350L5427,345L5433,344L5435,339L5440,338L5436,332L5436,329L5441,329L5443,325L5447,327L5453,327L5456,329L5458,329L5460,327L5466,327L5466,329L5475,329L5475,332L5473,332L5471,334L5469,334L5466,337L5462,337L5462,340L5466,340L5466,342L5464,342L5462,345L5456,345L5456,347L5464,347L5464,345L5469,345L5469,347L5473,342L5473,337L5479,334L5495,334L5495,337L5497,340L5505,340L5505,337L5508,340L5508,342L5510,342L5512,340L5521,340L5525,342L5523,345L5531,345L5531,347L5540,347L5544,352L5540,355L5529,355L5525,357L5523,357L5518,360L5501,360L5495,357L5475,357L5475,360L5486,360L5492,362L5505,362L5503,365L5508,365L5508,368L5518,368L5523,365L5523,368L5533,368L5536,370L5540,370L5540,378L5529,378L5527,375L5518,378L5516,378L5516,380L5512,380L5505,383L5501,383L5499,385L5495,385L5495,391L5492,391L5492,393L5482,393L5482,388L5484,385L5488,385L5488,383L5490,383L5495,380L5495,378L5490,373L5486,373L5486,370L5477,370L5471,368L5469,368L5469,365L5462,365L5458,362L5458,360L5447,360L5443,362L5440,362L5440,365L5414,365L5414,368L5408,370L5406,370L5404,373L5401,373L5404,375L5401,375L5399,380L5399,383L5397,383L5397,385L5395,385L5395,391L5397,393L5397,396L5395,398L5386,398L5382,401L5380,401L5380,403L5378,406L5378,408L5371,408L5371,406L5358,406L5358,403L5352,403L5349,401L5343,401L5341,403L5339,403L5336,406L5328,406L5326,408L5326,406L5315,406L5308,403L5302,403L5302,401L5300,398L5297,398L5297,396L5284,385L5274,385L5265,388L5265,391L5267,391L5267,393L5239,393L5243,396L5245,398L5245,403L5243,406L5241,406L5239,408L5235,411L5243,411L5241,413L5239,413L5237,416L5228,416L5224,413L5219,413L5209,411L5183,411L5183,419L5185,419L5185,424L5180,429L5172,429L5172,426L5170,426L5161,424L5161,426L5159,426L5146,431L5144,434L5144,436L5137,444L5131,444L5128,447L5128,449L5133,449L5137,454L5135,459L5118,470L5113,475L5109,477L5109,477L5109,477z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5208,707L5209,710L5209,713L5207,712L5205,709L5208,707L5208,707L5208,707zM5202,709L5203,716L5198,716L5196,714L5195,711L5202,709L5202,709L5202,709zM5137,814L5137,801L5141,796L5144,791L5146,788L5150,786L5150,783L5152,781L5152,776L5157,776L5157,778L5154,781L5154,783L5152,786L5150,791L5150,793L5148,793L5146,796L5144,804L5141,806L5141,809L5139,811L5139,814L5137,814M5209,758L5211,760L5206,763L5204,763L5204,765L5202,765L5202,773L5200,778L5200,781L5196,781L5196,783L5191,783L5191,788L5189,788L5187,791L5185,791L5185,788L5187,788L5189,786L5185,781L5185,770L5187,768L5189,768L5189,765L5191,765L5191,763L5193,763L5193,760L5200,758L5209,758L5209,758L5209,758zM5093,740L5090,740L5089,745L5086,751L5084,752L5082,757L5078,762L5074,760L5078,742L5080,743L5084,734L5087,731L5098,726L5097,734L5098,738L5093,740L5093,740L5093,740zM5071,714L5069,717L5071,722L5069,726L5065,731L5061,732L5054,732L5050,735L5047,739L5044,735L5041,735L5030,742L5023,741L5032,733L5029,731L5028,727L5031,726L5033,721L5035,719L5043,719L5045,724L5048,723L5048,718L5045,714L5046,710L5073,710L5071,714L5071,714L5071,714zM5109,477L5109,480L5111,482L5111,485L5089,487L5085,490L5085,495L5087,498L5087,500L5085,503L5083,508L5083,515L5079,521L5079,523L5076,523L5072,528L5068,531L5061,538L5061,541L5068,541L5070,544L5074,544L5074,554L5070,559L5040,556L5038,559L5033,559L5029,564L5027,564L5025,566L5018,572L5020,574L5014,582L5016,584L5018,589L5020,592L5018,592L5016,595L5016,597L5018,600L5016,600L5016,607L5018,610L5020,610L5020,612L5022,612L5022,620L5020,623L5020,628L5018,630L5018,633L5025,638L5029,638L5035,643L5038,646L5038,648L5033,653L5033,656L5020,656L5020,658L5022,658L5022,661L5025,661L5025,666L5027,666L5031,671L5031,676L5029,679L5029,686L5027,686L5022,691L5018,691L5018,694L5014,694L5014,691L5012,694L5009,694L5012,697L5012,699L5009,702L5005,702L5009,712L5009,714L5007,714L5007,719L5005,725L4999,725L4999,722L4996,719L4992,719L4990,722L4990,725L4992,725L4994,727L4994,730L4992,730L4992,732L4994,732L4994,737L4992,742L4994,742L4996,745L4999,745L5001,748L5000,752L5003,758L5007,755L5009,756L5005,760L5007,760L5007,765L5009,765L5012,768L5012,773L5014,776L5014,773L5018,773L5018,781L5020,786L5022,786L5025,788L5025,791L5029,791L5031,793L5031,796L5033,799L5040,799L5040,806L5035,806L5035,804L5033,804L5033,809L5035,809L5038,811L5038,814L5035,814L5033,811L5027,812L5032,817L5034,817L5034,819L5040,827L5044,829L5044,832L5042,834L5040,834L5042,839L5051,842L5055,842L5055,839L5074,839L5079,837L5081,837L5081,834L5079,834L5079,832L5076,829L5074,829L5074,827L5076,827L5076,824L5079,821L5081,821L5085,819L5092,819L5089,816L5089,814L5100,814L5105,816L5109,816L5115,814L5120,816L5122,816L5126,814L5126,809L5128,806L5131,801L5133,799L5135,799L5135,796L5137,793L5137,788L5139,786L5141,786L5141,783L5139,783L5139,781L5137,781L5141,776L5144,776L5144,773L5146,773L5144,770L5144,768L5146,765L5146,763L5144,763L5141,761L5140,757L5144,756L5147,760L5149,756L5146,753L5146,750L5148,750L5148,742L5144,742L5141,740L5152,740L5148,735L5154,735L5157,732L5154,730L5163,730L5170,724L5171,720L5174,719L5175,723L5179,727L5182,726L5183,723L5190,718L5194,721L5196,719L5194,715L5191,712L5187,712L5185,710L5185,708L5187,708L5192,709L5192,707L5200,707L5202,701L5205,702L5209,702L5214,696L5211,692L5207,690L5206,684L5202,682L5203,686L5198,685L5197,682L5197,676L5194,674L5192,678L5187,676L5186,673L5182,670L5178,671L5174,673L5172,671L5172,668L5161,668L5161,661L5159,658L5157,658L5159,656L5159,646L5157,646L5157,643L5159,643L5159,637L5163,635L5169,640L5170,636L5164,630L5163,626L5167,623L5168,620L5177,619L5175,614L5169,612L5164,607L5166,605L5169,608L5173,610L5180,605L5183,605L5185,602L5181,600L5181,598L5184,596L5187,600L5193,597L5193,595L5198,592L5189,592L5191,589L5198,587L5202,587L5206,584L5204,584L5204,582L5206,582L5209,584L5211,584L5211,582L5215,582L5217,577L5222,577L5222,574L5226,574L5226,577L5230,577L5230,574L5235,572L5237,572L5239,569L5248,569L5250,566L5250,564L5258,564L5258,561L5263,556L5263,554L5271,549L5276,549L5280,544L5280,541L5278,541L5276,538L5271,538L5267,536L5274,536L5274,533L5267,533L5265,531L5269,531L5269,528L5274,528L5276,526L5278,526L5278,523L5280,523L5282,521L5282,519L5287,518L5289,516L5280,514L5284,512L5293,513L5293,510L5289,510L5289,508L5304,508L5304,505L5300,505L5300,503L5302,498L5306,498L5308,500L5313,500L5310,498L5310,495L5313,498L5315,498L5315,500L5319,500L5321,503L5323,503L5326,500L5352,500L5352,498L5349,493L5347,490L5345,490L5345,487L5341,487L5339,485L5339,477L5341,477L5343,475L5345,475L5345,467L5347,467L5347,464L5345,464L5345,462L5341,462L5341,459L5339,459L5336,457L5336,452L5341,452L5341,447L5332,447L5332,442L5334,439L5334,436L5332,434L5334,431L5339,431L5339,429L5334,429L5321,419L5319,419L5319,416L5315,416L5310,413L5297,413L5293,411L5291,411L5291,408L5284,408L5282,406L5278,406L5276,403L5271,401L5269,401L5267,398L5261,398L5263,398L5263,396L5261,396L5258,393L5239,393L5243,396L5245,398L5245,403L5243,406L5241,406L5239,408L5235,411L5243,411L5241,413L5239,413L5237,416L5228,416L5224,413L5219,413L5209,411L5183,411L5183,419L5185,419L5185,424L5180,429L5172,429L5172,426L5170,426L5161,424L5161,426L5159,426L5146,431L5144,434L5144,436L5137,444L5131,444L5128,447L5128,449L5133,449L5137,454L5135,459L5118,470L5113,475L5109,477L5109,477L5109,477z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5273,680L5273,686L5276,684L5278,679L5273,680L5273,680L5273,680zM5223,679L5223,683L5228,687L5233,687L5234,685L5233,683L5233,681L5234,679L5235,682L5235,687L5238,688L5240,686L5241,682L5243,686L5241,687L5242,689L5245,691L5248,690L5250,691L5254,691L5257,689L5255,686L5245,687L5247,683L5249,682L5249,679L5245,679L5243,678L5240,678L5240,675L5236,674L5232,675L5230,676L5229,679L5223,679L5223,679L5223,679zM5475,398L5479,398L5482,401L5477,406L5473,408L5471,411L5475,416L5477,421L5482,421L5501,429L5505,434L5508,434L5516,439L5514,442L5514,444L5512,444L5490,459L5490,462L5488,462L5488,464L5490,464L5490,467L5492,467L5492,470L5497,470L5497,472L5503,480L5503,482L5505,482L5508,485L5508,487L5512,487L5512,490L5516,495L5516,500L5518,503L5518,505L5516,503L5514,503L5510,505L5510,508L5508,508L5508,515L5505,515L5503,518L5510,518L5512,521L5512,523L5503,523L5503,526L5505,528L5505,531L5508,531L5510,533L5518,533L5521,536L5521,538L5514,538L5514,541L5516,541L5516,546L5521,546L5523,549L5525,549L5529,551L5531,551L5531,556L5529,559L5527,559L5523,564L5521,564L5518,566L5514,566L5521,572L5523,572L5525,574L5527,574L5527,577L5533,577L5540,579L5546,584L5549,584L5553,589L5557,592L5559,595L5557,595L5557,597L5555,597L5555,600L5551,605L5551,607L5549,607L5544,610L5542,612L5538,615L5536,615L5533,617L5531,617L5525,623L5521,628L5518,628L5510,638L5497,646L5495,646L5495,648L5490,648L5488,651L5486,651L5482,653L5479,656L5477,656L5477,658L5473,658L5471,661L5469,661L5466,663L5456,671L5451,671L5451,674L5438,674L5438,671L5436,671L5430,674L5404,676L5406,679L5401,679L5401,681L5395,681L5393,679L5391,679L5388,681L5382,681L5382,684L5369,684L5360,689L5358,686L5356,686L5354,689L5349,689L5343,692L5339,691L5336,693L5332,694L5329,694L5327,696L5317,694L5319,692L5317,689L5321,688L5320,685L5317,685L5314,686L5314,690L5306,691L5305,695L5302,694L5302,690L5303,688L5305,684L5304,681L5294,687L5291,687L5286,686L5281,688L5279,687L5279,686L5281,683L5286,682L5287,682L5291,683L5294,683L5294,681L5296,679L5296,676L5294,676L5293,679L5286,678L5288,676L5285,673L5284,676L5282,675L5281,673L5278,672L5274,673L5271,672L5271,668L5276,667L5277,664L5272,664L5269,661L5271,660L5274,658L5276,656L5276,651L5278,648L5280,648L5280,643L5278,640L5282,640L5283,639L5281,633L5278,633L5278,630L5274,625L5271,625L5271,623L5276,617L5276,615L5274,612L5271,612L5269,610L5267,610L5267,597L5269,597L5274,595L5274,597L5276,597L5276,592L5278,592L5276,589L5280,589L5277,586L5277,584L5280,584L5284,584L5289,582L5289,584L5297,584L5302,582L5302,579L5300,579L5297,577L5300,574L5302,574L5304,577L5304,574L5308,569L5313,569L5313,572L5315,572L5315,569L5317,569L5319,566L5314,565L5317,564L5321,564L5323,561L5330,561L5330,556L5336,556L5339,554L5341,554L5347,546L5352,544L5356,544L5358,541L5358,538L5362,533L5369,531L5371,531L5375,528L5378,528L5388,532L5388,528L5385,525L5386,523L5384,523L5382,521L5384,518L5384,515L5386,513L5386,510L5384,510L5384,508L5378,508L5378,505L5367,505L5362,503L5362,500L5352,500L5352,498L5349,493L5347,490L5345,490L5345,487L5341,487L5339,485L5339,477L5341,477L5343,475L5345,475L5345,467L5347,467L5347,464L5345,464L5345,462L5341,462L5341,459L5339,459L5336,457L5336,452L5341,452L5341,447L5332,447L5332,442L5334,439L5334,436L5332,434L5334,431L5339,431L5339,429L5334,429L5321,419L5319,419L5319,416L5315,416L5310,413L5297,413L5293,411L5291,411L5291,408L5284,408L5282,406L5278,406L5276,403L5271,401L5269,401L5267,398L5263,398L5263,396L5261,396L5258,393L5267,393L5267,391L5265,391L5265,388L5274,385L5284,385L5297,396L5297,398L5300,398L5302,401L5302,403L5308,403L5315,406L5326,406L5326,408L5328,406L5336,406L5339,403L5341,403L5343,401L5349,401L5352,403L5358,403L5358,406L5371,406L5371,408L5378,408L5378,406L5380,403L5380,401L5382,401L5386,398L5395,398L5397,396L5397,393L5395,391L5395,385L5397,385L5397,383L5399,383L5399,380L5401,375L5404,375L5401,373L5404,373L5406,370L5408,370L5414,368L5414,365L5440,365L5440,362L5443,362L5447,360L5458,360L5458,362L5462,365L5469,365L5469,368L5471,368L5477,370L5486,370L5486,373L5490,373L5495,378L5495,380L5490,383L5488,383L5488,385L5484,385L5482,388L5482,393L5479,396L5475,398L5475,398L5475,398z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4984,776L4985,781L4990,781L4992,780L4992,777L4989,776L4984,776L4984,776L4984,776zM5005,857L5016,858L5018,860L5016,863L4996,865L4996,862L4990,862L4988,860L4986,860L4988,860L4988,855L4996,855L4996,857L5001,857L5003,860L5005,857L5005,857L5005,857zM5092,844L5094,844L5098,847L5102,847L5102,850L5100,852L5094,852L5092,850L5089,850L5089,847L5092,844L5092,844L5092,844zM4953,836L4954,835L4955,837L4957,837L4960,834L4964,834L4966,832L4968,832L4970,834L4973,834L4973,837L4970,837L4970,839L4973,839L4975,837L4977,837L4977,834L4979,837L4981,842L4981,850L4979,850L4977,854L4975,854L4973,852L4964,850L4962,850L4964,850L4962,847L4960,847L4955,844L4955,842L4953,839L4953,837L4953,836L4953,836L4953,836zM4986,829L4996,829L5006,820L5009,823L5009,828L5012,828L5012,825L5017,826L5018,823L5013,822L5013,819L5016,819L5019,820L5020,816L5027,817L5030,820L5030,821L5029,821L5029,824L5031,824L5031,832L5029,832L5029,834L5027,834L5027,832L5025,832L5025,834L5022,834L5020,837L5020,839L5025,839L5027,842L5027,844L5020,844L5016,847L5016,850L5020,850L5020,852L5018,852L5016,855L5014,855L5014,852L5007,852L5009,850L5009,847L4994,847L4992,842L4992,839L4990,834L4990,832L4986,829L4986,829L4986,829zM4906,802L4908,798L4911,800L4917,801L4918,799L4920,799L4921,802L4923,806L4926,805L4926,801L4927,798L4930,795L4932,792L4934,795L4935,797L4934,800L4936,802L4940,799L4938,797L4937,789L4925,789L4924,790L4927,791L4929,794L4923,798L4921,797L4919,795L4917,797L4914,798L4909,794L4910,792L4913,792L4913,789L4915,786L4917,787L4921,782L4925,783L4947,782L4948,780L4958,769L4969,766L4971,764L4976,763L4975,765L4972,767L4972,769L4973,771L4973,774L4974,779L4974,782L4971,782L4970,785L4968,787L4962,785L4962,787L4967,789L4967,791L4968,796L4969,797L4969,802L4970,804L4983,804L4986,806L4986,809L4983,809L4979,814L4977,814L4979,814L4975,814L4975,816L4973,816L4970,815L4973,814L4973,811L4970,811L4966,814L4966,824L4964,827L4964,824L4955,824L4955,827L4960,827L4960,829L4955,832L4951,832L4951,834L4949,839L4949,844L4951,844L4951,847L4944,847L4944,852L4947,852L4952,851L4958,852L4962,858L4949,857L4949,855L4944,857L4944,860L4942,857L4942,860L4938,860L4938,857L4936,857L4929,855L4925,855L4925,857L4923,857L4923,855L4921,852L4917,851L4915,850L4913,849L4915,846L4918,846L4921,847L4923,850L4923,842L4921,839L4918,839L4916,837L4912,834L4910,837L4905,834L4908,834L4908,827L4912,827L4912,824L4914,824L4914,821L4912,819L4912,816L4908,816L4908,819L4905,819L4905,816L4908,809L4908,806L4906,802L4906,802L4906,802z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8275,1723L8283,1718L8282,1723L8277,1730L8276,1735L8270,1735L8270,1732L8269,1728L8275,1723L8275,1723L8275,1723zM8239,1778L8239,1780L8237,1780L8237,1778L8234,1778L8232,1780L8234,1780L8230,1785L8230,1788L8228,1788L8228,1793L8226,1793L8226,1798L8230,1798L8230,1796L8233,1794L8235,1787L8234,1785L8241,1783L8243,1780L8245,1775L8245,1773L8243,1773L8239,1778L8239,1778L8239,1778zM8304,1655L8302,1658L8304,1663L8308,1663L8310,1661L8310,1658L8308,1655L8304,1655L8304,1655L8304,1655zM8293,1599L8293,1597L8295,1597L8297,1594L8297,1587L8295,1587L8291,1592L8291,1599L8293,1599L8293,1599L8293,1599zM8254,1587L8256,1587L8260,1584L8260,1581L8258,1579L8254,1579L8254,1587L8254,1587L8254,1587zM8287,1555L8286,1564L8280,1561L8280,1566L8282,1566L8285,1567L8289,1571L8291,1571L8291,1576L8289,1579L8286,1578L8286,1574L8286,1576L8286,1574L8283,1570L8282,1576L8284,1579L8289,1581L8291,1581L8293,1579L8297,1579L8297,1581L8295,1584L8297,1587L8302,1584L8302,1576L8299,1576L8298,1578L8296,1576L8297,1574L8297,1571L8295,1571L8295,1569L8297,1566L8302,1569L8304,1569L8304,1576L8306,1576L8308,1579L8308,1581L8304,1584L8308,1584L8308,1592L8306,1592L8304,1594L8302,1599L8302,1602L8297,1602L8295,1604L8297,1607L8297,1615L8299,1615L8302,1617L8302,1620L8299,1622L8299,1625L8297,1625L8297,1630L8306,1630L8306,1632L8310,1632L8310,1627L8308,1627L8306,1625L8306,1620L8312,1621L8315,1627L8315,1630L8312,1632L8312,1635L8317,1635L8317,1632L8319,1632L8323,1630L8323,1627L8319,1627L8319,1625L8321,1625L8321,1622L8325,1622L8325,1625L8330,1625L8330,1622L8332,1617L8332,1607L8334,1599L8336,1597L8336,1594L8338,1592L8338,1587L8345,1579L8347,1579L8347,1576L8345,1574L8343,1569L8343,1566L8345,1564L8334,1564L8334,1561L8336,1561L8340,1556L8340,1553L8338,1551L8332,1551L8332,1553L8321,1553L8321,1548L8319,1546L8319,1543L8315,1543L8312,1541L8310,1541L8306,1543L8306,1546L8304,1546L8304,1553L8297,1553L8297,1551L8293,1556L8293,1558L8287,1555L8287,1555L8287,1555zM8356,1558L8358,1556L8358,1564L8362,1564L8362,1566L8360,1566L8360,1576L8366,1576L8364,1579L8364,1581L8371,1581L8371,1579L8373,1579L8373,1581L8375,1579L8375,1571L8377,1571L8382,1566L8382,1561L8384,1561L8384,1558L8386,1558L8390,1556L8401,1556L8403,1558L8403,1561L8405,1564L8408,1564L8408,1561L8410,1558L8410,1556L8412,1556L8412,1551L8414,1551L8418,1548L8421,1546L8423,1546L8423,1541L8418,1541L8418,1536L8421,1536L8418,1533L8414,1533L8412,1530L8410,1530L8410,1528L8399,1528L8395,1530L8395,1533L8392,1533L8392,1538L8390,1538L8390,1541L8382,1541L8382,1543L8377,1543L8377,1541L8375,1538L8375,1536L8371,1536L8369,1541L8366,1543L8366,1548L8364,1551L8362,1551L8358,1553L8356,1556L8356,1558L8356,1558L8356,1558zM8276,1518L8273,1518L8271,1520L8271,1528L8273,1530L8276,1528L8278,1523L8278,1518L8276,1518L8276,1518L8276,1518zM8529,1400L8529,1398L8527,1398L8520,1405L8520,1408L8522,1408L8522,1413L8520,1413L8520,1416L8525,1416L8527,1413L8527,1411L8529,1411L8529,1400L8529,1400L8529,1400zM8616,1375L8622,1375L8622,1365L8624,1365L8624,1362L8626,1362L8626,1357L8624,1354L8624,1344L8622,1344L8622,1342L8620,1342L8620,1334L8616,1329L8616,1326L8611,1326L8611,1324L8609,1324L8609,1314L8607,1306L8609,1306L8609,1298L8603,1298L8600,1296L8594,1293L8590,1306L8594,1306L8596,1303L8598,1306L8600,1303L8600,1301L8603,1301L8603,1303L8605,1303L8605,1306L8603,1311L8603,1314L8596,1314L8596,1311L8594,1311L8594,1314L8592,1316L8590,1316L8587,1314L8587,1303L8579,1303L8579,1314L8577,1316L8577,1319L8570,1319L8566,1324L8568,1326L8568,1329L8570,1332L8570,1337L8568,1339L8568,1342L8566,1344L8561,1344L8561,1347L8570,1347L8570,1354L8572,1357L8570,1360L8570,1365L8568,1365L8568,1367L8566,1370L8566,1375L8564,1380L8564,1383L8561,1383L8561,1385L8559,1385L8559,1388L8557,1390L8555,1395L8555,1400L8551,1405L8551,1408L8548,1408L8546,1411L8542,1411L8542,1413L8538,1413L8538,1416L8535,1416L8535,1421L8529,1428L8522,1434L8520,1436L8514,1439L8512,1439L8509,1441L8503,1441L8503,1444L8499,1444L8499,1446L8496,1446L8496,1449L8488,1449L8486,1446L8488,1444L8488,1439L8486,1439L8486,1436L8488,1436L8488,1434L8492,1428L8496,1428L8496,1426L8494,1423L8492,1423L8490,1426L8488,1426L8486,1428L8479,1428L8479,1431L8477,1436L8479,1439L8479,1449L8477,1449L8477,1451L8473,1456L8470,1462L8468,1462L8464,1464L8464,1467L8462,1467L8460,1469L8457,1474L8457,1485L8451,1492L8449,1492L8444,1490L8442,1492L8440,1492L8436,1490L8436,1487L8438,1485L8438,1482L8434,1482L8431,1485L8427,1487L8425,1487L8425,1485L8416,1485L8414,1487L8410,1487L8410,1490L8397,1490L8397,1492L8395,1490L8388,1490L8388,1492L8382,1492L8382,1490L8377,1487L8377,1490L8371,1490L8366,1492L8364,1492L8364,1495L8366,1495L8366,1497L8362,1497L8362,1500L8358,1500L8358,1502L8356,1505L8353,1505L8353,1507L8351,1507L8343,1518L8336,1518L8334,1520L8332,1525L8330,1525L8327,1528L8325,1528L8325,1525L8317,1525L8317,1541L8319,1541L8319,1538L8323,1538L8323,1541L8325,1543L8327,1543L8327,1541L8330,1541L8336,1538L8343,1538L8343,1541L8349,1543L8349,1546L8351,1546L8351,1541L8353,1541L8353,1530L8356,1528L8360,1528L8360,1530L8362,1533L8369,1533L8369,1530L8373,1530L8375,1528L8377,1530L8379,1530L8382,1528L8382,1525L8384,1528L8392,1523L8397,1523L8397,1525L8401,1525L8403,1523L8403,1520L8401,1520L8401,1523L8401,1520L8408,1520L8410,1518L8410,1515L8412,1518L8414,1515L8423,1515L8427,1518L8429,1518L8431,1520L8434,1518L8436,1518L8440,1515L8442,1518L8442,1523L8438,1528L8434,1528L8434,1533L8436,1536L8434,1538L8434,1541L8431,1543L8436,1546L8438,1548L8442,1548L8440,1551L8444,1556L8447,1556L8451,1558L8455,1556L8455,1553L8457,1553L8457,1551L8460,1548L8460,1543L8464,1543L8464,1541L8466,1541L8466,1533L8470,1533L8475,1530L8483,1530L8483,1525L8481,1525L8481,1523L8477,1523L8477,1520L8473,1520L8473,1515L8475,1513L8477,1513L8477,1507L8479,1505L8483,1505L8483,1507L8481,1507L8481,1515L8494,1514L8494,1516L8488,1518L8490,1521L8501,1518L8514,1518L8518,1520L8520,1520L8518,1518L8520,1518L8522,1513L8529,1505L8529,1502L8535,1502L8538,1505L8540,1505L8538,1507L8535,1507L8535,1520L8540,1520L8544,1515L8546,1510L8546,1507L8544,1507L8544,1502L8548,1497L8557,1497L8559,1500L8559,1502L8561,1502L8561,1497L8559,1497L8559,1492L8561,1492L8561,1490L8564,1490L8564,1487L8568,1485L8570,1485L8570,1487L8572,1487L8572,1490L8570,1490L8568,1492L8568,1495L8566,1497L8564,1502L8566,1505L8566,1507L8564,1507L8564,1510L8568,1510L8568,1507L8570,1507L8574,1502L8581,1502L8581,1490L8583,1490L8583,1487L8585,1487L8587,1485L8592,1485L8592,1479L8587,1472L8585,1472L8585,1459L8587,1456L8590,1449L8590,1446L8592,1446L8592,1444L8596,1444L8596,1436L8598,1428L8598,1418L8594,1413L8594,1408L8596,1405L8596,1403L8598,1398L8600,1398L8605,1395L8609,1395L8609,1398L8611,1400L8611,1383L8613,1380L8616,1380L8616,1375L8616,1375L8616,1375zM8711,1224L8711,1214L8713,1214L8713,1212L8715,1212L8717,1207L8717,1204L8720,1204L8717,1201L8715,1204L8713,1204L8713,1207L8711,1207L8711,1209L8707,1209L8707,1212L8704,1212L8704,1214L8689,1214L8685,1209L8672,1209L8672,1207L8665,1204L8663,1201L8652,1194L8648,1189L8646,1189L8646,1186L8642,1184L8642,1181L8637,1176L8635,1176L8635,1173L8633,1173L8631,1171L8631,1168L8626,1168L8626,1166L8624,1166L8624,1163L8622,1166L8616,1166L8613,1171L8613,1176L8616,1179L8616,1181L8618,1181L8618,1186L8620,1189L8620,1194L8618,1199L8616,1201L8616,1214L8611,1219L8607,1219L8607,1227L8609,1232L8609,1235L8605,1240L8592,1240L8583,1235L8583,1232L8579,1235L8579,1240L8581,1240L8583,1242L8583,1247L8581,1247L8579,1250L8579,1252L8572,1252L8570,1255L8566,1255L8566,1258L8564,1258L8564,1260L8566,1260L8566,1263L8564,1265L8564,1270L8568,1273L8572,1278L8572,1286L8568,1291L8568,1293L8570,1296L8572,1296L8574,1298L8574,1296L8577,1296L8581,1293L8581,1288L8583,1288L8585,1286L8587,1286L8587,1283L8590,1283L8596,1288L8598,1288L8603,1286L8603,1283L8600,1283L8598,1281L8596,1281L8592,1275L8590,1275L8590,1273L8587,1273L8585,1275L8583,1275L8583,1273L8581,1273L8581,1270L8577,1270L8577,1265L8579,1263L8581,1263L8581,1260L8590,1260L8594,1263L8594,1265L8596,1268L8598,1268L8598,1265L8600,1265L8607,1260L8609,1260L8611,1258L8620,1258L8622,1260L8624,1260L8624,1263L8629,1263L8633,1265L8633,1268L8644,1273L8648,1273L8650,1275L8652,1275L8655,1278L8658,1277L8658,1279L8660,1279L8662,1274L8661,1273L8661,1268L8668,1260L8668,1258L8670,1258L8670,1255L8674,1252L8676,1252L8681,1247L8685,1247L8689,1245L8691,1245L8691,1247L8700,1247L8700,1245L8704,1245L8707,1247L8707,1245L8711,1245L8711,1242L8713,1240L8722,1240L8726,1235L8730,1235L8730,1232L8726,1232L8722,1237L8717,1237L8715,1235L8717,1232L8717,1228L8711,1224L8711,1224L8711,1224zM8306,1655L8308,1655L8310,1658L8310,1661L8308,1663L8304,1663L8302,1658L8304,1655L8306,1655z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8063,2161L8065,2159L8070,2159L8070,2165L8071,2166L8070,2169L8069,2173L8067,2172L8067,2169L8067,2166L8065,2164L8063,2161L8063,2161L8063,2161zM8023,2476L8027,2481L8023,2485L8016,2485L8010,2488L8006,2487L8010,2482L8016,2478L8023,2476L8023,2476L8023,2476zM8054,2451L8060,2456L8054,2459L8048,2458L8038,2458L8038,2453L8042,2448L8049,2452L8054,2451L8054,2451L8054,2451zM8039,2043L8048,2043L8052,2046L8057,2051L8059,2051L8063,2053L8070,2053L8072,2051L8073,2047L8073,2044L8076,2046L8078,2051L8078,2056L8076,2056L8076,2058L8074,2058L8074,2076L8076,2081L8076,2084L8078,2084L8081,2086L8081,2091L8085,2091L8083,2094L8083,2099L8081,2102L8078,2109L8074,2114L8076,2114L8076,2117L8070,2122L8068,2125L8066,2123L8063,2125L8061,2127L8057,2130L8057,2135L8058,2136L8059,2137L8059,2140L8052,2148L8052,2153L8055,2155L8057,2160L8057,2165L8059,2165L8059,2168L8061,2171L8059,2171L8059,2178L8061,2181L8061,2183L8063,2186L8063,2188L8070,2196L8078,2196L8078,2193L8076,2191L8074,2191L8074,2188L8076,2186L8076,2188L8078,2191L8078,2186L8081,2186L8083,2183L8094,2183L8094,2186L8096,2186L8098,2191L8100,2193L8100,2199L8098,2199L8098,2201L8100,2201L8100,2204L8104,2201L8107,2201L8107,2199L8104,2196L8104,2191L8107,2191L8109,2193L8113,2196L8117,2197L8122,2201L8124,2201L8124,2204L8113,2204L8111,2206L8111,2209L8113,2209L8115,2211L8117,2211L8117,2216L8120,2216L8120,2219L8117,2219L8117,2224L8120,2224L8122,2222L8124,2222L8124,2224L8126,2224L8126,2227L8130,2226L8128,2232L8128,2237L8127,2240L8126,2242L8124,2242L8124,2239L8122,2237L8122,2234L8120,2232L8117,2232L8115,2229L8113,2229L8111,2227L8109,2227L8109,2224L8104,2224L8104,2222L8107,2222L8104,2216L8102,2214L8102,2211L8100,2211L8098,2209L8096,2209L8094,2206L8091,2206L8091,2204L8094,2204L8094,2201L8091,2201L8087,2196L8085,2196L8083,2199L8083,2206L8085,2209L8087,2209L8087,2214L8089,2214L8089,2219L8087,2222L8085,2222L8085,2216L8083,2214L8081,2209L8078,2206L8074,2206L8074,2204L8072,2201L8068,2199L8065,2196L8063,2196L8065,2196L8063,2196L8063,2193L8061,2193L8061,2196L8055,2199L8055,2201L8050,2206L8046,2206L8044,2204L8044,2201L8039,2201L8039,2196L8033,2196L8033,2201L8031,2199L8031,2183L8035,2183L8039,2178L8042,2178L8042,2176L8039,2173L8039,2171L8037,2168L8031,2168L8029,2165L8029,2171L8031,2173L8031,2178L8029,2181L8026,2178L8024,2178L8024,2176L8020,2171L8020,2168L8016,2168L8016,2155L8013,2153L8013,2150L8011,2148L8011,2145L8013,2142L8011,2140L8011,2132L8009,2130L8007,2130L8007,2117L8009,2117L8011,2114L8011,2120L8018,2127L8022,2127L8022,2125L8024,2125L8026,2122L8024,2120L8024,2114L8022,2109L8022,2107L8024,2099L8026,2097L8026,2079L8024,2079L8024,2074L8026,2071L8026,2061L8029,2056L8029,2053L8031,2053L8031,2048L8029,2048L8029,2046L8035,2046L8035,2043L8039,2043L8039,2043L8039,2043zM8072,2441L8074,2441L8074,2438L8076,2436L8076,2433L8074,2433L8072,2431L8070,2431L8068,2433L8063,2433L8063,2436L8068,2441L8072,2441L8072,2441L8072,2441zM7933,2395L7933,2387L7929,2387L7929,2395L7933,2395L7933,2395L7933,2395zM8187,2441L8187,2428L8185,2426L8189,2423L8191,2423L8193,2420L8195,2415L8198,2413L8195,2413L8195,2408L8198,2408L8198,2405L8195,2400L8195,2398L8193,2395L8191,2395L8191,2392L8193,2387L8193,2382L8189,2382L8191,2377L8191,2372L8185,2372L8182,2369L8185,2367L8187,2367L8189,2364L8189,2357L8187,2357L8187,2354L8185,2354L8185,2349L8180,2349L8178,2344L8178,2341L8176,2339L8174,2339L8172,2336L8169,2336L8169,2334L8167,2331L8163,2331L8163,2336L8165,2339L8165,2341L8167,2347L8167,2357L8161,2357L8156,2362L8154,2362L8154,2359L8152,2359L8150,2357L8146,2357L8146,2375L8143,2375L8141,2372L8139,2372L8139,2369L8137,2369L8133,2375L8133,2380L8130,2382L8130,2385L8128,2385L8128,2382L8126,2382L8122,2387L8122,2382L8120,2375L8120,2372L8115,2367L8113,2369L8111,2369L8109,2367L8107,2369L8107,2372L8098,2372L8098,2375L8096,2377L8096,2380L8098,2382L8096,2382L8096,2385L8091,2385L8083,2387L8078,2387L8078,2390L8076,2390L8074,2395L8072,2398L8072,2405L8070,2408L8070,2413L8068,2415L8068,2418L8065,2420L8070,2426L8074,2426L8074,2423L8076,2418L8076,2415L8078,2413L8078,2410L8078,2413L8078,2408L8081,2403L8085,2398L8091,2398L8091,2408L8093,2412L8096,2412L8098,2408L8098,2400L8100,2398L8100,2400L8102,2403L8100,2403L8100,2405L8102,2408L8102,2405L8104,2405L8109,2411L8109,2403L8111,2403L8111,2398L8109,2398L8111,2395L8117,2395L8117,2398L8120,2400L8126,2400L8126,2403L8128,2405L8128,2408L8130,2410L8130,2408L8133,2408L8133,2410L8130,2415L8128,2418L8126,2418L8124,2420L8124,2431L8126,2431L8126,2443L8133,2451L8137,2451L8139,2454L8146,2456L8148,2459L8154,2459L8156,2451L8161,2451L8161,2459L8159,2459L8159,2464L8161,2464L8161,2469L8165,2469L8165,2466L8167,2464L8167,2461L8169,2459L8172,2459L8172,2446L8169,2438L8167,2436L8163,2436L8163,2428L8165,2428L8165,2426L8167,2426L8167,2420L8169,2420L8174,2424L8173,2419L8172,2415L8172,2413L8174,2413L8176,2410L8176,2415L8178,2418L8178,2420L8180,2420L8180,2426L8182,2426L8182,2438L8185,2443L8187,2443L8187,2441L8187,2441L8187,2441zM8107,2329L8109,2329L8107,2329L8107,2329L8107,2329zM8184,2333L8185,2331L8185,2329L8182,2324L8181,2327L8178,2329L8182,2333L8184,2333L8184,2333L8184,2333zM8137,2321L8135,2318L8128,2318L8128,2321L8124,2326L8122,2326L8120,2329L8120,2334L8122,2336L8124,2336L8126,2339L8128,2339L8133,2336L8137,2336L8139,2331L8139,2334L8141,2334L8141,2331L8139,2329L8141,2329L8141,2324L8139,2324L8137,2321L8137,2321L8137,2321zM8172,2329L8172,2308L8169,2308L8165,2321L8167,2321L8169,2326L8169,2331L8172,2331L8172,2329L8172,2329L8172,2329zM8011,2308L8013,2308L8013,2306L8011,2303L8009,2303L8007,2306L8007,2307L8008,2309L8009,2311L8011,2308L8011,2308L8011,2308zM8087,2311L8087,2308L8089,2308L8089,2301L8087,2301L8085,2303L8085,2306L8083,2306L8083,2311L8087,2311L8087,2311L8087,2311zM8107,2308L8111,2308L8113,2298L8113,2295L8111,2293L8104,2290L8102,2290L8098,2293L8096,2295L8096,2303L8094,2306L8091,2306L8091,2311L8094,2313L8094,2321L8089,2326L8083,2326L8081,2331L8081,2336L8085,2341L8085,2344L8091,2344L8091,2347L8094,2347L8094,2352L8098,2357L8100,2357L8104,2352L8104,2349L8107,2347L8102,2341L8102,2339L8100,2336L8102,2336L8102,2331L8100,2331L8100,2329L8102,2329L8102,2324L8104,2324L8104,2321L8107,2316L8107,2308L8107,2308L8107,2308zM8107,2324L8107,2326L8109,2326L8109,2329L8107,2329L8107,2339L8104,2341L8105,2343L8107,2344L8109,2339L8111,2339L8111,2334L8113,2331L8113,2329L8115,2326L8115,2321L8117,2318L8117,2316L8120,2316L8124,2313L8126,2311L8126,2283L8124,2283L8124,2288L8122,2293L8122,2298L8117,2303L8117,2308L8115,2311L8115,2313L8113,2313L8113,2316L8111,2318L8111,2321L8109,2321L8109,2324L8107,2324L8107,2324L8107,2324zM7992,2293L7992,2295L7996,2301L7994,2306L7990,2311L7985,2311L7985,2313L7985,2311L7987,2313L7985,2313L7983,2318L7981,2318L7981,2324L7979,2324L7979,2321L7977,2324L7977,2326L7972,2331L7972,2334L7970,2334L7968,2336L7968,2339L7959,2349L7955,2349L7953,2352L7948,2354L7944,2359L7944,2362L7942,2364L7940,2364L7940,2367L7938,2369L7938,2372L7935,2380L7940,2375L7942,2375L7942,2372L7946,2372L7948,2367L7953,2367L7953,2364L7955,2362L7959,2362L7959,2359L7961,2354L7961,2352L7968,2352L7970,2347L7977,2341L7979,2336L7979,2334L7977,2334L7977,2331L7979,2326L7985,2326L7990,2324L7992,2324L7992,2318L7994,2318L7994,2316L7996,2313L7998,2313L7998,2311L8000,2313L8005,2308L8007,2308L8003,2303L8003,2298L8000,2298L8000,2285L8003,2283L8003,2280L8000,2280L8000,2278L7998,2278L7998,2290L7996,2290L7996,2288L7994,2288L7994,2293L7992,2293L7992,2293L7992,2293zM8140,2256L8141,2257L8143,2257L8146,2262L8150,2265L8152,2267L8154,2267L8152,2273L8150,2273L8148,2275L8148,2280L8146,2280L8146,2283L8141,2283L8141,2280L8135,2273L8133,2275L8135,2280L8135,2283L8137,2283L8137,2295L8139,2295L8141,2293L8143,2293L8146,2298L8148,2301L8148,2303L8146,2306L8146,2313L8148,2313L8148,2316L8146,2318L8148,2321L8152,2324L8154,2324L8154,2321L8152,2318L8152,2311L8154,2313L8154,2318L8157,2316L8160,2315L8161,2313L8161,2311L8159,2311L8156,2308L8156,2306L8159,2306L8154,2301L8152,2301L8152,2295L8154,2295L8154,2285L8152,2283L8152,2280L8154,2283L8156,2283L8161,2288L8172,2288L8172,2285L8167,2285L8167,2283L8169,2283L8169,2278L8167,2278L8165,2273L8165,2257L8167,2257L8165,2255L8167,2252L8165,2250L8161,2250L8161,2245L8156,2239L8154,2239L8154,2242L8150,2239L8150,2242L8135,2242L8133,2239L8133,2245L8135,2250L8135,2252L8137,2252L8138,2254L8140,2256L8140,2256L8140,2256zM8141,2275L8141,2273L8139,2270L8139,2267L8137,2267L8135,2270L8140,2276L8141,2275L8141,2275L8141,2275zM8068,2306L8068,2311L8070,2311L8070,2308L8072,2308L8072,2306L8074,2303L8083,2303L8087,2298L8089,2298L8091,2295L8089,2293L8091,2293L8094,2290L8096,2290L8100,2285L8100,2280L8102,2278L8102,2273L8100,2273L8100,2275L8098,2275L8094,2278L8094,2275L8091,2273L8089,2273L8085,2275L8076,2265L8072,2265L8070,2262L8065,2262L8065,2267L8072,2267L8072,2275L8070,2278L8070,2293L8068,2295L8068,2306L8068,2306L8068,2306zM8011,2257L8013,2257L8011,2257L8011,2257L8011,2257zM8018,2260L8018,2257L8020,2260L8024,2260L8024,2257L8022,2257L8020,2252L8020,2255L8018,2255L8016,2252L8011,2250L8009,2250L8009,2252L8011,2257L8013,2257L8013,2260L8018,2260L8018,2260L8018,2260zM8089,2250L8089,2245L8087,2242L8083,2242L8081,2245L8083,2247L8085,2247L8087,2250L8089,2250L8089,2250L8089,2250zM8126,2260L8122,2252L8120,2252L8111,2242L8107,2239L8104,2239L8104,2255L8100,2260L8102,2262L8107,2257L8109,2252L8113,2252L8113,2255L8115,2255L8120,2262L8122,2262L8125,2267L8127,2267L8126,2260L8126,2260L8126,2260zM8070,2252L8074,2239L8074,2237L8072,2237L8070,2239L8070,2245L8068,2245L8068,2255L8070,2255L8070,2252L8070,2252L8070,2252zM8105,2232L8102,2227L8098,2222L8096,2222L8096,2227L8098,2227L8105,2232L8105,2232L8105,2232zM8056,2219L8054,2221L8051,2223L8050,2223L8050,2220L8051,2218L8050,2214L8048,2214L8046,2211L8046,2214L8044,2214L8044,2211L8042,2211L8042,2209L8039,2209L8035,2211L8033,2211L8026,2209L8024,2209L8022,2211L8022,2214L8024,2214L8029,2219L8033,2219L8033,2222L8035,2224L8035,2234L8037,2234L8037,2237L8039,2237L8039,2242L8044,2247L8042,2249L8042,2252L8048,2252L8052,2247L8052,2245L8055,2242L8057,2242L8057,2234L8055,2234L8055,2224L8057,2224L8056,2219L8056,2219L8056,2219zM8072,2219L8074,2214L8072,2214L8072,2211L8070,2209L8065,2209L8063,2211L8065,2214L8065,2216L8070,2219L8072,2219L8072,2219L8072,2219zM8133,2193L8133,2196L8133,2193L8133,2193L8133,2193zM8132,2207L8134,2206L8137,2201L8137,2199L8135,2196L8133,2196L8133,2191L8128,2191L8128,2204L8126,2204L8126,2206L8130,2208L8132,2207L8132,2207L8132,2207zM8010,2259L8011,2259L8015,2263L8016,2267L8016,2270L8012,2270L8011,2268L8011,2265L8009,2263L8010,2259L8010,2259L8010,2259z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M4506,831L4505,828L4505,824L4507,823L4510,822L4512,823L4512,822L4515,820L4517,817L4518,817L4520,819L4518,821L4517,823L4517,824L4514,826L4512,826L4512,828L4510,831L4506,831L4506,831L4506,831zM4532,831L4534,828L4538,829L4540,831L4540,836L4538,838L4533,837L4532,834L4532,831L4532,831L4532,831zM4480,764L4484,766L4483,770L4480,772L4481,775L4480,784L4475,783L4473,775L4475,770L4473,768L4473,764L4478,763L4480,764L4480,764L4480,764zM4486,761L4482,759L4488,756L4486,756L4481,753L4483,746L4503,740L4505,737L4510,737L4511,741L4505,748L4503,751L4503,754L4486,761L4486,761L4486,761zM4654,990L4652,990L4654,990L4654,990L4654,990zM4479,852L4485,852L4485,850L4487,850L4488,848L4490,847L4498,847L4500,844L4505,844L4507,847L4509,844L4511,844L4511,847L4513,847L4513,852L4520,857L4522,857L4524,860L4522,860L4522,862L4526,862L4526,865L4529,865L4531,869L4529,871L4527,871L4526,867L4523,867L4523,870L4523,873L4525,873L4526,875L4526,878L4518,878L4518,883L4516,883L4513,885L4511,885L4509,883L4498,883L4498,885L4496,885L4496,883L4494,880L4492,875L4490,875L4490,872L4485,872L4483,875L4481,875L4483,878L4479,883L4472,880L4464,880L4464,875L4459,875L4455,870L4457,870L4461,867L4464,867L4466,865L4461,865L4461,862L4466,862L4472,860L4479,852L4479,852L4479,852zM4694,967L4705,969L4706,972L4706,972L4721,972L4721,977L4719,977L4719,980L4715,980L4713,982L4708,982L4708,985L4704,987L4704,985L4702,987L4700,987L4697,990L4689,990L4689,992L4684,992L4682,990L4661,990L4661,992L4656,992L4656,990L4643,990L4641,992L4624,992L4626,995L4628,995L4626,997L4622,997L4622,995L4613,995L4613,997L4611,995L4606,995L4604,992L4598,992L4596,995L4587,995L4585,997L4585,1000L4583,1003L4581,1008L4578,1010L4576,1010L4572,1005L4570,1005L4570,1008L4568,1008L4568,1005L4548,1005L4544,1010L4542,1010L4541,1014L4539,1015L4537,1015L4537,1018L4535,1018L4535,1015L4533,1013L4526,1013L4526,1014L4523,1014L4522,1013L4522,1010L4525,1009L4531,1009L4534,1008L4536,1005L4541,1003L4542,1000L4542,998L4543,997L4547,997L4552,992L4555,990L4555,982L4559,982L4559,985L4561,985L4563,982L4565,982L4563,980L4563,977L4598,977L4598,975L4607,963L4604,963L4600,967L4593,967L4593,969L4591,972L4585,972L4583,969L4578,967L4576,967L4576,964L4572,964L4565,966L4562,966L4561,964L4562,963L4566,962L4565,961L4561,961L4559,958L4555,959L4550,959L4550,962L4542,962L4546,962L4542,962L4537,959L4539,959L4539,957L4537,954L4535,954L4539,952L4547,950L4547,948L4550,946L4555,946L4561,943L4563,943L4567,938L4568,936L4568,929L4570,929L4568,926L4565,926L4565,921L4559,921L4559,924L4557,924L4555,925L4549,925L4550,923L4552,921L4557,921L4557,918L4561,918L4561,913L4556,912L4554,910L4552,908L4553,905L4554,903L4564,905L4564,907L4571,909L4574,908L4587,908L4587,906L4589,906L4593,911L4596,911L4596,908L4593,908L4593,906L4594,905L4596,903L4596,898L4598,895L4598,893L4596,893L4596,888L4600,888L4600,885L4602,883L4602,878L4600,880L4593,883L4591,883L4587,878L4587,875L4585,875L4585,872L4583,872L4583,870L4581,870L4581,867L4587,860L4587,857L4589,855L4594,853L4583,852L4583,855L4581,857L4576,857L4574,860L4565,860L4561,857L4559,857L4559,860L4561,860L4561,862L4555,862L4555,860L4550,860L4548,857L4544,857L4544,860L4546,862L4546,865L4544,865L4544,862L4542,860L4539,860L4539,857L4537,857L4537,852L4542,852L4542,847L4544,847L4550,841L4553,840L4553,832L4547,831L4546,827L4546,825L4547,821L4550,820L4554,820L4557,822L4557,820L4556,819L4552,818L4546,819L4543,822L4542,825L4542,827L4539,827L4538,824L4534,824L4532,819L4531,820L4531,823L4532,826L4530,829L4529,830L4530,833L4528,837L4529,840L4527,843L4523,842L4521,839L4524,829L4526,826L4524,824L4524,820L4525,817L4527,815L4525,808L4536,797L4531,798L4527,801L4523,802L4521,805L4521,810L4515,811L4507,809L4510,806L4507,803L4506,802L4505,801L4508,800L4513,794L4521,792L4519,788L4523,782L4519,785L4515,785L4511,781L4509,784L4508,788L4505,790L4504,783L4507,781L4504,779L4502,775L4497,776L4490,772L4493,771L4500,770L4505,771L4505,765L4507,766L4512,771L4513,775L4515,771L4515,775L4517,779L4522,780L4525,777L4520,776L4518,769L4522,765L4519,761L4521,758L4526,754L4530,758L4537,756L4530,753L4532,751L4533,748L4531,745L4542,746L4541,743L4538,740L4540,733L4545,732L4552,736L4563,737L4567,735L4586,735L4591,733L4595,733L4596,735L4595,737L4596,740L4594,743L4590,745L4583,749L4580,750L4578,753L4574,755L4570,755L4569,760L4575,761L4561,771L4562,773L4566,772L4569,768L4581,765L4583,764L4585,764L4590,762L4592,764L4628,764L4629,768L4631,770L4631,773L4629,775L4625,775L4625,778L4623,781L4623,786L4621,788L4618,788L4618,791L4616,793L4614,793L4614,796L4612,796L4612,798L4612,796L4612,801L4610,801L4608,802L4606,802L4600,804L4602,805L4602,809L4609,809L4609,811L4606,813L4598,813L4589,819L4581,819L4585,821L4600,821L4602,819L4611,819L4619,824L4624,824L4624,827L4626,827L4626,829L4630,832L4632,832L4635,834L4637,834L4637,844L4639,847L4639,850L4641,850L4641,852L4643,855L4643,857L4650,865L4652,865L4656,867L4665,870L4667,870L4669,872L4669,878L4671,878L4674,880L4678,880L4678,883L4676,883L4676,888L4680,889L4684,894L4684,898L4678,898L4678,901L4682,901L4684,903L4687,903L4687,906L4689,906L4691,911L4691,916L4689,916L4687,918L4682,921L4684,921L4685,922L4687,922L4687,925L4692,925L4694,922L4695,921L4695,918L4706,918L4706,921L4719,921L4721,924L4723,924L4728,926L4728,929L4730,929L4730,939L4726,944L4726,949L4721,949L4719,952L4717,952L4715,949L4713,949L4717,954L4717,957L4715,957L4713,959L4710,959L4708,957L4706,957L4706,959L4708,959L4708,964L4695,965L4692,963L4685,963L4682,963L4677,964L4680,965L4686,965L4694,967L4694,967zM4578,753L4574,755L4570,755M4602,727L4602,725L4589,725L4589,722L4587,722L4589,719L4589,717L4596,717L4600,722L4602,722L4604,725L4602,727L4602,727L4602,727zM4550,883L4555,883L4557,880L4559,880L4560,878L4560,873L4559,872L4555,872L4555,878L4550,878L4548,883L4550,883L4550,883L4550,883zM4644,668L4648,671L4652,663L4655,659L4660,661L4660,665L4658,668L4663,670L4659,671L4655,670L4649,675L4653,678L4650,681L4652,683L4651,686L4648,686L4646,692L4642,693L4644,686L4643,684L4637,684L4632,678L4641,680L4642,676L4633,672L4644,668L4644,668L4644,668z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2631,4141L2632,4146L2635,4146L2637,4141L2638,4135L2635,4137L2631,4141L2631,4141L2631,4141zM2641,4110L2643,4114L2643,4118L2648,4118L2656,4113L2660,4107L2657,4104L2654,4104L2653,4106L2651,4104L2648,4104L2646,4105L2646,4108L2641,4110L2641,4110L2641,4110zM2594,4116L2594,4119L2598,4120L2598,4116L2594,4116L2594,4116L2594,4116zM2614,4110L2611,4110L2607,4107L2603,4107L2602,4110L2609,4113L2613,4117L2617,4118L2619,4115L2627,4112L2629,4110L2626,4107L2614,4110L2614,4110L2614,4110zM2619,4094L2620,4091L2617,4090L2614,4100L2615,4103L2610,4103L2611,4106L2615,4108L2621,4107L2618,4103L2619,4094L2619,4094L2619,4094zM2633,4090L2636,4095L2639,4092L2637,4088L2635,4088L2633,4090L2633,4090L2633,4090zM2630,4095L2628,4093L2625,4094L2623,4092L2621,4098L2623,4101L2626,4104L2630,4104L2630,4101L2630,4095L2630,4095L2630,4095zM2801,4470L2804,4473L2806,4474L2796,4474L2793,4478L2795,4478L2805,4479L2808,4478L2812,4482L2814,4481L2815,4478L2817,4479L2819,4479L2818,4476L2816,4475L2815,4475L2814,4473L2811,4467L2809,4467L2808,4471L2805,4467L2802,4466L2801,4467L2801,4470L2801,4470L2801,4470zM2587,4288L2586,4292L2584,4294L2585,4311L2589,4312L2591,4310L2593,4304L2595,4302L2598,4298L2602,4294L2602,4291L2601,4288L2598,4287L2588,4286L2587,4288L2587,4288L2587,4288zM2664,4376L2673,4376L2679,4373L2691,4373L2695,4371L2692,4369L2670,4371L2669,4373L2665,4371L2664,4376L2664,4376L2664,4376zM2701,4377L2695,4378L2684,4383L2680,4388L2674,4387L2673,4389L2675,4392L2677,4392L2678,4398L2680,4397L2680,4391L2684,4392L2687,4395L2688,4390L2693,4390L2699,4387L2702,4385L2705,4382L2705,4379L2701,4377L2701,4377L2701,4377zM2772,3308L2772,3313L2774,3316L2772,3316L2772,3321L2774,3321L2774,3323L2778,3323L2778,3328L2776,3328L2776,3333L2778,3336L2781,3336L2787,3346L2787,3359L2789,3359L2789,3369L2791,3369L2794,3372L2794,3374L2796,3379L2794,3379L2798,3390L2796,3390L2796,3397L2798,3400L2811,3400L2815,3397L2820,3402L2820,3407L2817,3412L2817,3415L2815,3415L2815,3420L2811,3438L2804,3441L2802,3441L2787,3448L2785,3448L2785,3453L2783,3453L2778,3458L2778,3461L2776,3461L2776,3463L2778,3463L2778,3466L2783,3471L2783,3474L2778,3474L2778,3479L2776,3479L2776,3489L2778,3492L2778,3494L2781,3499L2781,3507L2778,3509L2778,3512L2776,3512L2776,3520L2778,3520L2778,3522L2785,3530L2785,3532L2781,3537L2774,3540L2774,3537L2770,3537L2770,3540L2768,3540L2768,3545L2763,3553L2763,3555L2761,3558L2761,3565L2757,3565L2757,3568L2755,3571L2755,3573L2750,3578L2748,3578L2746,3581L2746,3586L2744,3588L2744,3604L2739,3604L2737,3606L2737,3622L2739,3622L2739,3632L2742,3634L2742,3639L2739,3642L2739,3645L2735,3645L2731,3650L2731,3652L2729,3655L2729,3665L2726,3668L2724,3668L2722,3670L2722,3683L2720,3683L2724,3693L2729,3693L2731,3696L2731,3698L2729,3698L2726,3701L2729,3706L2729,3708L2731,3708L2733,3713L2733,3724L2735,3726L2737,3726L2737,3729L2735,3731L2735,3736L2737,3739L2744,3739L2744,3744L2742,3744L2742,3749L2739,3754L2739,3759L2742,3767L2742,3772L2735,3772L2735,3777L2733,3780L2726,3795L2726,3800L2724,3803L2722,3803L2722,3805L2726,3808L2726,3821L2729,3823L2726,3823L2726,3833L2720,3833L2718,3838L2718,3843L2709,3843L2707,3846L2705,3854L2705,3861L2707,3864L2705,3866L2705,3874L2707,3874L2707,3879L2705,3882L2705,3887L2707,3889L2709,3897L2709,3907L2711,3907L2711,3910L2714,3910L2714,3917L2707,3917L2707,3920L2703,3920L2701,3923L2698,3923L2698,3938L2696,3940L2696,3948L2692,3948L2692,3945L2690,3945L2690,3953L2692,3956L2692,3961L2690,3963L2688,3963L2688,3968L2692,3968L2692,3971L2690,3974L2688,3974L2685,3976L2685,3981L2683,3981L2683,3986L2685,3989L2685,4012L2683,4012L2683,4014L2688,4019L2688,4025L2690,4025L2690,4027L2688,4030L2681,4030L2679,4035L2681,4037L2679,4042L2679,4060L2685,4060L2685,4063L2690,4063L2690,4068L2685,4068L2683,4070L2683,4073L2685,4073L2690,4076L2690,4081L2688,4081L2688,4083L2692,4088L2688,4093L2688,4101L2685,4101L2685,4104L2705,4104L2705,4106L2707,4106L2707,4109L2705,4109L2703,4111L2703,4116L2698,4116L2696,4114L2694,4114L2692,4116L2690,4116L2690,4114L2688,4114L2688,4116L2681,4116L2681,4114L2679,4114L2679,4119L2683,4119L2688,4121L2694,4121L2694,4124L2696,4124L2701,4129L2701,4132L2696,4139L2690,4139L2690,4142L2688,4142L2688,4149L2690,4149L2690,4152L2692,4152L2692,4155L2690,4157L2690,4160L2685,4160L2685,4162L2690,4162L2690,4172L2692,4172L2692,4178L2690,4178L2685,4183L2683,4183L2683,4190L2685,4193L2685,4195L2681,4198L2679,4200L2675,4200L2675,4203L2672,4203L2672,4211L2670,4211L2668,4213L2666,4218L2668,4218L2668,4221L2670,4221L2672,4223L2672,4226L2675,4231L2670,4234L2668,4234L2666,4236L2666,4249L2662,4251L2655,4251L2655,4254L2653,4254L2653,4257L2651,4257L2649,4262L2651,4262L2651,4264L2642,4264L2640,4267L2640,4269L2638,4272L2640,4272L2640,4274L2642,4280L2640,4280L2640,4282L2638,4285L2640,4285L2640,4292L2642,4292L2646,4297L2646,4302L2649,4305L2649,4310L2655,4310L2655,4308L2666,4308L2666,4305L2672,4305L2672,4313L2675,4313L2675,4320L2672,4320L2670,4323L2672,4325L2675,4325L2675,4328L2672,4328L2672,4336L2670,4336L2675,4341L2675,4343L2679,4343L2683,4346L2683,4351L2739,4351L2739,4354L2744,4354L2752,4356L2759,4356L2762,4358L2761,4359L2757,4359L2752,4361L2752,4363L2749,4365L2748,4366L2747,4367L2746,4369L2739,4369L2724,4374L2718,4374L2716,4376L2714,4382L2716,4382L2716,4384L2714,4389L2711,4389L2711,4392L2709,4397L2709,4399L2711,4402L2711,4405L2709,4410L2709,4412L2706,4409L2702,4415L2705,4418L2708,4417L2710,4420L2710,4425L2705,4430L2710,4429L2713,4425L2713,4421L2715,4419L2712,4416L2714,4412L2719,4406L2721,4402L2723,4404L2724,4412L2729,4424L2733,4427L2737,4426L2742,4428L2742,4426L2748,4426L2750,4429L2755,4430L2759,4432L2761,4429L2757,4427L2752,4427L2750,4425L2746,4425L2746,4422L2739,4422L2735,4420L2733,4415L2733,4410L2739,4405L2744,4405L2755,4402L2755,4394L2748,4394L2742,4397L2737,4397L2735,4399L2729,4399L2724,4397L2724,4384L2726,4382L2729,4382L2729,4384L2726,4384L2729,4387L2731,4384L2733,4384L2733,4382L2731,4379L2729,4379L2729,4376L2733,4374L2733,4376L2735,4376L2735,4379L2739,4379L2744,4376L2745,4376L2748,4373L2748,4371L2749,4369L2750,4369L2752,4366L2755,4369L2757,4369L2759,4371L2759,4374L2765,4374L2770,4371L2776,4371L2776,4417L2774,4427L2776,4427L2774,4435L2774,4445L2771,4445L2770,4446L2775,4448L2783,4448L2783,4450L2783,4450L2783,4452L2785,4460L2792,4467L2792,4470L2790,4471L2785,4468L2781,4467L2777,4468L2775,4470L2770,4469L2766,4469L2764,4471L2756,4469L2751,4465L2747,4465L2743,4461L2733,4461L2732,4455L2736,4455L2737,4459L2741,4458L2736,4453L2733,4449L2733,4446L2730,4445L2728,4447L2730,4449L2728,4454L2724,4456L2718,4455L2709,4450L2708,4444L2711,4444L2713,4446L2720,4447L2721,4444L2718,4444L2714,4443L2713,4440L2709,4438L2704,4439L2702,4438L2701,4436L2699,4436L2699,4437L2694,4442L2685,4442L2680,4441L2679,4439L2678,4436L2680,4433L2679,4432L2670,4432L2667,4430L2666,4421L2665,4420L2661,4421L2656,4421L2653,4422L2648,4421L2644,4421L2641,4418L2642,4416L2645,4415L2645,4410L2643,4408L2638,4409L2637,4406L2633,4406L2632,4403L2630,4403L2629,4394L2631,4394L2633,4395L2634,4395L2635,4394L2633,4391L2632,4391L2628,4392L2625,4391L2622,4389L2617,4389L2605,4378L2604,4375L2607,4375L2610,4375L2614,4379L2618,4381L2626,4382L2642,4389L2644,4388L2636,4382L2632,4381L2631,4379L2636,4378L2633,4376L2631,4375L2628,4376L2625,4374L2623,4373L2622,4375L2619,4373L2619,4370L2621,4369L2624,4370L2624,4366L2619,4363L2619,4361L2617,4359L2615,4361L2614,4358L2614,4356L2612,4353L2610,4356L2609,4360L2611,4362L2612,4366L2609,4369L2608,4365L2605,4363L2603,4362L2601,4360L2601,4358L2598,4355L2595,4354L2596,4347L2594,4346L2596,4342L2599,4342L2601,4342L2601,4340L2603,4340L2608,4343L2613,4350L2616,4353L2620,4354L2622,4354L2622,4351L2618,4349L2613,4346L2612,4342L2613,4342L2616,4343L2617,4344L2618,4344L2626,4348L2628,4348L2625,4345L2621,4342L2620,4339L2621,4337L2624,4337L2626,4339L2626,4336L2625,4332L2623,4332L2619,4332L2618,4329L2621,4327L2621,4325L2618,4326L2616,4323L2615,4322L2615,4324L2613,4325L2611,4328L2611,4331L2609,4331L2607,4333L2604,4333L2602,4336L2600,4337L2597,4336L2598,4335L2597,4333L2596,4334L2592,4339L2589,4340L2588,4337L2591,4334L2591,4331L2591,4327L2595,4327L2597,4326L2597,4324L2600,4321L2597,4321L2595,4319L2597,4316L2600,4314L2599,4312L2598,4312L2594,4309L2596,4307L2601,4307L2603,4305L2606,4307L2607,4306L2604,4302L2604,4300L2607,4295L2607,4289L2600,4285L2600,4283L2590,4282L2587,4281L2584,4281L2583,4280L2583,4273L2582,4271L2582,4268L2584,4266L2583,4262L2580,4260L2579,4256L2577,4254L2579,4252L2581,4247L2581,4243L2578,4239L2578,4236L2582,4235L2582,4222L2584,4220L2588,4221L2588,4225L2591,4229L2592,4228L2591,4225L2590,4220L2591,4217L2590,4214L2587,4212L2592,4209L2598,4209L2598,4211L2597,4214L2599,4216L2602,4214L2605,4218L2604,4223L2605,4226L2609,4233L2609,4237L2611,4240L2612,4243L2611,4246L2611,4248L2614,4246L2615,4240L2612,4236L2605,4211L2605,4208L2608,4205L2612,4201L2617,4192L2621,4188L2622,4186L2617,4182L2615,4180L2611,4180L2607,4182L2597,4179L2594,4177L2586,4175L2585,4178L2588,4181L2587,4185L2584,4186L2578,4179L2577,4174L2592,4166L2597,4163L2603,4161L2603,4158L2605,4156L2601,4156L2601,4157L2599,4158L2597,4158L2595,4151L2606,4148L2609,4150L2611,4149L2609,4145L2602,4145L2602,4142L2608,4142L2612,4134L2611,4133L2614,4128L2613,4125L2616,4123L2621,4117L2625,4115L2630,4115L2633,4114L2631,4108L2636,4102L2637,4104L2636,4116L2633,4118L2633,4131L2630,4136L2630,4141L2628,4144L2626,4157L2627,4159L2631,4150L2634,4150L2634,4157L2631,4169L2625,4172L2626,4174L2629,4174L2637,4164L2637,4153L2639,4149L2638,4146L2640,4137L2644,4133L2648,4133L2652,4136L2652,4134L2649,4130L2645,4130L2640,4132L2639,4131L2640,4126L2643,4122L2648,4122L2661,4115L2662,4109L2662,4104L2653,4098L2648,4097L2646,4094L2647,4089L2655,4083L2653,4080L2655,4075L2652,4074L2651,4070L2652,4066L2656,4066L2656,4063L2656,4059L2661,4058L2660,4054L2658,4051L2658,4041L2664,4042L2663,4039L2660,4036L2659,4032L2666,4029L2666,4025L2663,4025L2658,4023L2660,4018L2662,4015L2662,4012L2657,4008L2654,4008L2652,4011L2651,4016L2649,4017L2640,4017L2639,4017L2638,4017L2633,4017L2633,4014L2636,4012L2633,4012L2629,4007L2631,4004L2629,4004L2629,3999L2627,3999L2627,3986L2631,3979L2633,3976L2633,3974L2631,3974L2633,3966L2636,3963L2636,3961L2633,3958L2636,3958L2640,3956L2644,3956L2644,3945L2646,3945L2646,3943L2649,3940L2646,3940L2649,3938L2649,3935L2640,3912L2640,3900L2642,3897L2642,3894L2640,3894L2640,3889L2636,3884L2636,3879L2638,3879L2638,3874L2636,3874L2636,3866L2640,3866L2640,3869L2646,3869L2646,3866L2649,3866L2649,3864L2651,3856L2651,3851L2655,3851L2655,3846L2657,3841L2659,3838L2659,3828L2662,3826L2666,3823L2666,3821L2664,3818L2664,3813L2668,3813L2668,3810L2670,3808L2670,3803L2672,3803L2677,3798L2677,3792L2679,3790L2679,3785L2681,3785L2681,3775L2683,3775L2681,3772L2681,3767L2685,3762L2685,3757L2688,3757L2688,3754L2690,3754L2692,3752L2692,3747L2690,3741L2690,3739L2688,3734L2690,3734L2694,3731L2694,3726L2696,3724L2696,3713L2698,3711L2696,3708L2696,3706L2694,3703L2694,3698L2696,3698L2696,3690L2694,3690L2694,3683L2692,3675L2692,3662L2690,3662L2690,3645L2692,3642L2696,3642L2698,3639L2698,3637L2701,3629L2701,3609L2698,3609L2696,3606L2696,3599L2694,3599L2696,3596L2696,3594L2701,3588L2701,3586L2703,3583L2705,3578L2705,3565L2707,3563L2707,3560L2709,3558L2709,3555L2711,3555L2714,3550L2711,3550L2711,3537L2714,3537L2716,3535L2716,3532L2714,3530L2716,3525L2718,3522L2718,3514L2720,3512L2718,3507L2720,3504L2720,3499L2718,3499L2718,3492L2720,3486L2724,3481L2724,3466L2722,3466L2722,3463L2720,3458L2722,3453L2722,3441L2724,3441L2722,3438L2722,3430L2724,3428L2724,3425L2726,3425L2726,3420L2724,3420L2724,3418L2722,3418L2722,3420L2720,3420L2720,3410L2722,3405L2726,3405L2729,3402L2729,3392L2731,3384L2731,3374L2733,3372L2733,3359L2735,3356L2735,3346L2733,3341L2733,3333L2731,3331L2733,3318L2733,3293L2731,3288L2731,3282L2729,3282L2729,3280L2731,3277L2729,3277L2729,3267L2726,3259L2729,3259L2729,3252L2726,3252L2726,3249L2729,3249L2731,3252L2733,3252L2733,3249L2737,3249L2744,3242L2744,3239L2742,3234L2742,3229L2746,3229L2750,3224L2750,3229L2752,3229L2757,3234L2757,3239L2761,3242L2763,3242L2761,3244L2761,3247L2763,3247L2763,3262L2765,3265L2765,3267L2768,3270L2765,3272L2768,3275L2772,3277L2774,3280L2774,3282L2778,3282L2778,3285L2781,3285L2781,3288L2778,3290L2776,3290L2776,3293L2774,3295L2774,3298L2776,3298L2776,3300L2778,3303L2776,3305L2776,3308L2772,3308L2772,3308L2772,3308zM2607,4080L2610,4078L2610,4076L2607,4074L2604,4074L2603,4076L2603,4078L2604,4080L2607,4080L2607,4080L2607,4080zM2785,4450L2787,4450L2787,4453L2789,4455L2789,4458L2791,4458L2796,4455L2796,4458L2802,4458L2802,4455L2809,4455L2809,4458L2813,4461L2817,4455L2820,4455L2820,4453L2815,4448L2783,4448L2783,4450L2785,4450L2785,4450L2785,4450zM2618,4068L2629,4068L2629,4070L2633,4070L2636,4068L2636,4065L2633,4065L2633,4063L2631,4063L2631,4060L2633,4060L2640,4063L2640,4060L2638,4058L2638,4055L2636,4055L2636,4053L2640,4053L2640,4050L2636,4050L2631,4045L2631,4040L2633,4040L2631,4040L2631,4042L2638,4042L2638,4040L2636,4040L2636,4035L2644,4035L2644,4032L2642,4030L2640,4030L2640,4027L2642,4027L2640,4025L2640,4019L2631,4019L2631,4022L2629,4022L2627,4019L2629,4019L2629,4017L2625,4017L2625,4030L2623,4030L2623,4032L2620,4032L2620,4042L2623,4042L2623,4045L2620,4053L2620,4055L2618,4058L2620,4058L2616,4060L2614,4065L2616,4065L2618,4068L2618,4068L2618,4068zM2629,4088L2625,4088L2623,4086L2620,4086L2623,4083L2631,4083L2633,4086L2629,4086L2629,4088L2629,4088L2629,4088z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2406,2407L2409,2410L2413,2411L2414,2409L2412,2408L2411,2403L2409,2402L2407,2403L2406,2407L2406,2407L2406,2407zM2483,2357L2479,2355L2472,2356L2469,2351L2466,2347L2463,2343L2467,2339L2470,2336L2474,2337L2481,2338L2484,2340L2490,2343L2503,2344L2503,2347L2508,2347L2510,2349L2514,2349L2519,2354L2521,2354L2521,2357L2523,2357L2523,2362L2525,2362L2527,2364L2527,2367L2532,2367L2532,2372L2529,2372L2529,2375L2532,2375L2532,2380L2534,2380L2534,2382L2536,2382L2536,2387L2538,2390L2536,2392L2534,2392L2532,2398L2534,2398L2534,2400L2527,2405L2525,2405L2525,2400L2523,2398L2523,2400L2521,2400L2521,2403L2523,2403L2523,2408L2521,2408L2519,2415L2516,2415L2514,2410L2510,2405L2510,2403L2508,2400L2508,2398L2506,2395L2506,2392L2503,2392L2503,2387L2508,2387L2506,2384L2507,2381L2509,2378L2505,2376L2501,2376L2501,2369L2499,2369L2499,2367L2497,2367L2490,2359L2483,2357L2483,2357zM2438,2357L2441,2355L2443,2354L2445,2354L2447,2352L2456,2352L2456,2349L2458,2349L2460,2347L2463,2349L2467,2355L2470,2361L2466,2362L2466,2365L2467,2369L2460,2375L2460,2377L2456,2377L2456,2380L2449,2380L2447,2382L2447,2390L2449,2390L2458,2400L2460,2405L2460,2408L2451,2408L2449,2410L2449,2413L2447,2415L2434,2415L2433,2413L2434,2408L2433,2406L2432,2403L2430,2400L2430,2395L2428,2395L2425,2400L2425,2403L2423,2403L2423,2400L2419,2400L2417,2398L2415,2398L2415,2390L2412,2390L2412,2385L2406,2385L2402,2382L2399,2385L2399,2382L2397,2382L2397,2380L2378,2380L2378,2380L2380,2377L2380,2367L2378,2367L2378,2364L2380,2362L2382,2362L2384,2359L2384,2357L2380,2354L2378,2354L2378,2341L2380,2339L2380,2336L2382,2336L2382,2339L2384,2339L2384,2341L2386,2341L2389,2339L2396,2342L2392,2346L2395,2352L2397,2354L2398,2356L2402,2358L2406,2358L2410,2357L2408,2354L2406,2354L2406,2352L2408,2352L2412,2357L2412,2359L2415,2359L2415,2362L2417,2362L2419,2363L2427,2362L2432,2362L2436,2359L2438,2357L2438,2357z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6725,4384L6716,4384L6723,4392L6725,4392L6725,4389L6729,4389L6729,4387L6727,4387L6725,4384L6725,4384zM6638,4255L6633,4256L6631,4257L6626,4257L6619,4262L6617,4261L6616,4259L6616,4256L6614,4252L6611,4252L6609,4255L6607,4254L6607,4249L6604,4250L6603,4248L6601,4249L6600,4246L6598,4242L6594,4243L6594,4245L6592,4246L6593,4250L6589,4256L6589,4259L6589,4262L6591,4265L6591,4268L6589,4273L6590,4277L6599,4276L6601,4273L6603,4271L6607,4272L6609,4273L6614,4275L6616,4274L6617,4272L6619,4271L6620,4275L6624,4276L6630,4277L6634,4274L6632,4270L6623,4271L6623,4268L6626,4266L6636,4267L6641,4264L6641,4260L6638,4255L6638,4255zM8937,3018L8934,3021L8940,3028L8945,3032L8951,3032L8952,3028L8944,3024L8937,3018L8937,3018zM4481,614L4480,617L4474,622L4480,624L4486,623L4488,625L4490,629L4496,633L4498,628L4495,625L4497,620L4508,615L4509,612L4492,611L4481,614L4481,614zM4864,2637L4862,2640L4862,2642L4860,2642L4860,2645L4862,2650L4864,2650L4869,2645L4869,2640L4866,2637L4864,2637L4864,2637zM6229,3336L6227,3336L6227,3333L6220,3333L6216,3336L6216,3344L6220,3349L6224,3349L6227,3351L6229,3349L6231,3349L6233,3344L6233,3341L6229,3341L6229,3336L6229,3336zM4489,634L4486,636L4490,642L4495,644L4497,642L4494,636L4489,634L4489,634zM2965,2260L2967,2260L2970,2256L2971,2255L2971,2252L2967,2252L2965,2260L2965,2260zM2982,2132L2982,2130L2980,2127L2978,2130L2978,2132L2980,2132L2982,2132L2982,2132zM2980,2153L2980,2145L2976,2140L2973,2140L2973,2145L2976,2145L2976,2150L2978,2153L2978,2155L2980,2153L2980,2153zM2984,2219L2984,2214L2982,2214L2980,2216L2980,2222L2982,2222L2984,2219L2984,2219zM2965,2117L2965,2120L2967,2127L2967,2130L2969,2130L2971,2127L2971,2120L2969,2117L2965,2117L2965,2117zM2973,2122L2976,2122L2980,2120L2982,2120L2980,2117L2978,2117L2976,2114L2976,2112L2973,2112L2973,2117L2971,2120L2973,2120L2973,2122L2973,2122zM2980,2168L2982,2171L2986,2178L2991,2178L2991,2181L2993,2178L2993,2176L2989,2171L2989,2168L2986,2165L2980,2165L2980,2168L2980,2168zM2991,2201L2991,2193L2989,2191L2984,2196L2984,2201L2989,2201L2989,2204L2991,2201L2991,2201zM9287,3007L9289,3007L9289,3004L9293,3004L9296,3002L9296,2999L9289,2999L9287,3002L9285,3002L9283,3004L9284,3006L9287,3007L9287,3007zM3032,2226L3032,2221L3028,2215L3023,2218L3023,2222L3025,2228L3032,2226L3032,2226zM3684,4438L3682,4435L3679,4435L3675,4430L3675,4427L3673,4425L3671,4425L3669,4427L3669,4425L3666,4425L3664,4420L3653,4420L3649,4417L3647,4420L3643,4420L3641,4417L3625,4417L3625,4420L3630,4420L3634,4418L3636,4418L3636,4420L3634,4420L3634,4422L3641,4422L3643,4422L3643,4425L3649,4425L3651,4427L3658,4427L3660,4430L3660,4433L3666,4433L3677,4445L3682,4445L3682,4443L3686,4443L3686,4440L3684,4440L3684,4438L3684,4438zM3077,4336L3073,4333L3073,4331L3061,4332L3056,4328L3054,4328L3054,4331L3049,4331L3047,4328L3045,4331L3045,4331L3043,4333L3041,4333L3041,4336L3038,4338L3043,4338L3041,4341L3038,4341L3036,4343L3034,4343L3028,4348L3023,4356L3032,4361L3033,4361L3033,4359L3034,4359L3034,4356L3036,4359L3041,4359L3043,4356L3041,4354L3038,4354L3038,4351L3043,4354L3045,4356L3047,4354L3054,4354L3054,4351L3049,4351L3049,4348L3060,4348L3064,4346L3066,4346L3066,4343L3075,4343L3077,4341L3077,4338L3071,4338L3071,4336L3077,4336L3077,4336zM2967,2097L2969,2094L2969,2091L2967,2091L2965,2089L2963,2091L2963,2094L2965,2097L2967,2097L2967,2097zM2651,1959L2646,1959L2640,1959L2636,1961L2633,1964L2636,1967L2651,1967L2651,1964L2653,1959L2653,1954L2651,1956L2651,1959L2651,1959zM3028,4341L3030,4338L3032,4338L3036,4333L3032,4331L3030,4331L3030,4333L3019,4333L3019,4331L3015,4331L3012,4333L3015,4333L3012,4336L3008,4336L3006,4333L3004,4334L3002,4331L2997,4331L2997,4333L3002,4333L3006,4338L3008,4340L3010,4342L3008,4342L2999,4341L3002,4343L3002,4348L3004,4348L3004,4351L2993,4350L2991,4344L2982,4346L2991,4356L2995,4359L2999,4359L3004,4356L3006,4356L3012,4348L3017,4351L3023,4343L3028,4341L3028,4341zM4448,324L4461,324L4459,329L4451,329L4448,332L4442,332L4433,334L4431,337L4429,337L4429,334L4433,332L4438,332L4442,329L4446,329L4446,327L4448,327L4448,324L4448,324z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7564,2618L7565,2619L7567,2621L7568,2618L7569,2618L7570,2621L7573,2623L7574,2626L7575,2628L7576,2631L7577,2630L7578,2628L7577,2626L7576,2623L7575,2621L7572,2618L7573,2614L7572,2612L7568,2612L7568,2615L7566,2615L7564,2618L7564,2618zM8029,2857L8030,2854L8030,2841L8027,2839L8025,2845L8026,2861L8027,2862L8029,2857L8029,2857L8029,2857zM8164,2531L8167,2535L8167,2540L8170,2540L8173,2540L8166,2527L8164,2531L8164,2531L8164,2531zM8227,2920L8231,2919L8241,2922L8243,2919L8235,2915L8230,2915L8226,2916L8227,2920L8227,2920L8227,2920zM8369,2844L8369,2837L8371,2833L8369,2829L8364,2834L8366,2838L8365,2844L8369,2844L8369,2844L8369,2844zM8372,2844L8374,2844L8374,2840L8376,2835L8378,2834L8379,2828L8379,2826L8381,2824L8378,2821L8377,2823L8376,2829L8372,2837L8372,2844L8372,2844L8372,2844zM7514,2827L7519,2829L7520,2833L7525,2832L7526,2825L7521,2825L7519,2822L7515,2823L7514,2827L7514,2827L7514,2827zM7552,2622L7553,2628L7556,2629L7557,2627L7556,2621L7554,2618L7552,2622L7552,2622L7552,2622zM7408,2655L7414,2656L7411,2659L7412,2664L7411,2668L7413,2670L7416,2670L7416,2663L7418,2662L7420,2658L7417,2658L7417,2655L7420,2655L7421,2652L7418,2652L7415,2648L7411,2646L7409,2648L7408,2655L7408,2655L7408,2655zM8121,2924L8120,2927L8126,2928L8130,2928L8134,2921L8132,2919L8130,2919L8121,2924L8121,2924L8121,2924zM8104,2927L8104,2931L8108,2932L8112,2929L8112,2927L8119,2923L8120,2920L8120,2918L8116,2918L8109,2922L8104,2927L8104,2927L8104,2927zM8233,2776L8237,2777L8239,2772L8242,2774L8245,2773L8245,2770L8256,2768L8255,2766L8248,2767L8247,2768L8245,2767L8244,2764L8235,2769L8232,2772L8233,2776L8233,2776L8233,2776zM8305,2668L8310,2668L8311,2665L8313,2664L8316,2665L8317,2664L8321,2663L8323,2661L8326,2663L8327,2663L8328,2656L8322,2652L8316,2651L8313,2650L8311,2652L8308,2653L8299,2653L8297,2656L8296,2659L8303,2660L8309,2662L8309,2664L8306,2664L8303,2665L8305,2668L8305,2668L8305,2668zM8442,2704L8453,2704L8455,2706L8466,2706L8470,2709L8483,2709L8483,2711L8477,2711L8473,2714L8464,2714L8460,2711L8457,2711L8455,2709L8451,2706L8444,2706L8442,2704L8442,2704L8442,2704zM8444,2678L8442,2678L8442,2675L8440,2673L8449,2673L8451,2675L8455,2675L8464,2686L8466,2686L8468,2688L8466,2691L8455,2691L8453,2688L8453,2681L8451,2678L8447,2681L8447,2678L8444,2678L8444,2678L8444,2678zM8412,2844L8414,2841L8412,2841L8410,2839L8408,2839L8410,2836L8412,2839L8414,2836L8416,2831L8416,2828L8421,2828L8423,2831L8421,2834L8423,2839L8423,2849L8425,2851L8423,2854L8423,2859L8418,2859L8418,2863L8417,2864L8416,2869L8414,2869L8414,2872L8412,2874L8408,2877L8403,2872L8405,2864L8405,2848L8408,2847L8409,2844L8412,2844L8412,2844L8412,2844zM8321,2908L8325,2902L8323,2902L8325,2900L8325,2895L8330,2895L8330,2892L8332,2890L8334,2885L8338,2885L8340,2887L8336,2887L8336,2890L8338,2892L8338,2895L8336,2900L8336,2902L8332,2905L8330,2908L8330,2913L8323,2913L8321,2908L8321,2908L8321,2908zM8395,2734L8397,2734L8397,2732L8399,2732L8399,2729L8401,2729L8401,2726L8400,2724L8402,2721L8402,2719L8400,2720L8392,2724L8377,2724L8375,2726L8371,2726L8371,2724L8369,2724L8369,2726L8364,2726L8364,2724L8358,2724L8358,2726L8356,2726L8356,2724L8353,2724L8351,2721L8349,2721L8349,2719L8345,2714L8345,2711L8347,2709L8343,2704L8338,2704L8338,2701L8336,2701L8327,2696L8327,2701L8325,2701L8325,2698L8321,2698L8318,2697L8321,2693L8321,2691L8325,2691L8325,2686L8327,2681L8325,2678L8332,2675L8343,2675L8343,2673L8345,2673L8345,2670L8349,2668L8349,2665L8351,2665L8353,2663L8369,2663L8371,2665L8377,2668L8379,2668L8384,2673L8384,2675L8397,2675L8395,2675L8403,2675L8405,2678L8405,2681L8403,2683L8405,2688L8408,2691L8410,2696L8410,2701L8405,2706L8408,2711L8408,2714L8405,2719L8408,2726L8408,2732L8410,2732L8412,2734L8412,2739L8416,2744L8416,2734L8418,2732L8421,2734L8421,2744L8423,2749L8425,2747L8427,2747L8427,2749L8425,2749L8425,2755L8429,2760L8431,2760L8434,2762L8444,2762L8444,2760L8447,2760L8447,2757L8449,2755L8451,2755L8451,2752L8453,2749L8455,2749L8455,2747L8457,2747L8457,2742L8460,2739L8462,2739L8462,2737L8466,2737L8466,2734L8468,2729L8468,2724L8481,2724L8486,2721L8490,2721L8492,2719L8492,2716L8490,2714L8490,2709L8494,2709L8496,2706L8499,2706L8499,2704L8503,2704L8505,2701L8507,2701L8509,2698L8512,2701L8514,2701L8516,2704L8525,2709L8531,2709L8533,2711L8535,2711L8535,2714L8538,2716L8542,2716L8551,2721L8553,2721L8557,2726L8561,2729L8570,2729L8572,2726L8574,2726L8574,2729L8579,2732L8590,2732L8590,2737L8598,2737L8598,2859L8596,2859L8596,2864L8594,2867L8594,2874L8596,2877L8598,2877L8598,2951L8596,2948L8594,2948L8585,2938L8585,2936L8577,2925L8574,2925L8572,2923L8570,2923L8570,2920L8568,2920L8568,2918L8555,2918L8553,2920L8551,2920L8548,2918L8548,2915L8540,2920L8540,2923L8537,2926L8534,2926L8528,2922L8527,2925L8525,2925L8522,2928L8520,2925L8505,2925L8505,2928L8503,2928L8503,2925L8509,2908L8512,2905L8514,2900L8516,2900L8516,2897L8518,2897L8520,2895L8525,2895L8525,2892L8538,2892L8536,2889L8536,2887L8535,2884L8533,2882L8528,2882L8528,2873L8530,2871L8530,2867L8529,2864L8527,2862L8527,2859L8525,2857L8525,2851L8522,2849L8522,2844L8520,2841L8518,2841L8518,2839L8516,2839L8516,2828L8514,2831L8512,2828L8507,2826L8507,2823L8505,2821L8501,2821L8503,2821L8501,2821L8496,2818L8494,2816L8494,2813L8492,2816L8486,2813L8481,2813L8481,2811L8475,2808L8473,2808L8473,2806L8466,2806L8462,2803L8460,2800L8457,2800L8457,2798L8444,2798L8442,2795L8440,2795L8438,2798L8436,2798L8434,2795L8431,2795L8429,2793L8425,2790L8421,2785L8421,2780L8418,2783L8416,2783L8416,2780L8414,2780L8412,2777L8412,2783L8408,2780L8408,2775L8401,2775L8399,2770L8399,2767L8397,2770L8397,2772L8395,2770L8392,2765L8395,2765L8395,2755L8397,2755L8399,2752L8399,2749L8397,2747L8395,2752L8392,2755L8392,2762L8390,2765L8390,2770L8388,2770L8386,2772L8386,2777L8388,2777L8382,2785L8373,2785L8369,2780L8371,2780L8371,2777L8369,2777L8369,2770L8371,2770L8373,2767L8369,2762L8369,2757L8366,2760L8364,2760L8364,2755L8362,2752L8360,2752L8360,2749L8356,2747L8351,2747L8349,2749L8347,2742L8351,2739L8364,2739L8364,2742L8366,2742L8366,2744L8369,2742L8371,2742L8371,2739L8373,2737L8373,2734L8375,2734L8375,2732L8379,2732L8382,2729L8382,2732L8384,2732L8386,2734L8388,2734L8390,2733L8392,2734L8395,2734L8395,2734L8395,2734zM8310,2683L8315,2681L8317,2681L8317,2683L8319,2681L8321,2681L8321,2688L8320,2690L8320,2692L8319,2693L8318,2695L8317,2695L8315,2693L8312,2693L8312,2691L8310,2688L8312,2688L8312,2686L8310,2686L8310,2683L8310,2683L8310,2683zM8284,2714L8284,2711L8286,2711L8291,2709L8293,2709L8302,2706L8302,2709L8304,2709L8304,2716L8302,2716L8297,2719L8295,2719L8284,2714L8284,2714L8284,2714zM8280,2910L8280,2908L8282,2905L8284,2905L8289,2910L8286,2910L8286,2915L8282,2915L8282,2913L8280,2910L8280,2910L8280,2910zM8243,2579L8243,2571L8245,2571L8250,2566L8252,2566L8256,2571L8256,2573L8254,2576L8254,2579L8250,2584L8245,2584L8243,2586L8243,2579L8243,2579L8243,2579zM8267,2747L8269,2747L8273,2744L8273,2742L8278,2742L8282,2744L8286,2744L8286,2747L8291,2749L8302,2749L8308,2755L8308,2757L8310,2757L8308,2760L8310,2760L8310,2762L8315,2762L8315,2765L8317,2767L8317,2770L8315,2770L8315,2777L8308,2775L8308,2772L8306,2772L8304,2770L8299,2770L8297,2767L8295,2767L8293,2765L8291,2765L8291,2762L8289,2760L8278,2760L8278,2762L8280,2762L8280,2765L8276,2765L8271,2762L8267,2762L8267,2760L8265,2760L8263,2762L8263,2757L8260,2757L8258,2760L8256,2760L8254,2762L8254,2765L8247,2765L8247,2762L8245,2762L8245,2757L8243,2757L8241,2755L8241,2752L8239,2752L8239,2757L8237,2757L8237,2762L8234,2762L8234,2760L8232,2760L8232,2755L8237,2752L8239,2749L8241,2744L8260,2744L8265,2747L8267,2747L8267,2747L8267,2747zM8258,2642L8252,2642L8252,2640L8250,2640L8250,2637L8245,2637L8245,2640L8243,2640L8241,2637L8239,2637L8237,2635L8234,2635L8234,2637L8232,2637L8232,2642L8234,2642L8234,2647L8232,2647L8232,2653L8237,2660L8237,2665L8239,2665L8239,2668L8241,2670L8241,2673L8247,2681L8243,2681L8243,2678L8241,2675L8237,2675L8237,2670L8232,2665L8232,2663L8230,2663L8226,2658L8228,2658L8228,2645L8226,2640L8224,2637L8224,2627L8226,2627L8226,2624L8224,2622L8221,2622L8221,2617L8219,2617L8219,2609L8221,2609L8221,2607L8224,2604L8224,2594L8226,2591L8226,2589L8228,2589L8234,2581L8234,2579L8239,2579L8239,2581L8237,2581L8234,2586L8232,2586L8232,2591L8234,2591L8234,2594L8237,2594L8237,2607L8234,2612L8232,2614L8226,2617L8226,2622L8230,2624L8234,2624L8234,2617L8237,2614L8241,2614L8241,2612L8239,2609L8241,2607L8247,2602L8250,2602L8252,2599L8256,2599L8256,2614L8254,2617L8250,2619L8247,2622L8243,2622L8241,2624L8241,2627L8243,2627L8243,2630L8245,2630L8250,2632L8254,2632L8256,2635L8256,2640L8258,2640L8258,2642L8258,2642L8258,2642zM8219,2704L8219,2698L8221,2698L8224,2696L8228,2696L8239,2704L8241,2704L8241,2706L8239,2706L8239,2709L8237,2709L8237,2706L8228,2706L8226,2709L8221,2709L8221,2706L8219,2706L8219,2704L8219,2704L8219,2704zM8217,2665L8217,2663L8221,2663L8224,2660L8224,2663L8226,2665L8228,2665L8228,2668L8226,2668L8226,2673L8227,2675L8228,2675L8228,2673L8230,2673L8232,2675L8232,2681L8228,2681L8228,2678L8226,2678L8225,2677L8224,2678L8221,2678L8221,2675L8219,2675L8219,2670L8217,2668L8217,2665L8217,2665L8217,2665zM8213,2675L8213,2670L8215,2670L8217,2673L8217,2678L8213,2678L8213,2675L8213,2675L8213,2675zM8211,2660L8215,2660L8216,2663L8215,2665L8215,2668L8211,2668L8211,2660L8211,2660L8211,2660zM8200,2510L8200,2505L8202,2502L8204,2502L8204,2505L8206,2512L8204,2515L8202,2520L8200,2520L8200,2517L8202,2515L8202,2512L8200,2512L8200,2510L8200,2510L8200,2510zM8211,2760L8211,2762L8213,2762L8213,2760L8215,2762L8215,2770L8211,2770L8208,2772L8200,2777L8187,2770L8182,2765L8182,2762L8180,2762L8180,2755L8182,2755L8182,2752L8185,2752L8185,2755L8187,2755L8189,2752L8204,2752L8208,2755L8211,2757L8211,2760L8211,2757L8211,2760L8211,2760L8211,2760zM8176,2719L8178,2716L8180,2716L8180,2724L8182,2732L8180,2732L8180,2729L8178,2726L8178,2724L8176,2719L8176,2719L8176,2719zM8174,2913L8176,2908L8180,2902L8182,2902L8185,2905L8187,2905L8189,2902L8191,2902L8191,2900L8195,2900L8198,2897L8198,2900L8200,2902L8202,2902L8202,2905L8198,2905L8195,2908L8195,2910L8178,2910L8176,2913L8174,2913L8174,2913L8174,2913zM8167,2923L8167,2920L8169,2918L8172,2918L8169,2923L8167,2923L8167,2923L8167,2923zM8189,2711L8185,2713L8163,2714L8163,2709L8165,2709L8165,2711L8174,2711L8178,2709L8182,2709L8185,2711L8189,2711L8189,2711L8189,2711zM8135,2925L8137,2920L8137,2918L8156,2918L8156,2925L8148,2925L8141,2928L8135,2928L8135,2925L8135,2925L8135,2925zM8135,2711L8135,2706L8137,2706L8139,2704L8143,2704L8143,2706L8152,2706L8152,2709L8156,2706L8161,2709L8161,2714L8146,2714L8146,2716L8137,2716L8135,2714L8135,2711L8135,2711L8135,2711zM8098,2782L8102,2782L8104,2783L8104,2785L8102,2790L8098,2790L8098,2788L8096,2785L8096,2783L8098,2782L8098,2782L8098,2782zM8091,3004L8094,3004L8094,3002L8100,3002L8100,2999L8107,2992L8109,2992L8109,2999L8107,3002L8104,3002L8104,3004L8100,3004L8098,3007L8096,3007L8094,3010L8091,3010L8091,3004L8091,3004L8091,3004zM8091,2698L8091,2693L8094,2693L8094,2691L8096,2691L8102,2688L8104,2691L8102,2693L8104,2696L8107,2693L8107,2691L8109,2691L8113,2693L8113,2696L8109,2701L8107,2701L8107,2698L8104,2698L8104,2704L8100,2704L8100,2701L8102,2701L8102,2696L8100,2696L8098,2698L8098,2701L8096,2701L8096,2704L8094,2704L8091,2698L8091,2698L8091,2698zM8102,2808L8100,2806L8098,2808L8098,2811L8096,2813L8096,2818L8098,2821L8098,2818L8102,2823L8102,2828L8094,2828L8094,2831L8096,2831L8091,2836L8086,2837L8084,2835L8085,2831L8087,2826L8089,2823L8091,2818L8091,2813L8094,2808L8094,2798L8096,2798L8096,2795L8098,2795L8100,2798L8102,2798L8102,2808L8102,2808L8102,2808zM8086,2820L8087,2823L8085,2827L8085,2828L8077,2828L8076,2826L8078,2821L8078,2818L8080,2818L8080,2815L8081,2813L8078,2811L8081,2808L8081,2806L8085,2806L8085,2803L8089,2803L8089,2806L8091,2810L8090,2812L8089,2815L8087,2816L8086,2818L8086,2820L8086,2820L8086,2820zM8063,2823L8063,2821L8065,2818L8065,2816L8068,2816L8068,2818L8070,2818L8070,2831L8068,2831L8065,2826L8063,2823L8063,2823L8063,2823zM8061,2997L8063,2994L8065,2994L8065,2992L8070,2992L8070,2997L8068,2997L8065,2999L8063,2999L8061,2997L8061,2997L8061,2997zM8063,2941L8057,2941L8052,2938L8052,2943L8039,2943L8037,2941L8031,2941L8031,2938L8024,2938L8022,2941L8020,2941L8020,2938L8016,2938L8011,2941L8009,2938L8009,2931L8013,2925L8016,2925L8020,2923L8022,2923L8029,2920L8033,2923L8037,2923L8039,2925L8044,2925L8044,2928L8050,2928L8050,2931L8052,2931L8052,2933L8057,2933L8057,2931L8059,2931L8059,2928L8070,2928L8072,2931L8076,2933L8081,2933L8083,2931L8083,2928L8087,2925L8091,2925L8096,2920L8094,2918L8091,2920L8089,2920L8091,2915L8094,2915L8096,2918L8098,2923L8101,2921L8104,2921L8106,2922L8100,2926L8100,2929L8096,2929L8096,2925L8094,2925L8091,2928L8091,2931L8094,2931L8094,2933L8089,2933L8085,2936L8083,2936L8081,2938L8074,2938L8068,2941L8063,2941L8063,2941L8063,2941zM7983,2964L7985,2964L7985,2961L7987,2959L7996,2959L8003,2956L8005,2956L8005,2959L8009,2959L8011,2956L8013,2956L8013,2959L8016,2959L8016,2961L8020,2961L8020,2966L8022,2966L8022,2969L8024,2969L8024,2966L8026,2966L8031,2969L8031,2974L8033,2974L8033,2976L8037,2976L8037,2981L8033,2984L8033,2987L8018,2987L8016,2984L8016,2981L8013,2979L8013,2976L8007,2976L8007,2974L8005,2974L8005,2971L7998,2971L7992,2969L7987,2969L7983,2964L7983,2964L7983,2964zM8009,2678L8009,2673L8007,2668L8007,2658L8009,2658L8009,2655L8006,2656L8003,2655L8003,2653L8004,2651L8007,2651L8008,2653L8011,2650L8011,2647L8009,2647L8009,2645L8007,2645L8011,2637L8011,2635L8016,2635L8016,2632L8013,2632L8013,2630L8016,2627L8018,2627L8020,2624L8020,2619L8024,2619L8024,2624L8026,2624L8029,2627L8031,2627L8031,2619L8035,2619L8035,2617L8037,2612L8037,2609L8039,2607L8042,2607L8044,2609L8048,2609L8048,2612L8055,2612L8055,2614L8057,2617L8063,2617L8068,2614L8068,2617L8072,2617L8076,2619L8087,2619L8087,2622L8091,2624L8094,2624L8098,2619L8104,2619L8107,2622L8113,2622L8117,2624L8122,2624L8124,2622L8130,2619L8133,2619L8133,2617L8135,2617L8135,2612L8141,2612L8141,2609L8139,2609L8139,2607L8141,2607L8141,2604L8143,2604L8143,2607L8146,2607L8148,2604L8148,2599L8152,2596L8156,2596L8156,2599L8159,2599L8159,2605L8157,2605L8156,2607L8154,2607L8154,2612L8152,2614L8150,2619L8148,2619L8143,2624L8141,2630L8141,2632L8137,2637L8135,2637L8133,2640L8120,2640L8120,2642L8104,2642L8104,2640L8102,2640L8100,2637L8100,2635L8070,2635L8070,2637L8063,2637L8063,2635L8055,2635L8050,2637L8050,2635L8048,2635L8046,2637L8037,2637L8035,2635L8024,2635L8020,2640L8018,2645L8016,2647L8016,2653L8013,2653L8013,2663L8016,2670L8016,2673L8018,2675L8018,2678L8020,2681L8022,2681L8022,2683L8024,2681L8026,2681L8029,2683L8029,2686L8031,2688L8029,2691L8031,2693L8031,2696L8037,2696L8042,2698L8044,2698L8046,2696L8046,2691L8048,2691L8055,2681L8059,2678L8059,2681L8061,2681L8061,2683L8068,2683L8072,2681L8074,2681L8074,2675L8085,2675L8087,2678L8091,2675L8096,2675L8094,2673L8089,2673L8091,2670L8107,2670L8109,2673L8109,2683L8107,2686L8104,2686L8102,2683L8102,2681L8091,2681L8091,2686L8081,2698L8081,2701L8078,2701L8076,2704L8070,2704L8068,2706L8063,2706L8063,2711L8061,2711L8061,2714L8057,2714L8055,2711L8050,2709L8050,2716L8052,2716L8057,2721L8061,2721L8065,2726L8070,2739L8072,2742L8074,2742L8078,2747L8078,2749L8076,2749L8081,2755L8083,2755L8081,2757L8078,2757L8078,2760L8076,2762L8076,2765L8078,2765L8076,2767L8074,2767L8074,2770L8076,2770L8078,2772L8083,2775L8087,2780L8087,2785L8089,2787L8090,2786L8091,2784L8092,2783L8094,2784L8095,2786L8094,2788L8094,2795L8091,2798L8087,2798L8087,2795L8083,2795L8078,2798L8074,2798L8072,2800L8072,2803L8070,2803L8070,2806L8072,2806L8072,2811L8061,2811L8061,2808L8057,2806L8055,2803L8055,2798L8057,2790L8058,2789L8059,2788L8059,2783L8052,2783L8052,2780L8050,2780L8048,2775L8046,2775L8039,2770L8039,2767L8037,2767L8037,2762L8039,2762L8042,2757L8043,2757L8043,2742L8042,2739L8037,2737L8033,2737L8029,2739L8024,2744L8020,2747L8020,2749L8022,2755L8024,2755L8024,2767L8026,2767L8026,2775L8024,2775L8024,2798L8026,2803L8024,2808L8024,2811L8022,2811L8022,2823L8024,2826L8026,2831L8026,2836L8024,2834L8024,2831L8022,2831L8020,2834L8011,2834L8007,2839L8005,2839L8005,2836L8003,2836L8003,2834L7998,2834L7996,2828L7996,2818L7998,2818L7998,2816L8000,2813L8000,2803L8002,2800L8003,2780L8000,2777L7998,2772L7998,2770L8000,2770L8000,2765L7996,2765L7994,2762L7994,2765L7987,2765L7987,2767L7983,2767L7981,2762L7981,2752L7983,2747L7983,2744L7979,2744L7979,2739L7981,2739L7981,2737L7983,2739L7990,2732L7990,2724L7992,2716L7996,2716L7996,2709L7994,2706L7994,2691L7996,2691L7996,2688L7998,2688L7998,2683L8000,2681L8000,2678L8003,2678L8005,2675L8005,2673L8007,2673L8007,2675L8009,2678L8009,2678L8009,2678zM7953,2528L7953,2530L7953,2528L7953,2528L7953,2528zM7943,2924L7943,2920L7945,2917L7948,2917L7948,2919L7946,2920L7946,2923L7946,2931L7948,2931L7951,2933L7955,2936L7957,2938L7961,2933L7964,2933L7964,2936L7966,2936L7966,2933L7961,2928L7957,2928L7953,2925L7951,2920L7951,2918L7953,2918L7957,2915L7961,2915L7961,2918L7964,2918L7964,2923L7966,2923L7966,2925L7968,2925L7968,2923L7970,2923L7970,2920L7972,2920L7974,2923L7977,2923L7977,2931L7979,2928L7979,2923L7985,2923L7987,2928L7987,2933L7992,2933L7992,2936L7990,2938L7986,2937L7985,2936L7979,2936L7981,2938L7983,2938L7984,2939L7985,2941L7981,2941L7979,2938L7977,2938L7977,2941L7970,2941L7968,2938L7970,2938L7970,2933L7964,2941L7959,2941L7957,2943L7948,2943L7946,2946L7942,2946L7942,2948L7940,2948L7940,2946L7935,2946L7935,2948L7931,2948L7925,2946L7922,2946L7925,2941L7925,2933L7927,2931L7929,2931L7931,2928L7933,2928L7933,2925L7938,2925L7942,2928L7942,2925L7943,2924L7943,2924L7943,2924zM7910,2778L7907,2783L7905,2783L7905,2775L7903,2775L7903,2770L7905,2765L7906,2760L7909,2757L7909,2767L7912,2774L7911,2778L7910,2778L7910,2778L7910,2778zM7899,2938L7903,2938L7905,2936L7905,2925L7909,2920L7916,2920L7920,2923L7922,2923L7922,2931L7918,2936L7918,2941L7920,2941L7918,2943L7916,2943L7916,2941L7914,2941L7914,2943L7907,2943L7907,2941L7903,2941L7903,2943L7899,2941L7899,2938L7899,2938L7899,2938zM7860,2915L7862,2915L7866,2918L7870,2918L7870,2920L7875,2918L7877,2918L7879,2915L7881,2915L7886,2918L7888,2918L7894,2925L7894,2928L7892,2928L7888,2931L7886,2933L7883,2933L7883,2936L7881,2936L7881,2941L7877,2941L7879,2938L7879,2936L7877,2933L7875,2928L7870,2928L7868,2925L7864,2925L7862,2923L7862,2920L7860,2920L7860,2915L7860,2915L7860,2915zM7810,2882L7812,2882L7812,2879L7814,2879L7814,2877L7851,2877L7851,2879L7849,2879L7847,2882L7842,2882L7842,2885L7836,2885L7834,2887L7819,2887L7816,2885L7812,2885L7810,2882L7810,2882L7810,2882zM7712,2650L7712,2645L7710,2642L7706,2642L7706,2627L7704,2624L7706,2622L7708,2622L7708,2609L7710,2609L7710,2599L7715,2599L7715,2596L7717,2596L7717,2589L7722,2586L7723,2585L7725,2584L7723,2589L7723,2591L7725,2591L7725,2594L7728,2596L7728,2602L7730,2602L7732,2604L7734,2604L7736,2609L7738,2612L7741,2612L7745,2619L7749,2622L7751,2622L7751,2624L7754,2624L7756,2622L7758,2622L7758,2619L7760,2619L7762,2617L7773,2617L7775,2619L7780,2619L7782,2617L7784,2617L7784,2619L7788,2619L7788,2617L7790,2614L7795,2614L7797,2607L7797,2604L7797,2607L7797,2604L7806,2599L7819,2599L7823,2604L7829,2607L7832,2609L7836,2609L7836,2612L7838,2612L7840,2609L7842,2609L7842,2607L7845,2607L7845,2604L7855,2604L7858,2602L7860,2602L7860,2604L7864,2604L7866,2596L7866,2594L7870,2589L7870,2584L7868,2584L7868,2579L7870,2579L7870,2576L7873,2576L7877,2571L7881,2571L7881,2566L7877,2566L7879,2558L7879,2556L7881,2553L7888,2553L7888,2551L7890,2548L7890,2540L7892,2540L7892,2535L7890,2535L7890,2530L7892,2530L7892,2525L7894,2517L7894,2515L7899,2510L7899,2507L7903,2510L7903,2512L7905,2512L7907,2510L7938,2510L7942,2512L7942,2517L7944,2517L7948,2522L7944,2522L7948,2525L7951,2525L7953,2528L7953,2530L7951,2533L7947,2532L7947,2534L7945,2537L7944,2537L7945,2539L7946,2538L7949,2538L7949,2540L7950,2542L7949,2544L7946,2544L7945,2542L7940,2543L7940,2545L7938,2545L7940,2548L7944,2548L7948,2551L7951,2553L7951,2556L7948,2558L7948,2561L7953,2561L7953,2566L7961,2576L7955,2584L7955,2591L7957,2591L7966,2602L7970,2604L7970,2607L7974,2607L7979,2609L7979,2612L7981,2612L7981,2614L7983,2617L7985,2617L7985,2622L7983,2622L7981,2624L7968,2624L7964,2622L7961,2622L7960,2621L7959,2619L7959,2617L7957,2617L7957,2619L7959,2624L7953,2624L7951,2627L7951,2630L7948,2637L7946,2637L7946,2640L7944,2642L7944,2658L7942,2658L7942,2660L7944,2663L7944,2665L7946,2665L7948,2666L7946,2673L7948,2675L7948,2678L7944,2677L7938,2681L7933,2686L7933,2688L7929,2693L7925,2693L7925,2696L7922,2696L7920,2698L7918,2698L7918,2704L7914,2706L7912,2709L7916,2709L7916,2719L7914,2719L7912,2721L7914,2724L7916,2724L7916,2721L7918,2721L7920,2724L7920,2726L7918,2729L7918,2734L7914,2734L7914,2732L7912,2734L7912,2737L7914,2739L7914,2744L7912,2747L7912,2749L7909,2749L7909,2747L7907,2744L7905,2747L7905,2749L7907,2752L7909,2752L7909,2755L7907,2755L7905,2757L7903,2765L7903,2767L7901,2770L7896,2770L7896,2772L7894,2772L7886,2777L7883,2777L7875,2783L7873,2783L7873,2785L7868,2785L7868,2788L7864,2788L7864,2770L7860,2765L7855,2765L7855,2762L7849,2762L7845,2765L7836,2765L7836,2762L7838,2762L7838,2757L7836,2757L7836,2755L7832,2755L7832,2757L7827,2757L7827,2755L7825,2755L7821,2749L7819,2752L7819,2757L7814,2757L7814,2760L7812,2760L7808,2765L7806,2765L7806,2762L7803,2762L7801,2760L7797,2760L7797,2762L7795,2762L7790,2767L7786,2767L7786,2765L7788,2762L7788,2760L7786,2760L7786,2747L7784,2747L7780,2749L7777,2749L7777,2747L7773,2747L7771,2749L7769,2749L7767,2752L7762,2752L7758,2749L7756,2749L7756,2752L7754,2752L7754,2744L7749,2744L7747,2747L7745,2747L7745,2749L7743,2749L7743,2739L7741,2734L7741,2726L7738,2724L7738,2721L7741,2719L7738,2716L7738,2714L7734,2714L7734,2709L7736,2709L7736,2706L7738,2698L7738,2693L7736,2693L7734,2691L7732,2686L7730,2687L7729,2689L7724,2692L7722,2693L7721,2692L7720,2693L7720,2687L7720,2684L7722,2684L7725,2684L7725,2683L7725,2681L7723,2681L7721,2678L7719,2678L7719,2681L7717,2681L7717,2678L7715,2675L7715,2673L7717,2673L7721,2675L7723,2675L7719,2670L7712,2670L7712,2668L7710,2665L7710,2658L7712,2650L7712,2650L7712,2650zM7684,2528L7682,2525L7682,2522L7680,2522L7680,2520L7684,2515L7689,2515L7689,2517L7691,2520L7691,2522L7693,2525L7691,2525L7691,2528L7686,2533L7684,2530L7684,2528L7684,2528L7684,2528zM7669,2749L7669,2742L7671,2742L7671,2734L7676,2734L7680,2737L7682,2737L7689,2742L7689,2747L7686,2749L7686,2752L7682,2757L7680,2757L7680,2755L7678,2752L7676,2752L7676,2755L7671,2757L7669,2757L7669,2749L7669,2749L7669,2749zM7610,2875L7608,2874L7604,2874L7604,2872L7608,2872L7611,2873L7615,2869L7615,2862L7617,2864L7619,2864L7619,2854L7621,2854L7621,2849L7626,2844L7628,2844L7628,2849L7630,2849L7630,2846L7634,2846L7639,2849L7645,2849L7645,2851L7652,2851L7652,2849L7654,2849L7654,2844L7656,2846L7663,2846L7663,2849L7665,2849L7671,2857L7673,2857L7678,2854L7682,2859L7686,2859L7686,2857L7691,2857L7691,2859L7693,2859L7693,2862L7695,2862L7695,2867L7697,2869L7697,2872L7699,2874L7708,2874L7717,2877L7721,2877L7721,2874L7725,2874L7730,2877L7743,2877L7745,2879L7749,2879L7749,2877L7754,2872L7754,2867L7756,2864L7756,2862L7767,2862L7767,2869L7769,2869L7773,2872L7775,2872L7775,2869L7782,2869L7782,2872L7784,2872L7784,2874L7793,2874L7793,2877L7808,2877L7808,2882L7810,2885L7810,2890L7812,2887L7814,2887L7814,2895L7812,2895L7812,2897L7814,2897L7814,2900L7819,2902L7823,2902L7825,2905L7832,2905L7834,2902L7836,2902L7838,2905L7840,2905L7845,2902L7847,2902L7847,2900L7849,2900L7849,2902L7851,2902L7855,2905L7860,2905L7860,2910L7858,2920L7858,2931L7860,2933L7862,2933L7864,2936L7864,2938L7860,2938L7858,2936L7858,2933L7847,2933L7845,2931L7840,2931L7838,2928L7836,2928L7827,2923L7819,2923L7819,2925L7816,2925L7810,2928L7801,2923L7788,2923L7786,2920L7784,2923L7784,2925L7782,2925L7767,2920L7756,2920L7749,2915L7747,2915L7738,2910L7736,2910L7734,2908L7728,2905L7719,2905L7719,2902L7695,2902L7695,2905L7693,2908L7691,2908L7686,2905L7682,2905L7678,2902L7676,2902L7671,2900L7669,2900L7669,2897L7663,2897L7658,2895L7641,2895L7637,2892L7637,2887L7639,2885L7639,2882L7641,2882L7641,2879L7632,2879L7630,2877L7628,2877L7628,2874L7610,2875L7610,2875L7610,2875zM7600,2716L7602,2716L7602,2714L7606,2714L7608,2711L7608,2709L7606,2709L7606,2706L7608,2704L7611,2704L7613,2701L7615,2701L7615,2709L7617,2709L7619,2711L7619,2709L7617,2706L7617,2701L7624,2701L7626,2704L7626,2706L7628,2709L7628,2711L7630,2714L7630,2721L7632,2726L7632,2729L7634,2732L7637,2732L7647,2737L7645,2737L7643,2739L7643,2742L7641,2744L7641,2747L7643,2747L7643,2749L7645,2749L7645,2752L7639,2752L7639,2749L7637,2749L7634,2747L7632,2747L7630,2744L7624,2744L7624,2739L7621,2739L7621,2737L7624,2734L7624,2732L7621,2732L7619,2729L7619,2721L7617,2721L7611,2719L7608,2721L7606,2721L7602,2719L7600,2719L7600,2716L7600,2716L7600,2716zM7582,2658L7582,2655L7585,2655L7585,2650L7587,2650L7587,2653L7589,2653L7589,2655L7593,2658L7595,2658L7595,2663L7593,2660L7591,2660L7591,2658L7587,2658L7587,2660L7585,2660L7582,2658L7582,2658L7582,2658zM7576,2668L7578,2665L7578,2663L7585,2663L7587,2665L7587,2668L7582,2673L7578,2670L7576,2668L7576,2668L7576,2668zM7576,2617L7576,2614L7578,2612L7585,2612L7587,2614L7587,2617L7589,2617L7587,2619L7587,2624L7582,2624L7582,2622L7580,2619L7580,2617L7578,2619L7576,2619L7576,2617L7576,2617L7576,2617zM7463,2744L7463,2742L7465,2742L7468,2747L7472,2749L7472,2755L7470,2755L7470,2757L7472,2757L7472,2760L7470,2760L7468,2757L7468,2752L7465,2752L7463,2749L7463,2744L7463,2744L7463,2744zM7457,2734L7457,2732L7459,2732L7459,2734L7463,2737L7463,2744L7459,2744L7459,2742L7457,2734L7457,2734L7457,2734zM7446,2721L7446,2716L7448,2716L7450,2719L7450,2724L7452,2724L7452,2726L7455,2726L7455,2729L7452,2729L7448,2724L7446,2724L7446,2721L7446,2721L7446,2721zM7437,2706L7437,2709L7433,2711L7433,2709L7431,2709L7426,2706L7426,2704L7422,2698L7422,2696L7420,2693L7420,2683L7424,2683L7426,2681L7429,2681L7429,2683L7431,2688L7433,2691L7433,2696L7437,2704L7437,2706L7437,2704L7437,2706L7437,2706L7437,2706zM7418,2647L7418,2645L7424,2645L7426,2647L7424,2647L7420,2650L7418,2647L7418,2647L7418,2647zM7379,2607L7379,2604L7383,2604L7385,2602L7388,2604L7390,2604L7390,2607L7396,2614L7400,2617L7400,2630L7398,2632L7394,2632L7394,2627L7392,2624L7385,2619L7385,2614L7379,2607L7379,2607L7379,2607zM7359,2573L7355,2573L7355,2571L7349,2566L7344,2566L7340,2561L7338,2561L7338,2558L7340,2558L7342,2556L7344,2556L7344,2558L7346,2561L7351,2561L7353,2563L7353,2566L7355,2568L7359,2568L7359,2573L7359,2573L7359,2573zM7552,2635L7554,2635L7563,2642L7563,2650L7565,2650L7565,2653L7559,2653L7559,2655L7556,2658L7556,2660L7554,2663L7556,2663L7559,2665L7559,2668L7556,2668L7554,2670L7552,2675L7554,2675L7554,2678L7556,2681L7561,2683L7563,2683L7565,2686L7565,2683L7569,2683L7572,2686L7580,2686L7580,2693L7582,2693L7582,2706L7585,2706L7585,2714L7585,2711L7585,2714L7587,2714L7591,2716L7593,2716L7593,2726L7598,2726L7598,2729L7615,2729L7615,2739L7619,2739L7619,2747L7626,2747L7626,2749L7628,2757L7626,2757L7626,2760L7624,2760L7624,2762L7621,2762L7621,2765L7619,2770L7619,2772L7621,2775L7624,2775L7624,2780L7621,2780L7621,2788L7619,2788L7619,2793L7621,2795L7619,2834L7621,2834L7621,2836L7619,2836L7619,2841L7617,2844L7606,2831L7606,2828L7604,2828L7602,2834L7602,2836L7604,2839L7604,2841L7602,2841L7600,2839L7598,2839L7593,2836L7591,2834L7589,2834L7589,2831L7585,2831L7585,2836L7587,2836L7587,2839L7589,2841L7589,2846L7585,2846L7585,2841L7582,2839L7578,2836L7578,2834L7576,2834L7576,2831L7574,2831L7569,2826L7569,2823L7567,2818L7561,2813L7559,2813L7556,2811L7554,2811L7546,2800L7541,2800L7539,2795L7537,2795L7535,2793L7535,2790L7533,2790L7530,2788L7528,2788L7528,2785L7526,2785L7524,2783L7522,2783L7522,2775L7520,2772L7520,2770L7517,2767L7513,2765L7511,2762L7504,2757L7502,2757L7500,2752L7500,2749L7498,2749L7498,2747L7496,2742L7496,2739L7491,2739L7491,2737L7489,2737L7489,2734L7487,2734L7487,2732L7481,2724L7481,2721L7483,2721L7483,2714L7478,2709L7478,2706L7476,2706L7476,2704L7474,2701L7474,2693L7470,2691L7470,2686L7468,2681L7468,2678L7465,2678L7463,2675L7463,2673L7461,2673L7461,2670L7459,2668L7459,2665L7457,2665L7452,2663L7452,2658L7450,2655L7452,2655L7452,2653L7450,2653L7448,2650L7448,2647L7446,2647L7439,2645L7437,2645L7435,2642L7435,2637L7433,2635L7433,2632L7431,2627L7431,2624L7426,2612L7426,2609L7424,2604L7422,2602L7422,2599L7426,2599L7426,2596L7424,2594L7422,2594L7416,2586L7409,2584L7407,2581L7405,2581L7405,2579L7400,2576L7400,2579L7398,2579L7394,2573L7394,2566L7392,2563L7392,2558L7390,2558L7383,2551L7383,2545L7379,2545L7377,2540L7377,2538L7375,2535L7372,2530L7370,2530L7368,2528L7364,2528L7364,2530L7362,2530L7362,2528L7359,2528L7359,2525L7357,2525L7357,2522L7355,2522L7355,2520L7351,2515L7349,2515L7349,2512L7346,2512L7333,2497L7327,2484L7327,2474L7325,2471L7327,2469L7329,2469L7331,2466L7336,2466L7340,2469L7342,2471L7344,2471L7344,2474L7346,2474L7346,2477L7349,2477L7349,2479L7351,2479L7357,2482L7366,2482L7366,2479L7379,2479L7379,2482L7385,2482L7388,2479L7390,2479L7390,2482L7392,2482L7392,2484L7394,2484L7394,2487L7396,2489L7400,2492L7400,2494L7403,2494L7403,2502L7407,2502L7407,2505L7409,2505L7411,2507L7411,2510L7409,2510L7409,2515L7411,2515L7416,2520L7418,2520L7422,2525L7422,2528L7424,2530L7429,2530L7433,2533L7435,2535L7437,2535L7446,2545L7448,2545L7452,2548L7455,2553L7457,2556L7459,2556L7459,2561L7463,2563L7465,2563L7465,2566L7468,2568L7468,2573L7470,2573L7470,2576L7474,2581L7478,2581L7481,2584L7481,2576L7487,2576L7487,2579L7491,2581L7494,2584L7496,2584L7496,2594L7498,2594L7499,2588L7501,2584L7505,2584L7507,2586L7507,2595L7511,2602L7515,2605L7517,2606L7517,2610L7518,2614L7520,2612L7520,2604L7518,2601L7515,2601L7515,2599L7522,2600L7527,2602L7528,2606L7526,2612L7528,2615L7540,2615L7546,2619L7546,2622L7545,2626L7542,2628L7540,2625L7535,2624L7531,2625L7530,2626L7532,2627L7535,2627L7538,2628L7541,2631L7544,2632L7544,2636L7541,2638L7543,2640L7546,2637L7546,2634L7546,2628L7548,2628L7550,2630L7552,2635L7552,2635L7552,2635zM7379,2607L7385,2614L7385,2619L7392,2624L7394,2627L7394,2632L7398,2632L7400,2630L7400,2617L7396,2614L7390,2607L7390,2604L7388,2604L7385,2602L7383,2604L7379,2604L7379,2607M8111,2989L8111,2984L8115,2984L8115,2981L8117,2981L8117,2979L8113,2979L8113,2976L8115,2976L8115,2966L8120,2964L8124,2956L8128,2956L8130,2959L8133,2958L8136,2954L8141,2953L8141,2951L8143,2951L8143,2948L8146,2948L8150,2943L8152,2943L8154,2941L8154,2943L8156,2943L8159,2941L8161,2946L8156,2946L8156,2948L8161,2954L8162,2955L8161,2956L8159,2959L8156,2959L8156,2961L8154,2961L8152,2964L8152,2969L8150,2969L8141,2979L8139,2979L8139,2981L8137,2984L8128,2984L8126,2987L8124,2987L8124,2989L8120,2989L8120,2992L8115,2989L8111,2989L8111,2989L8111,2989z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3158,347L3153,346L3154,348L3164,349L3158,347L3158,347L3158,347zM3187,327L3196,329L3197,324L3193,318L3188,318L3183,323L3187,327L3187,327L3187,327zM3208,384L3219,382L3229,379L3237,377L3239,373L3239,368L3229,368L3222,365L3216,363L3207,358L3191,354L3177,352L3164,352L3156,356L3159,360L3160,363L3154,364L3155,367L3153,371L3158,374L3167,377L3178,377L3186,378L3184,379L3173,380L3174,386L3182,385L3195,385L3208,384L3208,384L3208,384zM3410,666L3408,663L3405,660L3402,660L3402,657L3398,658L3396,656L3393,656L3392,659L3389,659L3386,659L3384,660L3380,661L3376,659L3376,659L3367,659L3364,662L3355,662L3348,665L3343,662L3344,656L3337,655L3342,650L3332,648L3327,644L3318,641L3316,636L3308,631L3308,628L3305,622L3305,616L3298,617L3295,612L3290,611L3283,603L3283,599L3281,593L3275,590L3270,590L3264,582L3262,575L3256,574L3250,565L3253,564L3253,560L3249,559L3247,552L3254,543L3258,538L3263,535L3258,533L3253,539L3248,547L3241,552L3237,554L3233,551L3235,535L3232,530L3233,526L3227,518L3224,518L3224,514L3220,510L3215,507L3212,512L3206,508L3203,504L3206,500L3203,497L3195,495L3191,491L3190,485L3194,475L3195,472L3201,470L3197,466L3195,463L3186,463L3182,455L3184,450L3187,443L3191,435L3195,428L3199,425L3195,420L3194,415L3201,415L3205,409L3212,403L3226,403L3233,406L3241,407L3248,407L3257,407L3257,404L3260,398L3260,390L3261,386L3267,380L3270,374L3270,369L3266,371L3262,376L3256,377L3256,371L3255,365L3251,362L3239,361L3232,361L3224,357L3215,354L3209,352L3199,352L3186,349L3172,345L3163,339L3167,336L3174,335L3183,335L3199,337L3215,335L3227,340L3237,341L3245,345L3252,342L3266,342L3260,340L3252,336L3248,333L3240,333L3229,332L3231,329L3239,326L3232,324L3223,322L3210,323L3204,318L3203,314L3196,310L3201,306L3194,305L3188,306L3183,308L3184,312L3175,316L3160,316L3151,315L3148,317L3141,314L3134,311L3129,303L3138,302L3130,301L3134,297L3141,292L3144,290L3136,291L3137,288L3139,285L3144,282L3138,281L3132,278L3132,274L3126,276L3120,270L3124,266L3126,270L3132,269L3137,271L3140,268L3142,266L3133,262L3140,260L3143,256L3135,254L3129,256L3121,254L3126,247L3126,243L3129,240L3128,238L3121,242L3112,248L3105,240L3111,239L3118,236L3108,232L3115,232L3121,232L3121,228L3123,222L3115,225L3103,228L3092,227L3099,224L3112,222L3110,218L3101,217L3095,212L3103,211L3113,213L3110,209L3100,209L3094,205L3100,203L3079,195L3017,196L2974,202L2957,205L2929,210L2899,206L2880,182L2870,195L2840,177L2840,169L2822,170L2787,160L2746,153L2770,146L2752,140L2729,139L2710,130L2736,116L2759,119L2757,112L2736,109L2707,105L2676,103L2660,85L2726,69L2826,12L2885,2L3327,2L3332,2L3342,2L3349,2L3354,2L3360,2L3372,2L3379,2L3390,2L3400,2L3406,2L3419,2L3427,2L3435,2L3440,2L3450,2L3461,2L3467,2L3924,2L3924,2L3953,13L3982,15L4002,19L4042,19L4074,29L4090,47L4122,65L4145,79L4159,101L4166,117L4178,136L4167,145L4156,162L4138,168L4144,178L4147,191L4143,199L4147,210L4151,217L4146,220L4132,223L4118,227L4097,227L4083,226L4078,229L4094,232L4115,235L4119,238L4113,243L4114,246L4111,249L4085,248L4068,252L4059,255L4031,249L4018,246L3991,248L4005,248L4023,252L4043,259L4043,261L4053,264L4072,265L4070,269L4072,273L4066,272L4051,273L4070,278L4070,283L4052,282L4066,287L4066,291L4056,292L4046,288L4033,283L4021,283L4006,277L4003,272L4000,261L3986,261L3987,268L3993,275L4004,286L4022,287L4041,294L4055,298L4052,303L4060,304L4071,307L4057,312L4060,314L4078,310L4079,315L4079,324L4080,340L4082,346L4073,347L4063,347L4051,348L4036,348L4023,344L4010,336L4008,326L4000,323L3996,319L3987,320L3980,317L3973,316L3979,324L3971,328L3974,331L3979,339L3966,343L3950,348L3943,353L3946,356L3963,351L3980,349L3980,353L3985,349L3995,351L4014,355L4041,358L4068,357L4066,361L4049,365L4045,369L4035,369L4035,373L4026,373L4017,377L4012,376L4012,379L3999,382L3996,385L3988,389L3984,393L3973,393L3970,396L3963,400L3950,401L3945,405L3926,407L3906,412L3892,414L3878,414L3869,418L3857,422L3841,425L3822,425L3808,425L3794,422L3792,428L3784,432L3767,437L3757,444L3754,454L3747,459L3740,462L3742,466L3732,472L3724,476L3711,481L3700,484L3692,488L3684,495L3672,500L3667,496L3660,499L3655,504L3650,504L3650,498L3644,505L3630,506L3628,501L3633,492L3637,487L3646,483L3640,481L3630,484L3628,491L3623,498L3620,504L3607,507L3599,505L3591,504L3588,508L3581,505L3574,508L3581,513L3575,515L3571,524L3561,523L3551,523L3543,523L3543,528L3548,527L3554,527L3558,534L3563,540L3562,546L3551,545L3551,549L3555,553L3554,559L3555,569L3542,578L3534,586L3526,591L3515,602L3504,603L3512,605L3510,612L3505,618L3512,624L3512,632L3503,637L3503,640L3500,644L3496,651L3495,659L3493,668L3482,676L3485,682L3481,692L3466,694L3453,693L3441,690L3427,688L3420,679L3419,670L3411,669L3410,666z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2871,625L2879,627L2882,629L2885,631L2883,631L2881,634L2884,635L2889,636L2887,638L2887,640L2886,643L2886,645L2877,645L2874,642L2868,638L2863,637L2863,635L2866,634L2870,634L2868,632L2871,631L2873,630L2870,628L2871,625L2871,625L2871,625L2871,625zM2850,631L2853,629L2857,629L2860,629L2860,632L2854,632L2850,631L2850,631L2850,631L2850,631zM3018,1139L3014,1139L3011,1138L3008,1138L3005,1136L3000,1136L3001,1133L3002,1130L3004,1129L3005,1123L3006,1120L3006,1118L3002,1117L3001,1115L3001,1113L2998,1112L2995,1114L2994,1118L2989,1121L2987,1124L2985,1124L2984,1130L2981,1134L2978,1137L2976,1139L2974,1140L2973,1142L2973,1144L2971,1145L2971,1149L2973,1150L2974,1153L2975,1153L2975,1156L2982,1161L2985,1160L2990,1157L2990,1155L2989,1153L2986,1155L2983,1155L2988,1150L2989,1149L2994,1148L2996,1149L2997,1151L2993,1154L2992,1158L2993,1159L2996,1160L2997,1158L3004,1158L3006,1155L3009,1154L3012,1151L3014,1151L3019,1146L3019,1143L3018,1139L3018,1139L3018,1139L3018,1139zM3218,1092L3218,1089L3216,1089L3214,1092L3214,1094L3212,1097L3209,1097L3207,1099L3205,1099L3201,1094L3205,1094L3205,1092L3207,1087L3207,1084L3212,1079L3214,1079L3212,1077L3209,1077L3209,1079L3207,1079L3207,1082L3205,1079L3201,1082L3196,1087L3196,1089L3194,1094L3194,1097L3192,1097L3188,1094L3186,1092L3186,1089L3188,1089L3188,1087L3190,1087L3192,1082L3188,1082L3190,1079L3194,1079L3194,1077L3192,1077L3199,1071L3201,1069L3203,1069L3203,1071L3205,1071L3207,1069L3207,1066L3209,1064L3209,1061L3207,1059L3203,1064L3201,1064L3201,1061L3196,1061L3196,1066L3194,1066L3192,1064L3190,1064L3188,1066L3188,1064L3184,1064L3188,1061L3192,1061L3192,1059L3186,1059L3186,1056L3188,1056L3186,1054L3188,1051L3188,1048L3192,1048L3196,1041L3194,1041L3190,1038L3188,1036L3184,1033L3177,1033L3177,1036L3171,1036L3171,1038L3168,1041L3168,1036L3171,1033L3168,1031L3166,1031L3166,1033L3164,1036L3162,1036L3160,1038L3160,1041L3153,1041L3153,1038L3151,1038L3151,1041L3149,1041L3151,1033L3151,1031L3145,1031L3145,1033L3142,1033L3137,1035L3134,1033L3132,1033L3132,1031L3129,1033L3127,1031L3129,1031L3130,1027L3124,1026L3129,1023L3136,1020L3140,1020L3140,1015L3138,1018L3129,1018L3129,1015L3125,1015L3125,1013L3123,1010L3121,1010L3121,1013L3119,1013L3116,1015L3116,1018L3114,1018L3114,1020L3110,1020L3110,1023L3108,1026L3106,1026L3106,1028L3103,1028L3103,1026L3101,1026L3101,1023L3103,1023L3106,1020L3106,1015L3110,1010L3112,1010L3114,1008L3114,1005L3119,1000L3121,995L3121,987L3123,987L3123,992L3125,992L3125,990L3132,982L3134,982L3134,977L3125,977L3123,972L3134,972L3136,975L3138,975L3140,972L3140,969L3142,964L3134,964L3134,967L3129,967L3129,964L3125,964L3123,967L3119,969L3112,969L3110,972L3108,972L3106,975L3103,975L3103,980L3101,982L3101,987L3099,987L3097,990L3095,990L3095,992L3088,992L3088,997L3084,1003L3084,1008L3082,1013L3080,1013L3075,1020L3073,1023L3073,1026L3071,1028L3073,1028L3073,1031L3069,1031L3064,1036L3064,1041L3069,1041L3069,1046L3060,1046L3056,1048L3056,1054L3051,1059L3051,1064L3056,1064L3056,1066L3054,1069L3051,1069L3051,1071L3049,1071L3043,1079L3041,1079L3036,1082L3034,1084L3032,1084L3032,1087L3033,1089L3034,1089L3034,1094L3038,1097L3041,1097L3045,1094L3069,1092L3074,1093L3077,1094L3095,1094L3095,1097L3097,1094L3099,1094L3101,1097L3106,1097L3108,1094L3121,1094L3121,1092L3123,1089L3125,1092L3129,1092L3129,1094L3134,1092L3134,1094L3132,1097L3127,1099L3136,1099L3138,1102L3138,1099L3142,1099L3142,1094L3140,1094L3142,1092L3145,1092L3147,1094L3151,1094L3153,1092L3153,1094L3158,1094L3158,1097L3155,1097L3153,1099L3149,1099L3147,1102L3147,1105L3145,1105L3145,1107L3140,1110L3138,1110L3136,1112L3129,1112L3127,1115L3127,1117L3129,1117L3129,1120L3136,1120L3140,1117L3142,1120L3145,1117L3147,1117L3153,1110L3153,1107L3160,1099L3160,1102L3164,1102L3168,1097L3168,1094L3171,1094L3172,1097L3173,1094L3175,1092L3175,1089L3177,1087L3181,1089L3184,1094L3186,1094L3184,1097L3184,1099L3186,1099L3186,1102L3184,1105L3181,1105L3179,1110L3179,1112L3177,1115L3177,1120L3184,1120L3184,1117L3186,1115L3190,1112L3192,1112L3192,1110L3194,1110L3194,1112L3192,1115L3192,1128L3194,1128L3196,1125L3199,1125L3199,1122L3203,1128L3207,1128L3207,1125L3212,1122L3212,1115L3214,1115L3214,1107L3218,1102L3218,1099L3220,1099L3220,1097L3218,1092L3218,1092L3218,1092L3218,1092zM2950,1138L2950,1135L2956,1135L2958,1133L2956,1130L2954,1130L2947,1133L2924,1133L2924,1130L2917,1130L2915,1128L2913,1128L2913,1130L2911,1130L2911,1133L2908,1133L2908,1128L2904,1122L2902,1122L2902,1120L2904,1117L2904,1112L2900,1115L2900,1117L2898,1117L2898,1120L2895,1120L2895,1122L2893,1122L2893,1128L2902,1128L2902,1130L2900,1130L2900,1133L2904,1135L2908,1135L2911,1138L2913,1138L2913,1140L2919,1140L2924,1143L2926,1143L2928,1140L2930,1140L2934,1143L2932,1145L2934,1145L2934,1148L2947,1148L2947,1143L2945,1143L2943,1140L2947,1140L2950,1138L2950,1138L2950,1138L2950,1138zM2486,967L2486,969L2488,972L2488,977L2490,977L2490,969L2493,969L2493,964L2490,962L2488,962L2486,959L2486,957L2493,957L2493,954L2490,954L2490,952L2495,952L2499,946L2499,944L2501,941L2501,936L2499,934L2495,934L2495,929L2493,926L2493,924L2490,921L2490,911L2488,906L2488,901L2490,901L2488,898L2484,895L2486,890L2484,888L2486,885L2486,884L2484,883L2486,880L2477,880L2475,878L2475,875L2473,872L2473,865L2467,865L2469,862L2473,862L2475,860L2480,860L2484,857L2490,857L2493,855L2499,855L2506,852L2508,850L2510,850L2512,847L2516,847L2519,844L2523,842L2525,839L2527,839L2536,834L2538,832L2540,832L2540,829L2542,827L2549,821L2549,819L2553,819L2553,816L2555,811L2555,801L2558,796L2558,793L2555,793L2555,781L2553,778L2553,773L2551,773L2551,770L2549,768L2549,765L2547,763L2545,763L2536,753L2534,753L2529,750L2531,748L2529,748L2527,748L2525,745L2523,745L2523,748L2521,748L2519,745L2519,745L2519,742L2514,742L2514,740L2512,740L2506,735L2499,735L2499,732L2501,732L2501,727L2499,725L2499,722L2503,722L2506,725L2510,719L2512,719L2512,714L2519,714L2519,712L2521,712L2523,709L2519,709L2519,704L2523,704L2523,702L2521,702L2521,699L2527,699L2527,698L2527,697L2534,697L2534,694L2532,694L2532,691L2529,689L2527,689L2527,686L2529,684L2529,681L2525,679L2525,676L2523,676L2523,674L2527,671L2521,671L2521,668L2525,663L2510,663L2510,661L2516,656L2519,656L2523,651L2523,646L2521,643L2523,640L2525,640L2527,638L2523,638L2523,635L2519,635L2516,633L2514,633L2512,628L2512,623L2510,620L2510,615L2514,610L2514,612L2516,612L2516,610L2528,606L2529,605L2541,606L2545,607L2549,607L2553,610L2562,610L2566,612L2601,615L2601,617L2605,617L2605,615L2616,615L2623,612L2627,612L2627,610L2631,610L2636,607L2636,610L2640,612L2649,612L2649,615L2651,617L2653,617L2657,620L2664,620L2666,623L2664,625L2668,628L2677,628L2681,633L2681,635L2679,638L2683,638L2683,633L2688,635L2692,635L2694,638L2688,638L2690,646L2692,646L2692,648L2694,651L2703,651L2709,653L2716,653L2720,656L2722,656L2726,653L2733,653L2734,656L2735,658L2735,661L2739,663L2744,658L2744,661L2748,661L2746,658L2746,656L2748,653L2750,653L2750,656L2752,656L2752,658L2755,661L2755,663L2750,663L2748,666L2746,666L2746,671L2742,671L2746,676L2746,679L2744,679L2746,681L2748,681L2748,686L2746,686L2742,689L2744,691L2746,691L2748,694L2748,699L2750,699L2748,702L2747,703L2746,704L2744,704L2744,707L2746,707L2746,709L2744,712L2750,712L2752,709L2757,712L2759,712L2759,714L2752,715L2752,725L2755,727L2757,725L2776,725L2783,727L2783,735L2787,740L2791,735L2794,735L2794,737L2796,737L2796,740L2802,740L2802,742L2800,742L2800,745L2802,745L2802,750L2807,745L2811,745L2815,742L2817,742L2820,740L2822,740L2822,737L2824,740L2826,740L2830,737L2835,727L2839,727L2846,732L2848,735L2852,735L2850,732L2848,732L2846,730L2846,727L2850,727L2850,725L2848,725L2852,722L2854,722L2856,719L2856,714L2859,714L2861,709L2863,709L2863,707L2869,707L2867,704L2863,704L2863,702L2861,699L2863,697L2865,697L2865,694L2867,694L2872,691L2872,689L2874,689L2878,684L2880,679L2880,674L2887,674L2891,676L2891,681L2893,681L2893,684L2895,689L2900,689L2900,694L2902,694L2902,697L2904,697L2904,699L2900,699L2902,702L2900,704L2902,704L2904,702L2908,702L2911,704L2911,709L2913,709L2921,714L2921,717L2919,717L2919,719L2924,719L2927,719L2927,726L2934,727L2934,730L2937,732L2933,735L2928,737L2930,740L2935,740L2941,735L2944,737L2942,741L2941,744L2939,747L2941,748L2947,749L2949,751L2946,752L2948,755L2951,754L2963,757L2966,759L2968,760L2968,764L2961,762L2963,767L2967,769L2968,773L2964,771L2962,772L2959,769L2955,768L2953,770L2952,773L2956,772L2960,776L2962,778L2962,781L2973,781L2975,782L2977,783L2976,798L2973,798L2969,797L2968,794L2962,792L2966,798L2967,802L2963,803L2959,803L2956,804L2959,806L2963,807L2968,808L2969,811L2978,815L2982,814L2987,814L2986,817L2983,818L2978,818L2978,820L2995,821L2995,824L2999,827L3006,827L3006,829L3004,829L3004,832L3006,834L3006,837L3010,837L3010,839L3006,839L3002,844L3012,844L3012,847L3015,847L3015,844L3019,844L3019,842L3021,842L3023,844L3023,847L3017,847L3017,850L3025,850L3028,847L3034,847L3038,844L3038,850L3041,847L3043,847L3043,852L3045,852L3045,855L3043,855L3043,857L3047,857L3051,860L3064,860L3067,862L3077,862L3077,865L3086,865L3088,867L3093,867L3090,870L3086,870L3084,872L3067,872L3067,875L3069,875L3064,878L3073,878L3075,880L3088,880L3088,885L3093,888L3095,890L3097,890L3095,893L3090,895L3088,895L3086,898L3090,898L3090,903L3093,903L3095,898L3097,895L3103,895L3107,894L3108,893L3114,893L3114,895L3116,898L3121,901L3119,901L3123,903L3125,903L3127,906L3129,906L3134,911L3134,913L3132,916L3134,916L3134,918L3129,918L3132,921L3132,924L3127,924L3125,926L3127,929L3134,929L3134,936L3136,936L3136,939L3132,939L3127,939L3129,941L3134,942L3136,944L3134,946L3134,949L3121,957L3119,959L3112,959L3106,967L3103,967L3099,969L3095,969L3093,967L3086,967L3086,969L3077,969L3073,972L3071,972L3071,975L3060,975L3060,977L3054,977L3054,980L3049,980L3045,982L3043,982L3043,985L3045,985L3045,990L3043,992L3041,992L3041,990L3038,990L3038,992L3036,992L3032,995L3030,995L3028,997L3028,1000L3025,1000L3023,1003L3019,1003L3019,1005L3017,1008L2999,1008L2999,1010L2973,1010L2972,1011L2971,1010L2969,1010L2968,1011L2967,1010L2963,1010L2963,1008L2960,1008L2960,1010L2958,1010L2954,1008L2913,1008L2908,1005L2904,1005L2902,1008L2893,1008L2893,1005L2891,1005L2889,1008L2869,1008L2869,1005L2863,1008L2848,1008L2848,1010L2839,1010L2837,1008L2835,1008L2824,1015L2822,1015L2822,1018L2820,1020L2817,1020L2817,1023L2815,1023L2813,1031L2813,1033L2811,1038L2800,1038L2794,1041L2789,1041L2787,1046L2776,1046L2776,1048L2774,1051L2763,1056L2763,1059L2761,1061L2761,1064L2757,1064L2757,1066L2752,1071L2748,1074L2746,1077L2744,1077L2744,1082L2742,1084L2739,1089L2737,1092L2735,1092L2733,1094L2731,1094L2731,1099L2724,1099L2724,1102L2718,1110L2718,1112L2711,1112L2709,1115L2713,1117L2716,1117L2720,1115L2722,1115L2724,1112L2729,1110L2729,1107L2735,1102L2737,1097L2739,1097L2746,1089L2748,1089L2748,1087L2750,1087L2750,1084L2752,1084L2752,1082L2761,1077L2763,1074L2765,1074L2765,1071L2770,1071L2778,1066L2781,1064L2783,1064L2785,1061L2789,1061L2815,1051L2820,1051L2820,1048L2822,1048L2837,1043L2841,1043L2846,1041L2876,1041L2878,1043L2882,1043L2885,1046L2887,1046L2898,1051L2898,1054L2900,1056L2895,1056L2895,1054L2891,1054L2895,1059L2898,1059L2900,1061L2895,1061L2895,1064L2898,1064L2898,1066L2895,1066L2891,1069L2887,1069L2885,1071L2885,1074L2882,1074L2882,1077L2876,1077L2872,1079L2872,1082L2863,1082L2863,1079L2854,1079L2852,1074L2850,1074L2850,1077L2848,1077L2846,1079L2839,1079L2841,1082L2848,1084L2854,1084L2854,1087L2856,1087L2856,1094L2859,1094L2865,1089L2869,1089L2869,1087L2882,1087L2882,1089L2885,1089L2885,1092L2882,1094L2880,1094L2880,1102L2878,1102L2872,1107L2867,1112L2882,1112L2882,1115L2880,1115L2880,1117L2878,1117L2878,1120L2882,1125L2885,1125L2885,1133L2887,1133L2887,1135L2889,1140L2904,1140L2908,1143L2911,1143L2908,1145L2902,1145L2902,1148L2908,1148L2908,1150L2913,1153L2915,1150L2919,1150L2921,1153L2926,1153L2924,1156L2928,1156L2930,1153L2932,1153L2939,1156L2941,1156L2943,1158L2945,1158L2947,1161L2952,1156L2956,1153L2958,1153L2960,1150L2963,1150L2963,1153L2962,1154L2963,1158L2965,1158L2967,1161L2969,1161L2971,1158L2975,1158L2976,1160L2977,1162L2978,1163L2980,1163L2980,1166L2976,1166L2973,1168L2989,1168L2987,1170L2985,1171L2984,1173L2980,1171L2978,1171L2978,1173L2976,1173L2976,1176L2967,1176L2958,1181L2952,1181L2950,1184L2945,1184L2945,1186L2937,1186L2937,1189L2934,1189L2932,1186L2930,1186L2930,1191L2928,1189L2919,1194L2917,1191L2917,1196L2915,1196L2915,1199L2906,1196L2906,1191L2902,1191L2902,1194L2904,1196L2900,1196L2900,1194L2895,1194L2895,1199L2893,1201L2898,1201L2898,1204L2891,1204L2891,1207L2887,1209L2882,1214L2880,1214L2880,1217L2876,1222L2867,1222L2865,1227L2863,1227L2863,1230L2861,1227L2859,1227L2859,1230L2856,1230L2854,1227L2854,1222L2852,1219L2850,1219L2850,1222L2848,1222L2846,1219L2843,1219L2843,1207L2846,1201L2851,1195L2850,1194L2867,1181L2869,1181L2878,1176L2880,1176L2880,1173L2889,1173L2891,1171L2891,1170L2891,1170L2893,1171L2893,1176L2898,1176L2900,1173L2902,1173L2904,1171L2908,1171L2915,1168L2921,1168L2911,1166L2908,1166L2908,1168L2904,1168L2902,1166L2895,1166L2893,1168L2889,1166L2885,1168L2878,1168L2878,1166L2880,1163L2885,1163L2889,1161L2891,1158L2891,1153L2887,1150L2887,1153L2883,1159L2882,1158L2878,1158L2878,1161L2876,1161L2874,1163L2869,1163L2867,1166L2865,1166L2852,1173L2848,1173L2846,1171L2843,1173L2841,1173L2837,1176L2830,1176L2828,1179L2826,1179L2826,1176L2822,1173L2820,1173L2819,1174L2817,1173L2813,1173L2811,1176L2809,1173L2809,1171L2807,1171L2809,1168L2807,1163L2809,1163L2809,1161L2804,1161L2802,1158L2798,1158L2798,1150L2800,1148L2798,1138L2798,1112L2796,1112L2796,1110L2794,1110L2794,1107L2787,1105L2787,1102L2783,1102L2772,1107L2763,1107L2763,1099L2759,1099L2757,1102L2752,1105L2746,1112L2746,1115L2737,1125L2737,1128L2735,1130L2735,1133L2733,1135L2731,1135L2731,1138L2729,1140L2729,1148L2731,1148L2731,1150L2726,1156L2724,1156L2722,1158L2720,1158L2718,1161L2718,1166L2714,1171L2709,1168L2707,1171L2698,1171L2698,1176L2696,1176L2696,1179L2636,1179L2629,1181L2618,1181L2607,1179L2603,1179L2610,1164L2608,1155L2580,1159L2556,1154L2532,1135L2502,1129L2476,1101L2478,970L2486,967zM2969,1043L2965,1038L2963,1038L2958,1036L2954,1036L2950,1033L2947,1031L2945,1031L2939,1028L2937,1028L2932,1026L2930,1023L2921,1023L2919,1020L2917,1020L2904,1020L2904,1018L2898,1018L2891,1020L2889,1020L2893,1023L2895,1023L2904,1026L2906,1028L2908,1028L2913,1031L2915,1033L2915,1036L2917,1036L2919,1038L2924,1038L2926,1041L2930,1041L2932,1043L2939,1043L2950,1046L2967,1046L2969,1043L2969,1043L2969,1043L2969,1043zM2534,572L2540,577L2542,577L2547,579L2551,579L2555,577L2551,577L2551,572L2549,572L2542,569L2529,569L2532,572L2534,572L2534,572L2534,572L2534,572zM2488,815L2490,817L2496,814L2496,805L2491,806L2492,810L2490,813L2488,815L2488,815L2488,815L2488,815zM2506,582L2508,582L2508,584L2512,587L2514,587L2516,589L2519,589L2521,587L2525,584L2527,584L2529,582L2525,579L2523,577L2510,577L2510,574L2508,574L2503,577L2499,577L2499,579L2503,579L2506,582L2506,582L2506,582L2506,582zM2477,810L2474,812L2472,811L2474,808L2475,804L2474,800L2472,803L2468,807L2464,805L2460,809L2456,810L2456,814L2460,815L2466,810L2469,810L2470,811L2466,812L2465,816L2460,819L2458,823L2463,824L2470,817L2473,817L2471,819L2469,822L2471,823L2473,823L2475,816L2477,817L2479,815L2480,809L2482,808L2481,811L2484,812L2486,810L2488,808L2487,804L2484,804L2482,800L2479,800L2477,810L2477,810L2477,810L2477,810zM2792,678L2794,678L2794,676L2796,676L2796,673L2794,673L2792,670L2785,670L2783,676L2781,678L2781,681L2785,681L2792,678L2792,678L2792,678L2792,678zM3181,1028L3181,1026L3173,1026L3173,1031L3175,1031L3181,1028L3181,1028L3181,1028L3181,1028zM2465,794L2464,789L2460,789L2460,793L2460,794L2463,793L2465,794L2465,794L2465,794L2465,794zM2451,620L2451,630L2454,633L2458,633L2462,638L2467,638L2471,633L2471,630L2473,630L2475,628L2475,625L2477,625L2477,623L2480,617L2480,615L2477,615L2473,610L2462,610L2462,612L2460,612L2454,617L2451,620L2451,620L2451,620L2451,620z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1920,313L1913,303L1889,291L1875,288L1866,289L1852,285L1846,279L1832,277L1828,271L1838,262L1852,262L1861,272L1876,271L1892,271L1895,264L1889,259L1866,247L1867,241L1877,234L1892,234L1910,234L1915,239L1925,231L1966,227L1963,230L1973,235L1982,239L1978,250L1968,251L1956,262L1971,262L1980,271L1990,262L2001,273L2005,278L1996,285L2001,287L2001,297L1994,306L1971,309L1955,309L1949,319L1935,320L1920,313L1920,313L1920,313zM1219,304L1205,300L1186,298L1193,290L1207,275L1219,266L1216,259L1244,239L1231,233L1224,220L1261,214L1293,214L1321,215L1349,220L1381,223L1414,221L1445,230L1471,241L1479,246L1476,250L1483,253L1507,254L1514,264L1512,273L1524,273L1534,263L1549,263L1577,269L1591,273L1591,284L1609,279L1619,274L1609,267L1629,267L1653,271L1667,285L1674,304L1685,309L1694,302L1688,288L1676,260L1696,255L1716,249L1721,238L1760,239L1780,247L1770,257L1762,269L1759,276L1766,295L1782,310L1782,321L1782,327L1800,337L1812,345L1826,345L1844,352L1869,355L1880,363L1878,371L1861,371L1838,371L1819,380L1846,381L1858,391L1829,402L1805,400L1780,399L1759,394L1744,388L1730,390L1721,379L1711,387L1701,396L1679,396L1652,401L1602,411L1581,411L1553,413L1531,406L1526,395L1521,384L1486,384L1458,383L1433,375L1424,365L1429,357L1463,355L1489,354L1523,354L1548,354L1570,349L1555,342L1512,342L1482,343L1444,341L1420,341L1404,336L1394,327L1423,323L1460,313L1437,311L1406,315L1394,312L1384,308L1374,308L1372,302L1382,294L1396,286L1390,282L1396,276L1419,267L1416,265L1384,270L1372,276L1362,284L1353,290L1341,293L1337,300L1334,313L1319,313L1312,317L1301,310L1289,321L1273,323L1264,325L1254,322L1242,309L1228,303L1219,304L1219,304L1219,304zM1552,643L1543,635L1547,623L1532,623L1516,612L1494,612L1485,603L1469,600L1477,610L1482,615L1497,628L1482,634L1473,630L1468,634L1462,649L1450,646L1441,648L1444,654L1459,661L1478,662L1502,660L1519,659L1522,653L1521,648L1529,643L1542,644L1552,643L1552,643L1552,643L1552,643zM1410,479L1406,471L1395,480L1381,481L1360,483L1347,479L1339,477L1353,470L1367,464L1351,458L1331,463L1305,467L1283,474L1254,477L1226,486L1205,486L1208,494L1222,492L1241,486L1248,488L1261,488L1282,481L1299,485L1314,491L1303,495L1286,492L1289,498L1279,504L1269,508L1268,517L1261,519L1266,524L1279,525L1293,524L1299,521L1309,513L1322,507L1331,505L1336,507L1329,515L1324,519L1312,525L1308,528L1321,530L1332,524L1349,518L1357,513L1347,504L1360,503L1379,503L1390,501L1397,496L1410,479L1410,479L1410,479L1410,479zM818,684L818,679L799,679L795,684L792,684L782,679L779,681L766,679L766,375L801,375L803,378L812,378L828,383L845,390L869,396L871,398L873,396L887,399L891,397L898,398L918,404L922,403L918,399L911,398L904,398L902,395L906,393L911,395L912,392L905,390L896,389L899,388L907,386L913,385L914,381L912,377L917,377L924,377L945,376L946,372L951,370L954,370L959,376L963,374L965,377L959,384L968,383L971,381L986,379L988,374L991,373L998,373L1001,369L1012,370L1019,368L1026,365L1033,363L1037,364L1040,364L1044,359L1053,359L1064,359L1069,359L1073,358L1076,354L1081,354L1083,357L1088,358L1083,361L1075,363L1062,368L1054,372L1047,376L1043,381L1045,383L1050,381L1060,373L1068,370L1079,368L1089,368L1095,367L1097,371L1103,370L1107,369L1115,363L1115,360L1115,357L1122,356L1126,355L1124,352L1120,352L1118,350L1115,350L1121,347L1120,345L1118,344L1118,340L1124,343L1144,349L1155,359L1163,370L1169,374L1177,375L1191,372L1198,366L1199,362L1201,356L1204,354L1215,354L1225,357L1226,365L1228,370L1233,369L1238,371L1245,373L1251,372L1257,372L1262,369L1267,366L1273,366L1276,367L1282,367L1294,368L1303,368L1318,369L1339,375L1356,381L1373,385L1388,387L1395,392L1413,395L1435,396L1453,396L1465,395L1481,397L1493,400L1502,405L1515,412L1516,417L1515,421L1518,429L1525,432L1533,435L1538,438L1561,437L1564,434L1575,435L1585,435L1595,433L1608,431L1615,427L1624,426L1632,432L1638,438L1647,436L1652,434L1665,435L1674,435L1672,430L1677,427L1684,425L1680,422L1673,424L1669,424L1670,418L1665,418L1663,421L1660,419L1672,405L1697,404L1716,400L1730,397L1739,396L1751,402L1754,408L1753,413L1762,414L1774,418L1778,422L1779,426L1801,426L1807,422L1812,428L1821,429L1830,434L1843,435L1854,435L1862,437L1875,434L1885,430L1913,432L1927,436L1934,436L1949,433L1939,430L1938,423L1944,422L1942,419L1940,416L1947,414L1954,415L1959,413L1961,409L1967,409L1967,407L1955,405L1951,401L1944,402L1936,400L1934,398L1926,400L1918,397L1917,393L1923,389L1929,389L1942,387L1947,384L1945,381L1943,377L1950,376L1952,369L1958,366L1965,366L1970,367L1978,368L1985,373L1996,375L2010,376L2018,376L2024,374L2027,370L2018,369L2012,364L2002,361L1999,353L1999,348L2007,347L2011,341L2004,338L1997,334L2001,328L2003,321L2010,315L2017,316L2022,319L2027,317L2025,313L2016,309L2027,305L2031,300L2036,295L2035,280L2030,275L2025,272L2020,270L2020,263L2020,261L2025,259L2025,250L2023,248L2024,242L2029,240L2033,237L2035,231L2038,230L2047,228L2059,227L2074,227L2080,227L2080,225L2095,226L2105,228L2112,228L2120,230L2139,229L2150,229L2158,230L2162,234L2167,238L2163,243L2152,251L2145,256L2140,260L2145,262L2151,262L2167,253L2184,250L2194,246L2199,244L2202,240L2213,240L2212,242L2220,243L2223,247L2237,242L2247,239L2262,236L2275,236L2285,236L2329,237L2327,241L2312,245L2296,254L2298,255L2303,257L2302,254L2307,251L2311,253L2314,253L2312,257L2318,257L2318,254L2326,251L2340,249L2354,244L2368,242L2377,241L2382,239L2393,239L2423,240L2428,243L2433,247L2432,254L2436,254L2436,239L2444,238L2455,237L2467,239L2490,242L2519,241L2529,242L2540,245L2548,249L2557,250L2561,254L2568,256L2568,261L2569,265L2573,265L2570,269L2548,269L2558,272L2559,275L2569,275L2589,277L2594,279L2602,279L2620,279L2624,284L2642,290L2647,289L2649,292L2660,293L2671,300L2686,300L2690,298L2696,299L2702,299L2701,302L2710,304L2725,308L2729,306L2726,305L2718,304L2720,302L2728,302L2736,302L2737,300L2739,297L2748,297L2759,300L2769,305L2776,306L2782,310L2789,310L2794,311L2800,314L2801,316L2806,314L2804,310L2801,306L2802,301L2800,300L2806,297L2819,296L2819,293L2813,291L2814,288L2819,286L2829,286L2836,288L2844,290L2853,290L2848,296L2857,296L2863,292L2868,287L2877,284L2880,287L2881,292L2886,295L2895,294L2894,288L2888,286L2888,280L2885,276L2880,271L2879,266L2885,268L2888,271L2897,272L2900,274L2900,277L2901,282L2906,280L2913,280L2920,278L2923,276L2929,278L2932,282L2924,282L2922,284L2926,287L2928,289L2923,291L2923,294L2929,293L2929,296L2923,298L2930,299L2946,294L2958,298L2959,301L2979,302L2980,304L2984,305L2984,311L2989,314L2989,322L2993,324L2996,325L2999,322L2994,328L2986,330L2989,333L2993,335L2993,340L2983,344L2978,354L2984,357L2991,364L2989,369L2995,373L3000,377L3003,384L3008,391L3015,392L3018,390L3023,390L3028,399L3028,405L3025,407L3028,411L3031,413L3027,418L3020,425L3018,430L3015,429L3016,435L3019,438L3020,443L3021,447L3017,447L3027,459L3027,469L3026,483L3025,496L3023,499L3021,500L3022,503L3019,506L3023,508L3026,511L3023,514L3017,513L3014,516L3013,511L3008,511L3007,516L3003,517L3001,517L3001,515L2995,512L2991,515L2992,520L2992,523L2980,523L2985,524L2984,529L2979,533L2974,537L2970,537L2967,538L2970,540L2968,543L2962,547L2965,548L2971,545L2972,547L2968,550L2960,552L2960,554L2966,553L2972,552L2974,553L2969,557L2962,561L2959,561L2957,564L2953,559L2955,555L2951,553L2948,558L2946,561L2943,560L2937,560L2928,557L2926,558L2925,559L2918,560L2912,566L2909,563L2911,562L2909,553L2903,551L2902,546L2894,545L2889,542L2887,546L2894,548L2894,551L2880,552L2884,556L2889,557L2891,559L2895,560L2898,557L2902,561L2908,570L2906,573L2902,574L2906,581L2900,582L2900,585L2894,585L2893,583L2887,584L2893,587L2891,590L2887,589L2886,590L2889,592L2887,596L2881,596L2873,593L2877,599L2878,602L2882,604L2900,605L2891,610L2882,611L2877,608L2870,606L2866,597L2861,596L2855,594L2851,593L2847,593L2840,594L2837,591L2833,590L2829,589L2825,587L2820,584L2814,580L2809,577L2805,571L2806,577L2801,578L2798,578L2793,573L2785,571L2780,567L2774,567L2772,569L2777,571L2780,574L2785,576L2789,579L2793,582L2798,582L2804,586L2811,592L2818,596L2822,600L2831,604L2839,610L2847,615L2851,616L2854,620L2851,623L2852,626L2848,628L2839,626L2829,625L2825,622L2816,622L2814,620L2808,620L2794,616L2779,616L2770,612L2760,611L2750,603L2752,598L2746,598L2742,599L2737,597L2734,599L2732,598L2729,600L2735,604L2735,605L2718,605L2715,602L2711,598L2705,597L2705,592L2705,590L2701,590L2696,591L2694,586L2689,584L2685,581L2679,578L2680,576L2684,575L2691,576L2694,576L2698,573L2692,570L2683,569L2674,570L2665,570L2658,568L2660,565L2663,562L2661,559L2655,555L2647,554L2642,548L2637,548L2636,552L2633,550L2631,546L2627,548L2624,545L2624,542L2622,538L2618,538L2615,544L2612,544L2604,545L2593,545L2588,542L2583,540L2583,544L2581,548L2576,546L2569,546L2567,548L2564,548L2561,548L2561,551L2557,552L2553,551L2537,550L2529,548L2521,546L2515,542L2510,535L2510,529L2513,526L2522,521L2527,522L2530,518L2527,515L2524,513L2510,514L2497,519L2488,521L2479,521L2471,520L2467,520L2465,520L2454,520L2444,520L2433,512L2431,512L2432,516L2436,518L2434,520L2417,520L2399,519L2383,514L2371,512L2371,510L2365,510L2362,512L2351,509L2343,505L2345,501L2345,497L2341,497L2342,502L2339,504L2337,503L2335,507L2339,510L2347,512L2355,515L2362,518L2368,518L2370,521L2373,524L2377,527L2383,529L2388,531L2396,533L2403,534L2411,538L2415,545L2416,551L2412,556L2405,557L2408,558L2419,556L2425,556L2431,557L2432,559L2434,554L2440,557L2446,559L2448,562L2454,564L2454,566L2448,566L2444,569L2434,574L2434,575L2410,572L2400,568L2390,568L2391,565L2394,563L2390,559L2373,559L2378,555L2374,551L2373,554L2361,553L2360,559L2360,565L2353,568L2346,572L2340,573L2335,578L2327,583L2317,587L2303,587L2301,583L2303,574L2302,569L2288,570L2282,571L2276,570L2270,572L2261,572L2260,569L2267,561L2273,557L2280,556L2287,555L2285,551L2284,547L2284,535L2287,529L2287,524L2289,512L2294,501L2306,495L2312,496L2317,495L2319,489L2325,488L2322,484L2318,483L2315,488L2310,487L2309,482L2299,482L2302,485L2306,485L2304,490L2294,493L2289,498L2290,500L2284,502L2277,504L2272,509L2269,510L2269,514L2272,514L2269,523L2259,532L2252,536L2252,536L2252,536L2252,536L2250,538L2250,541L2243,541L2241,544L2241,546L2235,554L2222,559L2209,559L2207,559L2200,559L2198,556L2194,556L2194,559L2192,556L2187,556L2185,554L2181,554L2185,559L2187,559L2187,561L2183,561L2183,559L2176,559L2179,561L2183,564L2183,566L2181,566L2179,569L2179,572L2161,572L2159,574L2157,572L2148,572L2144,569L2142,569L2140,566L2137,566L2137,572L2142,574L2146,574L2150,577L2155,577L2155,579L2161,579L2163,584L2163,589L2161,592L2159,592L2159,593L2157,593L2157,592L2153,592L2148,595L2148,597L2114,597L2118,600L2120,602L2129,602L2129,607L2124,607L2122,605L2118,605L2118,607L2111,607L2109,610L2105,610L2107,612L2109,612L2109,615L2105,615L2105,617L2096,617L2096,620L2101,620L2098,623L2090,623L2090,625L2092,625L2090,628L2085,628L2081,625L2081,628L2083,628L2085,630L2092,630L2092,633L2088,633L2085,635L2081,635L2075,638L2070,643L2075,643L2077,646L2075,646L2072,648L2068,651L2066,656L2059,663L2057,668L2057,671L2053,671L2053,679L2051,681L1853,685L818,684zM2358,620L2360,617L2363,617L2365,615L2369,615L2371,617L2376,617L2382,615L2384,615L2384,612L2386,612L2386,610L2393,610L2393,607L2395,605L2399,605L2402,602L2406,602L2406,595L2408,595L2406,592L2399,592L2393,592L2393,595L2391,595L2389,592L2384,592L2382,595L2380,595L2376,597L2371,597L2371,595L2365,595L2363,597L2360,597L2360,602L2356,605L2354,607L2352,607L2350,610L2352,612L2354,612L2356,615L2356,620L2358,620L2358,620L2358,620L2358,620z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1128,967L1128,962L1125,961L1123,963L1122,965L1126,967L1128,967L1128,967L1128,967L1128,967zM1095,927L1092,924L1094,930L1096,933L1099,933L1097,930L1095,927L1095,927L1095,927L1095,927zM1704,710L1691,706L1675,705L1663,707L1655,704L1647,700L1631,706L1630,710L1617,716L1608,719L1601,725L1592,728L1590,732L1579,731L1569,726L1561,728L1557,733L1561,736L1567,744L1574,743L1575,737L1585,738L1595,734L1605,734L1615,733L1615,729L1625,723L1636,719L1651,715L1659,716L1671,715L1682,715L1691,711L1697,710L1704,710L1704,710L1704,710L1704,710zM1853,685L1853,825L1870,1049L1269,1048L1269,1046L1267,1046L1265,1048L1262,1048L1262,1046L1260,1046L1258,1041L1267,1041L1267,1038L1258,1038L1258,1033L1256,1033L1256,1038L1254,1038L1254,1036L1247,1036L1241,1033L1239,1033L1239,1031L1230,1023L1223,1023L1223,1020L1219,1020L1219,1018L1217,1018L1215,1015L1219,1015L1219,1013L1221,1010L1221,1008L1219,1008L1219,1005L1208,1005L1206,1003L1204,1003L1204,1000L1200,1000L1200,1005L1197,1005L1197,1008L1200,1010L1200,1013L1202,1013L1204,1015L1204,1018L1206,1020L1210,1023L1213,1026L1213,1028L1215,1031L1215,1033L1221,1036L1223,1036L1243,1046L1246,1050L1252,1053L1256,1056L1254,1059L1256,1064L1258,1066L1258,1069L1254,1069L1254,1066L1249,1071L1245,1071L1245,1069L1243,1069L1243,1071L1241,1069L1239,1069L1230,1066L1226,1064L1217,1064L1217,1061L1215,1061L1213,1059L1206,1059L1204,1056L1210,1051L1213,1051L1208,1048L1206,1048L1204,1051L1195,1051L1189,1048L1189,1046L1191,1046L1193,1043L1193,1041L1191,1043L1189,1043L1189,1038L1187,1041L1187,1043L1184,1043L1184,1041L1176,1041L1176,1036L1165,1036L1167,1031L1169,1028L1165,1026L1165,1031L1163,1031L1161,1028L1158,1028L1156,1026L1154,1026L1156,1023L1156,1020L1150,1020L1148,1018L1150,1015L1150,1013L1148,1013L1148,1015L1143,1015L1141,1013L1130,1013L1130,1010L1132,1010L1132,1005L1128,1005L1124,1000L1119,1000L1115,995L1115,990L1117,990L1124,987L1130,987L1131,988L1132,987L1137,987L1137,990L1141,990L1141,992L1145,995L1148,995L1154,997L1161,997L1163,1000L1165,1000L1165,997L1167,997L1169,995L1165,995L1165,987L1156,987L1154,990L1152,990L1148,987L1143,987L1143,985L1139,985L1139,980L1135,980L1132,977L1132,975L1141,975L1141,972L1135,972L1135,969L1132,967L1135,967L1130,962L1130,954L1132,954L1132,952L1130,952L1128,950L1129,947L1129,944L1126,948L1126,952L1124,955L1122,954L1119,952L1119,950L1117,947L1117,944L1121,943L1120,939L1119,938L1117,940L1113,940L1114,934L1113,932L1111,936L1109,936L1108,939L1106,940L1104,934L1106,931L1106,924L1104,924L1104,929L1098,929L1098,926L1096,926L1096,924L1098,921L1093,921L1093,916L1091,916L1089,913L1089,911L1091,908L1095,914L1096,903L1093,906L1093,898L1091,898L1091,906L1086,906L1085,906L1085,909L1082,911L1080,908L1072,901L1070,898L1063,892L1063,889L1066,889L1067,888L1067,885L1065,885L1065,883L1070,883L1070,880L1065,880L1065,875L1063,875L1063,878L1059,878L1059,875L1057,872L1059,872L1059,865L1061,865L1061,862L1063,862L1065,860L1065,857L1067,857L1070,855L1070,852L1067,852L1067,847L1070,847L1072,844L1072,842L1067,834L1067,827L1070,824L1070,816L1061,816L1059,814L1059,811L1054,811L1050,809L1046,809L1041,806L1039,806L1037,804L1035,804L1028,801L1020,801L1020,793L1013,791L1013,788L1015,786L1007,786L1007,783L1009,783L1009,781L998,768L994,765L994,760L992,760L987,755L985,755L985,753L983,750L983,748L979,748L979,745L976,742L976,740L968,735L966,732L957,727L953,727L950,725L950,722L946,717L942,717L942,714L940,714L929,709L929,707L931,707L931,704L929,702L927,702L918,697L909,699L905,699L903,702L894,702L896,704L898,704L896,707L892,707L892,714L890,714L890,717L879,717L879,719L875,719L870,722L868,722L866,725L862,725L862,722L864,722L862,719L862,717L859,714L851,709L846,704L836,699L834,699L831,697L831,694L829,694L829,691L823,689L818,689L816,686L816,684L818,684L1853,685zM1070,904L1067,900L1064,899L1064,897L1063,894L1060,894L1059,897L1057,897L1058,901L1060,902L1063,905L1066,907L1073,913L1074,910L1075,910L1074,907L1070,904L1070,904L1070,904L1070,904zM1058,889L1062,887L1063,886L1062,885L1060,882L1056,882L1054,884L1053,885L1053,888L1055,887L1057,888L1058,889L1058,889L1058,889L1058,889z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2385,1153L2408,1164L2411,1161L2415,1152L2409,1152L2405,1148L2401,1148L2396,1146L2374,1148L2368,1147L2363,1147L2358,1144L2354,1146L2353,1148L2368,1150L2374,1152L2385,1153L2385,1153L2385,1153L2385,1153zM2603,1179L2594,1184L2590,1184L2590,1186L2588,1186L2584,1189L2584,1191L2581,1191L2579,1194L2577,1194L2577,1196L2575,1196L2575,1199L2573,1199L2571,1201L2568,1201L2560,1207L2560,1209L2555,1205L2547,1206L2544,1213L2544,1217L2541,1216L2536,1216L2528,1212L2515,1213L2505,1215L2488,1216L2481,1219L2471,1226L2465,1233L2468,1237L2480,1238L2484,1235L2485,1235L2486,1237L2486,1245L2488,1247L2490,1247L2489,1249L2482,1248L2462,1251L2453,1252L2451,1254L2451,1258L2442,1259L2434,1257L2431,1255L2423,1256L2415,1260L2410,1265L2407,1267L2407,1270L2392,1275L2383,1278L2376,1277L2373,1278L2371,1278L2371,1275L2373,1270L2373,1268L2378,1268L2378,1265L2382,1265L2382,1263L2384,1263L2384,1260L2389,1260L2389,1258L2391,1258L2391,1247L2393,1245L2393,1244L2396,1245L2410,1235L2412,1230L2411,1210L2417,1200L2422,1196L2423,1188L2420,1178L2412,1171L2419,1170L2423,1171L2423,1177L2435,1188L2438,1188L2447,1192L2456,1194L2459,1191L2453,1185L2458,1183L2465,1185L2461,1177L2455,1171L2447,1159L2440,1154L2436,1147L2385,1138L2375,1139L2352,1136L2354,1143L2352,1143L2352,1145L2350,1145L2345,1140L2343,1135L2343,1133L2345,1133L2345,1130L2337,1130L2334,1133L2332,1133L2331,1130L2333,1128L2334,1124L2334,1121L2336,1119L2330,1116L2327,1110L2332,1106L2319,1093L2324,1084L2296,1082L2288,1072L2282,1057L2240,1051L2234,1047L2231,1052L2237,1054L2243,1054L2246,1055L2226,1062L2227,1054L2222,1054L2219,1068L2214,1069L2213,1061L2209,1063L2203,1065L2201,1067L2204,1072L2195,1079L2189,1082L2181,1082L2181,1079L2179,1079L2179,1077L2174,1079L2161,1079L2159,1077L2159,1074L2155,1074L2150,1077L2148,1079L2144,1079L2142,1082L2142,1079L2135,1079L2135,1077L2133,1077L2131,1074L2127,1074L2127,1071L2124,1071L2124,1069L2122,1069L2120,1071L2118,1071L2118,1074L2116,1074L2114,1071L2114,1069L2109,1066L2107,1066L2107,1064L2101,1061L2085,1061L2085,1064L2077,1064L2077,1061L2064,1061L2064,1059L2053,1059L2051,1056L2051,1048L2049,1046L2049,1038L2040,1038L2040,1036L2038,1036L2038,1048L1871,1048L1853,824L1853,685L2051,681L2053,684L2051,686L2049,686L2049,704L2051,709L2051,712L2049,712L2049,719L2055,727L2057,727L2057,730L2059,732L2062,732L2062,730L2094,730L2094,737L2096,737L2096,740L2098,742L2098,745L2103,750L2103,753L2105,753L2105,760L2107,760L2107,763L2109,765L2114,773L2114,781L2108,788L2114,786L2131,786L2133,783L2150,781L2153,778L2159,778L2161,781L2172,781L2174,783L2176,783L2181,786L2183,786L2183,788L2189,788L2196,791L2207,791L2207,793L2215,793L2218,796L2220,796L2220,799L2222,799L2226,801L2228,801L2231,804L2237,804L2237,806L2241,809L2246,814L2246,816L2250,819L2254,819L2254,821L2265,821L2267,824L2269,824L2276,827L2282,827L2285,829L2295,832L2300,832L2304,834L2306,837L2308,837L2311,839L2313,839L2315,842L2317,842L2317,844L2319,844L2321,842L2324,844L2339,844L2343,842L2343,844L2347,844L2347,842L2352,842L2359,845L2363,844L2371,847L2373,847L2373,844L2378,844L2378,847L2391,847L2391,850L2395,850L2395,847L2397,850L2397,852L2397,853L2397,855L2397,860L2393,872L2391,872L2391,875L2393,878L2393,880L2395,883L2397,883L2399,888L2399,895L2397,898L2397,901L2399,901L2399,908L2402,908L2402,911L2397,911L2397,913L2395,916L2395,918L2397,918L2397,921L2402,921L2402,924L2404,924L2404,926L2406,926L2410,934L2415,934L2415,936L2417,936L2417,941L2419,941L2419,946L2421,946L2423,949L2428,949L2432,952L2436,957L2441,957L2443,959L2443,962L2445,967L2447,967L2447,972L2449,972L2454,975L2460,975L2464,980L2467,980L2467,982L2469,982L2469,980L2467,977L2467,975L2469,975L2469,969L2473,969L2473,964L2477,962L2482,962L2482,964L2480,964L2480,967L2486,967L2478,970L2476,1102L2502,1129L2533,1135L2556,1154L2580,1159L2608,1155L2610,1164L2603,1179zM2003,974L1997,961L1987,947L1984,937L1980,927L1977,920L1974,912L1965,899L1959,893L1948,890L1934,890L1931,894L1927,904L1925,909L1930,914L1945,914L1937,921L1938,928L1943,930L1949,937L1957,942L1957,948L1963,954L1969,948L1973,948L1981,956L1981,968L1990,961L1993,967L1991,971L1996,976L1991,977L1988,984L1988,996L1993,1002L2000,999L2001,996L2007,992L2006,984L2003,974L2003,974L2003,974L2003,974zM2402,918L2406,918L2408,921L2415,921L2421,924L2425,924L2428,926L2436,926L2438,929L2441,929L2441,926L2438,921L2436,918L2432,916L2432,913L2430,913L2430,911L2417,911L2412,913L2404,913L2402,916L2402,918L2402,918L2402,918L2402,918z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M996,858L996,864L991,859L987,858L983,852L982,848L982,847L979,844L976,845L974,844L975,842L970,845L969,842L970,840L971,841L981,839L983,840L985,839L983,837L983,832L981,832L979,835L976,838L969,838L967,836L968,831L971,835L974,835L977,834L977,831L976,829L977,823L979,821L979,819L975,821L972,819L968,822L964,824L962,822L969,816L969,809L982,810L986,816L991,818L999,824L1009,838L1004,838L1015,845L1013,850L1015,853L1016,858L1015,861L1009,861L1005,856L1001,855L999,854L998,851L999,848L996,847L995,851L993,852L991,849L989,846L987,845L984,846L989,854L994,859L996,858L996,858L996,858zM893,750L895,748L897,747L904,748L907,746L915,746L920,749L934,753L934,756L932,758L930,761L922,761L924,762L932,762L935,764L936,770L936,780L940,784L940,791L942,792L941,810L938,813L938,811L934,809L932,801L929,800L922,794L922,788L922,782L919,779L916,778L914,780L915,782L915,786L910,786L908,784L912,782L908,780L908,777L911,775L900,765L898,763L893,760L888,755L890,750L893,750L893,750L893,750zM606,674L609,674L614,673L619,675L618,677L609,680L606,677L606,674L606,674L606,674zM583,686L595,676L600,678L602,681L596,680L589,685L582,693L577,696L573,696L573,693L575,691L583,686L583,686L583,686zM578,683L575,683L573,681L572,679L573,677L576,672L579,672L581,674L578,683L578,683L578,683zM403,796L401,795L401,792L405,789L404,786L402,786L395,790L392,789L389,789L389,783L387,780L382,778L384,774L384,771L390,770L392,767L396,766L402,766L404,769L407,770L408,767L410,764L406,762L409,759L414,759L416,762L418,760L422,760L417,756L422,756L424,756L425,759L427,757L430,758L437,760L441,759L444,755L447,758L447,762L445,764L452,768L450,771L445,773L442,771L440,773L441,776L439,779L434,776L433,778L435,781L434,784L426,784L425,785L422,785L422,783L419,783L416,785L416,788L409,792L406,795L403,796L403,796L403,796zM6,910L4,905L8,901L15,898L21,901L18,905L15,905L11,909L6,910L6,910L6,910zM870,722L875,719L879,719L879,717L890,717L890,714L892,714L892,707L896,707L898,704L896,704L894,702L903,702L905,699L909,699L918,697L927,702L929,702L931,704L931,707L929,707L929,709L940,714L942,714L942,717L946,717L950,722L950,725L953,727L957,727L966,732L968,735L976,740L976,742L979,745L979,748L983,748L983,750L985,753L985,755L987,755L992,760L994,760L994,765L998,768L1009,781L1009,783L1007,783L1007,786L1015,786L1013,788L1013,791L1020,793L1020,801L1028,801L1035,804L1037,804L1039,806L1041,806L1046,809L1050,809L1054,811L1059,811L1059,814L1061,816L1070,816L1070,824L1067,827L1067,834L1072,842L1072,844L1070,847L1067,847L1067,852L1070,852L1070,855L1067,857L1062,857L1059,859L1057,861L1053,861L1051,861L1049,858L1047,860L1044,859L1043,851L1041,850L1041,846L1043,844L1045,842L1047,831L1044,828L1042,830L1042,838L1041,843L1038,845L1032,844L1033,853L1035,854L1036,857L1032,857L1030,851L1026,853L1025,850L1026,846L1028,843L1024,843L1023,846L1019,848L1019,843L1020,839L1021,835L1023,834L1023,830L1025,828L1024,824L1021,825L1020,829L1020,831L1017,834L1011,835L1009,830L1010,827L1013,824L1015,818L1012,814L1010,818L1010,820L1009,822L1005,821L1000,817L998,818L995,817L996,814L999,811L1001,809L1000,806L997,805L996,807L995,809L993,811L989,812L986,810L985,807L987,805L992,805L992,802L988,803L985,801L983,799L983,802L982,804L975,803L972,805L969,805L968,802L969,798L967,798L966,800L963,800L963,805L961,808L960,813L959,815L957,815L957,818L953,819L953,807L957,806L955,803L952,799L947,795L948,792L951,791L957,791L960,793L961,796L962,798L963,791L961,788L961,786L965,784L968,784L972,786L982,787L986,789L989,791L992,792L989,786L983,783L972,781L969,777L972,775L972,773L971,770L968,767L966,760L963,756L962,753L958,751L954,749L949,747L945,748L945,750L950,750L959,755L960,757L962,760L962,764L957,761L955,759L956,764L959,765L960,767L960,777L956,777L956,781L953,781L947,784L942,781L944,772L943,770L940,769L938,756L938,754L937,750L936,748L934,746L934,743L937,743L937,741L938,739L936,738L929,727L926,726L925,720L925,716L922,716L921,719L921,725L924,729L927,735L928,740L928,746L925,747L910,740L905,741L904,738L907,735L904,735L903,736L903,737L901,745L897,745L896,742L892,740L890,742L888,742L885,746L881,742L875,742L872,740L868,740L866,737L862,737L857,732L855,732L853,730L851,730L851,725L846,725L844,722L842,722L838,719L831,719L831,717L827,714L821,714L821,712L816,712L814,709L810,709L808,707L801,707L801,704L803,704L805,702L805,699L808,699L801,691L799,694L795,697L790,697L788,699L771,699L769,697L764,697L760,694L756,694L756,691L754,690L749,691L745,691L743,689L734,689L723,686L699,686L691,689L682,689L682,686L678,686L675,684L665,684L665,681L662,681L660,679L658,679L658,681L656,679L656,676L647,676L647,679L643,679L641,676L639,676L635,672L633,672L631,674L628,673L624,669L621,669L615,666L613,668L610,668L608,666L608,662L607,661L606,663L604,663L602,661L603,659L601,658L598,660L596,662L578,661L568,663L567,664L567,666L569,671L571,672L571,674L568,680L570,683L573,684L574,687L574,690L571,690L568,691L564,690L562,687L560,688L561,690L541,691L539,689L537,690L534,690L532,686L530,686L530,689L528,691L526,693L526,697L528,697L528,699L526,699L524,697L522,697L522,699L519,697L517,697L517,699L515,702L509,707L506,707L506,709L504,709L504,707L505,705L502,707L500,704L502,704L502,702L500,702L498,704L500,707L498,707L496,709L491,712L491,714L489,714L487,712L483,712L485,714L472,714L472,717L467,717L463,714L461,714L461,712L465,707L476,707L476,704L480,704L487,697L483,697L476,702L470,702L467,699L463,699L463,697L467,689L470,686L472,686L474,684L476,684L476,681L478,676L480,676L480,671L478,671L478,668L476,668L476,666L480,663L487,663L504,656L506,656L506,658L522,658L522,656L519,653L517,653L514,651L515,651L515,648L496,648L491,651L485,651L485,653L483,656L474,656L472,658L467,661L465,661L465,663L467,663L467,666L461,666L459,668L457,668L454,671L450,674L450,676L452,676L450,679L448,679L444,681L440,681L440,684L441,684L444,686L444,689L439,691L437,694L433,694L433,697L431,699L428,699L426,702L422,702L422,699L420,697L420,702L415,704L411,704L411,707L409,709L400,709L402,712L400,712L398,717L398,722L400,722L400,719L413,719L413,722L420,722L424,727L420,732L415,735L407,735L407,737L405,740L402,740L402,742L398,742L396,745L400,745L398,750L392,750L392,753L389,753L389,755L387,755L387,753L383,755L381,755L379,753L377,753L377,755L374,755L374,758L370,760L368,763L364,763L361,760L359,760L359,763L357,765L357,770L355,770L355,768L353,768L351,770L348,770L348,773L344,773L335,776L335,778L340,778L340,781L333,788L329,788L325,791L325,788L322,788L322,791L318,793L316,793L316,796L314,793L312,793L309,791L309,793L305,796L305,799L307,799L307,801L301,801L301,799L294,799L294,801L296,801L296,804L292,804L292,801L290,801L290,806L286,806L286,804L283,804L281,806L281,809L283,809L288,811L286,811L283,814L281,814L279,816L279,821L277,819L276,816L275,816L275,821L273,821L273,819L270,819L268,821L264,821L262,824L255,824L253,827L251,827L251,832L249,834L247,834L245,834L245,831L249,827L247,827L247,824L242,824L238,827L236,827L236,829L234,832L227,832L225,834L225,837L223,837L221,834L216,834L216,837L210,837L210,839L208,839L203,842L197,842L197,837L199,834L199,832L192,832L190,837L190,839L188,842L184,844L182,844L182,847L184,850L179,850L179,847L177,847L177,850L176,851L175,852L169,852L169,847L166,844L166,837L169,837L171,834L175,832L175,829L179,829L182,827L186,824L188,824L199,821L208,821L212,827L216,824L225,824L223,821L223,819L225,814L227,814L227,811L229,811L231,809L236,806L238,806L240,804L242,804L247,801L251,801L251,799L257,799L257,796L262,796L264,793L270,793L275,796L275,786L277,786L281,781L281,778L283,778L286,776L290,776L294,770L299,770L301,768L301,765L303,763L303,755L305,753L305,750L309,748L305,745L305,742L307,740L307,737L316,735L320,730L318,726L315,726L314,727L312,727L303,730L299,732L294,732L294,735L286,735L283,732L283,730L279,730L277,727L279,727L279,722L283,722L283,719L281,719L279,717L279,719L276,721L275,725L272,726L273,727L268,727L268,732L273,737L275,737L275,740L270,740L270,742L266,742L264,740L262,740L262,737L255,732L255,730L253,730L253,727L249,725L244,725L244,727L242,727L242,730L240,730L238,727L234,725L229,725L229,722L231,722L229,719L227,719L225,722L218,725L216,725L215,726L214,725L212,725L212,727L208,727L205,730L201,730L201,732L199,735L184,735L186,732L190,730L192,730L192,727L188,727L188,722L190,722L192,719L195,719L192,717L190,719L184,719L182,717L182,714L184,709L188,707L190,707L188,704L186,699L184,699L184,697L182,694L179,694L177,689L175,686L177,684L177,681L175,681L175,684L173,684L171,679L173,676L175,671L179,668L184,668L186,666L179,666L175,668L171,676L169,676L166,679L166,681L169,681L169,684L169,684L169,686L169,689L166,689L162,691L156,691L151,694L145,694L143,697L127,697L125,694L121,694L121,689L119,689L117,686L114,686L112,684L108,681L108,679L97,679L95,676L95,674L88,674L86,671L91,671L99,666L101,663L102,661L106,661L108,663L119,663L119,668L123,668L123,666L125,663L130,663L132,666L132,671L136,671L138,668L143,668L143,663L136,663L134,661L138,661L136,656L134,656L130,658L130,661L110,661L110,658L99,658L97,661L95,658L93,658L95,656L97,656L93,651L88,651L88,653L82,653L82,648L80,646L73,646L73,643L78,643L78,640L75,640L75,638L69,638L69,640L67,640L67,638L65,638L67,633L67,635L75,635L73,633L71,632L69,632L68,629L78,630L80,628L80,625L78,625L78,623L82,617L84,617L91,610L93,610L95,607L106,607L104,605L108,605L108,602L104,602L101,600L101,597L106,592L108,592L108,589L112,589L110,587L114,584L119,584L123,582L127,582L134,584L136,587L140,587L145,589L153,589L164,584L164,582L173,577L173,574L182,574L182,577L203,577L203,574L205,574L214,569L216,566L216,561L214,561L214,559L212,556L212,551L208,549L205,546L199,544L197,545L195,545L197,541L210,541L214,538L216,538L216,536L212,531L208,531L208,528L205,528L201,531L199,531L199,533L188,533L187,535L186,533L184,533L184,536L175,536L175,538L171,538L169,541L166,541L164,544L164,546L162,546L160,548L158,541L156,541L149,536L149,538L145,538L147,541L153,541L153,544L151,546L149,546L147,544L143,541L138,541L136,538L130,538L127,541L123,541L119,538L117,538L117,541L99,541L99,544L91,544L88,541L67,541L67,538L60,538L60,536L58,536L58,533L60,531L60,528L56,528L52,526L52,523L54,523L57,519L58,518L69,518L67,515L65,515L54,513L47,513L47,514L45,513L30,513L28,510L26,510L23,508L13,508L13,503L15,502L17,500L19,500L19,503L30,503L30,500L28,500L30,498L43,498L45,495L45,493L52,490L56,490L62,487L65,485L67,485L65,487L67,487L69,490L80,490L84,487L80,487L78,485L75,485L78,482L82,482L86,480L99,480L106,477L108,475L123,475L130,472L132,472L134,475L134,477L132,477L132,480L130,480L130,482L129,483L130,485L130,487L132,490L162,490L166,493L175,493L177,490L182,490L184,493L186,493L188,490L190,490L190,487L192,487L192,485L208,485L208,487L210,487L210,485L208,482L201,482L197,480L195,480L197,477L201,477L203,477L204,475L205,475L208,477L210,477L212,480L218,480L221,482L223,480L231,480L231,472L223,472L223,475L218,475L218,472L205,472L203,474L201,475L197,475L190,472L188,472L186,470L186,467L190,462L195,462L192,459L175,459L171,462L173,462L179,467L179,472L177,470L169,470L164,464L166,464L169,462L169,459L147,459L143,457L134,457L134,452L132,452L132,449L125,442L123,442L123,439L119,439L108,434L104,434L97,429L93,429L91,426L84,426L82,424L71,424L71,421L67,421L65,419L60,419L54,416L56,416L60,413L65,408L65,406L67,403L67,401L65,401L65,398L75,398L75,401L86,401L91,398L121,398L123,396L130,396L134,393L136,391L140,391L140,388L143,388L145,385L147,385L149,383L151,383L153,378L153,373L156,373L156,370L164,365L166,365L169,362L173,360L175,357L177,357L179,355L182,355L182,352L186,352L190,355L201,355L203,352L214,352L214,350L216,350L225,347L227,345L229,345L234,342L236,342L238,340L242,340L247,337L249,337L251,334L262,334L260,337L253,337L257,340L260,340L262,337L279,337L279,334L301,334L305,332L307,329L314,329L314,327L316,327L318,324L320,324L320,322L325,319L329,319L333,317L333,319L338,322L348,322L348,324L353,324L355,322L355,324L361,324L361,327L357,329L348,329L346,332L348,332L353,334L359,334L361,332L366,329L370,329L370,327L372,327L374,324L374,327L381,327L387,329L385,332L385,334L396,334L398,337L400,337L405,334L407,334L409,332L411,332L415,334L418,334L422,332L433,332L439,334L454,334L454,337L450,337L446,340L446,342L444,345L450,345L448,342L459,342L459,345L467,345L467,347L474,347L476,350L483,350L483,347L493,347L498,345L500,345L504,347L517,347L517,345L528,345L530,347L543,347L548,350L556,350L556,352L563,352L563,350L567,350L567,352L569,352L576,355L591,355L593,357L606,357L613,355L615,355L619,357L634,357L634,360L643,360L649,362L669,362L671,360L701,360L701,357L704,360L712,360L721,362L723,362L725,365L727,365L730,368L736,368L738,370L749,370L751,373L753,373L756,375L758,375L760,373L762,373L766,375L766,679L779,681L782,679L792,684L795,684L799,679L818,679L818,684L816,684L816,686L818,689L823,689L829,691L829,694L831,694L831,697L834,699L836,699L846,704L851,709L859,714L862,717L862,719L864,722L862,722L862,725L866,725L868,722L870,722L870,722L870,722zM431,748L428,745L437,745L437,742L439,740L446,740L448,742L450,740L452,740L461,742L461,748L459,750L454,750L454,748L452,745L452,748L450,748L450,750L444,750L444,753L441,753L439,755L435,755L433,753L431,753L433,755L431,755L426,753L428,753L428,750L426,750L426,748L431,748L431,748L431,748zM52,679L58,676L69,676L69,679L80,679L80,686L82,689L84,689L84,691L78,691L73,694L67,694L67,697L62,697L60,694L54,694L45,689L39,689L36,686L34,686L32,684L34,681L41,681L45,684L47,684L47,681L49,681L52,679L52,679L52,679zM82,883L82,880L80,878L82,875L86,875L86,880L84,883L82,883L82,883L82,883zM73,885L73,883L71,883L71,885L69,885L69,883L67,883L71,878L73,878L80,880L80,883L75,883L73,885L73,885L73,885zM43,893L39,890L41,888L43,888L49,885L54,885L54,890L58,890L58,888L60,888L60,885L65,885L65,890L69,890L69,893L67,893L65,895L60,895L56,898L54,901L54,903L43,903L32,908L28,908L26,911L21,908L19,908L23,906L30,906L30,903L39,903L41,901L39,901L39,898L43,898L41,895L43,895L43,893L43,893L43,893zM214,849L214,842L216,839L223,839L223,842L221,842L225,847L218,847L216,848L214,849L214,849L214,849zM156,855L156,852L153,850L151,850L151,848L151,847L156,847L160,842L164,842L164,844L162,844L162,847L166,850L166,855L164,852L162,855L156,855L156,855L156,855zM147,855L147,852L145,850L146,849L147,847L149,846L150,849L149,852L151,852L151,855L153,855L145,858L145,857L147,855L147,855L147,855zM112,857L112,855L117,855L117,857L121,857L125,855L127,852L140,852L143,855L143,857L145,860L151,860L153,862L153,865L149,865L147,862L143,862L143,865L121,865L121,867L117,867L119,870L117,870L114,872L104,872L101,867L99,867L101,865L108,865L108,862L110,862L112,857L112,857L112,857zM1035,939L1035,941L1041,941L1044,944L1041,944L1041,946L1043,947L1043,949L1043,953L1041,952L1039,952L1039,946L1035,946L1028,939L1028,936L1024,936L1024,934L1022,934L1018,931L1013,927L1015,926L1016,925L1019,923L1020,924L1022,929L1024,929L1024,931L1026,934L1031,934L1031,936L1033,939L1033,936L1035,936L1035,939L1035,939L1035,939zM996,906L996,911L1000,911L1000,916L1002,918L1011,918L1011,921L1007,921L1011,926L1015,925L1015,924L1017,923L1018,921L1021,922L1024,922L1024,921L1026,921L1026,918L1024,918L1026,916L1022,911L1018,911L1017,906L1017,900L1020,893L1020,890L1022,890L1022,888L1024,888L1024,883L1020,883L1015,885L1011,885L1009,883L1005,883L1000,885L1000,883L998,880L994,880L994,883L992,883L989,880L985,880L985,883L987,885L985,888L983,888L983,890L985,893L987,893L989,895L987,895L989,898L987,898L992,903L996,903L1000,906L996,906L996,906L996,906zM9983,919L9986,922L9992,921L9997,916L9998,907L9994,908L9991,913L9983,919L9983,919L9983,919zM9808,948L9811,949L9874,949L9876,945L9874,943L9849,944L9848,940L9847,935L9844,935L9839,935L9835,937L9834,940L9831,942L9830,944L9816,944L9808,948L9808,948L9808,948zM9764,958L9763,962L9766,962L9770,960L9794,956L9796,951L9801,951L9800,948L9794,948L9792,949L9792,945L9785,945L9785,951L9783,952L9778,952L9776,950L9773,948L9770,950L9769,954L9764,958L9764,958L9764,958zM9731,954L9735,957L9733,959L9737,961L9759,960L9761,957L9762,951L9757,951L9754,954L9750,954L9747,956L9744,956L9741,953L9738,951L9732,950L9731,954L9731,954L9731,954zM9643,963L9657,971L9658,973L9662,972L9661,966L9657,962L9643,960L9643,963L9643,963L9643,963zM9606,949L9602,951L9602,956L9614,955L9616,951L9615,944L9613,942L9609,947L9606,949L9606,949L9606,949z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M247,1926L244,1928L244,1933L247,1933L251,1936L253,1936L255,1933L257,1933L257,1926L255,1926L255,1923L249,1923L249,1926L247,1926L247,1926L247,1926zM301,1956L303,1954L301,1951L299,1951L299,1949L296,1949L296,1944L294,1941L292,1941L292,1944L290,1944L286,1946L288,1949L288,1951L290,1951L290,1954L296,1954L299,1956L301,1956L301,1956L301,1956zM327,1961L329,1961L329,1959L314,1959L314,1961L322,1961L325,1964L327,1961L327,1961L327,1961zM331,1969L331,1972L335,1972L335,1974L338,1974L335,1977L338,1977L338,1979L340,1977L346,1977L348,1974L348,1972L346,1969L344,1969L344,1967L338,1967L335,1969L335,1964L331,1964L329,1967L329,1969L331,1969L331,1969L331,1969zM325,1974L325,1972L327,1972L327,1969L325,1967L320,1967L320,1969L322,1974L325,1974L325,1974L325,1974zM381,2015L377,2020L368,2020L364,2025L361,2025L361,2030L359,2030L359,2033L357,2033L357,2030L355,2030L355,2028L351,2028L351,2025L353,2023L353,2018L348,2007L348,2005L355,1997L355,1995L353,1995L353,1987L355,1989L357,1989L361,1992L361,1995L368,1995L370,1997L372,1997L372,2000L377,2005L377,2010L379,2010L381,2012L383,2012L381,2015L381,2015L381,2015z\"/>\r\n        <Path x:Name=\"PacificWestUS\" Fill=\"Yellow\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1494,1589L1498,1581L1500,1572L1496,1564L1497,1556L1501,1544L1507,1532L1503,1522L1349,1384L1343,1378L1345,1368L1346,1357L1345,1341L1340,1342L1340,1337L1345,1333L1344,1284L1425,1283L1425,1211L1431,1207L1433,1203L1426,1195L1425,1187L1432,1175L1439,1167L1439,1157L1438,1151L1431,1146L1422,1144L1423,1134L1420,1130L1424,1125L1425,1049L1424,1048L1273,1048L1273,1051L1271,1051L1273,1056L1280,1056L1280,1059L1282,1061L1282,1064L1280,1066L1278,1066L1275,1064L1273,1066L1273,1069L1275,1069L1273,1074L1279,1076L1279,1081L1282,1084L1284,1084L1282,1087L1282,1097L1284,1099L1284,1102L1282,1105L1278,1105L1280,1097L1278,1094L1278,1097L1275,1097L1273,1094L1275,1092L1278,1092L1278,1089L1280,1089L1279,1086L1278,1084L1275,1087L1275,1082L1274,1080L1273,1079L1273,1082L1271,1079L1271,1077L1269,1077L1269,1079L1267,1079L1262,1077L1236,1077L1236,1074L1234,1074L1232,1071L1223,1071L1223,1069L1219,1069L1219,1082L1221,1084L1221,1087L1226,1087L1226,1092L1228,1092L1228,1097L1230,1099L1230,1102L1232,1105L1232,1107L1234,1112L1236,1112L1239,1115L1241,1115L1239,1117L1234,1117L1234,1120L1236,1122L1243,1122L1245,1125L1241,1125L1239,1128L1241,1128L1241,1130L1240,1132L1236,1130L1236,1133L1239,1138L1254,1138L1254,1140L1239,1140L1239,1143L1241,1143L1241,1148L1239,1150L1239,1156L1241,1156L1241,1158L1239,1161L1239,1163L1241,1161L1241,1163L1239,1163L1239,1181L1236,1184L1236,1196L1234,1207L1234,1222L1232,1222L1232,1227L1230,1232L1228,1235L1228,1240L1226,1245L1223,1247L1223,1252L1228,1258L1228,1260L1226,1260L1226,1268L1228,1270L1228,1275L1230,1275L1232,1278L1232,1286L1234,1288L1236,1293L1236,1298L1234,1303L1234,1316L1232,1319L1230,1319L1230,1321L1228,1324L1228,1334L1230,1337L1232,1337L1232,1339L1236,1339L1239,1344L1243,1349L1243,1352L1245,1352L1245,1360L1243,1360L1243,1365L1245,1367L1245,1370L1247,1372L1247,1375L1245,1377L1247,1380L1252,1383L1256,1388L1256,1390L1258,1390L1258,1393L1262,1393L1265,1398L1267,1400L1267,1405L1269,1408L1271,1408L1280,1413L1282,1413L1281,1411L1280,1411L1280,1405L1282,1403L1284,1403L1284,1405L1286,1405L1284,1408L1283,1410L1284,1413L1288,1418L1288,1421L1290,1421L1291,1426L1284,1421L1282,1421L1284,1418L1284,1416L1280,1416L1280,1426L1282,1426L1282,1436L1288,1441L1291,1444L1293,1444L1293,1441L1297,1441L1297,1444L1299,1446L1299,1454L1295,1454L1295,1459L1297,1459L1297,1464L1299,1467L1301,1467L1308,1474L1308,1474L1308,1477L1308,1477L1310,1477L1310,1479L1312,1482L1314,1485L1316,1485L1318,1487L1319,1490L1321,1492L1323,1492L1324,1493L1325,1495L1325,1500L1325,1500L1326,1501L1327,1502L1328,1501L1329,1500L1329,1502L1332,1502L1332,1502L1331,1505L1330,1508L1330,1521L1330,1521L1332,1520L1334,1520L1334,1523L1336,1523L1336,1523L1336,1525L1338,1525L1342,1523L1345,1523L1349,1525L1362,1525L1364,1528L1366,1529L1368,1530L1368,1533L1368,1533L1371,1533L1371,1536L1371,1536L1373,1536L1375,1537L1377,1538L1390,1538L1390,1538L1390,1541L1392,1541L1392,1541L1392,1548L1397,1548L1397,1546L1397,1546L1399,1546L1401,1548L1403,1548L1403,1548L1403,1551L1403,1551L1405,1551L1407,1553L1410,1553L1412,1555L1414,1556L1414,1556L1414,1558L1418,1561L1420,1564L1425,1574L1425,1574L1425,1581L1427,1581L1428,1583L1429,1584L1429,1584L1427,1584L1427,1584L1428,1585L1429,1587L1446,1587L1450,1585L1453,1584L1477,1584L1479,1583L1481,1581L1494,1581L1494,1581L1494,1587L1492,1589L1492,1589L1494,1589L1494,1589zM1347,1538L1342,1538L1342,1538L1342,1541L1345,1541L1345,1541L1345,1543L1345,1543L1347,1543L1348,1542L1349,1541L1349,1541L1347,1538zM1362,1538L1362,1538L1360,1541L1351,1541L1351,1536L1353,1536L1355,1537L1358,1538L1362,1538z\"/>\r\n        <Path x:Name=\"MountainWestUS\" Fill=\"Orange\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1814,1453L1843,1453L1843,1318L1785,1319L1786,1048L1424,1048L1425,1049L1424,1125L1420,1130L1423,1134L1422,1144L1431,1146L1438,1151L1439,1157L1439,1167L1432,1175L1425,1187L1426,1195L1433,1203L1431,1207L1425,1211L1425,1283L1344,1284L1345,1333L1340,1337L1340,1342L1345,1341L1346,1357L1345,1368L1343,1378L1349,1384L1503,1522L1507,1532L1501,1544L1497,1556L1496,1564L1500,1572L1498,1581L1494,1589L1494,1589L1492,1589L1492,1589L1494,1589L1514,1597L1520,1597L1524,1599L1533,1602L1542,1607L1546,1607L1598,1627L1676,1627L1676,1612L1726,1612L1814,1612L1814,1453z\"/>\r\n        <Path x:Name=\"NorthCentralUS\" Fill=\"Green\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2153,1099L2157,1094L2180,1085L2185,1082L2181,1082L2181,1079L2179,1079L2179,1077L2174,1079L2161,1079L2159,1077L2159,1074L2155,1074L2150,1077L2148,1079L2144,1079L2142,1082L2142,1079L2135,1079L2135,1077L2133,1077L2131,1074L2127,1074L2127,1071L2124,1071L2124,1069L2122,1069L2120,1071L2118,1071L2118,1074L2116,1074L2114,1071L2114,1069L2109,1066L2107,1066L2107,1064L2101,1061L2085,1061L2085,1064L2077,1064L2077,1061L2064,1061L2064,1059L2053,1059L2051,1056L2051,1048L2049,1046L2049,1038L2040,1038L2040,1036L2038,1036L2038,1048L1786,1048L1785,1319L1843,1318L1843,1452L1845,1453L2056,1453L2057,1476L2170,1475L2170,1483L2168,1492L2175,1496L2181,1493L2185,1487L2190,1477L2190,1463L2194,1458L2202,1457L2208,1452L2208,1445L2201,1448L2198,1446L2197,1435L2200,1433L2199,1425L2195,1421L2183,1414L2177,1408L2180,1401L2184,1397L2180,1394L2178,1388L2174,1385L2167,1383L2159,1376L2159,1366L2150,1359L2142,1348L2141,1337L2148,1320L2154,1310L2155,1301L2162,1299L2172,1297L2176,1289L2180,1279L2176,1270L2163,1261L2151,1249L2149,1233L2143,1220L2134,1207L2120,1196L2103,1183L2101,1171L2103,1161L2104,1158L2100,1157L2099,1150L2109,1140L2119,1138L2119,1125L2123,1123L2122,1123L2153,1099z\"/>\r\n        <Path x:Name=\"MidwestUS\" Fill=\"Blue\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2435,1281L2421,1286L2416,1291L2409,1291L2398,1295L2394,1297L2389,1297L2382,1292L2374,1291L2366,1289L2364,1286L2364,1282L2369,1281L2371,1278L2371,1275L2373,1270L2373,1268L2378,1268L2378,1265L2382,1265L2382,1263L2384,1263L2384,1260L2389,1260L2389,1258L2391,1258L2391,1247L2393,1245L2393,1244L2390,1242L2390,1237L2383,1213L2369,1213L2366,1219L2357,1222L2351,1220L2351,1212L2357,1208L2366,1201L2367,1182L2364,1176L2366,1172L2334,1157L2321,1156L2318,1162L2322,1167L2312,1168L2309,1172L2309,1180L2304,1183L2304,1170L2301,1176L2289,1186L2286,1187L2284,1201L2280,1205L2278,1232L2285,1244L2287,1258L2282,1271L2276,1279L2257,1291L2249,1285L2245,1273L2241,1236L2245,1221L2244,1213L2250,1197L2266,1171L2267,1166L2261,1169L2243,1192L2236,1194L2242,1180L2261,1155L2267,1154L2276,1149L2273,1156L2276,1159L2284,1150L2307,1144L2320,1147L2325,1152L2330,1149L2330,1146L2343,1147L2350,1145L2345,1140L2343,1135L2343,1133L2345,1133L2345,1130L2337,1130L2334,1133L2332,1133L2331,1130L2330,1131L2322,1130L2319,1129L2323,1122L2314,1121L2308,1124L2283,1127L2276,1131L2270,1132L2262,1130L2254,1131L2252,1127L2242,1119L2232,1116L2224,1122L2224,1117L2234,1104L2243,1099L2222,1104L2213,1110L2211,1114L2198,1119L2192,1117L2186,1121L2177,1123L2171,1127L2162,1124L2156,1126L2157,1124L2163,1115L2154,1115L2141,1122L2122,1123L2122,1123L2123,1123L2119,1125L2119,1138L2109,1140L2099,1150L2100,1157L2104,1158L2103,1161L2101,1171L2103,1183L2120,1196L2134,1207L2143,1220L2149,1233L2151,1249L2163,1261L2176,1270L2180,1279L2176,1289L2172,1297L2162,1299L2155,1301L2154,1310L2148,1320L2141,1337L2142,1348L2150,1359L2159,1366L2159,1376L2167,1383L2174,1385L2178,1388L2180,1394L2184,1397L2180,1401L2177,1408L2183,1414L2195,1421L2199,1425L2200,1433L2197,1435L2198,1446L2201,1448L2208,1445L2208,1446L2209,1444L2226,1443L2230,1433L2239,1422L2246,1420L2250,1416L2256,1421L2265,1421L2273,1415L2280,1409L2285,1415L2292,1412L2293,1407L2301,1402L2308,1394L2315,1393L2327,1378L2344,1390L2365,1392L2382,1396L2387,1399L2395,1398L2399,1388L2400,1382L2408,1381L2415,1374L2431,1363L2438,1349L2442,1334L2444,1325L2448,1322L2447,1277L2446,1278L2435,1281z\"/>\r\n        <Path x:Name=\"NorthEastUS\" Fill=\"Purple\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2594,1367L2597,1370L2601,1370L2601,1375L2599,1375L2599,1377L2603,1377L2607,1372L2607,1370L2610,1367L2610,1366L2612,1365L2616,1365L2616,1362L2618,1362L2618,1360L2614,1360L2618,1357L2623,1352L2620,1352L2620,1349L2623,1344L2625,1342L2627,1334L2627,1329L2618,1329L2618,1326L2620,1321L2620,1326L2622,1324L2624,1321L2625,1324L2629,1324L2629,1321L2633,1321L2633,1324L2636,1324L2638,1321L2642,1321L2651,1319L2659,1319L2662,1316L2670,1316L2672,1313L2679,1311L2679,1309L2675,1311L2670,1311L2670,1313L2668,1314L2664,1314L2675,1306L2672,1306L2664,1311L2651,1311L2651,1314L2636,1314L2633,1316L2631,1316L2631,1314L2633,1314L2633,1311L2638,1311L2640,1309L2644,1309L2644,1306L2651,1306L2655,1301L2657,1301L2658,1303L2659,1301L2677,1301L2683,1298L2685,1298L2685,1301L2688,1301L2690,1298L2696,1298L2698,1296L2698,1286L2701,1288L2703,1288L2703,1291L2701,1293L2701,1296L2703,1293L2711,1293L2716,1291L2718,1286L2720,1288L2720,1293L2724,1293L2724,1291L2731,1291L2733,1288L2739,1288L2739,1281L2737,1281L2737,1286L2731,1286L2729,1288L2724,1286L2722,1286L2722,1281L2720,1281L2720,1278L2719,1277L2720,1275L2718,1270L2716,1270L2714,1268L2714,1270L2711,1270L2709,1268L2709,1265L2714,1260L2716,1260L2720,1258L2722,1258L2722,1255L2716,1255L2716,1245L2718,1245L2718,1242L2722,1237L2720,1237L2722,1235L2724,1235L2724,1232L2726,1232L2726,1230L2729,1230L2729,1227L2731,1227L2732,1226L2731,1224L2731,1222L2733,1219L2735,1219L2737,1217L2739,1217L2742,1219L2742,1222L2744,1219L2746,1219L2746,1217L2748,1217L2748,1214L2750,1214L2750,1217L2752,1217L2752,1214L2755,1212L2757,1212L2759,1214L2763,1212L2763,1204L2765,1199L2768,1196L2770,1196L2770,1201L2776,1201L2778,1201L2777,1199L2779,1197L2781,1199L2782,1198L2783,1196L2789,1196L2789,1199L2791,1201L2791,1199L2794,1199L2798,1194L2800,1196L2804,1194L2804,1191L2815,1191L2820,1186L2822,1186L2822,1184L2820,1184L2820,1181L2817,1179L2815,1173L2813,1173L2811,1176L2809,1173L2809,1171L2807,1171L2809,1168L2807,1163L2809,1163L2809,1161L2804,1161L2802,1158L2798,1158L2798,1150L2800,1148L2798,1138L2798,1112L2796,1112L2796,1110L2794,1110L2794,1107L2787,1105L2787,1102L2783,1102L2772,1107L2763,1107L2763,1099L2759,1099L2757,1102L2752,1105L2746,1112L2746,1115L2737,1125L2737,1128L2735,1130L2735,1133L2733,1135L2731,1135L2731,1138L2729,1140L2729,1148L2731,1148L2731,1150L2726,1156L2724,1156L2722,1158L2720,1158L2718,1161L2718,1166L2714,1171L2709,1168L2707,1171L2698,1171L2698,1176L2696,1176L2696,1179L2636,1179L2629,1181L2618,1181L2607,1179L2603,1179L2594,1184L2590,1184L2590,1186L2588,1186L2584,1189L2584,1191L2581,1191L2579,1194L2577,1194L2577,1196L2575,1196L2575,1199L2573,1199L2571,1201L2568,1201L2560,1207L2560,1209L2558,1209L2562,1212L2563,1217L2564,1222L2563,1226L2559,1228L2552,1231L2547,1233L2542,1235L2534,1237L2529,1237L2520,1234L2506,1231L2498,1233L2492,1235L2486,1239L2486,1245L2488,1247L2490,1247L2489,1249L2491,1251L2489,1252L2488,1252L2483,1256L2477,1262L2472,1265L2460,1270L2447,1278L2448,1321L2447,1353L2570,1354L2584,1343L2587,1345L2589,1344L2591,1345L2583,1352L2584,1355L2585,1359L2586,1360L2590,1365L2594,1367zM2783,1199L2781,1201L2781,1204L2783,1204L2787,1201L2787,1199L2785,1199L2783,1199zM2826,1186L2828,1187L2828,1189L2826,1191L2824,1191L2824,1186L2826,1186z\"/>\r\n        <Path x:Name=\"SouthCentralUS\" Fill=\"Aqua\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2146,1644L2140,1636L2149,1604L2154,1600L2150,1586L2144,1558L2149,1539L2161,1530L2162,1519L2174,1508L2176,1495L2175,1496L2168,1492L2170,1483L2170,1475L2057,1476L2056,1453L1845,1453L1843,1452L1843,1453L1814,1453L1814,1612C1814,1612 1726,1612 1726,1612L1728,1615L1728,1617L1730,1617L1730,1620L1732,1622L1735,1622L1735,1625L1739,1625L1741,1627L1741,1630L1743,1630L1743,1632L1745,1632L1748,1635L1750,1635L1750,1638L1754,1643L1758,1645L1763,1645L1763,1648L1765,1650L1767,1650L1769,1653L1769,1658L1774,1663L1774,1673L1778,1681L1780,1683L1782,1683L1784,1686L1786,1686L1786,1689L1789,1689L1793,1694L1795,1694L1806,1699L1808,1701L1810,1701L1812,1704L1817,1704L1819,1699L1825,1691L1825,1689L1830,1678L1834,1678L1838,1676L1841,1673L1841,1676L1856,1676L1856,1678L1864,1678L1867,1681L1867,1683L1871,1686L1873,1686L1877,1691L1882,1694L1886,1699L1886,1706L1888,1706L1888,1709L1890,1709L1890,1714L1893,1714L1893,1717L1895,1719L1895,1722L1897,1727L1899,1729L1901,1729L1901,1732L1903,1732L1906,1737L1908,1740L1908,1742L1910,1742L1910,1745L1912,1745L1912,1747L1916,1747L1916,1750L1919,1750L1919,1768L1923,1773L1925,1773L1925,1775L1927,1778L1927,1783L1929,1788L1934,1788L1938,1791L1940,1791L1942,1793L1947,1793L1951,1798L1953,1798L1958,1801L1960,1801L1960,1798L1964,1798L1968,1801L1971,1801L1975,1806L1977,1806L1977,1803L1984,1803L1984,1798L1981,1796L1981,1798L1980,1799L1979,1798L1979,1793L1977,1788L1975,1788L1975,1778L1973,1775L1973,1773L1971,1770L1971,1768L1975,1768L1975,1760L1968,1760L1968,1757L1966,1755L1968,1755L1971,1757L1973,1755L1973,1757L1977,1757L1979,1755L1978,1751L1980,1749L1982,1745L1978,1744L1977,1742L1973,1742L1973,1740L1977,1740L1981,1742L1986,1734L1981,1734L1981,1732L1984,1729L1986,1729L1988,1732L1990,1732L1994,1727L1994,1724L1992,1724L1992,1719L1994,1722L1997,1722L1997,1724L1999,1724L2003,1722L1997,1714L1997,1712L1999,1712L1999,1714L2001,1714L2001,1717L2005,1717L2005,1714L2003,1714L2003,1712L2005,1712L2007,1714L2012,1714L2012,1717L2014,1714L2016,1714L2016,1717L2018,1717L2018,1714L2020,1712L2027,1712L2033,1706L2038,1701L2040,1701L2040,1696L2046,1694L2046,1689L2042,1683L2042,1678L2044,1681L2046,1678L2051,1678L2051,1681L2048,1684L2052,1686L2057,1686L2066,1681L2075,1681L2077,1678L2098,1678L2101,1681L2103,1681L2105,1683L2111,1683L2118,1686L2122,1683L2124,1683L2122,1681L2122,1678L2129,1676L2131,1676L2131,1678L2137,1678L2140,1683L2140,1686L2142,1686L2150,1691L2144,1691L2144,1694L2146,1694L2148,1696L2155,1696L2157,1699L2163,1699L2170,1691L2170,1694L2174,1694L2174,1701L2176,1699L2179,1699L2181,1696L2181,1689L2179,1689L2176,1686L2176,1683L2179,1686L2183,1686L2187,1689L2189,1691L2187,1691L2189,1694L2194,1694L2194,1696L2196,1696L2200,1701L2201,1702L2202,1700L2203,1700L2205,1701L2209,1699L2209,1696L2205,1691L2200,1691L2192,1686L2189,1683L2189,1681L2192,1681L2196,1676L2198,1676L2198,1678L2200,1673L2198,1668L2196,1668L2194,1671L2194,1673L2187,1673L2187,1668L2181,1668L2179,1671L2176,1671L2172,1668L2170,1668L2170,1663L2174,1658L2181,1658L2181,1661L2183,1661L2187,1663L2189,1663L2194,1666L2196,1663L2197,1664L2193,1646L2146,1644z\"/>\r\n        <Path x:Name=\"EastUS\" Fill=\"Magenta\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2592,1390L2594,1385L2592,1383L2588,1372L2586,1370L2586,1366L2584,1363L2582,1360L2581,1356L2579,1351L2589,1344L2587,1345L2584,1343L2570,1354L2447,1353L2448,1322L2444,1325L2442,1334L2438,1349L2431,1363L2415,1374L2408,1381L2400,1382L2399,1388L2395,1398L2387,1399L2385,1398L2386,1409L2391,1416L2393,1426L2405,1435L2403,1445L2381,1454L2366,1467L2416,1469L2411,1480L2408,1485L2400,1486L2395,1491L2392,1486L2389,1488L2382,1495L2355,1505L2354,1514L2352,1519L2310,1520L2307,1516L2305,1519L2307,1539L2311,1567L2314,1575L2317,1581L2316,1588L2319,1597L2323,1608L2320,1617L2319,1621L2322,1629L2321,1642L2321,1647L2250,1647L2249,1654L2252,1659L2254,1655L2256,1655L2254,1658L2254,1661L2261,1661L2263,1658L2259,1658L2261,1655L2261,1653L2265,1653L2267,1655L2265,1655L2265,1658L2267,1658L2272,1655L2274,1655L2276,1658L2278,1655L2280,1655L2280,1653L2287,1653L2287,1655L2289,1655L2289,1658L2287,1658L2289,1661L2291,1661L2295,1663L2298,1663L2298,1661L2300,1661L2302,1663L2302,1666L2304,1666L2306,1668L2308,1673L2308,1676L2311,1676L2311,1677L2313,1678L2313,1681L2315,1681L2319,1678L2328,1678L2328,1676L2330,1676L2332,1673L2339,1673L2337,1671L2339,1668L2341,1668L2343,1666L2347,1668L2350,1668L2352,1671L2356,1671L2358,1673L2358,1676L2360,1676L2360,1678L2363,1681L2365,1681L2365,1686L2367,1686L2373,1694L2373,1696L2378,1696L2380,1699L2382,1699L2382,1704L2386,1706L2386,1709L2384,1709L2386,1712L2386,1722L2384,1727L2382,1729L2382,1737L2380,1737L2380,1742L2384,1747L2386,1745L2386,1740L2384,1740L2384,1734L2391,1737L2393,1737L2393,1742L2386,1750L2386,1752L2389,1755L2389,1760L2391,1765L2393,1768L2393,1770L2395,1773L2395,1775L2397,1778L2397,1775L2399,1775L2399,1770L2404,1770L2402,1773L2402,1780L2399,1778L2399,1780L2402,1783L2406,1783L2406,1785L2408,1785L2408,1796L2410,1796L2410,1803L2417,1803L2421,1806L2421,1808L2423,1808L2428,1819L2428,1821L2430,1821L2430,1824L2428,1824L2428,1829L2441,1829L2443,1826L2447,1826L2449,1824L2449,1816L2451,1816L2451,1811L2454,1808L2456,1803L2458,1768L2456,1768L2456,1765L2454,1763L2451,1755L2449,1752L2449,1745L2445,1740L2443,1734L2441,1724L2441,1719L2443,1719L2443,1714L2441,1712L2436,1704L2432,1699L2432,1696L2425,1678L2425,1676L2423,1673L2423,1668L2421,1663L2421,1655L2419,1653L2419,1648L2418,1646L2418,1641L2419,1640L2421,1638L2421,1635L2419,1635L2419,1630L2421,1630L2421,1632L2423,1630L2423,1625L2425,1622L2423,1622L2423,1620L2428,1620L2428,1615L2432,1610L2434,1610L2436,1607L2436,1604L2434,1604L2434,1602L2436,1599L2437,1600L2438,1599L2441,1599L2441,1597L2445,1597L2447,1594L2447,1589L2451,1589L2454,1587L2458,1584L2462,1584L2462,1579L2467,1579L2471,1574L2471,1571L2477,1571L2477,1569L2482,1569L2482,1561L2488,1553L2488,1551L2490,1551L2490,1548L2493,1548L2499,1543L2514,1543L2519,1538L2519,1533L2521,1530L2523,1530L2523,1528L2527,1528L2527,1525L2529,1523L2530,1524L2534,1520L2536,1520L2538,1518L2540,1518L2549,1515L2551,1513L2553,1515L2558,1515L2560,1513L2560,1510L2562,1510L2564,1507L2560,1507L2558,1510L2558,1507L2553,1507L2553,1505L2555,1502L2551,1502L2551,1500L2558,1500L2558,1497L2555,1497L2547,1495L2542,1492L2542,1490L2545,1490L2546,1492L2553,1492L2553,1490L2555,1490L2555,1495L2566,1495L2568,1492L2571,1492L2571,1490L2573,1487L2577,1487L2578,1485L2578,1479L2577,1477L2575,1474L2573,1477L2571,1477L2571,1474L2562,1474L2562,1477L2560,1477L2560,1474L2557,1473L2555,1475L2548,1475L2550,1472L2552,1471L2554,1472L2560,1472L2560,1469L2562,1469L2564,1472L2566,1471L2569,1470L2568,1468L2569,1466L2571,1467L2573,1467L2576,1467L2576,1465L2574,1462L2572,1460L2574,1459L2574,1457L2573,1451L2573,1446L2571,1446L2571,1444L2562,1444L2560,1445L2558,1444L2555,1441L2553,1441L2553,1439L2551,1436L2547,1434L2553,1434L2553,1436L2558,1441L2562,1441L2564,1439L2560,1434L2560,1428L2562,1431L2564,1431L2564,1426L2560,1423L2560,1421L2564,1413L2564,1411L2560,1411L2558,1408L2553,1405L2551,1403L2545,1403L2542,1399L2538,1397L2532,1397L2534,1388L2541,1381L2543,1382L2536,1389L2536,1393L2542,1395L2547,1400L2555,1400L2556,1403L2560,1406L2561,1403L2560,1403L2560,1400L2559,1398L2560,1398L2560,1395L2558,1393L2556,1392L2555,1390L2555,1380L2558,1380L2560,1375L2560,1372L2558,1372L2558,1370L2555,1370L2555,1367L2558,1367L2560,1365L2561,1364L2560,1362L2564,1362L2564,1365L2566,1365L2564,1370L2564,1377L2566,1380L2567,1381L2565,1381L2564,1383L2561,1383L2562,1384L2564,1385L2566,1385L2569,1389L2568,1390L2566,1390L2564,1393L2562,1393L2564,1398L2565,1398L2566,1398L2568,1400L2571,1400L2572,1401L2572,1402L2575,1405L2575,1411L2581,1411L2579,1413L2579,1416L2575,1421L2573,1421L2573,1426L2571,1431L2571,1434L2573,1436L2575,1434L2575,1428L2579,1425L2579,1426L2581,1426L2581,1423L2584,1418L2584,1416L2586,1416L2588,1411L2588,1405L2590,1405L2592,1400L2594,1400L2597,1398L2597,1390L2592,1390z\"/>\r\n        <Path x:Name=\"SouthEastUS\" Fill=\"Red\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2250,1647L2321,1647L2321,1642L2322,1629L2319,1621L2320,1617L2323,1608L2319,1597L2316,1588L2317,1581L2314,1575L2311,1567L2307,1539L2305,1519L2307,1516L2310,1520L2352,1519L2354,1514L2355,1505L2382,1495L2389,1488L2392,1486L2395,1491L2400,1486L2408,1485L2411,1480L2416,1469L2366,1467L2381,1454L2403,1445L2405,1435L2393,1426L2391,1416L2386,1409L2385,1398L2382,1396L2365,1392L2344,1390L2327,1378L2315,1393L2308,1394L2301,1402L2293,1407L2292,1412L2285,1415L2280,1409L2273,1415L2265,1421L2256,1421L2250,1416L2246,1420L2239,1422L2230,1433L2226,1443L2209,1444L2208,1446L2208,1452L2202,1457L2194,1458L2190,1463L2190,1477L2185,1487L2181,1493L2176,1495L2174,1508L2162,1519L2161,1530L2149,1539L2144,1558L2150,1586L2154,1600L2149,1604L2140,1636L2146,1644L2193,1646L2197,1664L2200,1661L2202,1661L2211,1658L2212,1657L2213,1658L2222,1658L2224,1661L2226,1658L2233,1658L2233,1661L2235,1661L2235,1650L2237,1648L2239,1648L2239,1658L2241,1658L2243,1661L2241,1663L2248,1663L2252,1659L2249,1654L2250,1647z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3280,2589L3283,2590L3284,2588L3284,2585L3284,2582L3282,2580L3282,2577L3279,2576L3278,2578L3278,2580L3278,2582L3280,2589zM3283,2644L3282,2646L3283,2649L3295,2649L3304,2644L3303,2638L3300,2637L3297,2640L3286,2643L3283,2644zM3009,3062L3015,3058L3016,3051L3022,3043L3014,3027L3015,3008L3008,3000L2990,3001L2982,2995L2976,2992L2974,2963L2975,2944L2975,2932L3057,2928L3063,2900L3090,2953L3119,2963L3291,2964L3286,2989L3278,3004L3276,3035L3280,3058L3290,3049L3287,3060L3309,3067L3317,3059L3324,3055L3330,3070L3345,3068L3355,3072L3395,3059L3395,3042L3399,3033L3400,3020L3388,3014L3389,3003L3396,2997L3394,2988L3405,2979L3389,2955L3370,2935L3376,2928L3377,2918L3383,2917L3389,2920L3390,2913L3383,2909L3385,2899L3378,2906L3359,2887L3354,2841L3345,2824L3332,2827L3325,2818L3343,2808L3368,2772L3368,2756L3383,2732L3395,2698L3401,2686L3391,2682L3388,2679L3368,2668L3352,2666L3351,2668L3344,2673L3325,2703L3320,2704L3312,2717L3308,2732L3304,2733L3308,2713L3313,2702L3322,2697L3335,2664L3328,2656L3314,2654L3309,2657L3306,2659L3282,2654L3279,2656L3276,2656L3273,2660L3272,2668L3271,2671L3268,2670L3270,2663L3270,2658L3273,2655L3274,2653L3273,2651L3270,2650L3267,2650L3265,2653L3264,2658L3262,2662L3259,2665L3258,2670L3255,2669L3255,2664L3259,2659L3259,2656L3265,2645L3271,2643L3276,2637L3278,2631L3281,2630L3283,2627L3285,2622L3294,2617L3294,2614L3296,2612L3294,2612L3294,2609L3296,2609L3296,2599L3292,2594L3287,2591L3279,2591L3279,2589L3277,2584L3274,2581L3270,2571L3270,2563L3268,2561L3268,2558L3266,2551L3264,2551L3264,2525L3259,2520L3259,2517L3251,2507L3248,2507L3248,2510L3246,2512L3246,2520L3244,2520L3244,2522L3242,2522L3242,2525L3238,2530L3238,2533L3233,2538L3233,2543L3231,2545L3229,2545L3227,2548L3227,2556L3225,2558L3222,2563L3222,2568L3220,2568L3220,2571L3216,2576L3212,2579L3212,2581L3209,2581L3207,2579L3203,2579L3203,2576L3201,2576L3201,2573L3196,2579L3194,2579L3190,2576L3190,2573L3188,2573L3184,2576L3184,2579L3179,2581L3173,2581L3168,2579L3166,2579L3166,2576L3162,2576L3162,2571L3158,2571L3155,2568L3151,2568L3134,2573L3129,2571L3129,2568L3127,2568L3123,2573L3123,2579L3125,2579L3129,2584L3129,2589L3127,2591L3123,2591L3121,2589L3097,2589L3097,2586L3093,2586L3093,2589L3090,2586L3088,2586L3086,2589L3086,2591L3084,2594L3084,2596L3080,2596L3077,2594L3077,2596L3073,2596L3071,2599L3071,2602L3067,2602L3062,2599L3060,2602L3060,2604L3056,2604L3058,2607L3058,2609L3051,2609L3051,2612L3045,2612L3045,2609L3043,2609L3041,2607L3036,2607L3032,2599L3030,2596L3028,2596L3025,2594L3023,2594L3025,2591L3021,2591L3021,2584L3023,2579L3023,2576L3019,2576L3019,2571L3017,2568L3017,2566L3015,2563L3015,2556L3017,2553L3017,2545L3021,2540L3021,2538L3019,2535L3028,2525L3028,2520L3023,2515L3023,2507L3021,2505L3010,2505L3010,2502L3012,2502L3012,2500L3015,2497L3015,2484L3012,2482L3012,2479L3008,2479L3006,2482L2997,2482L2999,2487L2999,2489L2997,2492L2997,2494L2995,2494L2991,2497L2989,2500L2989,2505L2978,2505L2973,2507L2973,2512L2965,2512L2965,2515L2958,2515L2958,2517L2952,2517L2952,2515L2947,2515L2943,2520L2939,2520L2939,2533L2937,2533L2934,2535L2926,2525L2926,2522L2919,2522L2919,2525L2917,2525L2915,2522L2906,2522L2906,2525L2902,2525L2902,2520L2898,2515L2891,2515L2889,2517L2887,2517L2887,2512L2882,2512L2882,2515L2885,2515L2885,2520L2887,2520L2887,2522L2891,2528L2893,2528L2898,2533L2898,2535L2900,2535L2898,2538L2898,2548L2900,2551L2900,2553L2902,2556L2902,2558L2904,2563L2904,2568L2902,2568L2902,2571L2921,2571L2921,2581L2915,2581L2915,2584L2911,2586L2904,2586L2904,2589L2902,2589L2902,2599L2900,2599L2895,2604L2893,2602L2889,2604L2889,2607L2887,2607L2885,2609L2885,2612L2882,2612L2882,2609L2880,2609L2876,2614L2872,2614L2872,2622L2867,2622L2865,2624L2865,2627L2863,2630L2861,2630L2861,2624L2863,2624L2863,2622L2861,2622L2861,2619L2856,2619L2852,2622L2850,2622L2850,2624L2848,2624L2846,2627L2839,2627L2824,2612L2817,2612L2817,2604L2820,2604L2820,2599L2817,2599L2817,2594L2815,2591L2815,2589L2813,2589L2813,2586L2811,2584L2811,2581L2807,2581L2807,2584L2804,2584L2802,2586L2802,2589L2800,2591L2798,2591L2798,2594L2791,2594L2791,2589L2789,2589L2789,2586L2787,2586L2787,2589L2785,2591L2785,2594L2746,2594L2744,2596L2742,2596L2742,2617L2757,2617L2761,2622L2761,2630L2759,2632L2757,2632L2757,2630L2752,2627L2746,2630L2744,2630L2744,2632L2735,2632L2735,2658L2737,2658L2744,2665L2746,2665L2746,2668L2748,2668L2748,2675L2750,2681L2750,2683L2752,2683L2752,2688L2755,2691L2755,2696L2752,2701L2739,2790L2737,2793L2731,2793L2729,2790L2729,2788L2726,2785L2724,2785L2724,2788L2714,2788L2714,2790L2711,2795L2709,2795L2707,2793L2705,2793L2703,2795L2698,2795L2692,2798L2685,2798L2679,2806L2675,2806L2675,2808L2672,2806L2672,2808L2670,2808L2670,2811L2668,2813L2664,2816L2662,2818L2657,2818L2657,2826L2655,2828L2655,2839L2653,2841L2651,2841L2651,2844L2649,2849L2649,2857L2651,2859L2651,2864L2649,2864L2649,2867L2644,2867L2638,2872L2633,2877L2631,2882L2631,2885L2633,2885L2633,2892L2629,2892L2629,2895L2627,2897L2627,2900L2629,2900L2629,2902L2631,2902L2631,2905L2636,2905L2636,2908L2633,2908L2633,2913L2636,2913L2638,2918L2638,2920L2640,2923L2640,2925L2642,2928L2644,2933L2646,2936L2649,2936L2651,2938L2653,2943L2655,2943L2655,2951L2651,2956L2649,2956L2649,2959L2662,2959L2666,2961L2672,2961L2672,2964L2675,2966L2675,2971L2677,2971L2677,2979L2701,2979L2705,2976L2705,2974L2707,2974L2709,2971L2711,2971L2714,2966L2716,2966L2722,2959L2722,2964L2720,2964L2720,3010L2724,3010L2724,3012L2733,3012L2735,3010L2739,3010L2739,3007L2744,3010L2763,3010L2770,3012L2772,3015L2778,3015L2778,3012L2785,3012L2785,3010L2789,3004L2789,3002L2791,3002L2791,2999L2798,2999L2800,3002L2804,2997L2804,2994L2807,2994L2811,2989L2815,2989L2817,2987L2820,2987L2822,2984L2822,2981L2824,2981L2828,2976L2830,2976L2830,2974L2837,2974L2843,2971L2854,2971L2859,2974L2861,2974L2861,2969L2865,2969L2867,2971L2867,2989L2865,2989L2865,2994L2863,2994L2863,2999L2865,3002L2867,3007L2867,3012L2865,3015L2865,3020L2867,3025L2867,3027L2869,3027L2872,3030L2872,3033L2869,3033L2869,3035L2872,3035L2874,3033L2874,3035L2876,3038L2876,3045L2882,3045L2882,3048L2887,3050L2889,3050L2889,3055L2891,3055L2891,3058L2893,3058L2895,3061L2908,3061L2908,3058L2913,3058L2919,3063L2919,3066L2930,3066L2930,3068L2934,3073L2937,3073L2939,3076L2941,3076L2941,3078L2947,3081L2956,3081L2956,3086L2958,3089L2960,3089L2963,3091L2963,3094L2986,3094L2989,3096L2993,3099L2995,3099L2996,3100L3007,3081L3009,3062zM3296,2652L3298,2655L3304,2655L3308,2654L3311,2652L3310,2649L3304,2648L3301,2649L3296,2652zM3290,2635L3282,2642L3279,2646L3281,2649L3280,2651L3276,2651L3274,2646L3279,2640L3281,2633L3287,2630L3290,2631L3290,2635z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3197,3403L3209,3388L3241,3359L3265,3310L3278,3270L3322,3252L3352,3247L3360,3233L3369,3215L3365,3211L3358,3208L3367,3200L3369,3189L3362,3182L3383,3155L3380,3143L3377,3134L3388,3131L3389,3117L3400,3129L3406,3111L3395,3095L3400,3079L3399,3069L3403,3063L3395,3056L3395,3059L3355,3072L3345,3068L3330,3070L3324,3055L3317,3059L3309,3067L3287,3060L3290,3049L3280,3058L3276,3035L3278,3004L3286,2989L3291,2964L3119,2963L3090,2953L3063,2900L3057,2928L2975,2932L2975,2944L2974,2963L2976,2992L2982,2995L2990,3001L3008,3000L3015,3008L3014,3027L3022,3043L3016,3051L3015,3058L3009,3062L3007,3081L2996,3100L2997,3101L3002,3101L3002,3104L3004,3109L3004,3112L3002,3112L3002,3119L3004,3119L3008,3129L3008,3145L2999,3145L3004,3150L3008,3157L3010,3183L3060,3186L3060,3183L3062,3183L3062,3188L3060,3191L3060,3193L3058,3193L3058,3208L3060,3211L3060,3216L3062,3216L3067,3221L3069,3221L3071,3224L3073,3221L3073,3224L3077,3226L3077,3234L3082,3244L3084,3247L3084,3249L3082,3249L3082,3254L3077,3270L3080,3275L3077,3275L3075,3277L3075,3280L3071,3288L3069,3295L3075,3305L3073,3305L3067,3310L3067,3316L3069,3316L3069,3318L3071,3321L3071,3328L3073,3328L3075,3328L3075,3349L3073,3351L3073,3354L3071,3354L3073,3359L3073,3364L3071,3369L3071,3374L3080,3374L3082,3377L3095,3377L3099,3379L3106,3379L3106,3377L3108,3377L3108,3379L3110,3377L3110,3374L3114,3374L3114,3372L3116,3374L3116,3377L3121,3379L3129,3379L3134,3384L3134,3390L3136,3390L3136,3392L3138,3395L3136,3395L3136,3400L3138,3405L3138,3415L3140,3415L3138,3418L3140,3423L3140,3425L3142,3425L3142,3435L3158,3435L3158,3433L3164,3430L3166,3430L3171,3433L3174,3437L3185,3431L3197,3403z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3325,3449L3310,3446L3303,3436L3306,3422L3298,3403L3283,3404L3263,3393L3245,3386L3227,3389L3210,3386L3209,3388L3197,3403L3185,3431L3174,3437L3175,3438L3173,3438L3173,3446L3175,3446L3175,3451L3173,3451L3173,3458L3168,3469L3168,3471L3171,3474L3168,3479L3166,3479L3166,3481L3164,3484L3164,3486L3166,3486L3168,3489L3171,3489L3171,3486L3177,3486L3179,3484L3186,3489L3186,3499L3188,3504L3192,3509L3192,3512L3190,3512L3190,3522L3188,3525L3190,3527L3190,3532L3188,3535L3188,3537L3186,3540L3181,3540L3181,3543L3177,3543L3175,3548L3173,3548L3173,3550L3166,3550L3164,3553L3160,3553L3158,3555L3158,3558L3155,3558L3153,3560L3153,3563L3145,3563L3145,3565L3142,3565L3142,3571L3136,3571L3136,3573L3132,3573L3132,3576L3136,3576L3136,3581L3134,3581L3134,3578L3129,3578L3127,3583L3125,3586L3125,3588L3121,3591L3119,3591L3119,3594L3114,3601L3112,3604L3110,3604L3108,3606L3108,3611L3106,3611L3103,3614L3101,3619L3097,3622L3097,3624L3090,3624L3090,3632L3088,3632L3084,3637L3082,3637L3082,3639L3084,3642L3093,3642L3095,3639L3095,3637L3097,3637L3099,3634L3101,3634L3103,3637L3108,3639L3116,3650L3119,3650L3127,3660L3127,3662L3125,3662L3125,3668L3132,3668L3136,3662L3136,3660L3138,3660L3145,3668L3147,3673L3151,3675L3155,3675L3155,3678L3158,3678L3160,3680L3166,3680L3168,3683L3168,3688L3171,3688L3173,3690L3177,3693L3179,3693L3184,3696L3186,3696L3186,3698L3192,3706L3192,3711L3194,3711L3194,3713L3203,3718L3205,3718L3208,3717L3216,3705L3219,3705L3219,3722L3215,3724L3213,3729L3211,3726L3207,3724L3206,3727L3196,3737L3197,3740L3196,3746L3194,3746L3194,3752L3199,3754L3201,3754L3201,3752L3203,3752L3205,3749L3212,3744L3220,3734L3222,3729L3222,3726L3225,3724L3225,3718L3229,3708L3237,3701L3239,3697L3238,3691L3233,3693L3231,3691L3231,3686L3234,3687L3237,3687L3237,3683L3238,3675L3248,3670L3254,3659L3255,3654L3259,3643L3256,3639L3258,3636L3261,3640L3264,3646L3270,3644L3273,3645L3273,3649L3272,3654L3269,3658L3266,3660L3264,3663L3260,3665L3259,3673L3257,3679L3253,3680L3247,3688L3241,3690L3242,3693L3242,3693L3246,3693L3251,3688L3259,3683L3274,3665L3274,3662L3279,3655L3283,3650L3283,3647L3285,3645L3285,3642L3287,3642L3287,3637L3290,3629L3292,3627L3294,3622L3296,3619L3300,3609L3302,3608L3303,3606L3309,3599L3322,3588L3326,3583L3331,3573L3331,3527L3329,3525L3329,3520L3333,3513L3335,3505L3331,3501L3332,3496L3336,3491L3336,3486L3330,3486L3329,3483L3335,3482L3336,3476L3339,3477L3338,3483L3341,3483L3344,3483L3346,3476L3350,3473L3351,3470L3336,3468L3325,3449zM3333,3548L3338,3546L3334,3559L3332,3559L3333,3548z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3714,2902L3714,2887L3710,2869L3710,2862L3708,2854L3705,2851L3705,2846L3703,2839L3703,2834L3699,2823L3697,2821L3695,2821L3692,2818L3686,2818L3684,2816L3682,2816L3679,2818L3662,2818L3660,2816L3658,2816L3658,2813L3649,2813L3647,2811L3647,2806L3645,2806L3643,2803L3636,2803L3636,2800L3634,2800L3634,2798L3632,2795L3628,2793L3621,2785L3621,2783L3619,2780L3617,2780L3612,2772L3608,2772L3602,2767L3599,2765L3599,2762L3595,2762L3589,2755L3584,2755L3582,2752L3578,2749L3576,2747L3573,2747L3571,2744L3565,2744L3563,2742L3556,2742L3556,2744L3526,2745L3510,2738L3502,2739L3498,2737L3495,2737L3495,2734L3491,2734L3489,2732L3485,2732L3482,2729L3470,2728L3470,2724L3468,2723L3464,2726L3462,2729L3460,2735L3457,2738L3456,2743L3454,2742L3452,2740L3456,2736L3458,2731L3457,2729L3455,2732L3449,2733L3447,2749L3444,2748L3445,2745L3444,2741L3441,2740L3447,2730L3448,2724L3445,2722L3440,2722L3443,2720L3448,2719L3447,2716L3444,2713L3438,2700L3429,2699L3425,2696L3423,2703L3421,2701L3421,2695L3401,2686L3395,2698L3383,2732L3368,2756L3368,2772L3343,2808L3325,2818L3332,2827L3345,2824L3354,2841L3359,2887L3378,2906L3385,2899L3383,2909L3390,2913L3389,2920L3383,2917L3377,2918L3376,2928L3370,2935L3389,2955L3405,2979L3394,2988L3396,2997L3389,3003L3388,3014L3400,3020L3399,3033L3395,3042L3395,3056L3403,3063L3399,3069L3400,3079L3395,3095L3406,3111L3400,3129L3398,3127L3400,3138L3416,3132L3439,3120L3438,3110L3454,3108L3463,3120L3478,3114L3492,3122L3506,3135L3512,3129L3530,3147L3538,3157L3561,3156L3571,3166L3566,3178L3568,3189L3555,3200L3559,3219L3565,3224L3562,3232L3581,3245L3586,3237L3591,3237L3594,3230L3593,3229L3593,3208L3595,3206L3595,3193L3597,3191L3597,3183L3602,3170L3602,3165L3599,3163L3599,3150L3597,3142L3597,3119L3599,3113L3599,3107L3597,3104L3597,3101L3599,3099L3599,3083L3604,3078L3604,3076L3606,3076L3606,3071L3604,3071L3606,3068L3606,3063L3608,3063L3608,3068L3612,3068L3612,3073L3610,3076L3617,3076L3617,3073L3628,3061L3628,3058L3632,3053L3634,3048L3636,3045L3636,3043L3638,3040L3638,3038L3640,3031L3642,3028L3644,3023L3648,3018L3649,3012L3651,3011L3656,3007L3656,3004L3658,3002L3666,2997L3669,2994L3671,2994L3673,2992L3673,2987L3675,2987L3679,2981L3684,2974L3686,2971L3686,2969L3690,2966L3701,2953L3701,2951L3703,2946L3705,2943L3705,2938L3708,2936L3708,2933L3710,2923L3712,2920L3712,2915L3714,2915L3714,2908L3712,2908L3712,2905L3714,2902z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3565,3224L3559,3219L3555,3200L3568,3189L3566,3178L3571,3166L3561,3156L3538,3157L3530,3147L3512,3129L3506,3135L3492,3122L3478,3114L3463,3120L3454,3108L3438,3110L3439,3120L3416,3132L3400,3138L3398,3127L3389,3117L3388,3131L3377,3134L3380,3143L3383,3155L3362,3182L3369,3189L3367,3200L3358,3208L3365,3211L3369,3215L3360,3233L3352,3247L3322,3252L3278,3270L3265,3310L3241,3359L3210,3386L3227,3389L3245,3386L3263,3393L3283,3404L3298,3403L3306,3422L3303,3436L3310,3446L3325,3449L3336,3468L3351,3470L3352,3466L3355,3463L3357,3463L3361,3458L3363,3458L3368,3456L3370,3453L3376,3448L3376,3446L3378,3446L3381,3443L3387,3438L3391,3438L3391,3433L3396,3433L3396,3438L3398,3435L3400,3435L3402,3430L3404,3430L3404,3428L3413,3428L3413,3430L3417,3430L3419,3432L3424,3433L3424,3428L3420,3425L3420,3423L3424,3423L3428,3420L3430,3420L3430,3418L3433,3415L3443,3415L3446,3412L3443,3410L3439,3410L3439,3407L3441,3405L3446,3405L3450,3400L3452,3405L3456,3405L3456,3402L3459,3402L3463,3400L3465,3400L3469,3405L3478,3405L3480,3402L3482,3402L3482,3400L3480,3397L3480,3395L3485,3392L3487,3392L3487,3395L3485,3397L3484,3398L3485,3400L3485,3402L3511,3402L3515,3400L3515,3387L3519,3384L3524,3379L3528,3379L3528,3377L3534,3377L3537,3374L3543,3372L3543,3359L3541,3356L3541,3354L3543,3351L3543,3344L3545,3344L3545,3341L3547,3341L3547,3336L3552,3331L3552,3333L3554,3333L3560,3321L3565,3316L3565,3308L3567,3305L3567,3303L3569,3298L3571,3298L3571,3295L3573,3295L3576,3293L3578,3288L3578,3285L3580,3282L3578,3280L3578,3254L3580,3252L3580,3247L3581,3245L3562,3232L3565,3224z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8687,1033L8681,1015L8676,1010L8676,1008L8674,1008L8674,1005L8672,1000L8672,990L8670,990L8670,985L8668,982L8668,975L8665,975L8663,972L8665,972L8665,967L8663,962L8661,959L8659,954L8659,957L8657,957L8657,939L8659,931L8661,931L8661,913L8659,908L8659,906L8655,906L8657,903L8657,901L8655,901L8652,895L8650,895L8650,885L8652,885L8652,880L8648,875L8646,875L8646,872L8644,872L8642,875L8644,875L8644,878L8635,878L8642,885L8644,885L8644,893L8642,895L8639,895L8639,901L8644,901L8639,903L8639,906L8631,906L8631,901L8626,903L8624,903L8618,906L8620,908L8620,913L8622,913L8622,921L8620,924L8620,936L8618,936L8616,939L8616,954L8618,957L8620,957L8620,962L8624,967L8626,967L8626,969L8631,977L8631,980L8633,980L8633,982L8631,982L8631,985L8626,990L8626,1000L8629,1003L8629,1036L8626,1036L8626,1048L8624,1051L8624,1054L8622,1054L8622,1056L8620,1056L8620,1059L8622,1059L8622,1064L8626,1069L8629,1069L8629,1079L8631,1082L8631,1084L8629,1084L8629,1087L8626,1087L8624,1092L8624,1107L8626,1107L8626,1115L8624,1117L8620,1128L8620,1135L8622,1138L8622,1145L8626,1150L8631,1145L8631,1140L8637,1128L8637,1125L8642,1125L8644,1122L8646,1122L8646,1128L8663,1128L8663,1130L8661,1133L8661,1135L8663,1135L8663,1140L8668,1140L8670,1135L8668,1133L8668,1122L8665,1120L8663,1122L8663,1125L8657,1125L8655,1120L8657,1117L8655,1117L8652,1107L8650,1102L8648,1102L8646,1099L8644,1099L8642,1094L8642,1092L8639,1092L8639,1082L8642,1079L8642,1074L8644,1071L8646,1066L8646,1064L8648,1059L8652,1054L8652,1043L8655,1043L8657,1041L8659,1041L8664,1038L8672,1038L8676,1041L8683,1041L8687,1046L8689,1046L8689,1048L8698,1056L8698,1063L8703,1063L8703,1054L8687,1041L8687,1033zM8509,850L8505,847L8501,847L8501,850L8494,857L8492,857L8492,860L8494,860L8499,857L8501,857L8503,862L8503,865L8507,865L8507,862L8512,860L8514,857L8514,855L8516,855L8516,852L8520,852L8516,850L8509,850zM8743,1196L8739,1196L8737,1199L8737,1201L8735,1204L8733,1204L8730,1207L8730,1209L8728,1209L8728,1212L8726,1212L8726,1214L8724,1214L8722,1217L8720,1217L8720,1222L8724,1224L8724,1217L8728,1217L8728,1214L8730,1214L8730,1212L8735,1209L8739,1204L8746,1204L8750,1201L8750,1199L8743,1199L8743,1196zM9369,365L9367,362L9350,362L9345,365L9343,365L9341,368L9345,370L9350,370L9350,373L9356,373L9365,375L9382,375L9382,370L9387,370L9387,368L9384,365L9369,365zM9742,316L9735,312L9725,311L9716,309L9707,309L9699,310L9690,310L9682,310L9676,314L9667,315L9661,318L9655,320L9649,321L9645,326L9642,329L9645,333L9648,336L9651,335L9659,334L9665,334L9670,334L9676,333L9679,330L9686,330L9698,332L9705,331L9712,330L9726,329L9738,327L9746,325L9751,322L9750,319L9742,316zM8488,850L8477,855L8477,857L8479,857L8480,855L8481,855L8488,855L8492,850L8488,850zM8849,1145L8845,1145L8845,1148L8843,1148L8843,1150L8839,1153L8836,1153L8834,1158L8832,1161L8834,1161L8839,1158L8841,1156L8843,1156L8847,1153L8849,1153L8852,1150L8852,1148L8854,1148L8854,1145L8856,1145L8858,1143L8860,1143L8860,1140L8856,1140L8849,1145zM9248,714L9246,717L9242,719L9237,719L9235,722L9231,722L9231,725L9229,725L9229,727L9226,730L9224,734L9218,737L9220,737L9220,740L9222,740L9222,737L9224,737L9233,732L9235,730L9239,730L9242,727L9255,727L9255,719L9252,714L9248,714zM9018,992L9018,995L9025,995L9027,992L9027,987L9023,987L9018,992zM9016,990L9014,990L9014,992L9010,992L9010,997L9008,1000L9008,1003L9003,1003L9003,1005L8997,1005L8992,1008L8992,1015L8997,1015L8999,1013L9001,1013L9003,1010L9008,1010L9018,1000L9016,992L9016,990zM9306,857L9306,855L9304,855L9302,852L9298,850L9298,842L9287,842L9287,844L9289,844L9291,847L9293,847L9293,852L9296,855L9300,857L9302,857L9302,860L9304,860L9306,862L9311,862L9309,857L9306,857zM8175,241L8184,243L8192,243L8195,240L8177,239L8175,241zM8975,1036L8975,1041L8977,1041L8979,1038L8982,1038L8982,1037L8983,1035L8984,1028L8982,1028L8975,1036zM8806,1166L8804,1166L8801,1170L8800,1171L8791,1171L8791,1166L8789,1166L8789,1168L8787,1168L8789,1171L8789,1173L8785,1173L8785,1176L8782,1176L8782,1179L8778,1179L8778,1181L8774,1184L8772,1184L8769,1186L8767,1186L8767,1191L8759,1196L8759,1199L8763,1199L8763,1196L8767,1196L8767,1194L8772,1194L8772,1191L8776,1186L8778,1186L8780,1184L8780,1181L8789,1181L8789,1179L8791,1179L8793,1176L8798,1173L8802,1173L8803,1173L8804,1171L8806,1171L8808,1168L8810,1168L8810,1171L8813,1171L8813,1168L8815,1168L8815,1163L8810,1163L8806,1166zM9970,579L9970,577L9962,577L9957,574L9957,572L9953,572L9951,569L9938,569L9938,572L9916,572L9914,569L9914,566L9912,566L9910,569L9910,572L9907,572L9907,577L9910,577L9910,579L9925,579L9927,577L9938,577L9940,579L9944,579L9953,582L9953,584L9957,584L9959,587L9964,587L9966,589L9966,592L9970,592L9970,589L9972,589L9972,587L9977,584L9991,585L9994,584L9994,582L9990,579L9970,579zM9500,933L9495,935L9495,940L9502,940L9510,938L9511,934L9507,932L9500,933zM8495,881L8496,880L8501,880L8503,878L8507,875L8496,875L8494,878L8492,878L8488,880L8490,883L8490,885L8494,885L8494,883L8495,881zM9501,920L9496,916L9494,918L9491,916L9476,917L9471,920L9467,920L9468,923L9473,924L9480,929L9487,927L9499,926L9501,920zM9348,865L9346,862L9342,859L9339,857L9338,855L9334,855L9333,856L9331,859L9343,866L9345,869L9349,871L9352,870L9351,867L9348,865zM8314,1260L8311,1264L8308,1258L8308,1258L8306,1255L8304,1255L8304,1252L8306,1252L8310,1250L8321,1250L8323,1247L8323,1245L8325,1240L8327,1237L8327,1230L8325,1230L8325,1212L8327,1212L8327,1209L8325,1207L8323,1194L8321,1189L8321,1186L8319,1186L8319,1184L8321,1184L8323,1181L8323,1184L8325,1184L8327,1181L8332,1181L8336,1176L8338,1176L8338,1173L8343,1168L8345,1168L8345,1171L8347,1171L8351,1173L8358,1173L8369,1179L8375,1179L8377,1176L8377,1166L8379,1166L8379,1163L8382,1163L8386,1161L8388,1161L8388,1150L8392,1150L8392,1148L8395,1145L8395,1143L8397,1140L8399,1140L8399,1138L8401,1135L8401,1133L8399,1133L8399,1128L8403,1128L8403,1120L8405,1115L8405,1112L8408,1112L8410,1110L8408,1110L8408,1105L8412,1099L8418,1099L8423,1092L8425,1092L8425,1089L8421,1089L8418,1084L8418,1079L8421,1079L8421,1074L8423,1074L8421,1071L8416,1071L8416,1069L8414,1069L8408,1071L8403,1071L8399,1074L8395,1074L8392,1077L8390,1077L8390,1079L8377,1079L8371,1082L8366,1087L8364,1087L8364,1089L8362,1089L8362,1092L8358,1092L8358,1089L8356,1089L8353,1092L8334,1092L8334,1089L8327,1089L8327,1092L8317,1092L8317,1089L8319,1089L8317,1087L8317,1084L8315,1084L8315,1082L8312,1082L8310,1079L8310,1077L8312,1077L8315,1071L8306,1061L8308,1059L8308,1056L8310,1056L8310,1054L8297,1054L8295,1051L8289,1048L8289,1046L8284,1043L8284,1041L8280,1041L8280,1038L8278,1038L8278,1036L8269,1036L8267,1038L8265,1038L8265,1036L8263,1036L8258,1031L8230,1031L8228,1028L8228,1026L8226,1026L8226,1023L8221,1023L8221,1013L8224,1013L8224,1008L8217,1008L8217,995L8215,995L8217,992L8213,990L8213,987L8211,985L8206,982L8206,977L8204,977L8204,975L8202,975L8204,972L8206,972L8206,969L8202,969L8200,964L8200,959L8198,957L8193,954L8193,949L8195,949L8195,946L8193,946L8191,944L8189,944L8191,941L8191,939L8189,939L8189,936L8187,936L8187,934L8185,934L8182,931L8182,934L8180,934L8180,929L8182,929L8182,926L8180,926L8176,924L8174,921L8174,918L8169,916L8163,916L8163,913L8161,913L8156,911L8154,911L8152,913L8143,913L8143,911L8139,911L8139,913L8137,911L8135,911L8135,908L8133,908L8133,906L8128,906L8128,908L8126,906L8124,906L8124,903L8122,903L8115,901L8102,901L8102,903L8076,903L8072,906L8065,906L8059,890L8068,874L8063,851L8040,839L8012,830L8003,804L7989,779L7966,723L7934,721L7906,691L7848,691L7809,737L7783,721L7753,728L7718,730L7746,666L7725,649L7725,622L7714,594L7700,564L7667,547L7628,531L7644,499L7633,478L7607,425L7646,413L7640,339L7623,318L7714,300L7739,260L7790,233L7834,217L7834,217L7836,219L7833,220L7831,223L7833,225L7886,240L7892,240L7896,243L7922,243L7931,245L7984,245L7983,242L7987,241L7990,239L7989,235L7994,233L8001,233L8001,237L7999,239L7994,238L7995,241L7999,243L8004,242L8007,243L8021,243L8024,242L8032,240L8034,235L8043,238L8045,243L8043,244L8048,246L8067,242L8072,245L8082,250L8085,246L8090,244L8115,243L8121,240L8129,239L8135,240L8137,235L8145,235L8150,235L8144,237L8142,239L8150,241L8156,241L8162,245L8172,247L8175,248L8179,247L8194,247L8196,251L8203,249L8212,249L8210,247L8224,248L8229,246L8258,256L8264,256L8265,260L8274,261L8281,265L8278,268L8282,276L8274,277L8280,281L8279,284L8281,287L8282,292L8278,295L8268,295L8266,298L8273,299L8280,303L8281,307L8265,306L8265,311L8271,311L8282,322L8286,322L8289,327L8293,327L8295,329L8297,329L8297,332L8306,332L8306,334L8310,334L8310,332L8312,332L8312,329L8315,329L8317,334L8317,337L8319,337L8321,340L8325,340L8325,337L8330,337L8334,334L8337,333L8342,328L8342,326L8344,326L8344,323L8346,323L8346,321L8350,315L8350,313L8355,310L8355,308L8364,299L8369,299L8369,306L8373,306L8375,309L8377,309L8379,311L8384,314L8392,314L8395,317L8423,317L8425,314L8431,311L8442,311L8447,309L8464,309L8464,311L8473,311L8475,314L8475,311L8479,311L8481,314L8490,312L8518,312L8514,316L8509,317L8503,315L8504,318L8508,322L8516,323L8519,322L8514,317L8518,314L8521,310L8527,309L8525,311L8531,311L8529,309L8538,309L8542,311L8544,314L8544,317L8553,317L8553,314L8568,314L8568,311L8566,311L8564,309L8562,308L8562,303L8559,299L8561,299L8561,294L8566,291L8570,291L8570,294L8572,294L8574,291L8574,289L8557,289L8555,291L8551,291L8551,294L8548,294L8548,291L8546,291L8546,289L8548,286L8553,284L8555,281L8592,281L8596,278L8598,278L8598,273L8594,273L8589,271L8587,268L8607,268L8607,271L8613,271L8620,273L8668,273L8670,276L8694,276L8696,278L8724,278L8730,281L8741,281L8743,283L8754,283L8754,286L8761,286L8761,289L8759,289L8754,291L8754,294L8748,296L8746,296L8743,299L8741,299L8739,301L8735,301L8735,296L8741,296L8743,294L8746,294L8743,291L8737,291L8737,294L8735,294L8735,291L8733,291L8733,289L8730,289L8735,286L8717,286L8715,283L8700,283L8700,286L8698,286L8696,289L8685,289L8687,291L8700,291L8700,289L8726,289L8726,291L8728,291L8726,294L8726,296L8730,296L8730,299L8728,299L8728,301L8715,301L8715,299L8707,299L8709,301L8713,301L8713,304L8704,304L8704,306L8715,306L8717,309L8720,309L8722,306L8730,306L8737,304L8739,304L8741,301L8746,301L8750,296L8752,296L8765,289L8767,286L8806,286L8806,289L8823,289L8826,291L8834,291L8845,296L8847,299L8849,299L8849,301L8847,301L8841,304L8834,304L8830,301L8828,301L8826,304L8819,304L8819,306L8815,306L8815,309L8821,309L8821,306L8828,306L8830,309L8845,309L8845,311L8843,314L8852,314L8854,311L8862,314L8865,314L8865,317L8867,317L8865,319L8869,319L8871,317L8878,317L8880,319L8893,319L8897,324L8899,324L8904,327L8906,329L8904,329L8901,332L8906,332L8908,334L8951,334L8960,332L8969,332L8973,329L8988,329L8997,327L9060,327L9066,329L9081,329L9088,332L9090,332L9094,334L9103,334L9105,337L9109,337L9112,340L9116,340L9118,342L9120,342L9122,345L9125,350L9127,350L9127,355L9122,357L9118,357L9118,360L9120,360L9120,362L9118,362L9118,365L9116,365L9118,368L9120,368L9127,370L9129,373L9144,373L9151,375L9153,375L9153,378L9151,378L9151,383L9153,383L9153,391L9151,391L9153,393L9157,393L9157,391L9155,391L9157,388L9157,383L9155,383L9155,380L9159,378L9164,378L9164,375L9170,375L9170,380L9172,380L9174,378L9181,378L9185,375L9187,373L9229,373L9233,370L9239,370L9239,373L9242,373L9246,375L9287,375L9287,378L9317,378L9326,375L9330,375L9330,373L9335,373L9335,370L9343,370L9348,373L9348,375L9350,375L9352,378L9354,378L9354,380L9352,383L9354,385L9354,388L9371,388L9371,391L9380,391L9382,393L9387,393L9387,401L9389,401L9391,403L9395,403L9404,401L9415,401L9415,398L9421,398L9423,396L9428,396L9430,393L9430,391L9428,388L9428,385L9421,378L9419,378L9419,375L9406,375L9406,373L9408,373L9410,370L9419,370L9417,365L9417,360L9413,360L9413,357L9419,357L9419,360L9445,360L9449,362L9475,362L9480,365L9482,365L9486,368L9491,368L9491,370L9497,370L9499,368L9497,368L9495,365L9504,365L9506,368L9514,368L9514,365L9523,365L9523,368L9556,368L9556,365L9573,365L9575,368L9575,370L9584,370L9586,373L9590,373L9597,375L9614,375L9614,378L9621,378L9629,380L9643,379L9669,387L9672,390L9677,393L9684,395L9696,395L9701,399L9714,401L9715,403L9720,406L9718,409L9720,411L9726,410L9738,414L9738,417L9743,416L9744,414L9748,414L9752,417L9754,417L9759,420L9759,422L9765,422L9772,425L9776,425L9778,427L9787,430L9793,430L9804,435L9808,435L9815,443L9815,445L9813,445L9811,448L9819,448L9819,445L9826,445L9826,448L9824,448L9824,450L9821,456L9824,458L9824,461L9826,461L9828,463L9828,468L9824,468L9821,471L9826,471L9828,473L9834,473L9834,481L9839,481L9839,478L9843,476L9847,476L9849,477L9847,481L9845,481L9845,484L9847,484L9847,486L9850,484L9850,481L9854,481L9854,478L9856,478L9856,476L9852,476L9849,475L9847,473L9841,473L9843,471L9847,471L9847,468L9850,468L9847,466L9847,463L9845,461L9841,458L9830,458L9830,456L9869,456L9873,458L9873,461L9876,461L9882,463L9889,463L9891,461L9884,461L9880,458L9893,459L9895,461L9912,461L9912,463L9915,466L9921,466L9921,468L9919,468L9921,471L9925,471L9928,473L9934,473L9934,476L9938,476L9938,478L9941,478L9943,481L9945,481L9945,484L9953,484L9953,486L9966,486L9966,489L9969,489L9966,491L9953,491L9943,496L9945,496L9945,504L9934,504L9930,501L9925,501L9923,499L9921,499L9923,501L9923,504L9932,504L9932,507L9930,509L9925,509L9923,507L9912,507L9910,509L9908,509L9908,507L9895,507L9895,501L9882,501L9884,504L9893,504L9893,509L9891,509L9893,512L9895,512L9895,509L9899,509L9897,514L9897,519L9899,522L9895,524L9893,527L9884,527L9884,530L9880,530L9882,532L9880,535L9878,535L9882,537L9882,535L9884,535L9886,532L9889,532L9889,530L9895,530L9899,532L9893,535L9889,535L9891,537L9884,537L9889,540L9891,540L9895,542L9893,542L9891,545L9884,545L9882,542L9882,540L9876,540L9876,542L9880,542L9880,547L9871,547L9871,550L9869,547L9865,547L9865,545L9847,545L9847,542L9845,542L9845,540L9843,540L9837,535L9830,535L9828,532L9826,532L9821,530L9819,532L9808,532L9808,530L9802,527L9798,527L9795,524L9798,524L9798,522L9800,519L9795,514L9795,512L9793,512L9791,509L9782,509L9780,507L9776,507L9767,504L9759,504L9756,507L9754,507L9754,509L9723,510L9721,508L9723,508L9723,500L9717,500L9710,493L9717,493L9717,490L9721,490L9721,487L9723,485L9723,480L9721,480L9715,487L9708,487L9706,485L9706,480L9704,480L9704,485L9702,482L9697,482L9697,485L9700,485L9702,487L9700,487L9697,490L9691,490L9691,487L9689,487L9689,490L9687,490L9687,498L9689,500L9695,503L9697,505L9700,505L9700,508L9697,510L9693,510L9693,518L9691,518L9691,521L9687,521L9684,523L9677,523L9675,526L9673,526L9670,528L9666,531L9662,531L9660,533L9651,533L9651,536L9647,536L9644,538L9644,536L9614,536L9612,532L9610,531L9610,528L9605,528L9605,531L9603,532L9601,532L9599,533L9595,533L9595,531L9579,531L9575,528L9573,528L9575,531L9577,531L9582,536L9586,536L9590,541L9592,538L9605,535L9608,533L9610,538L9608,538L9608,544L9610,544L9614,549L9616,549L9618,551L9623,551L9627,550L9630,547L9632,548L9634,546L9645,557L9647,565L9646,569L9648,573L9649,578L9657,584L9662,584L9664,587L9664,589L9660,589L9660,592L9662,595L9666,595L9668,597L9668,605L9664,605L9664,607L9657,612L9655,615L9653,615L9653,612L9651,612L9644,610L9634,610L9629,607L9625,607L9625,605L9597,605L9592,607L9586,607L9577,615L9566,615L9564,617L9558,617L9549,620L9549,623L9545,623L9540,625L9532,625L9532,628L9530,630L9514,630L9514,633L9512,633L9510,635L9508,635L9508,633L9499,633L9499,638L9495,638L9495,640L9493,643L9486,643L9475,651L9471,651L9471,656L9462,656L9462,658L9460,658L9460,661L9458,661L9458,658L9456,658L9456,661L9454,663L9452,663L9452,661L9449,663L9447,663L9447,666L9441,666L9441,668L9434,671L9430,671L9426,674L9423,674L9423,676L9421,676L9421,679L9417,679L9417,681L9415,681L9415,689L9413,691L9406,691L9406,689L9404,689L9402,686L9400,686L9395,681L9395,676L9393,676L9391,674L9387,674L9384,671L9384,668L9380,668L9380,671L9350,671L9341,674L9337,674L9332,676L9326,676L9326,679L9319,679L9313,684L9311,686L9309,686L9306,689L9300,694L9298,694L9296,697L9293,694L9293,691L9296,689L9296,684L9298,681L9298,676L9300,676L9302,674L9293,674L9291,676L9289,676L9285,679L9285,681L9278,681L9276,684L9274,684L9270,686L9268,686L9268,689L9265,694L9263,694L9259,697L9257,694L9257,691L9255,689L9250,686L9244,686L9244,689L9242,689L9241,693L9239,694L9237,694L9237,689L9230,689L9230,693L9224,694L9221,696L9221,700L9219,703L9216,703L9216,705L9218,707L9219,712L9217,713L9214,713L9214,715L9215,717L9215,720L9213,718L9210,716L9208,719L9209,722L9200,727L9198,730L9194,730L9185,740L9182,750L9182,753L9181,755L9181,758L9183,760L9190,760L9190,765L9192,765L9194,763L9194,758L9196,758L9196,755L9200,755L9205,758L9207,758L9207,760L9213,760L9216,763L9213,768L9211,770L9209,770L9209,773L9203,773L9203,776L9200,778L9200,781L9203,781L9203,796L9213,796L9216,799L9213,799L9213,801L9218,806L9218,814L9216,814L9213,816L9211,816L9211,819L9205,819L9200,816L9198,814L9198,811L9194,811L9192,814L9185,814L9181,819L9181,821L9179,827L9174,829L9172,832L9172,842L9174,847L9179,852L9185,857L9181,862L9177,865L9172,870L9170,867L9166,870L9159,870L9159,867L9144,867L9140,870L9135,875L9133,875L9131,878L9127,878L9125,880L9125,883L9122,885L9120,890L9120,895L9122,895L9122,898L9125,901L9122,903L9127,913L9127,916L9118,911L9109,911L9109,913L9101,913L9099,916L9096,916L9094,918L9092,918L9090,921L9088,920L9088,918L9086,916L9083,916L9081,918L9081,921L9086,921L9087,922L9088,924L9086,926L9086,929L9083,931L9083,934L9086,939L9086,941L9081,941L9079,946L9077,946L9077,954L9066,962L9064,964L9062,964L9060,967L9055,967L9051,972L9049,977L9047,977L9044,980L9036,985L9034,987L9031,987L9034,985L9034,977L9031,977L9031,975L9027,975L9027,954L9025,946L9025,941L9023,939L9023,936L9021,934L9021,931L9018,931L9018,929L9016,926L9016,913L9014,908L9012,895L9012,890L9010,885L9010,880L9008,880L9008,878L9005,872L9005,867L9003,860L9003,855L9001,847L9001,837L9003,834L9003,824L9005,819L9005,816L9008,814L9008,811L9010,809L9010,804L9012,801L9012,799L9016,793L9016,796L9018,793L9023,791L9025,791L9025,788L9027,788L9027,786L9029,786L9029,783L9031,786L9040,776L9040,765L9038,765L9038,763L9036,763L9040,760L9042,760L9047,763L9053,763L9055,760L9057,760L9057,758L9060,755L9075,755L9079,750L9081,750L9086,748L9088,745L9090,745L9099,740L9101,740L9101,737L9103,737L9107,735L9109,732L9112,732L9118,725L9118,719L9120,717L9122,717L9129,712L9133,712L9133,709L9135,709L9138,707L9138,704L9142,704L9146,702L9148,702L9159,694L9161,691L9166,689L9166,686L9172,686L9174,684L9177,684L9179,681L9179,679L9177,679L9179,676L9190,671L9194,671L9198,668L9203,668L9203,666L9205,663L9220,663L9220,661L9226,661L9229,658L9224,658L9222,656L9226,651L9231,651L9235,646L9237,646L9235,643L9229,643L9229,640L9231,635L9235,635L9237,633L9237,617L9242,612L9248,612L9252,607L9257,607L9257,610L9265,610L9270,612L9272,612L9270,610L9268,610L9268,607L9265,607L9257,605L9255,605L9255,602L9250,602L9246,600L9242,602L9235,602L9229,605L9216,605L9216,607L9213,607L9213,610L9216,610L9216,612L9213,612L9210,614L9209,617L9209,625L9207,630L9209,630L9211,633L9216,633L9216,635L9211,635L9209,638L9207,638L9207,635L9205,635L9205,633L9198,633L9198,635L9190,635L9185,638L9179,646L9174,646L9170,648L9168,651L9164,651L9164,653L9161,653L9157,656L9157,658L9151,658L9148,661L9148,663L9146,663L9146,666L9144,666L9144,663L9135,666L9133,668L9131,668L9129,671L9129,666L9131,666L9131,663L9129,663L9129,661L9131,661L9135,656L9127,656L9122,658L9120,658L9120,656L9122,656L9122,648L9120,648L9120,646L9122,646L9125,643L9129,640L9135,633L9135,625L9133,625L9131,628L9127,628L9125,630L9122,630L9122,633L9114,633L9114,635L9112,635L9107,628L9092,628L9090,630L9075,630L9073,633L9068,633L9068,630L9053,630L9051,633L9047,633L9042,635L9040,638L9038,638L9038,640L9036,640L9034,638L9034,640L9031,640L9031,651L9023,651L9012,658L9012,661L9005,668L9001,668L8992,674L8984,676L8984,679L8982,679L8979,681L8975,684L8973,686L8973,689L8971,689L8971,691L8969,694L8964,694L8964,699L8966,702L8964,702L8960,704L8960,707L8969,707L8969,709L8971,709L8973,707L8971,707L8969,704L8977,704L8979,707L8986,707L8988,709L8990,709L8990,714L8988,717L8973,717L8973,714L8966,714L8966,717L8969,717L8966,719L8956,719L8953,717L8949,717L8945,714L8938,714L8938,719L8930,719L8930,722L8927,722L8927,725L8919,725L8917,722L8906,722L8906,725L8904,725L8895,727L8884,727L8882,725L8880,725L8878,722L8878,719L8882,719L8884,717L8906,717L8908,714L8910,714L8906,712L8904,712L8904,714L8901,714L8895,712L8895,709L8893,709L8891,707L8886,704L8880,704L8878,702L8875,702L8871,704L8873,704L8873,707L8867,707L8867,704L8862,704L8862,707L8860,707L8860,704L8858,704L8858,702L8854,702L8849,699L8841,699L8836,697L8828,697L8819,702L8821,704L8826,704L8826,707L8815,707L8815,704L8813,704L8813,707L8810,707L8810,709L8819,709L8817,714L8815,714L8815,712L8813,712L8810,714L8802,714L8802,709L8785,709L8785,712L8787,712L8785,714L8782,714L8782,712L8778,712L8778,714L8776,714L8776,712L8767,712L8765,709L8754,709L8752,707L8748,707L8746,709L8746,717L8735,717L8730,714L8730,712L8733,712L8733,709L8670,709L8668,712L8663,712L8663,709L8657,709L8655,712L8646,712L8642,714L8639,714L8633,717L8631,719L8629,719L8626,722L8624,722L8624,725L8622,725L8622,727L8620,727L8618,732L8616,732L8613,735L8611,735L8607,737L8605,737L8603,740L8598,740L8594,742L8592,745L8587,748L8587,750L8583,758L8583,760L8579,763L8570,763L8570,765L8568,765L8566,768L8566,770L8561,770L8559,773L8557,773L8557,776L8555,776L8555,778L8546,778L8540,786L8535,786L8533,788L8531,788L8525,796L8522,796L8518,801L8516,801L8518,804L8518,806L8516,806L8514,809L8512,809L8509,811L8505,814L8503,816L8501,816L8499,819L8494,821L8492,824L8481,829L8479,832L8475,832L8473,834L8468,834L8468,837L8466,837L8466,839L8462,842L8460,842L8460,844L8455,844L8451,847L8451,850L8442,850L8438,855L8436,855L8436,860L8438,862L8444,862L8449,865L8449,867L8460,867L8462,865L8468,865L8473,867L8477,865L8481,865L8483,867L8479,872L8479,878L8481,880L8479,883L8479,885L8477,885L8477,893L8479,893L8481,890L8488,890L8488,893L8490,893L8490,890L8492,890L8494,885L8501,885L8501,888L8507,888L8507,890L8503,890L8501,893L8501,895L8494,895L8494,898L8492,898L8492,901L8512,901L8512,898L8516,895L8518,895L8522,893L8522,888L8525,888L8529,885L8529,888L8531,890L8529,890L8529,893L8527,893L8520,901L8529,901L8529,898L8533,893L8533,890L8535,888L8535,878L8533,878L8533,875L8535,875L8538,878L8544,878L8546,880L8551,880L8557,878L8559,878L8559,875L8564,875L8564,878L8570,883L8577,883L8577,890L8579,893L8583,893L8583,895L8585,898L8592,901L8596,901L8596,903L8598,906L8600,906L8603,908L8609,908L8609,913L8607,916L8603,916L8603,918L8600,918L8596,916L8594,916L8594,913L8590,913L8590,916L8592,916L8596,918L8596,921L8598,921L8603,924L8605,929L8605,934L8603,934L8600,936L8600,939L8603,939L8607,944L8611,944L8611,946L8607,946L8605,949L8605,952L8609,952L8609,954L8605,954L8598,962L8596,962L8594,964L8594,967L8592,967L8592,969L8594,969L8594,972L8587,972L8587,980L8590,980L8590,982L8587,985L8585,985L8585,987L8583,987L8583,997L8581,997L8581,1000L8583,1000L8583,1013L8587,1013L8587,1015L8585,1015L8581,1020L8581,1023L8583,1023L8583,1026L8585,1031L8581,1038L8579,1041L8579,1048L8581,1048L8581,1051L8579,1051L8579,1054L8577,1054L8574,1056L8574,1066L8570,1071L8561,1077L8557,1082L8555,1082L8555,1084L8553,1084L8548,1087L8548,1089L8544,1097L8542,1099L8542,1102L8538,1105L8538,1107L8535,1110L8531,1110L8531,1112L8529,1112L8529,1115L8525,1122L8525,1125L8522,1125L8522,1130L8520,1130L8520,1133L8518,1133L8518,1135L8516,1138L8516,1140L8509,1148L8507,1148L8507,1150L8505,1150L8505,1153L8501,1158L8499,1158L8496,1161L8494,1161L8494,1163L8492,1163L8486,1171L8481,1173L8473,1184L8473,1186L8468,1186L8466,1191L8464,1191L8464,1196L8462,1196L8460,1199L8455,1199L8453,1201L8453,1204L8451,1204L8449,1207L8449,1212L8447,1212L8442,1214L8444,1217L8440,1222L8438,1222L8436,1224L8434,1230L8429,1230L8427,1232L8425,1232L8421,1237L8418,1237L8414,1240L8412,1242L8408,1242L8401,1250L8390,1250L8388,1252L8386,1252L8382,1255L8375,1255L8375,1250L8373,1250L8371,1252L8369,1252L8369,1250L8364,1250L8362,1247L8357,1247L8358,1250L8356,1250L8355,1248L8356,1240L8358,1240L8358,1235L8356,1235L8356,1237L8351,1237L8351,1240L8349,1240L8349,1242L8343,1242L8345,1240L8345,1237L8349,1237L8349,1235L8340,1235L8340,1237L8336,1242L8336,1245L8334,1245L8334,1247L8330,1252L8327,1252L8325,1258L8325,1260L8323,1260L8323,1255L8319,1258L8317,1258L8315,1255L8313,1255L8313,1258L8314,1260zM8668,250L8665,248L8659,245L8657,243L8652,243L8646,240L8644,240L8644,238L8635,238L8635,235L8603,235L8602,236L8600,236L8597,239L8595,239L8589,246L8587,246L8584,249L8579,249L8577,250L8559,250L8559,253L8577,252L8581,250L8596,250L8603,253L8611,253L8613,255L8650,255L8652,258L8668,258L8668,255L8665,253L8665,250L8668,250zM8449,225L8444,225L8442,222L8440,222L8442,225L8442,227L8449,227L8449,230L8453,230L8455,232L8460,235L8466,235L8466,232L8464,232L8449,225zM8862,197L8860,197L8854,192L8836,192L8836,189L8828,189L8821,192L8806,192L8804,189L8806,189L8806,187L8802,187L8787,187L8785,184L8774,184L8769,187L8774,187L8769,189L8763,189L8759,187L8756,187L8754,184L8756,184L8756,181L8754,181L8750,179L8746,179L8746,181L8744,187L8741,189L8739,189L8739,192L8741,192L8746,194L8754,194L8758,196L8763,197L8769,199L8782,199L8782,202L8787,202L8793,204L8795,204L8798,207L8841,207L8841,204L8852,204L8856,202L8867,202L8867,199L8865,199L8869,194L8865,194L8862,197zM8574,230L8578,232L8579,232L8579,235L8581,235L8585,235L8587,232L8599,233L8599,230L8602,227L8602,225L8599,225L8596,222L8577,222L8578,225L8574,225L8574,230zM8457,184L8457,181L8460,181L8462,179L8460,179L8460,176L8453,176L8453,174L8451,171L8449,171L8448,177L8447,179L8447,181L8444,181L8444,184L8442,184L8442,187L8455,187L8457,184zM8635,202L8631,199L8629,199L8631,202L8635,202zM8494,189L8496,187L8496,184L8492,184L8492,187L8490,187L8490,189L8494,189zM8715,179L8717,181L8711,181L8709,184L8700,184L8700,187L8698,189L8707,189L8704,192L8700,192L8700,194L8694,194L8694,197L8683,197L8681,199L8678,197L8659,197L8655,194L8648,194L8648,192L8646,188L8644,189L8642,189L8639,187L8642,184L8642,181L8648,181L8650,179L8655,179L8655,176L8631,176L8629,179L8629,187L8631,189L8635,189L8637,192L8642,194L8642,197L8657,197L8663,199L8672,199L8672,202L8644,202L8642,204L8637,204L8635,204L8626,202L8624,202L8624,199L8629,199L8631,202L8635,202L8631,199L8629,199L8624,199L8616,199L8613,202L8585,202L8581,204L8570,204L8568,202L8566,202L8564,199L8557,199L8555,202L8555,204L8557,204L8553,209L8535,209L8535,207L8516,207L8516,204L8509,204L8509,199L8501,199L8501,197L8494,197L8491,192L8481,187L8490,187L8490,189L8494,189L8496,187L8499,187L8496,187L8496,184L8492,184L8492,181L8494,179L8488,179L8490,176L8488,176L8490,174L8505,174L8507,174L8505,174L8503,171L8499,171L8496,169L8499,169L8501,166L8514,166L8516,164L8518,164L8518,161L8522,161L8525,164L8527,164L8527,161L8529,161L8531,158L8540,158L8540,161L8542,161L8544,164L8553,164L8555,166L8566,166L8566,169L8564,169L8564,171L8570,171L8574,174L8574,171L8581,171L8583,174L8583,176L8581,176L8581,179L8598,179L8594,174L8594,166L8596,166L8596,164L8603,164L8607,166L8613,166L8611,164L8607,161L8613,161L8624,166L8629,166L8635,169L8637,169L8637,171L8652,171L8655,174L8657,174L8657,171L8681,171L8694,176L8702,176L8702,179L8715,179z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7731,834L7728,856L7723,865L7721,875L7724,880L7719,884L7715,889L7712,895L7709,894L7710,890L7707,888L7704,890L7695,898L7694,902L7705,900L7707,905L7695,908L7691,914L7689,919L7682,924L7677,925L7655,936L7650,942L7645,937L7640,937L7633,941L7631,947L7627,953L7622,958L7612,963L7601,963L7594,967L7586,968L7575,966L7562,960L7604,952L7618,941L7625,933L7630,930L7638,929L7654,917L7663,915L7667,913L7673,912L7675,908L7675,904L7673,904L7666,910L7662,910L7651,915L7647,915L7671,900L7674,895L7683,891L7688,881L7711,848L7715,836L7720,830L7726,827L7732,827L7734,832L7731,834zM8068,874L8063,851L8040,839L8012,830L8003,804L7989,779L7966,723L7934,721L7906,691L7848,691L7809,737L7783,721L7753,728L7718,730L7746,666L7725,649L7725,622L7714,594L7700,564L7667,547L7628,531L7644,499L7633,478L7607,425L7646,413L7640,339L7623,318L7714,300L7739,260L7790,233L7834,217L7828,215L7821,215L7818,213L7814,212L7815,209L7821,211L7826,210L7822,208L7819,204L7824,202L7844,191L7855,183L7859,172L7845,158L7831,147L7815,143L7792,142L7767,141L7739,139L7712,139L7684,139L7673,146L7658,146L7655,143L7668,133L7660,132L7640,132L7621,130L7608,132L7592,128L7613,125L7629,117L7605,113L7587,111L7563,113L7538,116L7505,127L7486,136L7495,142L7489,149L7457,151L7432,149L7437,160L7428,157L7412,161L7391,163L7367,167L7346,166L7340,162L7313,161L7285,165L7267,166L7254,173L7236,172L7213,178L7182,182L7161,185L7138,190L7116,196L7100,197L7099,204L7092,213L7102,224L7106,229L7110,237L7106,243L7102,245L7091,245L7095,243L7095,240L7097,240L7097,238L7099,238L7099,235L7069,235L7069,238L7058,238L7056,240L7054,240L7050,243L7030,230L7008,236L7000,232L6983,237L6965,236L6959,242L6943,243L6939,245L6918,245L6918,248L6922,248L6920,250L6913,253L6909,253L6911,255L6920,255L6920,258L6915,258L6918,260L6915,260L6918,263L6924,263L6926,266L6926,268L6922,273L6920,273L6922,276L6926,276L6924,278L6922,278L6924,281L6926,281L6928,283L6935,283L6937,286L6954,286L6956,289L6967,289L6967,294L6965,294L6967,296L6972,296L6974,299L6976,299L6984,304L6941,306L6939,304L6937,304L6939,301L6935,301L6922,296L6922,294L6920,294L6915,291L6907,291L6900,289L6896,289L6894,286L6889,286L6885,283L6879,283L6877,285L6879,294L6905,316L6937,330L6961,334L6973,368L6967,382L6965,420L7003,454L7021,476L7031,510L7061,520L7075,540L7055,568L7053,602L7033,632L7041,648L7019,668L6993,662L6961,680L6941,680L6911,678L6825,674L6815,714L6779,740L6751,762L6701,765L6694,766L6667,768L6649,754L6641,778L6657,786L6663,810L6645,826L6638,842L6640,844L6642,844L6642,842L6649,842L6649,844L6653,850L6653,855L6651,857L6655,862L6660,862L6662,865L6658,865L6658,870L6660,872L6660,875L6653,875L6653,878L6655,878L6655,880L6658,883L6662,878L6666,880L6666,883L6671,883L6673,880L6673,878L6681,878L6684,880L6686,880L6686,878L6684,878L6681,872L6686,872L6690,878L6690,880L6694,880L6694,883L6692,885L6692,888L6701,888L6701,885L6699,883L6697,883L6697,880L6701,880L6705,883L6707,880L6707,883L6710,883L6710,885L6716,888L6725,888L6723,885L6725,883L6729,883L6729,890L6720,890L6718,893L6718,895L6716,895L6716,901L6720,901L6718,903L6720,903L6725,901L6727,898L6744,898L6744,901L6746,903L6749,903L6751,898L6749,898L6749,895L6755,895L6755,893L6757,890L6762,890L6766,893L6770,890L6775,885L6777,885L6775,883L6783,883L6798,878L6796,875L6805,875L6809,872L6811,872L6811,870L6814,870L6816,875L6811,880L6803,880L6805,883L6805,885L6807,885L6818,893L6820,893L6831,901L6835,901L6835,903L6840,906L6842,906L6848,913L6848,916L6850,916L6855,924L6859,926L6866,934L6868,939L6889,967L6889,969L6894,977L6902,987L6902,990L6905,990L6911,987L6913,987L6913,985L6915,985L6918,982L6915,982L6915,977L6920,977L6920,975L6926,975L6928,977L6935,977L6935,980L6933,982L6933,985L6943,985L6943,992L6952,992L6954,990L6956,990L6959,992L6974,992L6978,990L6978,987L6989,987L6989,985L7000,985L7008,987L7011,987L7013,990L7013,992L7015,995L7017,995L7019,997L7019,1003L7021,1008L7024,1010L7032,1010L7037,1013L7043,1013L7043,1015L7041,1015L7041,1020L7043,1020L7047,1026L7047,1028L7050,1031L7052,1031L7052,1028L7054,1028L7054,1031L7058,1031L7060,1028L7063,1031L7069,1031L7073,1033L7076,1033L7078,1031L7078,1028L7084,1028L7084,1026L7086,1023L7091,1023L7091,1028L7086,1028L7086,1031L7091,1031L7093,1033L7095,1038L7099,1041L7104,1041L7106,1043L7106,1046L7112,1046L7117,1043L7125,1043L7130,1041L7130,1033L7145,1033L7149,1036L7149,1031L7151,1031L7151,1033L7158,1033L7158,1028L7162,1028L7162,1031L7164,1031L7164,1028L7169,1028L7169,1026L7173,1026L7173,1023L7171,1023L7171,1018L7182,1018L7182,1013L7188,1013L7188,1010L7195,1010L7195,1008L7197,1008L7197,1010L7199,1010L7201,1008L7206,1005L7208,1003L7212,1003L7219,1000L7221,1000L7225,997L7227,995L7229,995L7229,992L7238,992L7238,995L7240,995L7242,992L7245,992L7245,990L7249,990L7253,995L7255,995L7258,992L7258,990L7264,990L7264,997L7275,997L7275,995L7277,995L7279,997L7301,997L7301,1008L7303,1008L7303,1010L7307,1010L7307,1013L7310,1015L7320,1015L7320,1018L7331,1018L7333,1020L7336,1020L7340,1018L7342,1015L7344,1015L7344,1018L7349,1018L7349,1015L7351,1015L7353,1018L7357,1018L7357,1020L7359,1020L7362,1018L7364,1018L7364,1020L7366,1020L7366,1018L7370,1018L7379,1023L7381,1023L7381,1026L7385,1026L7388,1023L7392,1023L7392,1020L7394,1018L7400,1018L7405,1015L7407,1015L7407,1013L7411,1008L7411,997L7407,997L7403,992L7403,987L7400,987L7400,985L7398,985L7398,982L7400,982L7400,977L7403,977L7403,975L7400,975L7405,969L7405,967L7407,967L7407,969L7409,969L7409,964L7411,962L7411,959L7420,959L7424,954L7424,952L7426,949L7426,946L7429,946L7431,949L7435,949L7446,954L7452,954L7452,957L7455,957L7455,959L7474,959L7478,962L7481,962L7483,964L7487,964L7489,967L7496,967L7496,969L7498,969L7500,967L7502,967L7507,969L7513,969L7515,972L7520,972L7520,975L7517,975L7517,977L7520,980L7520,982L7522,985L7522,987L7520,987L7520,990L7522,990L7524,992L7524,995L7522,995L7522,997L7524,997L7526,1000L7528,1000L7530,1003L7535,1003L7537,1005L7541,1005L7541,1008L7543,1005L7548,1005L7548,1008L7550,1008L7550,1010L7559,1010L7559,1013L7563,1013L7563,1010L7569,1010L7572,1013L7572,1010L7576,1010L7578,1008L7580,1008L7580,1005L7589,1005L7595,1003L7604,1003L7604,1000L7608,1000L7613,1003L7626,1003L7628,1005L7632,1008L7632,1005L7647,1005L7647,1008L7654,1010L7654,1013L7656,1013L7658,1015L7660,1015L7665,1018L7680,1018L7680,1028L7682,1028L7682,1031L7684,1031L7689,1033L7691,1036L7695,1038L7719,1038L7721,1041L7730,1041L7738,1043L7745,1043L7745,1041L7749,1043L7764,1043L7764,1041L7767,1041L7767,1038L7780,1038L7780,1036L7795,1036L7797,1033L7803,1033L7806,1031L7808,1031L7810,1033L7814,1033L7823,1031L7823,1028L7825,1023L7829,1020L7832,1018L7834,1018L7836,1015L7840,1015L7840,1013L7847,1013L7847,1010L7851,1008L7870,1008L7873,1010L7875,1010L7877,1013L7881,1015L7881,1018L7886,1020L7899,1020L7899,1018L7905,1015L7912,1015L7912,1018L7920,1018L7922,1020L7922,1023L7925,1023L7935,1028L7946,1028L7946,1031L7951,1031L7953,1033L7955,1033L7959,1031L7959,1028L7964,1028L7964,1026L7968,1023L7972,1023L7972,1020L7974,1018L7990,1018L7990,1015L7992,1015L7994,1013L7996,1013L7996,1005L7990,1005L7990,1003L7992,1003L7994,1000L7994,997L7996,995L7998,995L7998,992L8000,992L8000,987L8003,985L8005,985L8005,982L8007,982L8007,977L8009,975L8011,975L8013,972L8013,967L8016,964L8016,962L8020,962L8020,959L8022,959L8026,954L8033,954L8033,952L8035,946L8035,944L8033,944L8033,941L8031,941L8031,939L8033,939L8033,934L8026,931L8013,931L8013,929L8018,924L8022,924L8022,921L8024,921L8029,916L8037,911L8037,908L8057,908L8057,906L8065,906L8059,890L8068,874z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6663,810L6657,786L6641,778L6649,754L6667,768L6693,766L6699,765L6751,762L6779,740L6815,714L6825,674L6911,678L6941,680L6961,680L6993,662L7019,668L7041,648L7033,632L7053,602L7055,568L7075,540L7061,520L7031,510L7021,476L7003,454L6965,420L6967,382L6973,368L6961,334L6937,330L6905,316L6879,294L6877,285L6876,286L6870,286L6868,283L6857,283L6855,286L6846,286L6848,283L6853,283L6859,281L6857,281L6857,278L6853,278L6844,276L6835,276L6829,278L6829,281L6827,281L6824,283L6820,283L6818,286L6816,286L6816,289L6833,289L6833,291L6831,294L6833,294L6833,296L6835,294L6850,294L6850,296L6853,296L6855,299L6853,299L6853,301L6844,301L6842,304L6837,304L6835,301L6831,301L6827,299L6818,296L6801,296L6794,299L6794,301L6796,306L6798,309L6798,311L6807,311L6809,314L6811,314L6816,317L6824,317L6829,319L6837,319L6840,322L6840,319L6846,317L6848,317L6848,319L6844,319L6846,322L6857,322L6855,324L6855,327L6857,327L6859,329L6861,329L6863,332L6859,334L6857,332L6846,332L6846,329L6844,329L6844,327L6842,327L6842,324L6818,324L6818,327L6816,324L6811,322L6807,322L6805,324L6803,324L6803,322L6785,322L6777,319L6772,319L6772,317L6770,317L6770,314L6777,314L6779,311L6779,309L6777,309L6777,306L6772,306L6770,304L6770,301L6772,299L6777,299L6777,296L6779,291L6781,291L6781,289L6785,289L6785,286L6783,286L6779,281L6781,278L6777,276L6775,276L6777,273L6779,273L6775,271L6770,271L6768,268L6764,268L6759,271L6759,273L6764,273L6764,276L6766,276L6766,283L6768,283L6768,286L6766,289L6766,291L6764,291L6764,294L6759,294L6751,296L6749,296L6746,299L6736,299L6729,301L6725,301L6723,304L6723,309L6714,314L6710,314L6710,317L6714,317L6716,319L6723,319L6723,322L6725,322L6725,324L6727,324L6727,327L6729,329L6733,329L6733,334L6736,334L6736,337L6742,337L6742,340L6744,340L6744,342L6746,345L6744,345L6744,347L6742,347L6740,350L6738,350L6738,352L6733,352L6733,355L6729,357L6729,360L6727,368L6725,370L6723,370L6723,373L6725,373L6727,375L6729,375L6729,378L6731,378L6733,380L6733,383L6731,385L6731,388L6729,388L6729,391L6731,391L6733,393L6736,393L6740,391L6755,391L6755,393L6759,393L6764,391L6768,391L6770,388L6777,388L6779,385L6781,385L6783,388L6798,388L6803,391L6814,391L6814,393L6816,393L6818,396L6829,396L6829,398L6840,398L6840,408L6842,411L6846,411L6846,416L6850,416L6853,419L6848,421L6837,421L6835,424L6833,424L6833,436L6846,436L6848,439L6861,439L6861,442L6837,442L6833,439L6831,439L6829,436L6822,436L6822,434L6827,434L6829,431L6827,429L6824,429L6829,424L6829,421L6827,419L6824,419L6824,416L6829,416L6829,411L6827,411L6824,408L6816,406L6814,403L6809,403L6809,401L6811,401L6811,398L6809,396L6794,396L6788,398L6777,398L6768,401L6759,401L6757,403L6751,403L6749,406L6749,413L6746,413L6746,416L6749,416L6751,419L6753,419L6753,421L6755,421L6755,424L6757,424L6759,429L6759,434L6757,436L6757,439L6755,439L6751,442L6749,442L6746,444L6744,444L6740,447L6738,447L6733,452L6736,452L6736,454L6733,459L6733,462L6729,462L6725,464L6723,467L6714,467L6710,470L6707,470L6707,472L6694,472L6690,475L6690,477L6692,480L6692,482L6690,482L6690,485L6675,485L6673,482L6632,482L6627,480L6625,480L6621,477L6627,477L6627,470L6632,470L6634,472L6634,475L6640,475L6645,477L6647,477L6653,475L6653,472L6668,472L6671,470L6668,470L6666,467L6664,462L6677,462L6681,459L6681,457L6684,454L6686,454L6686,452L6681,452L6686,449L6692,449L6692,444L6697,444L6697,439L6705,439L6710,436L6710,434L6714,434L6714,426L6712,426L6710,424L6712,421L6716,419L6718,416L6720,416L6720,413L6723,413L6723,411L6725,411L6723,408L6720,408L6716,406L6714,406L6714,403L6705,403L6703,401L6701,401L6699,398L6697,398L6697,396L6694,391L6694,388L6697,388L6697,385L6699,383L6699,378L6697,378L6697,375L6694,375L6701,368L6699,368L6699,365L6697,365L6697,362L6694,362L6694,360L6697,360L6699,357L6697,357L6697,355L6692,355L6692,352L6694,352L6697,350L6703,350L6703,345L6701,345L6701,342L6699,342L6703,340L6703,332L6701,332L6699,329L6699,324L6694,324L6690,322L6684,322L6684,319L6681,319L6677,317L6675,314L6675,311L6681,311L6690,306L6690,301L6694,301L6694,299L6697,299L6697,296L6701,291L6701,289L6705,289L6705,286L6703,286L6703,281L6701,278L6701,276L6703,276L6703,273L6697,273L6688,271L6681,271L6679,268L6670,266L6655,263L6655,259L6668,256L6659,249L6639,249L6627,252L6625,262L6634,263L6651,260L6646,268L6628,268L6612,268L6616,266L6606,266L6606,268L6603,271L6601,271L6601,273L6597,273L6586,299L6578,308L6574,310L6569,311L6564,314L6560,314L6554,317L6551,319L6541,319L6540,321L6538,324L6536,324L6536,327L6538,327L6536,329L6536,332L6532,332L6532,337L6543,337L6543,334L6549,334L6549,337L6551,337L6551,340L6549,340L6549,342L6547,345L6549,347L6547,350L6545,355L6549,357L6554,362L6552,362L6552,364L6545,364L6545,362L6541,361L6540,362L6536,375L6538,378L6541,378L6541,373L6547,373L6551,375L6560,375L6560,378L6564,378L6569,380L6571,380L6571,378L6573,378L6573,383L6571,383L6571,388L6573,388L6577,391L6580,393L6582,393L6582,396L6586,396L6588,398L6595,398L6595,396L6603,396L6595,406L6595,408L6593,411L6590,411L6586,416L6586,419L6584,419L6582,421L6575,421L6575,419L6577,416L6573,413L6564,413L6564,411L6562,411L6560,408L6558,408L6554,406L6547,406L6543,403L6543,398L6530,398L6523,396L6519,396L6517,393L6517,391L6516,391L6515,406L6489,432L6449,448L6429,476L6407,486L6373,516L6347,516L6339,532L6353,542L6339,566L6341,614L6317,712L6315,722L6323,730L6327,747L6317,764L6317,776L6299,778L6297,792L6279,800L6279,822L6321,824L6331,844L6309,860L6287,854L6280,859L6293,882L6327,868L6336,878L6323,902L6325,931L6351,938L6372,944L6372,941L6374,941L6376,939L6374,936L6374,934L6372,934L6372,931L6367,931L6367,926L6376,921L6378,921L6378,918L6400,918L6402,921L6406,918L6406,913L6398,913L6396,911L6387,911L6387,908L6380,908L6380,906L6383,901L6380,901L6378,898L6376,898L6380,893L6383,893L6383,890L6376,890L6376,888L6378,888L6380,885L6385,883L6389,883L6389,885L6400,885L6400,888L6404,888L6404,885L6413,885L6417,890L6419,890L6419,883L6435,883L6435,880L6443,880L6445,878L6456,878L6456,880L6458,878L6458,875L6469,875L6474,872L6478,875L6480,875L6482,872L6486,872L6489,875L6493,875L6493,867L6495,867L6499,865L6508,865L6510,862L6515,862L6515,865L6521,865L6521,862L6536,862L6536,860L6549,860L6549,857L6562,857L6564,855L6567,855L6569,852L6569,855L6575,855L6580,852L6580,850L6575,850L6575,847L6588,847L6588,844L6590,842L6595,842L6595,839L6601,839L6603,842L6608,839L6610,842L6621,842L6623,844L6623,847L6629,847L6632,850L6632,847L6634,847L6638,842L6638,842L6645,826L6663,810z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5543,749L5560,750L5563,748L5559,741L5554,735L5547,739L5542,745L5543,749zM5544,689L5551,690L5554,694L5558,690L5556,685L5559,682L5577,682L5582,684L5586,682L5587,675L5587,672L5592,673L5597,670L5591,660L5585,653L5577,649L5569,648L5549,635L5535,637L5524,641L5523,645L5517,647L5515,652L5526,657L5530,663L5530,669L5536,672L5544,689zM5623,609L5628,612L5635,620L5640,623L5643,627L5634,628L5639,630L5644,635L5651,639L5658,640L5664,643L5666,644L5673,652L5669,656L5669,659L5679,659L5683,653L5690,653L5693,649L5693,642L5686,638L5683,632L5678,626L5671,623L5675,619L5677,611L5675,606L5673,604L5641,591L5639,594L5645,601L5649,603L5655,603L5660,606L5664,607L5668,612L5668,617L5658,618L5663,621L5661,626L5655,625L5654,620L5650,616L5649,613L5646,613L5645,616L5646,619L5639,619L5635,617L5635,612L5630,611L5624,606L5623,609zM5739,733L5738,736L5728,737L5730,741L5741,745L5744,752L5754,750L5756,746L5762,745L5765,740L5758,735L5752,735L5746,726L5737,720L5728,720L5730,725L5735,725L5738,728L5739,733zM5557,837L5540,847L5540,847L5538,844L5538,842L5540,839L5540,832L5538,832L5536,834L5531,829L5521,824L5512,824L5501,829L5497,829L5497,827L5499,824L5499,821L5497,821L5492,819L5486,819L5484,821L5479,821L5479,819L5477,819L5477,816L5469,816L5469,819L5466,819L5464,816L5464,814L5466,811L5464,806L5462,804L5460,799L5456,793L5458,793L5456,791L5451,791L5456,781L5456,778L5453,776L5451,776L5447,773L5445,773L5447,770L5440,770L5440,768L5447,760L5453,760L5453,758L5450,754L5453,755L5455,758L5460,760L5464,759L5462,753L5456,748L5450,748L5446,746L5447,742L5451,742L5455,739L5453,730L5454,726L5450,723L5451,722L5453,719L5453,717L5458,712L5464,712L5464,709L5462,707L5460,707L5460,699L5458,699L5460,697L5464,697L5464,699L5466,699L5469,702L5469,699L5471,699L5471,694L5473,694L5477,697L5486,697L5486,694L5488,694L5488,691L5490,689L5492,689L5501,691L5512,691L5514,694L5521,694L5521,689L5512,689L5512,684L5486,684L5486,681L5484,679L5479,679L5477,676L5475,676L5473,674L5479,674L5477,671L5475,671L5475,668L5479,668L5479,666L5473,666L5471,668L5469,668L5469,671L5456,671L5466,663L5469,661L5471,661L5473,658L5477,658L5477,656L5479,656L5482,653L5486,651L5488,651L5490,648L5495,648L5495,646L5497,646L5510,638L5518,628L5521,628L5525,623L5531,617L5533,617L5536,615L5538,615L5542,612L5544,610L5549,607L5551,607L5551,605L5555,600L5555,597L5557,597L5557,595L5559,595L5557,592L5553,589L5549,584L5546,584L5540,579L5533,577L5527,577L5527,574L5525,574L5523,572L5521,572L5514,566L5518,566L5521,564L5523,564L5527,559L5529,559L5531,556L5531,551L5529,551L5525,549L5523,549L5521,546L5516,546L5516,541L5514,541L5514,538L5521,538L5521,536L5518,533L5510,533L5508,531L5505,531L5505,528L5503,526L5503,523L5512,523L5512,521L5510,518L5503,518L5505,515L5508,515L5508,508L5510,508L5510,505L5514,503L5516,503L5518,505L5518,503L5516,500L5516,495L5512,490L5512,487L5508,487L5508,485L5505,482L5503,482L5503,480L5497,472L5497,470L5492,470L5492,467L5490,467L5490,464L5488,464L5488,462L5490,462L5490,459L5512,444L5514,444L5514,442L5516,439L5508,434L5505,434L5501,429L5482,421L5477,421L5475,416L5471,411L5473,408L5477,406L5482,401L5479,398L5475,398L5479,396L5482,393L5492,393L5492,391L5495,391L5495,385L5499,385L5501,383L5505,383L5512,380L5516,380L5516,378L5525,377L5527,375L5529,378L5540,378L5540,370L5549,370L5553,373L5562,373L5562,368L5570,368L5568,365L5568,362L5572,362L5572,365L5577,365L5579,368L5583,368L5583,370L5601,370L5601,375L5581,375L5583,378L5588,378L5592,380L5598,380L5598,383L5603,380L5611,380L5611,383L5607,385L5611,385L5612,392L5614,393L5614,390L5614,385L5637,385L5644,388L5659,388L5657,385L5661,385L5666,388L5676,388L5687,393L5696,393L5696,396L5698,396L5709,398L5713,401L5718,401L5722,403L5726,403L5728,406L5731,406L5735,408L5737,411L5746,413L5748,413L5748,416L5754,416L5763,419L5767,421L5772,421L5778,424L5778,426L5793,426L5796,429L5798,429L5800,431L5804,431L5802,434L5804,434L5804,436L5819,436L5822,439L5822,447L5824,447L5824,454L5830,454L5830,457L5828,462L5828,464L5826,464L5824,467L5822,467L5822,470L5819,470L5804,480L5800,480L5798,482L5796,482L5796,485L5787,485L5780,487L5774,487L5774,490L5759,490L5754,493L5750,493L5741,490L5728,490L5722,487L5720,487L5718,485L5696,485L5692,482L5679,482L5674,480L5663,480L5657,477L5655,477L5655,475L5650,475L5648,472L5646,472L5646,475L5635,475L5635,472L5629,472L5624,470L5620,470L5620,467L5614,467L5614,470L5611,470L5605,467L5603,467L5601,464L5596,462L5592,462L5592,457L5583,457L5579,454L5577,457L5578,460L5583,459L5585,460L5585,462L5583,464L5590,467L5596,467L5596,470L5603,470L5605,472L5609,475L5605,475L5607,477L5616,477L5618,480L5614,480L5609,482L5616,482L5618,485L5631,485L5635,487L5637,490L5642,490L5646,493L5648,498L5650,498L5653,503L5648,503L5648,500L5644,500L5644,503L5646,505L5646,508L5644,510L5640,510L5637,513L5635,513L5640,518L5644,518L5644,523L5646,523L5648,526L5646,526L5650,531L5653,538L5648,538L5648,541L5653,541L5653,544L5661,549L5666,549L5668,546L5676,546L5680,548L5682,548L5682,551L5684,551L5689,554L5689,556L5687,559L5698,559L5702,561L5715,561L5715,564L5718,566L5725,566L5725,563L5729,563L5731,561L5735,561L5737,559L5739,559L5739,554L5737,554L5735,551L5735,549L5731,546L5731,544L5728,544L5724,546L5713,546L5709,541L5707,541L5702,536L5700,536L5700,533L5696,533L5694,531L5694,528L5700,528L5705,526L5705,521L5709,518L5711,518L5711,521L5720,521L5722,523L5728,523L5728,528L5735,528L5735,531L5748,531L5746,533L5763,533L5772,536L5776,538L5778,538L5778,541L5786,540L5787,536L5790,533L5794,533L5796,535L5799,533L5799,530L5801,527L5796,523L5793,523L5793,521L5791,518L5789,518L5787,515L5785,515L5785,508L5787,505L5793,505L5802,500L5804,500L5806,498L5809,498L5809,495L5813,495L5813,493L5828,493L5830,490L5832,490L5839,487L5841,485L5843,485L5848,480L5850,480L5850,477L5852,477L5852,475L5854,475L5858,477L5865,477L5865,480L5884,480L5889,482L5891,482L5893,485L5893,487L5902,487L5904,490L5904,493L5908,498L5908,493L5906,490L5906,482L5908,482L5908,480L5910,480L5910,477L5913,477L5915,475L5915,472L5917,472L5913,467L5917,467L5917,462L5915,459L5913,459L5910,457L5908,457L5908,454L5897,454L5897,450L5899,450L5899,448L5906,440L5908,440L5908,430L5910,425L5910,422L5912,422L5912,420L5910,420L5906,416L5904,416L5900,413L5895,413L5893,411L5891,411L5884,408L5882,406L5893,406L5897,408L5902,408L5904,411L5943,410L5945,412L5956,412L5958,413L5960,416L5967,421L5969,421L5973,424L5973,426L5975,429L5978,429L5978,431L5980,431L5980,434L5962,434L5954,436L5939,436L5939,439L5941,439L5941,442L5932,442L5932,444L5930,444L5930,447L5928,447L5928,449L5930,449L5934,452L5936,452L5941,454L5947,454L5949,457L5949,459L5952,459L5954,464L5960,467L5967,467L5969,464L5975,464L5975,467L5980,467L5984,464L5995,464L5995,462L6006,462L6006,459L6008,459L6008,457L6006,454L6012,447L6012,444L6010,444L6010,442L6014,439L6029,439L6032,436L6034,436L6036,434L6036,431L6038,431L6040,434L6042,434L6042,431L6049,431L6058,429L6062,429L6062,426L6068,426L6071,424L6073,424L6075,421L6081,421L6084,419L6088,419L6090,416L6096,415L6100,412L6127,411L6131,408L6131,411L6136,411L6136,413L6131,413L6131,416L6129,416L6131,419L6133,419L6138,416L6140,416L6140,413L6146,413L6146,411L6140,411L6140,408L6142,408L6142,406L6144,403L6151,403L6153,401L6159,401L6162,398L6166,398L6172,396L6185,396L6181,398L6179,398L6181,401L6179,401L6177,403L6177,406L6172,406L6172,408L6175,408L6177,411L6179,411L6179,413L6182,416L6162,417L6160,420L6178,421L6185,419L6185,421L6188,421L6192,419L6198,419L6198,421L6207,421L6207,419L6205,419L6207,416L6207,413L6209,413L6216,411L6218,411L6222,408L6233,408L6235,406L6237,406L6240,408L6250,408L6253,406L6255,406L6255,408L6261,408L6266,411L6268,411L6272,408L6276,408L6276,406L6281,403L6283,403L6285,401L6289,401L6289,403L6292,403L6292,401L6296,398L6298,398L6298,401L6300,403L6300,398L6305,398L6309,396L6320,396L6318,398L6322,398L6326,401L6328,401L6331,403L6331,406L6324,406L6322,408L6322,413L6324,413L6324,416L6344,416L6346,413L6346,411L6344,408L6341,408L6341,406L6344,406L6344,403L6346,403L6348,406L6359,406L6361,403L6363,403L6365,401L6367,401L6370,398L6374,398L6374,391L6363,391L6363,385L6359,383L6357,380L6354,380L6354,378L6352,375L6354,373L6365,373L6365,370L6367,370L6367,368L6385,368L6387,370L6422,370L6424,373L6443,373L6463,378L6469,378L6471,380L6476,380L6478,383L6484,383L6484,385L6489,385L6491,388L6497,388L6499,391L6504,391L6506,393L6512,393L6512,391L6516,391L6515,406L6489,432L6449,448L6429,476L6407,486L6373,516L6347,516L6339,532L6353,542L6339,566L6341,614L6332,648L6296,645L6252,655L6193,668L6160,665L6131,674L6131,696C6131,696 6085,711 6081,711C6078,711 6064,721 6064,721L6047,715L6031,702L6031,672L6000,668L5988,678L5990,705L5981,718L5961,729L5898,729L5856,728L5838,734L5821,749L5807,751L5775,740L5769,745L5749,756L5735,759L5722,743L5674,759L5627,764L5611,786L5585,798L5550,808L5557,837zM6127,315L6139,310L6145,312L6132,320L6143,322L6154,329L6160,324L6170,324L6168,331L6170,336L6192,336L6201,338L6219,340L6222,339L6250,345L6263,345L6273,345L6277,340L6270,335L6242,324L6229,310L6220,298L6221,288L6222,282L6230,277L6245,266L6261,254L6280,244L6288,238L6288,232L6303,228L6310,220L6309,216L6317,217L6326,218L6326,210L6336,212L6346,210L6359,205L6368,200L6362,197L6375,195L6385,188L6390,191L6404,185L6416,183L6436,178L6449,177L6464,174L6473,165L6471,158L6453,155L6439,156L6432,159L6421,158L6410,158L6394,158L6379,158L6374,161L6363,161L6349,161L6352,166L6342,166L6333,166L6321,166L6309,176L6294,176L6293,178L6283,180L6284,186L6276,185L6269,185L6258,188L6260,190L6258,194L6244,191L6236,191L6232,194L6240,199L6248,199L6247,202L6235,204L6250,207L6241,207L6232,207L6225,209L6232,215L6222,218L6217,221L6212,224L6202,230L6197,230L6183,237L6173,237L6174,242L6186,244L6198,242L6186,251L6178,254L6160,256L6159,264L6145,267L6138,271L6145,276L6146,280L6137,293L6118,293L6110,300L6112,310L6127,315zM5313,855L5310,855L5306,850L5297,850L5297,852L5293,852L5284,850L5284,847L5280,847L5276,844L5271,844L5271,847L5269,847L5271,852L5271,855L5267,857L5261,857L5258,855L5252,855L5252,852L5248,855L5235,855L5235,860L5238,862L5250,862L5250,864L5240,867L5236,867L5236,870L5237,872L5248,872L5256,875L5313,875L5315,872L5313,872L5313,870L5310,870L5310,867L5313,867L5313,862L5315,860L5317,860L5317,857L5315,857L5313,855zM6335,370L6337,373L6350,373L6354,370L6362,369L6363,368L6361,365L6357,365L6357,362L6354,362L6350,360L6344,360L6341,357L6333,352L6331,352L6331,350L6326,350L6322,347L6315,347L6313,350L6309,352L6311,352L6313,355L6309,355L6305,352L6305,355L6302,355L6307,357L6309,357L6309,360L6311,362L6320,368L6328,365L6333,365L6337,368L6337,370L6335,370zM6029,403L6021,398L6021,393L6021,388L6023,388L6023,385L6025,385L6025,383L6027,383L6029,380L6032,380L6038,378L6051,378L6051,380L6058,380L6066,385L6073,385L6075,388L6079,391L6075,396L6073,396L6073,393L6075,393L6075,391L6073,391L6068,393L6066,396L6064,396L6062,398L6060,398L6055,401L6053,401L6047,403L6029,403z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5948,986L5925,971L5883,974L5856,969L5835,980L5841,996L5810,1014L5784,1029L5787,1031L5791,1031L5791,1028L5793,1028L5796,1031L5793,1031L5793,1033L5796,1036L5796,1038L5798,1038L5798,1041L5793,1043L5791,1043L5791,1048L5783,1048L5783,1051L5787,1051L5787,1056L5785,1056L5785,1059L5783,1061L5783,1064L5789,1064L5789,1069L5791,1071L5791,1074L5789,1074L5789,1077L5787,1082L5787,1087L5759,1087L5759,1092L5757,1092L5754,1094L5746,1094L5746,1097L5744,1097L5744,1102L5746,1105L5744,1107L5741,1107L5741,1110L5759,1110L5763,1107L5765,1105L5772,1105L5772,1115L5770,1115L5767,1112L5765,1115L5763,1115L5761,1117L5759,1117L5757,1120L5748,1120L5752,1126L5744,1125L5744,1122L5739,1125L5737,1128L5733,1128L5732,1126L5731,1125L5728,1125L5731,1130L5735,1135L5741,1135L5744,1138L5744,1140L5746,1140L5748,1143L5752,1143L5752,1145L5746,1145L5746,1143L5741,1143L5741,1146L5739,1145L5735,1145L5735,1148L5733,1150L5733,1156L5731,1156L5728,1158L5728,1171L5726,1168L5715,1168L5715,1171L5711,1171L5711,1168L5707,1166L5701,1166L5701,1168L5707,1168L5707,1171L5705,1171L5705,1173L5698,1173L5698,1176L5705,1176L5713,1181L5715,1181L5718,1184L5720,1189L5722,1191L5731,1191L5731,1189L5733,1189L5741,1199L5744,1199L5746,1201L5754,1201L5757,1204L5759,1204L5759,1207L5763,1207L5765,1209L5772,1214L5774,1217L5776,1217L5776,1219L5778,1219L5787,1230L5789,1230L5789,1232L5793,1232L5793,1227L5802,1227L5806,1230L5809,1230L5809,1227L5813,1227L5813,1230L5817,1230L5819,1232L5826,1232L5832,1235L5835,1237L5837,1237L5848,1240L5850,1240L5852,1237L5861,1237L5863,1240L5871,1240L5874,1242L5876,1242L5880,1247L5887,1247L5889,1250L5893,1250L5893,1252L5900,1252L5900,1255L5897,1255L5895,1258L5910,1258L5910,1255L5913,1255L5917,1252L5921,1252L5923,1255L5926,1255L5928,1252L5930,1252L5930,1255L5936,1255L5941,1260L5952,1260L5952,1265L5949,1268L5949,1270L5958,1278L5967,1278L5969,1281L5975,1281L5975,1283L5980,1283L5980,1286L5982,1286L5988,1293L5988,1291L5991,1291L5991,1293L5995,1298L5993,1298L5995,1301L5997,1301L6001,1303L6012,1303L6012,1298L6016,1296L6019,1296L6019,1293L6021,1293L6025,1291L6027,1291L6029,1286L6029,1281L6025,1281L6023,1278L6023,1275L6016,1268L6016,1265L6014,1265L6012,1263L6012,1260L6010,1260L6010,1258L6006,1258L6006,1250L6003,1250L6003,1247L6001,1247L5999,1245L5999,1237L6001,1237L6003,1235L5999,1235L5999,1230L6002,1226L6006,1214L6002,1218L5999,1219L5995,1207L5991,1207L5988,1204L5988,1201L5986,1201L5982,1199L5978,1199L5978,1194L5980,1191L5980,1189L5984,1189L5984,1186L5988,1186L5991,1184L5991,1181L5997,1173L5999,1168L5999,1166L6001,1163L5999,1161L6001,1161L6003,1160L6003,1161L6006,1161L6006,1159L6010,1158L6010,1156L6021,1156L6025,1150L6027,1150L6029,1148L6032,1148L6032,1150L6034,1153L6036,1153L6034,1148L6034,1145L6032,1145L6034,1143L6040,1143L6042,1140L6047,1138L6049,1138L6049,1135L6047,1135L6040,1130L6038,1133L6038,1130L6034,1130L6034,1128L6032,1130L6029,1130L6029,1128L6027,1125L6027,1122L6034,1122L6036,1125L6040,1125L6042,1122L6042,1120L6034,1112L6032,1105L6025,1097L6023,1097L6021,1094L6021,1092L6019,1089L6003,1089L6001,1087L5997,1087L5997,1092L5993,1089L5991,1089L5991,1074L5986,1071L5982,1071L5978,1069L5973,1069L5973,1064L5975,1061L5980,1051L5982,1051L5984,1048L5986,1048L5986,1046L5988,1046L5988,1041L5984,1041L5984,1038L5982,1038L5982,1031L5984,1020L5988,1020L5988,1018L5993,1018L5993,1015L5995,1015L5997,1013L5995,1013L5995,1008L5997,1005L5999,1005L5999,1004L5988,987L5948,986z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6389,969L6378,969L6376,967L6374,967L6374,964L6363,964L6359,962L6359,959L6361,959L6361,957L6354,954L6352,954L6352,957L6350,957L6350,954L6348,954L6348,952L6354,952L6359,946L6367,946L6367,944L6372,944L6351,938L6325,931L6323,902L6336,878L6327,868L6293,882L6280,859L6287,854L6309,860L6331,844L6321,824L6279,822L6279,800L6297,792L6299,778L6317,776L6317,764L6327,747L6323,730L6315,722L6317,712L6332,648L6296,645L6252,655L6193,668L6160,665L6131,674L6131,696C6131,696 6085,711 6081,711C6078,711 6064,721 6064,721L6047,715L6031,702L6031,672L6000,668L5988,678L5990,705L5986,711L5994,717L6002,737L5984,747L5969,767L5931,770L5921,782L5883,783L5885,804L5871,813L5879,827L5846,851L5862,861L5862,882L5858,906L5880,932L5871,959L5876,972L5883,974L5925,971L5948,986L5988,987L5999,1004L5999,1003L6003,1003L6012,1008L6016,1013L6019,1013L6019,1018L6021,1020L6025,1023L6027,1023L6027,1020L6034,1020L6036,1018L6038,1018L6040,1015L6036,1010L6036,1008L6034,1005L6034,997L6038,997L6042,995L6042,992L6045,992L6045,990L6053,990L6053,985L6051,985L6053,982L6053,980L6066,980L6068,977L6071,977L6071,975L6079,975L6079,969L6086,969L6086,962L6088,962L6090,964L6092,964L6092,962L6090,959L6094,959L6094,962L6107,962L6110,964L6105,964L6105,967L6110,969L6112,967L6116,967L6116,969L6118,969L6120,967L6120,964L6123,962L6129,962L6129,959L6136,959L6138,964L6138,967L6140,967L6140,969L6144,969L6144,967L6149,967L6151,969L6153,969L6155,967L6166,967L6170,972L6170,975L6172,977L6179,977L6185,980L6185,985L6188,985L6190,987L6194,987L6194,992L6192,992L6192,997L6194,997L6194,1000L6196,1000L6198,997L6201,997L6201,995L6198,992L6201,990L6201,987L6196,987L6196,982L6201,982L6209,987L6216,995L6224,995L6224,997L6227,997L6227,1000L6229,1000L6229,997L6231,997L6233,995L6237,995L6240,992L6240,990L6242,987L6246,987L6248,985L6248,982L6253,982L6253,985L6257,985L6257,980L6259,980L6259,982L6268,982L6268,980L6270,982L6272,982L6274,987L6285,987L6285,980L6287,980L6296,982L6298,982L6298,980L6302,980L6307,982L6309,982L6309,985L6307,987L6309,987L6311,990L6318,992L6318,995L6333,995L6335,997L6333,997L6333,1000L6341,1000L6341,997L6344,997L6344,995L6346,992L6346,990L6348,990L6348,987L6352,987L6352,992L6354,992L6357,995L6370,995L6374,992L6383,992L6385,990L6387,990L6389,987L6389,982L6391,977L6391,975L6389,969z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5880,932L5858,906L5862,882L5862,861L5846,851L5879,827L5871,813L5885,804L5883,783L5921,782L5931,770L5969,767L5984,747L6002,737L5994,717L5986,711L5981,718L5961,729L5898,729L5856,728L5838,734L5821,749L5807,751L5775,740L5769,745L5749,756L5735,759L5722,743L5674,759L5627,764L5611,786L5585,798L5550,808L5557,837L5540,847L5542,847L5542,852L5540,855L5538,855L5536,857L5536,860L5540,860L5546,867L5544,867L5544,870L5549,870L5551,875L5551,878L5562,883L5566,883L5566,890L5564,890L5564,893L5570,893L5572,890L5583,895L5581,898L5581,901L5583,901L5588,903L5590,903L5590,906L5588,908L5583,911L5581,911L5577,916L5568,916L5564,913L5564,911L5553,911L5553,916L5551,916L5549,918L5553,921L5555,921L5555,924L5557,924L5559,926L5557,929L5555,929L5557,931L5559,931L5560,941L5562,944L5564,944L5564,945L5564,946L5566,946L5566,948L5566,949L5577,949L5577,946L5579,946L5579,941L5581,941L5581,939L5585,941L5592,941L5594,944L5596,944L5596,941L5598,941L5603,939L5609,939L5611,941L5614,939L5620,939L5627,944L5629,946L5627,946L5627,949L5629,949L5629,952L5633,954L5635,957L5637,957L5637,959L5635,959L5633,962L5629,962L5631,964L5631,967L5633,967L5633,969L5635,975L5637,975L5642,977L5657,977L5657,982L5663,982L5661,985L5663,985L5663,987L5666,990L5666,992L5668,995L5663,995L5666,1000L5670,1005L5672,1005L5674,1003L5687,1003L5687,1005L5689,1008L5692,1008L5692,1005L5694,1008L5696,1008L5696,1010L5698,1010L5702,1005L5715,1005L5715,1003L5722,1003L5726,1010L5728,1013L5731,1013L5731,1015L5735,1015L5735,1018L5737,1018L5737,1020L5741,1015L5746,1013L5746,1015L5748,1018L5757,1018L5759,1020L5761,1020L5763,1023L5767,1023L5767,1020L5770,1020L5772,1023L5772,1026L5776,1026L5776,1023L5778,1023L5778,1026L5780,1026L5780,1028L5783,1028L5784,1029L5810,1014L5841,996L5835,980L5856,969L5876,972L5871,959L5880,932z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7821,3494L7820,3486L7817,3484L7818,3495L7821,3502L7825,3504L7826,3502L7821,3494zM8261,3136L8282,3685L8271,3685L8265,3688L8263,3688L8258,3690L8256,3690L8237,3701L8232,3701L8228,3703L8224,3703L8217,3706L8215,3706L8213,3708L8191,3708L8189,3706L8180,3706L8169,3713L8167,3713L8167,3716L8161,3716L8159,3718L8152,3721L8150,3724L8150,3726L8143,3726L8143,3729L8133,3729L8128,3734L8128,3736L8124,3744L8124,3749L8122,3749L8122,3752L8120,3752L8117,3754L8117,3757L8115,3757L8113,3759L8107,3759L8107,3762L8104,3762L8102,3764L8100,3762L8100,3759L8085,3759L8081,3762L8076,3762L8076,3764L8072,3764L8072,3759L8070,3759L8070,3757L8065,3757L8065,3759L8061,3759L8057,3757L8048,3757L8044,3759L8029,3759L8026,3762L8020,3762L8016,3759L8013,3762L8007,3762L8007,3764L8005,3764L8005,3767L8003,3767L8000,3772L7998,3772L7998,3775L7996,3777L7992,3780L7990,3780L7987,3777L7983,3777L7979,3780L7979,3785L7974,3785L7972,3787L7970,3787L7970,3790L7968,3790L7966,3792L7956,3799L7948,3800L7940,3798L7935,3795L7929,3795L7929,3798L7925,3798L7922,3795L7920,3798L7916,3795L7914,3795L7912,3792L7909,3792L7907,3790L7903,3790L7901,3787L7901,3785L7896,3782L7892,3777L7888,3775L7886,3775L7883,3772L7879,3772L7879,3775L7877,3775L7875,3772L7875,3759L7873,3754L7873,3752L7875,3747L7877,3749L7877,3752L7886,3752L7894,3741L7894,3729L7892,3729L7893,3714L7895,3712L7894,3708L7894,3706L7896,3706L7896,3693L7894,3688L7894,3685L7892,3685L7886,3670L7886,3668L7881,3662L7881,3660L7879,3657L7877,3652L7877,3647L7875,3642L7875,3634L7873,3634L7873,3619L7875,3619L7875,3616L7873,3611L7873,3606L7866,3599L7866,3596L7864,3596L7864,3588L7862,3583L7855,3576L7855,3573L7853,3573L7853,3571L7851,3571L7851,3565L7849,3563L7849,3560L7851,3560L7851,3553L7849,3550L7849,3545L7845,3540L7842,3532L7840,3532L7838,3527L7834,3522L7834,3520L7832,3520L7827,3514L7826,3511L7827,3507L7829,3504L7834,3509L7834,3517L7838,3522L7842,3522L7842,3509L7839,3510L7834,3504L7834,3497L7832,3494L7832,3492L7829,3492L7832,3489L7832,3486L7834,3486L7834,3489L7840,3497L7840,3502L7838,3502L7838,3504L7840,3507L7842,3507L7842,3504L7845,3502L7845,3509L7847,3512L7849,3517L7853,3514L7853,3509L7851,3507L7853,3502L7855,3499L7855,3497L7849,3489L7847,3484L7845,3484L7845,3479L7842,3476L7842,3474L7838,3474L7838,3469L7836,3466L7836,3458L7834,3458L7834,3456L7832,3456L7832,3451L7829,3451L7829,3443L7832,3441L7832,3435L7834,3433L7834,3428L7836,3425L7836,3423L7838,3423L7840,3420L7840,3407L7842,3405L7842,3400L7840,3397L7840,3395L7838,3395L7838,3387L7840,3387L7842,3382L7842,3377L7845,3372L7845,3369L7847,3367L7849,3367L7849,3364L7851,3364L7851,3367L7849,3377L7851,3379L7851,3387L7853,3387L7858,3384L7858,3382L7860,3377L7862,3374L7864,3369L7864,3367L7866,3367L7866,3364L7868,3364L7870,3361L7875,3361L7877,3359L7879,3359L7881,3356L7883,3356L7888,3354L7894,3346L7899,3346L7899,3341L7901,3341L7901,3339L7907,3339L7907,3336L7909,3333L7912,3333L7916,3331L7918,3328L7920,3328L7922,3326L7925,3326L7925,3328L7929,3328L7931,3326L7935,3326L7935,3328L7951,3328L7951,3326L7955,3326L7955,3323L7957,3323L7959,3321L7959,3318L7961,3318L7964,3316L7964,3318L7966,3318L7970,3316L7981,3316L7981,3313L7985,3308L7985,3305L7987,3305L7992,3303L7996,3305L7998,3305L8000,3308L8003,3308L8005,3305L8007,3305L8013,3303L8020,3303L8022,3300L8024,3300L8029,3298L8037,3295L8039,3293L8042,3293L8044,3290L8046,3290L8050,3285L8050,3282L8055,3277L8055,3275L8057,3272L8059,3267L8063,3262L8063,3254L8070,3254L8070,3252L8072,3249L8078,3244L8078,3242L8081,3242L8078,3239L8076,3239L8076,3237L8074,3231L8074,3216L8076,3211L8076,3208L8078,3208L8081,3206L8085,3206L8085,3201L8087,3201L8089,3198L8091,3193L8094,3193L8094,3188L8098,3188L8098,3191L8096,3191L8096,3196L8098,3196L8098,3198L8100,3198L8100,3201L8102,3206L8107,3211L8107,3216L8111,3221L8111,3224L8113,3224L8113,3219L8115,3214L8113,3211L8113,3206L8115,3206L8117,3208L8117,3211L8120,3211L8120,3206L8122,3203L8117,3203L8117,3201L8113,3196L8113,3193L8111,3193L8109,3191L8115,3191L8117,3188L8117,3186L8113,3186L8113,3180L8117,3178L8120,3180L8120,3186L8122,3188L8122,3186L8124,3183L8128,3183L8130,3186L8130,3188L8135,3188L8135,3180L8137,3178L8139,3178L8139,3180L8141,3178L8141,3173L8139,3173L8137,3170L8135,3165L8135,3163L8137,3157L8143,3157L8143,3150L8146,3150L8156,3143L8160,3143L8159,3140L8159,3137L8156,3135L8156,3132L8161,3127L8167,3127L8169,3125L8169,3117L8172,3117L8173,3122L8176,3124L8176,3129L8178,3129L8180,3127L8182,3127L8182,3119L8185,3117L8182,3109L8182,3106L8185,3106L8187,3109L8187,3114L8189,3117L8189,3112L8193,3109L8193,3112L8195,3117L8198,3117L8200,3114L8202,3109L8202,3101L8208,3101L8211,3104L8211,3109L8213,3109L8213,3106L8219,3106L8230,3119L8232,3124L8241,3129L8243,3135L8240,3142L8239,3146L8244,3144L8250,3133L8257,3133L8261,3136z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8523,3199L8522,3198L8518,3198L8518,3196L8516,3196L8514,3193L8514,3191L8512,3191L8509,3188L8509,3186L8507,3186L8507,3183L8503,3180L8499,3180L8496,3178L8494,3178L8494,3175L8490,3173L8488,3173L8483,3170L8481,3173L8479,3170L8477,3170L8477,3168L8475,3165L8470,3163L8466,3163L8466,3157L8464,3155L8460,3152L8457,3150L8455,3150L8455,3147L8453,3147L8449,3145L8447,3142L8444,3142L8444,3140L8442,3140L8442,3137L8440,3132L8444,3132L8444,3127L8447,3127L8447,3124L8451,3117L8455,3117L8455,3109L8457,3104L8460,3101L8460,3099L8455,3099L8453,3096L8455,3091L8455,3086L8457,3083L8464,3083L8466,3081L8466,3078L8468,3078L8468,3083L8470,3083L8473,3081L8473,3068L8475,3071L8479,3061L8481,3058L8486,3055L8483,3053L8483,3050L8479,3050L8479,3053L8477,3053L8475,3050L8473,3043L8470,3043L8466,3045L8464,3048L8464,3050L8468,3050L8468,3053L8466,3058L8457,3058L8457,3055L8458,3051L8456,3048L8454,3050L8451,3051L8450,3050L8454,3041L8458,3038L8457,3035L8446,3046L8442,3048L8440,3048L8436,3053L8434,3053L8429,3050L8425,3045L8425,3043L8421,3043L8418,3045L8408,3045L8408,3043L8403,3038L8403,3040L8399,3040L8399,3038L8401,3035L8397,3035L8392,3038L8390,3038L8386,3035L8384,3035L8379,3035L8379,3033L8377,3030L8377,3027L8373,3022L8371,3022L8371,3025L8369,3027L8364,3027L8362,3022L8362,3020L8360,3020L8360,3017L8356,3015L8356,3017L8353,3017L8351,3015L8353,3021L8347,3015L8343,3017L8340,3020L8340,3022L8347,3022L8347,3025L8349,3027L8351,3027L8358,3025L8360,3025L8360,3027L8364,3033L8364,3048L8360,3048L8349,3053L8330,3053L8330,3050L8323,3050L8323,3048L8319,3048L8319,3050L8321,3050L8321,3055L8315,3055L8315,3058L8312,3058L8310,3055L8308,3055L8308,3063L8306,3063L8302,3066L8302,3073L8295,3073L8295,3081L8299,3086L8293,3094L8289,3094L8289,3091L8286,3094L8286,3101L8284,3109L8282,3109L8273,3119L8273,3122L8279,3124L8282,3128L8282,3132L8283,3135L8278,3136L8283,3140L8281,3144L8275,3137L8271,3137L8272,3144L8269,3144L8268,3137L8263,3136L8261,3136L8275,3498L8527,3494L8523,3199zM8475,3101L8475,3104L8470,3104L8470,3112L8468,3117L8475,3119L8477,3117L8479,3117L8481,3119L8483,3119L8486,3114L8483,3114L8481,3115L8479,3114L8477,3114L8477,3112L8479,3106L8481,3106L8483,3104L8483,3101L8481,3101L8481,3104L8477,3104L8477,3099L8475,3101zM8297,3038L8293,3038L8293,3033L8295,3033L8295,3035L8297,3033L8297,3027L8299,3022L8302,3022L8302,3025L8303,3028L8304,3029L8304,3025L8302,3020L8302,3017L8304,3017L8310,3025L8315,3022L8317,3022L8317,3020L8319,3022L8321,3022L8321,3020L8323,3020L8323,3022L8325,3022L8325,3017L8327,3017L8330,3020L8332,3020L8334,3025L8334,3027L8327,3035L8325,3035L8319,3043L8317,3040L8315,3040L8315,3038L8310,3038L8302,3038L8299,3035L8297,3038z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8945,3583L8945,3581L8947,3581L8947,3573L8945,3573L8945,3571L8943,3571L8943,3563L8940,3560L8940,3558L8938,3555L8938,3550L8936,3548L8932,3545L8932,3537L8934,3537L8934,3514L8932,3514L8932,3509L8934,3507L8934,3504L8936,3502L8936,3499L8932,3499L8932,3497L8930,3494L8927,3494L8927,3486L8930,3484L8927,3479L8925,3479L8923,3476L8921,3476L8919,3471L8917,3471L8917,3463L8914,3463L8914,3461L8910,3461L8910,3458L8908,3458L8904,3453L8904,3451L8901,3448L8901,3443L8899,3443L8897,3438L8893,3435L8893,3438L8891,3438L8888,3438L8891,3438L8888,3435L8886,3435L8884,3430L8880,3428L8883,3427L8882,3418L8875,3420L8871,3420L8869,3415L8869,3395L8867,3392L8867,3384L8865,3382L8862,3382L8862,3390L8860,3387L8858,3387L8856,3384L8852,3384L8852,3379L8849,3377L8849,3374L8846,3374L8845,3377L8846,3388L8842,3385L8839,3382L8836,3382L8836,3379L8832,3367L8832,3356L8830,3356L8828,3351L8828,3349L8826,3346L8826,3341L8823,3339L8819,3336L8817,3333L8815,3333L8813,3328L8810,3328L8810,3323L8813,3321L8817,3321L8813,3313L8810,3313L8806,3308L8804,3308L8804,3313L8802,3313L8800,3310L8800,3305L8797,3303L8789,3303L8789,3300L8787,3300L8787,3298L8785,3298L8785,3300L8782,3300L8780,3298L8780,3293L8778,3290L8776,3285L8772,3288L8767,3280L8765,3280L8763,3282L8761,3282L8759,3280L8754,3280L8754,3277L8752,3277L8748,3275L8748,3272L8746,3272L8743,3270L8743,3262L8746,3262L8744,3249L8737,3249L8737,3239L8739,3239L8739,3226L8733,3208L8733,3206L8735,3203L8730,3203L8722,3193L8722,3191L8720,3191L8720,3183L8722,3178L8722,3175L8720,3175L8720,3173L8717,3173L8717,3160L8715,3157L8715,3142L8717,3142L8717,3140L8713,3137L8711,3135L8707,3135L8707,3129L8702,3129L8696,3122L8696,3114L8694,3114L8694,3117L8691,3117L8691,3119L8689,3119L8685,3122L8683,3124L8674,3124L8674,3119L8672,3119L8672,3109L8670,3109L8670,3106L8668,3101L8668,3094L8670,3094L8670,3091L8668,3089L8668,3086L8665,3078L8668,3078L8668,3071L8665,3071L8663,3073L8663,3066L8665,3063L8661,3063L8661,3058L8659,3055L8655,3055L8655,3048L8659,3043L8657,3040L8650,3040L8648,3038L8648,3017L8646,3015L8646,3010L8642,3007L8642,3002L8637,3002L8637,3004L8635,3004L8635,3007L8633,3007L8631,3010L8629,3010L8629,3025L8626,3027L8626,3030L8624,3038L8624,3043L8620,3043L8620,3045L8618,3050L8618,3053L8616,3055L8618,3058L8618,3063L8620,3066L8620,3068L8618,3068L8618,3071L8616,3073L8613,3073L8613,3076L8616,3081L8616,3086L8613,3091L8613,3094L8611,3094L8611,3101L8609,3101L8609,3106L8611,3106L8611,3109L8613,3112L8613,3119L8611,3122L8611,3124L8613,3135L8613,3140L8616,3140L8616,3147L8613,3150L8609,3157L8609,3178L8607,3183L8607,3186L8605,3186L8605,3193L8603,3196L8603,3198L8596,3206L8596,3211L8594,3219L8594,3221L8592,3221L8587,3226L8583,3226L8583,3229L8579,3229L8572,3231L8568,3231L8568,3229L8566,3226L8561,3226L8559,3224L8557,3224L8557,3221L8553,3219L8548,3219L8548,3216L8546,3216L8546,3208L8542,3203L8538,3203L8533,3201L8527,3201L8523,3199L8527,3493L8529,3494L8610,3496L8610,3590L8816,3596L8821,3599L8833,3592L8843,3587L8862,3588L8874,3593L8880,3592L8884,3598L8887,3606L8893,3603L8901,3601L8912,3595L8909,3591L8916,3585L8923,3584L8939,3585L8947,3585L8947,3583L8945,3583zM8932,3494L8934,3494L8934,3492L8932,3492L8932,3489L8934,3486L8936,3481L8936,3479L8938,3476L8938,3474L8940,3469L8938,3469L8938,3458L8936,3458L8936,3461L8934,3463L8936,3463L8936,3471L8934,3471L8934,3474L8932,3474L8932,3481L8930,3481L8930,3484L8930,3494L8932,3494zM8553,3196L8555,3196L8555,3193L8557,3191L8559,3193L8561,3191L8561,3188L8555,3188L8551,3191L8548,3191L8546,3193L8546,3198L8551,3198L8553,3196zM8927,3486L8930,3484L8930,3494L8927,3494L8927,3486z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8611,3590L8610,3590L8610,3496L8529,3494L8527,3493L8527,3494L8275,3498L8282,3685L8291,3685L8295,3683L8299,3683L8310,3685L8315,3685L8319,3683L8321,3683L8321,3680L8325,3680L8327,3683L8332,3683L8334,3685L8338,3688L8340,3688L8343,3690L8351,3696L8351,3698L8360,3698L8360,3696L8369,3696L8371,3698L8375,3701L8377,3701L8377,3703L8382,3703L8386,3706L8388,3706L8388,3703L8395,3703L8399,3708L8399,3716L8401,3716L8401,3713L8408,3713L8410,3716L8410,3724L8408,3724L8408,3721L8405,3721L8405,3726L8408,3729L8410,3734L8410,3736L8414,3736L8418,3734L8421,3736L8423,3736L8425,3741L8425,3744L8427,3747L8427,3749L8425,3752L8429,3754L8431,3754L8431,3757L8436,3759L8438,3762L8438,3769L8440,3772L8440,3777L8435,3777L8435,3781L8444,3787L8447,3792L8449,3795L8449,3792L8453,3792L8455,3795L8457,3795L8460,3790L8460,3787L8457,3787L8455,3790L8454,3788L8455,3785L8455,3780L8460,3780L8462,3775L8464,3775L8464,3772L8466,3772L8466,3769L8468,3767L8468,3764L8470,3764L8475,3762L8477,3759L8481,3757L8483,3757L8483,3754L8490,3754L8494,3749L8496,3744L8496,3739L8499,3736L8499,3734L8503,3731L8507,3731L8507,3716L8509,3716L8509,3721L8512,3724L8512,3731L8514,3731L8514,3736L8509,3736L8509,3741L8512,3744L8512,3749L8509,3749L8507,3754L8503,3759L8503,3762L8501,3764L8501,3767L8499,3767L8499,3780L8501,3785L8499,3792L8499,3795L8496,3795L8494,3792L8486,3792L8486,3795L8483,3798L8483,3803L8481,3803L8481,3805L8486,3805L8486,3803L8492,3803L8499,3800L8503,3800L8503,3803L8505,3803L8507,3800L8507,3798L8509,3792L8509,3787L8512,3785L8512,3777L8514,3775L8514,3772L8516,3767L8520,3772L8520,3780L8522,3780L8527,3785L8527,3792L8529,3795L8529,3798L8527,3798L8527,3808L8525,3808L8520,3813L8518,3813L8516,3815L8518,3818L8529,3818L8529,3815L8531,3815L8531,3813L8535,3813L8540,3812L8544,3818L8555,3827L8560,3834L8564,3846L8564,3849L8566,3849L8566,3856L8564,3856L8564,3859L8561,3859L8561,3861L8564,3864L8564,3866L8561,3866L8564,3869L8564,3872L8566,3872L8570,3877L8572,3877L8572,3879L8579,3887L8579,3889L8583,3894L8585,3894L8587,3897L8592,3897L8592,3894L8595,3894L8610,3595L8611,3590zM8503,3821L8516,3821L8516,3826L8512,3826L8509,3825L8507,3825L8503,3826L8503,3831L8496,3831L8496,3828L8492,3828L8490,3828L8490,3831L8477,3831L8477,3828L8475,3828L8475,3826L8473,3826L8475,3821L8483,3818L8490,3818L8492,3815L8501,3815L8503,3818L8503,3821z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8939,3585L8923,3584L8916,3585L8909,3591L8912,3595L8901,3601L8893,3603L8887,3606L8884,3598L8880,3592L8874,3593L8862,3588L8843,3587L8833,3592L8821,3599L8816,3596L8611,3590L8610,3595L8602,3755L8609,3754L8620,3758L8630,3756L8640,3766L8641,3774L8647,3774L8659,3774L8661,3785L8671,3796L8679,3796L8688,3816L8695,3822L8708,3816L8717,3820L8736,3820L8749,3825L8769,3822L8778,3832L8781,3850L8789,3857L8812,3867L8840,3883L8841,3882L8841,3879L8845,3879L8847,3877L8845,3874L8845,3869L8847,3869L8847,3866L8845,3864L8845,3854L8847,3854L8847,3843L8849,3843L8849,3838L8852,3838L8852,3826L8856,3815L8858,3813L8860,3808L8860,3805L8862,3803L8865,3803L8867,3800L8867,3798L8869,3798L8869,3790L8871,3790L8871,3782L8873,3775L8873,3772L8875,3769L8878,3769L8880,3764L8878,3764L8878,3762L8882,3762L8882,3759L8886,3747L8888,3744L8888,3741L8886,3741L8888,3739L8891,3739L8893,3736L8893,3731L8897,3726L8901,3724L8906,3724L8906,3721L8908,3718L8910,3718L8912,3716L8912,3713L8914,3713L8917,3711L8917,3701L8919,3698L8919,3696L8921,3696L8921,3693L8925,3688L8925,3685L8927,3685L8927,3683L8930,3678L8930,3673L8932,3665L8932,3660L8930,3660L8930,3652L8932,3650L8934,3639L8936,3637L8938,3632L8938,3624L8940,3616L8940,3609L8943,3601L8943,3599L8945,3599L8945,3596L8947,3596L8947,3585L8939,3585z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8789,3857L8781,3850L8778,3832L8769,3822L8749,3825L8736,3820L8717,3820L8708,3816L8695,3822L8688,3816L8679,3796L8671,3796L8661,3785L8659,3774L8647,3774L8641,3774L8640,3766L8630,3756L8620,3758L8609,3754L8602,3755L8595,3894L8596,3894L8596,3897L8600,3897L8605,3902L8607,3902L8607,3905L8609,3905L8609,3907L8616,3907L8616,3902L8624,3902L8624,3905L8626,3905L8629,3907L8633,3907L8635,3905L8639,3907L8642,3910L8646,3912L8648,3912L8652,3915L8657,3915L8657,3917L8663,3917L8663,3920L8665,3920L8668,3923L8672,3920L8672,3917L8676,3917L8690,3904L8695,3904L8701,3902L8703,3897L8696,3897L8694,3896L8702,3892L8702,3889L8707,3889L8711,3894L8711,3900L8709,3905L8707,3905L8704,3907L8702,3907L8704,3910L8709,3910L8715,3902L8722,3902L8724,3905L8724,3907L8722,3907L8720,3910L8720,3912L8724,3915L8724,3917L8726,3917L8726,3915L8730,3915L8733,3917L8730,3917L8733,3923L8737,3923L8737,3920L8743,3925L8744,3930L8748,3932L8752,3926L8750,3921L8746,3922L8741,3917L8750,3917L8754,3915L8761,3915L8763,3912L8767,3910L8769,3907L8769,3905L8774,3902L8778,3897L8780,3897L8782,3894L8785,3894L8785,3892L8791,3892L8791,3889L8800,3889L8800,3887L8832,3887L8834,3884L8839,3884L8840,3883L8812,3867L8789,3857zM8791,3951L8789,3951L8785,3953L8785,3956L8787,3956L8789,3958L8791,3963L8793,3966L8793,3968L8795,3968L8800,3966L8800,3958L8795,3958L8795,3956L8791,3951zM8800,3989L8797,3986L8793,3984L8791,3984L8789,3986L8789,3989L8787,3989L8782,3986L8780,3986L8780,3989L8778,3989L8778,3991L8765,3991L8761,3994L8754,3994L8752,3996L8741,3996L8717,3986L8711,3986L8709,3984L8700,3984L8700,3989L8698,3989L8698,3994L8700,3996L8700,4002L8702,4004L8709,4019L8713,4022L8715,4025L8715,4030L8722,4035L8724,4035L8724,4037L8722,4042L8722,4040L8720,4040L8720,4037L8717,4035L8715,4035L8715,4032L8713,4032L8713,4035L8715,4040L8715,4045L8717,4045L8717,4047L8720,4050L8720,4053L8722,4055L8724,4055L8724,4058L8728,4063L8730,4068L8735,4068L8735,4070L8737,4073L8743,4073L8743,4076L8752,4076L8754,4078L8763,4078L8763,4070L8765,4070L8767,4068L8770,4067L8770,4071L8774,4073L8776,4069L8773,4065L8775,4062L8776,4052L8782,4052L8786,4056L8781,4058L8785,4067L8791,4066L8793,4064L8793,4054L8790,4049L8791,4042L8794,4046L8796,4043L8793,4039L8793,4027L8795,4022L8797,4022L8797,4025L8800,4030L8800,4032L8802,4032L8802,4027L8800,4027L8800,3989zM8683,3953L8685,3956L8685,3958L8681,3963L8678,3963L8676,3963L8676,3961L8678,3961L8678,3958L8676,3958L8676,3951L8678,3948L8678,3945L8683,3945L8683,3953z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7629,1884L7625,1875L7606,1875L7598,1873L7595,1866L7584,1869L7576,1860L7582,1854L7593,1852L7607,1857L7613,1852L7625,1850L7632,1840L7645,1836L7659,1828L7671,1831L7685,1835L7688,1824L7700,1825L7713,1816L7721,1807L7721,1795L7719,1784L7721,1773L7708,1776L7703,1773L7713,1767L7723,1758L7719,1743L7717,1732L7711,1726L7714,1713L7716,1702L7709,1698L7701,1693L7693,1683L7692,1672L7701,1667L7707,1672L7717,1671L7724,1664L7732,1661L7735,1654L7731,1648L7729,1640L7717,1635L7707,1637L7697,1632L7683,1625L7675,1623L7666,1624L7654,1614L7645,1617L7640,1612C7640,1612 7631,1609 7625,1607C7620,1605 7611,1608 7611,1608L7600,1602L7592,1610L7579,1612L7566,1606L7563,1597C7563,1597 7554,1599 7552,1599C7550,1599 7544,1597 7544,1597L7538,1586L7529,1580L7522,1573L7511,1578L7493,1583L7494,1592L7487,1599L7476,1602L7463,1604L7458,1611L7446,1608L7447,1598L7436,1603L7428,1602C7428,1602 7421,1598 7419,1599C7417,1600 7411,1604 7411,1604L7394,1598L7373,1602L7369,1614L7362,1617L7364,1622L7360,1632L7355,1639L7346,1639L7340,1643C7340,1643 7332,1645 7330,1645C7328,1645 7316,1637 7316,1637L7305,1627L7298,1621L7289,1614L7285,1612L7278,1617L7259,1610L7253,1607L7236,1607L7221,1602L7209,1599L7197,1595L7186,1595L7176,1587L7175,1578L7169,1571L7172,1558L7171,1552L7168,1547L7171,1532L7171,1522L7178,1512L7176,1502L7178,1496L7171,1494L7159,1494L7151,1493L7137,1487L7123,1484L7109,1484L7102,1489L7090,1487L7075,1490L7065,1495L7051,1496L7039,1503L7027,1505L7013,1501L6994,1493L6982,1489L6967,1491C6967,1491 6960,1499 6957,1499C6953,1499 6942,1492 6942,1492L6931,1487L6923,1488L6918,1496L6916,1504L6914,1511L6896,1512L6893,1518L6890,1523L6881,1528L6874,1529L6874,1530L6876,1530L6876,1533L6874,1533L6872,1536L6868,1536L6868,1541L6870,1546L6870,1556L6872,1556L6872,1558L6874,1558L6874,1561L6876,1561L6879,1564L6881,1564L6881,1566L6883,1566L6885,1569L6885,1574L6887,1574L6887,1576L6889,1579L6889,1584L6887,1584L6887,1587L6883,1589L6879,1589L6874,1594L6868,1587L6870,1587L6870,1584L6866,1584L6866,1587L6859,1587L6859,1589L6861,1592L6861,1597L6863,1599L6863,1602L6866,1602L6866,1604L6870,1604L6870,1607L6868,1607L6868,1615L6870,1615L6870,1620L6868,1620L6868,1627L6872,1627L6876,1625L6876,1622L6879,1622L6881,1625L6881,1627L6883,1630L6883,1632L6885,1632L6885,1635L6887,1635L6889,1640L6894,1640L6894,1638L6900,1638L6900,1640L6902,1640L6902,1643L6909,1645L6911,1645L6909,1650L6911,1653L6913,1653L6918,1655L6920,1655L6924,1658L6924,1661L6931,1661L6931,1663L6933,1666L6933,1668L6935,1671L6935,1668L6937,1671L6937,1668L6939,1668L6941,1666L6941,1658L6946,1658L6948,1655L6950,1658L6961,1658L6961,1661L6963,1666L6963,1668L6965,1668L6976,1673L6976,1676L6980,1678L6982,1681L6987,1681L6989,1683L6993,1683L6998,1689L6998,1691L7002,1696L7002,1699L7004,1699L7006,1696L7011,1694L7017,1694L7019,1696L7019,1699L7021,1701L7021,1706L7026,1706L7026,1712L7032,1712L7034,1714L7034,1717L7037,1717L7041,1719L7043,1717L7043,1714L7045,1714L7047,1717L7047,1719L7045,1719L7045,1727L7063,1727L7063,1729L7067,1729L7067,1732L7069,1734L7069,1740L7071,1740L7073,1737L7073,1734L7071,1732L7076,1729L7076,1734L7080,1737L7082,1740L7084,1737L7084,1732L7091,1732L7091,1734L7095,1737L7099,1737L7099,1740L7102,1740L7102,1742L7106,1742L7108,1740L7112,1742L7119,1742L7119,1740L7128,1740L7130,1737L7136,1737L7138,1734L7141,1734L7143,1732L7145,1734L7149,1734L7149,1747L7147,1747L7147,1755L7149,1757L7151,1757L7151,1752L7156,1752L7156,1747L7158,1747L7158,1742L7160,1742L7162,1740L7164,1740L7164,1734L7167,1734L7171,1729L7175,1729L7175,1727L7177,1727L7180,1724L7182,1724L7186,1727L7193,1727L7193,1729L7190,1729L7190,1732L7193,1734L7195,1732L7197,1734L7199,1734L7200,1736L7201,1734L7208,1734L7208,1737L7212,1737L7212,1734L7214,1734L7214,1732L7216,1732L7216,1734L7221,1734L7221,1737L7227,1737L7227,1742L7232,1742L7234,1745L7238,1745L7238,1742L7242,1742L7242,1740L7245,1740L7245,1742L7249,1742L7251,1740L7253,1740L7253,1737L7255,1737L7255,1732L7258,1729L7262,1729L7262,1727L7266,1727L7268,1724L7271,1724L7271,1722L7273,1719L7273,1717L7275,1714L7290,1714L7292,1712L7292,1709L7294,1706L7297,1706L7297,1704L7303,1696L7307,1696L7307,1694L7310,1691L7312,1691L7318,1699L7323,1699L7329,1701L7333,1701L7333,1699L7338,1694L7342,1691L7346,1691L7349,1689L7351,1689L7351,1691L7353,1691L7353,1694L7355,1696L7355,1699L7353,1699L7351,1701L7351,1706L7353,1706L7355,1704L7355,1701L7362,1701L7362,1706L7364,1709L7364,1712L7359,1717L7357,1717L7357,1722L7359,1724L7359,1722L7364,1719L7366,1719L7366,1722L7368,1722L7368,1724L7381,1724L7381,1727L7383,1727L7383,1729L7385,1729L7385,1727L7388,1727L7388,1724L7390,1722L7390,1717L7392,1717L7394,1719L7396,1719L7396,1724L7400,1724L7403,1727L7403,1729L7407,1729L7407,1734L7409,1742L7409,1745L7411,1747L7411,1752L7413,1752L7413,1750L7416,1750L7416,1747L7418,1747L7420,1750L7422,1750L7422,1757L7424,1757L7422,1757L7422,1765L7424,1768L7424,1788L7422,1788L7422,1798L7420,1798L7420,1796L7418,1796L7418,1798L7420,1801L7420,1803L7422,1803L7422,1806L7420,1808L7420,1806L7418,1806L7416,1808L7416,1811L7413,1814L7413,1816L7411,1816L7409,1814L7407,1816L7407,1821L7405,1824L7400,1826L7398,1826L7398,1829L7396,1829L7396,1836L7392,1842L7390,1842L7390,1844L7392,1844L7390,1847L7390,1852L7394,1852L7394,1854L7396,1857L7396,1862L7394,1862L7394,1865L7390,1867L7390,1870L7396,1870L7398,1867L7400,1867L7400,1865L7405,1865L7407,1862L7418,1862L7420,1865L7426,1862L7429,1862L7429,1865L7426,1865L7424,1867L7422,1867L7422,1872L7424,1875L7426,1875L7426,1877L7424,1880L7424,1882L7426,1882L7429,1885L7429,1893L7433,1895L7444,1895L7444,1898L7446,1898L7446,1903L7444,1903L7439,1908L7442,1913L7442,1916L7439,1918L7435,1926L7435,1928L7450,1928L7455,1931L7457,1931L7459,1933L7457,1933L7457,1941L7461,1941L7463,1944L7461,1946L7461,1949L7463,1949L7463,1951L7465,1949L7468,1949L7468,1946L7470,1946L7472,1949L7478,1949L7481,1946L7481,1944L7489,1938L7491,1944L7491,1946L7494,1951L7494,1959L7496,1959L7496,1956L7502,1956L7504,1959L7509,1959L7509,1956L7507,1954L7507,1949L7509,1944L7507,1941L7507,1938L7502,1926L7504,1923L7504,1916L7509,1916L7511,1918L7520,1918L7526,1910L7526,1908L7528,1905L7528,1908L7537,1913L7539,1913L7539,1916L7541,1918L7543,1918L7546,1916L7546,1913L7550,1905L7552,1905L7552,1908L7554,1908L7554,1913L7556,1913L7559,1910L7556,1910L7556,1908L7559,1905L7561,1905L7563,1910L7567,1916L7569,1916L7569,1910L7572,1908L7572,1905L7576,1905L7576,1908L7580,1910L7582,1908L7582,1905L7589,1905L7593,1900L7593,1895L7595,1893L7604,1890L7606,1887L7606,1890L7608,1890L7613,1893L7613,1898L7617,1898L7624,1894L7629,1884z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7936,1426L7920,1423L7908,1431L7901,1439L7884,1448L7884,1455L7872,1465L7871,1473L7877,1477L7880,1486L7890,1492L7892,1498L7885,1506L7872,1518L7880,1524L7894,1527L7906,1522L7907,1531L7903,1542L7892,1543L7883,1541L7879,1546L7882,1553L7880,1561L7877,1566L7872,1572L7883,1583L7892,1587L7900,1595L7906,1598L7904,1612L7903,1620L7898,1615L7898,1626L7905,1643C7905,1643 7905,1650 7905,1652C7904,1654 7909,1655 7909,1655L7909,1665L7915,1672L7907,1675L7901,1675L7895,1671L7884,1677L7875,1685L7867,1687L7860,1693L7857,1700L7861,1706L7861,1715L7858,1721L7852,1730L7855,1739L7859,1742L7865,1757L7865,1768L7869,1777L7874,1785L7872,1793L7875,1804L7881,1809L7890,1813L7893,1819L7892,1829L7899,1839L7913,1837L7924,1837L7921,1840L7925,1839L7933,1841L7941,1841L7943,1846L7953,1846L7954,1849L7956,1852L7959,1852L7959,1849L7957,1849L7957,1847L7959,1847L7964,1844L7964,1847L7966,1849L7968,1847L7974,1847L7974,1849L7977,1847L7979,1842L7979,1839L7985,1836L7987,1836L7983,1831L7985,1831L7985,1829L7983,1826L7985,1824L7987,1824L7987,1831L7990,1831L7990,1829L7994,1829L7996,1826L7994,1824L7992,1824L7990,1821L7990,1819L7994,1819L7994,1814L7996,1814L8003,1821L8003,1824L8005,1821L8003,1816L8000,1816L7998,1811L8003,1811L8003,1805L8007,1804L8009,1802L8005,1798L8005,1794L8014,1790L8011,1787L8011,1782L8007,1782L8003,1780L8006,1777L8016,1774L8018,1770L8020,1770L8020,1765L8024,1765L8029,1763L8029,1757L8031,1755L8031,1757L8033,1755L8031,1752L8031,1750L8033,1747L8033,1745L8035,1740L8037,1740L8037,1737L8039,1737L8044,1729L8044,1727L8046,1724L8048,1724L8048,1729L8050,1729L8050,1732L8052,1729L8052,1727L8055,1724L8057,1724L8057,1727L8059,1724L8059,1722L8057,1719L8057,1717L8055,1717L8055,1714L8057,1714L8059,1712L8059,1704L8061,1706L8061,1701L8059,1699L8052,1699L8057,1694L8059,1694L8059,1696L8063,1696L8065,1699L8070,1694L8065,1694L8065,1691L8068,1689L8070,1683L8061,1683L8068,1676L8072,1676L8072,1673L8063,1673L8061,1671L8059,1671L8057,1666L8055,1666L8055,1663L8052,1663L8052,1661L8044,1661L8044,1663L8037,1666L8035,1668L8033,1668L8029,1663L8029,1661L8024,1661L8022,1663L8018,1663L8024,1658L8035,1658L8035,1661L8037,1661L8037,1658L8039,1658L8039,1653L8042,1653L8042,1650L8048,1648L8052,1648L8052,1645L8055,1645L8055,1643L8065,1643L8065,1638L8063,1632L8063,1630L8061,1630L8061,1627L8059,1627L8055,1625L8052,1622L8050,1622L8048,1620L8048,1617L8044,1615L8042,1612L8035,1612L8035,1607L8033,1604L8033,1602L8035,1602L8035,1604L8037,1604L8037,1607L8039,1607L8039,1610L8044,1610L8047,1611L8053,1616L8065,1623L8068,1622L8067,1619L8057,1616L8053,1611L8056,1611L8061,1615L8065,1615L8065,1607L8061,1604L8059,1602L8055,1602L8052,1597L8052,1592L8050,1592L8050,1589L8044,1589L8039,1587L8037,1584L8037,1579L8039,1576L8039,1574L8035,1569L8035,1564L8033,1561L8033,1558L8031,1558L8031,1556L8029,1553L8029,1551L8026,1548L8024,1541L8024,1536L8020,1530L8020,1528L8013,1525L8009,1525L8007,1523L8005,1523L8000,1520L7998,1518L7998,1515L7992,1515L7992,1505L7996,1505L7996,1500L8003,1492L8003,1490L8005,1490L8005,1487L8009,1487L8011,1485L8011,1482L8016,1479L8016,1477L8018,1477L8020,1474L8018,1474L8016,1472L8016,1467L8024,1467L8024,1469L8022,1472L8026,1472L8033,1469L8033,1459L8037,1459L8037,1462L8039,1462L8039,1456L8037,1454L8046,1454L8046,1451L8052,1451L8055,1449L8059,1449L8061,1446L8068,1444L8068,1441L8070,1441L8074,1444L8074,1446L8078,1446L8083,1444L8085,1444L8085,1441L8081,1441L8081,1436L8085,1436L8085,1428L8074,1428L8074,1423L8072,1423L8070,1426L8061,1426L8061,1428L8057,1428L8052,1423L8046,1423L8046,1421L8039,1416L8037,1413L8033,1413L8033,1416L8029,1416L8024,1418L8020,1423L8020,1426L8018,1426L8016,1428L8009,1428L8009,1431L8011,1431L8011,1434L8009,1434L8007,1436L7998,1436L7998,1439L7996,1439L7994,1436L7990,1436L7985,1434L7985,1421L7987,1421L7987,1411L7981,1403L7979,1403L7974,1405L7968,1405L7965,1404L7952,1416L7936,1426zM8077,1667L8078,1671L8078,1673L8076,1673L8076,1671L8070,1671L8068,1668L8068,1666L8074,1666L8077,1667z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7841,1484L7826,1486L7810,1491L7815,1498L7813,1506L7812,1513L7801,1522L7790,1522L7780,1529L7769,1531L7767,1537L7757,1541L7743,1546L7733,1546L7732,1555L7736,1563L7740,1570L7741,1582L7746,1586L7749,1592L7740,1599L7731,1600L7723,1598L7722,1603L7732,1611L7735,1618L7727,1620L7724,1629L7722,1637L7729,1640L7731,1648L7735,1654L7732,1661L7724,1664L7717,1671L7707,1672L7701,1667L7692,1672L7693,1683L7701,1693L7709,1698L7716,1702L7714,1713L7711,1726L7717,1732L7719,1743L7723,1758L7713,1767L7703,1773L7708,1776L7721,1773L7719,1784L7721,1795L7721,1807L7713,1816L7700,1825L7688,1824L7685,1835L7671,1831L7659,1828L7645,1836L7632,1840L7625,1850L7613,1852L7607,1857L7593,1852L7582,1854L7576,1860L7584,1869L7595,1866L7598,1873L7606,1875L7625,1875L7629,1884L7624,1894L7617,1898L7619,1898L7619,1900L7621,1900L7621,1903L7624,1900L7632,1900L7632,1903L7639,1903L7639,1900L7641,1903L7645,1903L7645,1905L7647,1905L7647,1908L7643,1913L7641,1913L7641,1921L7643,1921L7645,1926L7643,1926L7645,1931L7650,1933L7654,1933L7654,1938L7658,1941L7663,1941L7663,1946L7667,1946L7671,1944L7678,1944L7678,1946L7686,1946L7686,1949L7689,1946L7689,1941L7691,1941L7693,1944L7691,1946L7695,1946L7697,1944L7695,1941L7695,1938L7693,1936L7693,1933L7697,1936L7697,1938L7699,1941L7699,1944L7702,1946L7702,1944L7710,1944L7710,1946L7712,1946L7712,1949L7710,1949L7710,1951L7715,1951L7717,1949L7723,1949L7723,1946L7725,1946L7725,1949L7734,1949L7734,1951L7732,1954L7730,1954L7728,1959L7728,1972L7732,1982L7736,1982L7736,1984L7732,1984L7734,1989L7736,1988L7738,1987L7738,1989L7745,1989L7747,1987L7749,1987L7749,1984L7751,1984L7751,1982L7749,1979L7747,1979L7747,1977L7745,1977L7745,1974L7745,1972L7745,1974L7747,1974L7747,1969L7741,1969L7741,1964L7743,1964L7748,1959L7750,1960L7751,1963L7753,1964L7753,1959L7755,1955L7757,1953L7762,1953L7767,1949L7773,1949L7775,1946L7777,1949L7782,1949L7782,1946L7784,1944L7788,1944L7788,1941L7790,1941L7790,1936L7793,1938L7799,1941L7803,1941L7806,1938L7810,1938L7810,1936L7812,1933L7814,1933L7816,1936L7819,1936L7819,1928L7821,1928L7821,1926L7823,1926L7823,1928L7825,1931L7827,1931L7827,1926L7829,1926L7829,1923L7832,1926L7836,1926L7836,1921L7834,1918L7836,1916L7836,1913L7834,1913L7834,1910L7832,1908L7834,1908L7829,1903L7834,1903L7834,1900L7836,1900L7836,1905L7840,1908L7842,1910L7842,1916L7849,1916L7847,1918L7845,1918L7845,1921L7853,1921L7855,1923L7855,1921L7858,1921L7858,1918L7855,1916L7853,1918L7853,1913L7860,1913L7860,1916L7864,1916L7864,1913L7862,1913L7862,1908L7866,1905L7870,1905L7868,1908L7866,1908L7866,1910L7868,1913L7873,1913L7873,1908L7877,1905L7881,1905L7886,1910L7890,1910L7890,1903L7894,1903L7896,1905L7896,1908L7899,1905L7905,1903L7905,1905L7907,1905L7907,1903L7909,1900L7912,1900L7912,1903L7914,1903L7916,1900L7918,1900L7918,1898L7916,1893L7925,1893L7922,1890L7922,1887L7925,1887L7925,1885L7927,1885L7927,1880L7929,1877L7931,1877L7931,1880L7935,1880L7938,1877L7938,1875L7940,1875L7940,1872L7948,1872L7948,1870L7951,1865L7953,1865L7953,1867L7960,1858L7958,1854L7955,1854L7953,1852L7956,1852L7954,1849L7953,1846L7943,1846L7941,1841L7933,1841L7925,1839L7921,1840L7924,1837L7913,1837L7899,1839L7892,1829L7893,1819L7890,1813L7881,1809L7875,1804L7872,1793L7874,1785L7869,1777L7865,1768L7865,1757L7859,1742L7855,1739L7852,1730L7858,1721L7861,1715L7861,1706L7857,1700L7860,1693L7867,1687L7875,1685L7884,1677L7895,1671L7901,1675L7907,1675L7915,1672L7909,1665L7909,1655C7909,1655 7904,1654 7905,1652C7905,1650 7905,1643 7905,1643L7898,1626L7898,1615L7903,1620L7904,1612L7906,1598L7900,1595L7892,1587L7883,1583L7872,1572L7877,1566L7880,1561L7882,1553L7879,1546L7883,1541L7892,1543L7903,1542L7907,1531L7906,1522L7894,1527L7880,1524L7872,1518L7885,1506L7892,1498L7890,1492L7880,1486L7877,1477L7873,1474L7861,1477L7841,1484zM7762,2000L7764,2010L7762,2010L7760,2012L7758,2012L7751,2025L7749,2025L7751,2025L7751,2028L7749,2033L7749,2035L7751,2035L7747,2040L7743,2040L7743,2043L7738,2046L7738,2051L7736,2051L7734,2048L7730,2051L7728,2053L7730,2053L7730,2056L7728,2056L7725,2056L7723,2058L7723,2053L7715,2053L7710,2051L7708,2051L7704,2048L7702,2046L7699,2046L7699,2033L7697,2028L7697,2020L7699,2020L7699,2018L7702,2018L7708,2010L7712,2010L7717,2005L7715,2005L7712,2007L7712,2005L7715,2000L7717,2000L7721,2002L7723,2002L7723,1997L7734,1997L7736,2000L7738,1997L7741,1997L7741,1995L7747,1995L7751,1997L7751,1995L7754,1995L7754,1992L7758,1997L7762,1997L7762,2000z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7739,1520L7743,1508L7742,1489L7741,1471L7749,1456L7751,1438L7752,1418L7759,1402L7763,1379L7756,1376L7750,1375L7744,1383L7738,1390L7729,1396L7719,1408L7713,1418L7708,1424L7695,1423L7689,1413L7680,1413L7673,1409L7662,1404L7650,1402L7648,1395L7656,1388L7651,1376L7650,1368L7638,1367L7628,1376L7623,1392L7623,1406L7617,1417L7599,1422L7589,1424L7576,1426L7566,1415L7559,1409L7559,1400L7565,1393L7566,1372L7554,1367L7538,1375L7528,1384L7509,1381L7496,1386L7486,1382L7470,1376L7451,1369L7439,1358L7441,1350C7441,1350 7446,1344 7449,1342C7452,1340 7456,1330 7456,1330L7445,1325L7431,1324L7418,1325L7401,1333L7391,1329L7385,1320L7380,1314L7373,1299L7378,1293L7378,1282L7376,1274L7375,1261L7374,1252L7364,1252L7359,1255L7357,1255L7357,1247L7351,1242L7346,1237L7344,1237L7344,1232L7342,1230L7342,1227L7340,1227L7340,1224L7338,1222L7338,1217L7336,1212L7329,1212L7329,1204L7320,1204L7312,1201L7312,1199L7307,1199L7307,1196L7303,1196L7299,1191L7290,1186L7288,1186L7286,1184L7284,1184L7281,1181L7271,1181L7268,1179L7245,1179L7238,1176L7236,1176L7232,1179L7223,1179L7223,1176L7214,1176L7214,1173L7208,1173L7201,1166L7201,1163L7199,1163L7199,1161L7203,1150L7206,1150L7208,1148L7210,1148L7210,1143L7208,1143L7208,1140L7206,1138L7206,1135L7208,1135L7210,1130L7210,1122L7208,1117L7206,1117L7206,1115L7201,1115L7201,1112L7197,1107L7195,1107L7195,1105L7193,1097L7188,1092L7184,1092L7184,1087L7182,1084L7180,1084L7180,1087L7175,1087L7171,1084L7169,1082L7169,1079L7164,1079L7162,1082L7154,1082L7154,1079L7149,1079L7143,1077L7143,1074L7141,1071L7141,1069L7138,1069L7134,1066L7130,1066L7125,1064L7123,1064L7123,1061L7125,1061L7128,1059L7125,1056L7121,1056L7119,1054L7119,1051L7121,1051L7123,1048L7121,1046L7121,1043L7117,1043L7112,1046L7093,1046L7091,1048L7091,1054L7093,1054L7091,1059L7089,1059L7089,1061L7086,1061L7086,1064L7082,1066L7078,1066L7076,1069L7073,1069L7073,1066L7069,1066L7067,1069L7063,1069L7058,1077L7058,1082L7056,1082L7056,1087L7058,1087L7058,1099L7060,1099L7060,1107L7056,1112L7047,1112L7047,1115L7045,1117L7041,1117L7041,1120L7034,1120L7034,1115L7006,1115L7006,1112L7002,1112L7000,1110L6993,1110L6993,1107L6987,1107L6987,1117L6985,1117L6985,1120L6982,1120L6982,1125L6980,1125L6980,1133L6978,1135L6978,1138L6976,1138L6976,1140L6974,1140L6974,1150L6972,1150L6972,1153L6969,1156L6967,1161L6967,1163L6974,1163L6974,1166L6976,1166L6976,1173L6974,1173L6974,1176L6972,1176L6967,1173L6967,1171L6965,1171L6965,1173L6959,1173L6959,1176L6956,1173L6952,1173L6952,1168L6948,1168L6948,1171L6937,1171L6937,1173L6931,1173L6928,1176L6918,1176L6915,1179L6905,1179L6900,1184L6902,1186L6911,1186L6915,1189L6918,1189L6913,1191L6913,1209L6918,1214L6918,1219L6920,1222L6920,1224L6924,1230L6924,1237L6926,1240L6924,1242L6922,1242L6922,1240L6920,1240L6913,1245L6915,1247L6920,1247L6920,1250L6911,1250L6911,1252L6909,1252L6907,1258L6909,1265L6911,1268L6911,1270L6909,1270L6909,1273L6911,1275L6909,1275L6909,1278L6898,1278L6898,1281L6894,1281L6879,1288L6876,1288L6874,1291L6868,1293L6866,1293L6861,1296L6859,1298L6857,1298L6857,1303L6855,1303L6855,1306L6853,1306L6853,1309L6842,1309L6840,1311L6831,1311L6831,1309L6829,1309L6827,1311L6822,1311L6822,1309L6818,1309L6816,1311L6814,1311L6814,1314L6809,1319L6809,1324L6807,1324L6807,1329L6805,1329L6801,1332L6798,1329L6794,1332L6792,1332L6790,1334L6783,1334L6783,1332L6781,1326L6781,1321L6779,1321L6779,1324L6777,1324L6775,1326L6772,1326L6770,1329L6764,1329L6764,1326L6759,1326L6759,1332L6757,1332L6753,1334L6749,1339L6742,1339L6738,1342L6736,1342L6731,1349L6731,1352L6733,1352L6733,1354L6736,1357L6733,1360L6731,1360L6727,1362L6727,1367L6725,1367L6729,1372L6729,1375L6731,1375L6731,1377L6729,1377L6729,1383L6731,1388L6731,1390L6738,1390L6740,1388L6746,1388L6755,1390L6757,1390L6759,1393L6759,1408L6762,1408L6762,1416L6764,1416L6762,1418L6762,1423L6766,1423L6766,1426L6770,1428L6762,1434L6751,1434L6746,1436L6751,1439L6753,1441L6755,1439L6759,1441L6770,1441L6770,1444L6775,1444L6777,1446L6777,1451L6779,1451L6779,1449L6785,1449L6785,1451L6788,1451L6790,1454L6794,1467L6792,1469L6790,1469L6790,1474L6796,1474L6796,1479L6805,1479L6807,1477L6807,1482L6811,1482L6811,1485L6814,1485L6816,1487L6822,1490L6827,1490L6831,1492L6837,1492L6839,1490L6842,1490L6844,1492L6846,1492L6846,1490L6850,1490L6850,1492L6848,1492L6848,1500L6850,1502L6853,1507L6853,1510L6855,1510L6855,1518L6857,1518L6857,1520L6866,1520L6866,1523L6868,1523L6874,1528L6874,1529L6881,1528L6890,1523L6893,1518L6896,1512L6914,1511L6916,1504L6918,1496L6923,1488L6931,1487L6942,1492C6942,1492 6953,1499 6957,1499C6960,1499 6967,1491 6967,1491L6982,1489L6994,1493L7013,1501L7027,1505L7039,1503L7051,1496L7065,1495L7075,1490L7090,1487L7102,1489L7109,1484L7123,1484L7137,1487L7151,1493L7159,1494L7171,1494L7178,1496L7176,1502L7178,1512L7171,1522L7171,1532L7168,1547L7171,1552L7172,1558L7169,1571L7175,1578L7176,1587L7186,1595L7197,1595L7209,1599L7221,1602L7236,1607L7253,1607L7259,1610L7278,1617L7285,1612L7289,1614L7298,1621L7305,1627L7316,1637C7316,1637 7328,1645 7330,1645C7332,1645 7340,1643 7340,1643L7346,1639L7355,1639L7360,1632L7364,1622L7362,1617L7369,1614L7373,1602L7394,1598L7411,1604C7411,1604 7417,1600 7419,1599C7421,1598 7428,1602 7428,1602L7436,1603L7447,1598L7446,1608L7458,1611L7463,1604L7476,1602L7487,1599L7494,1592L7493,1583L7511,1578L7522,1573L7529,1580L7538,1586L7544,1597C7544,1597 7550,1599 7552,1599C7554,1599 7563,1597 7563,1597L7566,1606L7579,1612L7592,1610L7600,1602L7611,1608C7611,1608 7620,1605 7625,1607C7631,1609 7640,1612 7640,1612L7645,1617L7654,1614L7666,1624L7675,1623L7683,1625L7697,1632L7707,1637L7717,1635L7722,1637L7724,1629L7727,1620L7735,1618L7732,1611L7722,1603L7723,1598L7731,1600L7740,1599L7749,1592L7746,1586L7741,1582L7740,1570L7736,1563L7732,1555L7733,1546L7736,1546L7735,1541L7739,1520z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M7998,1323L7981,1320L7972,1308L7977,1298L7987,1290L7989,1271L7992,1256L8001,1256L8004,1271L8011,1272L8029,1262L8053,1259L8059,1251L8074,1251L8095,1248L8107,1244L8094,1230L8098,1224L8091,1206L8085,1196L8074,1200L8064,1193L8077,1187L8080,1178L8080,1169L8073,1160L8085,1157L8095,1151L8094,1139L8101,1130L8080,1119L8074,1107L8086,1095L8088,1079L8104,1071L8115,1052L8125,1041L8119,1016L8128,998L8133,977L8128,962L8113,962L8086,962L8068,963L8056,954L8056,939L8041,929L8024,921L8024,921L8022,921L8022,924L8018,924L8013,929L8013,931L8026,931L8033,934L8033,939L8031,939L8031,941L8033,941L8033,944L8035,944L8035,946L8033,952L8033,954L8026,954L8022,959L8020,959L8020,962L8016,962L8016,964L8013,967L8013,972L8011,975L8009,975L8007,977L8007,982L8005,982L8005,985L8003,985L8000,987L8000,992L7998,992L7998,995L7996,995L7994,997L7994,1000L7992,1003L7990,1003L7990,1005L7996,1005L7996,1013L7994,1013L7992,1015L7990,1015L7990,1018L7974,1018L7972,1020L7972,1023L7968,1023L7964,1026L7964,1028L7959,1028L7959,1031L7955,1033L7953,1033L7951,1031L7946,1031L7946,1028L7935,1028L7925,1023L7922,1023L7916,1031L7914,1036L7912,1038L7907,1051L7905,1054L7905,1056L7901,1059L7901,1061L7896,1064L7899,1069L7899,1074L7892,1077L7890,1077L7892,1084L7901,1092L7903,1092L7903,1089L7905,1089L7905,1087L7925,1087L7927,1084L7933,1087L7933,1089L7940,1092L7942,1092L7948,1087L7948,1084L7953,1082L7972,1082L7979,1089L7981,1089L7985,1092L7990,1092L7990,1097L7992,1097L7996,1099L7996,1102L7998,1102L8003,1107L8005,1107L8007,1110L8007,1115L8009,1115L8009,1117L8011,1117L8011,1125L8009,1125L8007,1128L8000,1128L7998,1125L7998,1128L7994,1128L7990,1125L7987,1125L7987,1122L7981,1122L7981,1125L7970,1125L7970,1122L7966,1122L7957,1128L7955,1128L7955,1130L7948,1130L7946,1128L7942,1128L7942,1135L7920,1135L7918,1138L7918,1140L7916,1143L7914,1143L7914,1145L7912,1145L7912,1148L7909,1148L7909,1156L7907,1156L7907,1158L7901,1158L7894,1166L7879,1166L7875,1168L7873,1168L7870,1166L7868,1166L7862,1168L7860,1173L7858,1176L7853,1179L7851,1181L7845,1181L7838,1189L7834,1189L7834,1186L7823,1186L7808,1181L7803,1176L7801,1179L7795,1179L7795,1176L7790,1176L7788,1179L7786,1179L7786,1181L7782,1186L7780,1191L7780,1194L7775,1199L7775,1201L7780,1207L7782,1212L7786,1212L7790,1217L7790,1222L7788,1224L7784,1224L7782,1227L7773,1232L7771,1232L7767,1235L7764,1235L7760,1240L7756,1242L7756,1245L7754,1247L7751,1247L7751,1250L7749,1250L7749,1252L7747,1252L7741,1255L7738,1258L7734,1258L7730,1260L7728,1260L7723,1263L7708,1263L7704,1265L7699,1265L7695,1263L7686,1263L7678,1265L7669,1265L7667,1263L7654,1268L7647,1268L7613,1281L7611,1283L7606,1286L7604,1286L7598,1291L7595,1288L7593,1288L7589,1291L7585,1288L7585,1283L7572,1283L7565,1286L7554,1281L7552,1281L7533,1273L7526,1273L7515,1270L7515,1268L7513,1268L7509,1260L7498,1260L7491,1258L7485,1258L7483,1255L7468,1255L7465,1258L7444,1260L7439,1258L7409,1258L7405,1255L7392,1255L7390,1252L7374,1252L7375,1261L7376,1274L7378,1282L7378,1293L7373,1299L7380,1314L7385,1320L7391,1329L7401,1333L7418,1325L7431,1324L7445,1325L7456,1330C7456,1330 7452,1340 7449,1342C7446,1344 7441,1350 7441,1350L7439,1358L7451,1369L7470,1376L7486,1382L7496,1386L7509,1381L7528,1384L7538,1375L7554,1367L7566,1372L7565,1393L7559,1400L7559,1409L7566,1415L7576,1426L7589,1424L7599,1422L7617,1417L7623,1406L7623,1392L7628,1376L7638,1367L7650,1368L7651,1376L7656,1388L7648,1395L7650,1402L7662,1404L7673,1409L7680,1413L7689,1413L7695,1423L7708,1424L7713,1418L7719,1408L7729,1396L7738,1390L7744,1383L7750,1375L7756,1376L7763,1379L7759,1402L7752,1418L7751,1438L7749,1456L7741,1471L7742,1489L7743,1508L7739,1520L7735,1541L7736,1546L7743,1546L7757,1541L7767,1537L7769,1531L7780,1529L7790,1522L7801,1522L7812,1513L7813,1506L7815,1498L7810,1491L7826,1486L7841,1484L7861,1477L7873,1474L7871,1473L7872,1465L7884,1455L7884,1448L7901,1439L7908,1431L7920,1423L7936,1426L7952,1416L7965,1404L7964,1403L7959,1403L7955,1400L7953,1400L7948,1395L7948,1393L7946,1390L7946,1383L7948,1380L7951,1375L7951,1372L7953,1370L7964,1370L7964,1372L7966,1372L7966,1375L7970,1375L7972,1372L7972,1370L7979,1370L7979,1372L7981,1370L7985,1370L7990,1365L7992,1365L7992,1362L7994,1362L7994,1357L7996,1352L8000,1347L8005,1347L8009,1344L8009,1344L8004,1331L7998,1323z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8421,1089L8418,1084L8418,1079L8421,1079L8421,1074L8423,1074L8421,1071L8416,1071L8416,1069L8414,1069L8408,1071L8403,1071L8399,1074L8395,1074L8392,1077L8390,1077L8390,1079L8377,1079L8371,1082L8366,1087L8364,1087L8364,1089L8362,1089L8362,1092L8358,1092L8358,1089L8356,1089L8353,1092L8334,1092L8334,1089L8327,1089L8327,1092L8317,1092L8317,1089L8319,1089L8317,1087L8317,1084L8315,1084L8315,1082L8312,1082L8310,1079L8310,1077L8312,1077L8315,1071L8306,1061L8308,1059L8308,1056L8310,1056L8310,1054L8297,1054L8295,1051L8289,1048L8289,1046L8284,1043L8284,1041L8280,1041L8280,1038L8278,1038L8278,1036L8269,1036L8267,1038L8265,1038L8265,1036L8263,1036L8258,1031L8230,1031L8228,1028L8228,1026L8226,1026L8226,1023L8221,1023L8221,1013L8224,1013L8224,1008L8217,1008L8217,995L8215,995L8217,992L8213,990L8213,987L8211,985L8206,982L8206,977L8204,977L8204,975L8202,975L8204,972L8206,972L8206,969L8202,969L8200,964L8200,959L8198,957L8193,954L8193,949L8195,949L8195,946L8193,946L8191,944L8189,944L8191,941L8191,939L8189,939L8189,936L8187,936L8187,934L8185,934L8182,931L8182,934L8180,934L8180,929L8182,929L8182,926L8180,926L8176,924L8174,921L8174,918L8169,916L8163,916L8163,913L8161,913L8156,911L8154,911L8152,913L8143,913L8143,911L8139,911L8139,913L8137,911L8135,911L8135,908L8133,908L8133,906L8128,906L8128,908L8126,906L8124,906L8124,903L8122,903L8115,901L8102,901L8102,903L8076,903L8072,906L8057,906L8057,908L8037,908L8037,911L8029,916L8024,921L8041,929L8056,939L8056,954L8068,963L8086,962L8113,962L8128,962L8133,977L8128,998L8119,1016L8125,1041L8115,1052L8104,1071L8088,1079L8086,1095L8074,1107L8080,1119L8101,1130L8094,1139L8095,1151L8085,1157L8073,1160L8080,1169L8080,1178L8077,1187L8064,1193L8074,1200L8085,1196L8091,1206L8098,1224L8094,1230L8107,1244L8095,1248L8074,1251L8059,1251L8053,1259L8029,1262L8011,1272L8004,1271L8001,1256L7992,1256L7989,1271L7987,1290L7977,1298L7972,1308L7981,1320L7998,1323L8004,1331L8009,1344L8011,1342L8013,1342L8018,1339L8022,1339L8026,1337L8029,1337L8029,1329L8033,1326L8037,1321L8042,1321L8042,1319L8039,1319L8042,1316L8044,1316L8044,1314L8057,1314L8057,1316L8063,1316L8068,1319L8072,1319L8072,1321L8076,1326L8078,1326L8072,1334L8070,1339L8065,1342L8065,1344L8063,1347L8057,1347L8055,1349L8055,1354L8050,1357L8048,1360L8055,1360L8055,1365L8063,1365L8059,1370L8061,1372L8059,1372L8059,1374L8057,1375L8055,1375L8048,1377L8044,1377L8044,1380L8046,1383L8046,1385L8048,1383L8055,1383L8061,1380L8061,1377L8059,1377L8060,1376L8061,1375L8068,1375L8072,1372L8076,1367L8076,1365L8078,1365L8081,1362L8083,1362L8085,1360L8091,1357L8096,1357L8098,1354L8104,1354L8104,1352L8102,1352L8104,1349L8107,1349L8109,1352L8113,1352L8115,1349L8128,1349L8133,1347L8135,1344L8135,1339L8137,1339L8141,1337L8141,1334L8146,1334L8150,1329L8154,1329L8154,1326L8156,1324L8161,1321L8165,1321L8167,1319L8169,1319L8172,1316L8178,1314L8180,1314L8185,1309L8189,1306L8189,1303L8193,1298L8195,1298L8198,1293L8198,1291L8195,1291L8198,1288L8202,1288L8204,1286L8206,1286L8211,1288L8211,1291L8213,1291L8213,1293L8215,1296L8228,1296L8232,1298L8232,1296L8237,1296L8237,1298L8241,1298L8241,1296L8243,1296L8243,1293L8245,1291L8243,1291L8243,1288L8241,1288L8239,1286L8239,1281L8237,1278L8243,1275L8245,1275L8247,1278L8263,1278L8263,1275L8265,1275L8267,1273L8269,1273L8269,1270L8271,1265L8273,1263L8276,1263L8278,1265L8282,1263L8284,1263L8284,1255L8286,1250L8286,1247L8289,1245L8291,1245L8293,1247L8299,1247L8299,1250L8297,1252L8297,1255L8299,1255L8302,1258L8306,1260L8308,1263L8308,1258L8306,1255L8304,1255L8304,1252L8306,1252L8310,1250L8321,1250L8323,1247L8323,1245L8325,1240L8327,1237L8327,1230L8325,1230L8325,1212L8327,1212L8327,1209L8325,1207L8323,1194L8321,1189L8321,1186L8319,1186L8319,1184L8321,1184L8323,1181L8323,1184L8325,1184L8327,1181L8332,1181L8336,1176L8338,1176L8338,1173L8343,1168L8345,1168L8345,1171L8347,1171L8351,1173L8358,1173L8369,1179L8375,1179L8377,1176L8377,1166L8379,1166L8379,1163L8382,1163L8386,1161L8388,1161L8388,1150L8392,1150L8392,1148L8395,1145L8395,1143L8397,1140L8399,1140L8399,1138L8401,1135L8401,1133L8399,1133L8399,1128L8403,1128L8403,1120L8405,1115L8405,1112L8408,1112L8410,1110L8408,1110L8408,1105L8412,1099L8418,1099L8423,1092L8425,1092L8425,1089L8421,1089z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M1,5301L2,5301L3302,5301L3305,5301L3362,5301L3365,5301L6634,5301L6638,5301L6695,5301L6698,5301L10000,5301L10000,5209L9497,5183L9329,5174L9347,5090L9383,5066L9431,4994L9149,4922L8747,4835L8702,4835L8258,4787L8186,4781L8108,4805L8048,4793L7970,4832L7943,4814L7946,4781L7763,4808L7721,4826L7454,4757L7373,4739L7298,4811L7187,4805L7100,4790L7022,4814L6956,4799L6875,4826L6863,4874L6760,4925L6721,4901L6698,4899L6695,4898L6649,4895L6638,4880L6636,4878L6622,4862L6337,4847L6169,4790L5752,4889L5614,4886L5401,4940L5116,4919L4675,4931L4621,4934L4405,4952L4318,4991L4183,5012L4102,5066L3985,5072L3913,5141L3502,5186L3365,5161L3362,5160L3305,5150L3302,5150L3034,5102L3049,5045L3010,4946L3067,4877L3031,4865L3049,4787L3094,4769L3163,4712L3115,4706L3019,4724L2890,4742L2887,4781L2824,4796L2728,4883L2698,4880L2527,4955L2536,5012L2419,5036L2125,5018L1825,4994L1759,5078L1573,5030L1567,5075L1144,5042L1105,5075L841,5084L424,5150L3,5221L1,5222L1,5301L1,5301zM2,1L3301,1L3305,1L3361,1L3365,1L6634,1L6638,1L6695,1L6698,1L10000,1L10000,333L9970,339L9934,323L9880,296L9850,296L9822,312L9774,350L9714,359L9697,341L9711,297L9645,294L9537,315L9460,309L9420,288L9327,261L9159,249L9004,248L8935,188L8800,156L8734,102L8602,102L8263,155L8184,180L8038,195L7996,176L7923,161L7918,125L7753,104L7650,72L7576,90L7552,126L7497,155L7410,168L7189,188L7113,218L7104,249L7059,248L6979,248L6873,206L6759,186L6700,190L6694,190L6638,193L6635,193L6576,197L6501,234L6443,206L6434,123L6320,47L6179,35L6044,35L5927,48L5894,84L5814,95L5642,48L5450,45L5367,65L5307,81L5367,113L5316,129L5261,125L5229,98L5180,150L5147,155L5079,135L5064,110L4959,81L4859,95L4649,90L4494,168L4382,204L4248,243L4148,204L4137,162L4167,119L3366,110L3361,110L3305,110L3302,110L3146,108L2943,117L2804,166L2665,168L2614,170L2551,172L2506,197L2466,214L2417,217L2386,215L2271,216L2202,213L2173,238L2139,264L2135,243L2065,236L2033,254L2045,292L2021,326L2033,369L2024,379L1995,384L1971,414L1963,442L1893,438L1862,442L1825,435L1771,426L1742,407L1697,414L1690,437L1637,442L1561,440L1517,434L1511,416L1483,401L1433,400L1371,388L1329,374L1273,373L1219,370L1172,380L1129,366L1057,387L996,383L917,380L923,404L849,393L763,377L698,363L635,362L567,355L535,351L489,351L457,346L445,339L411,334L393,337L387,334L367,332L350,333L330,321L305,334L249,337L227,328L191,326L185,314L163,304L97,306L93,316L63,318L23,335L3,337L2,337L1,4L1,1L2,1z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5752,2061L5752,2058L5748,2058L5746,2056L5741,2056L5741,2053L5739,2053L5739,2051L5737,2048L5737,2046L5735,2046L5728,2038L5728,2040L5724,2040L5724,2038L5722,2035L5720,2035L5718,2028L5718,2015L5715,2012L5715,2000L5713,1997L5713,1982L5715,1982L5715,1977L5713,1974L5713,1967L5711,1959L5715,1960L5715,1965L5719,1965L5720,1964L5717,1959L5713,1956L5709,1951L5705,1938L5705,1931L5555,1931L5557,1926L5555,1926L5555,1923L5553,1923L5553,1926L5551,1928L5551,1931L5375,1931L5375,1997L5347,1997L5347,2137L5343,2137L5339,2135L5336,2135L5336,2137L5323,2137L5319,2142L5317,2142L5317,2145L5319,2145L5319,2158L5315,2158L5315,2160L5313,2160L5310,2165L5310,2168L5313,2171L5306,2173L5304,2173L5304,2183L5306,2186L5308,2186L5308,2188L5304,2191L5302,2193L5300,2193L5297,2196L5295,2201L5295,2204L5300,2209L5300,2216L5297,2219L5295,2219L5295,2222L5293,2222L5289,2227L5287,2232L5287,2234L5289,2237L5297,2237L5297,2234L5306,2239L5304,2242L5304,2247L5306,2255L5308,2257L5308,2273L5310,2275L5315,2278L5319,2278L5319,2285L5317,2293L5317,2295L5321,2301L5321,2303L5328,2308L5328,2311L5330,2311L5339,2329L5339,2339L5336,2339L5339,2341L5339,2345L5344,2344L5355,2346L5365,2341L5369,2329L5384,2325L5394,2326L5406,2326L5413,2338L5414,2344L5422,2349L5428,2359L5441,2361L5456,2359L5471,2352L5488,2353L5491,2337L5512,2328L5535,2335L5553,2329L5568,2315L5571,2304L5564,2297L5561,2269L5553,2260L5578,2257L5590,2254L5590,2242L5615,2243L5612,2267L5609,2295L5609,2312L5607,2320L5621,2328L5620,2341L5620,2348L5629,2349L5629,2331L5631,2326L5631,2324L5635,2321L5635,2313L5633,2306L5635,2303L5637,2298L5642,2295L5644,2298L5646,2298L5646,2301L5650,2301L5653,2295L5650,2293L5653,2288L5653,2280L5655,2275L5655,2265L5657,2265L5657,2262L5661,2262L5661,2260L5663,2255L5663,2252L5672,2239L5672,2237L5681,2234L5683,2234L5683,2237L5685,2237L5685,2224L5687,2214L5692,2209L5692,2204L5694,2204L5694,2196L5696,2186L5694,2155L5696,2153L5696,2150L5698,2148L5698,2145L5700,2140L5700,2137L5702,2135L5707,2122L5707,2120L5709,2120L5707,2114L5707,2104L5709,2104L5709,2094L5720,2094L5724,2089L5724,2086L5722,2084L5728,2084L5733,2081L5735,2081L5735,2079L5737,2079L5737,2076L5739,2076L5739,2079L5744,2079L5746,2074L5750,2069L5750,2066L5752,2063L5754,2063L5752,2061z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5620,2341L5621,2328L5607,2320L5609,2312L5609,2295L5612,2267L5615,2243L5590,2242L5590,2254L5578,2257L5553,2260L5561,2269L5564,2297L5571,2304L5568,2315L5553,2329L5535,2335L5512,2328L5491,2337L5488,2353L5471,2352L5456,2359L5441,2361L5428,2359L5422,2349L5414,2344L5413,2338L5406,2326L5394,2326L5384,2325L5369,2329L5365,2341L5355,2346L5344,2344L5339,2345L5339,2349L5336,2352L5332,2352L5332,2357L5336,2357L5336,2362L5334,2362L5334,2367L5354,2367L5356,2369L5352,2375L5352,2380L5354,2380L5358,2382L5371,2382L5371,2385L5378,2392L5380,2392L5384,2398L5384,2403L5380,2403L5382,2405L5382,2408L5384,2408L5384,2410L5386,2410L5388,2413L5393,2415L5395,2418L5399,2418L5406,2426L5406,2428L5410,2431L5410,2433L5414,2433L5414,2436L5412,2438L5412,2443L5414,2443L5419,2449L5417,2449L5417,2451L5414,2451L5414,2454L5421,2454L5421,2456L5423,2454L5425,2456L5425,2459L5430,2459L5434,2461L5436,2461L5436,2464L5438,2466L5438,2479L5440,2479L5440,2482L5443,2482L5443,2484L5445,2484L5445,2489L5453,2494L5453,2502L5458,2502L5464,2510L5473,2510L5473,2507L5477,2507L5477,2505L5479,2502L5482,2502L5482,2505L5488,2505L5492,2510L5495,2507L5497,2507L5499,2502L5499,2500L5501,2497L5503,2500L5505,2500L5510,2502L5510,2510L5514,2510L5514,2512L5516,2515L5516,2517L5518,2517L5518,2520L5521,2522L5525,2522L5527,2525L5529,2525L5531,2530L5531,2533L5536,2533L5538,2535L5540,2535L5540,2530L5542,2530L5546,2528L5553,2528L5557,2533L5562,2530L5564,2528L5566,2528L5568,2530L5568,2533L5570,2533L5572,2535L5575,2535L5575,2533L5581,2528L5594,2528L5596,2525L5598,2525L5601,2528L5611,2528L5624,2512L5629,2510L5635,2502L5635,2500L5679,2500L5674,2494L5674,2484L5676,2484L5676,2482L5674,2479L5676,2479L5676,2477L5674,2477L5668,2474L5666,2474L5663,2477L5661,2477L5661,2471L5657,2466L5655,2461L5653,2459L5653,2451L5650,2451L5650,2449L5648,2446L5648,2443L5646,2436L5644,2433L5644,2431L5640,2431L5640,2426L5637,2426L5635,2423L5631,2423L5631,2418L5629,2415L5627,2415L5627,2410L5618,2400L5616,2400L5611,2398L5598,2398L5598,2390L5603,2385L5603,2377L5605,2375L5616,2375L5616,2377L5620,2377L5622,2375L5624,2375L5627,2372L5629,2372L5629,2349L5620,2348L5620,2341z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2991,2285L2991,2288L2993,2288L2993,2285L2997,2285L2999,2283L2999,2280L2997,2283L2993,2283L2991,2285L2991,2285zM2986,2319L2986,2301L2988,2301L2988,2298L2986,2296L2986,2298L2975,2298L2971,2298L2971,2301L2971,2303L2973,2303L2973,2306L2975,2314L2975,2316L2973,2316L2969,2319L2962,2320L2961,2321L2984,2321L2986,2319L2986,2319z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6278,3305L6276,3311L6274,3313L6272,3318L6272,3321L6274,3321L6276,3323L6278,3323L6281,3323L6283,3321L6285,3321L6285,3316L6287,3313L6283,3305L6278,3305L6278,3305z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M8129,2955L8133,2951L8141,2951L8141,2953L8136,2954L8133,2958L8130,2958L8128,2956L8129,2955zM8208,2923L8206,2925L8204,2925L8202,2928L8187,2928L8187,2930L8180,2930L8180,2928L8176,2928L8174,2930L8165,2930L8158,2933L8156,2933L8156,2935L8154,2938L8154,2943L8156,2943L8158,2940L8161,2946L8156,2946L8156,2948L8160,2952L8161,2953L8162,2954L8163,2953L8167,2953L8174,2951L8178,2951L8182,2946L8189,2946L8193,2943L8195,2943L8195,2940L8197,2940L8197,2938L8202,2938L8204,2935L8208,2935L8215,2928L8217,2928L8217,2925L8213,2923L8208,2923L8208,2923z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M6086,1793L6082,1793L6082,1796L6084,1798L6084,1803L6086,1809L6086,1806L6088,1803L6088,1798L6086,1796L6086,1793L6086,1793z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3996,2164L3994,2166L3993,2163L3996,2164zM3985,2098L3990,2098L3990,2101L3985,2101L3985,2098zM4038,2150L4040,2153L4039,2156L4035,2156L4036,2151L4038,2150zM4045,2101L4046,2108L4044,2108C4044,2108 4043,2102 4043,2101L4045,2101zM4013,2107L4013,2110L4007,2110L4006,2111L4004,2107L4013,2107zM3977,2094L3979,2097L3979,2099L3982,2099L3983,2097L3985,2097L3985,2094L3987,2094L3987,2089L3981,2089L3977,2094L3977,2094zM4000,2166L4002,2166L4003,2168L4005,2168L4006,2167L4007,2166L4007,2160L4001,2161L4000,2166L4000,2166zM4050,2120L4048,2120L4044,2125L4044,2127L4046,2130L4048,2130L4050,2127L4052,2126L4051,2125L4050,2122L4050,2120L4050,2120zM4022,2150L4022,2153L4020,2158L4024,2163L4029,2163L4031,2160L4024,2153L4024,2150L4022,2150z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M5074,1472L5076,1470L5078,1471L5078,1473L5077,1474L5075,1474L5074,1472zM5083,1474L5079,1474L5078,1476L5081,1479L5083,1481L5086,1480L5086,1478L5085,1475L5084,1475L5083,1474z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9042,2888L9051,2893L9055,2893L9057,2893L9057,2890L9053,2890L9049,2888L9049,2885L9046,2885L9046,2880L9044,2878L9042,2878L9038,2872L9036,2872L9036,2870L9033,2870L9031,2867L9029,2867L9027,2870L9033,2878L9036,2878L9038,2883L9040,2885L9040,2888L9042,2888L9042,2888zM9029,2900L9029,2903L9036,2911L9036,2908L9038,2908L9038,2903L9033,2900L9029,2900L9029,2900zM9049,2911L9046,2908L9044,2908L9042,2911L9042,2916L9044,2918L9049,2918L9049,2911L9049,2911zM9189,3002L9189,3000L9185,2995L9183,2995L9178,2992L9174,2992L9174,2990L9170,2987L9166,2987L9166,2985L9163,2985L9161,2990L9168,2990L9170,2995L9170,2997L9172,3000L9176,3002L9178,3005L9185,3005L9191,3008L9194,3008L9194,3005L9189,3005L9189,3002L9189,3002zM9066,2921L9062,2921L9059,2918L9059,2913L9053,2913L9053,2918L9051,2920L9047,2921L9049,2923L9053,2923L9057,2921L9059,2923L9059,2926L9059,2929L9062,2929L9062,2931L9066,2931L9068,2931L9068,2926L9066,2921L9066,2921zM9122,2931L9122,2923L9105,2911L9101,2911L9101,2908L9096,2906L9092,2900L9090,2900L9085,2898L9082,2899L9085,2903L9088,2903L9088,2906L9090,2908L9094,2911L9094,2913L9114,2923L9114,2926L9116,2931L9118,2926L9122,2931L9122,2931zM9146,2969L9144,2967L9144,2964L9137,2959L9131,2959L9127,2962L9124,2959L9122,2959L9122,2957L9120,2957L9120,2954L9118,2954L9118,2957L9116,2957L9116,2964L9122,2972L9127,2972L9129,2974L9131,2972L9135,2972L9144,2977L9148,2974L9150,2974L9148,2969L9146,2969L9146,2969zM9068,2936L9070,2939L9072,2939L9072,2936L9075,2936L9075,2931L9068,2931L9068,2936L9068,2936zM9161,2964L9163,2964L9166,2967L9166,2962L9163,2957L9159,2951L9161,2951L9161,2949L9159,2946L9159,2944L9157,2944L9155,2941L9153,2941L9153,2936L9155,2936L9155,2934L9150,2929L9150,2926L9148,2926L9148,2923L9142,2923L9142,2926L9144,2926L9144,2929L9146,2931L9146,2934L9144,2934L9148,2944L9148,2949L9150,2951L9153,2951L9159,2959L9161,2959L9161,2964L9161,2964z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9332,3114L9335,3114L9336,3117L9336,3119L9332,3119L9330,3116L9332,3114zM9351,3139L9353,3143L9353,3148L9353,3155L9354,3159L9354,3164L9352,3166L9350,3165L9351,3157L9351,3155L9351,3150L9350,3139L9351,3139zM9352,3196L9356,3199L9359,3199L9360,3197L9357,3192L9358,3189L9358,3186L9358,3183L9355,3180L9352,3175L9349,3179L9347,3184L9353,3185L9356,3188L9353,3190L9352,3196L9352,3196zM9389,3287L9386,3282L9384,3282L9382,3284L9382,3289L9384,3292L9386,3292L9389,3294L9391,3289L9389,3287L9389,3287zM9343,3192L9345,3190L9339,3182L9332,3177L9332,3174L9328,3169L9326,3169L9326,3180L9328,3180L9328,3177L9330,3177L9332,3180L9332,3192L9334,3192L9337,3190L9341,3190L9341,3192L9343,3192L9343,3192zM9356,3223L9356,3225L9354,3228L9355,3229L9356,3231L9358,3233L9365,3233L9365,3228L9360,3223L9356,3223L9356,3223zM9384,3271L9385,3271L9386,3269L9384,3269L9384,3266L9382,3266L9382,3261L9381,3261L9380,3259L9378,3259L9377,3260L9376,3261L9376,3269L9380,3269L9382,3271L9384,3271L9384,3271zM9311,3154L9315,3162L9317,3162L9319,3159L9321,3159L9324,3162L9325,3161L9326,3159L9328,3159L9328,3157L9326,3154L9326,3146L9324,3144L9321,3139L9319,3139L9319,3146L9315,3146L9315,3136L9313,3136L9313,3134L9311,3131L9311,3129L9308,3129L9308,3141L9311,3149L9311,3154L9311,3154zM9350,3152L9347,3149L9347,3152L9343,3152L9341,3154L9339,3154L9339,3157L9345,3157L9350,3152L9350,3152z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M9348,3351L9344,3349L9344,3353L9344,3356L9346,3358L9348,3358L9351,3358L9351,3353L9348,3353L9348,3351L9348,3351zM9314,3368L9309,3366L9307,3366L9305,3363L9305,3361L9303,3361L9301,3358L9299,3358L9292,3351L9286,3348L9283,3348L9281,3345L9281,3343L9279,3340L9277,3340L9275,3338L9273,3333L9270,3330L9266,3330L9266,3328L9260,3325L9260,3322L9257,3320L9255,3320L9251,3315L9247,3312L9244,3312L9244,3315L9242,3315L9242,3312L9238,3307L9236,3307L9236,3310L9240,3315L9240,3317L9242,3320L9242,3322L9244,3322L9247,3328L9247,3330L9249,3333L9251,3333L9257,3340L9260,3340L9260,3343L9262,3345L9262,3348L9268,3353L9270,3356L9273,3356L9279,3361L9283,3361L9288,3366L9292,3368L9295,3370L9296,3373L9299,3373L9301,3376L9303,3376L9305,3379L9309,3379L9312,3381L9314,3381L9315,3381L9316,3381L9318,3381L9319,3383L9320,3381L9320,3379L9318,3373L9314,3368L9314,3368zM9329,3334L9327,3332L9329,3330L9329,3328L9324,3326L9323,3330L9324,3330L9324,3332L9322,3333L9322,3335L9321,3337L9322,3339L9322,3340L9325,3340L9329,3343L9331,3343L9333,3340L9333,3338L9331,3335L9329,3335L9329,3334z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M3240,2500L3238,2500L3229,2489L3227,2489L3223,2484L3220,2484L3216,2479L3214,2479L3214,2477L3210,2472L3201,2472L3199,2469L3194,2469L3192,2466L3188,2464L3184,2464L3181,2466L3181,2472L3175,2479L3173,2479L3173,2482L3168,2487L3168,2500L3171,2500L3171,2502L3168,2502L3168,2507L3171,2507L3171,2520L3173,2520L3173,2523L3177,2528L3179,2528L3181,2533L3181,2538L3179,2543L3177,2545L3177,2548L3175,2548L3177,2551L3177,2561L3175,2561L3175,2563L3173,2566L3173,2568L3171,2568L3171,2571L3168,2574L3164,2576L3166,2576L3166,2579L3168,2579L3173,2581L3179,2581L3184,2579L3184,2576L3188,2574L3190,2574L3190,2576L3194,2579L3197,2579L3201,2574L3201,2576L3203,2576L3203,2579L3207,2579L3210,2581L3212,2581L3212,2579L3216,2576L3220,2571L3220,2568L3223,2568L3223,2563L3225,2558L3227,2556L3227,2548L3229,2545L3231,2545L3233,2543L3233,2538L3238,2533L3238,2530L3242,2525L3242,2523L3244,2523L3244,2520L3246,2520L3246,2510L3244,2510L3244,2502L3242,2500L3240,2500L3240,2500L3240,2500z\"/>\r\n        <Path Fill=\"Gray\" Stroke=\"Black\" StrokeThickness=\"2\" Data=\"M2649,1920L2647,1917L2651,1916L2658,1916L2662,1919L2662,1922L2658,1921L2651,1920L2649,1920zM2623,1904L2628,1905L2631,1908L2632,1915L2629,1917L2627,1921L2624,1921L2621,1926L2618,1925L2617,1922L2622,1917L2626,1914L2626,1911L2624,1909L2618,1909L2617,1905L2623,1904zM2590,1856L2589,1860L2587,1859L2584,1853L2590,1856zM2597,1891L2601,1894L2603,1900L2600,1899L2597,1895L2593,1893L2597,1891zM2612,1861L2615,1862L2615,1867L2611,1868L2610,1866L2608,1863L2612,1861zM2591,1877L2594,1884L2591,1883L2588,1878L2591,1877zM2573,1876L2577,1880L2580,1883L2583,1882L2582,1884L2579,1885L2573,1883L2571,1881L2568,1878L2570,1876L2573,1876zM2566,1834L2568,1839L2566,1842L2564,1842C2564,1842 2564,1837 2564,1837L2566,1834zM2552,1813L2553,1817L2551,1818C2551,1818 2549,1817 2549,1816L2552,1813zM2533,1829L2536,1832L2531,1834L2529,1831L2533,1829zM2536,1780L2535,1780L2530,1772L2530,1775L2534,1780L2534,1782L2536,1782L2537,1783L2538,1785L2536,1785L2536,1795L2532,1800L2534,1800L2534,1803L2536,1803L2536,1805L2538,1805L2538,1792L2540,1790L2543,1790L2543,1782L2538,1782L2536,1780L2536,1780zM2525,1859L2525,1856L2523,1855L2515,1858L2523,1876L2526,1876L2526,1860L2525,1859L2525,1859zM2519,1854L2519,1851L2523,1851L2523,1846L2521,1841L2519,1841L2519,1838L2514,1828L2510,1826L2510,1838L2508,1838L2507,1840L2505,1841L2502,1844L2502,1847L2504,1848L2506,1850L2510,1851L2512,1854L2514,1854L2514,1856L2519,1854L2519,1854zM2517,1780L2519,1777L2517,1777L2499,1777L2497,1780L2496,1781L2495,1781L2494,1781L2493,1780L2491,1780L2488,1777L2488,1780L2493,1785L2497,1785L2499,1782L2506,1780L2517,1780L2517,1780z\"/>\r\n    </Canvas>\r\n</local:Map>"
  },
  {
    "path": "testsite/Shapes/map.ts",
    "content": "import MouseEventArgs = Fayde.Input.MouseEventArgs;\r\nimport TouchEventArgs = Fayde.Input.TouchEventArgs;\r\n\r\nclass Map extends Fayde.Application {\r\n    constructor() {\r\n        super();\r\n        this.Loaded.on(this._Load, this);\r\n    }\r\n\r\n    private _Load(sender, e: nullstone.IEventArgs) {\r\n        var canvas = <Fayde.Controls.Canvas>this.RootVisual;\r\n        var enumerator = canvas.Children.getEnumerator();\r\n        while (enumerator.moveNext()) {\r\n            var cur = <Fayde.Shapes.Path>enumerator.current;\r\n            cur.MouseEnter.on(this._MouseEnter, this);\r\n            cur.MouseLeave.on(this._MouseLeave, this);\r\n            cur.TouchDown.on(this._TouchDown, this);\r\n            cur.TouchUp.on(this._TouchUp, this);\r\n            cur.TouchEnter.on(this._TouchEnter, this);\r\n            cur.TouchLeave.on(this._TouchLeave, this);\r\n        }\r\n    }\r\n\r\n    private _MouseEnter(sender, e: MouseEventArgs) {\r\n        this.HighlightShape(sender);\r\n    }\r\n    private _MouseLeave(sender, e: MouseEventArgs) {\r\n        this.UnhighlightShape(sender);\r\n    }\r\n    private _TouchEnter(sender, e: TouchEventArgs) {\r\n        this.HighlightShape(sender);\r\n    }\r\n    private _TouchLeave(sender, e: TouchEventArgs) {\r\n        this.UnhighlightShape(sender);\r\n    }\r\n    private _TouchDown(sender, e: TouchEventArgs) {\r\n        this.HighlightShape(sender);\r\n    }\r\n    private _TouchUp(sender, e: TouchEventArgs) {\r\n        this.UnhighlightShape(sender);\r\n    }\r\n\r\n    private HighlightShape(shape: Fayde.Shapes.Shape) {\r\n        shape.StrokeThickness = 10;\r\n        Fayde.Controls.Canvas.SetZIndex(shape, 9999);\r\n    }\r\n    private UnhighlightShape(shape: Fayde.Shapes.Shape) {\r\n        shape.StrokeThickness = 2;\r\n        Fayde.Controls.Canvas.SetZIndex(shape, 0);\r\n    }\r\n}\r\nexport = Map;"
  },
  {
    "path": "testsite/Shapes/path-bound.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:shapes=\"Shapes\"\r\n    ThemeName=\"Metro\">\r\n    <Grid ShowGridLines=\"True\" RowDefinitions=\"Auto *\">\r\n        <Grid.DataContext>\r\n            <shapes:PathBoundViewModel />\r\n        </Grid.DataContext>\r\n        <Button Content=\"Add Random Point\" Click=\"{EventBinding AddSegment}\" />\r\n        <Path Grid.Row=\"1\" Stroke=\"Black\" StrokeThickness=\"4\">\r\n            <Path.Data>\r\n                <PathGeometry>\r\n                    <PathGeometry.Figures>\r\n                        <PathFigure StartPoint=\"100,100\" SegmentsSource=\"{Binding Segments}\" />\r\n                    </PathGeometry.Figures>\r\n                </PathGeometry>\r\n            </Path.Data>\r\n        </Path>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Shapes/path-stretch.fap",
    "content": "<Application\r\n        xmlns=\"http://schemas.wsick.com/fayde\"\r\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n        xmlns:shapes=\"Shapes\"\r\n        ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"40\"/>\r\n            <RowDefinition Height=\"100\"/>\r\n            <RowDefinition Height=\"100\"/>\r\n            <RowDefinition Height=\"100\"/>\r\n            <RowDefinition Height=\"100\"/>\r\n            <RowDefinition Height=\"100\"/>\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"100\"/>\r\n            <ColumnDefinition Width=\"300\"/>\r\n            <ColumnDefinition Width=\"300\"/>\r\n        </Grid.ColumnDefinitions>\r\n        <TextBlock Grid.Row=\"0\" Grid.Column=\"1\" Text=\"Actual\" />\r\n        <TextBlock Grid.Row=\"0\" Grid.Column=\"2\" Text=\"Expected\" />\r\n\r\n        <TextBlock Grid.Row=\"1\" Text=\"None\"/>\r\n        <Path Grid.Row=\"1\" Grid.Column=\"1\" Margin=\"5\"\r\n              Stretch=\"None\" Stroke=\"Black\" StrokeThickness=\"3\"\r\n              Data=\"M -60 0 L 0 0 L 60 60 L 60 120 L 0 180 L -60 180 L -120 120 L -120 60 Z\"/>\r\n        <TextBlock Grid.Row=\"2\" Text=\"Fill\"/>\r\n        <Path Grid.Row=\"2\" Grid.Column=\"1\" Margin=\"5\"\r\n              Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"3\"\r\n              Data=\"M -60 0 L 0 0 L 60 60 L 60 120 L 0 180 L -60 180 L -120 120 L -120 60 Z\"/>\r\n        <TextBlock Grid.Row=\"3\" Text=\"Uniform\"/>\r\n        <Path Grid.Row=\"3\" Grid.Column=\"1\" Margin=\"5\"\r\n              Stretch=\"Uniform\" Stroke=\"Black\" StrokeThickness=\"3\"\r\n              Data=\"M -60 0 L 0 0 L 60 60 L 60 120 L 0 180 L -60 180 L -120 120 L -120 60 Z\"/>\r\n        <TextBlock Grid.Row=\"4\" Text=\"UniformToFill\"/>\r\n        <Path Grid.Row=\"4\" Grid.Column=\"1\" Margin=\"5\"\r\n              Stretch=\"UniformToFill\" Stroke=\"Black\" StrokeThickness=\"3\"\r\n              Data=\"M -60 0 L 0 0 L 60 60 L 60 120 L 0 180 L -60 180 L -120 120 L -120 60 Z\"/>\r\n        <TextBlock Grid.Row=\"5\" Text=\"Fill To Size\" />\r\n        <Path x:Name=\"pathFillSmall\" Grid.Row=\"5\" Grid.Column=\"1\" Margin=\"5\"\r\n              Width=\"50\" Height=\"50\"\r\n              Stretch=\"Fill\" Stroke=\"Black\" StrokeThickness=\"3\"\r\n              Data=\"M -60 0 L 0 0 L 60 60 L 60 120 L 0 180 L -60 180 L -120 120 L -120 60 Z\" />\r\n\r\n        <Image Grid.Column=\"2\" Grid.Row=\"1\" Grid.RowSpan=\"5\" Source=\"Shapes/expected-path-stretch.png\" />\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Shapes/path.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid ShowGridLines=\"True\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"100\" />\r\n            <RowDefinition Height=\"*\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"Auto\" />\r\n            <ColumnDefinition Width=\"Auto\" />\r\n            <ColumnDefinition Width=\"100\" />\r\n            <ColumnDefinition Width=\"*\" />\r\n        </Grid.ColumnDefinitions>\r\n\r\n        <TextBlock Grid.Row=\"1\" Text=\"Auto\" />\r\n        <TextBlock Grid.Row=\"2\" Text=\"100\" />\r\n        <TextBlock Grid.Row=\"3\" Text=\"*\" />\r\n\r\n        <TextBlock Grid.Column=\"1\" Text=\"Auto\" />\r\n        <TextBlock Grid.Column=\"2\" Text=\"100\" />\r\n\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"1\" Grid.Row=\"1\" />\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"1\" Grid.Row=\"2\" />\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"1\" Grid.Row=\"3\" />\r\n        \r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"2\" Grid.Row=\"1\" />\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"2\" Grid.Row=\"2\" />\r\n        <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n              Fill=\"#FF333333\"\r\n              Grid.Column=\"2\" Grid.Row=\"3\" />\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Shapes/rectangle-basic.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel>\r\n        <Rectangle Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                   RadiusX=\"10\" RadiusY=\"20\"\r\n                   Width=\"100\" Height=\"200\">\r\n        </Rectangle>\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Shapes/rectangle-grid.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid ShowGridLines=\"True\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"100\" />\r\n            <RowDefinition Height=\"*\" />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"Auto\" />\r\n            <ColumnDefinition Width=\"Auto\" />\r\n            <ColumnDefinition Width=\"100\" />\r\n            <ColumnDefinition Width=\"*\" />\r\n        </Grid.ColumnDefinitions>\r\n\r\n        <TextBlock Grid.Row=\"1\" Text=\"Auto\" />\r\n        <TextBlock Grid.Row=\"2\" Text=\"100\" />\r\n        <TextBlock Grid.Row=\"3\" Text=\"*\" />\r\n\r\n        <TextBlock Grid.Column=\"1\" Text=\"Auto\" />\r\n        <TextBlock Grid.Column=\"2\" Text=\"100\" />\r\n        \r\n        <Rectangle Grid.Column=\"1\" Grid.Row=\"1\" \r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"2\" Grid.Row=\"1\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"1\" Grid.Row=\"2\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"2\" Grid.Row=\"2\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"1\" Grid.Row=\"3\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n        <Rectangle Grid.Column=\"2\" Grid.Row=\"3\"\r\n            Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n            RadiusX=\"10\" RadiusY=\"20\" />\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Shapes/shape-stack.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel>\r\n        <Polygon Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" />\r\n        <Polygon Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" />\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Shapes/shape-stretch.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid Background=\"AntiqueWhite\">\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition />\r\n            <RowDefinition />\r\n        </Grid.RowDefinitions>\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Polygon Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" Stretch=\"Uniform\">\r\n        </Polygon>\r\n        <Polygon Grid.Column=\"1\" Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" Stretch=\"Fill\">\r\n        </Polygon>\r\n        <Polygon Grid.Row=\"1\" Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" Stretch=\"UniformToFill\">\r\n        </Polygon>\r\n        <Polygon Grid.Row=\"1\" Grid.Column=\"1\" Fill=\"#222222\" Stroke=\"Red\" StrokeThickness=\"5\"\r\n                 Points=\"150,0 200,300 0,100 300,100 100,300\"\r\n                 FillRule=\"NonZero\" Stretch=\"None\">\r\n        </Polygon>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Shapes/shapes.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"200\" />\r\n            <ColumnDefinition />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"200\" />\r\n            <RowDefinition />\r\n        </Grid.RowDefinitions>\r\n        <Rectangle RadiusX=\"5\" RadiusY=\"10\" Fill=\"#FFFFFF00\" Stroke=\"#FF000000\" StrokeThickness=\"5\" />\r\n        <Rectangle Grid.Row=\"1\" RadiusX=\"5\" RadiusY=\"5\" StrokeThickness=\"5\">\r\n            <Rectangle.Stroke>\r\n                <LinearGradientBrush EndPoint=\"1,1\" StartPoint=\"0,0\">\r\n                    <GradientStop Color=\"#FF000000\" Offset=\"0\"/>\r\n                    <GradientStop Color=\"#FFFFFFFF\" Offset=\"1\"/>\r\n                </LinearGradientBrush>\r\n            </Rectangle.Stroke>\r\n            <Rectangle.Fill>\r\n                <LinearGradientBrush EndPoint=\"0,0\" StartPoint=\"1,1\">\r\n                    <GradientStop Color=\"#FF000000\" Offset=\"0\"/>\r\n                    <GradientStop Color=\"#FFFFFFFF\" Offset=\"1\"/>\r\n                </LinearGradientBrush>\r\n            </Rectangle.Fill>\r\n        </Rectangle>\r\n        <Ellipse Grid.Column=\"1\" Stroke=\"#FF000000\" StrokeThickness=\"5\">\r\n            <Ellipse.Fill>\r\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\"/>\r\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\"/>\r\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\"/>\r\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\"/>\r\n                </LinearGradientBrush>\r\n            </Ellipse.Fill>\r\n        </Ellipse>\r\n        <Path Grid.Row=\"1\" Grid.Column=\"1\" Stretch=\"Uniform\" Height=\"8\" Width=\"4\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \">\r\n            <Path.Fill>\r\n                <SolidColorBrush x:Name=\"ButtonColor\" Color=\"#FF333333\" />\r\n            </Path.Fill>\r\n        </Path>\r\n        <Rectangle Grid.Row=\"1\" Grid.Column=\"1\" Width=\"100\" Height=\"100\" Opacity=\"0\" Fill=\"Black\">\r\n\r\n        </Rectangle>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Stress/LargeList.ts",
    "content": "class LargeListViewModel {\r\n    Items: any[] = [];\r\n    constructor() {\r\n        for (var i = 0; i < 1000000; i++) {\r\n            this.Items.push(\"ListBoxItem \" + i);\r\n        }\r\n    }\r\n}\r\nexport = LargeListViewModel;"
  },
  {
    "path": "testsite/Stress/listbox.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:stress=\"Stress\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <stress:LargeList />\r\n        </Grid.DataContext>\r\n        <ListBox x:Name=\"MyListBox\" ItemsSource=\"{Binding Items}\" Width=\"200\" Height=\"100\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\r\n        </ListBox>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Theme/Metro.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Application.Resources>\r\n        <Style x:Key=\"ControlLabelStyle\" TargetType=\"TextBlock\">\r\n            <Setter Property=\"Foreground\" Value=\"Black\" />\r\n            <Setter Property=\"FontFamily\" Value=\"Segoe UI, Lucida Sans Unicode, Verdana\" />\r\n            <Setter Property=\"FontSize\" Value=\"12\" />\r\n            <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\" />\r\n        </Style>\r\n    </Application.Resources>\r\n    <Grid>\r\n        <Grid>\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition Width=\"0.2*\" />\r\n                <ColumnDefinition Width=\"0.2*\" />\r\n                <ColumnDefinition Width=\"0.2*\" />\r\n                <ColumnDefinition Width=\"0.2*\" />\r\n                <ColumnDefinition Width=\"0.2*\" />\r\n            </Grid.ColumnDefinitions>\r\n            <StackPanel Width=\"260\" Margin=\"0\">\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"TEXTBOX\" Margin=\"0,10,30,0\" />\r\n                <TextBox TextWrapping=\"Wrap\" Text=\"TextBox\" Margin=\"0,3,30,3\" />\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"TOOLTIP\" Margin=\"0,10,30,0\" />\r\n                <Image Margin=\"0\" Source=\"Images/page01.JPG\" Stretch=\"Uniform\" ToolTipService.ToolTip=\"Lorem ipsum dolor\">\r\n                </Image>\r\n            </StackPanel>\r\n            <StackPanel Grid.ColumnSpan=\"1\" Orientation=\"Vertical\" Margin=\"10,0\" Width=\"260\" Grid.Column=\"1\">\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" TextWrapping=\"Wrap\" Text=\"PASSWORDBOX\" Margin=\"30,10,30,0\" />\r\n                <PasswordBox Margin=\"30,5\"  />\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"BUTTON\" Margin=\"30,10,30,0\" />\r\n                <Button Content=\"BUTTON\" Margin=\"30,5\" />\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"REPEATBUTTON\" Margin=\"30,10,30,0\" />\r\n                <RepeatButton Content=\"REPEATBUTTON\" Margin=\"30,3\" />\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"TOGGLEBUTTON\" Margin=\"30,10,30,0\" />\r\n                <ToggleButton Content=\"TOGGLEBUTTON\" Margin=\"30,3\" />\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"CHECKBOX\" Margin=\"30,41,30,0\" />\r\n                <CheckBox Content=\"CheckBox\" Margin=\"30,3\" HorizontalAlignment=\"Left\" IsChecked=\"True\" />\r\n                <CheckBox Content=\"CheckBox\" Margin=\"30,3\" HorizontalAlignment=\"Left\" IsThreeState=\"True\" IsChecked=\"True\" />\r\n                <CheckBox Content=\"CheckBox\" Margin=\"30,3\" HorizontalAlignment=\"Left\" />\r\n            </StackPanel>\r\n            <StackPanel Margin=\"0,0,65,0\" VerticalAlignment=\"Top\" Grid.Column=\"2\" Width=\"200\">\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"HYPERLINKBUTTON\" Margin=\"0,10,0,0\" />\r\n                <HyperlinkButton Content=\"HyperlinkButton\" Margin=\"0,5\" />\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"LISTBOX\" Margin=\"0,15,40,0\" />\r\n                <ListBox Margin=\"-7,0,5,0\">\r\n                    <ListBoxItem Content=\"listboxitem01\" />\r\n                    <ListBoxItem Content=\"listboxitem02\" />\r\n                    <ListBoxItem Content=\"listboxitem03\" />\r\n                    <ListBoxItem Content=\"listboxitem04\" />\r\n                </ListBox>\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"SLIDER\" Margin=\"0,20,-50,0\" />\r\n                <Slider Margin=\"59,3,0,3\" />\r\n                <Slider Margin=\"-105,-26,0,3\" Height=\"100\" Orientation=\"Vertical\" />\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"PROGRESSBAR\" Margin=\"0,15,0,0\" />\r\n                <ProgressBar Value=\"50\" Margin=\"0,5\" />\r\n                <!--\r\n                <ProgressBar Value=\"50\" Margin=\"0,5\" IsIndeterminate=\"True\" />\r\n                -->\r\n            </StackPanel>\r\n            <StackPanel Margin=\"0\" VerticalAlignment=\"Top\" Grid.Column=\"3\" Width=\"200\">\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"COMBOBOX\" Margin=\"0,10,-93,0\" />\r\n                <ComboBox Margin=\"0,5\">\r\n                    <ComboBoxItem Content=\"ComboBoxItem 1\" />\r\n                    <ComboBoxItem Content=\"ComboBoxItem 2\" />\r\n                    <ComboBoxItem Content=\"ComboBoxItem 3\" />\r\n                </ComboBox>\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"SCROLLVIEWER\" Padding=\"0\" Margin=\"0,14,0,0\" />\r\n                <ScrollViewer HorizontalAlignment=\"Left\" Height=\"81\" Width=\"200\">\r\n                    <TextBlock TextWrapping=\"Wrap\">\r\n                        <Span>\r\n                            <Run Text=\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida laoreet vestibulum. Nunc suscipit laoreet neque, ac fermentum odio condimentum sit amet.\" />\r\n                        </Span>\r\n                        <LineBreak />\r\n                        <Run Text=\"\" />\r\n                    </TextBlock>\r\n                </ScrollViewer>\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"RADIOBUTTON\" Margin=\"0,43,-68,0\" />\r\n                <RadioButton Content=\"RadioButton\" Margin=\"0,3\" HorizontalAlignment=\"Left\" IsChecked=\"True\" />\r\n                <RadioButton Content=\"RadioButton\" Margin=\"0,3\" HorizontalAlignment=\"Left\" />\r\n                <RadioButton Content=\"RadioButton\" Margin=\"0,3\" HorizontalAlignment=\"Left\" />\r\n                <TextBlock Style=\"{StaticResource ControlLabelStyle}\" Text=\"TEXTBLOCK\" Margin=\"0,31,-77,0\" />\r\n                <TextBlock Margin=\"0,5\" TextWrapping=\"Wrap\" Text=\"Pellentesque consectetuer pellentesque sollicitudin pellentesque consectetuer pellentesque sollicitudin pellentesque consectetuer pellentesque sollicitudin pellentesque consectetuer \" />\r\n            </StackPanel>\r\n        </Grid>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Toy/default2.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"Green\" ShowGridLines=\"True\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"500\"></ColumnDefinition>\r\n            <ColumnDefinition></ColumnDefinition>\r\n            <ColumnDefinition Width=\"Auto\"></ColumnDefinition>\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition></RowDefinition>\r\n            <RowDefinition></RowDefinition>\r\n            <RowDefinition></RowDefinition>\r\n        </Grid.RowDefinitions>\r\n        <Border BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"1\" CornerRadius=\"5\" Margin=\"0,0,50,50\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Right\">\r\n            <Border BorderBrush=\"Red\" Background=\"Orange\" BorderThickness=\"8\" CornerRadius=\"15\" Margin=\"5, 10, 15, 20\">\r\n                <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\" Margin=\"20\">\r\n                    <TextBlock Margin=\"10\">\r\n                        <TextBlock.Inlines>\r\n                            <Run Text=\"Welcome to Fayde! Brad isn't sure what the hell is going on. :)\"></Run>\r\n                        </TextBlock.Inlines>\r\n                    </TextBlock>\r\n                </Border>\r\n            </Border>\r\n        </Border>\r\n        <!--\r\n      <Grid Grid.Column=\"2\">\r\n        <Grid.ColumnDefinitions>\r\n          <ColumnDefinition Width=\"500\"></ColumnDefinition>\r\n          <ColumnDefinition></ColumnDefinition>\r\n          <ColumnDefinition Width=\"Auto\"></ColumnDefinition>\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.RowDefinitions>\r\n          <RowDefinition></RowDefinition>\r\n          <RowDefinition></RowDefinition>\r\n          <RowDefinition></RowDefinition>\r\n        </Grid.RowDefinitions>\r\n        <Border Grid.Row=\"2\" Grid.Column=\"0\" Width=\"100\" Height=\"100\" BorderBrush=\"Black\" BorderThickness=\"2\"/>\r\n      </Grid>\r\n      -->\r\n        <Border Grid.Row=\"2\" Grid.Column=\"0\" Width=\"100\" Height=\"100\" BorderBrush=\"Black\" BorderThickness=\"2\"/>\r\n        <Border Grid.Column=\"2\" BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"2\" CornerRadius=\"4\" Margin=\"20, 10, 20, 10\">\r\n            <Border BorderBrush=\"Navy\" Background=\"Silver\" BorderThickness=\"2\" CornerRadius=\"4\" Margin=\"20, 10, 20, 10\">\r\n                <TextBlock Margin=\"10\">\r\n                    <TextBlock.Inlines>\r\n                        <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                        <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                        <LineBreak />\r\n                        <Underline Foreground=\"Blue\">\r\n                            <Run Text=\"How about adding some blue?\" />\r\n                        </Underline>\r\n                    </TextBlock.Inlines>\r\n                </TextBlock>\r\n            </Border>\r\n        </Border>\r\n        <Border Grid.Row=\"1\" Grid.Column=\"1\" BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"1\" CornerRadius=\"5\">\r\n            <Border BorderBrush=\"Red\" Background=\"Orange\" BorderThickness=\"8\" CornerRadius=\"15\" Margin=\"5, 10, 15, 20\">\r\n                <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\" Margin=\"20\">\r\n                    <Image Margin=\"10\" Source=\"Images/testing.jpg\"/>\r\n                </Border>\r\n            </Border>\r\n        </Border>\r\n        <Image Grid.Row=\"2\" Grid.Column=\"1\" Source=\"Images/tile-test.png\"/>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Toy/default3.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\">\r\n        <TextBlock>\r\n            <TextBlock.Inlines>\r\n                <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red text. \" />\r\n                <LineBreak />\r\n                <Underline Foreground=\"Blue\">\r\n                    <Run Text=\"How about adding some blue?\" />\r\n                </Underline>\r\n            </TextBlock.Inlines>\r\n        </TextBlock>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Toy/default6.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Border BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"1\" CornerRadius=\"5\" Margin=\"0,0,50,100\">\r\n        <Border BorderBrush=\"Red\" Background=\"Orange\" BorderThickness=\"8\" CornerRadius=\"15\" Margin=\"5, 10, 15, 20\">\r\n            <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\" Margin=\"20\">\r\n                <Image Margin=\"10\" Source=\"Images/testing.jpg\"/>\r\n            </Border>\r\n        </Border>\r\n    </Border>\r\n</Application>"
  },
  {
    "path": "testsite/Toy/default7.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <StackPanel Background=\"AntiqueWhite\" Orientation=\"Horizontal\">\r\n        <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\">\r\n            <TextBlock Margin=\"10\">\r\n                <TextBlock.Inlines>\r\n                    <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                    <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                    <LineBreak />\r\n                    <Underline Foreground=\"Blue\">\r\n                        <Run Text=\"How about adding some blue?\" />\r\n                    </Underline>\r\n                </TextBlock.Inlines>\r\n            </TextBlock>\r\n        </Border>\r\n        <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\">\r\n            <TextBlock Margin=\"10\">\r\n                <TextBlock.Inlines>\r\n                    <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                    <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                    <LineBreak />\r\n                    <Underline Foreground=\"Blue\">\r\n                        <Run Text=\"How about adding some blue?\" />\r\n                    </Underline>\r\n                </TextBlock.Inlines>\r\n            </TextBlock>\r\n        </Border>\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/Toy/default8.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    ThemeName=\"Metro\">\r\n    <Grid x:Name=\"LayoutRoot\" Background=\"Green\" ShowGridLines=\"True\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"500\"></ColumnDefinition>\r\n            <ColumnDefinition></ColumnDefinition>\r\n            <ColumnDefinition Width=\"Auto\"></ColumnDefinition>\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition></RowDefinition>\r\n            <RowDefinition></RowDefinition>\r\n            <RowDefinition></RowDefinition>\r\n        </Grid.RowDefinitions>\r\n        <Border BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"1\" CornerRadius=\"5\" Margin=\"0,0,50,50\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Right\">\r\n            <Border BorderBrush=\"Red\" Background=\"Orange\" BorderThickness=\"8\" CornerRadius=\"15\" Margin=\"5, 10, 15, 20\">\r\n                <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\" Margin=\"20\">\r\n                    <TextBlock Margin=\"10\">\r\n                        <TextBlock.Inlines>\r\n                            <Run Text=\"Welcome to Fayde!\"></Run>\r\n                        </TextBlock.Inlines>\r\n                    </TextBlock>\r\n                </Border>\r\n            </Border>\r\n        </Border>\r\n        <Border Grid.Column=\"1\" Width=\"100\" Height=\"100\" BorderBrush=\"Black\" BorderThickness=\"2\"/>\r\n        <Border Grid.Column=\"2\" BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"2\" CornerRadius=\"4\" Margin=\"20, 10, 20, 10\">\r\n            <Border BorderBrush=\"Navy\" Background=\"Silver\" BorderThickness=\"2\" CornerRadius=\"4\" Margin=\"20, 10, 20, 10\">\r\n                <TextBlock Margin=\"10\">\r\n                    <TextBlock.Inlines>\r\n                        <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                        <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                        <LineBreak />\r\n                        <Underline Foreground=\"Blue\">\r\n                            <Run Text=\"How about adding some blue?\" />\r\n                        </Underline>\r\n                    </TextBlock.Inlines>\r\n                </TextBlock>\r\n            </Border>\r\n        </Border>\r\n        <Border Grid.Row=\"1\" Grid.Column=\"1\" BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"1\" CornerRadius=\"5\">\r\n            <Border BorderBrush=\"Red\" Background=\"Orange\" BorderThickness=\"8\" CornerRadius=\"15\" Margin=\"5, 10, 15, 20\" Opacity=\".3\">\r\n                <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\" Margin=\"20\">\r\n                    <Image Margin=\"10\" Source=\"Images/testing.jpg\" Opacity=\".5\"/>\r\n                </Border>\r\n            </Border>\r\n        </Border>\r\n        <Grid Grid.Row=\"1\" Width=\"800\" Grid.Column=\"2\" Background=\"Silver\" ShowGridLines=\"True\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition Width=\"500\"></ColumnDefinition>\r\n                <ColumnDefinition></ColumnDefinition>\r\n            </Grid.ColumnDefinitions>\r\n            <Grid.RowDefinitions>\r\n                <RowDefinition></RowDefinition>\r\n                <RowDefinition></RowDefinition>\r\n                <RowDefinition></RowDefinition>\r\n            </Grid.RowDefinitions>\r\n            <Border BorderBrush=\"Navy\" Background=\"White\" BorderThickness=\"2\" CornerRadius=\"4\" Margin=\"20, 10, 20, 10\">\r\n                <Border BorderBrush=\"Navy\" Background=\"Silver\" BorderThickness=\"2\" CornerRadius=\"4\" Margin=\"20, 10, 20, 10\">\r\n                    <TextBlock Margin=\"10\">\r\n                        <TextBlock.Inlines>\r\n                            <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                            <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                            <LineBreak />\r\n                            <Underline Foreground=\"Blue\">\r\n                                <Run Text=\"How about adding some blue?\" />\r\n                            </Underline>\r\n                        </TextBlock.Inlines>\r\n                    </TextBlock>\r\n                </Border>\r\n            </Border>\r\n        </Grid>\r\n        <Image Grid.Row=\"2\" Grid.Column=\"1\" Source=\"Images/tile-test.png\"/>\r\n        <StackPanel Grid.Row=\"2\" Grid.Column=\"2\" Margin=\"5\" Background=\"AntiqueWhite\" Orientation=\"Horizontal\">\r\n            <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\" Margin=\"10\">\r\n                <TextBlock Margin=\"10\">\r\n                    <TextBlock.Inlines>\r\n                        <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                        <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                        <LineBreak />\r\n                        <Underline Foreground=\"Blue\">\r\n                            <Run Text=\"How about adding some blue?\" />\r\n                        </Underline>\r\n                    </TextBlock.Inlines>\r\n                </TextBlock>\r\n            </Border>\r\n            <Border BorderBrush=\"Black\" Background=\"White\" BorderThickness=\"3\" CornerRadius=\"5, 5, 20, 20\" Margin=\"10\">\r\n                <TextBlock Margin=\"10\">\r\n                    <TextBlock.Inlines>\r\n                        <Run FontWeight=\"Bold\" FontSize=\"14\" Text=\"Hi! I am a TextBlock. \" />\r\n                        <Run FontStyle=\"Italic\" Foreground=\"Red\" Text=\"This is red italic text. \" />\r\n                        <LineBreak />\r\n                        <Underline Foreground=\"Blue\">\r\n                            <Run Text=\"How about adding some blue?\" />\r\n                        </Underline>\r\n                    </TextBlock.Inlines>\r\n                </TextBlock>\r\n            </Border>\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Validation/ExcTestEntity.ts",
    "content": "var NAME_REQUIRED = \"Name is required.\";\r\n\r\nclass ExcTestEntity extends Fayde.MVVM.ObservableObject {\r\n    private _Id: number = -1;\r\n    get Id (): number {\r\n        return this._Id;\r\n    }\r\n\r\n    set Id (value: number) {\r\n        this._Id = value;\r\n        this.OnPropertyChanged(\"Id\");\r\n    }\r\n\r\n    private _Name: string;\r\n    get Name (): string {\r\n        return this._Name;\r\n    }\r\n\r\n    set Name (value: string) {\r\n        if (!value)\r\n            throw new Exception(NAME_REQUIRED);\r\n        this._Name = value;\r\n        this.OnPropertyChanged(\"Name\");\r\n    }\r\n}\r\nexport = ExcTestEntity;"
  },
  {
    "path": "testsite/Validation/NotifyTestEntity.ts",
    "content": "var NAME_REQUIRED = \"Name is required.\";\r\n\r\nclass NotifyTestEntity extends Fayde.MVVM.Entity {\r\n    Id: number = -1;\r\n    Name: string = \"\";\r\n}\r\nFayde.MVVM.AutoModel(NotifyTestEntity)\r\n    .Notify(\"Id\", \"Name\")\r\n    .Validate(\"Name\", (value) => {\r\n        if (!value)\r\n            return [NAME_REQUIRED];\r\n    })\r\n    .Finish();\r\nexport = NotifyTestEntity;"
  },
  {
    "path": "testsite/Validation/TestEntity.ts",
    "content": "var NAME_REQUIRED = \"Name is required.\";\r\n\r\nclass TestEntity extends Fayde.MVVM.ObservableObject implements Fayde.Data.IDataErrorInfo {\r\n    Error: string = null;\r\n\r\n    private _Errors = new Map<string, string[]>();\r\n\r\n    constructor () {\r\n        super();\r\n        this.Name = \"\";\r\n    }\r\n\r\n    GetError (propertyName: string): string {\r\n        var all = this._Errors;\r\n        if (!all.has(propertyName))\r\n            return null;\r\n        var errs = all.get(propertyName);\r\n        if (errs)\r\n            return errs.join(\"\\n\");\r\n        return null;\r\n    }\r\n\r\n    AddError (propertyName: string, error: string) {\r\n        var all = this._Errors;\r\n        if (!all.has(propertyName))\r\n            all.set(propertyName, []);\r\n        var errs = all.get(propertyName);\r\n        errs.push(error);\r\n    }\r\n\r\n    RemoveError (propertyName: string, error: string) {\r\n        var all = this._Errors;\r\n        if (!all.has(propertyName))\r\n            return;\r\n        var errs = all.get(propertyName);\r\n        var index = errs.indexOf(error);\r\n        if (index < 0)\r\n            return;\r\n        errs.splice(index, 1);\r\n    }\r\n\r\n    private _Id: number = -1;\r\n    get Id (): number {\r\n        return this._Id;\r\n    }\r\n\r\n    set Id (value: number) {\r\n        this._Id = value;\r\n        this.OnPropertyChanged(\"Id\");\r\n    }\r\n\r\n    private _Name: string;\r\n    get Name (): string {\r\n        return this._Name;\r\n    }\r\n\r\n    set Name (value: string) {\r\n        if (this._Name === value)\r\n            return;\r\n        this._Name = value;\r\n        (!value) ? this.AddError(\"Name\", NAME_REQUIRED) : this.RemoveError(\"Name\", NAME_REQUIRED);\r\n        this.OnPropertyChanged(\"Name\");\r\n    }\r\n}\r\nFayde.Data.IDataErrorInfo_.mark(TestEntity);\r\nexport = TestEntity;"
  },
  {
    "path": "testsite/Validation/dataerrorinfo.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:val=\"Validation\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <val:TestEntity />\r\n        </Grid.DataContext>\r\n        <StackPanel HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n            <TextBox Text=\"{Binding Id}\" IsReadOnly=\"true\" />\r\n            <TextBox MinWidth=\"100\" Text=\"{Binding Name, Mode=TwoWay, ValidatesOnDataErrors=true, UpdateSourceTrigger=PropertyChanged}\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Validation/exception.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:val=\"Validation\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <val:ExcTestEntity />\r\n        </Grid.DataContext>\r\n        <StackPanel HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n            <TextBox Text=\"{Binding Id}\" IsReadOnly=\"true\" />\r\n            <TextBox MinWidth=\"100\" Text=\"{Binding Name, Mode=TwoWay, ValidatesOnExceptions=true, UpdateSourceTrigger=PropertyChanged}\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/Validation/map.d.ts",
    "content": "interface Map<K, V> {\r\n    clear(): void;\r\n    delete(key: K): boolean;\r\n    forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;\r\n    get(key: K): V;\r\n    has(key: K): boolean;\r\n    set(key: K, value: V): Map<K, V>;\r\n    size: number;\r\n}\r\ndeclare var Map: {\r\n    new <K, V>(): Map<K, V>;\r\n}"
  },
  {
    "path": "testsite/Validation/notifydataerrorinfo.fap",
    "content": "﻿<Application\r\n    xmlns=\"http://schemas.wsick.com/fayde\"\r\n    xmlns:x=\"http://schemas.wsick.com/fayde/x\"\r\n    xmlns:val=\"Validation\"\r\n    ThemeName=\"Metro\">\r\n    <Grid>\r\n        <Grid.DataContext>\r\n            <val:NotifyTestEntity />\r\n        </Grid.DataContext>\r\n        <StackPanel HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n            <TextBox Text=\"{Binding Id}\" IsReadOnly=\"true\" />\r\n            <TextBox MinWidth=\"100\" Text=\"{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n        </StackPanel>\r\n    </Grid>\r\n</Application>"
  },
  {
    "path": "testsite/ViewTemplates/ViewTemplates.fap",
    "content": "﻿<Application xmlns=\"http://schemas.wsick.com/fayde\" xmlns:x=\"http://schemas.wsick.com/fayde/x\" xmlns:local=\"ViewTemplates\" ThemeName=\"Metro\">\r\n    <StackPanel>\r\n        <StackPanel.DataContext>\r\n            <local:VtViewModel />\r\n        </StackPanel.DataContext>\r\n\r\n        <TextBlock Text=\"This sample demonstrates autowiring views to viewmodels by their class type.\" Margin=\"10\"/>\r\n\r\n        <TextBlock Text=\"Manual list item template assignment:\" Margin=\"10\"/>\r\n        <ListBox ItemsSource=\"{Binding ListItems}\" Background=\"Silver\">\r\n            <ListBox.ItemTemplate>\r\n                <DataTemplate>\r\n                    <TextBlock Text=\"{Binding DisplayName}\" FontWeight=\"Bold\" />\r\n                </DataTemplate>\r\n            </ListBox.ItemTemplate>\r\n        </ListBox>\r\n\r\n        <StackPanel>\r\n            <StackPanel.Resources>\r\n                <DataTemplate DataType=\"local:VtItemViewModel\">\r\n                    <TextBlock Text=\"{Binding DisplayName}\" FontWeight=\"Bold\" />\r\n                </DataTemplate>\r\n            </StackPanel.Resources>\r\n            <TextBlock Text=\"Automatic template selection, setting template body:\" Margin=\"10\"/>\r\n            <ListBox ItemsSource=\"{Binding ListItems}\" Background=\"Silver\" />\r\n        </StackPanel>\r\n\r\n        <StackPanel>\r\n            <StackPanel.Resources>\r\n                <DataTemplate DataType=\"local:VtItemViewModel\">\r\n                    <ContentControl ContentUri=\"ViewTemplates/VtItemView.fayde\" />\r\n                </DataTemplate>\r\n            </StackPanel.Resources>\r\n            <TextBlock Text=\"Automatic template selection, setting template URI:\" Margin=\"10\"/>\r\n            <ListBox ItemsSource=\"{Binding ListItems}\" Background=\"Silver\" />\r\n        </StackPanel>\r\n\r\n    </StackPanel>\r\n</Application>"
  },
  {
    "path": "testsite/ViewTemplates/VtItemView.fayde",
    "content": "﻿<Grid xmlns=\"http://schemas.wsick.com/fayde\" xmlns:x=\"http://schemas.wsick.com/fayde/x\">\r\n    <TextBlock Text=\"{Binding DisplayName}\" FontWeight=\"Bold\"/>\r\n</Grid>"
  },
  {
    "path": "testsite/ViewTemplates/VtItemViewModel.ts",
    "content": "class VtItemViewModel extends Fayde.MVVM.ViewModelBase\r\n{\r\n    DisplayName:string;\r\n\r\n    constructor(displayname:string)\r\n    {\r\n        super();\r\n        this.DisplayName = displayname;\r\n    }\r\n}\r\nexport = VtItemViewModel;"
  },
  {
    "path": "testsite/ViewTemplates/VtViewModel.ts",
    "content": "import VtItemViewModel = require(\"./VtItemViewModel\");\r\n\r\nclass VtViewModel extends Fayde.MVVM.ViewModelBase\r\n{\r\n    ListItems = new Fayde.Collections.ObservableCollection<VtItemViewModel>();\r\n\r\n    constructor()\r\n    {\r\n        super();\r\n        this.ListItems.Add(new VtItemViewModel(\"One\"));\r\n        this.ListItems.Add(new VtItemViewModel(\"Two\"));\r\n        this.ListItems.Add(new VtItemViewModel(\"Three\"));\r\n    }\r\n}\r\nexport = VtViewModel;"
  },
  {
    "path": "testsite/fayde.json",
    "content": "{\n  \"libs\": {},\n  \"themes\": {},\n  \"debug\": {\n    \"warnMissingThemes\": false,\n    \"warnBrokenPath\": false\n  }\n}"
  },
  {
    "path": "testsite/index.html",
    "content": "﻿<!doctype html>\r\n<html>\r\n<head>\r\n    <meta charset='UTF-8'/>\r\n    <meta http-equiv='content-type' content='text/html; charset=utf-8'/>\r\n    <title>Fayde Test Site</title>\r\n</head>\r\n<body>\r\n<script>\r\n    var tests = [\r\n        'Binding/double-listbox.fap',\r\n        'Binding/dt-binding.fap',\r\n        'Binding/eventbinding.fap',\r\n        'Binding/find-ancestor.fap',\r\n        'Binding/observablecoll-count.fap',\r\n        'Binding/selected-item.fap',\r\n        'Binding/update-source-trigger.fap',\r\n        'Clipping/grid.fap',\r\n        'Controls/border.fap',\r\n        'Controls/button.fap',\r\n        'Controls/checkbox.fap',\r\n        'Controls/combobox.fap',\r\n        'Controls/contentcontrol.fap',\r\n        'Controls/grid.fap',\r\n        'Controls/hyperlinkbutton.fap',\r\n        'Controls/itemscontrol.fap',\r\n        'Controls/listbox.fap',\r\n        'Controls/passwordbox.fap',\r\n        'Controls/progressbar.fap',\r\n        'Controls/repeatbutton.fap',\r\n        'Controls/radiobutton.fap',\r\n        'Controls/scrollbar.fap',\r\n        'Controls/scrollviewer.fap',\r\n        'Controls/slider.fap',\r\n        'Controls/stackpanel.fap',\r\n        'Controls/textblock.fap',\r\n        'Controls/textbox.fap',\r\n        'Controls/tooltip.fap',\r\n        'Core/layoutclip.fap',\r\n        'Core/resourcedictionary.fap',\r\n        'Demo/default.fap',\r\n        'Format/datetime.fap',\r\n        'IssueTests/dropshadowblur.fap',\r\n        'IssueTests/imagebrushbg.fap',\r\n        'IssueTests/issue11.fap',\r\n        'IssueTests/issue83.fap',\r\n        'IssueTests/issue92.fap',\r\n        'IssueTests/issue105.fap',\r\n        'IssueTests/issue109.fap',\r\n        'IssueTests/issue120.fap',\r\n        'IssueTests/issue138.fap',\r\n        'IssueTests/issue154.fap',\r\n        'IssueTests/issue161.fap',\r\n        'IssueTests/issue173.fap',\r\n        'IssueTests/issue177.fap',\r\n        'IssueTests/listbox.fap',\r\n        'IssueTests/filtereditemscontrol.fap',\r\n        'IssueTests/grid.fap',\r\n        'IssueTests/path-extreme.fap',\r\n        'IssueTests/tabissue.fap',\r\n        'Media/gradient-brush.fap',\r\n        'Media/image-stack.fap',\r\n        'Media/image-stretch.fap',\r\n        'Media/imagebrush.fap',\r\n        'Media/imaging.fap',\r\n        'Media/image-setsource.fap',\r\n        'Media/mediaelement-basic.fap',\r\n        'Media/mediaelement-stack.fap',\r\n        'Navigation/default.fap',\r\n        'Overlay/basic.fap',\r\n        'Overlay/dialog.fap',\r\n        'Path/arc-segment.fap',\r\n        'Shapes/canvas.fap',\r\n        'Shapes/map.fap',\r\n        'Shapes/path.fap',\r\n        'Shapes/path-bound.fap',\r\n        'Shapes/path-stretch.fap',\r\n        'Shapes/rectangle-basic.fap',\r\n        'Shapes/rectangle-grid.fap',\r\n        'Shapes/shape-stack.fap',\r\n        'Shapes/shape-stretch.fap',\r\n        'Shapes/shapes.fap',\r\n        'Stress/listbox.fap',\r\n        'Theme/Metro.fap',\r\n        'Theme/Silverlight.fap',\r\n        'Toy/default2.fap',\r\n        'Toy/default3.fap',\r\n        'Toy/default6.fap',\r\n        'Toy/default7.fap',\r\n        'Toy/default8.fap',\r\n        'Validation/notifydataerrorinfo.fap',\r\n        'Validation/dataerrorinfo.fap',\r\n        'Validation/exception.fap',\r\n        'Videos/mediacontrol.fap',\r\n        'ViewTemplates/ViewTemplates.fap'\r\n    ];\r\n    for (var i = 0; i < tests.length; i++) {\r\n        var a = document.createElement('a');\r\n        a.href = 'test.html?app=' + tests[i];\r\n        a.innerHTML = tests[i];\r\n        document.body.appendChild(a);\r\n        document.body.appendChild(document.createElement('br'));\r\n    }\r\n</script>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "testsite/test.html",
    "content": "<!DOCTYPE html>\r\n<html>\r\n<head lang=\"en\">\r\n    <meta charset=\"UTF-8\">\r\n    <title></title>\r\n    <script src=\"lib/perfex/dist/perfex.js\"></script>\r\n    <script src=\"lib/nullstone/dist/nullstone.min.js\"></script>\r\n    <script src=\"lib/minerva/dist/minerva.js\"></script>\r\n    <script src=\"lib/fayde/dist/fayde.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        var require = {\r\n            baseUrl: \"./\",\r\n            paths: {\r\n                \"text\": \"lib/requirejs-text/text\"\r\n            },\r\n            deps: [\"text\", \"text!fayde.json\"],\r\n            callback: function (text, config) {\r\n                Fayde.Bootstrap();\r\n            }\r\n        };\r\n    </script>\r\n    <script src=\"lib/requirejs/require.js\"></script>\r\n    <style>\r\n        * {\r\n            margin: 0;\r\n            padding: 0;\r\n        }\r\n\r\n        html, body {\r\n            width: 100%;\r\n            height: 100%;\r\n        }\r\n\r\n        canvas {\r\n            display: block;\r\n        }\r\n    </style>\r\n</head>\r\n<body>\r\n\r\n<script>\r\n    function getQueryParam(key) {\r\n        var q = window.location.search.substr(1);\r\n        var kvps = q.split(';');\r\n        for (var i = 0; i < kvps.length; i++) {\r\n            var tokens = kvps[i].split('=');\r\n            if (tokens[0].toLowerCase() === key.toLowerCase())\r\n                return tokens[1];\r\n        }\r\n    }\r\n    document.body.setAttribute('fayde-app', getQueryParam('app'));\r\n</script>\r\n</body>\r\n</html>"
  },
  {
    "path": "testsite/videos/MediaControlViewModel.ts",
    "content": "﻿class MediaControlViewModel extends Fayde.MVVM.ViewModelBase {\n\n    Play: Fayde.MVVM.RelayCommand;\n    Pause: Fayde.MVVM.RelayCommand;\n\n    constructor() {\n        super();\n\n        this.Play = new Fayde.MVVM.RelayCommand(par => this.PlayVideo(par));\n        this.Pause = new Fayde.MVVM.RelayCommand(par => this.PauseVideo(par));\n    }\n\n    PlayVideo(par: any) {\n        var vid = <Fayde.Controls.MediaElement>par;\n        vid.Play();\n    }\n\n    PauseVideo(par: any) {\n        var vid = <Fayde.Controls.MediaElement>par;\n        vid.Pause();\n    }\n}\n\nFayde.MVVM.AutoModel(MediaControlViewModel)\n    .Notify(\"Play\", \"Pause\")\n    .Finish();\n\nexport = MediaControlViewModel;"
  },
  {
    "path": "testsite/videos/mediacontrol.fap",
    "content": "﻿<Application\n        xmlns=\"http://schemas.wsick.com/fayde\"\n        xmlns:x=\"http://schemas.wsick.com/fayde/x\"\n        xmlns:c=\"videos\"\n        ThemeName=\"Metro\">\n    <Grid x:Name=\"LayoutRoot\">\n        <Grid.DataContext>\n            <c:MediaControlViewModel />\n        </Grid.DataContext>\n        <Border BorderThickness=\"1\"\n                Margin=\"40\"\n                BorderBrush=\"#FF000000\">\n            <Grid>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"*\"/>\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n                \n                <MediaElement Source=\"http://localhost:7001/videos/test_movie.mp4\"\n                              Grid.Row=\"0\"\n                              x:Name=\"Video\"/>\n\n                <StackPanel Orientation=\"Horizontal\"\n                            HorizontalAlignment=\"Center\"\n                            Grid.Row=\"1\">\n                    \n                    <Button Content=\"Play\"\n                            Command=\"{Binding Path=Play}\" \n                            CommandParameter=\"{Binding ElementName=Video}\"/>\n\n                    <Button Content=\"Pause\"\n                            Command=\"{Binding Path=Pause}\"\n                            CommandParameter=\"{Binding ElementName=Video}\"/>\n\n                </StackPanel>\n            </Grid>\n        </Border>\n    </Grid>\n</Application>"
  },
  {
    "path": "testsite/xamlload.html",
    "content": "﻿<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n    <title></title>\r\n    <script src=\"/Fayde/Fayde.js\"></script>\r\n    <script type=\"text/javascript\">\r\n        function loadXaml() {\r\n            var ta = document.getElementById(\"ta\");\r\n            var divLoadMsg = document.getElementById(\"divLoadMsg\");\r\n            var start = new Date().getTime();\r\n            try {\r\n                var obj = Fayde.Xaml.Load(ta.value);\r\n            } catch (err) {\r\n                divLoadMsg.innerText = err.toString();\r\n                return;\r\n            }\r\n            var end = new Date().getTime();\r\n            divLoadMsg.innerText = \"Load Time: \" + (end - start).toString() + \"ms\";\r\n        }\r\n    </script>\r\n</head>\r\n<body>\r\n    Xaml: <br />\r\n    <textarea id=\"ta\" rows=\"50\" cols=\"200\"></textarea>\r\n    <br />\r\n    <input type=\"button\" value=\"Load\" onclick=\"loadXaml()\" />\r\n    <br />\r\n    <div id=\"divLoadMsg\"></div>\r\n</body>\r\n</html>"
  },
  {
    "path": "themes/Metro.theme.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<ResourceDictionary xmlns=\"http://schemas.wsick.com/fayde\"\r\n                    xmlns:x=\"http://schemas.wsick.com/fayde/x\">\r\n\r\n    <!-- Brushes -->\r\n    <!-- Theme Base Colors -->\r\n\r\n    <!--ACCENT COLORS-->\r\n    <Color x:Key=\"HighlightDarkColor\">#FF119EDA</Color>\r\n    <Color x:Key=\"HighlightLightColor\">#FFB2E0F4</Color>\r\n    <!--80%-->\r\n    <Color x:Key=\"AccentColor\">#CC119EDA</Color>\r\n    <!--60%-->\r\n    <Color x:Key=\"AccentColor2\">#99119EDA</Color>\r\n    <!--40%-->\r\n    <Color x:Key=\"AccentColor3\">#66119EDA</Color>\r\n    <!--20%-->\r\n    <Color x:Key=\"AccentColor4\">#33119EDA</Color>\r\n\r\n    <!--BASE COLORS-->\r\n    <Color x:Key=\"BlackColor\">#FF000000</Color>\r\n    <Color x:Key=\"WhiteColor\">#FFFFFFFF</Color>\r\n    <Color x:Key=\"Gray1\">#FFCCCCCC</Color>\r\n    <Color x:Key=\"Gray2\">#FF7F7F7F</Color>\r\n    <Color x:Key=\"Gray3\">#FF333333</Color>\r\n    <Color x:Key=\"Gray4\">#FFB9B9B9</Color>\r\n    <Color x:Key=\"Gray5\">#FFD8D8D9</Color>\r\n    <Color x:Key=\"Gray6\">#FF9D9D9D</Color>\r\n    <Color x:Key=\"Gray7\">#FFF7F7F7</Color>\r\n    <Color x:Key=\"Gray8\">#FFE0E0E0</Color>\r\n    <Color x:Key=\"Gray9\">#FFA59F93</Color>\r\n    <Color x:Key=\"Gray10\">#7FFFFFFF</Color>\r\n    <Color x:Key=\"Gray11\">#7FA9A9A9</Color>\r\n    <Color x:Key=\"Gray12\">#A5F7F7F7</Color>\r\n    <Color x:Key=\"Gray13\">#5EC9C9C9</Color>\r\n    <Color x:Key=\"TextBoxText\">#FF414141</Color>\r\n    <Color x:Key=\"NormalForegroundColor\">#FF000000</Color>\r\n    <Color x:Key=\"HoverForegroundColor\">#FFFFFFFF</Color>\r\n    <!--Note: For the best design BaseColor2 should be a contrast of BaseColor1-->\r\n    <Color x:Key=\"BaseColor2\">#FFFFFFFF</Color>\r\n    <Color x:Key=\"BaseColor5\">#FFBABABA</Color>\r\n    <Color x:Key=\"BaseColor3\">#FF303030</Color>\r\n\r\n    <!--LIGHT COLOR TRANSPARENCIES-->\r\n    <!--0%-->\r\n    <Color x:Key=\"TransparentWhiteColor\">#00FFFFFF</Color>\r\n    <!--10%-->\r\n    <Color x:Key=\"TransparentWhiteLightColor\">#19FFFFFF</Color>\r\n    <!--25%-->\r\n    <Color x:Key=\"TransparentLightestColor\">#34FFFFFF</Color>\r\n    <!--65%-->\r\n    <Color x:Key=\"TransparentLightLightColor\">#A5FFFFFF</Color>\r\n    <!--85%-->\r\n    <Color x:Key=\"TransparentLightColor\">#D8FFFFFF</Color>\r\n\r\n\r\n    <!--DARK COLOR TRANSPARENCIES-->\r\n    <!--0%-->\r\n    <Color x:Key=\"TransparentBlackColor\">#00000000</Color>\r\n    <!--25%-->\r\n    <Color x:Key=\"TransparentDarkColor\">#3F000000</Color>\r\n    <!--35%-->\r\n    <Color x:Key=\"TransparentDarkDarkColor\">#59000000</Color>\r\n    <!--60%-->\r\n    <Color x:Key=\"TransparentDarkDarkDarkColor\">#99000000</Color>\r\n    <!--80%-->\r\n    <Color x:Key=\"TransparentDarkestColor\">#CC000000</Color>\r\n\r\n    <!-- CORE CONTROL COLORS-->\r\n    <Color x:Key=\"ValidationColor1\">#052A2E31</Color>\r\n    <Color x:Key=\"ValidationColor2\">#152A2E31</Color>\r\n    <Color x:Key=\"ValidationColor3\">#252A2E31</Color>\r\n    <Color x:Key=\"ValidationColor4\">#352A2E31</Color>\r\n    <Color x:Key=\"ValidationColor5\">#FFDC000C</Color>\r\n    <Color x:Key=\"ValidationSummaryColor1\">#FFDC020D</Color>\r\n    <Color x:Key=\"ValidationSummaryColor2\">#FFCA000C</Color>\r\n    <Color x:Key=\"ValidationSummaryColor3\">#FFFF9298</Color>\r\n    <Color x:Key=\"ValidationSummaryColor4\">#FFFDC8C8</Color>\r\n    <Color x:Key=\"ValidationSummaryColor5\">#DDD43940</Color>\r\n    <Color x:Key=\"ValidationSummaryFillColor1\">#59F7D8DB</Color>\r\n    <Color x:Key=\"ValidationSummaryFillColor2\">#FFF7D8DB</Color>\r\n    <Color x:Key=\"ControlsValidationColor\">#FFDB000C</Color>\r\n\r\n    <Color x:Key=\"ProgressIndeterminateColor1\">#33878787</Color>\r\n    <Color x:Key=\"ProgressIndeterminateColor2\">#33959595</Color>\r\n    <Color x:Key=\"ProgressIndeterminateColor3\">#4C000000</Color>\r\n    <Color x:Key=\"ProgressIndeterminateColor4\">#4C000000</Color>\r\n\r\n    <!-- SDK COLORS -->\r\n    <Color x:Key=\"PageOverlayColor\">#7F000000</Color>\r\n\r\n    <!-- TOOLKIT COLORS -->\r\n    <Color x:Key=\"RatingStarsColor\">#F6FF9900</Color>\r\n    <Color x:Key=\"RatingMouseOverColor\">#F6FDFF70</Color>\r\n    <Color x:Key=\"TimeHintIconColor1\">#F6CAA709</Color>\r\n    <Color x:Key=\"TimeHintIconColor2\">#F3F7F34F</Color>\r\n    <Color x:Key=\"TimeHintIconColor3\">#E7CAA709</Color>\r\n    <Color x:Key=\"TimeHintIconColor4\">#E7967C07</Color>\r\n    <Color x:Key=\"TimeHintIconColor5\">#E7625106</Color>\r\n    <Color x:Key=\"TimeHintIconColor6\">#FB8F8873</Color>\r\n    <Color x:Key=\"TimeHintIconColor7\">#F6271A47</Color>\r\n    <Color x:Key=\"TimeHintIconColor8\">#E7271A47</Color>\r\n    <Color x:Key=\"TimeHintIconColor9\">#9A89782B</Color>\r\n    <Color x:Key=\"TimeHintIconColor10\">#4DEBD60F</Color>\r\n    <Color x:Key=\"TimeHintIconColor11\">#FBF6EC20</Color>\r\n    <Color x:Key=\"TimeHintIconColor12\">#FF1B1B54</Color>\r\n    <Color x:Key=\"TimeHintIconColor13\">#FF1C1C50</Color>\r\n\r\n    <Color x:Key=\"OKButtonIconColor1\">#FF67CA0A</Color>\r\n    <Color x:Key=\"OKButtonIconColor2\">#FF498C38</Color>\r\n    <Color x:Key=\"OKButtonIconColor3\">#FF29EE5B</Color>\r\n    <Color x:Key=\"CancelButtonIconColor1\">#FFEA7525</Color>\r\n    <Color x:Key=\"CancelButtonIconColor2\">#FFDA715B</Color>\r\n    <Color x:Key=\"CancelButtonIconColor3\">#FFB72909</Color>\r\n\r\n    <!--CHART COLORS-->\r\n    <Color x:Key=\"ChartBrush1\">#FF0097FC</Color>\r\n    <Color x:Key=\"ChartBrush2\">#FF70BBED</Color>\r\n    <Color x:Key=\"ChartBrush3\">#FF70BBED</Color>\r\n    <Color x:Key=\"ChartBrush4\">#FF4556BA</Color>\r\n    <Color x:Key=\"ChartBrush5\">#FFC84BA4</Color>\r\n    <Color x:Key=\"ChartBrush6\">#FF477ABE</Color>\r\n    <Color x:Key=\"ChartBrush7\">#FF6644B7</Color>\r\n    <Color x:Key=\"ChartBrush8\">#FFA045BA</Color>\r\n    <Color x:Key=\"ChartBrush9\">#FF73C348</Color>\r\n    <Color x:Key=\"ChartBrush10\">#FFDD5279</Color>\r\n    <Color x:Key=\"ChartBrush11\">#FF4999C4</Color>\r\n    <Color x:Key=\"ChartBrush12\">#FFEC8B58</Color>\r\n    <Color x:Key=\"ChartBrush13\">#FFECA058</Color>\r\n    <Color x:Key=\"ChartBrush14\">#FFEC6558</Color>\r\n    <Color x:Key=\"ChartBrush15\">#FFEC8B58</Color>\r\n    <Color x:Key=\"ChartBrush16\">#FFECA058</Color>\r\n\r\n    <!-- Colors Stop -->\r\n\r\n    <!-- *************BRUSHES START************* -->\r\n    <!--PROJECT TEMPLATE BRUSHES -->\r\n\r\n    <!-- UNIVERSAL CONTROL BRUSHES -->\r\n    <SolidColorBrush x:Key=\"ControlBackgroundBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"WhiteBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"BlackBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"TextBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"LabelTextBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"WhiteColorBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"BlackColorBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"HighlightBrush\" Color=\"{StaticResource HighlightDarkColor}\"/>\r\n    <SolidColorBrush x:Key=\"HighlightLightBrush\" Color=\"{StaticResource HighlightLightColor}\"/>\r\n    <SolidColorBrush x:Key=\"NavigationBorderBrush\" Color=\"#FF9D9492\"/>\r\n    <SolidColorBrush x:Key=\"NavigationForegroundBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"PageBorderBrush\" Color=\"#FFB2B2B2\"/>\r\n    <SolidColorBrush x:Key=\"BodyTextColorBrush\" Color=\"#FF313131\"/>\r\n    <SolidColorBrush x:Key=\"ControlsDisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n    <SolidColorBrush x:Key=\"ReadOnlyBrush\" Color=\"{StaticResource TransparentLightestColor}\"/>\r\n    <SolidColorBrush x:Key=\"DisabledForegroundBrush\" Color=\"#FFAAAAAA\"/>\r\n    <SolidColorBrush x:Key=\"DisabledControlBrush\" Color=\"#FFAAAAAA\"/>\r\n    <SolidColorBrush x:Key=\"DisabledWhiteColorBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"RatingStarsBrush\" Color=\"{StaticResource RatingStarsColor}\"/>\r\n    <SolidColorBrush x:Key=\"RatingMouseOverBrush\" Color=\"{StaticResource RatingMouseOverColor}\"/>\r\n    <SolidColorBrush x:Key=\"PageOverlayBrush\" Color=\"{StaticResource PageOverlayColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"FuzzBrush1\" Color=\"#1E000000\"/>\r\n    <SolidColorBrush x:Key=\"FuzzBrush2\" Color=\"#14000000\"/>\r\n    <SolidColorBrush x:Key=\"FuzzBrush3\" Color=\"Black\"/>\r\n\r\n    <SolidColorBrush x:Key=\"TransparentWhiteBrush\" Color=\"{StaticResource TransparentWhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentWhiteLightBrush\" Color=\"{StaticResource TransparentWhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentLightestBrush\" Color=\"{StaticResource TransparentLightestColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentLightLightBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentBlackBrush\" Color=\"{StaticResource TransparentBlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentDarkBrush\" Color=\"{StaticResource TransparentDarkColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentDarkDarkDarkBrush\" Color=\"{StaticResource TransparentDarkDarkDarkColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"GrayBrush1\" Color=\"{StaticResource Gray1}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush2\" Color=\"{StaticResource Gray2}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush3\" Color=\"{StaticResource Gray3}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush4\" Color=\"{StaticResource Gray4}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush5\" Color=\"{StaticResource Gray5}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush6\" Color=\"{StaticResource Gray6}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush7\" Color=\"{StaticResource Gray7}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush8\" Color=\"{StaticResource Gray8}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush9\" Color=\"{StaticResource Gray9}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush10\" Color=\"{StaticResource Gray10}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush11\" Color=\"{StaticResource Gray11}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush12\" Color=\"{StaticResource Gray12}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush13\" Color=\"{StaticResource Gray13}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"HoverHyperlinkForegroundBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"HoverHyperlinkBackgroundBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"TextBoxBorderBrush\" Color=\"{StaticResource Gray1}\"/>\r\n    <SolidColorBrush x:Key=\"ControlBorderBrush\" Color=\"{StaticResource Gray1}\"/>\r\n    <SolidColorBrush x:Key=\"TextBoxMouseOverBorderBrush\" Color=\"{StaticResource HighlightDarkColor}\"/>\r\n    <SolidColorBrush x:Key=\"TextBoxMouseOverInnerBorderBrush\" Color=\"{StaticResource HighlightLightColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"CheckBoxBrush\" Color=\"{StaticResource Gray2}\"/>\r\n    <SolidColorBrush x:Key=\"CheckBoxMouseOverBrush\" Color=\"{StaticResource Gray3}\"/>\r\n    <LinearGradientBrush x:Key=\"CheckBoxBackgroundBrush\" EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n        <GradientStop Color=\"#FFE5E5E5\" Offset=\"0\"/>\r\n        <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n    </LinearGradientBrush>\r\n\r\n    <LinearGradientBrush x:Key=\"ApplicationNameBrush\" EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n        <GradientStop Color=\"#FF14BBD2\" Offset=\"0\"/>\r\n        <GradientStop Color=\"#FF013C6C\" Offset=\"1\"/>\r\n    </LinearGradientBrush>\r\n\r\n    <SolidColorBrush x:Key=\"ThumbBrush\" Color=\"{StaticResource Gray4}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"ItemSelectedBrush\" Color=\"{StaticResource Gray5}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"SliderTrackBrush\" Color=\"{StaticResource Gray6}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"NormalBrush\" Color=\"{StaticResource Gray7}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"ComboBoxPopupBrush\" Color=\"{StaticResource Gray9}\"/>\r\n    <LinearGradientBrush x:Key=\"BrandingBrush\" EndPoint=\"0.001,0.5\" StartPoint=\"1.002,0.5\">\r\n        <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0\"/>\r\n        <GradientStop Color=\"#FF5FC316\" Offset=\"1\"/>\r\n    </LinearGradientBrush>\r\n\r\n    <DropShadowEffect x:Key=\"DropShadowBrush\" Direction=\"330\" Opacity=\"0.3\" ShadowDepth=\"0\" BlurRadius=\"6\"/>\r\n\r\n    <SolidColorBrush x:Key=\"WindowBackgroundBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"SeperatorBrush\" Color=\"#FFC4C4C5\"/>\r\n\r\n\r\n    <!-- CONTROL VALIDATION BRUSHES -->\r\n    <SolidColorBrush x:Key=\"ControlsValidationBrush\" Color=\"{StaticResource ControlsValidationColor}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush1\" Color=\"{StaticResource ValidationColor1}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush2\" Color=\"{StaticResource ValidationColor2}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush3\" Color=\"{StaticResource ValidationColor3}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush4\" Color=\"{StaticResource ValidationColor4}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush5\" Color=\"{StaticResource ValidationColor5}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush1\" Color=\"{StaticResource ValidationSummaryColor1}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush2\" Color=\"{StaticResource ValidationSummaryColor2}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush3\" Color=\"{StaticResource ValidationSummaryColor3}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush4\" Color=\"{StaticResource ValidationSummaryColor4}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush5\" Color=\"{StaticResource ValidationSummaryColor5}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryFillBrush1\" Color=\"{StaticResource ValidationSummaryFillColor1}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryFillBrush2\" Color=\"{StaticResource ValidationSummaryFillColor2}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryDisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n\r\n    <!--VALIDATION ICON BRUSHES-->\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush1\" Color=\"{StaticResource TimeHintIconColor1}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush2\" Color=\"{StaticResource TimeHintIconColor2}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush3\" Color=\"{StaticResource TimeHintIconColor3}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush4\" Color=\"{StaticResource TimeHintIconColor4}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush5\" Color=\"{StaticResource TimeHintIconColor5}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush6\" Color=\"{StaticResource TimeHintIconColor6}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush7\" Color=\"{StaticResource TimeHintIconColor7}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush8\" Color=\"{StaticResource TimeHintIconColor8}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush9\" Color=\"{StaticResource TimeHintIconColor9}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush10\" Color=\"{StaticResource TimeHintIconColor10}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush11\" Color=\"{StaticResource TimeHintIconColor11}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush12\" Color=\"{StaticResource TimeHintIconColor12}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush13\" Color=\"{StaticResource TimeHintIconColor13}\"/>\r\n    <!-- Brushes Stop -->\r\n    <!-- Brushes End -->\r\n\r\n    <!-- FONTS -->\r\n    <FontFamily x:Key=\"HeaderFontFamily\">Segoe UI Light, Lucida Sans Unicode, Verdana</FontFamily>\r\n    <FontFamily x:Key=\"ContentFontFamily\">Segoe UI, Lucida Sans Unicode, Verdana</FontFamily>\r\n\r\n    <x:Double x:Key=\"ApplicationNameFontSize\">50</x:Double>\r\n    <x:Double x:Key=\"HeaderFontSize\">21.333</x:Double>\r\n    <x:Double x:Key=\"NavigationFontSize\">28</x:Double>\r\n\r\n    <x:Double x:Key=\"ContentFontSize\">14</x:Double>\r\n    <x:Double x:Key=\"HyperlinkFontSize\">14</x:Double>\r\n    <x:Double x:Key=\"LabelFontSize\">12</x:Double>\r\n    <x:Double x:Key=\"ControlTitleFontSize\">16</x:Double>\r\n    <x:Double x:Key=\"ControlTitleBigFontSize\">18</x:Double>\r\n    <x:Double x:Key=\"ControlContentFontSize\">10</x:Double>\r\n    <!-- FONTS -->\r\n\r\n    <!--SearchButtonStyle-->\r\n    <Style x:Key=\"SearchButtonStyle\" TargetType=\"HyperlinkButton\">\r\n        <Setter Property=\"Margin\" Value=\"-22,0,20,0\"/>\r\n        <Setter Property=\"ContentTemplate\">\r\n            <Setter.Value>\r\n                <DataTemplate>\r\n                    <Grid Width=\"14\" Height=\"16\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\"\r\n                          Margin=\"3,2,0,0\">\r\n                        <Rectangle Fill=\"#FF767676\" HorizontalAlignment=\"Right\" Height=\"8\" Margin=\"0,0,-0.164,-0.334\"\r\n                                   RadiusY=\"0.5\" RadiusX=\"0.5\" RenderTransformOrigin=\"0.5,0.5\" Stroke=\"#FF767676\"\r\n                                   UseLayoutRounding=\"False\" VerticalAlignment=\"Bottom\" Width=\"4\">\r\n                            <Rectangle.RenderTransform>\r\n                                <RotateTransform Angle=\"-45\"/>\r\n                            </Rectangle.RenderTransform>\r\n                        </Rectangle>\r\n                        <Ellipse Fill=\"Transparent\" Margin=\"0,0,1,3\" Stroke=\"#FF767676\"/>\r\n                    </Grid>\r\n                </DataTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                    <Grid x:Name=\"grid\" Cursor=\"{TemplateBinding Cursor}\" Margin=\"-6,0,0,-4\">\r\n                        <Grid.Background>\r\n                            <SolidColorBrush Color=\"{StaticResource BaseColor2}\"/>\r\n                        </Grid.Background>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HighlightLightColor}\"\r\n                                                        Storyboard.TargetProperty=\"(SolidColorBrush.Color)\"\r\n                                                        Storyboard.TargetName=\"ContentPresenterWrapperColor\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray5}\"\r\n                                                        Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\"\r\n                                                        Storyboard.TargetName=\"grid\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray5}\"\r\n                                                        Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\"\r\n                                                        Storyboard.TargetName=\"grid\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.8\"\r\n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"grid\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\"\r\n                                                                       Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"DisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <TextBlock x:Name=\"UnderlineTextBlock\"\r\n                                   HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                   Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\"\r\n                                   TextDecorations=\"Underline\" Visibility=\"Collapsed\"\r\n                                   VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                            <TextBlock.Foreground>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </TextBlock.Foreground>\r\n                        </TextBlock>\r\n                        <TextBlock x:Name=\"DisabledOverlay\" Foreground=\"{StaticResource DisabledForegroundBrush}\"\r\n                                   HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                   Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\"\r\n                                   Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\r\n                                   Canvas.ZIndex=\"1\"/>\r\n                        <ContentControl>\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\"\r\n                                                 Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\"\r\n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                              Content=\"{TemplateBinding Content}\" Width=\"21\" Margin=\"2,3,0,0\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightLightColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Control Label Style-->\r\n    <Style x:Key=\"ControlLabelStyle\" TargetType=\"TextBlock\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource LabelTextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource LabelFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n    </Style>\r\n\r\n    <!--ValidationToolTipTemplate Style-->\r\n    <ControlTemplate x:Key=\"ValidationToolTipTemplate\" TargetType=\"ToolTip\">\r\n        <Grid x:Name=\"Root\" Margin=\"5,0\" Opacity=\"0\" RenderTransformOrigin=\"0,0\">\r\n            <Grid.RenderTransform>\r\n                <TranslateTransform x:Name=\"xform\" X=\"-25\"/>\r\n            </Grid.RenderTransform>\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"OpenStates\">\r\n                    <VisualStateGroup.Transitions>\r\n                        <VisualTransition GeneratedDuration=\"0\"/>\r\n                        <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"Open\">\r\n                            <Storyboard>\r\n                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"X\"\r\n                                                               Storyboard.TargetName=\"xform\">\r\n                                    <SplineDoubleKeyFrame KeyTime=\"0:0:0.2\" Value=\"0\"/>\r\n                                </DoubleAnimationUsingKeyFrames>\r\n                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\"\r\n                                                               Storyboard.TargetName=\"Root\">\r\n                                    <SplineDoubleKeyFrame KeyTime=\"0:0:0.2\" Value=\"1\"/>\r\n                                </DoubleAnimationUsingKeyFrames>\r\n                            </Storyboard>\r\n                        </VisualTransition>\r\n                    </VisualStateGroup.Transitions>\r\n                    <VisualState x:Name=\"Closed\">\r\n                        <Storyboard>\r\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\"\r\n                                                           Storyboard.TargetName=\"Root\">\r\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                            </DoubleAnimationUsingKeyFrames>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                    <VisualState x:Name=\"Open\">\r\n                        <Storyboard>\r\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"xform\">\r\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                            </DoubleAnimationUsingKeyFrames>\r\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\"\r\n                                                           Storyboard.TargetName=\"Root\">\r\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                            </DoubleAnimationUsingKeyFrames>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Border Background=\"{StaticResource ValidationBrush1}\" CornerRadius=\"5\" Margin=\"4,4,-4,-4\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush2}\" CornerRadius=\"4\" Margin=\"3,3,-3,-3\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush3}\" CornerRadius=\"3\" Margin=\"2,2,-2,-2\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush4}\" CornerRadius=\"2\" Margin=\"1,1,-1,-1\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush5}\" CornerRadius=\"2\"/>\r\n            <Border CornerRadius=\"2\">\r\n                <TextBlock Foreground=\"{StaticResource WhiteColorBrush}\" MaxWidth=\"250\" Margin=\"8,4,8,4\"\r\n                           TextWrapping=\"Wrap\" Text=\"{Binding (Validation.Errors)[0].ErrorContent}\"\r\n                           UseLayoutRounding=\"false\"/>\r\n            </Border>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--Button Style-->\r\n    <Style TargetType=\"Button\" x:Key=\"DefaultButtonStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\r\n        <Setter Property=\"Padding\" Value=\"5,6\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Button\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"MouseOverBorder\" To=\"1\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"PressedBorder\" To=\"1\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"DisabledVisualElement\" To=\"0.7\"\r\n                                                         Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"contentPresenter\" To=\"0.3\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"FocusRectangle\" To=\"1\" Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"FocusInnerRectangle\" To=\"1\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource ControlsDisabledBrush}\"\r\n                                   IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"PressedBorder\" Background=\"{StaticResource GrayBrush5}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\"\r\n                                   RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                   Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\"\r\n                                   Opacity=\"0\"/>\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                          Content=\"{TemplateBinding Content}\"\r\n                                          HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                          Margin=\"{TemplateBinding Padding}\"\r\n                                          VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--HyperlinkButton Style-->\r\n    <Style TargetType=\"HyperlinkButton\" x:Key=\"DefaultHyperlinkButtonStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource HighlightBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource HyperlinkFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Padding\" Value=\"2,0,2,0\"/>\r\n        <Setter Property=\"Cursor\" Value=\"Hand\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" Cursor=\"{TemplateBinding Cursor}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\"\r\n                                                                       Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"UnderlineTextBlock\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ColorAnimation Storyboard.TargetName=\"ContentPresenterWrapperColor\"\r\n                                                        Storyboard.TargetProperty=\"Color\"\r\n                                                        To=\"{StaticResource HighlightLightColor}\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\"\r\n                                                                       Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"UnderlineTextBlock\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\"\r\n                                                                       Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"DisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"FocusVisualElement\" To=\"1\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <TextBlock x:Name=\"UnderlineTextBlock\"\r\n                                   HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                   Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\"\r\n                                   TextDecorations=\"Underline\" Visibility=\"Collapsed\"\r\n                                   VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                            <TextBlock.Foreground>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </TextBlock.Foreground>\r\n                        </TextBlock>\r\n                        <TextBlock x:Name=\"DisabledOverlay\" Foreground=\"{StaticResource DisabledForegroundBrush}\"\r\n                                   HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                   Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\"\r\n                                   Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\r\n                                   Canvas.ZIndex=\"1\"/>\r\n                        <ContentControl>\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\"\r\n                                                 Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\"\r\n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                              Content=\"{TemplateBinding Content}\"\r\n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                              Margin=\"{TemplateBinding Padding}\"\r\n                                              VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightLightColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TextBox Style-->\r\n    <Style TargetType=\"TextBox\" x:Key=\"DefaultTextBoxStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"0\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"TextBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\"\r\n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"FocusRectangle\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"DisabledVisualElement\" To=\"1\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"ReadOnlyVisualElement\" To=\"1\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\"\r\n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"FocusRectangle\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\"\r\n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"FocusInnerRectangle\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\"\r\n                                                                       Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"Base\" Stroke=\"{TemplateBinding BorderBrush}\"\r\n                                   StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"1\"\r\n                                   Fill=\"{TemplateBinding Background}\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                   Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\"/>\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                   Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\"/>\r\n                        <Grid Margin=\"0,1,0,0\">\r\n                            <Border x:Name=\"ReadOnlyVisualElement\" Background=\"{StaticResource ReadOnlyBrush}\"\r\n                                    Opacity=\"0\"/>\r\n                            <Grid>\r\n                                <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" IsTabStop=\"False\"\r\n                                              Margin=\"4,0,2,2\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Background=\"{x:Null}\"\r\n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"/>\r\n                            </Grid>\r\n                        </Grid>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Stroke=\"{StaticResource ControlsDisabledBrush}\"\r\n                                   StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                   Fill=\"{StaticResource ControlsDisabledBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\"\r\n                                BorderThickness=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\"\r\n                                         DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                         Placement=\"Right\"\r\n                                         PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                         Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"IsHitTestVisible\"\r\n                                                            Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\"\r\n                                  VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\"\r\n                                      Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\"\r\n                                      Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ComboBox Style-->\r\n    <Style TargetType=\"ComboBox\" x:Key=\"DefaultComboBoxStyle\">\r\n        <Setter Property=\"Padding\" Value=\"6,4,25,4\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray7}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ComboBox\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <Style x:Key=\"comboToggleStyle\" TargetType=\"ToggleButton\">\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"Padding\" Value=\"3\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"ToggleButton\">\r\n                                            <Grid>\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation\r\n                                                                        Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                        Storyboard.TargetName=\"MouseOverBorder\" To=\"1\"\r\n                                                                        Duration=\"0\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation\r\n                                                                        Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                        Storyboard.TargetName=\"PressedBorder\" To=\"1\"\r\n                                                                        Duration=\"1\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\"/>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"CheckStates\">\r\n                                                        <VisualState x:Name=\"Checked\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames\r\n                                                                        Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                        Storyboard.TargetName=\"CheckedRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames\r\n                                                                        Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                        Storyboard.TargetName=\"CheckedInnerRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unchecked\"/>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation\r\n                                                                        Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                        Storyboard.TargetName=\"FocusRectangle\" To=\"1\"\r\n                                                                        Duration=\"0\"/>\r\n                                                                <DoubleAnimation\r\n                                                                        Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                        Storyboard.TargetName=\"FocusInnerRectangle\"\r\n                                                                        To=\"1\" Duration=\"0\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                                                        BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                                        Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                                                <Rectangle x:Name=\"DisabledVisualElement\"\r\n                                                           Fill=\"{StaticResource WhiteBrush}\" IsHitTestVisible=\"false\"\r\n                                                           Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                                                <Border x:Name=\"MouseOverBorder\"\r\n                                                        Background=\"{StaticResource GrayBrush8}\"\r\n                                                        BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                                        CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                                                <Border x:Name=\"PressedBorder\" Background=\"{StaticResource GrayBrush5}\"\r\n                                                        BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                                        CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                                                <Rectangle x:Name=\"FocusRectangle\"\r\n                                                           Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\"\r\n                                                           RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\"/>\r\n                                                <Rectangle x:Name=\"FocusInnerRectangle\"\r\n                                                           StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                                           Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\"\r\n                                                           RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\"/>\r\n                                                <Rectangle x:Name=\"CheckedRectangle\"\r\n                                                           StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                                           RadiusY=\"4\" RadiusX=\"4\" Opacity=\"0\"\r\n                                                           Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\"/>\r\n                                                <Rectangle x:Name=\"CheckedInnerRectangle\"\r\n                                                           StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                                           RadiusY=\"4\" RadiusX=\"4\" Opacity=\"0\" Margin=\"1\"\r\n                                                           Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\"/>\r\n                                                <ContentPresenter x:Name=\"contentPresenter\"\r\n                                                                  ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                                                  Content=\"{TemplateBinding Content}\"\r\n                                                                  HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                                                  Margin=\"{TemplateBinding Padding}\"\r\n                                                                  VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                                <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\"\r\n                                                           Margin=\"1\" RadiusY=\"3.5\" RadiusX=\"3.5\"\r\n                                                           Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\"\r\n                                                           Visibility=\"Collapsed\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                       Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.45\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                       Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                       Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"FocusedDropDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\"\r\n                                                                       Storyboard.TargetProperty=\"(UIElement.Visibility)\"\r\n                                                                       Storyboard.TargetName=\"PopupBorder\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\"\r\n                                                                       Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ContentPresenterBorder\">\r\n                            <Grid>\r\n                                <ToggleButton x:Name=\"DropDownToggle\" BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                                              BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                              Background=\"{TemplateBinding Background}\" HorizontalAlignment=\"Stretch\"\r\n                                              HorizontalContentAlignment=\"Right\" Margin=\"0\"\r\n                                              Style=\"{StaticResource comboToggleStyle}\" VerticalAlignment=\"Stretch\">\r\n                                    <Path x:Name=\"BtnArrow\"\r\n                                          Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \"\r\n                                          HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\"\r\n                                          Width=\"8\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"BtnArrowColor\" Color=\"{StaticResource Gray3}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </ToggleButton>\r\n                                <ContentPresenter x:Name=\"ContentPresenter\"\r\n                                                  HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                                  Margin=\"{TemplateBinding Padding}\"\r\n                                                  VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                    <TextBlock Text=\" \"/>\r\n                                </ContentPresenter>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\"\r\n                                   RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                   Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\"\r\n                                   Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\"\r\n                                   IsHitTestVisible=\"false\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\"/>\r\n                        <TextBlock x:Name=\"WatermarkElement\" Text=\"{TemplateBinding Watermark}\" VerticalAlignment=\"Center\" Margin=\"10,0\" />\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\"\r\n                                BorderThickness=\"1\" CornerRadius=\"3\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\"\r\n                                         DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                         Placement=\"Right\"\r\n                                         PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                         Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"IsHitTestVisible\"\r\n                                                            Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\"\r\n                                  VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\"\r\n                                      Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\"\r\n                                      Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Popup x:Name=\"Popup\">\r\n                            <Border Effect=\"{StaticResource DropShadowBrush}\" x:Name=\"PopupBorder\"\r\n                                    BorderThickness=\"{TemplateBinding BorderThickness}\" HorizontalAlignment=\"Stretch\"\r\n                                    Height=\"Auto\" BorderBrush=\"{StaticResource ComboBoxPopupBrush}\"\r\n                                    Background=\"{StaticResource WhiteBrush}\">\r\n\r\n                                <ScrollViewer x:Name=\"ScrollViewer\" BorderThickness=\"0\" Padding=\"1\">\r\n                                    <ItemsPresenter/>\r\n                                </ScrollViewer>\r\n                            </Border>\r\n                        </Popup>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ComboBoxItem Style-->\r\n    <Style TargetType=\"ComboBoxItem\" x:Key=\"DefaultComboBoxItemStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"3\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Local\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ComboBoxItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" Margin=\"0,0.5\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                       Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\".65\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames\r\n                                                Storyboard.TargetName=\"ContentPresenterWrapperColor\"\r\n                                                Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\"\r\n                                                                 Value=\"{StaticResource HoverForegroundColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\"\r\n                                                                       Storyboard.TargetName=\"contentPresenter\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                       Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames\r\n                                                Storyboard.TargetName=\"ContentPresenterWrapperColor\"\r\n                                                Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\"\r\n                                                                 Value=\"{StaticResource HoverForegroundColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\"\r\n                                   Fill=\"{StaticResource HighlightBrush}\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\"\r\n                                   Fill=\"{StaticResource HighlightBrush}\"/>\r\n                        <ContentControl>\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\"\r\n                                                 Color=\"{StaticResource NormalForegroundColor}\"/>\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\"\r\n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                              Content=\"{TemplateBinding Content}\"\r\n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                              Margin=\"{TemplateBinding Padding}\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusY=\"1\" RadiusX=\"1\"\r\n                                   Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TextBlock Style-->\r\n    <Style TargetType=\"TextBlock\" x:Key=\"DefaultTextBlockStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n    </Style>\r\n\r\n    <!--ScrollBar Style-->\r\n    <Style TargetType=\"ScrollBar\" x:Key=\"DefaultScrollBarStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"20\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"20\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ScrollBar\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <ControlTemplate x:Key=\"RepeatButtonTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\" Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalIncrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Fill=\"Transparent\"/>\r\n                                    <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n                                          Height=\"6\" Stretch=\"Uniform\" Width=\"4\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\"\r\n                                          Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n                                          Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\"\r\n                                          Margin=\"1,1,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\"\r\n                                          Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \"\r\n                                          Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\"\r\n                                          Margin=\"1,1,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Fill=\"{StaticResource WhiteColorBrush}\"\r\n                                               Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalDecrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Fill=\"Transparent\"/>\r\n                                    <Path Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \"\r\n                                          Height=\"6\" Stretch=\"Uniform\" Width=\"4\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\"\r\n                                          Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \"\r\n                                          Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\"\r\n                                          Margin=\"0,1,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\"\r\n                                          Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \"\r\n                                          Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\"\r\n                                          Margin=\"0,1,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalIncrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Fill=\"Transparent\"/>\r\n                                    <Path Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \"\r\n                                          Height=\"4\" Stretch=\"Uniform\" Width=\"6\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"ButtonColor\" Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\"\r\n                                          Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \"\r\n                                          Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\"\r\n                                          Margin=\"1,0,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\"\r\n                                          Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \"\r\n                                          Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\"\r\n                                          Margin=\"1,0,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Fill=\"{StaticResource WhiteColorBrush}\"\r\n                                               Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalDecrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Fill=\"Transparent\"/>\r\n                                    <Path Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \"\r\n                                          Height=\"4\" Stretch=\"Uniform\" Width=\"6\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\"\r\n                                          Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \"\r\n                                          Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\"\r\n                                          Margin=\"1,0,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\"\r\n                                          Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \"\r\n                                          Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\"\r\n                                          Margin=\"1,0,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalThumbTemplate\" TargetType=\"Thumb\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"PressedRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\"\r\n                                                                                   Storyboard.TargetName=\"ThumbVisual\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0:0:0\" Value=\"0\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid x:Name=\"ThumbVisual\" Margin=\"1,0,1,0\">\r\n                                        <Rectangle x:Name=\"Background\" StrokeThickness=\"1\"\r\n                                                   Fill=\"{StaticResource ThumbBrush}\"/>\r\n                                        <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"1\" Opacity=\"0\"\r\n                                                   Fill=\"{StaticResource BlackBrush}\"/>\r\n                                        <Rectangle x:Name=\"PressedRectangle\" StrokeThickness=\"1\" Opacity=\"0\"\r\n                                                   Fill=\"{StaticResource BlackBrush}\"/>\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalThumbTemplate\" TargetType=\"Thumb\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                            Storyboard.TargetName=\"PressedRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\"\r\n                                                                                   Storyboard.TargetName=\"ThumbVisual\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0:0:0\" Value=\"0\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid x:Name=\"ThumbVisual\" Margin=\"0,1,0,1\">\r\n                                        <Rectangle x:Name=\"Background\" StrokeThickness=\"1\"\r\n                                                   Fill=\"{StaticResource ThumbBrush}\"/>\r\n                                        <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"1\" Opacity=\"0\"\r\n                                                   Fill=\"{StaticResource BlackBrush}\"/>\r\n                                        <Rectangle x:Name=\"PressedRectangle\" StrokeThickness=\"1\" Opacity=\"0\"\r\n                                                   Fill=\"{StaticResource BlackBrush}\"/>\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\"\r\n                                                                       Storyboard.TargetName=\"Root\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"HorizontalRoot\" Height=\"11\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Border BorderThickness=\"0,0,0,1\" Grid.RowSpan=\"1\" Margin=\"0,0,0,-1\" Grid.ColumnSpan=\"5\"\r\n                                    Visibility=\"Collapsed\">\r\n                                <Border.BorderBrush>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray4}\"/>\r\n                                </Border.BorderBrush>\r\n                            </Border>\r\n                            <RepeatButton x:Name=\"HorizontalSmallDecrease\" Grid.Column=\"0\" IsTabStop=\"False\"\r\n                                          Interval=\"50\" Margin=\"1\"\r\n                                          Template=\"{StaticResource HorizontalDecrementTemplate}\" Width=\"16\"/>\r\n                            <RepeatButton x:Name=\"HorizontalLargeDecrease\" Grid.Column=\"1\" IsTabStop=\"False\"\r\n                                          Interval=\"50\" Template=\"{StaticResource RepeatButtonTemplate}\" Width=\"0\"/>\r\n                            <Thumb x:Name=\"HorizontalThumb\" Background=\"{TemplateBinding Background}\" Grid.Column=\"2\"\r\n                                   MinWidth=\"18\" Template=\"{StaticResource HorizontalThumbTemplate}\" Width=\"18\"/>\r\n                            <RepeatButton x:Name=\"HorizontalLargeIncrease\" Grid.Column=\"3\" IsTabStop=\"False\"\r\n                                          Interval=\"50\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                            <RepeatButton x:Name=\"HorizontalSmallIncrease\" Grid.Column=\"4\" IsTabStop=\"False\"\r\n                                          Interval=\"50\" Margin=\"1\"\r\n                                          Template=\"{StaticResource HorizontalIncrementTemplate}\" Width=\"16\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"VerticalRoot\" Visibility=\"Collapsed\" Width=\"11\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <Border BorderThickness=\"0,0,1,0\" Margin=\"0,0,-1,0\" Grid.RowSpan=\"5\" Visibility=\"Collapsed\">\r\n                                <Border.BorderBrush>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray4}\"/>\r\n                                </Border.BorderBrush>\r\n                            </Border>\r\n                            <RepeatButton x:Name=\"VerticalSmallDecrease\" Height=\"16\" IsTabStop=\"False\" Interval=\"50\"\r\n                                          Margin=\"1\" Grid.Row=\"0\"\r\n                                          Template=\"{StaticResource VerticalDecrementTemplate}\"/>\r\n                            <RepeatButton x:Name=\"VerticalLargeDecrease\" Height=\"0\" IsTabStop=\"False\" Interval=\"50\"\r\n                                          Grid.Row=\"1\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                            <Thumb x:Name=\"VerticalThumb\" Height=\"18\" MinHeight=\"18\" Grid.Row=\"2\"\r\n                                   Template=\"{StaticResource VerticalThumbTemplate}\"/>\r\n                            <RepeatButton x:Name=\"VerticalLargeIncrease\" IsTabStop=\"False\" Interval=\"50\" Grid.Row=\"3\"\r\n                                          Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                            <RepeatButton x:Name=\"VerticalSmallIncrease\" Height=\"16\" IsTabStop=\"False\" Interval=\"50\"\r\n                                          Margin=\"1\" Grid.Row=\"4\"\r\n                                          Template=\"{StaticResource VerticalIncrementTemplate}\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ScrollViewer Style-->\r\n    <Style TargetType=\"ScrollViewer\" x:Key=\"DefaultScrollViewerStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"VerticalScrollBarVisibility\" Value=\"Visible\"/>\r\n        <Setter Property=\"Padding\" Value=\"4\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray4}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ScrollViewer\">\r\n                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                            BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                        <Grid Background=\"{TemplateBinding Background}\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <ScrollContentPresenter x:Name=\"ScrollContentPresenter\" Cursor=\"{TemplateBinding Cursor}\"\r\n                                                    ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                                    Margin=\"{TemplateBinding Padding}\"/>\r\n                            <Rectangle Grid.Column=\"1\" Grid.Row=\"1\" Visibility=\"Collapsed\"/>\r\n                            <ScrollBar x:Name=\"VerticalScrollBar\" Grid.Column=\"1\" IsTabStop=\"False\"\r\n                                       Maximum=\"{TemplateBinding ScrollableHeight}\" Margin=\"0,-1,-3,-1\" Minimum=\"0\"\r\n                                       Orientation=\"Vertical\" Grid.Row=\"0\"\r\n                                       Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\"\r\n                                       Value=\"{TemplateBinding VerticalOffset}\"\r\n                                       ViewportSize=\"{TemplateBinding ViewportHeight}\" Width=\"18\"/>\r\n                            <ScrollBar x:Name=\"HorizontalScrollBar\" Grid.Column=\"0\" Height=\"18\" IsTabStop=\"False\"\r\n                                       Maximum=\"{TemplateBinding ScrollableWidth}\" Margin=\"-1,0,-1,-3\" Minimum=\"0\"\r\n                                       Orientation=\"Horizontal\" Grid.Row=\"1\"\r\n                                       Visibility=\"{TemplateBinding ComputedHorizontalScrollBarVisibility}\"\r\n                                       Value=\"{TemplateBinding HorizontalOffset}\"\r\n                                       ViewportSize=\"{TemplateBinding ViewportWidth}\"/>\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ListBox Style -->\r\n    <Style TargetType=\"ListBox\" x:Key=\"DefaultListBoxStyle\">\r\n        <Setter Property=\"Padding\" Value=\"1\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ListBox\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\"\r\n                                                                       Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                            <ScrollViewer x:Name=\"ScrollViewer\" BorderBrush=\"Transparent\" BorderThickness=\"0\"\r\n                                          Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\"\r\n                                          TabNavigation=\"{TemplateBinding TabNavigation}\">\r\n                                <ItemsPresenter/>\r\n                            </ScrollViewer>\r\n                        </Border>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2\"\r\n                                Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\"\r\n                                         DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                         Placement=\"Right\"\r\n                                         PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                         Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"IsHitTestVisible\"\r\n                                                            Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\"\r\n                                  VerticalAlignment=\"Top\" Width=\"10\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\"\r\n                                      Margin=\"-1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\"\r\n                                      Margin=\"-1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n    </Style>\r\n\r\n    <!--ListBoxItem Style-->\r\n    <Style TargetType=\"ListBoxItem\" x:Key=\"DefaultListBoxItemStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Padding\" Value=\"10\"/>\r\n        <Setter Property=\"Margin\" Value=\"0\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Local\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ListBoxItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\".55\" Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"fillColor\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\"\r\n                                                        Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\"\r\n                                                        Storyboard.TargetName=\"contentControl\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\".55\" Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"contentPresenter\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\"\r\n                                                        Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\"\r\n                                                        Storyboard.TargetName=\"contentControl\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\"\r\n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"fillColor\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"SelectedUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\"\r\n                                                        Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\"\r\n                                                        Storyboard.TargetName=\"contentControl\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\"\r\n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"fillColor\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\"\r\n                                                                       Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"FocusVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\"\r\n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"fillColor2\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\"\r\n                                                        Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\"\r\n                                                        Storyboard.TargetName=\"contentControl\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"fillColor\" Fill=\"{StaticResource HighlightBrush}\" IsHitTestVisible=\"False\"\r\n                                   Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\"/>\r\n                        <Rectangle x:Name=\"fillColor2\" Fill=\"{StaticResource HighlightBrush}\" IsHitTestVisible=\"False\"\r\n                                   Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\"/>\r\n                        <ContentControl x:Name=\"contentControl\">\r\n                            <ContentPresenter x:Name=\"contentPresenter\"\r\n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                              Content=\"{TemplateBinding Content}\" VerticalAlignment=\"Center\"\r\n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                              Margin=\"7\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusY=\"1\" RadiusX=\"1\"\r\n                                   Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--CheckBox Style-->\r\n    <Style TargetType=\"CheckBox\" x:Key=\"DefaultCheckBoxStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource CheckBoxBackgroundBrush}\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"100\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,1,0,0\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource CheckBoxBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"CheckBox\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard Duration=\"0:0:0.1\">\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"MouseOverRectangle\" To=\"1\"\r\n                                                         Duration=\"0:0:0.1\"/>\r\n                                        <ColorAnimation Storyboard.TargetName=\"contentControl\"\r\n                                                        Storyboard.TargetProperty=\"(Control.Foreground).Color\" To=\"{StaticResource Gray2}\"\r\n                                                        Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"grid\" To=\"1\" Duration=\"0:0:0.1\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard Duration=\"0:0:0.1\">\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"PressedRectangle\" To=\"1\"\r\n                                                         Duration=\"0:0:0.1\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"contentPresenter\" To=\".55\"\r\n                                                         Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"DisabledVisualElement\" To=\"0.55\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"CheckIcon\" To=\"1\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                                <VisualState x:Name=\"Indeterminate\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"IndeterminateIcon\" To=\"1\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\"\r\n                                                                       Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"16\"/>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n                            <Grid x:Name=\"grid\" Height=\"14\" Width=\"14\" Opacity=\"0.7\">\r\n                                <Rectangle x:Name=\"Background\" Fill=\"{TemplateBinding Background}\"\r\n                                           Stroke=\"{TemplateBinding BorderBrush}\"\r\n                                           StrokeThickness=\"{TemplateBinding BorderThickness}\"/>\r\n                                <Rectangle x:Name=\"MouseOverRectangle\" Stroke=\"{StaticResource CheckBoxMouseOverBrush}\"\r\n                                           Opacity=\"0\"/>\r\n                                <Rectangle x:Name=\"PressedRectangle\" Stroke=\"{StaticResource BlackBrush}\" Opacity=\"0\"/>\r\n                                <Path Opacity=\"0\" x:Name=\"CheckIcon\"\r\n                                      Data=\"M49.4375,110.4375 L51.4995,112.812 L56.3745,107.24883\"\r\n                                      HorizontalAlignment=\"Center\" Height=\"7.6\" Stretch=\"Fill\" Stroke=\"Black\"\r\n                                      UseLayoutRounding=\"False\" VerticalAlignment=\"Center\" Width=\"8.9\"\r\n                                      StrokeStartLineCap=\"Triangle\" StrokeEndLineCap=\"Triangle\" StrokeThickness=\"2\"/>\r\n                                <Rectangle x:Name=\"IndeterminateIcon\" Height=\"8\" Width=\"8\" Opacity=\"0\">\r\n                                    <Rectangle.Fill>\r\n                                        <SolidColorBrush Color=\"{StaticResource Gray3}\"/>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                                <Rectangle x:Name=\"DisabledVisualElement\"\r\n                                           Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0\" RadiusY=\"1\"\r\n                                           RadiusX=\"1\"/>\r\n                            </Grid>\r\n                            <Border x:Name=\"ValidationErrorElement\"\r\n                                    BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"1\"\r\n                                    CornerRadius=\"1\" Margin=\"1\"\r\n                                    ToolTipService.PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                    Visibility=\"Collapsed\">\r\n                                <ToolTipService.ToolTip>\r\n                                    <ToolTip x:Name=\"validationTooltip\"\r\n                                             DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                             Placement=\"Right\"\r\n                                             PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                             Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                        <ToolTip.Triggers>\r\n                                            <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                                <BeginStoryboard>\r\n                                                    <Storyboard>\r\n                                                        <ObjectAnimationUsingKeyFrames\r\n                                                                Storyboard.TargetProperty=\"IsHitTestVisible\"\r\n                                                                Storyboard.TargetName=\"validationTooltip\">\r\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                                        </ObjectAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </BeginStoryboard>\r\n                                            </EventTrigger>\r\n                                        </ToolTip.Triggers>\r\n                                    </ToolTip>\r\n                                </ToolTipService.ToolTip>\r\n                                <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\"\r\n                                      Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                    <Path Data=\"M 1,0 L5,0 A 2,2 90 0 1 7,2 L7,6 z\"\r\n                                          Fill=\"{StaticResource ValidationBrush5}\" Margin=\"0,3,0,0\"/>\r\n                                    <Path Data=\"M 0,0 L2,0 L 7,5 L7,7\" Fill=\"{StaticResource WhiteColorBrush}\"\r\n                                          Margin=\"0,3,0,0\"/>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Grid>\r\n                        <ContentControl x:Name=\"contentControl\" Grid.Column=\"1\" Foreground=\"{TemplateBinding Foreground}\">\r\n                            <ContentPresenter x:Name=\"contentPresenter\"\r\n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                              Content=\"{TemplateBinding Content}\"\r\n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                              Margin=\"{TemplateBinding Padding}\"\r\n                                              VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        </ContentControl>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--PasswordBox Style-->\r\n    <Style TargetType=\"PasswordBox\" x:Key=\"DefaultPasswordBoxStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource TextBoxText}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"PasswordBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.8\"\r\n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"MouseOverBorder\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                       Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\"\r\n                                                                       Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                Background=\"{TemplateBinding Background}\" Opacity=\"1\">\r\n                            <Border x:Name=\"ContentElement\" Margin=\"{TemplateBinding Padding}\" Padding=\"4,0,3,2\"\r\n                                    VerticalAlignment=\"Center\"/>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"{StaticResource ControlsDisabledBrush}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                Background=\"{StaticResource ControlsDisabledBrush}\" IsHitTestVisible=\"False\"\r\n                                Opacity=\"0\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" BorderBrush=\"{StaticResource TextBoxMouseOverBorderBrush}\"\r\n                                BorderThickness=\"1\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource TextBoxMouseOverBorderBrush}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\" IsHitTestVisible=\"False\"\r\n                                Opacity=\"0\">\r\n                            <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                       Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\"/>\r\n                        </Border>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\"\r\n                                BorderThickness=\"1\" CornerRadius=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\"\r\n                                         DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                         Placement=\"Right\"\r\n                                         PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                         Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames\r\n                                                            Storyboard.TargetProperty=\"IsHitTestVisible\"\r\n                                                            Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\"\r\n                                  VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\"\r\n                                      Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\"\r\n                                      Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ProgressBar Style-->\r\n    <Style TargetType=\"ProgressBar\" x:Key=\"DefaultProgressBarStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource HighlightBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush4}\"/>\r\n        <Setter Property=\"Maximum\" Value=\"100\"/>\r\n        <Setter Property=\"Height\" Value=\"10\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ProgressBar\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Determinate\"/>\r\n                                <VisualState x:Name=\"Indeterminate\">\r\n                                    <Storyboard RepeatBehavior=\"Forever\">\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\"\r\n                                                                       Storyboard.TargetProperty=\"(UIElement.Visibility)\"\r\n                                                                       Storyboard.TargetName=\"IndeterminateRoot\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\"\r\n                                                                       Storyboard.TargetProperty=\"(UIElement.Visibility)\"\r\n                                                                       Storyboard.TargetName=\"DeterminateRoot\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames\r\n                                                Storyboard.TargetProperty=\"(Shape.Fill).(LinearGradientBrush.Transform).(TransformGroup.Children)[0].X\"\r\n                                                Storyboard.TargetName=\"IndeterminateGradientFill\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:.35\" Value=\"20\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ProgressBarTrack\" BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                Background=\"{TemplateBinding Background}\"/>\r\n                        <Grid x:Name=\"ProgressBarRootGrid\">\r\n                            <Grid x:Name=\"IndeterminateRoot\" Visibility=\"Collapsed\">\r\n                                <Rectangle x:Name=\"IndeterminateSolidFill\" Margin=\"{TemplateBinding BorderThickness}\"\r\n                                           Opacity=\"1\" RenderTransformOrigin=\"0.5,0.5\" StrokeThickness=\"0\"\r\n                                           Fill=\"{StaticResource BrandingBrush}\"/>\r\n                                <Rectangle x:Name=\"IndeterminateGradientFill\" Margin=\"{TemplateBinding BorderThickness}\"\r\n                                           Opacity=\"0.7\" StrokeThickness=\"1\">\r\n                                    <Rectangle.Fill>\r\n                                        <LinearGradientBrush EndPoint=\"0,1\" MappingMode=\"Absolute\" SpreadMethod=\"Repeat\"\r\n                                                             StartPoint=\"20,1\">\r\n                                            <LinearGradientBrush.Transform>\r\n                                                <TransformGroup>\r\n                                                    <TranslateTransform X=\"0\"/>\r\n                                                    <SkewTransform AngleX=\"-30\"/>\r\n                                                </TransformGroup>\r\n                                            </LinearGradientBrush.Transform>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor1}\"\r\n                                                          Offset=\"0\"/>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor2}\"\r\n                                                          Offset=\"0.651\"/>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor3}\"\r\n                                                          Offset=\"0.093\"/>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor4}\"\r\n                                                          Offset=\"0.548\"/>\r\n                                        </LinearGradientBrush>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                            </Grid>\r\n                            <Grid x:Name=\"DeterminateRoot\" Margin=\"1\">\r\n                                <Border x:Name=\"ProgressBarIndicator\" Background=\"{StaticResource BrandingBrush}\"\r\n                                        HorizontalAlignment=\"Left\" Margin=\"-1\">\r\n                                    <Rectangle x:Name=\"GradientFill\" Opacity=\"0.7\" Visibility=\"Collapsed\">\r\n                                        <Rectangle.Fill>\r\n                                            <LinearGradientBrush EndPoint=\"0,1\" MappingMode=\"Absolute\"\r\n                                                                 SpreadMethod=\"Repeat\" StartPoint=\"20,1\">\r\n                                                <LinearGradientBrush.Transform>\r\n                                                    <TransformGroup>\r\n                                                        <TranslateTransform X=\"0\"/>\r\n                                                        <SkewTransform AngleX=\"-30\"/>\r\n                                                    </TransformGroup>\r\n                                                </LinearGradientBrush.Transform>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor1}\"\r\n                                                              Offset=\"0\"/>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor2}\"\r\n                                                              Offset=\"0.651\"/>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor3}\"\r\n                                                              Offset=\"0.093\"/>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor4}\"\r\n                                                              Offset=\"0.548\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Fill>\r\n                                    </Rectangle>\r\n                                </Border>\r\n                            </Grid>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n    </Style>\r\n\r\n    <!--RadioButton Style-->\r\n    <Style TargetType=\"RadioButton\" x:Key=\"DefaultRadioButtonStyle\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource CheckBoxBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,1,0,0\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource CheckBoxBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"RadioButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard Duration=\"0:0:0.1\">\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"MouseOverEllipse\" To=\"1\"\r\n                                                         Duration=\"0:0:0.1\"/>\r\n                                        <ColorAnimation Storyboard.TargetName=\"ContentPresenterWrapperColor\"\r\n                                                        Storyboard.TargetProperty=\"Color\" To=\"{StaticResource Gray2}\"\r\n                                                        Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"grid\" To=\"1\" Duration=\"0:0:0.1\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"contentPresenter\" To=\".55\"\r\n                                                         Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"DisabledVisualElement\" To=\"0.55\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"CheckIcon\" To=\"1\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\"\r\n                                                                       Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"16\"/>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\">\r\n                            <Grid x:Name=\"grid\" Height=\"15\" Width=\"15\" Opacity=\"0.7\">\r\n                                <Ellipse x:Name=\"Background\" Fill=\"{TemplateBinding Background}\"\r\n                                         Stroke=\"{TemplateBinding BorderBrush}\" Margin=\"1\"\r\n                                         StrokeThickness=\"{TemplateBinding BorderThickness}\"/>\r\n                                <Ellipse x:Name=\"MouseOverEllipse\" Stroke=\"{StaticResource CheckBoxMouseOverBrush}\"\r\n                                         Margin=\"1\" Opacity=\"0\"/>\r\n                                <Ellipse x:Name=\"PressedEllipse\" Stroke=\"{StaticResource BlackBrush}\" Margin=\"1\"\r\n                                         Opacity=\"0\"/>\r\n                                <Ellipse x:Name=\"CheckIcon\" Fill=\"{StaticResource BlackBrush}\" Height=\"7\" Opacity=\"0\"\r\n                                         Width=\"7\"/>\r\n                                <Ellipse x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\"\r\n                                         Opacity=\"0\"/>\r\n                                <Grid x:Name=\"ValidationErrorElement\"\r\n                                      ToolTipService.PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                      Visibility=\"Collapsed\">\r\n                                    <ToolTipService.ToolTip>\r\n                                        <ToolTip x:Name=\"validationTooltip\"\r\n                                                 DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                                 Placement=\"Right\"\r\n                                                 PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\"\r\n                                                 Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                            <ToolTip.Triggers>\r\n                                                <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                                    <BeginStoryboard>\r\n                                                        <Storyboard>\r\n                                                            <ObjectAnimationUsingKeyFrames\r\n                                                                    Storyboard.TargetProperty=\"IsHitTestVisible\"\r\n                                                                    Storyboard.TargetName=\"validationTooltip\">\r\n                                                                <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\"/>\r\n                                                            </ObjectAnimationUsingKeyFrames>\r\n                                                        </Storyboard>\r\n                                                    </BeginStoryboard>\r\n                                                </EventTrigger>\r\n                                            </ToolTip.Triggers>\r\n                                        </ToolTip>\r\n                                    </ToolTipService.ToolTip>\r\n                                    <Ellipse Height=\"14\" Stroke=\"{StaticResource ControlsValidationBrush}\"\r\n                                             StrokeThickness=\"1\" Width=\"14\"/>\r\n                                    <Ellipse Fill=\"{StaticResource ControlsValidationBrush}\" HorizontalAlignment=\"Right\"\r\n                                             Height=\"4\" Margin=\"0,-2,-1,0\" VerticalAlignment=\"Top\" Width=\"4\"/>\r\n                                    <Ellipse Fill=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\"\r\n                                             Margin=\"0,-5,-4,0\" VerticalAlignment=\"Top\" Width=\"10\"/>\r\n                                </Grid>\r\n                            </Grid>\r\n                        </Grid>\r\n                        <ContentControl Grid.Column=\"1\">\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\"\r\n                                                 Color=\"{StaticResource BlackColor}\"/>\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\"\r\n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                              Content=\"{TemplateBinding Content}\"\r\n                                              HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                              Margin=\"{TemplateBinding Padding}\"\r\n                                              VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        </ContentControl>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--RepeatButton Style-->\r\n    <Style TargetType=\"RepeatButton\" x:Key=\"DefaultRepeatButtonStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\r\n        <Setter Property=\"Padding\" Value=\"5,6\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"RepeatButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"MouseOverBorder\" To=\"1\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"PressedBorder\" To=\"1\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"DisabledVisualElement\" To=\".55\"\r\n                                                         Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"contentPresenter\" To=\"0.5\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"FocusRectangle\" To=\"1\" Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"FocusInnerRectangle\" To=\"1\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\"\r\n                                   IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"PressedBorder\" Background=\"{StaticResource GrayBrush5}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\"\r\n                                   RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                   Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\"\r\n                                   Opacity=\"0\"/>\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                          Content=\"{TemplateBinding Content}\"\r\n                                          HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                          Margin=\"{TemplateBinding Padding}\"\r\n                                          VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Thumb Style-->\r\n    <Style x:Key=\"HorizontalSliderThumb\" TargetType=\"Thumb\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Thumb\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"DisabledVisualElement\" To=\".55\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border Background=\"{StaticResource BlackBrush}\" BorderThickness=\"0,0,1,0\"\r\n                                BorderBrush=\"{StaticResource ControlBackgroundBrush}\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\"\r\n                                   IsHitTestVisible=\"false\" Opacity=\"0\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--VerticalSliderThumb-->\r\n    <Style x:Key=\"VerticalSliderThumb\" TargetType=\"Thumb\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Thumb\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"DisabledVisualElement\" To=\".55\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border Background=\"{StaticResource BlackBrush}\" BorderThickness=\"0,1,0,0\"\r\n                                BorderBrush=\"{StaticResource ControlBackgroundBrush}\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\"\r\n                                   IsHitTestVisible=\"false\" Opacity=\"0\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <!--RepeatButtonTemplate-->\r\n    <ControlTemplate x:Key=\"RepeatButtonTemplate\" TargetType=\"RepeatButton\">\r\n        <Grid x:Name=\"Root\" Opacity=\"0\"/>\r\n    </ControlTemplate>\r\n    <!--HorizontalTrackLargeDecrease-->\r\n    <ControlTemplate x:Key=\"HorizontalTrackLargeDecrease\" TargetType=\"RepeatButton\">\r\n        <Grid x:Name=\"Root\" Margin=\"0,-1,0,0\">\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"CommonStates\">\r\n                    <VisualState x:Name=\"Normal\"/>\r\n                    <VisualState x:Name=\"MouseOver\"/>\r\n                    <VisualState x:Name=\"Pressed\"/>\r\n                    <VisualState x:Name=\"Disabled\"/>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Rectangle Height=\"3\" Margin=\"0,1,0,0\">\r\n                <Rectangle.Fill>\r\n                    <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                </Rectangle.Fill>\r\n            </Rectangle>\r\n        </Grid>\r\n    </ControlTemplate>\r\n    <!--VerticalTrackLargeDecrease-->\r\n    <ControlTemplate x:Key=\"VerticalTrackLargeDecrease\" TargetType=\"RepeatButton\">\r\n        <Grid x:Name=\"Root\" Margin=\"0,0,0,0\">\r\n            <Rectangle Width=\"3\">\r\n                <Rectangle.Fill>\r\n                    <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                </Rectangle.Fill>\r\n            </Rectangle>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--Slider Style-->\r\n    <Style TargetType=\"Slider\" x:Key=\"DefaultSliderStyle\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Maximum\" Value=\"10\"/>\r\n        <Setter Property=\"Minimum\" Value=\"0\"/>\r\n        <Setter Property=\"Value\" Value=\"0\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ControlBorderBrush}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Slider\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <ControlTemplate x:Key=\"RepeatButtonTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\" Opacity=\"0\" Background=\"Transparent\"/>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\"\r\n                                                                       Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"HorizontalTrackRectangleDisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\"\r\n                                                                       Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"ThumbDisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\"\r\n                                                                       Storyboard.TargetProperty=\"Visibility\"\r\n                                                                       Storyboard.TargetName=\"VerticalTrackRectangleDisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames\r\n                                                Storyboard.TargetProperty=\"(UIElement.Visibility)\"\r\n                                                Storyboard.TargetName=\"ThumbDisabledOverlayVertical\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames\r\n                                                Storyboard.TargetProperty=\"(UIElement.Visibility)\"\r\n                                                Storyboard.TargetName=\"HorizontalTrackRectangleDisabledOverlay_Copy\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames\r\n                                                Storyboard.TargetProperty=\"(UIElement.Visibility)\"\r\n                                                Storyboard.TargetName=\"VerticalTrackRectangleDisabledOverlay_Copy\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"HorizontalTemplate\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Rectangle x:Name=\"TrackRectangle\" Grid.ColumnSpan=\"3\" Grid.Column=\"0\" Height=\"3\"\r\n                                       Margin=\"5,0\" StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                       Fill=\"{StaticResource SliderTrackBrush}\"/>\r\n                            <Rectangle x:Name=\"HorizontalTrackRectangleDisabledOverlay\" Grid.ColumnSpan=\"3\"\r\n                                       Grid.Column=\"0\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Height=\"3\"\r\n                                       Margin=\"5,0,5,0\" Opacity=\".55\" Visibility=\"Collapsed\"/>\r\n                            <RepeatButton x:Name=\"HorizontalTrackLargeChangeDecreaseRepeatButton\" Grid.Column=\"0\"\r\n                                          Height=\"18\" IsTabStop=\"False\"\r\n                                          Template=\"{StaticResource HorizontalTrackLargeDecrease}\"/>\r\n                            <Rectangle x:Name=\"HorizontalTrackRectangleDisabledOverlay_Copy\" Grid.ColumnSpan=\"1\"\r\n                                       Fill=\"{StaticResource DisabledWhiteColorBrush}\" Height=\"4\" Opacity=\"0.7\"\r\n                                       Visibility=\"Collapsed\"/>\r\n                            <Thumb x:Name=\"HorizontalThumb\" Grid.Column=\"1\" Height=\"10\" IsTabStop=\"True\" Width=\"4\"\r\n                                   Style=\"{StaticResource HorizontalSliderThumb}\"/>\r\n                            <Rectangle x:Name=\"ThumbDisabledOverlay\" Grid.Column=\"1\"\r\n                                       Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0.25\"\r\n                                       Visibility=\"Collapsed\" Width=\"4\" Height=\"10\"/>\r\n                            <RepeatButton x:Name=\"HorizontalTrackLargeChangeIncreaseRepeatButton\" Grid.Column=\"2\"\r\n                                          Height=\"18\" IsTabStop=\"False\"\r\n                                          Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"VerticalTemplate\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <Rectangle x:Name=\"TrackRectangle_Vertical\" Grid.ColumnSpan=\"1\" Margin=\"0,5\"\r\n                                       StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                       Fill=\"{StaticResource SliderTrackBrush}\" Grid.RowSpan=\"3\" Grid.Row=\"0\"\r\n                                       Width=\"3\"/>\r\n                            <Rectangle x:Name=\"VerticalTrackRectangleDisabledOverlay\"\r\n                                       Fill=\"{StaticResource DisabledWhiteColorBrush}\" Margin=\"0,5,0,5\" Opacity=\".55\"\r\n                                       Grid.Row=\"0\" Grid.RowSpan=\"3\" Width=\"3\" Visibility=\"Collapsed\"/>\r\n                            <RepeatButton x:Name=\"VerticalTrackLargeChangeDecreaseRepeatButton\" IsTabStop=\"False\"\r\n                                          Grid.Row=\"2\" Width=\"17\"\r\n                                          Template=\"{StaticResource VerticalTrackLargeDecrease}\"/>\r\n                            <Rectangle x:Name=\"VerticalTrackRectangleDisabledOverlay_Copy\"\r\n                                       Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0.7\" Grid.Row=\"2\"\r\n                                       Grid.RowSpan=\"1\" Width=\"5\" Visibility=\"Collapsed\"/>\r\n                            <Thumb x:Name=\"VerticalThumb\" Height=\"4\" IsTabStop=\"True\" Grid.Row=\"1\" Width=\"10\"\r\n                                   Style=\"{StaticResource VerticalSliderThumb}\"/>\r\n                            <RepeatButton x:Name=\"VerticalTrackLargeChangeIncreaseRepeatButton\" IsTabStop=\"False\"\r\n                                          Grid.Row=\"0\" Template=\"{StaticResource RepeatButtonTemplate}\" Width=\"17\"/>\r\n                            <Rectangle x:Name=\"ThumbDisabledOverlayVertical\"\r\n                                       Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0.25\" Width=\"10\"\r\n                                       Height=\"4\" Grid.Row=\"1\" Visibility=\"Collapsed\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--ToggleButton Style-->\r\n    <Style TargetType=\"ToggleButton\" x:Key=\"DefaultToggleButtonStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\r\n        <Setter Property=\"Padding\" Value=\"5,6\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ToggleButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"MouseOverBorder\" To=\"1\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"PressedBorder\" To=\"1\" Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"Opacity\"\r\n                                                         Storyboard.TargetName=\"DisabledVisualElement\" To=\".55\"\r\n                                                         Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"contentPresenter\" To=\"0.5\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"CheckedRectangle\" To=\"1\" Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"CheckedInnerRectangle\" To=\"1\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"FocusRectangle\" To=\"1\" Duration=\"0\"/>\r\n                                        <DoubleAnimation Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                         Storyboard.TargetName=\"FocusInnerRectangle\" To=\"1\"\r\n                                                         Duration=\"0\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                                Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource WhiteColorBrush}\"\r\n                                   IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"PressedBorder\" Background=\"{StaticResource GrayBrush5}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"CheckedBorder\" Background=\"{StaticResource GrayBrush5}\"\r\n                                BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\"\r\n                                   RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                   Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\"\r\n                                   Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"CheckedRectangle\" Stroke=\"{StaticResource GrayBrush1}\" RadiusY=\"4\"\r\n                                   RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"CheckedInnerRectangle\" Fill=\"{StaticResource GrayBrush2}\"\r\n                                   StrokeThickness=\"{TemplateBinding BorderThickness}\"\r\n                                   Stroke=\"{StaticResource GrayBrush2}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\"/>\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                          Content=\"{TemplateBinding Content}\"\r\n                                          HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                          Margin=\"{TemplateBinding Padding}\"\r\n                                          VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Tooltip Style-->\r\n    <Style TargetType=\"ToolTip\" x:Key=\"DefaultToolTipStyle\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"3,0,3,0\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ItemSelectedBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ToolTip\">\r\n                    <Border x:Name=\"Root\" BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                            Background=\"{StaticResource BlackBrush}\" Effect=\"{StaticResource DropShadowBrush}\"\r\n                            Opacity=\"0\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"OpenStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition From=\"Open\" GeneratedDuration=\"0:0:0.3\" To=\"Closed\"/>\r\n                                    <VisualTransition From=\"Closed\" GeneratedDuration=\"0:0:0.3\" To=\"Open\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Closed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                       Storyboard.TargetName=\"Root\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.4\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Open\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\"\r\n                                                                       Storyboard.TargetName=\"Root\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.3\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border Padding=\"{TemplateBinding Padding}\" Background=\"{StaticResource BlackBrush}\">\r\n                            <ContentPresenter Cursor=\"{TemplateBinding Cursor}\"\r\n                                              ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                              Content=\"{TemplateBinding Content}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                        </Border>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--HeaderedContentControl Style-->\r\n    <Style TargetType=\"HeaderedContentControl\" x:Key=\"DefaultHeaderedContentControlStyle\">\r\n        <Setter Property=\"Foreground\" Value=\"#FF000000\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HeaderedContentControl\">\r\n                    <StackPanel>\r\n                        <ContentPresenter Content=\"{TemplateBinding Header}\"\r\n                                          ContentTemplate=\"{TemplateBinding HeaderTemplate}\"\r\n                                          Cursor=\"{TemplateBinding Cursor}\" Margin=\"{TemplateBinding Padding}\"\r\n                                          HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                          VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        <ContentPresenter Content=\"{TemplateBinding Content}\"\r\n                                          ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                          Cursor=\"{TemplateBinding Cursor}\" Margin=\"{TemplateBinding Padding}\"\r\n                                          HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\r\n                                          VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </StackPanel>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <!--Dialog Style-->\r\n    <Style TargetType=\"Dialog\" x:Key=\"DefaultDialogStyle\">\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Center\" />\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\r\n        <Setter Property=\"Background\" Value=\"White\" />\r\n        <Setter Property=\"BorderBrush\" Value=\"DarkGray\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Dialog\">\r\n                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\"\r\n                            BorderThickness=\"{TemplateBinding BorderThickness}\"\r\n                            Background=\"{TemplateBinding Background}\">\r\n                        <Border.Effect>\r\n                            <DropShadowEffect ShadowDepth=\"0\" Opacity=\"0.2\" />\r\n                        </Border.Effect>\r\n                        <ContentPresenter Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\"\r\n                                          Margin=\"{TemplateBinding Padding}\" />\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- Implicit Styles -->\r\n    <!-- When defining your own styles, set \"based on\" the same way to keep control theming -->\r\n    <Style TargetType=\"ContentControl\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n    </Style>\r\n    <Style TargetType=\"Button\" BasedOn=\"{StaticResource DefaultButtonStyle}\"/>\r\n    <Style TargetType=\"HyperlinkButton\" BasedOn=\"{StaticResource DefaultHyperlinkButtonStyle}\"/>\r\n    <Style TargetType=\"TextBox\" BasedOn=\"{StaticResource DefaultTextBoxStyle}\"/>\r\n    <Style TargetType=\"ComboBox\" BasedOn=\"{StaticResource DefaultComboBoxStyle}\"/>\r\n    <Style TargetType=\"ComboBoxItem\" BasedOn=\"{StaticResource DefaultComboBoxItemStyle}\"/>\r\n    <Style TargetType=\"TextBlock\" BasedOn=\"{StaticResource DefaultTextBlockStyle}\"/>\r\n    <Style TargetType=\"ScrollBar\" BasedOn=\"{StaticResource DefaultScrollBarStyle}\"/>\r\n    <Style TargetType=\"ScrollViewer\" BasedOn=\"{StaticResource DefaultScrollViewerStyle}\"/>\r\n    <Style TargetType=\"ListBox\" BasedOn=\"{StaticResource DefaultListBoxStyle}\"/>\r\n    <Style TargetType=\"ListBoxItem\" BasedOn=\"{StaticResource DefaultListBoxItemStyle}\"/>\r\n    <Style TargetType=\"CheckBox\" BasedOn=\"{StaticResource DefaultCheckBoxStyle}\"/>\r\n    <Style TargetType=\"PasswordBox\" BasedOn=\"{StaticResource DefaultPasswordBoxStyle}\"/>\r\n    <Style TargetType=\"ProgressBar\" BasedOn=\"{StaticResource DefaultProgressBarStyle}\"/>\r\n    <Style TargetType=\"RadioButton\" BasedOn=\"{StaticResource DefaultRadioButtonStyle}\"/>\r\n    <Style TargetType=\"RepeatButton\" BasedOn=\"{StaticResource DefaultRepeatButtonStyle}\"/>\r\n    <Style TargetType=\"Slider\" BasedOn=\"{StaticResource DefaultSliderStyle}\"/>\r\n    <Style TargetType=\"ToggleButton\" BasedOn=\"{StaticResource DefaultToggleButtonStyle}\"/>\r\n    <Style TargetType=\"ToolTip\" BasedOn=\"{StaticResource DefaultToolTipStyle}\"/>\r\n    <Style TargetType=\"HeaderedContentControl\" BasedOn=\"{StaticResource DefaultHeaderedContentControlStyle}\"/>\r\n    <Style TargetType=\"Dialog\" BasedOn=\"{StaticResource DefaultDialogStyle}\"/>\r\n</ResourceDictionary>\r\n"
  },
  {
    "path": "themes/assets/metro/brushes.xaml",
    "content": "<ResourceDictionary\r\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n\r\n    <!-- *************COLORS START************* -->\r\n\r\n    <!-- Theme Base Colors -->\r\n\r\n    <!--ACCENT COLORS-->\r\n    <Color x:Key=\"HighlightDarkColor\">#FF119EDA</Color>\r\n    <Color x:Key=\"HighlightLightColor\">#FFB2E0F4</Color>\r\n    <!--80%-->    <Color x:Key=\"AccentColor\">#CC119EDA</Color>\r\n    <!--60%-->    <Color x:Key=\"AccentColor2\">#99119EDA</Color>\r\n    <!--40%-->    <Color x:Key=\"AccentColor3\">#66119EDA</Color>\r\n    <!--20%-->    <Color x:Key=\"AccentColor4\">#33119EDA</Color>\r\n\r\n    <!--BASE COLORS-->\r\n    <Color x:Key=\"BlackColor\">#FF000000</Color>\r\n    <Color x:Key=\"WhiteColor\">#FFFFFFFF</Color>\r\n    <Color x:Key=\"Gray1\">#FFCCCCCC</Color>\r\n    <Color x:Key=\"Gray2\">#FF7F7F7F</Color>\r\n    <Color x:Key=\"Gray3\">#FF333333</Color>\r\n    <Color x:Key=\"Gray4\">#FFB9B9B9</Color>\r\n    <Color x:Key=\"Gray5\">#FFD8D8D9</Color>\r\n    <Color x:Key=\"Gray6\">#FF9D9D9D</Color>\r\n    <Color x:Key=\"Gray7\">#FFF7F7F7</Color>\r\n    <Color x:Key=\"Gray8\">#FFE0E0E0</Color>\r\n    <Color x:Key=\"Gray9\">#FFA59F93</Color>\r\n    <Color x:Key=\"Gray10\">#7FFFFFFF</Color>\r\n    <Color x:Key=\"Gray11\">#7FA9A9A9</Color>\r\n    <Color x:Key=\"Gray12\">#A5F7F7F7</Color>\r\n    <Color x:Key=\"Gray13\">#5EC9C9C9</Color>\r\n    <Color x:Key=\"TextBoxText\">#FF414141</Color>\r\n    <Color x:Key=\"NormalForegroundColor\">#FF000000</Color>\r\n    <Color x:Key=\"HoverForegroundColor\">#FFFFFFFF</Color>\r\n    <!--Note: For the best design BaseColor2 should be a contrast of BaseColor1-->\r\n    <Color x:Key=\"BaseColor2\">#FFFFFFFF</Color>\r\n    <Color x:Key=\"BaseColor5\">#FFBABABA</Color>\r\n    <Color x:Key=\"BaseColor3\">#FF303030</Color>\r\n\r\n    <!--LIGHT COLOR TRANSPARENCIES-->\r\n    <!--0%-->    <Color x:Key=\"TransparentWhiteColor\">#00FFFFFF</Color>\r\n    <!--10%-->    <Color x:Key=\"TransparentWhiteLightColor\">#19FFFFFF</Color>\r\n    <!--25%-->    <Color x:Key=\"TransparentLightestColor\">#34FFFFFF</Color>\r\n    <!--65%-->    <Color x:Key=\"TransparentLightLightColor\">#A5FFFFFF</Color>\r\n    <!--85%-->    <Color x:Key=\"TransparentLightColor\">#D8FFFFFF</Color>\r\n\r\n\r\n    <!--DARK COLOR TRANSPARENCIES-->\r\n    <!--0%-->    <Color x:Key=\"TransparentBlackColor\">#00000000</Color>\r\n    <!--25%-->    <Color x:Key=\"TransparentDarkColor\">#3F000000</Color>\r\n    <!--35%-->    <Color x:Key=\"TransparentDarkDarkColor\">#59000000</Color>\r\n    <!--60%-->    <Color x:Key=\"TransparentDarkDarkDarkColor\">#99000000</Color>\r\n    <!--80%-->    <Color x:Key=\"TransparentDarkestColor\">#CC000000</Color>\r\n\r\n    <!-- CORE CONTROL COLORS-->\r\n    <Color x:Key=\"ValidationColor1\">#052A2E31</Color>\r\n    <Color x:Key=\"ValidationColor2\">#152A2E31</Color>\r\n    <Color x:Key=\"ValidationColor3\">#252A2E31</Color>\r\n    <Color x:Key=\"ValidationColor4\">#352A2E31</Color>\r\n    <Color x:Key=\"ValidationColor5\">#FFDC000C</Color>\r\n    <Color x:Key=\"ValidationSummaryColor1\">#FFDC020D</Color>\r\n    <Color x:Key=\"ValidationSummaryColor2\">#FFCA000C</Color>\r\n    <Color x:Key=\"ValidationSummaryColor3\">#FFFF9298</Color>\r\n    <Color x:Key=\"ValidationSummaryColor4\">#FFFDC8C8</Color>\r\n    <Color x:Key=\"ValidationSummaryColor5\">#DDD43940</Color>\r\n    <Color x:Key=\"ValidationSummaryFillColor1\">#59F7D8DB</Color>\r\n    <Color x:Key=\"ValidationSummaryFillColor2\">#FFF7D8DB</Color>\r\n    <Color x:Key=\"ControlsValidationColor\">#FFDB000C</Color>\r\n\r\n    <Color x:Key=\"ProgressIndeterminateColor1\">#33878787</Color>\r\n    <Color x:Key=\"ProgressIndeterminateColor2\">#33959595</Color>\r\n    <Color x:Key=\"ProgressIndeterminateColor3\">#4C000000</Color>\r\n    <Color x:Key=\"ProgressIndeterminateColor4\">#4C000000</Color>\r\n\r\n    <!-- SDK COLORS -->\r\n    <Color x:Key=\"PageOverlayColor\">#7F000000</Color>\r\n\r\n    <!-- TOOLKIT COLORS -->\r\n    <Color x:Key=\"RatingStarsColor\">#F6FF9900</Color>\r\n    <Color x:Key=\"RatingMouseOverColor\">#F6FDFF70</Color>\r\n    <Color x:Key=\"TimeHintIconColor1\">#F6CAA709</Color>\r\n    <Color x:Key=\"TimeHintIconColor2\">#F3F7F34F</Color>\r\n    <Color x:Key=\"TimeHintIconColor3\">#E7CAA709</Color>\r\n    <Color x:Key=\"TimeHintIconColor4\">#E7967C07</Color>\r\n    <Color x:Key=\"TimeHintIconColor5\">#E7625106</Color>\r\n    <Color x:Key=\"TimeHintIconColor6\">#FB8F8873</Color>\r\n    <Color x:Key=\"TimeHintIconColor7\">#F6271A47</Color>\r\n    <Color x:Key=\"TimeHintIconColor8\">#E7271A47</Color>\r\n    <Color x:Key=\"TimeHintIconColor9\">#9A89782B</Color>\r\n    <Color x:Key=\"TimeHintIconColor10\">#4DEBD60F</Color>\r\n    <Color x:Key=\"TimeHintIconColor11\">#FBF6EC20</Color>\r\n    <Color x:Key=\"TimeHintIconColor12\">#FF1B1B54</Color>\r\n    <Color x:Key=\"TimeHintIconColor13\">#FF1C1C50</Color>\r\n\r\n    <Color x:Key=\"OKButtonIconColor1\">#FF67CA0A</Color>\r\n    <Color x:Key=\"OKButtonIconColor2\">#FF498C38</Color>\r\n    <Color x:Key=\"OKButtonIconColor3\">#FF29EE5B</Color>\r\n    <Color x:Key=\"CancelButtonIconColor1\">#FFEA7525</Color>\r\n    <Color x:Key=\"CancelButtonIconColor2\">#FFDA715B</Color>\r\n    <Color x:Key=\"CancelButtonIconColor3\">#FFB72909</Color>\r\n\r\n    <!--CHART COLORS-->\r\n    <Color x:Key=\"ChartBrush1\">#FF0097FC</Color>\r\n    <Color x:Key=\"ChartBrush2\">#FF70BBED</Color>\r\n    <Color x:Key=\"ChartBrush3\">#FF70BBED</Color>\r\n    <Color x:Key=\"ChartBrush4\">#FF4556BA</Color>\r\n    <Color x:Key=\"ChartBrush5\">#FFC84BA4</Color>\r\n    <Color x:Key=\"ChartBrush6\">#FF477ABE</Color>\r\n    <Color x:Key=\"ChartBrush7\">#FF6644B7</Color>\r\n    <Color x:Key=\"ChartBrush8\">#FFA045BA</Color>\r\n    <Color x:Key=\"ChartBrush9\">#FF73C348</Color>\r\n    <Color x:Key=\"ChartBrush10\">#FFDD5279</Color>\r\n    <Color x:Key=\"ChartBrush11\">#FF4999C4</Color>\r\n    <Color x:Key=\"ChartBrush12\">#FFEC8B58</Color>\r\n    <Color x:Key=\"ChartBrush13\">#FFECA058</Color>\r\n    <Color x:Key=\"ChartBrush14\">#FFEC6558</Color>\r\n    <Color x:Key=\"ChartBrush15\">#FFEC8B58</Color>\r\n    <Color x:Key=\"ChartBrush16\">#FFECA058</Color>\r\n\r\n    <!-- Colors Stop -->\r\n\r\n    <!-- *************BRUSHES START************* -->\r\n    <!--PROJECT TEMPLATE BRUSHES -->\r\n\r\n    <!-- UNIVERSAL CONTROL BRUSHES -->\r\n    <SolidColorBrush x:Key=\"ControlBackgroundBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"WhiteBrush\" Color=\"{StaticResource WhiteColor}\" />\r\n    <SolidColorBrush x:Key=\"BlackBrush\" Color=\"{StaticResource BlackColor}\" />\r\n    <SolidColorBrush x:Key=\"TextBrush\" Color=\"{StaticResource BlackColor}\" />\r\n    <SolidColorBrush x:Key=\"LabelTextBrush\" Color=\"{StaticResource BlackColor}\" />\r\n    <SolidColorBrush x:Key=\"WhiteColorBrush\" Color=\"{StaticResource WhiteColor}\" />\r\n    <SolidColorBrush x:Key=\"BlackColorBrush\" Color=\"{StaticResource BlackColor}\" />\r\n\r\n    <SolidColorBrush x:Key=\"HighlightBrush\" Color=\"{StaticResource HighlightDarkColor}\" />\r\n    <SolidColorBrush x:Key=\"HighlightLightBrush\" Color=\"{StaticResource HighlightLightColor}\" />\r\n    <SolidColorBrush x:Key=\"NavigationBorderBrush\" Color=\"#FF9D9492\" />\r\n    <SolidColorBrush x:Key=\"NavigationForegroundBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"PageBorderBrush\" Color=\"#FFB2B2B2\" />\r\n    <SolidColorBrush x:Key=\"BodyTextColorBrush\" Color=\"#FF313131\"/>\r\n    <SolidColorBrush x:Key=\"ControlsDisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n    <SolidColorBrush x:Key=\"ReadOnlyBrush\" Color=\"{StaticResource TransparentLightestColor}\"/>\r\n    <SolidColorBrush x:Key=\"DisbaledForegroundBrush\" Color=\"#FFAAAAAA\"/>\r\n    <SolidColorBrush x:Key=\"DisbaledControlBrush\" Color=\"#FFAAAAAA\"/>\r\n    <SolidColorBrush x:Key=\"DisabledWhiteColorBrush\" Color=\"{StaticResource WhiteColor}\" />\r\n    <SolidColorBrush x:Key=\"RatingStarsBrush\" Color=\"{StaticResource RatingStarsColor}\" />\r\n    <SolidColorBrush x:Key=\"RatingMouseOverBrush\" Color=\"{StaticResource RatingMouseOverColor}\" />\r\n    <SolidColorBrush x:Key=\"PageOverlayBrush\" Color=\"{StaticResource PageOverlayColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"FuzzBrush1\" Color=\"#1E000000\" />\r\n    <SolidColorBrush x:Key=\"FuzzBrush2\" Color=\"#14000000\" />\r\n    <SolidColorBrush x:Key=\"FuzzBrush3\" Color=\"Black\" />\r\n\r\n    <SolidColorBrush x:Key=\"TransparentWhiteBrush\" Color=\"{StaticResource TransparentWhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentWhiteLightBrush\" Color=\"{StaticResource TransparentWhiteColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentLightestBrush\" Color=\"{StaticResource TransparentLightestColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentLightLightBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentBlackBrush\" Color=\"{StaticResource TransparentBlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentDarkBrush\" Color=\"{StaticResource TransparentDarkColor}\"/>\r\n    <SolidColorBrush x:Key=\"TransparentDarkDarkDarkBrush\" Color=\"{StaticResource TransparentDarkDarkDarkColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"GrayBrush1\" Color=\"{StaticResource Gray1}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush2\" Color=\"{StaticResource Gray2}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush3\" Color=\"{StaticResource Gray3}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush4\" Color=\"{StaticResource Gray4}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush5\" Color=\"{StaticResource Gray5}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush6\" Color=\"{StaticResource Gray6}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush7\" Color=\"{StaticResource Gray7}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush8\" Color=\"{StaticResource Gray8}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush9\" Color=\"{StaticResource Gray9}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush10\" Color=\"{StaticResource Gray10}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush11\" Color=\"{StaticResource Gray11}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush12\" Color=\"{StaticResource Gray12}\"/>\r\n    <SolidColorBrush x:Key=\"GrayBrush13\" Color=\"{StaticResource Gray13}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"HoverHyperlinkForegroundBrush\" Color=\"{StaticResource BlackColor}\"/>\r\n    <SolidColorBrush x:Key=\"HoverHyperlinkBackgroundBrush\" Color=\"{StaticResource WhiteColor}\"/>\r\n\r\n    <SolidColorBrush x:Key=\"TextBoxBorderBrush\" Color=\"{StaticResource Gray1}\" />\r\n    <SolidColorBrush x:Key=\"ControlBorderBrush\" Color=\"{StaticResource Gray1}\" />\r\n    <SolidColorBrush x:Key=\"TextBoxMouseOverBorderBrush\" Color=\"{StaticResource HighlightDarkColor}\" />\r\n    <SolidColorBrush x:Key=\"TextBoxMouseOverInnerBorderBrush\" Color=\"{StaticResource HighlightLightColor}\" />\r\n\r\n    <SolidColorBrush x:Key=\"CheckBoxBrush\" Color=\"{StaticResource Gray2}\" />\r\n    <SolidColorBrush x:Key=\"CheckBoxMouseOverBrush\" Color=\"{StaticResource Gray3}\" />\r\n    <LinearGradientBrush x:Key=\"CheckBoxBackgroundBrush\" EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n        <GradientStop Color=\"#FFE5E5E5\" Offset=\"0\"/>\r\n        <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n    </LinearGradientBrush>\r\n\r\n    <LinearGradientBrush x:Key=\"ApplicationNameBrush\" EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n        <GradientStop Color=\"#FF14BBD2\" Offset=\"0\"/>\r\n        <GradientStop Color=\"#FF013C6C\" Offset=\"1\"/>\r\n    </LinearGradientBrush>\r\n\r\n    <SolidColorBrush x:Key=\"ThumbBrush\" Color=\"{StaticResource Gray4}\" />\r\n\r\n    <SolidColorBrush x:Key=\"ItemSelectedBrush\" Color=\"{StaticResource Gray5}\" />\r\n\r\n    <SolidColorBrush x:Key=\"SliderTrackBrush\" Color=\"{StaticResource Gray6}\" />\r\n\r\n    <SolidColorBrush x:Key=\"NormalBrush\" Color=\"{StaticResource Gray7}\" />\r\n\r\n    <SolidColorBrush x:Key=\"ComboBoxPopupBrush\" Color=\"{StaticResource Gray9}\" />\r\n    <LinearGradientBrush x:Key=\"BrandingBrush\" EndPoint=\"0.001,0.5\" StartPoint=\"1.002,0.5\">\r\n        <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0\"/>\r\n        <GradientStop Color=\"#FF5FC316\" Offset=\"1\"/>\r\n    </LinearGradientBrush>\r\n\r\n    <DropShadowEffect x:Key=\"DropShadowBrush\" Direction=\"330\" Opacity=\"0.3\" ShadowDepth=\"0\" BlurRadius=\"6\"/>\r\n\r\n    <SolidColorBrush x:Key=\"WindowBackgroundBrush\" Color=\"{StaticResource WhiteColor}\" />\r\n    <SolidColorBrush x:Key=\"SeperatorBrush\" Color=\"#FFC4C4C5\"/>\r\n\r\n\r\n    <!-- CONTROL VALIDATION BRUSHES -->\r\n    <SolidColorBrush x:Key=\"ControlsValidationBrush\" Color=\"{StaticResource ControlsValidationColor}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush1\" Color=\"{StaticResource ValidationColor1}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush2\" Color=\"{StaticResource ValidationColor2}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush3\" Color=\"{StaticResource ValidationColor3}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush4\" Color=\"{StaticResource ValidationColor4}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationBrush5\" Color=\"{StaticResource ValidationColor5}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush1\" Color=\"{StaticResource ValidationSummaryColor1}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush2\" Color=\"{StaticResource ValidationSummaryColor2}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush3\" Color=\"{StaticResource ValidationSummaryColor3}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush4\" Color=\"{StaticResource ValidationSummaryColor4}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryBrush5\" Color=\"{StaticResource ValidationSummaryColor5}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryFillBrush1\" Color=\"{StaticResource ValidationSummaryFillColor1}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryFillBrush2\" Color=\"{StaticResource ValidationSummaryFillColor2}\"/>\r\n    <SolidColorBrush x:Key=\"ValidationSummaryDisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n\r\n    <!--VALIDATION ICON BRUSHES-->\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush1\" Color=\"{StaticResource TimeHintIconColor1}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush2\" Color=\"{StaticResource TimeHintIconColor2}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush3\" Color=\"{StaticResource TimeHintIconColor3}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush4\" Color=\"{StaticResource TimeHintIconColor4}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush5\" Color=\"{StaticResource TimeHintIconColor5}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush6\" Color=\"{StaticResource TimeHintIconColor6}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush7\" Color=\"{StaticResource TimeHintIconColor7}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush8\" Color=\"{StaticResource TimeHintIconColor8}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush9\" Color=\"{StaticResource TimeHintIconColor9}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush10\" Color=\"{StaticResource TimeHintIconColor10}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush11\" Color=\"{StaticResource TimeHintIconColor11}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush12\" Color=\"{StaticResource TimeHintIconColor12}\"/>\r\n    <SolidColorBrush x:Key=\"TimeHintIconBrush13\" Color=\"{StaticResource TimeHintIconColor13}\"/>\r\n\r\n    <!-- Brushes Stop -->\r\n\r\n\r\n    <!-- Brushes End -->\r\n</ResourceDictionary>\r\n"
  },
  {
    "path": "themes/assets/metro/corestyles.xaml",
    "content": "<ResourceDictionary\r\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n        xmlns:sys=\"clr-namespace:System;assembly=mscorlib\"\r\n        xmlns:controls=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls\"\r\n        xmlns:System_Windows_Controls_Primitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls\"\r\n        xmlns:System=\"clr-namespace:System;assembly=mscorlib\"\r\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n        xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n        xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n        mc:Ignorable=\"d\">\r\n\r\n    <!-- Global Settings-->\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"Brushes.xaml\"/>\r\n        <ResourceDictionary Source=\"Fonts.xaml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n\r\n    <!-- *******CONTROLS STYLES****** -->\r\n    <!-- **************************** -->\r\n\r\n    <!--ValidationToolTipTemplate Style-->\r\n    <ControlTemplate x:Key=\"ValidationToolTipTemplate\">\r\n        <Grid x:Name=\"Root\" Margin=\"5,0\" Opacity=\"0\" RenderTransformOrigin=\"0,0\">\r\n            <Grid.RenderTransform>\r\n                <TranslateTransform x:Name=\"xform\" X=\"-25\"/>\r\n            </Grid.RenderTransform>\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"OpenStates\">\r\n                    <VisualStateGroup.Transitions>\r\n                        <VisualTransition GeneratedDuration=\"0\"/>\r\n                        <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"Open\">\r\n                            <Storyboard>\r\n                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"xform\">\r\n                                    <SplineDoubleKeyFrame KeyTime=\"0:0:0.2\" Value=\"0\"/>\r\n                                </DoubleAnimationUsingKeyFrames>\r\n                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\">\r\n                                    <SplineDoubleKeyFrame KeyTime=\"0:0:0.2\" Value=\"1\"/>\r\n                                </DoubleAnimationUsingKeyFrames>\r\n                            </Storyboard>\r\n                        </VisualTransition>\r\n                    </VisualStateGroup.Transitions>\r\n                    <VisualState x:Name=\"Closed\">\r\n                        <Storyboard>\r\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\">\r\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                            </DoubleAnimationUsingKeyFrames>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                    <VisualState x:Name=\"Open\">\r\n                        <Storyboard>\r\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"xform\">\r\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                            </DoubleAnimationUsingKeyFrames>\r\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\">\r\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                            </DoubleAnimationUsingKeyFrames>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Border Background=\"{StaticResource ValidationBrush1}\" CornerRadius=\"5\" Margin=\"4,4,-4,-4\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush2}\" CornerRadius=\"4\" Margin=\"3,3,-3,-3\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush3}\" CornerRadius=\"3\" Margin=\"2,2,-2,-2\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush4}\" CornerRadius=\"2\" Margin=\"1,1,-1,-1\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush5}\" CornerRadius=\"2\"/>\r\n            <Border CornerRadius=\"2\">\r\n                <TextBlock Foreground=\"{StaticResource WhiteColorBrush}\" MaxWidth=\"250\" Margin=\"8,4,8,4\" TextWrapping=\"Wrap\" Text=\"{Binding (Validation.Errors)[0].ErrorContent}\" UseLayoutRounding=\"false\"/>\r\n            </Border>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--CommonValidationToolTipTemplate Style-->\r\n    <ControlTemplate x:Key=\"CommonValidationToolTipTemplate\" TargetType=\"ToolTip\">\r\n        <Grid x:Name=\"Root\" Margin=\"5,0\" Opacity=\"0\" RenderTransformOrigin=\"0,0\">\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"OpenStates\">\r\n                    <VisualStateGroup.Transitions>\r\n                        <VisualTransition GeneratedDuration=\"0\" />\r\n                        <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"Open\">\r\n                            <Storyboard>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" Storyboard.TargetName=\"Translation\" Storyboard.TargetProperty=\"X\" To=\"0\">\r\n                                    <DoubleAnimation.EasingFunction>\r\n                                        <BackEase Amplitude=\".3\" EasingMode=\"EaseOut\" />\r\n                                    </DoubleAnimation.EasingFunction>\r\n                                </DoubleAnimation>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                            </Storyboard>\r\n                        </VisualTransition>\r\n                    </VisualStateGroup.Transitions>\r\n                    <VisualState x:Name=\"Closed\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"0\" />\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                    <VisualState x:Name=\"Open\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Translation\" Storyboard.TargetProperty=\"X\" To=\"0\" />\r\n                            <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Root\" Storyboard.TargetProperty=\"Opacity\" To=\"1\" />\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Grid.RenderTransform>\r\n                <TranslateTransform x:Name=\"Translation\" X=\"-25\" />\r\n            </Grid.RenderTransform>\r\n            <Border Margin=\"4,4,-4,-4\" Background=\"{StaticResource ValidationBrush1}\" CornerRadius=\"5\" />\r\n            <Border Margin=\"3,3,-3,-3\" Background=\"{StaticResource ValidationBrush2}\" CornerRadius=\"4\" />\r\n            <Border Margin=\"2,2,-2,-2\" Background=\"{StaticResource ValidationBrush3}\" CornerRadius=\"3\" />\r\n            <Border Margin=\"1,1,-1,-1\" Background=\"{StaticResource ValidationBrush4}\" CornerRadius=\"2\" />\r\n            <Border Background=\"{StaticResource ValidationBrush5}\" CornerRadius=\"2\">\r\n                <TextBlock Margin=\"8,4,8,4\" MaxWidth=\"250\" UseLayoutRounding=\"false\" Foreground=\"{StaticResource WhiteColorBrush}\" Text=\"{Binding (Validation.Errors)[0].Exception.Message}\" TextWrapping=\"Wrap\" />\r\n            </Border>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--Button Style-->\r\n    <Style TargetType=\"Button\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\r\n        <Setter Property=\"Padding\" Value=\"5,6\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Button\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.7\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource ControlsDisabledBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"PressedBorder\" Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--SearchButtonStyle-->\r\n    <Style x:Key=\"SearchButtonStyle\" TargetType=\"HyperlinkButton\">\r\n        <Setter Property=\"Margin\" Value=\"-22,0,20,0\" />\r\n        <Setter Property=\"ContentTemplate\">\r\n            <Setter.Value>\r\n                <DataTemplate>\r\n                    <Grid Width=\"14\" Height=\"16\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Margin=\"3,2,0,0\">\r\n                        <Rectangle Fill=\"#FF767676\" HorizontalAlignment=\"Right\" Height=\"8\" Margin=\"0,0,-0.164,-0.334\" RadiusY=\"0.5\" RadiusX=\"0.5\" RenderTransformOrigin=\"0.5,0.5\" Stroke=\"#FF767676\" UseLayoutRounding=\"False\" VerticalAlignment=\"Bottom\" Width=\"4\">\r\n                            <Rectangle.RenderTransform>\r\n                                <RotateTransform Angle=\"-45\"/>\r\n                            </Rectangle.RenderTransform>\r\n                        </Rectangle>\r\n                        <Ellipse Fill=\"Transparent\" Margin=\"0,0,1,3\" Stroke=\"#FF767676\"/>\r\n                    </Grid>\r\n                </DataTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                    <Grid x:Name=\"grid\" Cursor=\"{TemplateBinding Cursor}\" Margin=\"-6,0,0,-4\">\r\n                        <Grid.Background>\r\n                            <SolidColorBrush Color=\"{StaticResource BaseColor2}\"/>\r\n                        </Grid.Background>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HighlightLightColor}\" Storyboard.TargetProperty=\"(SolidColorBrush.Color)\" Storyboard.TargetName=\"ContentPresenterWrapperColor\" d:IsOptimized=\"True\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray5}\" Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\" Storyboard.TargetName=\"grid\" d:IsOptimized=\"True\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray5}\" Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\" Storyboard.TargetName=\"grid\" d:IsOptimized=\"True\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.8\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"grid\" d:IsOptimized=\"True\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"DisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <TextBlock x:Name=\"UnderlineTextBlock\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" TextDecorations=\"Underline\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                            <TextBlock.Foreground>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </TextBlock.Foreground>\r\n                        </TextBlock>\r\n                        <TextBlock x:Name=\"DisabledOverlay\" Foreground=\"{StaticResource DisbaledForegroundBrush}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Canvas.ZIndex=\"1\"/>\r\n                        <ContentControl>\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource HighlightDarkColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Width=\"21\" Margin=\"2,3,0,0\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightLightColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Control Label Style-->\r\n    <Style x:Key=\"ControlLabelStyle\" TargetType=\"TextBlock\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource LabelTextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource LabelFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n    </Style>\r\n\r\n    <!--HyperlinkButton Style-->\r\n    <Style TargetType=\"HyperlinkButton\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource HighlightBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource HyperlinkFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Padding\" Value=\"2,0,2,0\"/>\r\n        <Setter Property=\"Cursor\" Value=\"Hand\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"HyperlinkButton\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" Cursor=\"{TemplateBinding Cursor}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"UnderlineTextBlock\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HighlightLightColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"UnderlineTextBlock\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"DisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <TextBlock x:Name=\"UnderlineTextBlock\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" TextDecorations=\"Underline\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                            <TextBlock.Foreground>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </TextBlock.Foreground>\r\n                        </TextBlock>\r\n                        <TextBlock x:Name=\"DisabledOverlay\" Foreground=\"{StaticResource DisbaledForegroundBrush}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Text=\"{TemplateBinding Content}\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Canvas.ZIndex=\"1\"/>\r\n                        <ContentControl>\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource HighlightDarkColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightLightColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TextBlock Style-->\r\n    <Style TargetType=\"TextBlock\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n    </Style>\r\n\r\n    <!--ComboBoxItem Style-->\r\n    <Style TargetType=\"ComboBoxItem\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"3\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Local\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ComboBoxItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" Margin=\"0,0.5\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\".65\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HoverForegroundColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HoverForegroundColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource HighlightBrush}\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource HighlightBrush}\"/>\r\n                        <ContentControl >\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource NormalForegroundColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ComboBox Style-->\r\n    <Style TargetType=\"ComboBox\">\r\n        <Setter Property=\"Padding\" Value=\"6,4,25,4\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray7}\" />\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ComboBox\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <Style x:Name=\"comboToggleStyle\" TargetType=\"ToggleButton\">\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"Padding\" Value=\"3\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"ToggleButton\">\r\n                                            <Grid>\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\"/>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"CheckStates\">\r\n                                                        <VisualState x:Name=\"Checked\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedInnerRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unchecked\"/>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                                                <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource WhiteBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                                                <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                                                <Border x:Name=\"PressedBorder\" Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                                                <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                                                <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                                                <Rectangle x:Name=\"CheckedRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" RadiusY=\"4\" RadiusX=\"4\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                                                <Rectangle x:Name=\"CheckedInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" RadiusY=\"4\" RadiusX=\"4\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                                                <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                                <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Margin=\"1\" RadiusY=\"3.5\" RadiusX=\"3.5\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.45\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"FocusedDropDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"PopupBorder\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ContentPresenterBorder\">\r\n                            <Grid>\r\n                                <ToggleButton x:Name=\"DropDownToggle\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" HorizontalAlignment=\"Stretch\" HorizontalContentAlignment=\"Right\" Margin=\"0\" Style=\"{StaticResource comboToggleStyle}\" VerticalAlignment=\"Stretch\">\r\n                                    <Path x:Name=\"BtnArrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"BtnArrowColor\" Color=\"{StaticResource Gray3}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </ToggleButton>\r\n                                <ContentPresenter x:Name=\"ContentPresenter\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                    <TextBlock Text=\" \"/>\r\n                                </ContentPresenter>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" IsHitTestVisible=\"false\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"1\" CornerRadius=\"3\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <sys:Boolean>true</sys:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Popup x:Name=\"Popup\">\r\n                            <Border Effect=\"{StaticResource DropShadowBrush}\" x:Name=\"PopupBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" HorizontalAlignment=\"Stretch\" Height=\"Auto\" BorderBrush=\"{StaticResource ComboBoxPopupBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n\r\n                                <ScrollViewer x:Name=\"ScrollViewer\" BorderThickness=\"0\" Padding=\"1\">\r\n                                    <ItemsPresenter/>\r\n                                </ScrollViewer>\r\n                            </Border>\r\n                        </Popup>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--PassWordBox Style-->\r\n    <Style x:Key=\"PasswordBoxStyle\" TargetType=\"PasswordBox\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource TextBoxText}\" />\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"PasswordBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.8\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\" d:IsOptimized=\"True\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Opacity=\"1\">\r\n                            <Border x:Name=\"ContentElement\" Margin=\"{TemplateBinding Padding}\" Padding=\"4,0,0,0\"/>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"{StaticResource DisbaledControlBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource DisbaledControlBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" BorderBrush=\"{StaticResource TextBoxMouseOverBorderBrush}\" BorderThickness=\"1\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource TextBoxMouseOverBorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" IsHitTestVisible=\"False\" Opacity=\"0\">\r\n                            <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                        </Border>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"1\" CornerRadius=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <sys:Boolean>true</sys:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TextBox Style-->\r\n    <Style TargetType=\"TextBox\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"0\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"TextBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ReadOnlyVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\" />\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"Base\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"1\" Fill=\"{StaticResource ControlBackgroundBrush}\" />\r\n                        <Rectangle x:Name=\"FocusRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                        <Grid Margin=\"0,1,0,0\">\r\n                            <Border x:Name=\"ReadOnlyVisualElement\" Background=\"{StaticResource ReadOnlyBrush}\" Opacity=\"0\"/>\r\n                            <Grid >\r\n                                <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" IsTabStop=\"False\" Margin=\"4,0,2,2\" VerticalAlignment=\"Center\" Background=\"{x:Null}\"/>\r\n                            </Grid>\r\n                        </Grid>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Stroke=\"{StaticResource ControlsDisabledBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{StaticResource ControlsDisabledBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <sys:Boolean>true</sys:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n\r\n    <!--ScrollBar Style-->\r\n    <Style TargetType=\"ScrollBar\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"20\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"20\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ScrollBar\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <ControlTemplate x:Key=\"RepeatButtonTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\" Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalIncrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Path Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,1,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,1,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Fill=\"{StaticResource WhiteColorBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalDecrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Path Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\" Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"0,1,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\" Data=\"F1 M 110.692,342.252L 110.692,352.682L 104.594,347.467L 110.692,342.252 Z \" Height=\"6\" Stretch=\"Uniform\" Width=\"4\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"0,1,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalIncrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Path Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush x:Name=\"ButtonColor\" Color=\"{StaticResource Gray3}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\" Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,0,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\" Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,0,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"DisabledElement\" Fill=\"{StaticResource WhiteColorBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalDecrementTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HoverPath\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Blur\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"Background\" Fill=\"{StaticResource ControlBackgroundBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\" StrokeThickness=\"1\"/>\r\n                                    <Rectangle x:Name=\"BackgroundMouseOver\" Fill=\"{StaticResource HighlightBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\" />\r\n                                    <Rectangle x:Name=\"BackgroundPressed\" Fill=\"{StaticResource HighlightBrush}\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\" />\r\n                                    <Rectangle x:Name=\"BackgroundGradient\" Fill=\"{StaticResource TransparentWhiteBrush}\" Margin=\"1\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource ControlBackgroundBrush}\" StrokeThickness=\"1\"/>\r\n                                    <Rectangle x:Name=\"Highlight\" IsHitTestVisible=\"false\" Margin=\"1\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\"/>\r\n                                    <Path Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"HoverPath\" Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,0,0,0\">\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                    <Path x:Name=\"Blur\" Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \" Height=\"4\" Stretch=\"Uniform\" Width=\"6\" UseLayoutRounding=\"False\" Opacity=\"0\" Margin=\"1,0,0,0\">\r\n                                        <Path.Effect>\r\n                                            <BlurEffect/>\r\n                                        </Path.Effect>\r\n                                        <Path.Fill>\r\n                                            <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"VerticalThumbTemplate\" TargetType=\"Thumb\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ThumbVisual\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0:0:0\" Value=\"0\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid x:Name=\"ThumbVisual\" Margin=\"1,0,1,0\">\r\n                                        <Rectangle x:Name=\"Background\" StrokeThickness=\"1\" Fill=\"{StaticResource ThumbBrush}\" />\r\n                                        <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"1\" Opacity=\"0\" Fill=\"{StaticResource BlackBrush}\" />\r\n                                        <Rectangle x:Name=\"PressedRectangle\" StrokeThickness=\"1\" Opacity=\"0\" Fill=\"{StaticResource BlackBrush}\" />\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"HorizontalThumbTemplate\" TargetType=\"Thumb\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ThumbVisual\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0:0:0\" Value=\"0\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid x:Name=\"ThumbVisual\" Margin=\"0,1,0,1\">\r\n                                        <Rectangle x:Name=\"Background\" StrokeThickness=\"1\" Fill=\"{StaticResource ThumbBrush}\" />\r\n                                        <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"1\" Opacity=\"0\" Fill=\"{StaticResource BlackBrush}\" />\r\n                                        <Rectangle x:Name=\"PressedRectangle\" StrokeThickness=\"1\" Opacity=\"0\" Fill=\"{StaticResource BlackBrush}\" />\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"HorizontalRoot\" Height=\"11\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Border BorderThickness=\"0,0,0,1\" Grid.RowSpan=\"1\" Margin=\"0,0,0,-1\" Grid.ColumnSpan=\"5\" Visibility=\"Collapsed\" >\r\n                                <Border.BorderBrush>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray4}\"/>\r\n                                </Border.BorderBrush>\r\n                            </Border>\r\n                            <RepeatButton x:Name=\"HorizontalSmallDecrease\" Grid.Column=\"0\" IsTabStop=\"False\" Interval=\"50\" Margin=\"1\" Template=\"{StaticResource HorizontalDecrementTemplate}\" Width=\"16\"/>\r\n                            <RepeatButton x:Name=\"HorizontalLargeDecrease\" Grid.Column=\"1\" IsTabStop=\"False\" Interval=\"50\" Template=\"{StaticResource RepeatButtonTemplate}\" Width=\"0\"/>\r\n                            <Thumb x:Name=\"HorizontalThumb\" Background=\"{TemplateBinding Background}\" Grid.Column=\"2\" MinWidth=\"18\" Template=\"{StaticResource HorizontalThumbTemplate}\" Width=\"18\"/>\r\n                            <RepeatButton x:Name=\"HorizontalLargeIncrease\" Grid.Column=\"3\" IsTabStop=\"False\" Interval=\"50\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                            <RepeatButton x:Name=\"HorizontalSmallIncrease\" Grid.Column=\"4\" IsTabStop=\"False\" Interval=\"50\" Margin=\"1\" Template=\"{StaticResource HorizontalIncrementTemplate}\" Width=\"16\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"VerticalRoot\" Visibility=\"Collapsed\" Width=\"11\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <Border BorderThickness=\"0,0,1,0\" Margin=\"0,0,-1,0\" Grid.RowSpan=\"5\" Visibility=\"Collapsed\" >\r\n                                <Border.BorderBrush>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray4}\"/>\r\n                                </Border.BorderBrush>\r\n                            </Border>\r\n                            <RepeatButton x:Name=\"VerticalSmallDecrease\" Height=\"16\" IsTabStop=\"False\" Interval=\"50\" Margin=\"1\" Grid.Row=\"0\" Template=\"{StaticResource VerticalDecrementTemplate}\"/>\r\n                            <RepeatButton x:Name=\"VerticalLargeDecrease\" Height=\"0\" IsTabStop=\"False\" Interval=\"50\" Grid.Row=\"1\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                            <Thumb x:Name=\"VerticalThumb\" Height=\"18\" MinHeight=\"18\" Grid.Row=\"2\" Template=\"{StaticResource VerticalThumbTemplate}\"/>\r\n                            <RepeatButton x:Name=\"VerticalLargeIncrease\" IsTabStop=\"False\" Interval=\"50\" Grid.Row=\"3\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                            <RepeatButton x:Name=\"VerticalSmallIncrease\" Height=\"16\" IsTabStop=\"False\" Interval=\"50\" Margin=\"1\" Grid.Row=\"4\" Template=\"{StaticResource VerticalIncrementTemplate}\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ScrollViewer Style-->\r\n    <Style TargetType=\"ScrollViewer\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"VerticalScrollBarVisibility\" Value=\"Visible\"/>\r\n        <Setter Property=\"Padding\" Value=\"4\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray4}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ScrollViewer\">\r\n                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                        <Grid Background=\"{TemplateBinding Background}\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <ScrollContentPresenter x:Name=\"ScrollContentPresenter\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                            <Rectangle Grid.Column=\"1\" Grid.Row=\"1\" Visibility=\"Collapsed\"/>\r\n                            <ScrollBar x:Name=\"VerticalScrollBar\" Grid.Column=\"1\" IsTabStop=\"False\" Maximum=\"{TemplateBinding ScrollableHeight}\" Margin=\"0,-1,-3,-1\" Minimum=\"0\" Orientation=\"Vertical\" Grid.Row=\"0\" Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\" Value=\"{TemplateBinding VerticalOffset}\" ViewportSize=\"{TemplateBinding ViewportHeight}\" Width=\"18\"/>\r\n                            <ScrollBar x:Name=\"HorizontalScrollBar\" Grid.Column=\"0\" Height=\"18\" IsTabStop=\"False\" Maximum=\"{TemplateBinding ScrollableWidth}\" Margin=\"-1,0,-1,-3\" Minimum=\"0\" Orientation=\"Horizontal\" Grid.Row=\"1\" Visibility=\"{TemplateBinding ComputedHorizontalScrollBarVisibility}\" Value=\"{TemplateBinding HorizontalOffset}\" ViewportSize=\"{TemplateBinding ViewportWidth}\"/>\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ToggleButton Style-->\r\n    <Style TargetType=\"ToggleButton\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\r\n        <Setter Property=\"Padding\" Value=\"5,6\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ToggleButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource WhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"PressedBorder\"  Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"CheckedBorder\"  Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"CheckedRectangle\" Stroke=\"{StaticResource GrayBrush1}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"CheckedInnerRectangle\" Fill=\"{StaticResource GrayBrush2}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource GrayBrush2}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Tooltip Style-->\r\n    <Style TargetType=\"ToolTip\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"3,0,3,0\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ItemSelectedBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ToolTip\">\r\n                    <Border x:Name=\"Root\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource BlackBrush}\" Effect=\"{StaticResource DropShadowBrush}\" Opacity=\"0\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"OpenStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition From=\"Open\" GeneratedDuration=\"0:0:0.3\" To=\"Closed\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Closed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.4\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Open\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.3\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border Padding=\"{TemplateBinding Padding}\">\r\n                            <Border.Resources>\r\n                                <Storyboard x:Key=\"Visible State\"/>\r\n                                <Storyboard x:Key=\"Normal State\"/>\r\n                            </Border.Resources>\r\n                            <Border.Background>\r\n                                <StaticResource ResourceKey=\"BlackBrush\"/>\r\n                            </Border.Background>\r\n                            <ContentPresenter Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                        </Border>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--RepeatButton Style-->\r\n    <Style TargetType=\"RepeatButton\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"SemiBold\"/>\r\n        <Setter Property=\"Padding\" Value=\"5,6\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"RepeatButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\"/>\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" RadiusY=\"3\" RadiusX=\"3\"/>\r\n                        <Border x:Name=\"MouseOverBorder\" Background=\"{StaticResource GrayBrush8}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"PressedBorder\"  Background=\"{StaticResource GrayBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3.5\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" RadiusY=\"4\" RadiusX=\"4\" Margin=\"-1\" Opacity=\"0\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" RadiusX=\"3\" RadiusY=\"3\" Opacity=\"0\" />\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--RadioButton Style-->\r\n    <Style TargetType=\"RadioButton\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource CheckBoxBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,1,0,0\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource CheckBoxBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"RadioButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverEllipse\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"grid\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckIcon\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"16\"/>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\">\r\n                            <Grid x:Name=\"grid\" Height=\"15\" Width=\"15\" Opacity=\"0.7\">\r\n                                <Ellipse x:Name=\"Background\" Fill=\"{TemplateBinding Background}\" Stroke=\"{TemplateBinding BorderBrush}\" Margin=\"1\" StrokeThickness=\"{TemplateBinding BorderThickness}\" />\r\n                                <Ellipse x:Name=\"MouseOverEllipse\" Stroke=\"{StaticResource CheckBoxMouseOverBrush}\" Margin=\"1\" Opacity=\"0\" />\r\n                                <Ellipse x:Name=\"PressedEllipse\" Stroke=\"{StaticResource BlackBrush}\" Margin=\"1\" Opacity=\"0\" />\r\n                                <Ellipse x:Name=\"CheckIcon\" Fill=\"{StaticResource BlackBrush}\" Height=\"7\" Opacity=\"0\" Width=\"7\"/>\r\n                                <Ellipse x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\"  Opacity=\"0\" />\r\n                                <Grid x:Name=\"ValidationErrorElement\" ToolTipService.PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Visibility=\"Collapsed\">\r\n                                    <ToolTipService.ToolTip>\r\n                                        <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                            <ToolTip.Triggers>\r\n                                                <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                                    <BeginStoryboard>\r\n                                                        <Storyboard>\r\n                                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                                <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                    <DiscreteObjectKeyFrame.Value>\r\n                                                                        <sys:Boolean>true</sys:Boolean>\r\n                                                                    </DiscreteObjectKeyFrame.Value>\r\n                                                                </DiscreteObjectKeyFrame>\r\n                                                            </ObjectAnimationUsingKeyFrames>\r\n                                                        </Storyboard>\r\n                                                    </BeginStoryboard>\r\n                                                </EventTrigger>\r\n                                            </ToolTip.Triggers>\r\n                                        </ToolTip>\r\n                                    </ToolTipService.ToolTip>\r\n                                    <Ellipse Height=\"14\" Stroke=\"{StaticResource ControlsValidationBrush}\" StrokeThickness=\"1\" Width=\"14\"/>\r\n                                    <Ellipse Fill=\"{StaticResource ControlsValidationBrush}\" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,-2,-1,0\" VerticalAlignment=\"Top\" Width=\"4\"/>\r\n                                    <Ellipse Fill=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-5,-4,0\" VerticalAlignment=\"Top\" Width=\"10\"/>\r\n                                </Grid>\r\n                            </Grid>\r\n                        </Grid>\r\n                        <ContentControl Grid.Column=\"1\">\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        </ContentControl>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ProgressBar Style-->\r\n    <Style TargetType=\"ProgressBar\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource HighlightBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush4}\"/>\r\n        <Setter Property=\"Maximum\" Value=\"100\"/>\r\n        <Setter Property=\"Height\" Value=\"10\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ProgressBar\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Determinate\"/>\r\n                                <VisualState x:Name=\"Indeterminate\">\r\n                                    <Storyboard RepeatBehavior=\"Forever\">\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"IndeterminateRoot\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"DeterminateRoot\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(Shape.Fill).(LinearGradientBrush.Transform).(TransformGroup.Children)[0].X\" Storyboard.TargetName=\"IndeterminateGradientFill\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:.35\" Value=\"20\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ProgressBarTrack\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\"/>\r\n                        <Grid x:Name=\"ProgressBarRootGrid\">\r\n                            <Grid x:Name=\"IndeterminateRoot\" Visibility=\"Collapsed\">\r\n                                <Rectangle x:Name=\"IndeterminateSolidFill\" Margin=\"{TemplateBinding BorderThickness}\" Opacity=\"1\" RenderTransformOrigin=\"0.5,0.5\" StrokeThickness=\"0\" Fill=\"{StaticResource BrandingBrush}\"/>\r\n                                <Rectangle x:Name=\"IndeterminateGradientFill\" Margin=\"{TemplateBinding BorderThickness}\" Opacity=\"0.7\" StrokeThickness=\"1\">\r\n                                    <Rectangle.Fill>\r\n                                        <LinearGradientBrush EndPoint=\"0,1\" MappingMode=\"Absolute\" SpreadMethod=\"Repeat\" StartPoint=\"20,1\">\r\n                                            <LinearGradientBrush.Transform>\r\n                                                <TransformGroup>\r\n                                                    <TranslateTransform X=\"0\"/>\r\n                                                    <SkewTransform AngleX=\"-30\"/>\r\n                                                </TransformGroup>\r\n                                            </LinearGradientBrush.Transform>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor1}\" Offset=\"0\"/>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor2}\" Offset=\"0.651\"/>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor3}\" Offset=\"0.093\"/>\r\n                                            <GradientStop Color=\"{StaticResource ProgressIndeterminateColor4}\" Offset=\"0.548\"/>\r\n                                        </LinearGradientBrush>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                            </Grid>\r\n                            <Grid x:Name=\"DeterminateRoot\" Margin=\"1\">\r\n                                <Border x:Name=\"ProgressBarIndicator\" Background=\"{StaticResource BrandingBrush}\" HorizontalAlignment=\"Left\" Margin=\"-1\">\r\n                                    <Rectangle x:Name=\"GradientFill\" Opacity=\"0.7\" Visibility=\"Collapsed\">\r\n                                        <Rectangle.Fill>\r\n                                            <LinearGradientBrush EndPoint=\"0,1\" MappingMode=\"Absolute\" SpreadMethod=\"Repeat\" StartPoint=\"20,1\">\r\n                                                <LinearGradientBrush.Transform>\r\n                                                    <TransformGroup>\r\n                                                        <TranslateTransform X=\"0\"/>\r\n                                                        <SkewTransform AngleX=\"-30\"/>\r\n                                                    </TransformGroup>\r\n                                                </LinearGradientBrush.Transform>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor1}\" Offset=\"0\"/>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor2}\" Offset=\"0.651\"/>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor3}\" Offset=\"0.093\"/>\r\n                                                <GradientStop Color=\"{StaticResource ProgressIndeterminateColor4}\" Offset=\"0.548\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Rectangle.Fill>\r\n                                    </Rectangle>\r\n                                </Border>\r\n                            </Grid>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n    </Style>\r\n\r\n    <!--CheckBox Style-->\r\n    <Style TargetType=\"CheckBox\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource CheckBoxBackgroundBrush}\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"100\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,1,0,0\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource CheckBoxBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"CheckBox\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"grid\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualState x:Name=\"Checked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckIcon\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                                <VisualState x:Name=\"Indeterminate\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"IndeterminateIcon\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"16\"/>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n                            <Grid x:Name=\"grid\" Height=\"14\" Width=\"14\" Opacity=\"0.7\">\r\n                                <Rectangle x:Name=\"Background\" Fill=\"{TemplateBinding Background}\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" />\r\n                                <Rectangle x:Name=\"MouseOverRectangle\" Stroke=\"{StaticResource CheckBoxMouseOverBrush}\" Opacity=\"0\" />\r\n                                <Rectangle x:Name=\"PressedRectangle\" Stroke=\"{StaticResource BlackBrush}\" Opacity=\"0\" />\r\n                                <Path Opacity=\"0\" x:Name=\"CheckIcon\" Data=\"M49.4375,110.4375 L51.4995,112.812 L56.3745,107.24883\" HorizontalAlignment=\"Center\" Height=\"7.6\" Stretch=\"Fill\" Stroke=\"Black\" UseLayoutRounding=\"False\" VerticalAlignment=\"Center\" Width=\"8.9\" StrokeStartLineCap=\"Triangle\" StrokeEndLineCap=\"Triangle\" StrokeThickness=\"2\"/>\r\n                                <Rectangle x:Name=\"IndeterminateIcon\" Height=\"8\" Width=\"8\" Opacity=\"0\">\r\n                                    <Rectangle.Fill>\r\n                                        <SolidColorBrush Color=\"{StaticResource Gray3}\"/>\r\n                                    </Rectangle.Fill>\r\n                                </Rectangle>\r\n                                <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\" />\r\n                            </Grid>\r\n                            <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"1\" CornerRadius=\"1\" Margin=\"1\" ToolTipService.PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Visibility=\"Collapsed\">\r\n                                <ToolTipService.ToolTip>\r\n                                    <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                        <ToolTip.Triggers>\r\n                                            <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                                <BeginStoryboard>\r\n                                                    <Storyboard>\r\n                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                                <DiscreteObjectKeyFrame.Value>\r\n                                                                    <sys:Boolean>true</sys:Boolean>\r\n                                                                </DiscreteObjectKeyFrame.Value>\r\n                                                            </DiscreteObjectKeyFrame>\r\n                                                        </ObjectAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </BeginStoryboard>\r\n                                            </EventTrigger>\r\n                                        </ToolTip.Triggers>\r\n                                    </ToolTip>\r\n                                </ToolTipService.ToolTip>\r\n                                <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                    <Path Data=\"M 1,0 L5,0 A 2,2 90 0 1 7,2 L7,6 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"0,3,0,0\"/>\r\n                                    <Path Data=\"M 0,0 L2,0 L 7,5 L7,7\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"0,3,0,0\"/>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Grid>\r\n                        <ContentControl Grid.Column=\"1\">\r\n                            <ContentControl.Foreground>\r\n                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                            </ContentControl.Foreground>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        </ContentControl>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ListBoxItem Style-->\r\n    <Style TargetType=\"ListBoxItem\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Padding\" Value=\"10\"/>\r\n        <Setter Property=\"Margin\" Value=\"0\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Local\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ListBoxItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\".55\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"fillColor\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\" Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"contentControl\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\".55\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"contentPresenter\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\" Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"contentControl\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"fillColor\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"SelectedUnfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"fillColor2\" />\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource HoverForegroundColor}\" Storyboard.TargetProperty=\"(Control.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"contentControl\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"fillColor\" Fill=\"{StaticResource HighlightBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\"/>\r\n                        <Rectangle x:Name=\"fillColor2\" Fill=\"{StaticResource HighlightBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\" RadiusY=\"1\" RadiusX=\"1\"/>\r\n                        <ContentControl x:Name=\"contentControl\">\r\n                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"7\"/>\r\n                        </ContentControl>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ListBox Style -->\r\n    <Style TargetType=\"ListBox\">\r\n        <Setter Property=\"Padding\" Value=\"1\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"ListBox\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <sys:Boolean>True</sys:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                            <ScrollViewer x:Name=\"ScrollViewer\" BorderBrush=\"Transparent\" BorderThickness=\"0\" Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\" TabNavigation=\"{TemplateBinding TabNavigation}\">\r\n                                <ItemsPresenter/>\r\n                            </ScrollViewer>\r\n                        </Border>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ControlsValidationBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <sys:Boolean>true</sys:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"-1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"-1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n    </Style>\r\n\r\n    <!--Slider Style-->\r\n    <Style x:Key=\"HorizontalSliderThumb\" TargetType=\"Thumb\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush7}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Thumb\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border Background=\"{StaticResource BlackBrush}\" BorderThickness=\"0,0,1,0\" BorderBrush=\"{StaticResource ControlBackgroundBrush}\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--VerticalSliderThumb-->\r\n    <Style x:Key=\"VerticalSliderThumb\" TargetType=\"Thumb\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Thumb\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border Background=\"{StaticResource BlackBrush}\" BorderThickness=\"0,1,0,0\" BorderBrush=\"{StaticResource ControlBackgroundBrush}\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n    <!--RepeatButtonTemplate-->\r\n    <ControlTemplate x:Key=\"RepeatButtonTemplate\">\r\n        <Grid x:Name=\"Root\" Opacity=\"0\"/>\r\n    </ControlTemplate>\r\n    <!--HorizontalTrackLargeDecrease-->\r\n    <ControlTemplate x:Key=\"HorizontalTrackLargeDecrease\" TargetType=\"RepeatButton\">\r\n        <Grid x:Name=\"Root\" Margin=\"0,-1,0,0\">\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"CommonStates\">\r\n                    <VisualState x:Name=\"Normal\"/>\r\n                    <VisualState x:Name=\"MouseOver\"/>\r\n                    <VisualState x:Name=\"Pressed\"/>\r\n                    <VisualState x:Name=\"Disabled\"/>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Rectangle Height=\"3\" Margin=\"0,1,0,0\">\r\n                <Rectangle.Fill>\r\n                    <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                </Rectangle.Fill>\r\n            </Rectangle>\r\n        </Grid>\r\n    </ControlTemplate>\r\n    <!--VerticalTrackLargeDecrease-->\r\n    <ControlTemplate x:Key=\"VerticalTrackLargeDecrease\" TargetType=\"RepeatButton\">\r\n        <Grid x:Name=\"Root\" Margin=\"0,0,0,0\" >\r\n            <Rectangle Width=\"3\">\r\n                <Rectangle.Fill>\r\n                    <SolidColorBrush Color=\"{StaticResource BlackColor}\"/>\r\n                </Rectangle.Fill>\r\n            </Rectangle>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--Slider Style-->\r\n    <Style TargetType=\"Slider\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Maximum\" Value=\"10\"/>\r\n        <Setter Property=\"Minimum\" Value=\"0\"/>\r\n        <Setter Property=\"Value\" Value=\"0\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ControlBorderBrush}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Slider\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <ControlTemplate x:Key=\"RepeatButtonTemplate\">\r\n                                <Grid x:Name=\"Root\" Opacity=\"0\"/>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"HorizontalTrackRectangleDisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ThumbDisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"VerticalTrackRectangleDisabledOverlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"ThumbDisabledOverlayVertical\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"HorizontalTrackRectangleDisabledOverlay_Copy\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"VerticalTrackRectangleDisabledOverlay_Copy\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"HorizontalTemplate\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Rectangle x:Name=\"TrackRectangle\" Grid.ColumnSpan=\"3\" Grid.Column=\"0\" Height=\"3\" Margin=\"5,0\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{StaticResource SliderTrackBrush}\"/>\r\n                            <Rectangle x:Name=\"HorizontalTrackRectangleDisabledOverlay\" Grid.ColumnSpan=\"3\" Grid.Column=\"0\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Height=\"3\" Margin=\"5,0,5,0\" Opacity=\".55\" Visibility=\"Collapsed\"/>\r\n                            <RepeatButton x:Name=\"HorizontalTrackLargeChangeDecreaseRepeatButton\" Grid.Column=\"0\" Height=\"18\" IsTabStop=\"False\" Template=\"{StaticResource HorizontalTrackLargeDecrease}\"/>\r\n                            <Rectangle x:Name=\"HorizontalTrackRectangleDisabledOverlay_Copy\" Grid.ColumnSpan=\"1\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Height=\"4\" Opacity=\"0.7\" Visibility=\"Collapsed\" />\r\n                            <Thumb x:Name=\"HorizontalThumb\" Grid.Column=\"1\" Height=\"10\" IsTabStop=\"True\" Width=\"4\" Style=\"{StaticResource HorizontalSliderThumb}\"/>\r\n                            <Rectangle x:Name=\"ThumbDisabledOverlay\" Grid.Column=\"1\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0.25\" Visibility=\"Collapsed\" Width=\"4\" Height=\"10\"/>\r\n                            <RepeatButton x:Name=\"HorizontalTrackLargeChangeIncreaseRepeatButton\" Grid.Column=\"2\" Height=\"18\" IsTabStop=\"False\" Template=\"{StaticResource RepeatButtonTemplate}\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"VerticalTemplate\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <Rectangle x:Name=\"TrackRectangle_Vertical\" Grid.ColumnSpan=\"1\" Margin=\"0,5\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{StaticResource SliderTrackBrush}\" Grid.RowSpan=\"3\" Grid.Row=\"0\" Width=\"3\"/>\r\n                            <Rectangle x:Name=\"VerticalTrackRectangleDisabledOverlay\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Margin=\"0,5,0,5\" Opacity=\".55\" Grid.Row=\"0\" Grid.RowSpan=\"3\" Width=\"3\" Visibility=\"Collapsed\"/>\r\n                            <RepeatButton x:Name=\"VerticalTrackLargeChangeDecreaseRepeatButton\" IsTabStop=\"False\" Grid.Row=\"2\" Width=\"17\"  Template=\"{StaticResource VerticalTrackLargeDecrease}\"/>\r\n                            <Rectangle x:Name=\"VerticalTrackRectangleDisabledOverlay_Copy\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0.7\" Grid.Row=\"2\" Grid.RowSpan=\"1\" Width=\"5\" Visibility=\"Collapsed\"/>\r\n                            <Thumb x:Name=\"VerticalThumb\" Height=\"4\" IsTabStop=\"True\" Grid.Row=\"1\" Width=\"10\" Style=\"{StaticResource VerticalSliderThumb}\"/>\r\n                            <RepeatButton x:Name=\"VerticalTrackLargeChangeIncreaseRepeatButton\" IsTabStop=\"False\" Grid.Row=\"0\" Template=\"{StaticResource RepeatButtonTemplate}\" Width=\"17\"/>\r\n                            <Rectangle x:Name=\"ThumbDisabledOverlayVertical\" Fill=\"{StaticResource DisabledWhiteColorBrush}\" Opacity=\"0.25\" Width=\"10\" Height=\"4\" Grid.Row=\"1\" Visibility=\"Collapsed\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n\r\n</ResourceDictionary>\r\n"
  },
  {
    "path": "themes/assets/metro/fonts.xaml",
    "content": "<ResourceDictionary\r\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n        xmlns:navigation=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation\"\r\n        xmlns:my=\"clr-namespace:System;assembly=mscorlib\" >\r\n\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"Brushes.xaml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n\r\n    <FontFamily x:Key=\"HeaderFontFamily\">Segoe UI Light, Lucida Sans Unicode, Verdana</FontFamily>\r\n    <FontFamily x:Key=\"ContentFontFamily\">Segoe UI, Lucida Sans Unicode, Verdana</FontFamily>\r\n\r\n    <my:Double x:Key=\"ApplicationNameFontSize\">50</my:Double>\r\n    <my:Double x:Key=\"HeaderFontSize\">21.333</my:Double>\r\n    <my:Double x:Key=\"NavigationFontSize\">28</my:Double>\r\n\r\n    <my:Double x:Key=\"ContentFontSize\">14</my:Double>\r\n    <my:Double x:Key=\"HyperlinkFontSize\">14</my:Double>\r\n    <my:Double x:Key=\"LabelFontSize\">12</my:Double>\r\n    <my:Double x:Key=\"ControlTitleFontSize\">16</my:Double>\r\n    <my:Double x:Key=\"ControlTitleBigFontSize\">18</my:Double>\r\n    <my:Double x:Key=\"ControlContentFontSize\">10</my:Double>\r\n\r\n\r\n</ResourceDictionary>\r\n"
  },
  {
    "path": "themes/assets/metro/sdk.xaml",
    "content": "<ResourceDictionary\r\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n        xmlns:controls=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls\"\r\n        xmlns:System=\"clr-namespace:System;assembly=mscorlib\"\r\n        xmlns:dataInput=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input\"\r\n        xmlns:input=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input\"\r\n        xmlns:data=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data\"\r\n        xmlns:dataPrimitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data\"\r\n        xmlns:System_Windows_Controls_Primitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls\"\r\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n        xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n        xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n        xmlns:toolkit=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit\"\r\n        mc:Ignorable=\"d\">\r\n\r\n    <!-- Global Settings-->\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"Brushes.xaml\"/>\r\n        <ResourceDictionary Source=\"Fonts.xaml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n\r\n\r\n    <!--DataGridCell Style-->\r\n    <Style TargetType=\"data:DataGridCell\">\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"data:DataGridCell\">\r\n                    <Grid x:Name=\"Root\" Background=\"{TemplateBinding Background}\">\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition/>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CurrentStates\">\r\n                                <VisualState x:Name=\"Regular\"/>\r\n                                <VisualState x:Name=\"Current\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisual\" From=\"0.3\"/>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"Invalid\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"InvalidVisualElement\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(Fill).Color\" Storyboard.TargetName=\"FocusVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"FocusVisual\" HorizontalAlignment=\"Stretch\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\" VerticalAlignment=\"Stretch\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" Grid.Column=\"0\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource NormalBrush}\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" Grid.Column=\"0\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <ContentPresenter ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        <Rectangle x:Name=\"InvalidVisualElement\" HorizontalAlignment=\"Stretch\" IsHitTestVisible=\"False\" Opacity=\"0\" Stroke=\"{StaticResource ControlsValidationBrush}\" StrokeThickness=\"1\" VerticalAlignment=\"Stretch\"/>\r\n                        <Rectangle x:Name=\"RightGridLine\" Grid.Column=\"1\" VerticalAlignment=\"Stretch\" Width=\"1\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataGridColumnHeader Style-->\r\n    <Style TargetType=\"dataPrimitives:DataGridColumnHeader\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ControlTitleBigFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"SeparatorBrush\" Value=\"{StaticResource SeperatorBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,5,4,5\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"dataPrimitives:DataGridColumnHeader\">\r\n                    <Border BorderBrush=\"Black\" BorderThickness=\"0,1\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverLeftRightSeperator\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedLeftRightSeperator\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SortStates\">\r\n                                <VisualState x:Name=\"Unsorted\"/>\r\n                                <VisualState x:Name=\"SortAscending\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"SortDescending\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"-.9\" Storyboard.TargetProperty=\"(RenderTransform).ScaleY\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"Root\" Height=\"44\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Rectangle x:Name=\"BackgroundRectangle\" Grid.ColumnSpan=\"2\" Stretch=\"Fill\" Fill=\"{StaticResource WhiteBrush}\"/>\r\n\r\n                            <Rectangle x:Name=\"MouseOverRectangle\" Grid.ColumnSpan=\"2\" Opacity=\"0\">\r\n                                <Rectangle.Fill>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray8}\"/>\r\n                                </Rectangle.Fill>\r\n                            </Rectangle>\r\n                            <Rectangle x:Name=\"PressedRectangle\" Grid.ColumnSpan=\"2\" Opacity=\"0\">\r\n                                <Rectangle.Fill>\r\n                                    <SolidColorBrush Color=\"{StaticResource Gray8}\"/>\r\n                                </Rectangle.Fill>\r\n                            </Rectangle>\r\n                            <Grid HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <ContentPresenter Content=\"{TemplateBinding Content}\"/>\r\n                                <Path x:Name=\"SortIcon\" Grid.Column=\"1\" Data=\"F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z \" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Left\" Margin=\"4,0,0,0\" Opacity=\"0\" RenderTransformOrigin=\".5,.5\" Stretch=\"Uniform\" VerticalAlignment=\"Center\" Width=\"8\">\r\n                                    <Path.RenderTransform>\r\n                                        <ScaleTransform ScaleY=\".9\" ScaleX=\".9\"/>\r\n                                    </Path.RenderTransform>\r\n                                </Path>\r\n                            </Grid>\r\n                            <Rectangle x:Name=\"VerticalSeparator\" Grid.Column=\"1\" Fill=\"{TemplateBinding SeparatorBrush}\" Visibility=\"{TemplateBinding SeparatorVisibility}\" VerticalAlignment=\"Stretch\" Width=\"1\" Opacity=\"0\"/>\r\n                            <Border x:Name=\"MouseOverLeftRightSeperator\" Grid.ColumnSpan=\"2\" BorderThickness=\"1,0\" BorderBrush=\"{StaticResource SeperatorBrush}\" Margin=\"-1,0,0,0\" Opacity=\"0\"/>\r\n                            <Border x:Name=\"PressedLeftRightSeperator\" Grid.ColumnSpan=\"2\" Opacity=\"0\" BorderBrush=\"{StaticResource SeperatorBrush}\" BorderThickness=\"1,0\" Margin=\"-1,0,0,0\"/>\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataGridRow Style-->\r\n    <Style TargetType=\"data:DataGridRow\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"data:DataGridRow\">\r\n                    <dataPrimitives:DataGridFrozenGrid x:Name=\"Root\">\r\n                        <dataPrimitives:DataGridFrozenGrid.Resources>\r\n                            <Storyboard x:Key=\"DetailsVisibleTransition\">\r\n                                <DoubleAnimation Duration=\"00:00:0.1\" Storyboard.TargetProperty=\"ContentHeight\" Storyboard.TargetName=\"DetailsPresenter\"/>\r\n                            </Storyboard>\r\n                        </dataPrimitives:DataGridFrozenGrid.Resources>\r\n                        <dataPrimitives:DataGridFrozenGrid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                            <ColumnDefinition/>\r\n                        </dataPrimitives:DataGridFrozenGrid.ColumnDefinitions>\r\n                        <dataPrimitives:DataGridFrozenGrid.RowDefinitions>\r\n                            <RowDefinition/>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                        </dataPrimitives:DataGridFrozenGrid.RowDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"NormalAlternatingRow\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NormalSelected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MouseOverSelected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"UnfocusedSelected\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"Invalid\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"InvalidVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\" Grid.Column=\"0\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\"/>\r\n                        <dataPrimitives:DataGridRowHeader x:Name=\"RowHeader\" dataPrimitives:DataGridFrozenGrid.IsFrozen=\"True\" Grid.RowSpan=\"3\"/>\r\n                        <dataPrimitives:DataGridCellsPresenter x:Name=\"CellsPresenter\" Grid.Column=\"1\" dataPrimitives:DataGridFrozenGrid.IsFrozen=\"True\"/>\r\n                        <dataPrimitives:DataGridDetailsPresenter x:Name=\"DetailsPresenter\" Grid.Column=\"1\" Grid.Row=\"1\"/>\r\n                        <Rectangle x:Name=\"BottomGridLine\" Grid.Column=\"1\" HorizontalAlignment=\"Stretch\" Height=\"1\" Grid.Row=\"2\"/>\r\n                    </dataPrimitives:DataGridFrozenGrid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataGridRowHeader Style-->\r\n    <Style TargetType=\"dataPrimitives:DataGridRowHeader\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentLightLightBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"SeparatorBrush\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"SeparatorVisibility\" Value=\"Collapsed\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"dataPrimitives:DataGridRowHeader\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                            <ColumnDefinition/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition/>\r\n                            <RowDefinition/>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                        </Grid.RowDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MouseOverCurrentRowSelected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NormalCurrentRow\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NormalSelected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NormalEditingRow\">\r\n                                    <Storyboard>\r\n\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"RowValid\"/>\r\n                                <VisualState x:Name=\"RowInvalid\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"BackgroundRectangle\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"RowInvalidVisualElement\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Fill).(GradientStops)[0].Color\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\" Storyboard.TargetName=\"CurrentRowGlyph\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Fill).(GradientStops)[0].Color\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Fill).(GradientStops)[1].Color\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource ValidationColor5}\" Storyboard.TargetProperty=\"(Fill).(GradientStops)[2].Color\" Storyboard.TargetName=\"EditingRowGlyph\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{StaticResource WhiteBrush}\" BorderThickness=\"1,0,1,0\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"3\">\r\n                            <Grid>\r\n                                <Rectangle x:Name=\"RowInvalidVisualElement\" Grid.ColumnSpan=\"2\" Fill=\"{StaticResource ValidationSummaryFillBrush2}\" Opacity=\"0\" Grid.RowSpan=\"3\" Stretch=\"Fill\"/>\r\n                                <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"3\" Grid.Column=\"0\"/>\r\n                                <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"3\" Grid.Column=\"0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"HorizontalSeparator\" Grid.ColumnSpan=\"2\" Fill=\"{TemplateBinding SeparatorBrush}\" HorizontalAlignment=\"Stretch\" Height=\"1\" Margin=\"1,0,1,0\" Grid.Row=\"2\" Visibility=\"{TemplateBinding SeparatorVisibility}\"/>\r\n                        <ContentPresenter Content=\"{TemplateBinding Content}\" Grid.Column=\"1\" HorizontalAlignment=\"Center\" Grid.RowSpan=\"2\" VerticalAlignment=\"Center\"/>\r\n                        <Path x:Name=\"CurrentRowGlyph\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" HorizontalAlignment=\"Center\" Height=\"10\" Margin=\"8,0,8,0\" Opacity=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\">\r\n                            <Path.Fill>\r\n                                <LinearGradientBrush EndPoint=\"0,1.75\" StartPoint=\"0,-0.150000005960464\">\r\n                                    <LinearGradientBrush.RelativeTransform>\r\n                                        <MatrixTransform/>\r\n                                    </LinearGradientBrush.RelativeTransform>\r\n                                    <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0\"/>\r\n                                    <GradientStop Color=\"{StaticResource HighlightLightColor}\" Offset=\"1\"/>\r\n                                </LinearGradientBrush>\r\n                            </Path.Fill>\r\n                        </Path>\r\n                        <Path x:Name=\"EditingRowGlyph\" Fill=\"{StaticResource HighlightLightBrush}\" Data=\"F1 M 511.047,352.682L 511.047,342.252L 517.145,347.467L 511.047,352.682 Z \" HorizontalAlignment=\"Center\" Height=\"10\" Margin=\"8,0,8,0\" Opacity=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataGrid Style-->\r\n    <Style TargetType=\"data:DataGrid\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"200\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"RowBackground\" Value=\"Transparent\"/>\r\n        <Setter Property=\"AlternatingRowBackground\" Value=\"Transparent\"/>\r\n        <Setter Property=\"HeadersVisibility\" Value=\"Column\"/>\r\n        <Setter Property=\"HorizontalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"VerticalScrollBarVisibility\" Value=\"Auto\"/>\r\n        <Setter Property=\"SelectionMode\" Value=\"Extended\"/>\r\n        <Setter Property=\"CanUserReorderColumns\" Value=\"True\"/>\r\n        <Setter Property=\"CanUserResizeColumns\" Value=\"True\"/>\r\n        <Setter Property=\"CanUserSortColumns\" Value=\"True\"/>\r\n        <Setter Property=\"AutoGenerateColumns\" Value=\"True\"/>\r\n        <Setter Property=\"RowDetailsVisibilityMode\" Value=\"VisibleWhenSelected\"/>\r\n        <Setter Property=\"DragIndicatorStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ContentControl\">\r\n                    <Setter Property=\"Foreground\" Value=\"{StaticResource TransparentLightLightBrush}\"/>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"ContentControl\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"SortStates\">\r\n                                            <VisualState x:Name=\"Unsorted\"/>\r\n                                            <VisualState x:Name=\"SortAscending\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"SortDescending\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"-.9\" Storyboard.TargetProperty=\"(RenderTransform).ScaleY\" Storyboard.TargetName=\"SortIcon\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Rectangle x:Name=\"BackgroundRectangle\" Grid.ColumnSpan=\"2\" Fill=\"{StaticResource TransparentDarkDarkDarkBrush}\" Stretch=\"Fill\"/>\r\n                                    <Rectangle x:Name=\"BackgroundGradient\" Grid.ColumnSpan=\"2\"  Fill=\"{StaticResource ControlBackgroundBrush}\" Opacity=\"0\" Stretch=\"Fill\"/>\r\n                                    <Grid HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                        <Grid.ColumnDefinitions>\r\n                                            <ColumnDefinition/>\r\n                                            <ColumnDefinition Width=\"Auto\"/>\r\n                                        </Grid.ColumnDefinitions>\r\n                                        <ContentPresenter Content=\"{TemplateBinding Content}\"/>\r\n                                        <Path x:Name=\"SortIcon\" Grid.Column=\"1\" Data=\"F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z \" Fill=\"{StaticResource GrayBrush10}\" HorizontalAlignment=\"Left\" Margin=\"4,0,0,0\" Opacity=\"0\" RenderTransformOrigin=\".5,.5\" Stretch=\"Uniform\" VerticalAlignment=\"Center\" Width=\"8\">\r\n                                            <Path.RenderTransform>\r\n                                                <ScaleTransform ScaleY=\".9\" ScaleX=\".9\"/>\r\n                                            </Path.RenderTransform>\r\n                                        </Path>\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"DropLocationIndicatorStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ContentControl\">\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush3}\"/>\r\n                    <Setter Property=\"Width\" Value=\"2\"/>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"ContentControl\">\r\n                                <Rectangle Fill=\"{TemplateBinding Background}\" Height=\"{TemplateBinding Height}\" Width=\"{TemplateBinding Width}\"/>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"GridLinesVisibility\" Value=\"None\"/>\r\n        <Setter Property=\"HorizontalGridLinesBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"True\"/>\r\n        <Setter Property=\"VerticalGridLinesBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"data:DataGrid\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                            <Grid x:Name=\"Root\" Background=\"{TemplateBinding Background}\">\r\n                                <Grid.Resources>\r\n                                    <ControlTemplate x:Key=\"TopLeftHeaderTemplate\" TargetType=\"dataPrimitives:DataGridColumnHeader\">\r\n                                        <Grid x:Name=\"Root\">\r\n                                            <Grid.RowDefinitions>\r\n                                                <RowDefinition/>\r\n                                                <RowDefinition/>\r\n                                                <RowDefinition Height=\"Auto\"/>\r\n                                            </Grid.RowDefinitions>\r\n                                            <Border BorderBrush=\"{StaticResource SeperatorBrush}\" Background=\"{StaticResource WhiteBrush}\" Grid.RowSpan=\"2\"/>\r\n                                            <Rectangle Fill=\"{StaticResource GrayBrush4}\" Height=\"1\" Grid.RowSpan=\"2\" StrokeThickness=\"1\" VerticalAlignment=\"Bottom\" Width=\"Auto\" Visibility=\"Collapsed\"/>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                    <ControlTemplate x:Key=\"TopRightHeaderTemplate\" TargetType=\"dataPrimitives:DataGridColumnHeader\">\r\n                                        <Grid x:Name=\"RootElement\">\r\n                                            <Grid.RowDefinitions>\r\n                                                <RowDefinition/>\r\n                                                <RowDefinition/>\r\n                                                <RowDefinition Height=\"Auto\"/>\r\n                                            </Grid.RowDefinitions>\r\n                                            <Border Background=\"{StaticResource WhiteBrush}\" Grid.RowSpan=\"2\"/>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                </Grid.Resources>\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                    <ColumnDefinition/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition/>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <dataPrimitives:DataGridColumnHeader x:Name=\"TopLeftCornerHeader\" Template=\"{StaticResource TopLeftHeaderTemplate}\" Width=\"22\"/>\r\n                                <dataPrimitives:DataGridColumnHeadersPresenter x:Name=\"ColumnHeadersPresenter\" Grid.Column=\"1\"/>\r\n                                <dataPrimitives:DataGridColumnHeader x:Name=\"TopRightCornerHeader\" Grid.Column=\"2\" Template=\"{StaticResource TopRightHeaderTemplate}\"/>\r\n                                <Rectangle x:Name=\"ColumnHeadersAndRowsSeparator\" Grid.ColumnSpan=\"3\" Fill=\"{StaticResource GrayBrush2}\" Height=\"1\" StrokeThickness=\"1\" VerticalAlignment=\"Bottom\" Width=\"Auto\" Visibility=\"Collapsed\"/>\r\n                                <dataPrimitives:DataGridRowsPresenter x:Name=\"RowsPresenter\" Grid.ColumnSpan=\"2\" Grid.Row=\"1\"/>\r\n                                <Rectangle x:Name=\"BottomRightCorner\" Grid.Column=\"2\" Fill=\"{TemplateBinding Background}\" Grid.Row=\"2\"/>\r\n                                <Rectangle x:Name=\"BottomLeftCorner\" Grid.ColumnSpan=\"2\" Fill=\"{TemplateBinding Background}\" Grid.Row=\"2\"/>\r\n                                <ScrollBar x:Name=\"VerticalScrollbar\" Grid.Column=\"2\" Margin=\"0,-1,-3,-1\" Orientation=\"Vertical\" Grid.Row=\"1\" Width=\"18\" />\r\n                                <Grid Grid.Column=\"1\" Grid.Row=\"2\">\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <Rectangle x:Name=\"FrozenColumnScrollBarSpacer\"/>\r\n                                    <ScrollBar x:Name=\"HorizontalScrollbar\" Grid.Column=\"1\" Height=\"18\" Margin=\"-1,0,-1,-3\" Orientation=\"Horizontal\" />\r\n                                </Grid>\r\n                                <dataInput:ValidationSummary x:Name=\"ValidationSummary\" Grid.ColumnSpan=\"3\" Filter=\"ObjectErrors\" MaxHeight=\"90\" Grid.Row=\"3\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"2\" HorizontalAlignment=\"Stretch\" Height=\"Auto\" IsHitTestVisible=\"False\" Opacity=\"0\" VerticalAlignment=\"Stretch\" Width=\"Auto\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataPagerPageButton Style-->\r\n    <Style x:Key=\"ImageButton\" TargetType=\"Button\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush3}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"3\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Button\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition From=\"Normal\" GeneratedDuration=\"0:0:0.3\" To=\"MouseOver\"/>\r\n                                    <VisualTransition From=\"MouseOver\" GeneratedDuration=\"0:0:0.3\" To=\"Normal\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ellipse\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.4\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ellipse\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.4\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.2\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ellipse\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.2\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        <Ellipse x:Name=\"ellipse\" Stroke=\"{StaticResource CheckBoxMouseOverBrush}\" Opacity=\"0.3\" Fill=\"Transparent\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DataPager Style-->\r\n    <Style TargetType=\"data:DataPager\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Right\"/>\r\n        <Setter Property=\"NumericButtonStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ToggleButton\">\r\n                    <Setter Property=\"MinHeight\" Value=\"20\"/>\r\n                    <Setter Property=\"MinWidth\" Value=\"20\"/>\r\n                    <Setter Property=\"HorizontalAlignment\" Value=\"Right\"/>\r\n                    <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n                    <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                    <Setter Property=\"Padding\" Value=\"1\"/>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"ToggleButton\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"OuterBtnBorder\"/>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray1}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"OuterBtnBorder\"/>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray1}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"contentPresenter\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CheckedStateOuterBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border x:Name=\"CheckedStateOuterBorder\" BorderBrush=\"{StaticResource GrayBrush2}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource GrayBrush8}\" CornerRadius=\"1\" Opacity=\"0\"/>\r\n                                    <Border x:Name=\"OuterBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"1\">\r\n                                        <Border x:Name=\"InnerBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"1\" Margin=\"0\">\r\n                                            <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Margin=\"2\"/>\r\n                                        </Border>\r\n                                    </Border>\r\n                                    <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"1\" Margin=\"1\" Opacity=\"0\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"data:DataPager\">\r\n                    <Grid x:Name=\"Root\" Background=\"Transparent\">\r\n                        <Grid.Resources>\r\n                            <SolidColorBrush x:Key=\"BackgroundColor\" Color=\"{StaticResource TransparentBlackColor}\"/>\r\n                            <SolidColorBrush x:Key=\"ForegroundColor\" Color=\"{StaticResource BlackColor}\"/>\r\n                            <SolidColorBrush x:Key=\"BorderBrushColor\" Color=\"{StaticResource WhiteColor}\"/>\r\n                            <ControlTemplate x:Key=\"ButtonTemplate\" TargetType=\"Button\">\r\n                                <Grid>\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray4}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"OuterBtnBorder\"/>\r\n                                                    <ColorAnimation Duration=\"0\" To=\"{StaticResource TransparentWhiteColor}\" Storyboard.TargetProperty=\"(BorderBrush).Color\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"path\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border x:Name=\"OuterBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"1\">\r\n                                        <Border x:Name=\"InnerBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2\">\r\n                                            <ContentPresenter x:Name=\"path\" Content=\"{TemplateBinding Content}\"/>\r\n                                        </Border>\r\n                                    </Border>\r\n                                    <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"2\" Margin=\"1\" Opacity=\"0\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <Style x:Key=\"PagingTextBoxStyle\" TargetType=\"TextBox\">\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"Padding\" Value=\"2, 2, 2, -1\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"TextBox\">\r\n                                            <Grid x:Name=\"RootElement\">\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard/>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"ReadOnly\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ReadOnlyVisualElement\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                                                    <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Rectangle x:Name=\"Base\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{TemplateBinding Background}\" Opacity=\"1\" />\r\n                                                <Rectangle x:Name=\"FocusRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                                                <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                                                <Grid>\r\n                                                    <Border x:Name=\"ReadOnlyVisualElement\" Background=\"{StaticResource TransparentLightLightBrush}\" Opacity=\"0\"/>\r\n                                                    <Border x:Name=\"MouseOverBorder\" BorderBrush=\"Transparent\" BorderThickness=\"1\">\r\n                                                        <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" IsTabStop=\"False\" Margin=\"0,0,0,2\" Padding=\"{TemplateBinding Padding}\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\"/>\r\n                                                    </Border>\r\n                                                </Grid>\r\n\r\n                                                <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"{StaticResource GrayBrush12}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource GrayBrush12}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                                                <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" IsHitTestVisible=\"False\" Margin=\"1\" Opacity=\"0\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentPagePrefixTextBlock\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"CurrentPageSuffixTextBlock\"/>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.58\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MoveStates\">\r\n                                <VisualState x:Name=\"MoveEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MoveDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MoveFirstStates\">\r\n                                <VisualState x:Name=\"MoveFirstEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MoveFirstDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MovePreviousStates\">\r\n                                <VisualState x:Name=\"MovePreviousEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"PreviousPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MovePreviousDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"PreviousPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MoveNextStates\">\r\n                                <VisualState x:Name=\"MoveNextEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"NextPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MoveNextDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"NextPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"MoveLastStates\">\r\n                                <VisualState x:Name=\"MoveLastEnabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MoveLastDisabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"DisplayModeStates\">\r\n                                <VisualState x:Name=\"FirstLastNumeric\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"NextPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PreviousPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PageDisplay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"FirstLastPreviousNext\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"NumericButtonPanel\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"FirstLastPreviousNextNumeric\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PageDisplay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Numeric\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"NextPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PreviousPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PageDisplay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Separator1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Separator2\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"PreviousNext\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"NumericButtonPanel\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"PreviousNextNumeric\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FirstPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"LastPageButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CurrentPageTextBox\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"PageDisplay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" MinHeight=\"24\" Padding=\"{TemplateBinding Padding}\" VerticalAlignment=\"Bottom\">\r\n                            <StackPanel HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Orientation=\"Horizontal\" VerticalAlignment=\"Stretch\" Margin=\"5\">\r\n                                <Button x:Name=\"FirstPageButton\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Foreground=\"{StaticResource ForegroundColor}\" HorizontalAlignment=\"Right\" Height=\"25\" Padding=\"1\" VerticalAlignment=\"Center\" Width=\"25\" Margin=\"0,0,2,0\" Style=\"{StaticResource ImageButton}\">\r\n                                    <Grid Height=\"9\" Width=\"8\" Opacity=\"0.7\">\r\n                                        <Path Data=\"M0,1 L1,0 L1,2 Z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Right\" Height=\"9\" Stretch=\"Fill\" Width=\"5\"/>\r\n                                        <Rectangle Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Left\" Width=\"2\"/>\r\n                                    </Grid>\r\n                                </Button>\r\n                                <Button Style=\"{StaticResource ImageButton}\" x:Name=\"PreviousPageButton\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Background=\"{StaticResource NormalBrush}\" Foreground=\"{StaticResource ForegroundColor}\" HorizontalAlignment=\"Right\" Height=\"25\" Padding=\"1\" VerticalAlignment=\"Center\" Width=\"25\" Margin=\"0,0,2,0\">\r\n                                    <Path Data=\"M0,1 L1,0 L1,2 Z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Center\" Height=\"9\" Stretch=\"Fill\" Width=\"5\" Opacity=\"0.7\"/>\r\n                                </Button>\r\n                                <Border x:Name=\"Separator1\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"1,0,1,0\" Background=\"{StaticResource GrayBrush4}\" Margin=\"0,3,0,3\" Width=\"1\" Visibility=\"Collapsed\"/>\r\n                                <StackPanel x:Name=\"NumericButtonPanel\" Margin=\"1\" Orientation=\"Horizontal\"/>\r\n                                <StackPanel x:Name=\"PageDisplay\" Orientation=\"Horizontal\">\r\n                                    <TextBlock x:Name=\"CurrentPagePrefixTextBlock\" Foreground=\"{TemplateBinding Foreground}\" Margin=\"4,0,0,0\" VerticalAlignment=\"Center\" Width=\"Auto\" Text=\"PAGE\"/>\r\n                                    <TextBox x:Name=\"CurrentPageTextBox\" Foreground=\"{StaticResource HighlightBrush}\" Height=\"Auto\" Margin=\"4,0\" Style=\"{StaticResource PagingTextBoxStyle}\" TextWrapping=\"Wrap\" Width=\"40\" FontSize=\"16\" HorizontalAlignment=\"Center\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" FontWeight=\"Bold\"/>\r\n                                    <TextBlock x:Name=\"CurrentPageSuffixTextBlock\" Foreground=\"{TemplateBinding Foreground}\" Margin=\"0,0,4,0\" VerticalAlignment=\"Center\" Width=\"Auto\"/>\r\n                                </StackPanel>\r\n                                <Border x:Name=\"Separator2\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"1,0,1,0\" Background=\"{StaticResource GrayBrush4}\" Margin=\"0,3,0,3\" Width=\"1\" Visibility=\"Collapsed\"/>\r\n                                <Button Style=\"{StaticResource ImageButton}\" x:Name=\"NextPageButton\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Background=\"{StaticResource NormalBrush}\" Foreground=\"{StaticResource ForegroundColor}\" HorizontalAlignment=\"Right\" Height=\"25\" Padding=\"1\" VerticalAlignment=\"Center\" Width=\"25\" Margin=\"2,0,0,0\">\r\n                                    <Path Data=\"M0,0 L1,1 L0,2 Z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Center\" Height=\"9\" Stretch=\"Fill\" Width=\"5\" Opacity=\"0.7\"/>\r\n                                </Button>\r\n                                <Button Style=\"{StaticResource ImageButton}\" x:Name=\"LastPageButton\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Background=\"{StaticResource NormalBrush}\" Foreground=\"{StaticResource ForegroundColor}\" HorizontalAlignment=\"Right\" Height=\"25\" Padding=\"1\" VerticalAlignment=\"Center\" Width=\"25\" Margin=\"2,0,0,0\">\r\n                                    <Grid Height=\"9\" Width=\"8\" Opacity=\"0.7\">\r\n                                        <Path Data=\"M0,0 L1,1 L0,2 Z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Left\" Height=\"9\" Stretch=\"Fill\" Width=\"5\"/>\r\n                                        <Rectangle Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Right\" Width=\"2\"/>\r\n                                    </Grid>\r\n                                </Button>\r\n                            </StackPanel>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledBorder\" BorderThickness=\"1\" Background=\"{StaticResource WhiteBrush}\" Opacity=\"0\" IsHitTestVisible=\"False\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n    </Style>\r\n\r\n    <!--CalendarItem Style-->\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:CalendarItem\">\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls_Primitives:CalendarItem\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <SolidColorBrush x:Key=\"DisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Margin=\"0\">\r\n                            <Grid Margin=\"2\">\r\n                                <Grid.Resources>\r\n                                    <ControlTemplate x:Key=\"HeaderButtonTemplate\" TargetType=\"Button\">\r\n                                        <Grid Cursor=\"Hand\">\r\n                                            <VisualStateManager.VisualStateGroups>\r\n                                                <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                    <VisualState x:Name=\"Normal\"/>\r\n                                                    <VisualState x:Name=\"MouseOver\">\r\n                                                        <Storyboard>\r\n                                                            <ColorAnimation Duration=\"0\" To=\"{StaticResource HighlightLightColor}\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"Content\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                    <VisualState x:Name=\"Disabled\">\r\n                                                        <Storyboard>\r\n                                                            <DoubleAnimation Duration=\"0\" To=\".5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Content\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                </VisualStateGroup>\r\n                                            </VisualStateManager.VisualStateGroups>\r\n                                            <ContentControl x:Name=\"Content\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Foreground=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Margin=\"1,5,1,9\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                    <DataTemplate x:Name=\"DayTitleTemplate\">\r\n                                        <TextBlock Foreground=\"{StaticResource TextBoxMouseOverBorderBrush}\" FontWeight=\"Bold\" FontSize=\"12\" HorizontalAlignment=\"Center\" Margin=\"0,4,0,4\" Text=\"{Binding}\" VerticalAlignment=\"Center\"/>\r\n                                    </DataTemplate>\r\n                                    <ControlTemplate x:Key=\"PreviousButtonTemplate\" TargetType=\"Button\">\r\n                                        <Grid Cursor=\"Hand\">\r\n                                            <VisualStateManager.VisualStateGroups>\r\n                                                <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                    <VisualState x:Name=\"Normal\"/>\r\n                                                    <VisualState x:Name=\"MouseOver\">\r\n                                                        <Storyboard>\r\n                                                            <ColorAnimation Duration=\"0\" To=\"{StaticResource HighlightLightColor}\" Storyboard.TargetProperty=\"(Path.Fill).(SolidColorBrush.Color)\" Storyboard.TargetName=\"IconPath\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                    <VisualState x:Name=\"Disabled\">\r\n                                                        <Storyboard>\r\n                                                            <DoubleAnimation Duration=\"0\" To=\".5\" Storyboard.TargetProperty=\"(Path.Fill).(SolidColorBrush.Opacity)\" Storyboard.TargetName=\"IconPath\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                </VisualStateGroup>\r\n                                            </VisualStateManager.VisualStateGroups>\r\n                                            <Rectangle Fill=\"{StaticResource TransparentWhiteBrush}\" Opacity=\"1\" Stretch=\"Fill\"/>\r\n                                            <Grid>\r\n                                                <Path x:Name=\"IconPath\" Data=\"M288.75,232.25 L288.75,240.625 L283,236.625 z\" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Left\" Height=\"10\" Margin=\"14,-6,0,0\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\"/>\r\n                                            </Grid>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                    <ControlTemplate x:Key=\"NextButtonTemplate\" TargetType=\"Button\">\r\n                                        <Grid Cursor=\"Hand\">\r\n                                            <VisualStateManager.VisualStateGroups>\r\n                                                <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                    <VisualState x:Name=\"Normal\"/>\r\n                                                    <VisualState x:Name=\"MouseOver\">\r\n                                                        <Storyboard>\r\n                                                            <ColorAnimation Duration=\"0\" To=\"{StaticResource HighlightLightColor}\" Storyboard.TargetProperty=\"(Path.Fill).(SolidColorBrush.Color)\" Storyboard.TargetName=\"IconPath\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                    <VisualState x:Name=\"Disabled\">\r\n                                                        <Storyboard>\r\n                                                            <DoubleAnimation Duration=\"0\" To=\".5\" Storyboard.TargetProperty=\"(Path.Fill).(SolidColorBrush.Opacity)\" Storyboard.TargetName=\"IconPath\"/>\r\n                                                        </Storyboard>\r\n                                                    </VisualState>\r\n                                                </VisualStateGroup>\r\n                                            </VisualStateManager.VisualStateGroups>\r\n                                            <Rectangle Fill=\"{StaticResource TransparentWhiteBrush}\" Opacity=\"1\" Stretch=\"Fill\"/>\r\n                                            <Grid>\r\n                                                <Path x:Name=\"IconPath\" Data=\"M282.875,231.875 L282.875,240.375 L288.625,236 z\" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-6,14,0\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\"/>\r\n                                            </Grid>\r\n                                        </Grid>\r\n                                    </ControlTemplate>\r\n                                </Grid.Resources>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition Height=\"*\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <Button x:Name=\"PreviousButton\" Cursor=\"Hand\" HorizontalAlignment=\"Left\" Height=\"24\" Visibility=\"Collapsed\" Width=\"24\" Margin=\"13,0,0,0\" Style=\"{StaticResource ImageButton}\">\r\n                                    <Grid>\r\n                                        <Path x:Name=\"PreviousIconPath\" Data=\"M288.75,232.25 L288.75,240.625 L283,236.625 z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Left\" Height=\"10\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\" Opacity=\"0.7\"/>\r\n                                    </Grid>\r\n                                </Button>\r\n                                <Button x:Name=\"HeaderButton\" Foreground=\"{StaticResource HighlightBrush}\" Grid.Column=\"1\" FontWeight=\"Bold\" FontSize=\"13.333\" HorizontalAlignment=\"Center\" Cursor=\"Hand\" Height=\"30\" VerticalAlignment=\"Center\" FontFamily=\"Segoe UI\" Width=\"120\"/>\r\n                                <Button x:Name=\"NextButton\" Grid.Column=\"2\" HorizontalAlignment=\"Right\" Height=\"24\" Visibility=\"Collapsed\" Width=\"24\" Cursor=\"Hand\" Margin=\"0,0,13,0\" Style=\"{StaticResource ImageButton}\">\r\n                                    <Path x:Name=\"NextIconPath\" Data=\"M282.875,231.875 L282.875,240.375 L288.625,236 z\" Fill=\"{StaticResource CheckBoxMouseOverBrush}\" HorizontalAlignment=\"Right\" Height=\"10\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"6\" Opacity=\"0.7\"/>\r\n                                </Button>\r\n                                <Grid x:Name=\"MonthView\" Grid.ColumnSpan=\"3\" Margin=\"15,7,15,6\" Grid.Row=\"1\" Visibility=\"Collapsed\">\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                </Grid>\r\n                                <Grid x:Name=\"YearView\" Grid.ColumnSpan=\"3\" Margin=\"6,7,7,6\" Grid.Row=\"1\" Visibility=\"Collapsed\">\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                </Grid>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"DisabledVisual\" Fill=\"{StaticResource DisabledBrush}\" Margin=\"0,2,0,2\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{StaticResource DisabledBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Calendar Style-->\r\n    <Style TargetType=\"controls:Calendar\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Padding\" Value=\"15\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:Calendar\">\r\n                    <StackPanel x:Name=\"Root\" HorizontalAlignment=\"Center\">\r\n                        <System_Windows_Controls_Primitives:CalendarItem x:Name=\"CalendarItem\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Margin=\"0\" Padding=\"0\"/>\r\n                    </StackPanel>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--CalendarDayButton Style-->\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:CalendarDayButton\">\r\n        <Setter Property=\"Background\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"FontWeight\" Value=\"Bold\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"8\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"8\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls_Primitives:CalendarDayButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n\r\n                                        <DoubleAnimation Duration=\"0\" To=\".35\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Content\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CalendarButtonFocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"CalendarButtonFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisual\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"CalendarButtonUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisual\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ActiveStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Active\"/>\r\n                                <VisualState x:Name=\"Inactive\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray3}\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(GradientBrush.GradientStops)[2].(GradientStop.Color)\" Storyboard.TargetName=\"Content\"/>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray3}\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(GradientBrush.GradientStops)[3].(GradientStop.Color)\" Storyboard.TargetName=\"Content\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"DayStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"RegularDay\"/>\r\n                                <VisualState x:Name=\"Today\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"TodayBackground\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(GradientBrush.GradientStops)[1].(GradientStop.Offset)\" Storyboard.TargetName=\"Content\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(GradientBrush.GradientStops)[2].(GradientStop.Offset)\" Storyboard.TargetName=\"Content\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"BlackoutDayStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"NormalDay\"/>\r\n                                <VisualState x:Name=\"BlackoutDay\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\".2\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"BlackoutVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"TodayBackground\" Opacity=\"0\" >\r\n                            <Rectangle.Fill>\r\n                                <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                            </Rectangle.Fill>\r\n                        </Rectangle>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Border x:Name=\"PressedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                            <Border.Background>\r\n                                <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                            </Border.Background>\r\n                        </Border>\r\n                        <ContentControl x:Name=\"Content\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Margin=\"5,1,5,1\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                            <ContentControl.Foreground>\r\n                                <LinearGradientBrush>\r\n                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0\"/>\r\n                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0\"/>\r\n                                    <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"0\"/>\r\n                                    <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"1\"/>\r\n                                </LinearGradientBrush>\r\n                            </ContentControl.Foreground>\r\n                        </ContentControl>\r\n                        <Path x:Name=\"BlackoutVisual\" Data=\"M8.1772461,11.029181 L10.433105,11.029181 L11.700684,12.801641 L12.973633,11.029181 L15.191895,11.029181 L12.844727,13.999395 L15.21875,17.060919 L12.962891,17.060919 L11.673828,15.256231 L10.352539,17.060919 L8.1396484,17.060919 L10.519043,14.042364 z\" Fill=\"{StaticResource BlackColorBrush}\" HorizontalAlignment=\"Stretch\" Margin=\"3\" Opacity=\"0\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" VerticalAlignment=\"Stretch\"/>\r\n                        <Rectangle x:Name=\"FocusVisual\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--CalendarButton Style-->\r\n    <Style TargetType=\"System_Windows_Controls_Primitives:CalendarButton\">\r\n        <Setter Property=\"Background\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"40\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"42\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls_Primitives:CalendarButton\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ActiveStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Active\"/>\r\n                                <VisualState x:Name=\"Inactive\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray3}\" Storyboard.TargetProperty=\"(ContentControl.Foreground).(SolidColorBrush.Color)\" Storyboard.TargetName=\"Content\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CalendarButtonFocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"CalendarButtonFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisual\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"CalendarButtonUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisual\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Border x:Name=\"PressedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                            <Border.Background>\r\n                                <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                            </Border.Background>\r\n                        </Border>\r\n                        <ContentControl x:Name=\"Content\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Foreground=\"{StaticResource GrayBrush3}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Margin=\"1,0,1,1\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        <Rectangle x:Name=\"FocusVisual\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DatePickerTextBox Style-->\r\n    <Style x:Key=\"DatePickerTextBox\" TargetType=\"System_Windows_Controls_Primitives:DatePickerTextBox\">\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls_Primitives:DatePickerTextBox\">\r\n                    <Grid x:Name=\"Root\" Background=\"{TemplateBinding Background}\">\r\n                        <Grid.Resources>\r\n                            <SolidColorBrush x:Key=\"WatermarkBrush\" Color=\"{StaticResource Gray2}\"/>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"MouseOver\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"WatermarkStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unwatermarked\"/>\r\n                                <VisualState x:Name=\"Watermarked\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ContentElement\"/>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Watermark\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"WatermarkContent\" Background=\"{TemplateBinding Background}\">\r\n                            <Border x:Name=\"ContentElement\" BorderBrush=\"{StaticResource WhiteColorBrush}\" BorderThickness=\"1\" Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\"/>\r\n                            <Border x:Name=\"ContentElement2\" BorderBrush=\"{StaticResource WhiteColorBrush}\" BorderThickness=\"1\">\r\n                                <ContentControl x:Name=\"Watermark\" Background=\"{TemplateBinding Background}\" Content=\"{TemplateBinding Watermark}\" Foreground=\"{StaticResource WatermarkBrush}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Opacity=\"0\" Padding=\"2\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Rectangle x:Name=\"Base\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"1\" />\r\n                        <Rectangle x:Name=\"FocusRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                        <Rectangle x:Name=\"DisabledVisualElement\" Stroke=\"{StaticResource GrayBrush12}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Fill=\"{StaticResource GrayBrush12}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n    </Style>\r\n\r\n    <!--DatePicker Style-->\r\n    <Style TargetType=\"controls:DatePicker\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"SelectionBackground\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:DatePicker\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <SolidColorBrush x:Key=\"DisabledBrush\" Color=\"{StaticResource TransparentLightLightColor}\"/>\r\n                            <ControlTemplate x:Key=\"DropDownButtonTemplate\" TargetType=\"Button\">\r\n                                <Grid FlowDirection=\"LeftToRight\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisual\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0.595\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid Background=\"{StaticResource TransparentWhiteBrush}\" HorizontalAlignment=\"Center\" Height=\"18\" Margin=\"0\" VerticalAlignment=\"Center\" Width=\"19\">\r\n                                        <Grid.ColumnDefinitions>\r\n                                            <ColumnDefinition Width=\"20*\"/>\r\n                                            <ColumnDefinition Width=\"20*\"/>\r\n                                            <ColumnDefinition Width=\"20*\"/>\r\n                                            <ColumnDefinition Width=\"20*\"/>\r\n                                        </Grid.ColumnDefinitions>\r\n                                        <Grid.RowDefinitions>\r\n                                            <RowDefinition Height=\"23*\"/>\r\n                                            <RowDefinition Height=\"19*\"/>\r\n                                            <RowDefinition Height=\"19*\"/>\r\n                                            <RowDefinition Height=\"19*\"/>\r\n                                        </Grid.RowDefinitions>\r\n                                        <Border x:Name=\"Background\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"4\" Margin=\"0,-1,0,0\" Opacity=\"1\" Grid.Row=\"1\" Grid.RowSpan=\"3\">\r\n                                            <Border.Background>\r\n\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray7}\" />\r\n\r\n                                            </Border.Background>\r\n                                        </Border>\r\n                                        <Rectangle Grid.ColumnSpan=\"4\" Grid.RowSpan=\"1\" StrokeThickness=\"1\" Stroke=\"{StaticResource TextBoxBorderBrush}\" Fill=\"{StaticResource TextBoxMouseOverBorderBrush}\"/>\r\n                                        <Border x:Name=\"MouseOverBorder\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"4\" Margin=\"0,-1,0,0\" Opacity=\"0\" Grid.Row=\"1\" Grid.RowSpan=\"3\">\r\n                                            <Border.Background>\r\n\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray8}\" />\r\n\r\n                                            </Border.Background>\r\n                                        </Border>\r\n                                        <Border x:Name=\"PressedBorder\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"4\" Margin=\"0,-1,0,0\" Opacity=\"0\" Grid.Row=\"1\" Grid.RowSpan=\"3\">\r\n                                            <Border.Background>\r\n\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray5}\" />\r\n\r\n                                            </Border.Background>\r\n                                        </Border>\r\n                                        <Path Grid.ColumnSpan=\"4\" Grid.Column=\"0\" Data=\"M11.426758,8.4305077 L11.749023,8.4305077 L11.749023,16.331387 L10.674805,16.331387 L10.674805,10.299648 L9.0742188,11.298672 L9.0742188,10.294277 C9.4788408,10.090176 9.9094238,9.8090878 10.365967,9.4510155 C10.82251,9.0929432 11.176106,8.7527733 11.426758,8.4305077 z M14.65086,8.4305077 L18.566387,8.4305077 L18.566387,9.3435936 L15.671368,9.3435936 L15.671368,11.255703 C15.936341,11.058764 16.27293,10.960293 16.681133,10.960293 C17.411602,10.960293 17.969301,11.178717 18.354229,11.615566 C18.739157,12.052416 18.931622,12.673672 18.931622,13.479336 C18.931622,15.452317 18.052553,16.438808 16.294415,16.438808 C15.560365,16.438808 14.951641,16.234707 14.468243,15.826504 L14.881817,14.929531 C15.368796,15.326992 15.837872,15.525723 16.289043,15.525723 C17.298809,15.525723 17.803692,14.895514 17.803692,13.635098 C17.803692,12.460618 17.305971,11.873379 16.310528,11.873379 C15.83071,11.873379 15.399232,12.079271 15.016094,12.491055 L14.65086,12.238613 z\" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Center\" Margin=\"4,3,4,3\" Grid.Row=\"1\" Grid.RowSpan=\"3\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" VerticalAlignment=\"Center\"/>\r\n                                        <Ellipse Grid.ColumnSpan=\"4\" Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Center\" Height=\"3\" StrokeThickness=\"0\" VerticalAlignment=\"Center\" Width=\"3\"/>\r\n                                        <Border x:Name=\"DisabledVisual\" BorderBrush=\"{StaticResource TransparentLightLightBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"4\" CornerRadius=\"0,0,.5,.5\" Opacity=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"4\" Background=\"White\"/>\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <System_Windows_Controls_Primitives:DatePickerTextBox x:Name=\"TextBox\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Grid.Column=\"0\" Padding=\"{TemplateBinding Padding}\" SelectionBackground=\"{TemplateBinding SelectionBackground}\" Style=\"{StaticResource DatePickerTextBox}\"/>\r\n                        <Button x:Name=\"Button\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Grid.Column=\"1\" Foreground=\"{TemplateBinding Foreground}\" Margin=\"2,0,2,0\" Template=\"{StaticResource DropDownButtonTemplate}\" Width=\"20\"/>\r\n                        <Grid x:Name=\"DisabledVisual\" Grid.ColumnSpan=\"2\" IsHitTestVisible=\"False\" Opacity=\"0\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <Rectangle Fill=\"{StaticResource TransparentLightLightBrush}\" RadiusY=\"1\" RadiusX=\"1\"/>\r\n                            <Rectangle Grid.Column=\"1\" Fill=\"{StaticResource TransparentLightLightBrush}\" Height=\"18\" Margin=\"2,0,2,0\" RadiusY=\"1\" RadiusX=\"1\" Width=\"19\"/>\r\n                        </Grid>\r\n                        <Popup x:Name=\"Popup\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--GridSplitter Style-->\r\n    <Style TargetType=\"controls:GridSplitter\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"true\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Right\"/>\r\n        <Setter Property=\"PreviewStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"Control\">\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"Control\">\r\n                                <Grid x:Name=\"Root\" Opacity=\".5\">\r\n                                    <Rectangle Fill=\"{TemplateBinding Background}\"/>\r\n                                    <Grid x:Name=\"HorizontalTemplate\" Height=\"6\"/>\r\n                                    <Grid x:Name=\"VerticalTemplate\" Visibility=\"Collapsed\" Width=\"6\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:GridSplitter\">\r\n                    <Grid x:Name=\"Root\" IsHitTestVisible=\"{TemplateBinding IsEnabled}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle Fill=\"{TemplateBinding Background}\" StrokeThickness=\"0\"/>\r\n                        <Grid x:Name=\"HorizontalTemplate\" Height=\"10\">\r\n                            <Border BorderThickness=\"1\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" >\r\n                                <Canvas Height=\"6\" VerticalAlignment=\"Center\" Width=\"12\">\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"6.845\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\" Canvas.Left=\"5.845\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"6.845\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\" Canvas.Left=\"5.845\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"9.851\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\" Canvas.Left=\"8.851\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"9.851\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\" Canvas.Left=\"8.851\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                </Canvas>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"VerticalTemplate\" Visibility=\"Collapsed\" Width=\"10\">\r\n                            <Border BorderThickness=\"1\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\" >\r\n                                <Canvas Width=\"6\" Height=\"12\" >\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"6.302\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"7.537\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"1\" Canvas.Top=\"8.974\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"10.209\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"0.29\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"1.525\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"3.463\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"4.698\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"6.302\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"7.537\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M405.14063,248.65625 L405.14063,250.01588\" Fill=\"White\" Height=\"2.36\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" StrokeThickness=\"0.25\" Canvas.Left=\"4.006\" Canvas.Top=\"8.974\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Path Data=\"M404.76563,249.82813 L406.984,249.82813\" Fill=\"White\" Height=\"0.25\" Stretch=\"Fill\" StrokeThickness=\"0.25\" UseLayoutRounding=\"False\" Width=\"2.468\" Canvas.Top=\"10.209\" Canvas.Left=\"3.006\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                </Canvas>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Rectangle x:Name=\"FocusVisual\" IsHitTestVisible=\"false\" Opacity=\"0\" StrokeThickness=\"1\">\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--Label Style-->\r\n    <Style TargetType=\"dataInput:Label\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"dataInput:Label\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ControlColor\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray7}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"Invalid\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0:0:1.5\" Storyboard.TargetProperty=\"Foreground\" Storyboard.TargetName=\"ContentControl\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <SolidColorBrush Color=\"Red\"/>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"RequiredStates\">\r\n                                <VisualState x:Name=\"NotRequired\"/>\r\n                                <VisualState x:Name=\"Required\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"FontWeight\" Storyboard.TargetName=\"ContentControl\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"SemiBold\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                        </Grid.RowDefinitions>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"2\" Padding=\"{TemplateBinding Padding}\">\r\n                            <ContentControl x:Name=\"ContentControl\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                <ContentControl.Foreground>\r\n                                    <SolidColorBrush x:Name=\"ControlColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                </ContentControl.Foreground>\r\n                            </ContentControl>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--TreeView Style-->\r\n    <Style TargetType=\"controls:TreeView\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Cursor\" Value=\"Arrow\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"Padding\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"True\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:TreeView\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Validation\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Validation\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"ValidationToolTip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">\r\n                            <Border Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\">\r\n                                <ScrollViewer x:Name=\"ScrollViewer\" BorderBrush=\"Transparent\" BorderThickness=\"0\" Background=\"{x:Null}\" HorizontalScrollBarVisibility=\"Auto\" IsTabStop=\"False\" TabNavigation=\"Once\" VerticalScrollBarVisibility=\"Auto\">\r\n                                    <ItemsPresenter Margin=\"5\"/>\r\n                                </ScrollViewer>\r\n                            </Border>\r\n                        </Border>\r\n                        <Border x:Name=\"Validation\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Grid.Column=\"1\" CornerRadius=\"2\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"ValidationToolTip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" IsHitTestVisible=\"True\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource CommonValidationToolTipTemplate}\"/>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 Z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"-1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"-1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TreeViewItem Style-->\r\n    <Style TargetType=\"controls:TreeViewItem\">\r\n        <Setter Property=\"Padding\" Value=\"3\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Cursor\" Value=\"Arrow\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"True\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"Margin\" Value=\"0 1 0 0\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:TreeViewItem\">\r\n                    <Grid Background=\"{x:Null}\">\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"15\"/>\r\n                            <ColumnDefinition Width=\"Auto\"/>\r\n                            <ColumnDefinition Width=\"*\"/>\r\n                        </Grid.ColumnDefinitions>\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                            <RowDefinition Height=\"*\"/>\r\n                        </Grid.RowDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"SelectedRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"SelectWrapper\" Storyboard.TargetProperty=\"Color\">\r\n                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"SelectedInactive\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"HasItemsStates\">\r\n                                <VisualState x:Name=\"HasItems\"/>\r\n                                <VisualState x:Name=\"NoItems\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpansionStates\">\r\n                                <VisualState x:Name=\"Collapsed\"/>\r\n                                <VisualState x:Name=\"Expanded\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ItemsHost\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Validation\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"Validation\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"ValidationToolTip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <ToggleButton x:Name=\"ExpanderButton\" HorizontalAlignment=\"Stretch\" IsTabStop=\"False\" TabNavigation=\"Once\" VerticalAlignment=\"Stretch\">\r\n                            <ToggleButton.Template>\r\n                                <ControlTemplate TargetType=\"ToggleButton\">\r\n                                    <Grid x:Name=\"Root\" Background=\"Transparent\">\r\n                                        <VisualStateManager.VisualStateGroups>\r\n                                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                <VisualState x:Name=\"Normal\"/>\r\n                                                <VisualState x:Name=\"MouseOver\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"grid\" d:IsOptimized=\"True\"/>\r\n                                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty=\"(Shape.Fill).(SolidColorBrush.Color)\" Storyboard.TargetName=\"UncheckedVisual\">\r\n                                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"White\"/>\r\n                                                            <EasingColorKeyFrame KeyTime=\"0:0:0.4\" Value=\"{StaticResource AccentColor}\"/>\r\n                                                        </ColorAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                                <VisualState x:Name=\"Disabled\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\".7\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                            </VisualStateGroup>\r\n                                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                                <VisualState x:Name=\"Unchecked\"/>\r\n                                                <VisualState x:Name=\"Checked\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"UncheckedVisual\" d:IsOptimized=\"True\"/>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"CheckedVisual\" d:IsOptimized=\"True\"/>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                            </VisualStateGroup>\r\n                                        </VisualStateManager.VisualStateGroups>\r\n                                        <Grid x:Name=\"grid\" HorizontalAlignment=\"Right\" Margin=\"2 2 5 2\" Opacity=\"0.6\">\r\n                                            <Path x:Name=\"OldUncheckedVisual\" Data=\"M5.8535156,2.1822653 L10.195313,2.1822653 L10.195313,6.5152731 L14.537109,6.5152731 L14.537109,10.848281 L10.195313,10.848281 L10.195313,15.181289 L5.8535156,15.181289 L5.8535156,10.848281 L1.5205078,10.848281 L1.5205078,6.5152731 L5.8535156,6.5152731 z\" HorizontalAlignment=\"Right\" Height=\"8\" Margin=\"0\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Center\" Width=\"8\" Visibility=\"Collapsed\" >\r\n                                                <Path.Fill>\r\n                                                    <SolidColorBrush Color=\"{StaticResource Gray3}\"/>\r\n                                                </Path.Fill>\r\n                                            </Path>\r\n                                            <Path x:Name=\"OldCheckedVisual\" Data=\"M10.195313,6.5152731 L14.537109,6.5152731 14.537109,10.848281 10.195313,10.848281 5.8535156,10.848281 1.5205078,10.848281 1.5205078,6.5152731 5.8535156,6.5152731 z\" HorizontalAlignment=\"Right\" Height=\"2\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Center\" Width=\"8\" Visibility=\"Collapsed\" >\r\n                                                <Path.Fill>\r\n                                                    <SolidColorBrush Color=\"{StaticResource Gray3}\"/>\r\n                                                </Path.Fill>\r\n                                            </Path>\r\n                                            <Path x:Name=\"UncheckedVisual\" Data=\"M 0,0 L 0,9 L 5,4.5 Z\" HorizontalAlignment=\"Right\" Height=\"9\" StrokeThickness=\"1\" StrokeLineJoin=\"Miter\" VerticalAlignment=\"Center\" Width=\"6\" Margin=\"0,0,2,0\" UseLayoutRounding=\"False\">\r\n                                                <Path.Fill>\r\n                                                    <SolidColorBrush x:Name=\"BlankBackgroundBrush\" Color=\"{StaticResource BaseColor2}\" />\r\n                                                </Path.Fill>\r\n                                                <Path.Stroke>\r\n                                                    <SolidColorBrush x:Name=\"BaseBrush5\" Color=\"{StaticResource BaseColor5}\" />\r\n                                                </Path.Stroke>\r\n                                            </Path>\r\n                                            <Path x:Name=\"CheckedVisual\" Data=\"M 6,0 L 6,6 L 0,6 Z\" HorizontalAlignment=\"Center\" Height=\"6\" Opacity=\"0\" StrokeLineJoin=\"Miter\" VerticalAlignment=\"Center\" Width=\"6\" Stroke=\"Black\" UseLayoutRounding=\"False\">\r\n                                                <Path.Fill>\r\n                                                    <SolidColorBrush Color=\"{StaticResource BaseColor3}\"/>\r\n                                                </Path.Fill>\r\n                                            </Path>\r\n                                        </Grid>\r\n                                    </Grid>\r\n                                </ControlTemplate>\r\n                            </ToggleButton.Template>\r\n                        </ToggleButton>\r\n                        <Rectangle x:Name=\"SelectedRectangle\" Grid.Column=\"1\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource HighlightBrush}\"/>\r\n                        <Rectangle x:Name=\"Selection\" Grid.Column=\"1\" IsHitTestVisible=\"False\" Opacity=\"0\" RadiusY=\"2\" RadiusX=\"2\" StrokeThickness=\"1\">\r\n                            <Rectangle.Fill>\r\n                                <SolidColorBrush x:Name=\"SelectionFill\" Color=\"{StaticResource HighlightLightColor}\"/>\r\n                            </Rectangle.Fill>\r\n                            <Rectangle.Stroke>\r\n                                <SolidColorBrush x:Name=\"SelectionStroke\" Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                            </Rectangle.Stroke>\r\n                        </Rectangle>\r\n                        <Button x:Name=\"Header\" FontWeight=\"Light\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Cursor=\"{TemplateBinding Cursor}\" ClickMode=\"Hover\" Grid.Column=\"1\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" TabNavigation=\"Once\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" >\r\n                            <Button.Foreground>\r\n                                <SolidColorBrush x:Name=\"HeaderWrapper\" Color=\"{StaticResource BlackColor}\" />\r\n                            </Button.Foreground>\r\n                            <Button.Template>\r\n                                <ControlTemplate TargetType=\"Button\">\r\n                                    <Grid Background=\"{TemplateBinding Background}\">\r\n                                        <VisualStateManager.VisualStateGroups>\r\n                                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                <VisualState x:Name=\"Normal\"/>\r\n                                                <VisualState x:Name=\"Pressed\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                        </DoubleAnimationUsingKeyFrames>\r\n                                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                            <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                        </ColorAnimationUsingKeyFrames>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                                <VisualState x:Name=\"Disabled\">\r\n                                                    <Storyboard>\r\n                                                        <DoubleAnimation Duration=\"0\" To=\".55\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Content\"/>\r\n                                                    </Storyboard>\r\n                                                </VisualState>\r\n                                            </VisualStateGroup>\r\n                                        </VisualStateManager.VisualStateGroups>\r\n                                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource HighlightBrush}\"/>\r\n                                        <ContentControl Margin=\"0,-2\" >\r\n                                            <ContentControl.Foreground>\r\n                                                <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                            </ContentControl.Foreground>\r\n                                            <ContentPresenter x:Name=\"Content\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Left\" Margin=\"{TemplateBinding Padding}\"/>\r\n                                        </ContentControl>\r\n                                    </Grid>\r\n                                </ControlTemplate>\r\n                            </Button.Template>\r\n                            <ContentControl >\r\n                                <ContentControl.Foreground>\r\n                                    <SolidColorBrush x:Name=\"SelectWrapper\" Color=\"{StaticResource BlackColor}\" />\r\n                                </ContentControl.Foreground>\r\n                                <ContentPresenter ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\"/>\r\n                            </ContentControl>\r\n                        </Button>\r\n                        <Border x:Name=\"Validation\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Grid.Column=\"1\" CornerRadius=\"2\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"ValidationToolTip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" IsHitTestVisible=\"True\" Placement=\"Right\" PlacementTarget=\"{Binding ElementName=Header}\" Template=\"{StaticResource CommonValidationToolTipTemplate}\"/>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 Z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"-1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"-1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <ItemsPresenter x:Name=\"ItemsHost\" Grid.ColumnSpan=\"2\" Grid.Column=\"1\" Grid.Row=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TabControl Style-->\r\n    <Style TargetType=\"controls:TabControl\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Background\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Padding\" Value=\"5\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:TabControl\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualTop\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualBottom\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualLeft\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualRight\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"TemplateTop\" Visibility=\"Collapsed\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"*\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <System_Windows_Controls_Primitives:TabPanel x:Name=\"TabPanelTop\" Margin=\"5,2,2,-1\" Canvas.ZIndex=\"100\"/>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{TemplateBinding Background}\" MinWidth=\"10\" MinHeight=\"10\" Grid.Row=\"1\" BorderThickness=\"0,1,0,0\">\r\n                                <ContentPresenter x:Name=\"ContentTop\" Cursor=\"{TemplateBinding Cursor}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                            <Border x:Name=\"DisabledVisualTop\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"0,0,3,3\" IsHitTestVisible=\"False\" Opacity=\"0\" Grid.Row=\"1\" Grid.RowSpan=\"2\" Canvas.ZIndex=\"1\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateBottom\" Visibility=\"Collapsed\">\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"*\"/>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <System_Windows_Controls_Primitives:TabPanel x:Name=\"TabPanelBottom\" Margin=\"2,-1,2,2\" Grid.Row=\"1\" Canvas.ZIndex=\"1\"/>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3,3,0,0\" MinWidth=\"10\" MinHeight=\"10\">\r\n                                <ContentPresenter x:Name=\"ContentBottom\" Cursor=\"{TemplateBinding Cursor}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                            <Border x:Name=\"DisabledVisualBottom\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"3,3,0,0\" IsHitTestVisible=\"False\" Opacity=\"0\" Canvas.ZIndex=\"1\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateLeft\" Visibility=\"Collapsed\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <System_Windows_Controls_Primitives:TabPanel x:Name=\"TabPanelLeft\" Margin=\"2,2,-1,2\" Canvas.ZIndex=\"1\"/>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Grid.Column=\"1\" CornerRadius=\"0,3,3,0\" MinWidth=\"10\" MinHeight=\"10\">\r\n                                <ContentPresenter x:Name=\"ContentLeft\" Cursor=\"{TemplateBinding Cursor}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                            <Border x:Name=\"DisabledVisualLeft\" Background=\"{StaticResource TransparentLightLightBrush}\" Grid.Column=\"1\" CornerRadius=\"0,3,3,0\" IsHitTestVisible=\"False\" Opacity=\"0\" Canvas.ZIndex=\"1\"/>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateRight\" Visibility=\"Collapsed\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"Auto\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <System_Windows_Controls_Primitives:TabPanel x:Name=\"TabPanelRight\" Grid.Column=\"1\" Margin=\"-1,2,2,2\" Canvas.ZIndex=\"1\"/>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3,0,0,3\" MinWidth=\"10\" MinHeight=\"10\">\r\n                                <ContentPresenter x:Name=\"ContentRight\" Cursor=\"{TemplateBinding Cursor}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                            <Border x:Name=\"DisabledVisualRight\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"3,0,0,3\" IsHitTestVisible=\"False\" Margin=\"0\" Opacity=\"0\" Canvas.ZIndex=\"1\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TabItem Style-->\r\n    <Style TargetType=\"controls:TabItem\">\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ControlTitleFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n        <Setter Property=\"BorderBrush\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Padding\" Value=\"6,2,6,2\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"5\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"5\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:TabItem\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"MouseOver\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"TopBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"BottomBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"LeftBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"RightBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.6\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderTopUnselected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderTopSelected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderBottomUnselected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderBottomSelected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderLeftUnselected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderLeftSelected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderRightUnselected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"HeaderRightSelected\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"SelectionStates\">\r\n                                <VisualState x:Name=\"Unselected\"/>\r\n                                <VisualState x:Name=\"Selected\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"TemplateTopSelected\" Visibility=\"Collapsed\" Canvas.ZIndex=\"1\">\r\n                            <Border BorderThickness=\"1,0,1,0\" BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n                                <ContentControl x:Name=\"HeaderTopSelected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" FontWeight=\"Bold\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateTopUnselected\" Visibility=\"Collapsed\">\r\n                            <Border x:Name=\"TopBorder\" BorderThickness=\"1,0,1,0\">\r\n                                <ContentControl x:Name=\"HeaderTopUnselected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{StaticResource CheckBoxBrush}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateBottomSelected\" Visibility=\"Collapsed\" Canvas.ZIndex=\"1\">\r\n                            <Border BorderThickness=\"1,0,1,0\" BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n                                <ContentControl x:Name=\"HeaderBottomSelected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" FontWeight=\"Bold\"/>\r\n                            </Border>\r\n\r\n\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateBottomUnselected\" Visibility=\"Collapsed\">\r\n                            <Border x:Name=\"BottomBorder\" BorderThickness=\"1,0,1,0\">\r\n                                <ContentControl x:Name=\"HeaderBottomUnselected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateLeftSelected\" Visibility=\"Collapsed\" Canvas.ZIndex=\"1\">\r\n                            <Border BorderThickness=\"0,1,0,1\" BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n                                <ContentControl x:Name=\"HeaderLeftSelected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" FontWeight=\"Bold\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateLeftUnselected\" Visibility=\"Collapsed\">\r\n                            <Border x:Name=\"LeftBorder\" BorderThickness=\"0,1,0,1\">\r\n                                <ContentControl x:Name=\"HeaderLeftUnselected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateRightSelected\" Visibility=\"Collapsed\" Canvas.ZIndex=\"1\">\r\n                            <Border BorderThickness=\"0,1,0,1\" BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteBrush}\">\r\n                                <ContentControl x:Name=\"HeaderRightSelected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" FontWeight=\"Bold\"/>\r\n                            </Border>\r\n\r\n                        </Grid>\r\n                        <Grid x:Name=\"TemplateRightUnselected\" Visibility=\"Collapsed\">\r\n                            <Border x:Name=\"RightBorder\" BorderThickness=\"0,1,0,1\">\r\n                                <ContentControl x:Name=\"HeaderRightUnselected\" Cursor=\"{TemplateBinding Cursor}\" Foreground=\"{TemplateBinding Foreground}\" FontSize=\"{TemplateBinding FontSize}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" IsTabStop=\"False\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"/>\r\n                            </Border>\r\n                        </Grid>\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"1\" CornerRadius=\"3,3,0,0\" IsHitTestVisible=\"false\" Margin=\"-1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--ChildWindow Style-->\r\n    <Style x:Key=\"ChildWindowStyle\" TargetType=\"controls:ChildWindow\">\r\n        <Setter Property=\"IsTabStop\" Value=\"false\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Cycle\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Value=\"{StaticResource ThumbBrush}\" Property=\"BorderBrush\"/>\r\n        <Setter Property=\"OverlayBrush\" Value=\"{StaticResource PageOverlayBrush}\"/>\r\n        <Setter Property=\"OverlayOpacity\" Value=\"1\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"controls:ChildWindow\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <Grid.Resources>\r\n                            <Style x:Key=\"ButtonStyle\" TargetType=\"Button\">\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"Padding\" Value=\"3\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"Button\">\r\n                                            <Grid x:Name=\"grid\" Background=\"{StaticResource TransparentWhiteBrush}\" HorizontalAlignment=\"Center\" Height=\"14\" VerticalAlignment=\"Center\" Width=\"15\">\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz2\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz1\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz0\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"0.95\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"X\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"0.85\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"X\"/>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz2\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz1\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"X_Fuzz0\">\r\n                                                                    <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                                                </ObjectAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"X\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Path x:Name=\"X_Fuzz2\" Data=\"F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z\" Fill=\"{StaticResource FuzzBrush2}\" HorizontalAlignment=\"Center\" Height=\"8\" Margin=\"0,-1,0,0\" Opacity=\"1\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" Stroke=\"{StaticResource FuzzBrush2}\" Visibility=\"Collapsed\" VerticalAlignment=\"Center\" Width=\"9\">\r\n                                                    <Path.RenderTransform>\r\n                                                        <TransformGroup>\r\n                                                            <ScaleTransform ScaleY=\"1.3\" ScaleX=\"1.3\"/>\r\n                                                        </TransformGroup>\r\n                                                    </Path.RenderTransform>\r\n                                                </Path>\r\n                                                <Path x:Name=\"X_Fuzz1\" Data=\"F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z\" Fill=\"{StaticResource FuzzBrush1}\" HorizontalAlignment=\"Center\" Height=\"8\" Margin=\"0,-1,0,0\" Opacity=\"1\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" Stroke=\"{StaticResource FuzzBrush1}\" Visibility=\"Collapsed\" VerticalAlignment=\"Center\" Width=\"9\">\r\n                                                    <Path.RenderTransform>\r\n                                                        <TransformGroup>\r\n                                                            <ScaleTransform ScaleY=\"1.1\" ScaleX=\"1.1\"/>\r\n                                                        </TransformGroup>\r\n                                                    </Path.RenderTransform>\r\n                                                </Path>\r\n                                                <Path x:Name=\"X_Fuzz0\" Data=\"F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z\" Fill=\"{StaticResource FuzzBrush3}\" HorizontalAlignment=\"Center\" Height=\"8\" Margin=\"0,-1,0,0\" Opacity=\"1\" Stretch=\"Fill\" Stroke=\"{StaticResource FuzzBrush3}\" Visibility=\"Collapsed\" VerticalAlignment=\"Center\" Width=\"9\"/>\r\n                                                <Path x:Name=\"X\" Stroke=\"{StaticResource GrayBrush3}\" Data=\"F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z\" Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Center\" Height=\"8\" Margin=\"0,-1,0,0\" Opacity=\"0.7\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"9\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"WindowStates\">\r\n                                <VisualState x:Name=\"Open\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Overlay\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00.3\" Value=\"1\">\r\n                                                <EasingDoubleKeyFrame.EasingFunction>\r\n                                                    <PowerEase EasingMode=\"EaseInOut\"/>\r\n                                                </EasingDoubleKeyFrame.EasingFunction>\r\n                                            </EasingDoubleKeyFrame>\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.55\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"(RenderTransform).(Children)[0].ScaleX\" Storyboard.TargetName=\"ContentRoot\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.25\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.4\" Value=\"1\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0.5,1\" KeyTime=\"00:00:00.45\" Value=\"1.05\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.55\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"(RenderTransform).(Children)[0].ScaleY\" Storyboard.TargetName=\"ContentRoot\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.25\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.4\" Value=\"1\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0.5,1\" KeyTime=\"00:00:00.45\" Value=\"1.05\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.55\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Closed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Overlay\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00.3\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"(RenderTransform).(Children)[0].ScaleX\" Storyboard.TargetName=\"ContentRoot\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.2\" Value=\"1\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.25\" Value=\"1.05\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.45\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"0\" Storyboard.TargetProperty=\"(RenderTransform).(Children)[0].ScaleY\" Storyboard.TargetName=\"ContentRoot\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.2\" Value=\"1\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.25\" Value=\"1.05\"/>\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00.45\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"Overlay\" Background=\"{TemplateBinding OverlayBrush}\" HorizontalAlignment=\"Stretch\" Margin=\"0\" Opacity=\"{TemplateBinding OverlayOpacity}\" VerticalAlignment=\"Top\"/>\r\n                        <Grid x:Name=\"ContentRoot\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" Height=\"{TemplateBinding Height}\" RenderTransformOrigin=\"0.5,0.5\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" Width=\"{TemplateBinding Width}\">\r\n                            <Grid.RenderTransform>\r\n                                <TransformGroup>\r\n                                    <ScaleTransform/>\r\n                                    <SkewTransform/>\r\n                                    <RotateTransform/>\r\n                                    <TranslateTransform/>\r\n                                </TransformGroup>\r\n                            </Grid.RenderTransform>\r\n                            <Border BorderBrush=\"{TemplateBinding BorderBrush}\" Background=\"{StaticResource WhiteColorBrush}\" Effect=\"{StaticResource DropShadowBrush}\">\r\n                                <Grid>\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition Height=\"Auto\"/>\r\n                                        <RowDefinition/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <Border x:Name=\"Chrome\" BorderThickness=\"0,0,0,1\" Width=\"Auto\" Background=\"Transparent\">\r\n                                        <Grid Height=\"Auto\" Width=\"Auto\">\r\n                                            <Grid.ColumnDefinitions>\r\n                                                <ColumnDefinition/>\r\n                                                <ColumnDefinition Width=\"30\"/>\r\n                                            </Grid.ColumnDefinitions>\r\n                                            <ContentControl Content=\"{TemplateBinding Title}\" HorizontalAlignment=\"Stretch\" IsTabStop=\"False\" Margin=\"20,21,8,0\" VerticalAlignment=\"Center\" FontSize=\"18.667\"/>\r\n                                            <Button x:Name=\"CloseButton\" Grid.Column=\"1\" HorizontalAlignment=\"Center\" Height=\"14\" IsTabStop=\"False\" Style=\"{StaticResource ButtonStyle}\" VerticalAlignment=\"Top\" Width=\"15\" Margin=\"0,5,0,0\"/>\r\n                                            <Rectangle Fill=\"{StaticResource BrandingBrush}\" Height=\"6\" Margin=\"20,15,0,0\" VerticalAlignment=\"Top\" Width=\"80\" HorizontalAlignment=\"Left\"/>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Border Background=\"{TemplateBinding Background}\" Margin=\"7\" Grid.Row=\"1\">\r\n                                        <ContentPresenter x:Name=\"ContentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                    </Border>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--AutoCompleteBoxTextBox Style-->\r\n    <Style x:Key=\"AutoCompleteTextBox\" TargetType=\"TextBox\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"TextBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ReadOnlyVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusedBorder\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"2\" Opacity=\"1\">\r\n                            <Grid>\r\n                                <Border x:Name=\"ReadOnlyVisualElement\" Background=\"{StaticResource GrayBrush13}\" Opacity=\"0\"/>\r\n                                <Grid>\r\n                                    <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" IsTabStop=\"False\" Padding=\"{TemplateBinding Padding}\"/>\r\n                                </Grid>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"FocusedBorder\" BorderBrush=\"{StaticResource CheckBoxBrush}\" BorderThickness=\"1\" CornerRadius=\"2\" Opacity=\"0\" />\r\n                        <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"{StaticResource GrayBrush12}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource GrayBrush12}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"1\" CornerRadius=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <System:Boolean>true</System:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--CommonValidationToolTipTemplate Style-->\r\n    <!-- If you use AutoCompleteBoxStyle in a separate project-->\r\n    <!--Be sure to include this ControlTemplate xaml for Validation Ux-->\r\n    <!--AutoCompleteBoxStyle has a dependency on it-->\r\n    <ControlTemplate x:Key=\"CommonValidationToolTipTemplate\" TargetType=\"ToolTip\">\r\n        <Grid x:Name=\"Root\" Margin=\"5,0\" Opacity=\"0\" RenderTransformOrigin=\"0,0\">\r\n            <Grid.RenderTransform>\r\n                <TranslateTransform x:Name=\"Translation\" X=\"-25\"/>\r\n            </Grid.RenderTransform>\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"OpenStates\">\r\n                    <VisualStateGroup.Transitions>\r\n                        <VisualTransition GeneratedDuration=\"0\"/>\r\n                        <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"Open\">\r\n                            <Storyboard>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" To=\"0\" Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"Translation\">\r\n                                    <DoubleAnimation.EasingFunction>\r\n                                        <BackEase Amplitude=\".3\" EasingMode=\"EaseOut\"/>\r\n                                    </DoubleAnimation.EasingFunction>\r\n                                </DoubleAnimation>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                            </Storyboard>\r\n                        </VisualTransition>\r\n                    </VisualStateGroup.Transitions>\r\n                    <VisualState x:Name=\"Closed\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                    <VisualState x:Name=\"Open\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"Translation\"/>\r\n                            <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Border Background=\"{StaticResource ValidationBrush1}\" CornerRadius=\"5\" Margin=\"4,4,-4,-4\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush2}\" CornerRadius=\"4\" Margin=\"3,3,-3,-3\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush3}\" CornerRadius=\"3\" Margin=\"2,2,-2,-2\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush4}\" CornerRadius=\"2\" Margin=\"1,1,-1,-1\"/>\r\n            <Border Background=\"{StaticResource ValidationBrush5}\" CornerRadius=\"2\">\r\n                <TextBlock Foreground=\"White\" MaxWidth=\"250\" Margin=\"8,4,8,4\" TextWrapping=\"Wrap\" Text=\"{Binding (Validation.Errors)[0].ErrorContent}\" UseLayoutRounding=\"false\"/>\r\n            </Border>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!--AutoCompleteBoxStyle-->\r\n    <!-- If you use AutoCompleteBoxStyle in a separate project-->\r\n    <!--Be sure to include this ControlTemplate xaml for Validation Ux-->\r\n    <!--AutoCompleteBoxStyle has a dependency on it--> <!--AutoCompleteBox Style-->\r\n    <Style TargetType=\"input:AutoCompleteBox\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"45\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"input:AutoCompleteBox\">\r\n                    <Grid Opacity=\"{TemplateBinding Opacity}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"PopupStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"PopupOpened\"/>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"PopupClosed\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"PopupOpened\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation To=\"1.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"PopupBorder\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"PopupClosed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation To=\"0.0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"PopupBorder\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <TextBox x:Name=\"Text\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Foreground=\"{TemplateBinding Foreground}\" IsTabStop=\"True\" Margin=\"0\" Padding=\"{TemplateBinding Padding}\" Style=\"{StaticResource AutoCompleteTextBox}\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"1\" CornerRadius=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource CommonValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <System:Boolean>true</System:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Popup x:Name=\"Popup\">\r\n                            <Grid Opacity=\"{TemplateBinding Opacity}\">\r\n                                <Border x:Name=\"PopupBorder\" BorderThickness=\"0\" Background=\"{StaticResource TransparentDarkBrush}\" HorizontalAlignment=\"Stretch\" Opacity=\"0\" Effect=\"{StaticResource DropShadowBrush}\">\r\n                                    <Border.RenderTransform>\r\n                                        <TranslateTransform X=\"1\" Y=\"1\"/>\r\n                                    </Border.RenderTransform>\r\n                                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"0\" HorizontalAlignment=\"Stretch\" Opacity=\"1.0\" Padding=\"0\">\r\n                                        <Border.Background>\r\n                                            <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                <GradientStop Color=\"{StaticResource Gray1}\" Offset=\"0\"/>\r\n                                                <GradientStop Color=\"{StaticResource Gray11}\" Offset=\"1\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Border.Background>\r\n                                        <Border.RenderTransform>\r\n                                            <TransformGroup>\r\n                                                <TranslateTransform X=\"-1\" Y=\"-1\"/>\r\n                                            </TransformGroup>\r\n                                        </Border.RenderTransform>\r\n                                        <ListBox x:Name=\"Selector\" BorderThickness=\"0\" Background=\"{TemplateBinding Background}\" Foreground=\"{TemplateBinding Foreground}\" ScrollViewer.HorizontalScrollBarVisibility=\"Auto\" ItemTemplate=\"{TemplateBinding ItemTemplate}\" ItemContainerStyle=\"{TemplateBinding ItemContainerStyle}\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\"/>\r\n                                    </Border>\r\n                                </Border>\r\n                            </Grid>\r\n                        </Popup>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n\r\n\r\n</ResourceDictionary>"
  },
  {
    "path": "themes/assets/metro/toolkit.xaml",
    "content": "<ResourceDictionary\r\n        xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n        xmlns:toolkit=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit\"\r\n        xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n        mc:Ignorable=\"d\"\r\n        xmlns:System=\"clr-namespace:System;assembly=mscorlib\"\r\n        xmlns:System_Windows_Controls=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Layout.Toolkit\"\r\n        xmlns:sdk=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk\"\r\n        xmlns:layouttoolkit=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Layout.Toolkit\"\r\n        xmlns:inputtoolkit=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit\"\r\n        xmlns:System_Windows_Controls_Primitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Input.Toolkit\"\r\n        xmlns:dataformtoolkit=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit\"\r\n        xmlns:dataInput=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input\"\r\n        xmlns:Charting=\"clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit\"\r\n        xmlns:charttoolkit=\"clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit\"\r\n        xmlns:Charting_Primitives=\"clr-namespace:System.Windows.Controls.DataVisualization.Charting.Primitives;assembly=System.Windows.Controls.DataVisualization.Toolkit\"\r\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\r\n\r\n    <!-- Global Settings-->\r\n    <ResourceDictionary.MergedDictionaries>\r\n        <ResourceDictionary Source=\"Brushes.xaml\"/>\r\n        <ResourceDictionary Source=\"Fonts.xaml\"/>\r\n    </ResourceDictionary.MergedDictionaries>\r\n\r\n    <!-- Busy Indicator Style -->\r\n    <Style TargetType=\"toolkit:BusyIndicator\">\r\n        <Setter Property=\"BusyContent\" Value=\"Please wait...\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"OverlayStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"Rectangle\">\r\n                    <Setter Property=\"Fill\" Value=\"White\"/>\r\n                    <Setter Property=\"Opacity\" Value=\"0.5\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"ProgressBarStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ProgressBar\">\r\n                    <Setter Property=\"IsIndeterminate\" Value=\"True\"/>\r\n                    <Setter Property=\"Height\" Value=\"15\"/>\r\n                    <Setter Property=\"Margin\" Value=\"8,0,8,8\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"DisplayAfter\" Value=\"00:00:00.1\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"toolkit:BusyIndicator\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"VisibilityStates\">\r\n                                <VisualState x:Name=\"Hidden\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"busycontent\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"overlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Visible\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"busycontent\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"overlay\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"BusyStatusStates\">\r\n                                <VisualState x:Name=\"Idle\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(Control.IsEnabled)\" Storyboard.TargetName=\"content\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Busy\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.001\" Storyboard.TargetProperty=\"(Control.IsEnabled)\" Storyboard.TargetName=\"content\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>False</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <ContentControl x:Name=\"content\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                        <Rectangle x:Name=\"overlay\" Style=\"{TemplateBinding OverlayStyle}\"/>\r\n                        <ContentPresenter x:Name=\"busycontent\">\r\n                            <Grid HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\r\n                                <Border Background=\"{StaticResource WindowBackgroundBrush}\" Effect=\"{StaticResource DropShadowBrush}\">\r\n                                    <Grid MinWidth=\"150\">\r\n                                        <Grid.RowDefinitions>\r\n                                            <RowDefinition/>\r\n                                            <RowDefinition Height=\"Auto\"/>\r\n                                        </Grid.RowDefinitions>\r\n                                        <ContentPresenter ContentTemplate=\"{TemplateBinding BusyContentTemplate}\" Content=\"{TemplateBinding BusyContent}\" Margin=\"8\"/>\r\n                                        <ProgressBar Grid.Row=\"1\" IsIndeterminate=\"True\" Height=\"8\" Margin=\"5\"/>\r\n                                    </Grid>\r\n                                </Border>\r\n                            </Grid>\r\n                        </ContentPresenter>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- Accordion Style -->\r\n    <Style TargetType=\"System_Windows_Controls:Accordion\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"Cursor\" Value=\"Arrow\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Padding\" Value=\"0\"/>\r\n        <Setter Property=\"Margin\" Value=\"0\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"ItemsPanel\">\r\n            <Setter.Value>\r\n                <ItemsPanelTemplate>\r\n                    <StackPanel VerticalAlignment=\"Top\"/>\r\n                </ItemsPanelTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls:Accordion\">\r\n                    <Grid x:Name=\"Root\" Background=\"{StaticResource WhiteBrush}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\">\r\n                            <ScrollViewer BorderBrush=\"Transparent\" BorderThickness=\"0\" Background=\"{x:Null}\" HorizontalScrollBarVisibility=\"Disabled\" IsTabStop=\"False\" Margin=\"0\" Padding=\"0\" VerticalScrollBarVisibility=\"Disabled\">\r\n                                <ItemsPresenter/>\r\n                            </ScrollViewer>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--AccordionButton Style-->\r\n    <Style TargetType=\"layouttoolkit:AccordionButton\">\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"True\"/>\r\n        <Setter Property=\"TabNavigation\" Value=\"Once\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"layouttoolkit:AccordionButton\">\r\n                    <Grid Background=\"Transparent\" Margin=\"{TemplateBinding Padding}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"ExpandDirectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"ExpandDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Auto\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00\" To=\"-90\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"arrow\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandUp\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Auto\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00\" To=\"90\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"arrow\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandLeft\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Auto\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"LayoutTransform\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <TransformGroup>\r\n                                                        <RotateTransform Angle=\"90\"/>\r\n                                                    </TransformGroup>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00\" To=\"0\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"arrow\"/>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"path\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"path1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandRight\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"icon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Auto\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"0\" Duration=\"0\" Storyboard.TargetProperty=\"LayoutTransform\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <TransformGroup>\r\n                                                        <RotateTransform Angle=\"-90\"/>\r\n                                                    </TransformGroup>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00\" To=\"180\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"arrow\"/>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"path1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"path\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpansionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Collapsed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00.3\" To=\"0\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"icon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Expanded\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation BeginTime=\"00:00:00\" Duration=\"00:00:00.3\" To=\"90\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)\" Storyboard.TargetName=\"icon\"/>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ExpandedBackground\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"(Control.FontWeight)\" Storyboard.TargetName=\"header\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <FontWeight>Bold</FontWeight>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CheckStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Checked\"/>\r\n                                <VisualState x:Name=\"Unchecked\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                    <VisualTransition From=\"MouseOver\" GeneratedDuration=\"00:00:00.1\" To=\"Normal\"/>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"background\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid>\r\n                                <Border x:Name=\"ExpandedBackground\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"1,1,1,1\" Height=\"Auto\" Margin=\"0,0,0,0\" Opacity=\"0\" VerticalAlignment=\"Stretch\" Visibility=\"Collapsed\">\r\n                                    <Border.Background>\r\n\r\n                                        <SolidColorBrush Color=\"{StaticResource Gray5}\" />\r\n\r\n                                    </Border.Background>\r\n                                </Border>\r\n                                <Border x:Name=\"MouseOverBackground\" CornerRadius=\"1,1,1,1\" Height=\"Auto\" Margin=\"0,0,0,0\" Opacity=\"0\" VerticalAlignment=\"Stretch\">\r\n                                    <Border.Background>\r\n\r\n                                        <SolidColorBrush Color=\"{StaticResource Gray8}\" />\r\n\r\n                                    </Border.Background>\r\n                                </Border>\r\n                                <Grid Background=\"Transparent\">\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition x:Name=\"cd0\" Width=\"Auto\"/>\r\n                                        <ColumnDefinition x:Name=\"cd1\" Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition x:Name=\"rd0\" Height=\"Auto\"/>\r\n                                        <RowDefinition x:Name=\"rd1\" Height=\"Auto\"/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <Grid x:Name=\"icon\" Grid.Column=\"0\" HorizontalAlignment=\"Center\" Height=\"19\" Grid.Row=\"0\" RenderTransformOrigin=\"0.5,0.5\" VerticalAlignment=\"Center\" Width=\"19\">\r\n                                        <Grid.RenderTransform>\r\n                                            <TransformGroup>\r\n                                                <ScaleTransform/>\r\n                                                <SkewTransform/>\r\n                                                <RotateTransform Angle=\"-90\"/>\r\n                                                <TranslateTransform/>\r\n                                            </TransformGroup>\r\n                                        </Grid.RenderTransform>\r\n\r\n\r\n\r\n                                        <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                            <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                <Rectangle.Stroke>\r\n                                                    <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                </Rectangle.Stroke>\r\n                                            </Rectangle>\r\n\r\n                                            <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Center\" Height=\"5\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\" RenderTransformOrigin=\"0.5,0.5\" VerticalAlignment=\"Center\">\r\n                                                <Path.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <ScaleTransform/>\r\n                                                        <SkewTransform/>\r\n                                                        <RotateTransform Angle=\"90\"/>\r\n                                                        <TranslateTransform/>\r\n                                                    </TransformGroup>\r\n                                                </Path.RenderTransform>\r\n                                            </Path>\r\n                                        </Grid>\r\n\r\n                                    </Grid>\r\n                                    <System_Windows_Controls:LayoutTransformer x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Grid.Column=\"1\" Foreground=\"{TemplateBinding Foreground}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"6,6,6,3\" Grid.Row=\"0\" Grid.RowSpan=\"1\"/>\r\n                                    <Path x:Name=\"path1\" Grid.Column=\"1\" Data=\"M20.859196,0.68390805 L20.859196,32.143585\" HorizontalAlignment=\"Right\" Stretch=\"Fill\" UseLayoutRounding=\"False\" Width=\"1\" Grid.RowSpan=\"2\" Visibility=\"Collapsed\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                </Grid>\r\n                                <Path x:Name=\"path\" Grid.ColumnSpan=\"1\" Data=\"M1.5819016,27.355097 L115.98849,27.355097\" Height=\"1\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Bottom\" d:LayoutOverrides=\"HorizontalAlignment\">\r\n                                    <Path.Stroke>\r\n                                        <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                    </Path.Stroke>\r\n                                </Path>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--AccordionItem Style-->\r\n    <Style TargetType=\"System_Windows_Controls:AccordionItem\">\r\n        <Setter Property=\"BorderBrush\" Value=\"{x:Null}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Margin\" Value=\"0\"/>\r\n        <Setter Property=\"Padding\" Value=\"0\"/>\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"System_Windows_Controls:AccordionItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpansionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Collapsed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(ExpandableContentControl.Percentage)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0.2,0,0,1\" KeyTime=\"00:00:00.3\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00.3\" Duration=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.Visibility)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Collapsed</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Expanded\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(ExpandableContentControl.Percentage)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0.2,0,0,1\" KeyTime=\"00:00:00.3\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"LockedStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Locked\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unlocked\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"True\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpandDirectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"ExpandDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandUp\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandLeft\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.ColumnSpan)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.ColumnSpan)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.RowSpan)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"2\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.RowSpan)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"2\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandRight\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.ColumnSpan)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.ColumnSpan)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.RowSpan)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"2\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.RowSpan)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"2\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\">\r\n                            <Grid>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition x:Name=\"rd0\" Height=\"Auto\"/>\r\n                                    <RowDefinition x:Name=\"rd1\" Height=\"Auto\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition x:Name=\"cd0\" Width=\"Auto\"/>\r\n                                    <ColumnDefinition x:Name=\"cd1\" Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <layouttoolkit:AccordionButton x:Name=\"ExpanderButton\" Background=\"{TemplateBinding Background}\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"True\" IsChecked=\"{TemplateBinding IsSelected}\" Margin=\"0,0,0,0\" Padding=\"0,0,0,0\" Grid.Row=\"0\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                <layouttoolkit:ExpandableContentControl x:Name=\"ExpandSite\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Margin=\"0,0,0,0\" Percentage=\"0\" RevealMode=\"{TemplateBinding ExpandDirection}\" Grid.Row=\"1\" Style=\"{TemplateBinding ExpandableContentControlStyle}\" VerticalAlignment=\"{TemplateBinding VerticalAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!-- ButtonSpinner Style -->\r\n    <Style TargetType=\"inputtoolkit:ButtonSpinner\">\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:ButtonSpinner\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <ControlTemplate x:Key=\"IncreaseButtonTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" />\r\n                                    <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource WhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" />\r\n                                    <Border x:Name=\"MouseOverBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                                        <Border.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray8}\"/>\r\n                                        </Border.Background>\r\n                                    </Border>\r\n                                    <Border x:Name=\"PressedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                                        <Border.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                                        </Border.Background>\r\n                                    </Border>\r\n                                    <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" Margin=\"-1\" Opacity=\"0\" />\r\n                                    <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" Opacity=\"0\" />\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                    <Path x:Name=\"path\" Data=\"F1 M 541.537,173.589L 531.107,173.589L 536.322,167.49L 541.537,173.589 Z \" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Stretch\" Margin=\"4,3,4,3\" Stretch=\"Uniform\" VerticalAlignment=\"Stretch\" Width=\"8\" Height=\"4\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"DecreaseButtonTemplate\" TargetType=\"RepeatButton\">\r\n                                <Grid x:Name=\"Root\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedBorder\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" />\r\n                                    <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"{StaticResource WhiteColorBrush}\" IsHitTestVisible=\"false\" Opacity=\"0\" />\r\n                                    <Border x:Name=\"MouseOverBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                                        <Border.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray8}\"/>\r\n                                        </Border.Background>\r\n                                    </Border>\r\n                                    <Border x:Name=\"PressedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\">\r\n                                        <Border.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                                        </Border.Background>\r\n                                    </Border>\r\n                                    <Rectangle x:Name=\"FocusRectangle\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" Margin=\"-1\" Opacity=\"0\" />\r\n                                    <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" Opacity=\"0\" />\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" RadiusY=\"1\" RadiusX=\"1\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                    <Path x:Name=\"path\" Data=\"F1 M 531.107,321.943L 541.537,321.943L 536.322,328.042L 531.107,321.943 Z \" Fill=\"{StaticResource GrayBrush3}\" HorizontalAlignment=\"Stretch\" Height=\"4\" Margin=\"4,3,4,3\" Stretch=\"Uniform\" VerticalAlignment=\"Stretch\" Width=\"8\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"BorderBrush\" Storyboard.TargetName=\"ElementContainer\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <SolidColorBrush Color=\"Gray\"/>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"FocusInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"IncreaseStates\">\r\n                                <VisualState x:Name=\"IncreaseEnabled\"/>\r\n                                <VisualState x:Name=\"IncreaseDisabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"DecreaseStates\">\r\n                                <VisualState x:Name=\"DecreaseEnabled\"/>\r\n                                <VisualState x:Name=\"DecreaseDisabled\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"ElementContainer\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Padding=\"{TemplateBinding Padding}\">\r\n                            <Border x:Name=\"MouseOverBorder\" BorderBrush=\"Transparent\" BorderThickness=\"1\">\r\n                                <Grid>\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"*\"/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <Grid.RowDefinitions>\r\n                                        <RowDefinition Height=\"*\"/>\r\n                                        <RowDefinition Height=\"*\"/>\r\n                                    </Grid.RowDefinitions>\r\n                                    <ContentControl x:Name=\"presentationSite\" Content=\"{TemplateBinding Content}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Grid.RowSpan=\"2\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                    <Button Grid.Column=\"1\" IsHitTestVisible=\"True\" IsTabStop=\"False\" Grid.Row=\"0\" Grid.RowSpan=\"2\">\r\n                                        <Button.Template>\r\n                                            <ControlTemplate TargetType=\"Button\">\r\n                                                <Grid Background=\"Transparent\"/>\r\n                                            </ControlTemplate>\r\n                                        </Button.Template>\r\n                                    </Button>\r\n                                    <RepeatButton x:Name=\"IncreaseButton\" ClickMode=\"Press\" Grid.Column=\"1\" IsTabStop=\"False\" Grid.Row=\"0\" Template=\"{StaticResource IncreaseButtonTemplate}\"/>\r\n                                    <RepeatButton x:Name=\"DecreaseButton\" ClickMode=\"Press\" Grid.Column=\"1\" IsTabStop=\"False\" Grid.Row=\"1\" Template=\"{StaticResource DecreaseButtonTemplate}\"/>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Border>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" IsHitTestVisible=\"False\" />\r\n                        <Rectangle x:Name=\"MouseOverInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" IsHitTestVisible=\"False\" />\r\n                        <Rectangle x:Name=\"FocusRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" IsHitTestVisible=\"False\" />\r\n                        <Rectangle x:Name=\"FocusInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" IsHitTestVisible=\"False\" />\r\n                        <Rectangle x:Name=\"DisabledRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" IsHitTestVisible=\"False\" Fill=\"{StaticResource WhiteBrush}\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!--TimeUpDown Style-->\r\n    <Style TargetType=\"inputtoolkit:TimeUpDown\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Height\" Value=\"26\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"100\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:TimeUpDown\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"TimeHintStates\">\r\n                                <VisualState x:Name=\"TimeHintOpenedUp\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"-23\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"22\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"TimeHintOpenedDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"22\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"TimeHintClosed\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:20\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"TimeHintVisualElement\">\r\n                                            <DiscreteDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"22\"/>\r\n                                            <SplineDoubleKeyFrame KeySpline=\"0,0,0,1\" KeyTime=\"00:00:00.200\" Value=\"0\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ParsingStates\">\r\n                                <VisualState x:Name=\"ValidTime\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"validicon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidTime\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"invalidicon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"EmptyTime\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"emptyicon\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"00:00:00\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Popup x:Name=\"TimeHintPopup\" VerticalOffset=\"0\">\r\n                            <Border x:Name=\"TimeHintVisualElement\" BorderBrush=\"Gray\" BorderThickness=\"1\" Background=\"White\" HorizontalAlignment=\"Left\" IsHitTestVisible=\"True\" Visibility=\"Collapsed\">\r\n                                <Border.RenderTransform>\r\n                                    <TransformGroup>\r\n                                        <ScaleTransform/>\r\n                                        <SkewTransform/>\r\n                                        <RotateTransform/>\r\n                                        <TranslateTransform/>\r\n                                    </TransformGroup>\r\n                                </Border.RenderTransform>\r\n                                <Grid>\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition/>\r\n                                        <ColumnDefinition MinWidth=\"15\" Width=\"Auto\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <ContentControl Content=\"{TemplateBinding TimeHintContent}\" Grid.Column=\"0\" Foreground=\"{StaticResource GrayBrush3}\" FontSize=\"10\" HorizontalAlignment=\"Right\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Margin=\"3\" VerticalAlignment=\"Center\"/>\r\n                                    <ContentControl x:Name=\"emptyicon\" Grid.Column=\"1\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Margin=\"3\" Visibility=\"Collapsed\"/>\r\n                                    <ContentControl x:Name=\"validicon\" Grid.Column=\"1\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Margin=\"3\" Visibility=\"Collapsed\"/>\r\n                                    <ContentControl x:Name=\"invalidicon\" Grid.Column=\"1\" IsHitTestVisible=\"False\" IsTabStop=\"False\" Visibility=\"Collapsed\" VerticalAlignment=\"Center\">\r\n                                        <Grid Width=\"15\" Height=\"15\" d:LayoutOverrides=\"HorizontalAlignment, VerticalAlignment, Width, Height\">\r\n                                            <Path Data=\"M15.5,111 L133.5,111 L73.5,40 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"0\" StrokeStartLineCap=\"Round\" Stretch=\"Fill\" StrokeEndLineCap=\"Round\" Stroke=\"Black\" StrokeMiterLimit=\"210\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" StrokeDashCap=\"Round\" StrokeThickness=\"1.5\"/>\r\n                                            <Path Data=\"M7.5,5.4166665 L7.5,9.7496738\" Fill=\"Black\" Margin=\"6.5,5.9,6,4.75\" StrokeStartLineCap=\"Round\" Stretch=\"Fill\" StrokeEndLineCap=\"Round\" Stroke=\"Black\" StrokeMiterLimit=\"10\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" StrokeDashCap=\"Round\" StrokeThickness=\"1.4\"/>\r\n                                            <Ellipse Fill=\"{StaticResource WhiteColorBrush}\" Height=\"1\" Margin=\"7,0,7,3\" StrokeStartLineCap=\"Round\" StrokeEndLineCap=\"Round\" Stroke=\"Black\" StrokeMiterLimit=\"10\" StrokeLineJoin=\"Round\" VerticalAlignment=\"Bottom\" StrokeThickness=\"1.5\"/>\r\n                                        </Grid>\r\n                                    </ContentControl>\r\n                                </Grid>\r\n                            </Border>\r\n                        </Popup>\r\n                        <inputtoolkit:ButtonSpinner x:Name=\"Spinner\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" HorizontalContentAlignment=\"Stretch\" IsTabStop=\"False\" MinWidth=\"35\" Padding=\"{TemplateBinding Padding}\" VerticalContentAlignment=\"Stretch\">\r\n                            <TextBox x:Name=\"Text\" AcceptsReturn=\"False\" BorderThickness=\"0\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" MinWidth=\"20\" TextAlignment=\"Right\" TextWrapping=\"NoWrap\" Text=\"{TemplateBinding Value}\" Margin=\"0,0,5,0\" VerticalAlignment=\"Center\">\r\n                                <TextBox.Style>\r\n                                    <Style TargetType=\"TextBox\">\r\n                                        <Setter Property=\"Template\">\r\n                                            <Setter.Value>\r\n                                                <ControlTemplate TargetType=\"TextBox\">\r\n                                                    <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" Padding=\"0\"/>\r\n                                                </ControlTemplate>\r\n                                            </Setter.Value>\r\n                                        </Setter>\r\n                                    </Style>\r\n                                </TextBox.Style>\r\n                            </TextBox>\r\n                        </inputtoolkit:ButtonSpinner>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- ListTimePickerPopup Style-->\r\n    <Style TargetType=\"inputtoolkit:ListTimePickerPopup\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"PopupMinutesInterval\" Value=\"30\" />\r\n        <Setter Property=\"PopupSecondsInterval\" Value=\"0\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:ListTimePickerPopup\">\r\n                    <Grid Background=\"Transparent\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <!-- Common States -->\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <!-- Contained States -->\r\n                            <VisualStateGroup x:Name=\"ContainedByPickerStates\">\r\n                                <VisualState x:Name=\"Contained\">\r\n                                    <Storyboard />\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NotContained\">\r\n                                    <Storyboard />\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <!-- PopupModeStates -->\r\n                            <VisualStateGroup x:Name=\"PopupModeStates\">\r\n                                <VisualState x:Name=\"AllowSecondsAndDesignatorsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"AllowTimeDesignatorsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"AllowSecondsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"HoursAndMinutesOnly\">\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <ListBox x:Name=\"ListBox\" IsTabStop=\"True\" TabIndex=\"1\" MaxHeight=\"130\" DisplayMemberPath=\"Key\" DataContext=\"{TemplateBinding TimeItemsSelection}\" ItemsSource=\"{Binding Items}\" SelectedItem=\"{Binding SelectedItem, Mode=TwoWay}\" >\r\n                        </ListBox>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--RangeTimePickerPopup Style-->\r\n    <Style TargetType=\"inputtoolkit:RangeTimePickerPopup\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"PopupMinutesInterval\" Value=\"5\" />\r\n        <Setter Property=\"PopupSecondsInterval\" Value=\"0\" />\r\n        <Setter Property=\"Height\" Value=\"300\" />\r\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\r\n        <Setter Property=\"Background\" Value=\"White\" />\r\n        <Setter Property=\"SliderStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"Slider\">\r\n                    <Setter Property=\"Orientation\" Value=\"Vertical\" />\r\n                    <Setter Property=\"HorizontalAlignment\" Value=\"Center\" />\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"TimeButtonStyle\">\r\n            <Setter.Value>\r\n                <Style\r\n                        TargetType=\"Button\">\r\n                    <Setter\r\n                            Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate\r\n                                    TargetType=\"Button\">\r\n                                <TextBlock x:Name=\"label\"\r\n                                           Text=\"{TemplateBinding Content}\"\r\n                                           Foreground=\"Black\"\r\n                                           Margin=\"0\"\r\n                                           Padding=\"0\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <!-- common states -->\r\n                                        <VisualStateGroup\r\n                                                x:Name=\"CommonStates\">\r\n                                            <VisualState\r\n                                                    x:Name=\"Normal\" />\r\n                                            <VisualState\r\n                                                    x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <ColorAnimationUsingKeyFrames\r\n                                                            BeginTime=\"00:00:00\"\r\n                                                            Duration=\"00:00:00.0010000\"\r\n                                                            Storyboard.TargetName=\"label\"\r\n                                                            Storyboard.TargetProperty=\"(TextBlock.Foreground).(SolidColorBrush.Color)\">\r\n                                                        <SplineColorKeyFrame\r\n                                                                KeyTime=\"00:00:00\"\r\n                                                                Value=\"Gray\" />\r\n                                                    </ColorAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                </TextBlock>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:RangeTimePickerPopup\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" >\r\n                        <VisualStateManager.VisualStateGroups>\r\n\r\n                            <!-- Common States -->\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n\r\n                            <!-- Contained States -->\r\n                            <VisualStateGroup x:Name=\"ContainedByPickerStates\">\r\n                                <VisualState x:Name=\"Contained\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"NotContained\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetName=\"Commit\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetName=\"Cancel\" Storyboard.TargetProperty=\"Visibility\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Collapsed\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n\r\n                            <!-- PopupModeStates -->\r\n                            <VisualStateGroup x:Name=\"PopupModeStates\">\r\n                                <VisualState x:Name=\"AllowSecondsAndDesignatorsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"AllowTimeDesignatorsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"AllowSecondsSelection\">\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"HoursAndMinutesOnly\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames\r\n                                                Storyboard.TargetName=\"SecondsPanel\"\r\n                                                Storyboard.TargetProperty=\"(UIElement.Visibility)\"\r\n                                                Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame\r\n                                                    KeyTime=\"0\"\r\n                                                    Value=\"Collapsed\" />\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames\r\n                                                Storyboard.TargetName=\"SecondsSlider\"\r\n                                                Storyboard.TargetProperty=\"(UIElement.Visibility)\"\r\n                                                Duration=\"0\">\r\n                                            <DiscreteObjectKeyFrame\r\n                                                    KeyTime=\"0\"\r\n                                                    Value=\"Collapsed\" />\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n\r\n                        <Grid.Resources>\r\n                            <Style x:Key=\"CommitButton\" TargetType=\"Button\">\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"Padding\" Value=\"3\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"Button\">\r\n                                            <Grid FlowDirection=\"LeftToRight\">\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HighlightDarkColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightestColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Border x:Name=\"Background\" Background=\"White\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\">\r\n                                                    <Grid Margin=\"1\" Background=\"{TemplateBinding Background}\">\r\n                                                        <Border x:Name=\"BackgroundAnimation\" Opacity=\"0\" Background=\"{StaticResource HighlightBrush}\"/>\r\n                                                        <Rectangle x:Name=\"BackgroundGradient\" Fill=\"{StaticResource WhiteColorBrush}\"/>\r\n                                                        <Grid Margin=\"5.125,3.5,3.125,3.5\">\r\n                                                            <Path Height=\"6\" HorizontalAlignment=\"Left\" Margin=\"0.376,0,0,0\" VerticalAlignment=\"Top\" Width=\"6.861\" Stretch=\"Fill\" StrokeDashCap=\"Round\" StrokeEndLineCap=\"Round\" StrokeStartLineCap=\"Round\" StrokeThickness=\"1.5\" Data=\"M6.0443821,10.103714 L7.7407737,20.549189 M21.739996,1.5 L7.6783452,20.497122\">\r\n                                                                <Path.Stroke>\r\n                                                                    <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                                        <GradientStop Color=\"{StaticResource OKButtonIconColor1}\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource OKButtonIconColor2}\" Offset=\"1\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource OKButtonIconColor3}\" Offset=\"0.375\"/>\r\n                                                                    </LinearGradientBrush>\r\n                                                                </Path.Stroke>\r\n                                                                <Path.Fill>\r\n                                                                    <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                                        <GradientStop Color=\"{StaticResource BlackColor}\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n                                                                    </LinearGradientBrush>\r\n                                                                </Path.Fill>\r\n                                                            </Path>\r\n                                                        </Grid>\r\n                                                    </Grid>\r\n                                                </Border>\r\n                                                <Rectangle x:Name=\"DisabledVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Fill=\"{StaticResource WhiteColorBrush}\" RadiusX=\"3\" RadiusY=\"3\"/>\r\n                                                <Rectangle Margin=\"0.936,0.904,1.064,1.096\" x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" RadiusX=\"2\" RadiusY=\"2\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                            <Style x:Key=\"CancelButton\" TargetType=\"Button\">\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource TransparentWhiteBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"Padding\" Value=\"3\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"Button\">\r\n                                            <Grid FlowDirection=\"LeftToRight\">\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource TransparentLightLightColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"Background\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource HighlightDarkColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundAnimation\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                                <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"BackgroundGradient\" Storyboard.TargetProperty=\"(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)\">\r\n                                                                    <SplineColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource WhiteColor}\"/>\r\n                                                                </ColorAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                                    <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                                </DoubleAnimationUsingKeyFrames>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Border x:Name=\"Background\" Background=\"White\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\">\r\n                                                    <Grid Margin=\"1\" Background=\"{TemplateBinding Background}\">\r\n                                                        <Border x:Name=\"BackgroundAnimation\" Opacity=\"0\" Background=\"{StaticResource HighlightBrush}\"/>\r\n                                                        <Rectangle x:Name=\"BackgroundGradient\">\r\n                                                            <Rectangle.Fill>\r\n                                                                <LinearGradientBrush EndPoint=\".7,1\" StartPoint=\".7,0\">\r\n                                                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0\"/>\r\n                                                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0.375\"/>\r\n                                                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"0.625\"/>\r\n                                                                    <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n                                                                </LinearGradientBrush>\r\n                                                            </Rectangle.Fill>\r\n                                                        </Rectangle>\r\n                                                        <Grid Margin=\"5.125,3.5,3.125,3.5\">\r\n                                                            <Path Height=\"6\" HorizontalAlignment=\"Left\" Margin=\"-1.25,0,0,0\" VerticalAlignment=\"Top\" Width=\"7.75\" Fill=\"{StaticResource BlackColorBrush}\" Stretch=\"Fill\" StrokeDashCap=\"Round\" StrokeEndLineCap=\"Round\" StrokeStartLineCap=\"Round\" StrokeThickness=\"1.5\" Data=\"M2.5,1.5000099 L20.5,19.50001 M21.739996,1.5 L1.5,19.883999\">\r\n                                                                <Path.Stroke>\r\n                                                                    <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                                        <GradientStop Color=\"{StaticResource CancelButtonIconColor1}\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource CancelButtonIconColor2}\" Offset=\"0.371\"/>\r\n                                                                        <GradientStop Color=\"{StaticResource CancelButtonIconColor3}\" Offset=\"1\"/>\r\n                                                                    </LinearGradientBrush>\r\n                                                                </Path.Stroke>\r\n                                                            </Path>\r\n                                                        </Grid>\r\n                                                    </Grid>\r\n                                                </Border>\r\n                                                <Rectangle x:Name=\"DisabledVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Fill=\"{StaticResource WhiteColorBrush}\" RadiusX=\"3\" RadiusY=\"3\"/>\r\n                                                <Rectangle Margin=\"0.936,0.904,1.064,1.096\" x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" RadiusX=\"2\" RadiusY=\"2\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition Height=\"*\" />\r\n                            <RowDefinition Height=\"Auto\" />\r\n                        </Grid.RowDefinitions>\r\n                        <Grid HorizontalAlignment=\"Center\" Margin=\"6\">\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                                <ColumnDefinition Width=\"Auto\" />\r\n                            </Grid.ColumnDefinitions>\r\n                            <Border BorderBrush=\"{StaticResource ThumbBrush}\" BorderThickness=\"1\" Grid.ColumnSpan=\"7\" Grid.RowSpan=\"2\" Margin=\"-6\" />\r\n                            <Slider x:Name=\"HoursSlider\" Grid.Column=\"0\"  Orientation=\"Vertical\" HorizontalAlignment=\"Center\" Margin=\"5\" Minimum=\"0\" Maximum=\"23\" />\r\n                            <Grid x:Name=\"HoursPanel\" Margin=\"5\" Grid.Column=\"1\"/>\r\n                            <Slider x:Name=\"MinutesSlider\" Grid.Column=\"2\" Orientation=\"Vertical\" HorizontalAlignment=\"Center\" Margin=\"5\" Minimum=\"0\" Maximum=\"59\" />\r\n                            <Grid x:Name=\"MinutesPanel\" Margin=\"5\" Grid.Column=\"3\" />\r\n                            <Slider x:Name=\"SecondsSlider\" Grid.Column=\"4\" Orientation=\"Vertical\" HorizontalAlignment=\"Center\" Margin=\"5\" Minimum=\"0\" Maximum=\"59\" />\r\n                            <Grid x:Name=\"SecondsPanel\" Margin=\"5\" Grid.Column=\"5\" />\r\n                            <StackPanel Grid.Column=\"6\" VerticalAlignment=\"Bottom\" HorizontalAlignment=\"Right\" Margin=\"12,0,0,0\">\r\n                                <Button x:Name=\"Commit\" Margin=\"0,15,0,0\" HorizontalAlignment=\"Right\" TabIndex=\"2\" Height=\"20\" Width=\"20\" >\r\n                                    <Path Height=\"6\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"6.861\" Stretch=\"Fill\" StrokeDashCap=\"Round\" StrokeEndLineCap=\"Round\" StrokeStartLineCap=\"Round\" StrokeThickness=\"1.5\" Data=\"M6.0443821,10.103714 L7.7407737,20.549189 M21.739996,1.5 L7.6783452,20.497122\">\r\n                                        <Path.Stroke>\r\n                                            <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                <GradientStop Color=\"{StaticResource OKButtonIconColor1}\"/>\r\n                                                <GradientStop Color=\"{StaticResource OKButtonIconColor2}\" Offset=\"1\"/>\r\n                                                <GradientStop Color=\"{StaticResource OKButtonIconColor3}\" Offset=\"0.375\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Path.Stroke>\r\n                                        <Path.Fill>\r\n                                            <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                <GradientStop Color=\"{StaticResource BlackColor}\"/>\r\n                                                <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Path.Fill>\r\n                                    </Path>\r\n                                </Button>\r\n                                <Button x:Name=\"Cancel\" Margin=\"0,15,0,0\" HorizontalAlignment=\"Right\" TabIndex=\"3\" Height=\"20\" Width=\"20\" >\r\n                                    <Path Height=\"6\" HorizontalAlignment=\"Left\" Margin=\"-1.25,0,0,0\" VerticalAlignment=\"Top\" Width=\"7.75\" Fill=\"{StaticResource BlackColorBrush}\" Stretch=\"Fill\" StrokeDashCap=\"Round\" StrokeEndLineCap=\"Round\" StrokeStartLineCap=\"Round\" StrokeThickness=\"1.5\" Data=\"M2.5,1.5000099 L20.5,19.50001 M21.739996,1.5 L1.5,19.883999\">\r\n                                        <Path.Stroke>\r\n                                            <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\r\n                                                <GradientStop Color=\"{StaticResource CancelButtonIconColor1}\"/>\r\n                                                <GradientStop Color=\"{StaticResource CancelButtonIconColor2}\" Offset=\"0.371\"/>\r\n                                                <GradientStop Color=\"{StaticResource CancelButtonIconColor3}\" Offset=\"1\"/>\r\n                                            </LinearGradientBrush>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                </Button>\r\n                            </StackPanel>\r\n                        </Grid>\r\n\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--TimePicker Style-->\r\n    <Style TargetType=\"inputtoolkit:TimePicker\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"MinWidth\" Value=\"125\" />\r\n        <Setter Property=\"Height\" Value=\"26\" />\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Background\"      Value=\"Transparent\" />\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:TimePicker\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <!-- common states -->\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\" />\r\n                                <VisualState x:Name=\"MouseOver\" />\r\n                                <VisualState x:Name=\"Disabled\" />\r\n                                <VisualState x:Name=\"Pressed\" />\r\n                            </VisualStateGroup>\r\n                            <!-- focus states -->\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\" />\r\n                                <VisualState x:Name=\"Unfocused\" />\r\n                            </VisualStateGroup>\r\n                            <!-- Popup states -->\r\n                            <VisualStateGroup x:Name=\"PopupStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.1\" To=\"PopupOpened\" />\r\n                                    <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"PopupClosed\" />\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"PopupOpened\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation  Storyboard.TargetName=\"PopupRoot\" Storyboard.TargetProperty=\"Opacity\" To=\"1.0\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"PopupClosed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Storyboard.TargetName=\"PopupRoot\" Storyboard.TargetProperty=\"Opacity\" To=\"0.0\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid.Resources>\r\n                            <ControlTemplate  x:Key=\"PopupButtonTemplate\" TargetType=\"ToggleButton\">\r\n                                <!-- clock icon -->\r\n                                <Grid FlowDirection=\"LeftToRight\" Height=\"20\" Width=\"20\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition  GeneratedDuration=\"00:00:00.1000000\" />\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\" />\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverEllipse\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState  x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedEllipse\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"DisabledVisualElement\" Storyboard.TargetProperty=\"Opacity\">\r\n                                                        <SplineDoubleKeyFrame KeyTime=\"0\" Value=\".55\" />\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Highlight_Copy\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Highlight\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\" />\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\"></VisualState>\r\n                                            <VisualState  x:Name=\"Unfocused\" />\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Grid>\r\n                                        <Grid.Resources>\r\n                                            <LinearGradientBrush x:Key=\"Dot\" EndPoint=\"1.025,0.434\" StartPoint=\"-0.025,0.566\">\r\n                                                <GradientStop  Color=\"#FFC8C8C8\" />\r\n                                                <GradientStop  Color=\"#FF19191A\" Offset=\"1\" />\r\n                                            </LinearGradientBrush>\r\n                                        </Grid.Resources>\r\n                                        <Ellipse Margin=\"1,1,1,1\" Stroke=\"{StaticResource ThumbBrush}\" StrokeThickness=\"0.75\" x:Name=\"ellipse\" Fill=\"{StaticResource NormalBrush}\"/>\r\n                                        <Ellipse StrokeThickness=\"1\" x:Name=\"Highlight_Copy\" Opacity=\"0\" >\r\n                                            <Ellipse.Stroke>\r\n                                                <SolidColorBrush Color=\"{StaticResource HighlightLightColor}\"/>\r\n                                            </Ellipse.Stroke>\r\n                                        </Ellipse>\r\n                                        <Ellipse Margin=\"1\" StrokeThickness=\"1\" x:Name=\"Highlight\" Opacity=\"0\">\r\n                                            <Ellipse.Stroke>\r\n                                                <SolidColorBrush Color=\"{StaticResource HighlightDarkColor}\"/>\r\n                                            </Ellipse.Stroke>\r\n                                        </Ellipse>\r\n                                        <Ellipse Margin=\"1,1,1,1\" Stroke=\"{StaticResource TextBoxBorderBrush}\" StrokeThickness=\"0.75\" x:Name=\"MouseOverEllipse\" Opacity=\"0\">\r\n                                            <Ellipse.Fill>\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray8}\" />\r\n                                            </Ellipse.Fill>\r\n                                        </Ellipse>\r\n                                        <Ellipse Margin=\"1,1,1,1\" Stroke=\"{StaticResource TextBoxBorderBrush}\" StrokeThickness=\"0.75\" x:Name=\"PressedEllipse\" Opacity=\"0\">\r\n                                            <Ellipse.Fill>\r\n                                                <SolidColorBrush Color=\"{StaticResource Gray5}\"/>\r\n                                            </Ellipse.Fill>\r\n                                        </Ellipse>\r\n                                        <Path Fill=\"{x:Null}\" Height=\"8.258\" Margin=\"9,6,5,0\" VerticalAlignment=\"Top\" Stretch=\"Fill\" Data=\"M10.108397,6.5404582 L10.108397,10.415268 L13.538931,13.738435\" HorizontalAlignment=\"Left\" Stroke=\"{StaticResource CheckBoxBrush}\"/>\r\n                                        <!-- disabled visual -->\r\n                                        <Rectangle  x:Name=\"DisabledVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Fill=\"{StaticResource WhiteColorBrush}\" RadiusX=\"3\" RadiusY=\"3\" />\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <Grid.ColumnDefinitions>\r\n                            <ColumnDefinition Width=\"*\" />\r\n                            <ColumnDefinition Width=\"Auto\" />\r\n                        </Grid.ColumnDefinitions>\r\n                        <inputtoolkit:TimeUpDown x:Name=\"TimeUpDown\" Height=\"Auto\" Background=\"{TemplateBinding Background}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" SpinnerStyle=\"{TemplateBinding SpinnerStyle}\" Minimum=\"{TemplateBinding Minimum}\" Maximum=\"{TemplateBinding Maximum}\" TimeParsers=\"{TemplateBinding TimeParsers}\" Format=\"{TemplateBinding Format}\" Culture=\"{TemplateBinding Culture}\" TimeGlobalizationInfo=\"{TemplateBinding TimeGlobalizationInfo}\" Grid.Column=\"0\" />\r\n                        <ToggleButton x:Name=\"DropDownToggle\" Template=\"{StaticResource PopupButtonTemplate}\" Margin=\"3,0,0,0\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Grid.Column=\"1\" />\r\n                        <Popup x:Name=\"Popup\">\r\n                            <Border x:Name=\"PopupRoot\" Effect=\"{StaticResource DropShadowBrush}\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"1\">\r\n                                <ContentControl x:Name=\"PopupPlaceHolder\" IsTabStop=\"False\"  HorizontalContentAlignment=\"Stretch\"  VerticalContentAlignment=\"Stretch\" />\r\n                            </Border>\r\n                        </Popup>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--RatingItem Style-->\r\n    <Style TargetType=\"inputtoolkit:RatingItem\">\r\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:RatingItem\">\r\n                    <Grid Background=\"{TemplateBinding Background}\" Width=\"20\">\r\n                        <Grid.RowDefinitions>\r\n                            <RowDefinition Height=\"20\"/>\r\n                            <RowDefinition Height=\"Auto\"/>\r\n                        </Grid.RowDefinitions>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.2000000\"/>\r\n                                    <VisualTransition From=\"MouseOver\" GeneratedDuration=\"00:00:00.2000000\" To=\"Normal\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRatingItem\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverHighlight\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.325\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(Shape.Fill).(SolidColorBrush.Color)\" Storyboard.TargetName=\"MouseOverHighlight\">\r\n                                            <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"{StaticResource RatingMouseOverColor}\"/>\r\n                                        </ColorAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"PressedRatingItem\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.39\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledRatingItem\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledRatingItemBackground\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ReadOnlyRatingItem\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.1000000\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard/>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FillStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"00:00:00.1000000\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Empty\"/>\r\n                                <VisualState x:Name=\"Partial\"/>\r\n                                <VisualState x:Name=\"Filled\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderThickness=\"0\"/>\r\n                        <Path x:Name=\"DefaultRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Opacity=\"1\" Stretch=\"Fill\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"0.4\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <System_Windows_Controls_Primitives:LinearClipper ExpandDirection=\"Right\" RatioVisible=\"{TemplateBinding DisplayValue}\">\r\n                            <Path Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"{TemplateBinding Foreground}\" Opacity=\"1\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        </System_Windows_Controls_Primitives:LinearClipper>\r\n                        <Path x:Name=\"MouseOverRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"{TemplateBinding Foreground}\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <Path x:Name=\"MouseOverHighlight\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\">\r\n                            <Path.Fill>\r\n                                <SolidColorBrush Color=\"{StaticResource RatingMouseOverColor}\"/>\r\n                            </Path.Fill>\r\n                        </Path>\r\n                        <Path x:Name=\"PressedRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\" Fill=\"{StaticResource TransparentDarkDarkDarkBrush}\"/>\r\n                        <Path x:Name=\"FocusRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{StaticResource RatingMouseOverBrush}\" StrokeThickness=\"0.01\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <Path x:Name=\"ReadOnlyRatingItem\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"#18FFFFFF\" IsHitTestVisible=\"False\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"0.4\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <Path x:Name=\"DisabledRatingItemBackground\" Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"Gainsboro\" Opacity=\"0\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        <System_Windows_Controls_Primitives:LinearClipper x:Name=\"DisabledRatingItem\" ExpandDirection=\"Right\" Opacity=\"0\" RatioVisible=\"{TemplateBinding DisplayValue}\">\r\n                            <Path Data=\"M15,0 L18.6,11.373603 L30,11.459046 L20.824955,18.573566 L24.270519,30 L15,23.023449 L5.7294912,30 L9.1750822,18.573566 L0,11.459046 L11.399999,11.373603 z\" Fill=\"#FF5E5E5E\" Opacity=\"1\" Stretch=\"Fill\" Stroke=\"{x:Null}\" StrokeLineJoin=\"Round\" UseLayoutRounding=\"False\" VerticalAlignment=\"Stretch\"/>\r\n                        </System_Windows_Controls_Primitives:LinearClipper>\r\n                        <ContentPresenter x:Name=\"Content\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" HorizontalAlignment=\"Left\" Margin=\"{TemplateBinding Padding}\" Grid.Row=\"1\" Grid.RowSpan=\"2\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--Rating Style-->\r\n    <Style TargetType=\"inputtoolkit:Rating\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource RatingStarsBrush}\"/>\r\n        <Setter Property=\"ItemsPanel\">\r\n            <Setter.Value>\r\n                <ItemsPanelTemplate>\r\n                    <StackPanel Orientation=\"Horizontal\"/>\r\n                </ItemsPanelTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:Rating\">\r\n                    <Grid x:Name=\"Root\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"ReadOnlyVisualElement\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.03\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\r\n                            <ItemsPresenter/>\r\n                        </Border>\r\n                        <Border x:Name=\"ReadOnlyVisualElement\" BorderBrush=\"{StaticResource ReadOnlyBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource ReadOnlyBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"{StaticResource DisbaledControlBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource DisbaledControlBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" RadiusY=\"1\" RadiusX=\"1\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--ValidationTooltip-->\r\n    <ControlTemplate x:Key=\"ValidationToolTipTemplate2\">\r\n        <Grid x:Name=\"Root\" Margin=\"5,0\" Opacity=\"0\" RenderTransformOrigin=\"0,0\">\r\n            <Grid.RenderTransform>\r\n                <TranslateTransform x:Name=\"xform\" X=\"-25\"/>\r\n            </Grid.RenderTransform>\r\n            <VisualStateManager.VisualStateGroups>\r\n                <VisualStateGroup x:Name=\"OpenStates\">\r\n                    <VisualStateGroup.Transitions>\r\n                        <VisualTransition GeneratedDuration=\"0\"/>\r\n                        <VisualTransition GeneratedDuration=\"0:0:0.2\" To=\"Open\">\r\n                            <Storyboard>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" To=\"0\" Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"xform\">\r\n                                    <DoubleAnimation.EasingFunction>\r\n                                        <BackEase Amplitude=\".3\" EasingMode=\"EaseOut\"/>\r\n                                    </DoubleAnimation.EasingFunction>\r\n                                </DoubleAnimation>\r\n                                <DoubleAnimation Duration=\"0:0:0.2\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                            </Storyboard>\r\n                        </VisualTransition>\r\n                    </VisualStateGroup.Transitions>\r\n                    <VisualState x:Name=\"Closed\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                    <VisualState x:Name=\"Open\">\r\n                        <Storyboard>\r\n                            <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"X\" Storyboard.TargetName=\"xform\"/>\r\n                            <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Root\"/>\r\n                        </Storyboard>\r\n                    </VisualState>\r\n                </VisualStateGroup>\r\n            </VisualStateManager.VisualStateGroups>\r\n            <Border Background=\"#052A2E31\" CornerRadius=\"5\" Margin=\"4,4,-4,-4\"/>\r\n            <Border Background=\"#152A2E31\" CornerRadius=\"4\" Margin=\"3,3,-3,-3\"/>\r\n            <Border Background=\"#252A2E31\" CornerRadius=\"3\" Margin=\"2,2,-2,-2\"/>\r\n            <Border Background=\"#352A2E31\" CornerRadius=\"2\" Margin=\"1,1,-1,-1\"/>\r\n            <Border Background=\"#FFDC000C\" CornerRadius=\"2\"/>\r\n            <Border CornerRadius=\"2\">\r\n                <TextBlock Foreground=\"White\" MaxWidth=\"250\" Margin=\"8,4,8,4\" TextWrapping=\"Wrap\" Text=\"{Binding (Validation.Errors)[0].ErrorContent}\" UseLayoutRounding=\"false\"/>\r\n            </Border>\r\n        </Grid>\r\n    </ControlTemplate>\r\n\r\n    <!-- NumericUpDownTextBox Style -->\r\n    <Style x:Key=\"NumericUpDownTextBoxStyle\" TargetType=\"TextBox\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"26\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"TextBox\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ReadOnly\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ReadOnlyVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"1\" Opacity=\"1\">\r\n                            <Grid>\r\n                                <Border x:Name=\"ReadOnlyVisualElement\" Background=\"#5EC9C9C9\" Opacity=\"0\"/>\r\n                                <Border x:Name=\"MouseOverBorder\" BorderBrush=\"{x:Null}\" BorderThickness=\"1\">\r\n                                    <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" IsTabStop=\"False\" Padding=\"{TemplateBinding Padding}\"/>\r\n                                </Border>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" BorderBrush=\"#A5F7F7F7\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"#A5F7F7F7\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"#FF6DBDD1\" BorderThickness=\"{TemplateBinding BorderThickness}\" IsHitTestVisible=\"False\" Margin=\"1\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"#FFDB000C\" BorderThickness=\"1\" CornerRadius=\"1\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate2}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <System:Boolean>true</System:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"12\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"#FFDC000C\" Margin=\"1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"#ffffff\" Margin=\"1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- NumericUpDown Style -->\r\n    <Style TargetType=\"inputtoolkit:NumericUpDown\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"MinHeight\" Value=\"26\" />\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Background\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource WhiteColor}\"/>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:NumericUpDown\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\" />\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"MouseOver\"/>\r\n                                <VisualState x:Name=\"Pressed\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\"/>\r\n                                <VisualState x:Name=\"Unfocused\" />\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualStateGroup.Transitions>\r\n\r\n                                </VisualStateGroup.Transitions>\r\n\r\n                                <VisualState x:Name=\"Valid\" />\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ValidationErrorElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsOpen\" Storyboard.TargetName=\"validationTooltip\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid>\r\n                            <inputtoolkit:ButtonSpinner HorizontalContentAlignment=\"Stretch\" VerticalContentAlignment=\"Stretch\" MinWidth=\"35\" x:Name=\"Spinner\" BorderBrush=\"{StaticResource GrayBrush4}\" >\r\n                                <TextBox BorderThickness=\"0\" FontFamily=\"{TemplateBinding FontFamily}\" FontSize=\"{TemplateBinding FontSize}\" FontStretch=\"{TemplateBinding FontStretch}\" FontStyle=\"{TemplateBinding FontStyle}\" FontWeight=\"{TemplateBinding FontWeight}\" Foreground=\"{TemplateBinding Foreground}\" MinWidth=\"20\" Height=\"Auto\" x:Name=\"Text\" AcceptsReturn=\"False\" Text=\"{TemplateBinding Value}\" TextAlignment=\"Right\" TextWrapping=\"NoWrap\" Margin=\"0\" VerticalAlignment=\"Center\" BorderBrush=\"{x:Null}\" Style=\"{StaticResource NumericUpDownTextBoxStyle}\" />\r\n                            </inputtoolkit:ButtonSpinner>\r\n                        </Grid>\r\n                        <Border x:Name=\"DisabledVisualElement\" IsHitTestVisible=\"false\" Opacity=\"0\" Background=\"{StaticResource WhiteBrush}\" />\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Visibility=\"Collapsed\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"validationTooltip\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"true\" />\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Background=\"Transparent\" HorizontalAlignment=\"Right\" Height=\"10\" Margin=\"0,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"10\">\r\n                                <Path Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" Fill=\"{StaticResource ValidationBrush5}\" Margin=\"-1,3,0,0\"/>\r\n                                <Path Data=\"M 0,0 L2,0 L 8,6 L8,8\" Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"-1,3,0,0\"/>\r\n                            </Grid>\r\n                        </Border>\r\n\r\n                    </Grid>\r\n\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n\r\n    </Style>\r\n\r\n    <!-- Expander Style-->\r\n    <Style TargetType=\"toolkit:Expander\">\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"MinHeight\" Value=\"50\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"toolkit:Expander\">\r\n                    <Grid>\r\n                        <Grid.Resources>\r\n                            <LinearGradientBrush x:Key=\"ExpanderArrowFill\" EndPoint=\"0,1\" StartPoint=\"0,0\">\r\n                                <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"0\"/>\r\n                                <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"0.5\"/>\r\n                                <GradientStop Color=\"{StaticResource Gray3}\" Offset=\"1\"/>\r\n                            </LinearGradientBrush>\r\n                            <LinearGradientBrush x:Key=\"ExpanderArrowHoverFill\" EndPoint=\"0,1\" StartPoint=\"0,0\">\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0\"/>\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0.3\"/>\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"1\"/>\r\n                            </LinearGradientBrush>\r\n                            <LinearGradientBrush x:Key=\"ExpanderArrowPressedFill\" EndPoint=\"0,1\" StartPoint=\"0,0\">\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0\"/>\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"0.2\"/>\r\n                                <GradientStop Color=\"{StaticResource HighlightDarkColor}\" Offset=\"1\"/>\r\n                            </LinearGradientBrush>\r\n                            <ControlTemplate x:Key=\"ExpanderDownHeaderTemplate\" TargetType=\"ToggleButton\">\r\n                                <Grid Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Data\" Storyboard.TargetName=\"arrow\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"M 1,4.5 L 4.5,1 L 8,4.5\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                        <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                                    </ColorAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard/>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Grid Background=\"Transparent\">\r\n                                            <Grid.ColumnDefinitions>\r\n                                                <ColumnDefinition Width=\"19\"/>\r\n                                                <ColumnDefinition Width=\"*\"/>\r\n                                            </Grid.ColumnDefinitions>\r\n                                            <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                                <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                    <Rectangle.Stroke>\r\n                                                        <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                    </Rectangle.Stroke>\r\n                                                </Rectangle>\r\n                                                <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\"/>\r\n                                            </Grid>\r\n                                            <ContentControl x:Name=\"contentControl\" Grid.Column=\"1\" Margin=\"0,2,0,6\">\r\n                                                <ContentControl.Foreground>\r\n                                                    <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                                </ContentControl.Foreground>\r\n\r\n                                                <ContentPresenter x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\"  HorizontalAlignment=\"Stretch\" Margin=\"4,0,0,0\" VerticalAlignment=\"Center\"/>\r\n                                            </ContentControl>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Path x:Name=\"path\" Grid.ColumnSpan=\"1\" Data=\"M1.5819016,27.355097 L115.98849,27.355097\" Height=\"1\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Bottom\" d:LayoutOverrides=\"HorizontalAlignment\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"ExpanderUpHeaderTemplate\" TargetType=\"ToggleButton\">\r\n                                <Grid Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Data\" Storyboard.TargetName=\"arrow\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"M 1,4.5 L 4.5,1 L 8,4.5\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                        <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                                    </ColorAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Grid Background=\"Transparent\">\r\n                                            <Grid.ColumnDefinitions>\r\n                                                <ColumnDefinition Width=\"19\"/>\r\n                                                <ColumnDefinition Width=\"*\"/>\r\n                                            </Grid.ColumnDefinitions>\r\n                                            <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                                <Grid.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <TransformGroup.Children>\r\n                                                            <TransformCollection>\r\n                                                                <RotateTransform Angle=\"180\" CenterY=\"9.5\" CenterX=\"9.5\"/>\r\n                                                            </TransformCollection>\r\n                                                        </TransformGroup.Children>\r\n                                                    </TransformGroup>\r\n                                                </Grid.RenderTransform>\r\n                                                <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                    <Rectangle.Stroke>\r\n                                                        <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                    </Rectangle.Stroke>\r\n                                                </Rectangle>\r\n                                                <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\"/>\r\n\r\n                                            </Grid>\r\n                                            <ContentControl x:Name=\"contentControl\" Grid.Column=\"1\" Margin=\"0,2,0,6\">\r\n                                                <ContentControl.Foreground>\r\n                                                    <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                                </ContentControl.Foreground>\r\n                                                <ContentPresenter x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Grid.Column=\"1\" HorizontalAlignment=\"Stretch\" Margin=\"4,0,0,0\" VerticalAlignment=\"Center\"/>\r\n                                            </ContentControl>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Path x:Name=\"path\" Grid.ColumnSpan=\"1\" Data=\"M1.5819016,27.355097 L115.98849,27.355097\" Height=\"1\" Stretch=\"Fill\" UseLayoutRounding=\"False\" VerticalAlignment=\"Bottom\" d:LayoutOverrides=\"HorizontalAlignment\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"ExpanderLeftHeaderTemplate\" TargetType=\"ToggleButton\">\r\n                                <Grid Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Data\" Storyboard.TargetName=\"arrow\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"M 1,4.5 L 4.5,1 L 8,4.5\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                        <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                                    </ColorAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Grid Background=\"Transparent\">\r\n                                            <Grid.RowDefinitions>\r\n                                                <RowDefinition Height=\"19\"/>\r\n                                                <RowDefinition Height=\"*\"/>\r\n                                            </Grid.RowDefinitions>\r\n                                            <Grid HorizontalAlignment=\"Right\" VerticalAlignment=\"Top\">\r\n                                                <Grid.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <TransformGroup.Children>\r\n                                                            <TransformCollection>\r\n                                                                <RotateTransform Angle=\"90\" CenterY=\"9.5\" CenterX=\"9.5\"/>\r\n                                                            </TransformCollection>\r\n                                                        </TransformGroup.Children>\r\n                                                    </TransformGroup>\r\n                                                </Grid.RenderTransform>\r\n                                                <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                                    <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                        <Rectangle.Stroke>\r\n                                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                        </Rectangle.Stroke>\r\n                                                    </Rectangle>\r\n                                                    <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\"/>\r\n                                                </Grid>\r\n                                            </Grid>\r\n                                            <ContentControl x:Name=\"contentControl\" Grid.Row=\"1\" Margin=\"10,4,0,0\">\r\n                                                <ContentControl.Foreground>\r\n                                                    <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                                </ContentControl.Foreground>\r\n                                                <ContentPresenter x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Center\" Grid.Row=\"1\" VerticalAlignment=\"Stretch\"/>\r\n                                            </ContentControl>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Path Data=\"M122.37069,0.14655173 L122.37069,49.680588\" HorizontalAlignment=\"Left\" Margin=\"0\" Stretch=\"Fill\" StrokeThickness=\"1\" Grid.Row=\"0\" UseLayoutRounding=\"False\" Width=\"1\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                            <ControlTemplate x:Key=\"ExpanderRightHeaderTemplate\" TargetType=\"ToggleButton\">\r\n                                <Grid Background=\"Transparent\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"CheckStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Checked\">\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Data\" Storyboard.TargetName=\"arrow\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"M 1,4.5 L 4.5,1 L 8,4.5\"/>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenterWrapperColor\" Storyboard.TargetProperty=\"Color\">\r\n                                                        <EasingColorKeyFrame KeyTime=\"0\" Value=\"{StaticResource Gray2}\"/>\r\n                                                    </ColorAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unchecked\"/>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"CommonStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition GeneratedDuration=\"0\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"MouseOver\"/>\r\n                                                <VisualTransition GeneratedDuration=\"00:00:00.1\" To=\"Pressed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Normal\"/>\r\n                                            <VisualState x:Name=\"MouseOver\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"rectangle\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Pressed\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Disabled\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"path\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.5\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                        <VisualStateGroup x:Name=\"FocusStates\">\r\n                                            <VisualState x:Name=\"Focused\">\r\n                                                <Storyboard>\r\n\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Unfocused\"/>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Grid Background=\"Transparent\">\r\n                                            <Grid.RowDefinitions>\r\n                                                <RowDefinition Height=\"19\"/>\r\n                                                <RowDefinition Height=\"*\"/>\r\n                                            </Grid.RowDefinitions>\r\n                                            <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\r\n                                                <Grid.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <TransformGroup.Children>\r\n                                                            <TransformCollection>\r\n                                                                <RotateTransform Angle=\"270\" CenterY=\"9.5\" CenterX=\"9.5\"/>\r\n                                                            </TransformCollection>\r\n                                                        </TransformGroup.Children>\r\n                                                    </TransformGroup>\r\n                                                </Grid.RenderTransform>\r\n                                                <Grid HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"19\" Height=\"19\">\r\n                                                    <Rectangle x:Name=\"rectangle\" Fill=\"White\" Margin=\"2\" Opacity=\"0.5\">\r\n                                                        <Rectangle.Stroke>\r\n                                                            <SolidColorBrush Color=\"{StaticResource Gray2}\"/>\r\n                                                        </Rectangle.Stroke>\r\n                                                    </Rectangle>\r\n                                                    <Path x:Name=\"arrow\" Data=\"F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z \" HorizontalAlignment=\"Right\" Height=\"4\" Margin=\"0,0,6,0\" Stretch=\"Uniform\" Width=\"8\" Fill=\"{StaticResource BlackBrush}\"/>\r\n                                                </Grid>\r\n                                            </Grid>\r\n                                            <ContentControl x:Name=\"contentControl\" Grid.Row=\"1\" Margin=\"0,4,10,0\">\r\n                                                <ContentControl.Foreground>\r\n                                                    <SolidColorBrush x:Name=\"ContentPresenterWrapperColor\" Color=\"{StaticResource BlackColor}\" />\r\n                                                </ContentControl.Foreground>\r\n                                                <ContentPresenter x:Name=\"header\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Center\"  Grid.Row=\"1\" VerticalAlignment=\"Stretch\"/>\r\n                                            </ContentControl>\r\n                                        </Grid>\r\n                                    </Border>\r\n                                    <Path Data=\"M122.37069,0.14655173 L122.37069,49.680588\" HorizontalAlignment=\"Right\" Margin=\"0\" Stretch=\"Fill\" StrokeThickness=\"1\" UseLayoutRounding=\"False\" Width=\"1\">\r\n                                        <Path.Stroke>\r\n                                            <SolidColorBrush Color=\"{StaticResource Gray1}\"/>\r\n                                        </Path.Stroke>\r\n                                    </Path>\r\n                                    <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Stroke=\"{StaticResource HighlightBrush}\" StrokeThickness=\"1\" Visibility=\"Collapsed\"/>\r\n                                </Grid>\r\n                            </ControlTemplate>\r\n                        </Grid.Resources>\r\n                        <Grid.Background>\r\n                            <StaticResource ResourceKey=\"WhiteBrush\"/>\r\n                        </Grid.Background>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"DisabledVisualElement\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"FocusVisualElement\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpansionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"Collapsed\"/>\r\n                                <VisualState x:Name=\"Expanded\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ExpandDirectionStates\">\r\n                                <VisualStateGroup.Transitions>\r\n                                    <VisualTransition GeneratedDuration=\"0\"/>\r\n                                </VisualStateGroup.Transitions>\r\n                                <VisualState x:Name=\"ExpandDown\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandUp\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Template\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ExpanderUpHeaderTemplate}\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandLeft\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Template\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ExpanderLeftHeaderTemplate}\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"ExpandRight\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty=\"Template\" Storyboard.TargetName=\"ExpanderButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{StaticResource ExpanderRightHeaderTemplate}\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Row)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"0\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"(Grid.Column)\" Storyboard.TargetName=\"ExpandSite\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Height\" Storyboard.TargetName=\"rd0\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Width\" Storyboard.TargetName=\"cd1\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"*\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\">\r\n                            <Grid>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition x:Name=\"rd0\" Height=\"Auto\"/>\r\n                                    <RowDefinition x:Name=\"rd1\" Height=\"Auto\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition x:Name=\"cd0\" Width=\"Auto\"/>\r\n                                    <ColumnDefinition x:Name=\"cd1\" Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <ToggleButton x:Name=\"ExpanderButton\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\" Grid.Column=\"0\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsChecked=\"{TemplateBinding IsExpanded}\" Margin=\"1\" MinWidth=\"0\" MinHeight=\"0\" Padding=\"{TemplateBinding Padding}\" Grid.Row=\"0\" Template=\"{StaticResource ExpanderDownHeaderTemplate}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                                <ContentControl x:Name=\"ExpandSite\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Grid.Column=\"0\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"{TemplateBinding FontWeight}\" FontStyle=\"{TemplateBinding FontStyle}\" FontStretch=\"{TemplateBinding FontStretch}\" FontSize=\"{TemplateBinding FontSize}\" FontFamily=\"{TemplateBinding FontFamily}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" Grid.Row=\"1\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"/>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisualElement\" Background=\"{StaticResource TransparentLightLightBrush}\" CornerRadius=\"3\" IsHitTestVisible=\"false\" Opacity=\"0\"/>\r\n                        <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource GrayBrush2}\" BorderThickness=\"1\" CornerRadius=\"3\" IsHitTestVisible=\"false\" Visibility=\"Collapsed\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- DomainUpDown Style -->\r\n    <Style TargetType=\"inputtoolkit:DomainUpDown\">\r\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\r\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\r\n        <Setter Property=\"Background\">\r\n            <Setter.Value>\r\n                <SolidColorBrush Color=\"{StaticResource WhiteColor}\" />\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Padding\" Value=\"0\" />\r\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TextBoxBorderBrush}\" />\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:DomainUpDown\">\r\n                    <Grid x:Name=\"RootElement\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\" />\r\n                                <VisualState x:Name=\"Pressed\" />\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverInnerRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"DisabledBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.7\" />\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Focused\" >\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\">\r\n                                            <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"1\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Unfocused\" />\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"InteractionModeStates\">\r\n                                <VisualState x:Name=\"Edit\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Text\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\"1\" />\r\n                                        <DoubleAnimation Duration=\"0\" Storyboard.TargetName=\"Visualization\" Storyboard.TargetProperty=\"(UIElement.Opacity)\" To=\"0\" />\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Display\" />\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"DomainStates\">\r\n                                <VisualState x:Name=\"ValidDomain\" />\r\n                                <VisualState x:Name=\"InvalidDomain\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetName=\"ErrorVisualElement\" Storyboard.TargetProperty=\"(UIElement.Visibility)\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <Visibility>Visible</Visibility>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\" />\r\n                                <VisualState x:Name=\"InvalidUnfocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"InvalidFocused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ValidationErrorElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsOpen\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                <DiscreteObjectKeyFrame.Value>\r\n                                                    <System:Boolean>True</System:Boolean>\r\n                                                </DiscreteObjectKeyFrame.Value>\r\n                                            </DiscreteObjectKeyFrame>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid MinHeight=\"20\">\r\n\r\n                            <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Opacity=\"1\" Grid.ColumnSpan=\"2\" />\r\n                            <Rectangle x:Name=\"MouseOverRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Stroke=\"{StaticResource TextBoxMouseOverBorderBrush}\" />\r\n                            <Rectangle x:Name=\"MouseOverInnerRectangle\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"0\" Margin=\"1\" Stroke=\"{StaticResource TextBoxMouseOverInnerBorderBrush}\" />\r\n                            <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource TextBoxMouseOverBorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" IsHitTestVisible=\"False\" Opacity=\"0\" Grid.ColumnSpan=\"2\"/>\r\n\r\n                            <inputtoolkit:ButtonSpinner Grid.Column=\"1\" x:Name=\"Spinner\" VerticalAlignment=\"Stretch\" IsTabStop=\"False\" TabIndex=\"3\" VerticalContentAlignment=\"Stretch\" Background=\"{x:Null}\" BorderBrush=\"{x:Null}\" BorderThickness=\"0\">\r\n                                <Grid>\r\n                                    <ContentControl x:Name=\"Visualization\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"0\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" IsHitTestVisible=\"False\" Opacity=\"1\" FontFamily=\"{TemplateBinding FontFamily}\" FontSize=\"{TemplateBinding FontSize}\" FontStretch=\"{TemplateBinding FontStretch}\" Foreground=\"{TemplateBinding Foreground}\" IsTabStop=\"False\" Padding=\"0\" Content=\"{TemplateBinding Value}\" ContentTemplate=\"{TemplateBinding ItemTemplate}\" />\r\n                                    <TextBox x:Name=\"Text\" Margin=\"0\" HorizontalContentAlignment=\"Left\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" IsHitTestVisible=\"False\" BorderThickness=\"0\" FontFamily=\"{TemplateBinding FontFamily}\" FontSize=\"{TemplateBinding FontSize}\" FontStretch=\"{TemplateBinding FontStretch}\" Foreground=\"{TemplateBinding Foreground}\" IsTabStop=\"True\" Padding=\"0\" AcceptsReturn=\"False\" TextWrapping=\"NoWrap\" BorderBrush=\"{StaticResource TextBoxBorderBrush}\">\r\n                                        <TextBox.Background>\r\n                                            <SolidColorBrush Color=\"{StaticResource WhiteColor}\"/>\r\n                                        </TextBox.Background>\r\n                                        <TextBox.Style>\r\n                                            <Style TargetType=\"TextBox\">\r\n                                                <Setter Property=\"Template\">\r\n                                                    <Setter.Value>\r\n                                                        <ControlTemplate TargetType=\"TextBox\">\r\n                                                            <ScrollViewer x:Name=\"ContentElement\" BorderThickness=\"0\" Padding=\"0\" />\r\n                                                        </ControlTemplate>\r\n                                                    </Setter.Value>\r\n                                                </Setter>\r\n                                            </Style>\r\n                                        </TextBox.Style>\r\n                                    </TextBox>\r\n                                </Grid>\r\n                            </inputtoolkit:ButtonSpinner>\r\n                        </Grid>\r\n                        <Border x:Name=\"ValidationErrorElement\" BorderBrush=\"{StaticResource ValidationBrush5}\" BorderThickness=\"1\" IsHitTestVisible=\"false\" Opacity=\"0\" Grid.ColumnSpan=\"2\">\r\n                            <ToolTipService.ToolTip>\r\n                                <ToolTip x:Name=\"validationTooltip\" DataContext=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Template=\"{StaticResource ValidationToolTipTemplate}\" Placement=\"Right\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\">\r\n                                    <ToolTip.Triggers>\r\n                                        <EventTrigger RoutedEvent=\"Canvas.Loaded\">\r\n                                            <BeginStoryboard>\r\n                                                <Storyboard>\r\n                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"validationTooltip\" Storyboard.TargetProperty=\"IsHitTestVisible\">\r\n                                                        <DiscreteObjectKeyFrame KeyTime=\"0\">\r\n                                                            <DiscreteObjectKeyFrame.Value>\r\n                                                                <System:Boolean>true</System:Boolean>\r\n                                                            </DiscreteObjectKeyFrame.Value>\r\n                                                        </DiscreteObjectKeyFrame>\r\n                                                    </ObjectAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </BeginStoryboard>\r\n                                        </EventTrigger>\r\n                                    </ToolTip.Triggers>\r\n                                </ToolTip>\r\n                            </ToolTipService.ToolTip>\r\n                            <Grid Height=\"12\" HorizontalAlignment=\"Right\" Margin=\"1,-4,-4,0\" VerticalAlignment=\"Top\" Width=\"12\" Background=\"Transparent\">\r\n                                <Path Fill=\"{StaticResource ValidationBrush5}\" Margin=\"1,3,0,0\" Data=\"M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z\" />\r\n                                <Path Fill=\"{StaticResource WhiteColorBrush}\" Margin=\"1,3,0,0\" Data=\"M 0,0 L2,0 L 8,6 L8,8\" />\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"ErrorVisualElement\" IsHitTestVisible=\"False\" BorderBrush=\"Red\" BorderThickness=\"2\" Margin=\"-2\" Visibility=\"Collapsed\" Grid.ColumnSpan=\"2\" />\r\n                        <Border x:Name=\"DisabledBorder\" IsHitTestVisible=\"False\" BorderBrush=\"{StaticResource WhiteBrush}\" BorderThickness=\"1\" Background=\"{StaticResource WhiteBrush}\" Opacity=\"0\" Grid.ColumnSpan=\"2\" />\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--DescriptionViewer-->\r\n    <Style TargetType=\"sdk:DescriptionViewer\">\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"GlyphTemplate\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Button\">\r\n                    <Grid Height=\"15\" Width=\"15\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"MouseOver\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Icon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Pressed\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Icon\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Disabled\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Grid x:Name=\"Icon\" HorizontalAlignment=\"Center\" Height=\"13\" Opacity=\"0.6\" VerticalAlignment=\"Center\" Width=\"13\">\r\n                            <Ellipse Fill=\"White\" Stroke=\"DarkGray\">\r\n                            </Ellipse>\r\n                            <StackPanel HorizontalAlignment=\"Center\" Height=\"Auto\" VerticalAlignment=\"Center\" Width=\"3\">\r\n                                <Path Data=\"M0.5,0.60000002 C0.5,0.54477155 0.54477155,0.5 0.60000002,0.5 L2.4000001,0.5 C2.4552286,0.5 2.5,0.54477155 2.5,0.60000002 L2.5,1.6215254 C2.5,1.6767539 2.4552286,1.7215254 2.4000001,1.7215254 L0.60000002,1.7215254 C0.54477155,1.7215254 0.5,1.6767539 0.5,1.6215254 z M0.50000548,3.3151906 C0.50000548,3.2599623 0.54477704,3.2151906 0.60000551,3.2151906 L2.4000056,3.2151906 C2.4552341,3.2151906 2.5000055,3.2599623 2.5000055,3.3151906 L2.5000055,8.4000092 C2.5000055,8.4552374 2.4552341,8.5000095 2.4000056,8.5000095 L0.60000551,8.5000095 C0.54477704,8.5000095 0.50000548,8.4552374 0.50000548,8.4000092 z\" HorizontalAlignment=\"Center\" Height=\"9\" Margin=\"0,0,0,1\" Stretch=\"Fill\" Stroke=\"#00000000\"  Fill=\"DarkGray\" VerticalAlignment=\"Top\" Width=\"3\">\r\n                                </Path>\r\n                            </StackPanel>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"ToolTipStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"ToolTip\">\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n                    <Setter Property=\"Padding\" Value=\"3,0,3,0\"/>\r\n                    <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                    <Setter Property=\"BorderBrush\" Value=\"{StaticResource ItemSelectedBrush}\"/>\r\n                    <Setter Property=\"MaxWidth\" Value=\"250\"/>\r\n                    <Setter Property=\"Margin\" Value=\"5,-3,5,0\"/>\r\n                    <Setter Property=\"ContentTemplate\">\r\n                        <Setter.Value>\r\n                            <DataTemplate>\r\n                                <TextBlock TextWrapping=\"Wrap\" Text=\"{Binding}\"/>\r\n                            </DataTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                    <Setter Property=\"Template\">\r\n                        <Setter.Value>\r\n                            <ControlTemplate TargetType=\"ToolTip\">\r\n                                <Border x:Name=\"Root\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"#FF000000\" Effect=\"{StaticResource DropShadowBrush}\" Opacity=\"0\">\r\n                                    <VisualStateManager.VisualStateGroups>\r\n                                        <VisualStateGroup x:Name=\"OpenStates\">\r\n                                            <VisualStateGroup.Transitions>\r\n                                                <VisualTransition From=\"Open\" GeneratedDuration=\"0:0:0.3\" To=\"Closed\"/>\r\n                                            </VisualStateGroup.Transitions>\r\n                                            <VisualState x:Name=\"Closed\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.4\" Value=\"0\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                            <VisualState x:Name=\"Open\">\r\n                                                <Storyboard>\r\n                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"Root\">\r\n                                                        <EasingDoubleKeyFrame KeyTime=\"0:0:0.3\" Value=\"1\"/>\r\n                                                    </DoubleAnimationUsingKeyFrames>\r\n                                                </Storyboard>\r\n                                            </VisualState>\r\n                                        </VisualStateGroup>\r\n                                    </VisualStateManager.VisualStateGroups>\r\n                                    <Border Padding=\"{TemplateBinding Padding}\">\r\n                                        <Border.Resources>\r\n                                            <Storyboard x:Key=\"Visible State\"/>\r\n                                            <Storyboard x:Key=\"Normal State\"/>\r\n                                        </Border.Resources>\r\n                                        <Border.Background>\r\n                                            <StaticResource ResourceKey=\"BlackBrush\"/>\r\n                                        </Border.Background>\r\n                                        <ContentPresenter Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                                    </Border>\r\n                                </Border>\r\n                            </ControlTemplate>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                    <Setter Property=\"Foreground\" Value=\"{StaticResource WhiteBrush}\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"sdk:DescriptionViewer\">\r\n                    <StackPanel Orientation=\"Horizontal\">\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"DescriptionStates\">\r\n                                <VisualState x:Name=\"NoDescription\"/>\r\n                                <VisualState x:Name=\"HasDescription\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"DescriptionContent\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Height=\"{TemplateBinding Height}\" Padding=\"{TemplateBinding Padding}\" Width=\"{TemplateBinding Width}\">\r\n                            <Button x:Name=\"DescriptionContent\" BorderBrush=\"#FFFFFFFF\" BorderThickness=\"1\" Background=\"#00000000\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" IsTabStop=\"False\" Padding=\"1\" Template=\"{TemplateBinding GlyphTemplate}\" Visibility=\"Collapsed\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">\r\n                                <ToolTipService.ToolTip>\r\n                                    <ToolTip Content=\"{TemplateBinding Description}\" PlacementTarget=\"{Binding RelativeSource={RelativeSource TemplatedParent}}\" Style=\"{TemplateBinding ToolTipStyle}\"/>\r\n                                </ToolTipService.ToolTip>\r\n                            </Button>\r\n                        </Border>\r\n                    </StackPanel>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- DataForm Style-->\r\n    <Style TargetType=\"dataformtoolkit:DataForm\">\r\n        <Setter Property=\"AutoCommit\" Value=\"True\"/>\r\n        <Setter Property=\"AutoGenerateFields\" Value=\"True\"/>\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"0\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"DescriptionViewerPosition\" Value=\"Auto\"/>\r\n        <Setter Property=\"LabelPosition\" Value=\"Auto\"/>\r\n        <Setter Property=\"HeaderVisibility\" Value=\"Visible\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"dataformtoolkit:DataForm\">\r\n                    <Grid dataformtoolkit:DataField.IsFieldGroup=\"True\">\r\n                        <Grid.Resources>\r\n                            <Style x:Key=\"ButtonGeneric\" TargetType=\"Button\">\r\n                                <Setter Property=\"Background\" Value=\"{StaticResource TransparentBlackBrush}\"/>\r\n                                <Setter Property=\"Foreground\" Value=\"{StaticResource BlackColorBrush}\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource WhiteColorBrush}\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n                                <Setter Property=\"Padding\" Value=\"1\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"Button\">\r\n                                            <Grid>\r\n                                                <VisualStateManager.VisualStateGroups>\r\n                                                    <VisualStateGroup x:Name=\"CommonStates\">\r\n                                                        <VisualState x:Name=\"Normal\"/>\r\n                                                        <VisualState x:Name=\"MouseOver\">\r\n                                                            <Storyboard>\r\n                                                                <ColorAnimation Duration=\"0\" To=\"{StaticResource WhiteColor}\" Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Color)\" Storyboard.TargetName=\"OuterBtnBorder\"/>\r\n                                                                <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray10}\" Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Color)\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Pressed\">\r\n                                                            <Storyboard>\r\n                                                                <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray10}\" Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Color)\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                                <ColorAnimation Duration=\"0\" To=\"{StaticResource Gray10}\" Storyboard.TargetProperty=\"(Border.Background).(SolidColorBrush.Color)\" Storyboard.TargetName=\"InnerBtnBorder\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Disabled\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"0.3\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"contentPresenter\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                    </VisualStateGroup>\r\n                                                    <VisualStateGroup x:Name=\"FocusStates\">\r\n                                                        <VisualState x:Name=\"Focused\">\r\n                                                            <Storyboard>\r\n                                                                <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>\r\n                                                            </Storyboard>\r\n                                                        </VisualState>\r\n                                                        <VisualState x:Name=\"Unfocused\"/>\r\n                                                    </VisualStateGroup>\r\n                                                </VisualStateManager.VisualStateGroups>\r\n                                                <Border x:Name=\"OuterBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"3\">\r\n                                                    <Border x:Name=\"InnerBtnBorder\" BorderBrush=\"{StaticResource TransparentWhiteBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{StaticResource TransparentWhiteBrush}\" CornerRadius=\"2\">\r\n                                                        <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"Center\" Height=\"Auto\" VerticalAlignment=\"Center\" Width=\"Auto\"/>\r\n                                                    </Border>\r\n                                                </Border>\r\n                                                <Border x:Name=\"FocusVisualElement\" BorderBrush=\"{StaticResource HighlightBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" CornerRadius=\"2\" Margin=\"1\" Opacity=\"0\"/>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                            <Style x:Key=\"CustomScrollViewerStyle\" TargetType=\"ScrollViewer\">\r\n                                <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\"/>\r\n                                <Setter Property=\"VerticalContentAlignment\" Value=\"Top\"/>\r\n                                <Setter Property=\"BorderThickness\" Value=\"0,1\"/>\r\n                                <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                                <Setter Property=\"Template\">\r\n                                    <Setter.Value>\r\n                                        <ControlTemplate TargetType=\"ScrollViewer\">\r\n                                            <Grid>\r\n                                                <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Margin=\"0,-1\" Opacity=\"0.2\" Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\">\r\n                                                    <Border.OpacityMask>\r\n                                                        <LinearGradientBrush EndPoint=\"1.07,0.5\" StartPoint=\"-0.07,0.5\">\r\n                                                            <GradientStop Color=\"{StaticResource BlackColor}\"/>\r\n                                                            <GradientStop Color=\"{StaticResource BlackColor}\" Offset=\"0.5\"/>\r\n                                                            <GradientStop Color=\"{StaticResource BlackColor}\" Offset=\"1\"/>\r\n                                                        </LinearGradientBrush>\r\n                                                    </Border.OpacityMask>\r\n                                                </Border>\r\n                                                <Grid Background=\"{TemplateBinding Background}\">\r\n                                                    <Grid.RowDefinitions>\r\n                                                        <RowDefinition Height=\"*\"/>\r\n                                                        <RowDefinition Height=\"Auto\"/>\r\n                                                    </Grid.RowDefinitions>\r\n                                                    <Grid.ColumnDefinitions>\r\n                                                        <ColumnDefinition Width=\"*\"/>\r\n                                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                                    </Grid.ColumnDefinitions>\r\n                                                    <ScrollContentPresenter x:Name=\"ScrollContentPresenter\" Cursor=\"{TemplateBinding Cursor}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Margin=\"{TemplateBinding Padding}\"/>\r\n                                                    <Rectangle Grid.Column=\"1\" Fill=\"{StaticResource GrayBrush1}\" Grid.Row=\"1\"/>\r\n                                                    <ScrollBar x:Name=\"VerticalScrollBar\" Grid.Column=\"1\" IsTabStop=\"False\" Maximum=\"{TemplateBinding ScrollableHeight}\" Margin=\"0,-1\" Minimum=\"0\" Orientation=\"Vertical\" Grid.Row=\"0\" Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\" Value=\"{TemplateBinding VerticalOffset}\" ViewportSize=\"{TemplateBinding ViewportHeight}\" Width=\"18\"/>\r\n                                                    <ScrollBar x:Name=\"HorizontalScrollBar\" Grid.Column=\"0\" Height=\"18\" IsTabStop=\"False\" Maximum=\"{TemplateBinding ScrollableWidth}\" Margin=\"-1,0,-1,-1\" Minimum=\"0\" Orientation=\"Horizontal\" Grid.Row=\"1\" Visibility=\"{TemplateBinding ComputedHorizontalScrollBarVisibility}\" Value=\"{TemplateBinding HorizontalOffset}\" ViewportSize=\"{TemplateBinding ViewportWidth}\"/>\r\n                                                </Grid>\r\n                                            </Grid>\r\n                                        </ControlTemplate>\r\n                                    </Setter.Value>\r\n                                </Setter>\r\n                            </Style>\r\n                        </Grid.Resources>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisual\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ModeStates\">\r\n                                <VisualState x:Name=\"ReadOnly\"/>\r\n                                <VisualState x:Name=\"Empty\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsHitTestVisible\" Storyboard.TargetName=\"ContentPresenter\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"False\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ContentPresenter\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                                <VisualState x:Name=\"Edit\">\r\n                                    <Storyboard>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"IsEnabled\" Storyboard.TargetName=\"EditButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"false\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CommitButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                        <ObjectAnimationUsingKeyFrames Duration=\"0\" Storyboard.TargetProperty=\"Visibility\" Storyboard.TargetName=\"CancelButton\">\r\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Visible\"/>\r\n                                        </ObjectAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ValidationStates\">\r\n                                <VisualState x:Name=\"Valid\"/>\r\n                                <VisualState x:Name=\"Invalid\"/>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"CommittedStates\">\r\n                                <VisualState x:Name=\"Committed\"/>\r\n                                <VisualState x:Name=\"Uncommitted\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.9\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"ChangeIndicator\"/>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"ScopeStates\">\r\n                                <VisualState x:Name=\"Entity\"/>\r\n                                <VisualState x:Name=\"Collection\"/>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Border x:Name=\"DataFormBorder\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\">\r\n                            <Grid>\r\n                                <Grid.RowDefinitions>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition/>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                    <RowDefinition Height=\"Auto\"/>\r\n                                </Grid.RowDefinitions>\r\n                                <Grid MinHeight=\"27\" Visibility=\"{TemplateBinding HeaderVisibility}\">\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition/>\r\n                                        <ColumnDefinition Width=\"Auto\"/>\r\n                                        <ColumnDefinition Width=\"8\"/>\r\n                                    </Grid.ColumnDefinitions>\r\n                                    <StackPanel Orientation=\"Horizontal\">\r\n                                        <ContentControl x:Name=\"HeaderElement\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"Bold\" Margin=\"10,0,0,0\" VerticalAlignment=\"Center\"/>\r\n                                        <TextBlock x:Name=\"ChangeIndicator\" Foreground=\"{TemplateBinding Foreground}\" FontWeight=\"Bold\" Margin=\"3,-2,8,2\" Opacity=\"0\" Text=\"*\" VerticalAlignment=\"Center\"/>\r\n                                    </StackPanel>\r\n                                    <StackPanel Grid.Column=\"2\" Margin=\"0,3,0,2\" Orientation=\"Horizontal\">\r\n                                        <Button x:Name=\"FirstItemButton\" Style=\"{StaticResource ButtonGeneric}\">\r\n                                            <Grid Height=\"9\" Margin=\"6,5,5,5\" Opacity=\"1\" Width=\"8\">\r\n                                                <Grid.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.6,1\" StartPoint=\"0.4,0\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Grid.OpacityMask>\r\n                                                <Grid.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" Opacity=\"1\" ShadowDepth=\"0\"/>\r\n                                                </Grid.Effect>\r\n                                                <Path Data=\"M1,0 L1,2 L0,1 Z\" Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Right\" Height=\"9\" Margin=\"0\" Opacity=\"0.85\" Stretch=\"Fill\" Width=\"5\"/>\r\n                                                <Rectangle Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Left\" Opacity=\"0.85\" Width=\"2\"/>\r\n                                            </Grid>\r\n                                        </Button>\r\n                                        <Button x:Name=\"PreviousItemButton\" Style=\"{StaticResource ButtonGeneric}\">\r\n                                            <Path Data=\"M1,0 L1,2 L0,1 Z\" Fill=\"{TemplateBinding Foreground}\" Height=\"9\" Margin=\"6,5,8,5\" Opacity=\"0.85\" Stretch=\"Fill\" Width=\"5\">\r\n                                                <Path.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Path.Effect>\r\n                                                <Path.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.6,1\" StartPoint=\"0.4,0\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Path.OpacityMask>\r\n                                            </Path>\r\n                                        </Button>\r\n                                        <Button x:Name=\"NextItemButton\" Style=\"{StaticResource ButtonGeneric}\">\r\n                                            <Path Data=\"M0,0 L1,1 L0,2 Z\" Fill=\"{TemplateBinding Foreground}\" Height=\"9\" Margin=\"8,5,6,5\" Opacity=\"0.85\" Stretch=\"Fill\" Width=\"5\">\r\n                                                <Path.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Path.Effect>\r\n                                                <Path.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.6,1\" StartPoint=\"0.4,0\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Path.OpacityMask>\r\n                                            </Path>\r\n                                        </Button>\r\n                                        <Button x:Name=\"LastItemButton\" Style=\"{StaticResource ButtonGeneric}\">\r\n                                            <Grid Height=\"9\" Margin=\"6,5,5,5\" Opacity=\"1\" Width=\"8\">\r\n                                                <Grid.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.6,1\" StartPoint=\"0.4,0\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Grid.OpacityMask>\r\n                                                <Grid.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Grid.Effect>\r\n                                                <Path Data=\"M0,0 L1,1 L0,2 Z\" Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Left\" Height=\"9\" Opacity=\"0.85\" Stretch=\"Fill\" Width=\"5\"/>\r\n                                                <Rectangle Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Right\" Opacity=\"0.85\" Width=\"2\"/>\r\n                                            </Grid>\r\n                                        </Button>\r\n                                        <Border x:Name=\"ButtonSeparator\" BorderBrush=\"{StaticResource TransparentLightestBrush}\" BorderThickness=\"1,0,1,0\" Background=\"{TemplateBinding BorderBrush}\" Margin=\"2,4,2,4\" Opacity=\"0.2\" Width=\"3\"/>\r\n                                        <Button x:Name=\"EditButton\" Style=\"{StaticResource ButtonGeneric}\" ToolTipService.ToolTip=\"Edit\">\r\n                                            <Button.OpacityMask>\r\n                                                <LinearGradientBrush EndPoint=\"0.57,0.76\" StartPoint=\"0.42,0.01\">\r\n                                                    <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0\"/>\r\n                                                    <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"0.442\"/>\r\n                                                    <GradientStop Color=\"{StaticResource TransparentLightLightColor}\" Offset=\"1\"/>\r\n                                                </LinearGradientBrush>\r\n                                            </Button.OpacityMask>\r\n                                            <Grid HorizontalAlignment=\"Center\" Height=\"19\" VerticalAlignment=\"Center\" Width=\"19\">\r\n                                                <Canvas HorizontalAlignment=\"Stretch\" Margin=\"2,2,0,0\" VerticalAlignment=\"Stretch\">\r\n                                                    <Path Data=\"F1 M 2.53,9.96L 4.96,11.1L 6.08,13.50L 13.09,6.50L 9.6,3L 2.53,9.96 Z \" Fill=\"{TemplateBinding Foreground}\" Height=\"10.5\" Canvas.Left=\"2.53\" Stretch=\"Fill\" Canvas.Top=\"3.01\" Width=\"10.56\">\r\n                                                        <Path.OpacityMask>\r\n                                                            <LinearGradientBrush EndPoint=\"0.76,0.77\" StartPoint=\"0.21,0.18\">\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0\"/>\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.106\"/>\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.387\"/>\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.703\"/>\r\n                                                                <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"1\"/>\r\n                                                            </LinearGradientBrush>\r\n                                                        </Path.OpacityMask>\r\n                                                    </Path>\r\n                                                    <Path Data=\"M1.41,1.83 L0.71,2.54 L4.20,6.03 L4.91,5.33 z M3.24,0 L6.81,3.42 L3.5,6.74 L0,3.24 z\" Fill=\"{TemplateBinding Foreground}\" Height=\"6.74\" Canvas.Left=\"7.47\" Stretch=\"Fill\" Canvas.Top=\"1.89\" Width=\"6.81\"/>\r\n                                                    <Path Data=\"F1 M 13.77,4.22L 11.73,2.18C 11.12,1.78 10.46,2.15 10,2.5L 3.04,9.45C 2.65,9.86 2.53,10.47 2.53,10.73L 2.53,13.5L 5.32,13.5C 5.57,13.5 6.33,13.36 6.64,12.93L 13.54,6.03C 13.86,5.72 14.17,4.74 13.77,4.22 Z\" Height=\"12.5\" Canvas.Left=\"2.03\" Stretch=\"Fill\" Stroke=\"{TemplateBinding Foreground}\" StrokeLineJoin=\"Round\" Canvas.Top=\"1.50\" Width=\"12.43\"/>\r\n                                                    <Path Data=\"F1 M 2.033,11.71L 4.33,14L 2.62,14C 2.17,13.93 2.09,13.79 2,13.31L 2.03,11.71 Z\" Fill=\"{TemplateBinding Foreground}\" Height=\"2.29\" Canvas.Left=\"2.58\" Stretch=\"Fill\" Canvas.Top=\"11.18\" Width=\"2.33\"/>\r\n                                                </Canvas>\r\n                                            </Grid>\r\n                                        </Button>\r\n                                        <Button x:Name=\"NewItemButton\" Style=\"{StaticResource ButtonGeneric}\" ToolTipService.ToolTip=\"Add\">\r\n                                            <Path Data=\"F1 M18.41,61.67 L19.56,60.52 L21.92,62.88 L24.22,60.57 L25.36,61.72 L23.06,64.03 L25.43,66.4 L24.22,67.60 L21.87,65.25 L19.56,67.56 L18.41,66.41 L20.73,64.08 L18.41,61.67 z\" Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Center\" Height=\"9\" Margin=\"5\" Opacity=\"0.85\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"9\">\r\n                                                <Path.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <ScaleTransform/>\r\n                                                        <SkewTransform/>\r\n                                                        <RotateTransform Angle=\"45\"/>\r\n                                                        <TranslateTransform X=\"0.18\" Y=\"-0.07\"/>\r\n                                                    </TransformGroup>\r\n                                                </Path.RenderTransform>\r\n                                                <Path.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Path.Effect>\r\n                                                <Path.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.35,0.5\" StartPoint=\"-0.27,0.05\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource BlackColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Path.OpacityMask>\r\n                                            </Path>\r\n                                        </Button>\r\n                                        <Button x:Name=\"DeleteItemButton\" Style=\"{StaticResource ButtonGeneric}\" ToolTipService.ToolTip=\"Delete\">\r\n                                            <Path Data=\"F1 M24.32,60.48 L25.60,61.76 L19.65,67.75 L18.37,66.46 z\" Fill=\"{TemplateBinding Foreground}\" HorizontalAlignment=\"Center\" Height=\"9\" Margin=\"5,5,5,5\" Opacity=\"0.85\" RenderTransformOrigin=\"0.5,0.5\" Stretch=\"Fill\" VerticalAlignment=\"Center\" Width=\"9\">\r\n                                                <Path.RenderTransform>\r\n                                                    <TransformGroup>\r\n                                                        <RotateTransform Angle=\"45\"/>\r\n                                                        <TranslateTransform X=\"0.06\" Y=\"-0.01\"/>\r\n                                                    </TransformGroup>\r\n                                                </Path.RenderTransform>\r\n                                                <Path.Effect>\r\n                                                    <DropShadowEffect BlurRadius=\"8\" Color=\"{StaticResource WhiteColor}\" Direction=\"100\" ShadowDepth=\"0\"/>\r\n                                                </Path.Effect>\r\n                                                <Path.OpacityMask>\r\n                                                    <LinearGradientBrush EndPoint=\"0.74,0.66\" StartPoint=\"-0.44,-0.11\">\r\n                                                        <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0\"/>\r\n                                                        <GradientStop Color=\"{StaticResource TransparentDarkDarkColor}\" Offset=\"0.25\"/>\r\n                                                        <GradientStop Color=\"{StaticResource BlackColor}\" Offset=\"1\"/>\r\n                                                    </LinearGradientBrush>\r\n                                                </Path.OpacityMask>\r\n                                            </Path>\r\n                                        </Button>\r\n                                    </StackPanel>\r\n                                </Grid>\r\n                                <ScrollViewer Background=\"{x:Null}\" IsTabStop=\"False\" Padding=\"{TemplateBinding Padding}\" Grid.Row=\"1\" Style=\"{StaticResource CustomScrollViewerStyle}\" VerticalScrollBarVisibility=\"Auto\">\r\n                                    <ContentPresenter x:Name=\"ContentPresenter\" Margin=\"12,12,6,12\"/>\r\n                                </ScrollViewer>\r\n                                <dataInput:ValidationSummary x:Name=\"ValidationSummary\" BorderThickness=\"0\" MaxHeight=\"100\" Grid.Row=\"2\"/>\r\n                                <StackPanel HorizontalAlignment=\"Right\" Orientation=\"Horizontal\" Grid.Row=\"3\">\r\n                                    <Button x:Name=\"CommitButton\" Content=\"OK\" HorizontalContentAlignment=\"Center\" Margin=\"0,5,8,5\" MinWidth=\"71\" MinHeight=\"17\" Visibility=\"Collapsed\" VerticalContentAlignment=\"Center\"/>\r\n                                    <Button x:Name=\"CancelButton\" Content=\"Cancel\" HorizontalContentAlignment=\"Center\" Margin=\"0,5,8,5\" MinWidth=\"71\" MinHeight=\"17\" Visibility=\"Collapsed\" VerticalContentAlignment=\"Center\"/>\r\n                                </StackPanel>\r\n                            </Grid>\r\n                        </Border>\r\n                        <Border x:Name=\"DisabledVisual\" Background=\"{StaticResource TransparentLightLightBrush}\" IsHitTestVisible=\"False\" Opacity=\"0\"/>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!-- ContextMenu Style-->\r\n    <Style TargetType=\"inputtoolkit:ContextMenu\">\r\n        <Setter Property=\"Background\" Value=\"{StaticResource WhiteBrush}\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource ContentFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource LabelFontSize}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"MinWidth\" Value=\"200\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ThumbBrush}\"/>\r\n        <Setter Property=\"Padding\" Value=\"2\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:ContextMenu\">\r\n                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Background=\"{TemplateBinding Background}\" Effect=\"{StaticResource DropShadowBrush}\">\r\n                        <Grid>\r\n                            <Rectangle Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Left\" Margin=\"2\" RadiusY=\"2\" RadiusX=\"2\" Width=\"28\"/>\r\n                            <Rectangle Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Left\" Margin=\"30,2,0,2\" Width=\"1\"/>\r\n                            <Rectangle Fill=\"{StaticResource WhiteColorBrush}\" HorizontalAlignment=\"Left\" Margin=\"31,2,0,2\" Width=\"1\"/>\r\n                            <ItemsPresenter Margin=\"{TemplateBinding Padding}\"/>\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n    <!--MenuItem Style-->\r\n    <Style TargetType=\"inputtoolkit:MenuItem\">\r\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\"/>\r\n        <Setter Property=\"Padding\" Value=\"4,3,2,3\"/>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"inputtoolkit:MenuItem\">\r\n                    <Grid>\r\n                        <VisualStateManager.VisualStateGroups>\r\n                            <VisualStateGroup x:Name=\"CommonStates\">\r\n                                <VisualState x:Name=\"Normal\"/>\r\n                                <VisualState x:Name=\"Disabled\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimation Duration=\"0\" To=\"0.5\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"Presenter\"/>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"contentPresenter\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0\" Value=\"0.3\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                            <VisualStateGroup x:Name=\"FocusStates\">\r\n                                <VisualState x:Name=\"Unfocused\"/>\r\n                                <VisualState x:Name=\"Focused\">\r\n                                    <Storyboard>\r\n                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=\"(UIElement.Opacity)\" Storyboard.TargetName=\"MouseOverRectangle\">\r\n                                            <EasingDoubleKeyFrame KeyTime=\"0:0:0.1\" Value=\"0.695\"/>\r\n                                        </DoubleAnimationUsingKeyFrames>\r\n                                    </Storyboard>\r\n                                </VisualState>\r\n                            </VisualStateGroup>\r\n                        </VisualStateManager.VisualStateGroups>\r\n                        <Rectangle x:Name=\"MouseOverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource ItemSelectedBrush}\"/>\r\n                        <Grid>\r\n                            <Grid.ColumnDefinitions>\r\n                                <ColumnDefinition MinWidth=\"24\" Width=\"Auto\"/>\r\n                                <ColumnDefinition Width=\"4\"/>\r\n                                <ColumnDefinition Width=\"*\"/>\r\n                                <ColumnDefinition Width=\"17\"/>\r\n                            </Grid.ColumnDefinitions>\r\n                            <ContentPresenter x:Name=\"contentPresenter\" Content=\"{TemplateBinding Icon}\" Margin=\"1\" VerticalAlignment=\"Center\"/>\r\n                            <ContentPresenter x:Name=\"Presenter\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" Content=\"{TemplateBinding Header}\" Grid.Column=\"2\" Margin=\"{TemplateBinding Padding}\"/>\r\n                        </Grid>\r\n                    </Grid>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n    </Style>\r\n\r\n    <!-- Chart Style -->\r\n    <Style TargetType=\"Charting:Chart\">\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource LabelTextBrush}\"/>\r\n        <Setter Property=\"FontFamily\" Value=\"{StaticResource ContentFontFamily}\"/>\r\n        <Setter Property=\"FontSize\" Value=\"{StaticResource LabelFontSize}\"/>\r\n        <Setter Property=\"TextOptions.TextHintingMode\" Value=\"Animated\"/>\r\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\"/>\r\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource SliderTrackBrush}\"/>\r\n        <Setter Property=\"BorderThickness\" Value=\"1\"/>\r\n        <Setter Property=\"IsTabStop\" Value=\"False\"/>\r\n        <Setter Property=\"Padding\" Value=\"10\"/>\r\n        <Setter Property=\"Palette\">\r\n            <Setter.Value>\r\n                <charttoolkit:ResourceDictionaryCollection>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush1}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush2}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush3}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush4}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush5}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush6}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush7}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush8}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush9}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush10}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush11}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush12}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush13}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush14}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush15}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n\r\n                    <ResourceDictionary>\r\n                        <SolidColorBrush Color=\"{StaticResource ChartBrush16}\" x:Key=\"Background\" />\r\n                        <Style x:Key=\"DataPointStyle\" TargetType=\"Control\">\r\n                            <Setter Property=\"Background\" Value=\"{StaticResource Background}\"/>\r\n                        </Style>\r\n                    </ResourceDictionary>\r\n                </charttoolkit:ResourceDictionaryCollection>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"TitleStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"charttoolkit:Title\">\r\n                    <Setter Property=\"FontSize\" Value=\"16\"/>\r\n                    <Setter Property=\"HorizontalAlignment\" Value=\"Center\"/>\r\n                    <Setter Property=\"Margin\" Value=\"0,10,0,10\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"LegendStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"charttoolkit:Legend\">\r\n                    <Setter Property=\"Margin\" Value=\"15,0,15,0\"/>\r\n                    <Setter Property=\"VerticalAlignment\" Value=\"Center\"/>\r\n                    <Setter Property=\"BorderBrush\" Value=\"{StaticResource GrayBrush2}\"/>\r\n                    <Setter Property=\"Background\" Value=\"{StaticResource GrayBrush1}\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"ChartAreaStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"Panel\">\r\n                    <Setter Property=\"MinWidth\" Value=\"100\"/>\r\n                    <Setter Property=\"MinHeight\" Value=\"75\"/>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"PlotAreaStyle\">\r\n            <Setter.Value>\r\n                <Style TargetType=\"Grid\">\r\n                    <Setter Property=\"Background\">\r\n                        <Setter.Value>\r\n                            <LinearGradientBrush EndPoint=\"0.457,0.296\" StartPoint=\"0.459,1.296\">\r\n                                <GradientStop Color=\"{StaticResource WhiteColor}\"/>\r\n                                <GradientStop Color=\"{StaticResource WhiteColor}\" Offset=\"1\"/>\r\n                            </LinearGradientBrush>\r\n                        </Setter.Value>\r\n                    </Setter>\r\n                </Style>\r\n            </Setter.Value>\r\n        </Setter>\r\n        <Setter Property=\"Template\">\r\n            <Setter.Value>\r\n                <ControlTemplate TargetType=\"Charting:Chart\">\r\n                    <Border BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" Background=\"{StaticResource NormalBrush}\">\r\n                        <Grid>\r\n                            <Grid.RowDefinitions>\r\n                                <RowDefinition Height=\"Auto\"/>\r\n                                <RowDefinition Height=\"*\"/>\r\n                            </Grid.RowDefinitions>\r\n                            <charttoolkit:Title Content=\"{TemplateBinding Title}\" Style=\"{TemplateBinding TitleStyle}\"/>\r\n                            <Grid Margin=\"0,15,0,15\" Grid.Row=\"1\">\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition Width=\"*\"/>\r\n                                    <ColumnDefinition Width=\"Auto\"/>\r\n                                </Grid.ColumnDefinitions>\r\n                                <charttoolkit:Legend x:Name=\"Legend\" Grid.Column=\"1\" Header=\"{TemplateBinding LegendTitle}\" Style=\"{TemplateBinding LegendStyle}\" Background=\"{StaticResource WhiteBrush}\" BorderBrush=\"{StaticResource SliderTrackBrush}\" Foreground=\"{StaticResource TextBrush}\"/>\r\n                                <Charting_Primitives:EdgePanel x:Name=\"ChartArea\" Style=\"{TemplateBinding ChartAreaStyle}\">\r\n                                    <Grid Style=\"{TemplateBinding PlotAreaStyle}\" Canvas.ZIndex=\"-1\" Background=\"{StaticResource WhiteBrush}\"/>\r\n                                    <Border BorderBrush=\"{StaticResource SliderTrackBrush}\" BorderThickness=\"1\" Canvas.ZIndex=\"10\"/>\r\n                                </Charting_Primitives:EdgePanel>\r\n                            </Grid>\r\n                        </Grid>\r\n                    </Border>\r\n                </ControlTemplate>\r\n            </Setter.Value>\r\n        </Setter>\r\n    </Style>\r\n\r\n\r\n</ResourceDictionary>"
  },
  {
    "path": "typings/qunit.d.ts",
    "content": "// Type definitions for QUnit 1.10\r\n// Project: http://qunitjs.com/\r\n// Definitions by: Diullei Gomes <https://github.com/diullei>\r\n// DefinitelyTyped: https://github.com/borisyankov/DefinitelyTyped\r\n\r\n\r\ninterface DoneCallbackObject {\r\n\t/**\r\n\t* The number of failed assertions\r\n\t*/\r\n\tfailed: number;\r\n\r\n\t/**\r\n\t* The number of passed assertions\r\n\t*/\r\n\tpassed: number;\r\n\r\n\t/**\r\n\t* The total number of assertions\r\n\t*/\r\n\ttotal: number;\r\n\r\n\t/**\r\n\t* The time in milliseconds it took tests to run from start to finish.\r\n\t*/\r\n\truntime: number;\r\n}\r\n\r\ninterface LogCallbackObject {\r\n\t/**\r\n\t* The boolean result of an assertion, true means passed, false means failed.\r\n\t*/\r\n\tresult: boolean;\r\n\r\n\t/**\r\n\t* One side of a comparision assertion. Can be undefined when ok() is used.\r\n\t*/\r\n\tactual: Object;\r\n\r\n\t/**\r\n\t* One side of a comparision assertion. Can be undefined when ok() is used.\r\n\t*/\r\n\texpected: Object;\r\n\r\n\t/**\r\n\t* A string description provided by the assertion.\r\n\t*/\r\n\tmessage: string;\r\n\r\n\t/**\r\n\t* The associated stacktrace, either from an exception or pointing to the source \r\n\t* of the assertion. Depends on browser support for providing stacktraces, so can be \r\n\t* undefined.\r\n\t*/\r\n\tsource: string;\r\n}\r\n\r\ninterface ModuleStartCallbackObject {\r\n\t/**\r\n\t* Name of the next module to run\r\n\t*/\r\n\tname: string;\r\n}\r\n\r\ninterface ModuleDoneCallbackObject {\r\n\t/**\r\n\t* Name of this module\r\n\t*/\r\n\tname: string;\r\n\r\n\t/**\r\n\t* The number of failed assertions\r\n\t*/\r\n\tfailed: number;\r\n\r\n\t/**\r\n\t* The number of passed assertions\r\n\t*/\r\n\tpassed: number;\r\n\r\n\t/**\r\n\t* The total number of assertions\r\n\t*/\r\n\ttotal: number;\r\n}\r\n\r\ninterface TestDoneCallbackObject {\r\n\t/**\r\n\t* TName of the next test to run\r\n\t*/\r\n\tname: string;\r\n\r\n\t/**\r\n\t* Name of the current module\r\n\t*/\r\n\tmodule: string;\r\n\r\n\t/**\r\n\t* The number of failed assertions\r\n\t*/\r\n\tfailed: number;\r\n\r\n\t/**\r\n\t* The number of passed assertions\r\n\t*/\r\n\tpassed: number;\r\n\r\n\t/**\r\n\t* The total number of assertions\r\n\t*/\r\n\ttotal: number;\r\n\r\n\t/**\r\n\t* The total runtime, including setup and teardown\r\n\t*/\r\n\tduration: number;\r\n}\r\n\r\ninterface TestStartCallbackObject {\r\n\t/**\r\n\t* Name of the next test to run\r\n\t*/\r\n\tname: string;\r\n\r\n\t/**\r\n\t* Name of the current module\r\n\t*/\r\n\tmodule: string;\r\n}\r\n\r\ninterface Config {\r\n\taltertitle: boolean;\r\n    autoload: boolean;\r\n\tautostart: boolean;\r\n\tcurrent: Object;\r\n\treorder: boolean;\r\n\trequireExpects: boolean;\r\n\ttestTimeout: number;\r\n\turlConfig: Array<URLConfigItem>;\r\n\tdone: any;\r\n}\r\n\r\ninterface URLConfigItem {\r\n\tid: string;\r\n\tlabel: string;\r\n\ttooltip: string;\r\n}\r\n\r\ninterface LifecycleObject {\r\n\t/**\r\n\t* Runs before each test\r\n\t*/\r\n\tsetup?: () => any;\r\n\r\n\t/**\r\n\t* Runs after each test\r\n\t*/\r\n\tteardown?: () => any;\r\n}\r\n\r\ninterface QUnitAssert {\r\n\t/* ASSERT */\r\n\tassert: any;\r\n\tcurrent_testEnvironment: any;\r\n\tjsDump: any;\r\n\r\n\t/**\r\n\t* A deep recursive comparison assertion, working on primitive types, arrays, objects, \r\n\t* regular expressions, dates and functions.\r\n\t*\r\n\t* The deepEqual() assertion can be used just like equal() when comparing the value of \r\n\t* objects, such that { key: value } is equal to { key: value }. For non-scalar values, \r\n\t* identity will be disregarded by deepEqual.\r\n\t*\r\n\t* @param actual Object or Expression being tested\r\n\t* @param expected Known comparison value\r\n\t* @param message A short description of the assertion\r\n\t*/\r\n\tdeepEqual(actual: any, expected: any, message?: string): any;\r\n\r\n\t/** \r\n\t* A non-strict comparison assertion, roughly equivalent to JUnit assertEquals.\r\n\t*\r\n\t* The equal assertion uses the simple comparison operator (==) to compare the actual \r\n\t* and expected arguments. When they are equal, the assertion passes: any; otherwise, it fails. \r\n\t* When it fails, both actual and expected values are displayed in the test result, \r\n\t* in addition to a given message.\r\n\t* \r\n\t* @param actual Expression being tested\r\n\t* @param expected Known comparison value\r\n\t* @param message A short description of the assertion\r\n\t*/\r\n\tequal(actual: any, expected: any, message?: string): any;\r\n\r\n\t/**\r\n\t* An inverted deep recursive comparison assertion, working on primitive types, \r\n\t* arrays, objects, regular expressions, dates and functions.\r\n\t*\r\n\t* The notDeepEqual() assertion can be used just like equal() when comparing the \r\n\t* value of objects, such that { key: value } is equal to { key: value }. For non-scalar \r\n\t* values, identity will be disregarded by notDeepEqual.\r\n\t* \r\n\t* @param actual Object or Expression being tested\r\n\t* @param expected Known comparison value\r\n\t* @param message A short description of the assertion\r\n\t*/\r\n\tnotDeepEqual(actual: any, expected: any, message?: string): any;\r\n\r\n\t/**\r\n\t* A non-strict comparison assertion, checking for inequality.\r\n\t*\r\n\t* The notEqual assertion uses the simple inverted comparison operator (!=) to compare \r\n\t* the actual and expected arguments. When they aren't equal, the assertion passes: any; \r\n\t* otherwise, it fails. When it fails, both actual and expected values are displayed \r\n\t* in the test result, in addition to a given message.\r\n\t* \r\n\t* @param actual Expression being tested\r\n\t* @param expected Known comparison value\r\n\t* @param message A short description of the assertion\r\n\t*/\r\n\tnotEqual(actual: any, expected: any, message?: string): any;\r\n\r\n\tnotPropEqual(actual: any, expected: any, message?: string): any;\r\n\r\n\tpropEqual(actual: any, expected: any, message?: string): any;\r\n\r\n\t/**\r\n\t* A non-strict comparison assertion, checking for inequality.\r\n\t*\r\n\t* The notStrictEqual assertion uses the strict inverted comparison operator (!==) \r\n\t* to compare the actual and expected arguments. When they aren't equal, the assertion \r\n\t* passes: any; otherwise, it fails. When it fails, both actual and expected values are \r\n\t* displayed in the test result, in addition to a given message.\r\n\t* \r\n\t* @param actual Expression being tested\r\n\t* @param expected Known comparison value\r\n\t* @param message A short description of the assertion\r\n\t*/\r\n\tnotStrictEqual(actual: any, expected: any, message?: string): any;\r\n\r\n\t/**\r\n\t* A boolean assertion, equivalent to CommonJS’s assert.ok() and JUnit’s assertTrue(). \r\n\t* Passes if the first argument is truthy.\r\n\t*\r\n\t* The most basic assertion in QUnit, ok() requires just one argument. If the argument \r\n\t* evaluates to true, the assertion passes; otherwise, it fails. If a second message \r\n\t* argument is provided, it will be displayed in place of the result.\r\n\t* \r\n\t* @param state Expression being tested\r\n\t* @param message A short description of the assertion\r\n\t*/\r\n\tok(state: any, message?: string): any;\r\n\r\n\t/**\r\n\t* A strict type and value comparison assertion.\r\n\t*\r\n\t* The strictEqual() assertion provides the most rigid comparison of type and value with \r\n\t* the strict equality operator (===)\r\n\t* \r\n\t* @param actual Expression being tested\r\n\t* @param expected Known comparison value\r\n\t* @param message A short description of the assertion\r\n\t*/\r\n\tstrictEqual(actual: any, expected: any, message?: string): any;\r\n\r\n\t/**\r\n\t* Assertion to test if a callback throws an exception when run.\r\n\t* \r\n\t* When testing code that is expected to throw an exception based on a specific set of \r\n\t* circumstances, use throws() to catch the error object for testing and comparison.\r\n\t* \r\n\t* @param block Function to execute\r\n\t* @param expected Error Object to compare\r\n\t* @param message A short description of the assertion\r\n\t*/\r\n\tthrows(block: () => any, expected: any, message?: string): any;\r\n\r\n\t/**\r\n\t* @param block Function to execute\r\n\t* @param message A short description of the assertion\r\n\t*/\r\n\tthrows(block: () => any, message?: string): any;\r\n}\r\n\r\ninterface QUnitStatic extends QUnitAssert{\t\r\n    /* ASYNC CONTROL */\r\n\r\n    /**\r\n    * Start running tests again after the testrunner was stopped. See stop().\r\n    *\r\n    * When your async test has multiple exit points, call start() for the corresponding number of stop() increments.\r\n    * \r\n    * @param decrement Optional argument to merge multiple start() calls into one. Use with multiple corrsponding stop() calls.\r\n    */\r\n    start(decrement?: number): any;\r\n\r\n    /**\r\n    * Stop the testrunner to wait for async tests to run. Call start() to continue.\r\n    *\r\n    * When your async test has multiple exit points, call stop() with the increment argument, corresponding to the number of start() calls you need.\r\n    *\r\n    * On Blackberry 5.0, window.stop is a native read-only function. If you deal with that browser, use QUnit.stop() instead, which will work anywhere.\r\n    *\r\n    * @param decrement Optional argument to merge multiple stop() calls into one. Use with multiple corrsponding start() calls.\r\n    */\r\n    stop(increment?: number): any;\r\n\r\n    /* CALLBACKS */\r\n\r\n    /**\r\n    * Register a callback to fire whenever the test suite begins.\r\n    *\r\n    * QUnit.begin() is called once before running any tests. (a better would've been QUnit.start, \r\n    * but thats already in use elsewhere and can't be changed.)\r\n    *\r\n    * @param callback Callback to execute\r\n    */\r\n    begin(callback: () => any): any;\r\n\r\n    /**\r\n    * Register a callback to fire whenever the test suite ends.\r\n    *\r\n    * @param callback Callback to execute.\r\n    */\r\n    done(callback: (details: DoneCallbackObject) => any): any;\r\n\r\n    /**\r\n    * Register a callback to fire whenever an assertion completes.\r\n    *\r\n    * This is one of several callbacks QUnit provides. Its intended for integration scenarios like \r\n    * PhantomJS or Jenkins. The properties of the details argument are listed below as options.\r\n    *\r\n    * @param callback Callback to execute.\r\n    */\r\n    log(callback: (details: LogCallbackObject) => any): any;\r\n\r\n    /**\r\n    * Register a callback to fire whenever a module ends.\r\n    *\r\n    * @param callback Callback to execute.\r\n    */\r\n    moduleDone(callback: (details: ModuleDoneCallbackObject) => any): any;\r\n\r\n    /**\r\n    * Register a callback to fire whenever a module begins.\r\n    *\r\n    * @param callback Callback to execute.\r\n    */\r\n    moduleStart(callback: (details: ModuleStartCallbackObject) => any): any;\r\n\r\n    /**\r\n    * Register a callback to fire whenever a test ends.\r\n    *\r\n    * @param callback Callback to execute.\r\n    */\r\n    testDone(callback: (details: TestDoneCallbackObject) => any): any;\r\n\r\n    /**\r\n    * Register a callback to fire whenever a test begins.\r\n    *\r\n    * @param callback Callback to execute.\r\n    */\r\n    testStart(callback: (details: TestStartCallbackObject) => any): any;\r\n\r\n    /* CONFIGURATION */\r\n\r\n    /**\r\n    * QUnit has a bunch of internal configuration defaults, some of which are \r\n    * useful to override. Check the description for each option for details.\r\n    */\r\n    config: Config;\r\n\r\n    /* TEST */\r\n\r\n    /**\r\n    * Add an asynchronous test to run. The test must include a call to start().\r\n    *\r\n    * For testing asynchronous code, asyncTest will automatically stop the test runner \r\n    * and wait for your code to call start() to continue.\r\n    *\r\n    * @param name Title of unit being tested\r\n    * @param expected Number of assertions in this test\r\n    * @param test Function to close over assertions\r\n    */\r\n    asyncTest(name: string, expected: number, test: () => any): any;\r\n\r\n    /**\r\n    * Add an asynchronous test to run. The test must include a call to start().\r\n    *\r\n    * For testing asynchronous code, asyncTest will automatically stop the test runner \r\n    * and wait for your code to call start() to continue.\r\n    *\r\n    * @param name Title of unit being tested\r\n    * @param test Function to close over assertions\r\n    */\r\n    asyncTest(name: string, test: () => any): any;\r\n\r\n    /**\r\n    * Specify how many assertions are expected to run within a test.\r\n    *\r\n    * To ensure that an explicit number of assertions are run within any test, use \r\n    * expect( number ) to register an expected count. If the number of assertions \r\n    * run does not match the expected count, the test will fail.\r\n    *\r\n    * @param amount Number of assertions in this test.\r\n    */\r\n    expect(amount: number): any;\r\n\r\n    /**\r\n    * Group related tests under a single label.\r\n    *\r\n    * All tests that occur after a call to module() will be grouped into that module. \r\n    * The test names will all be preceded by the module name in the test results. \r\n    * You can then use that module name to select tests to run.\r\n    *\r\n    * @param name Label for this group of tests\r\n    * @param lifecycle Callbacks to run before and after each test\r\n    */\r\n    module(name: string, lifecycle?: LifecycleObject): any;\r\n\r\n    /**\r\n    * Add a test to run.\r\n    *\r\n    * When testing the most common, synchronous code, use test().\r\n    * The assert argument to the callback contains all of QUnit's assertion methods. \r\n    * If you are avoiding using any of QUnit's globals, you can use the assert \r\n    * argument instead.\r\n    * \r\n    * @param title Title of unit being tested\r\n    * @param expected Number of assertions in this test\r\n    * @param test Function to close over assertions\r\n    */\r\n    test(title: string, expected: number, test: (assert: QUnitAssert) => any): any;\r\n\r\n    /**\r\n    * @param title Title of unit being tested\r\n    * @param test Function to close over assertions\r\n    */\r\n    test(title: string, test: (assert: QUnitAssert) => any): any;\r\n\r\n    /**\r\n    * https://github.com/jquery/qunit/blob/master/qunit/qunit.js#L1568\r\n    */\r\n    equiv(a: any, b: any): any;\r\n\r\n    // https://github.com/jquery/qunit/blob/master/qunit/qunit.js#L661\r\n    raises: any;\r\n\r\n    /**\r\n    * https://github.com/jquery/qunit/blob/master/qunit/qunit.js#L897\r\n    */\r\n    push(result: any, actual: any, expected: any, message: string): any;\r\n\r\n    /**\r\n    * https://github.com/jquery/qunit/blob/master/qunit/qunit.js#L839\r\n    */\r\n    reset(): any;\r\n\r\n    load(): void;\r\n}\r\n\r\n/* ASSERT */\r\n\r\n/**\r\n* A deep recursive comparison assertion, working on primitive types, arrays, objects, \r\n* regular expressions, dates and functions.\r\n*\r\n* The deepEqual() assertion can be used just like equal() when comparing the value of \r\n* objects, such that { key: value } is equal to { key: value }. For non-scalar values, \r\n* identity will be disregarded by deepEqual.\r\n*\r\n* @param actual Object or Expression being tested\r\n* @param expected Known comparison value\r\n* @param message A short description of the assertion\r\n*/\r\ndeclare function deepEqual(actual: any, expected: any, message?: string): any;\r\n\r\n/** \r\n* A non-strict comparison assertion, roughly equivalent to JUnit assertEquals.\r\n*\r\n* The equal assertion uses the simple comparison operator (==) to compare the actual \r\n* and expected arguments. When they are equal, the assertion passes: any; otherwise, it fails. \r\n* When it fails, both actual and expected values are displayed in the test result, \r\n* in addition to a given message.\r\n* \r\n* @param actual Expression being tested\r\n* @param expected Known comparison value\r\n* @param message A short description of the assertion\r\n*/\r\ndeclare function equal(actual: any, expected: any, message?: string): any;\r\n\r\n/**\r\n* An inverted deep recursive comparison assertion, working on primitive types, \r\n* arrays, objects, regular expressions, dates and functions.\r\n*\r\n* The notDeepEqual() assertion can be used just like equal() when comparing the \r\n* value of objects, such that { key: value } is equal to { key: value }. For non-scalar \r\n* values, identity will be disregarded by notDeepEqual.\r\n* \r\n* @param actual Object or Expression being tested\r\n* @param expected Known comparison value\r\n* @param message A short description of the assertion\r\n*/\r\ndeclare function notDeepEqual(actual: any, expected: any, message?: string): any;\r\n\r\n/**\r\n* A non-strict comparison assertion, checking for inequality.\r\n*\r\n* The notEqual assertion uses the simple inverted comparison operator (!=) to compare \r\n* the actual and expected arguments. When they aren't equal, the assertion passes; \r\n* otherwise, it fails. When it fails, both actual and expected values are displayed \r\n* in the test result, in addition to a given message.\r\n* \r\n* @param actual Expression being tested\r\n* @param expected Known comparison value\r\n* @param message A short description of the assertion\r\n*/\r\ndeclare function notEqual(actual: any, expected: any, message?: string): any;\r\n\r\n/**\r\n* A non-strict comparison assertion, checking for inequality.\r\n*\r\n* The notStrictEqual assertion uses the strict inverted comparison operator (!==) \r\n* to compare the actual and expected arguments. When they aren't equal, the assertion \r\n* passes; otherwise, it fails. When it fails, both actual and expected values are \r\n* displayed in the test result, in addition to a given message.\r\n* \r\n* @param actual Expression being tested\r\n* @param expected Known comparison value\r\n* @param message A short description of the assertion\r\n*/\r\ndeclare function notStrictEqual(actual: any, expected: any, message?: string): any;\r\n\r\n/**\r\n* A boolean assertion, equivalent to CommonJS’s assert.ok() and JUnit’s assertTrue(). \r\n* Passes if the first argument is truthy.\r\n*\r\n* The most basic assertion in QUnit, ok() requires just one argument. If the argument \r\n* evaluates to true, the assertion passes; otherwise, it fails. If a second message \r\n* argument is provided, it will be displayed in place of the result.\r\n* \r\n* @param state Expression being tested\r\n* @param message A short description of the assertion\r\n*/\r\ndeclare function ok(state: any, message?: string): any;\r\n\r\n/**\r\n* A strict type and value comparison assertion.\r\n*\r\n* The strictEqual() assertion provides the most rigid comparison of type and value with \r\n* the strict equality operator (===)\r\n* \r\n* @param actual Expression being tested\r\n* @param expected Known comparison value\r\n* @param message A short description of the assertion\r\n*/\r\ndeclare function strictEqual(actual: any, expected: any, message?: string): any;\r\n\r\n/**\r\n* Assertion to test if a callback throws an exception when run.\r\n* \r\n* When testing code that is expected to throw an exception based on a specific set of \r\n* circumstances, use throws() to catch the error object for testing and comparison.\r\n* \r\n* @param block Function to execute\r\n* @param expected Error Object to compare\r\n* @param message A short description of the assertion\r\n*/\r\ndeclare function throws(block: () => any, expected: any, message?: string): any;\r\n\r\n/**\r\n* @param block Function to execute\r\n* @param message A short description of the assertion\r\n*/\r\ndeclare function throws(block: () => any, message?: string): any;\r\n\r\n/* ASYNC CONTROL */\r\n\r\n/**\r\n* Start running tests again after the testrunner was stopped. See stop().\r\n*\r\n* When your async test has multiple exit points, call start() for the corresponding number of stop() increments.\r\n* \r\n* @param decrement Optional argument to merge multiple start() calls into one. Use with multiple corrsponding stop() calls.\r\n*/\r\ndeclare function start(decrement?: number): any;\r\n\r\n/**\r\n* Stop the testrunner to wait for async tests to run. Call start() to continue.\r\n*\r\n* When your async test has multiple exit points, call stop() with the increment argument, corresponding to the number of start() calls you need.\r\n*\r\n* On Blackberry 5.0, window.stop is a native read-only function. If you deal with that browser, use QUnit.stop() instead, which will work anywhere.\r\n*\r\n* @param decrement Optional argument to merge multiple stop() calls into one. Use with multiple corrsponding start() calls.\r\n*/\r\ndeclare function stop(increment? : number): any;\r\n\t\r\n/* CALLBACKS */\r\n\r\n/**\r\n* Register a callback to fire whenever the test suite begins.\r\n*\r\n* QUnit.begin() is called once before running any tests. (a better would've been QUnit.start, \r\n* but thats already in use elsewhere and can't be changed.)\r\n*\r\n* @param callback Callback to execute\r\n*/\r\ndeclare function begin(callback: () => any): any;\r\n\r\n/**\r\n* Register a callback to fire whenever the test suite ends.\r\n*\r\n* @param callback Callback to execute.\r\n*/\r\ndeclare function done(callback: (details: DoneCallbackObject) => any): any;\r\n\r\n/**\r\n* Register a callback to fire whenever an assertion completes.\r\n*\r\n* This is one of several callbacks QUnit provides. Its intended for integration scenarios like \r\n* PhantomJS or Jenkins. The properties of the details argument are listed below as options.\r\n*\r\n* @param callback Callback to execute.\r\n*/\r\ndeclare function log(callback: (details: LogCallbackObject) => any): any;\r\n\r\n/**\r\n* Register a callback to fire whenever a module ends.\r\n*\r\n* @param callback Callback to execute.\r\n*/\r\ndeclare function moduleDone(callback: (details: ModuleDoneCallbackObject) => any): any;\r\n\r\n/**\r\n* Register a callback to fire whenever a module begins.\r\n*\r\n* @param callback Callback to execute.\r\n*/\r\ndeclare function moduleStart(callback: (name: string) => any): any;\r\n\r\n/**\r\n* Register a callback to fire whenever a test ends.\r\n*\r\n* @param callback Callback to execute.\r\n*/\r\ndeclare function testDone(callback: (details: TestDoneCallbackObject) => any): any;\r\n\r\n/**\r\n* Register a callback to fire whenever a test begins.\r\n*\r\n* @param callback Callback to execute.\r\n*/\r\ndeclare function testStart(callback: (details: TestStartCallbackObject) => any): any;\r\n\t\r\n/* TEST */\r\n\r\n/**\r\n* Add an asynchronous test to run. The test must include a call to start().\r\n*\r\n* For testing asynchronous code, asyncTest will automatically stop the test runner \r\n* and wait for your code to call start() to continue.\r\n*\r\n* @param name Title of unit being tested\r\n* @param expected Number of assertions in this test\r\n* @param test Function to close over assertions\r\n*/\r\ndeclare function asyncTest(name: string, expected?: any, test?: () => any): any;\r\n\r\n/**\r\n* Add an asynchronous test to run. The test must include a call to start().\r\n*\r\n* For testing asynchronous code, asyncTest will automatically stop the test runner \r\n* and wait for your code to call start() to continue.\r\n*\r\n* @param name Title of unit being tested\r\n* @param test Function to close over assertions\r\n*/\r\ndeclare function asyncTest(name: string, test: () => any): any;\r\n\r\n/**\r\n* Specify how many assertions are expected to run within a test.\r\n*\r\n* To ensure that an explicit number of assertions are run within any test, use \r\n* expect( number ) to register an expected count. If the number of assertions \r\n* run does not match the expected count, the test will fail.\r\n*\r\n* @param amount Number of assertions in this test.\r\n*/\r\ndeclare function expect(amount: number): any;\r\n\r\n// ** conflict with TypeScript module keyword. Must be used on QUnit namespace\r\n//declare var module: (name: string, lifecycle?: LifecycleObject) => any;\r\n\r\n/**\r\n* Add a test to run.\r\n*\r\n* When testing the most common, synchronous code, use test().\r\n* The assert argument to the callback contains all of QUnit's assertion methods. \r\n* If you are avoiding using any of QUnit's globals, you can use the assert \r\n* argument instead.\r\n* \r\n* @param title Title of unit being tested\r\n* @param expected Number of assertions in this test\r\n* @param test Function to close over assertions\r\n*/\r\ndeclare function test(title: string, expected: number, test: (assert?: QUnitAssert) => any): any;\r\n\r\n/**\r\n* @param title Title of unit being tested\r\n* @param test Function to close over assertions\r\n*/\r\ndeclare function test(title: string, test: (assert?: QUnitAssert) => any): any;\r\n\r\ndeclare function notPropEqual(actual: any, expected: any, message?: string): any;\r\n\r\ndeclare function propEqual(actual: any, expected: any, message?: string): any;\r\n\r\n// https://github.com/jquery/qunit/blob/master/qunit/qunit.js#L1568\r\ndeclare function equiv(a: any, b: any): any;\r\n\r\n// https://github.com/jquery/qunit/blob/master/qunit/qunit.js#L661\r\ndeclare var raises: any;\r\n\r\n/* QUNIT */\r\ndeclare var QUnit: QUnitStatic;"
  },
  {
    "path": "typings/require.d.ts",
    "content": "/*\r\nrequire-2.1.8.d.ts may be freely distributed under the MIT license.\r\n\r\nCopyright (c) 2013 Josh Baldwin https://github.com/jbaldwin/require.d.ts\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n*/\r\n\r\ninterface RequireError extends Error {\r\n\r\n\t/**\r\n\t* The error ID that maps to an ID on a web page.\r\n\t**/\r\n\trequireType: string;\r\n\r\n\t/**\r\n\t* Required modules.\r\n\t**/\r\n\trequireModules: string[];\r\n\r\n\t/**\r\n\t* The original error, if there is one (might be null).\r\n\t**/\r\n\toriginalError: Error;\r\n}\r\n\r\ninterface RequireShim {\r\n\r\n\t/**\r\n\t* List of dependencies.\r\n\t**/\r\n\tdeps?: string[];\r\n\r\n\t/**\r\n\t* Name the module will be exported as.\r\n\t**/\r\n\texports?: string;\r\n\r\n\t/**\r\n\t* Initialize function with all dependcies passed in,\r\n\t* if the function returns a value then that value is used\r\n\t* as the module export value instead of the object\r\n\t* found via the 'exports' string.\r\n\t* @param dependencies\r\n\t* @return\r\n\t**/\r\n\tinit?: (...dependencies: any[]) => any;\r\n}\r\n\r\ninterface RequireConfig {\r\n\r\n\t// The root path to use for all module lookups.\r\n\tbaseUrl?: string;\r\n\r\n\t// Path mappings for module names not found directly under\r\n\t// baseUrl.\r\n\tpaths?: { [key: string]: any; };\r\n\r\n\t// Dictionary of Shim's.\r\n\t// does not cover case of key->string[]\r\n\tshim?: { [key: string]: RequireShim; };\r\n\r\n\t/**\r\n\t* For the given module prefix, instead of loading the\r\n\t* module with the given ID, substitude a different\r\n\t* module ID.\r\n\t*\r\n\t* @example\r\n\t* requirejs.config({\r\n\t*\tmap: {\r\n\t*\t\t'some/newmodule': {\r\n\t*\t\t\t'foo': 'foo1.2'\r\n\t*\t\t},\r\n\t*\t\t'some/oldmodule': {\r\n\t*\t\t\t'foo': 'foo1.0'\r\n\t*\t\t}\r\n\t*\t}\r\n\t* });\r\n\t**/\r\n\tmap?: {\r\n\t\t[id: string]: {\r\n\t\t\t[id: string]: string;\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t* AMD configurations, use module.config() to access in\r\n\t* define() functions\r\n\t**/\r\n\tconfig?: { [id: string]: {}; };\r\n\r\n\t/**\r\n\t* Configures loading modules from CommonJS packages.\r\n\t**/\r\n\tpackages?: {};\r\n\r\n\t/**\r\n\t* The number of seconds to wait before giving up on loading\r\n\t* a script.  The default is 7 seconds.\r\n\t**/\r\n\twaitSeconds?: number;\r\n\r\n\t/**\r\n\t* A name to give to a loading context.  This allows require.js\r\n\t* to load multiple versions of modules in a page, as long as\r\n\t* each top-level require call specifies a unique context string.\r\n\t**/\r\n\tcontext?: string;\r\n\r\n\t/**\r\n\t* An array of dependencies to load.\r\n\t**/\r\n\tdeps?: string[];\r\n\r\n\t/**\r\n\t* A function to pass to require that should be require after\r\n\t* deps have been loaded.\r\n\t* @param modules\r\n\t**/\r\n\tcallback?: (...modules: any[]) => void;\r\n\r\n\t/**\r\n\t* If set to true, an error will be thrown if a script loads\r\n\t* that does not call define() or have shim exports string\r\n\t* value that can be checked.\r\n\t**/\r\n\tenforceDefine?: boolean;\r\n\r\n\t/**\r\n\t* If set to true, document.createElementNS() will be used\r\n\t* to create script elements.\r\n\t**/\r\n\txhtml?: boolean;\r\n\r\n\t/**\r\n\t* Extra query string arguments appended to URLs that RequireJS\r\n\t* uses to fetch resources.  Most useful to cachce bust when\r\n\t* the browser or server is not configured correcty.\r\n\t*\r\n\t* @example\r\n\t* urlArgs: \"bust= + (new Date()).getTime()\r\n\t**/\r\n\turlArgs?: string;\r\n\r\n\t/**\r\n\t* Specify the value for the type=\"\" attribute used for script\r\n\t* tags inserted into the document by RequireJS.  Default is\r\n\t* \"text/javascript\".  To use Firefox's JavasScript 1.8\r\n\t* features, use \"text/javascript;version=1.8\".\r\n\t**/\r\n\tscriptType?: string;\r\n\r\n}\r\n\r\n// todo: not sure what to do with this guy\r\ninterface RequireModule {\r\n\r\n\t/**\r\n\t*\r\n\t**/\r\n\tconfig(): {};\r\n\r\n}\r\n\r\n/**\r\n*\r\n**/\r\ninterface RequireMap {\r\n\r\n\t/**\r\n\t*\r\n\t**/\r\n\tprefix: string;\r\n\r\n\t/**\r\n\t*\r\n\t**/\r\n\tname: string;\r\n\r\n\t/**\r\n\t*\r\n\t**/\r\n\tparentMap: RequireMap;\r\n\r\n\t/**\r\n\t*\r\n\t**/\r\n\turl: string;\r\n\r\n\t/**\r\n\t*\r\n\t**/\r\n\toriginalName: string;\r\n\r\n\t/**\r\n\t*\r\n\t**/\r\n\tfullName: string;\r\n}\r\n\r\ninterface Require {\r\n\r\n\t/**\r\n\t* Configure require.js\r\n\t**/\r\n\tconfig(config: RequireConfig): Require;\r\n\r\n\t/**\r\n\t* CommonJS require call\r\n\t* @param module Module to load\r\n\t* @return The loaded module\r\n\t*/\r\n\t(module: string): any;\r\n\r\n\t/**\r\n\t* Start the main app logic.\r\n\t* Callback is optional.\r\n\t* Can alternatively use deps and callback.\r\n\t* @param modules Required modules to load.\r\n\t**/\r\n\t(modules: string[]): void;\r\n\r\n\t/**\r\n\t* @see Require()\r\n\t* @param ready Called when required modules are ready.\r\n\t**/\r\n\t(modules: string[], ready: Function): void;\r\n\r\n\t/**\r\n\t* Generate URLs from require module\r\n\t* @param module Module to URL\r\n\t* @return URL string\r\n\t**/\r\n\ttoUrl(module: string): string;\r\n\r\n\t/**\r\n\t* On Error override\r\n\t* @param err\r\n\t**/\r\n\tonError(err: RequireError, errback?: (err: RequireError) => void): void;\r\n\r\n\t/**\r\n\t* Undefine a module\r\n\t* @param module Module to undefine.\r\n\t**/\r\n\tundef(module: string): void;\r\n\r\n\t/**\r\n\t* Semi-private function, overload in special instance of undef()\r\n\t**/\r\n\tonResourceLoad(context: Object, map: RequireMap, depArray: RequireMap[]): void;\r\n}\r\n\r\ninterface RequireDefine {\r\n\r\n\t/**\r\n\t* Define Simple Name/Value Pairs\r\n\t* @param config Dictionary of Named/Value pairs for the config.\r\n\t**/\r\n\t(config: { [key: string]: any; }): void;\r\n\r\n\t/**\r\n\t* Define function.\r\n\t* @param func: The function module.\r\n\t**/\r\n\t(func: () => any): void;\r\n\r\n\t/**\r\n\t* Define function with dependencies.\r\n\t* @param deps List of dependencies module IDs.\r\n\t* @param ready Callback function when the dependencies are loaded.\r\n\t*\tcallback param deps module dependencies\r\n\t*\tcallback return module definition\r\n\t**/\r\n    \t(deps: string[], ready: Function): void;\r\n\r\n\t/**\r\n\t*  Define module with simplified CommonJS wrapper.\r\n\t* @param ready\r\n\t*\tcallback require requirejs instance\r\n\t*\tcallback exports exports object\r\n\t*\tcallback module module\r\n\t*\tcallback return module definition\r\n\t**/\r\n\t(ready: (require: Require, exports: { [key: string]: any; }, module: RequireModule) => any): void;\r\n\r\n\t/**\r\n\t* Define a module with a name and dependencies.\r\n\t* @param name The name of the module.\r\n\t* @param deps List of dependencies module IDs.\r\n\t* @param ready Callback function when the dependencies are loaded.\r\n\t*\tcallback deps module dependencies\r\n\t*\tcallback return module definition\r\n\t**/\r\n\t(name: string, deps: string[], ready: Function): void;\r\n}\r\n\r\n// Ambient declarations for 'require' and 'define'\r\ndeclare var requirejs: Require;\r\ndeclare var require: Require;\r\ndeclare var define: RequireDefine;\r\n"
  },
  {
    "path": "unify.json",
    "content": "{\n  \"name\": \"fayde\",\n  \"client\": {\n    \"tests\": [\n      {\n        \"file\": \"test/fayde.json\",\n        \"lib\": \"test/lib\"\n      },\n      {\n        \"file\": \"testsite/fayde.json\",\n        \"lib\": \"testsite/lib\"\n      }\n    ],\n    \"exclude\": [\n      \"self\",\n      \"deps\"\n    ]\n  },\n  \"type\": \"lib\",\n  \"dist\": \"dist/fayde.js\",\n  \"library\": {\n    \"type\": \"export\",\n    \"exports\": \"Fayde\"\n  },\n  \"typings\": [\n    \"dist/fayde.d.ts\"\n  ]\n}"
  }
]